pax_global_header00006660000000000000000000000064152740725260014524gustar00rootroot0000000000000052 comment=97a81b13d1de80eaef35d20c499c703d58de281a view/000077500000000000000000000000001527407252600120425ustar00rootroot00000000000000view/.gitignore000066400000000000000000000001171527407252600140310ustar00rootroot00000000000000view cfl2png viewer.inc tags *.swp Makefile.local compile_commands.json .cache view/.gitlab-ci.yml000066400000000000000000000013761527407252600145050ustar00rootroot00000000000000variables: OMP_NUM_THREADS: "1" image: debian:trixie before_script: - apt-get update -yqq - apt-get install -y make git gcc libgtk-3-dev libbart-dev libblas3-dev libfftw3-dev stages: - build - test Build: stage: build script: - CFLAGS="-Werror" make all artifacts: paths: - view - cfl2png Build_Analyzer: stage: build script: - CFLAGS="-fanalyzer -Werror" DEBUG=0 make all artifacts: paths: - view - cfl2png expire_in: 45 minutes allow_failure: true Test_cfl2png: stage: test script: - apt-get install -y bart - bart phantom pha.ra - ./view -h - ./cfl2png -x1 -u0.5 -CV pha.ra pha.png artifacts: paths: - pha.png needs: [Build] dependencies: - Build view/LICENSE000066400000000000000000000031251527407252600130500ustar00rootroot00000000000000Copyright (c) 2015-2023. Martin Uecker. Copyright (c) 2017-2023. AG Uecker. University Medical Center Göttingen. Copyright (c) 2021-2026. Graz University of Technology. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. view/Makefile000066400000000000000000000037521527407252600135110ustar00rootroot00000000000000 -include Makefile.local CUDA?=0 CUDA_BASE ?= /usr/local/cuda CUDA_LIB ?= lib DEBUG?=0 OMP?=1 PKG_CONFIG?=pkg-config BUILDTYPE = Linux UNAME = $(shell uname -s) ifeq ($(UNAME),Darwin) BUILDTYPE = MacOSX endif ifeq ($(BART_TOOLBOX_PATH),) TOOLBOX_INC=/usr/include/bart/ TOOLBOX_LIB=/usr/lib/bart/ else TOOLBOX_INC=$(BART_TOOLBOX_PATH)/src/ TOOLBOX_LIB=$(BART_TOOLBOX_PATH)/lib/ endif ifeq ($(origin CC), default) CC = gcc endif CFLAGS ?= -Wall -Wextra ifeq ($(DEBUG),1) CFLAGS += -Og -g else CFLAGS += -O2 endif ifeq ($(BUILDTYPE), MacOSX) CFLAGS += -std=gnu11 -Xpreprocessor else CFLAGS += -std=gnu11 endif ifeq ($(OMP),1) CFLAGS += -fopenmp else CFLAGS += -Wno-unknown-pragmas endif # clang ifeq ($(findstring clang, $(CC)), clang) CFLAGS += -fblocks LDFLAGS += -lBlocksRuntime endif ifeq ($(CUDA),1) CUDA_L := -L$(CUDA_BASE)/$(CUDA_LIB) -lcufft -lcudart -lcublas -lblas else CUDA_L := endif EXPDYN = -rdynamic ifeq ($(BUILDTYPE), MacOSX) LDFLAGS += -L/opt/local/lib -lm -lpng -lomp -lrt else LDFLAGS += -lm -lpng -lrt -lblas -lfftw3f -lfftw3f_threads endif all: view cfl2png src/viewer.inc: src/viewer.ui @echo "STRINGIFY(`cat src/viewer.ui`)" > src/viewer.inc view: src/main.c src/view.[ch] src/draw.[ch] src/gtk_ui.[ch] src/viewer.inc $(CC) $(CFLAGS) $(CPPFLAGS) $(EXPDYN) -o view -I$(TOOLBOX_INC) `$(PKG_CONFIG) --cflags gtk+-3.0` src/main.c src/view.c src/gtk_ui.c src/draw.c `$(PKG_CONFIG) --libs gtk+-3.0` $(TOOLBOX_LIB)/libmisc.a $(TOOLBOX_LIB)/libgeom.a $(TOOLBOX_LIB)/libnum.a $(TOOLBOX_LIB)/libmisc.a $(CUDA_L) $(LDFLAGS) cfl2png: src/cfl2png.c src/view.[ch] src/draw.[ch] src/viewer.inc $(CC) $(CFLAGS) $(CPPFLAGS) $(EXPDYN) -o cfl2png -I$(TOOLBOX_INC) src/cfl2png.c src/draw.c $(TOOLBOX_LIB)/libmisc.a $(TOOLBOX_LIB)/libgeom.a $(TOOLBOX_LIB)/libnum.a $(TOOLBOX_LIB)/libmisc.a $(CUDA_L) $(LDFLAGS) install: install -D view $(DESTDIR)/usr/lib/bart/commands/view install cfl2png $(DESTDIR)/usr/lib/bart/commands/ clean: rm -f view cfl2png src/viewer.inc view/README.md000066400000000000000000000016101527407252600133170ustar00rootroot00000000000000 Small image viewer for multi-dimensional files. Compiles on Linux and Mac OS X. It needs some libraries from the Berkeley Advanced Reconstruction Toolbox (BART). https://mrirecon.github.io/bart/ ![viewer](viewer.png) Installation: Requires BART 0.8.00 or later. Mac OS X: sudo port install pkgconfig sudo port install gtk3 sudo port install adwaita-icon-theme sudo port install libomp Linux: sudo apt-get install libgtk-3-dev Compile with make after setting the BART_TOOLBOX_PATH environment variable to the directory where BART is installed. ### Usage `view ...` ### Troubleshooting If an error is raised along the lines of `Gtk-WARNING **: cannot open display`, ensure X11 is installed and running. On later versions of OS X, you may need ![XQuartz](https://www.xquartz.org/) for View to run. Set the environment variable `DISPLAY=":0"`, run XQuartz, and then retry `view`. view/genctags000077500000000000000000000001251527407252600135610ustar00rootroot00000000000000#!/bin/bash ctags --langmap=c++:+.cu --extra=+f `find . -regex '.*\.[ch]u*' -print` view/src/000077500000000000000000000000001527407252600126315ustar00rootroot00000000000000view/src/cfl2png.c000066400000000000000000000204231527407252600143310ustar00rootroot00000000000000/* Copyright 2017-2023. AG Uecker. University Medical Center Göttingen. * All rights reserved. Use of this source code is governed by * a BSD-style license which can be found in the LICENSE file. */ #include #include #include #include #include #include "num/multind.h" #include "num/init.h" #include "misc/misc.h" #include "misc/debug.h" #include "misc/mmio.h" #include "misc/opts.h" #include "misc/png.h" #if 0 #include "misc/io.h" #else extern void io_reserve_input(const char* name); extern void io_unregister(const char* name); #endif #include "draw.h" #ifndef CFL_SIZE #define CFL_SIZE sizeof(complex float) #endif #ifndef DIMS #define DIMS 16 #endif enum cmode_t { CM_MAGN, CM_MAGN_VIRIDIS, CM_CMPL, CM_CMPL_MYGBM, CM_PHSE, CM_PHSE_MYGBM, CM_REAL, CM_MAGN_TURBO, CM_FLOW, CM_LIPARI_T1, CM_NAVIA_T2, }; struct { enum mode_t mode; enum color_t ctab; } cm_table[] = { [CM_MAGN] = { MAGN, NONE }, [CM_MAGN_VIRIDIS] = { MAGN, VIRIDIS }, [CM_MAGN_TURBO] = { MAGN, TURBO }, [CM_LIPARI_T1] = { MAGN, LIPARI }, [CM_NAVIA_T2] = { MAGN, NAVIA }, [CM_CMPL] = { CMPLX, NONE }, [CM_CMPL_MYGBM] = { CMPLX, MYGBM }, [CM_REAL] = { REAL, NONE }, [CM_FLOW] = { FLOW, NONE }, [CM_PHSE] = { PHASE, NONE }, [CM_PHSE_MYGBM] = { PHASE, MYGBM }, }; static void export_images(const char* output_prefix, int xdim, int ydim, float windowing[2], bool absolute_windowing, float zoom, enum mode_t mode, enum color_t ctab, enum flip_t flip, enum interp_t interpolation, const long dims[DIMS], unsigned long loopflags, long pos[DIMS], const complex float* idata); static const char help_str[] = "Export images to png."; int main(int argc, char* argv[argc]) { const char* in_file; const char* out_prefix; struct arg_s args[] = { ARG_INFILE(true, &in_file, "input"), ARG_STRING(true, &out_prefix, "output_prefix"), }; int xdim = 0; int ydim = 0; float windowing[2] = { 0.f, 1.f }; bool absolute_windowing = false; float zoom =2.f; enum flip_t flip = OO; enum interp_t interpolation = NLINEAR; unsigned long sliceflags = 0; long pos[DIMS] = { [0 ... DIMS - 1] = 0 }; long pos_slc[DIMS] = { [0 ... DIMS - 1] = 0 }; int pos_count = 0; enum cmode_t mode = CM_MAGN; struct opt_s modeopt[] = { OPT_SELECT('M', enum cmode_t, &mode, CM_MAGN, "magnitude gray (default) "), OPT_SELECT('V', enum cmode_t, &mode, CM_MAGN_VIRIDIS, "magnitude viridis"), OPT_SELECT('C', enum cmode_t, &mode, CM_CMPL, "complex"), OPT_SELECT('G', enum cmode_t, &mode, CM_CMPL_MYGBM, "complex MYGBM"), OPT_SELECT('P', enum cmode_t, &mode, CM_PHSE, "phase"), OPT_SELECT('Y', enum cmode_t, &mode, CM_PHSE_MYGBM, "phase MYGBM"), OPT_SELECT('R', enum cmode_t, &mode, CM_REAL, "real"), OPT_SELECT('T', enum cmode_t, &mode, CM_MAGN_TURBO, "magnitude turbo"), OPT_SELECT('F', enum cmode_t, &mode, CM_FLOW, "flow"), }; struct opt_s flipopt[] = { OPT_SELECT('O', enum flip_t, &flip, OO, "flip OO"), OPT_SELECT('X', enum flip_t, &flip, XO, "flip XO"), OPT_SELECT('Y', enum flip_t, &flip, OY, "flip OY"), OPT_SELECT('Z', enum flip_t, &flip, XY, "flip XY"), }; struct opt_s interpopt[] = { OPT_SELECT('L', enum interp_t, &interpolation, NLINEAR, "n-linear interpolation"), OPT_SELECT('M', enum interp_t, &interpolation, NLINEARMAG, "n-linear interpolation on the magnitude"), OPT_SELECT('N', enum interp_t, &interpolation, NEAREST, "nearest neighbor interpolation"), OPT_SELECT('C', enum interp_t, &interpolation, LIINCO, "line-integral convolution"), }; const struct opt_s opts[] = { OPT_INT('x', &xdim, "xdim", "output xdim (default: 0) "), OPT_INT('y', &ydim, "ydim", "output ydim (default: 0). If both are zero, first two non-singleton dims are used."), OPT_FLOAT('l', &windowing[0], "l", "lower windowing value"), OPT_FLOAT('u', &windowing[1], "u", "upper windowing value"), OPT_SET('A', &absolute_windowing, "use absolute windowing"), OPT_FLOAT('z', &zoom, "z", "zoom factor (default: 2) "), OPT_SUBOPT('C', "cmap", "colormap. -Ch for help.", ARRAY_SIZE(modeopt), modeopt), OPT_SUBOPT('F', "flip", "flip. -Fh for help.", ARRAY_SIZE(flipopt), flipopt), OPT_SUBOPT('I', "interp", "interp. -Ih for help.", ARRAY_SIZE(interpopt), interpopt), OPT_INT('d', &debug_level, "level", "Debug level"), OPT_ULONG('S', &sliceflags, "flags", "slice selected dims"), #ifdef OPT_VECC OPT_VECC('P', &pos_count, pos_slc, "position for sliced dimensions"), #endif #ifdef OPT_VECN OPT_VECN('p', pos, "(provide all positions (useful if position is exported from view))"), #endif }; cmdline(&argc, argv, ARRAY_SIZE(args), args, help_str, ARRAY_SIZE(opts), opts); if (!absolute_windowing) { assert( (windowing[0] >= 0.f) && (windowing[1] <= 1.f) && (windowing[0] < windowing[1])); } assert((0 <= xdim) && (xdim < DIMS)); assert((0 <= ydim) && (ydim < DIMS)); assert(0 == pos_count || pos_count == bitcount(sliceflags)); if (0 < pos_count) { for (int i = 0, ip = 0; i < DIMS; i++) { if (MD_IS_SET(sliceflags, i)) pos[i] = pos_slc[ip++]; } } /* * If the filename ends in ".hdr", ".cfl" or just "." (from * tab-completion), just replace the "." with a \0-character. */ io_unregister(in_file); char* dot = strrchr(in_file, '.'); if ( (NULL != dot) && ( !strcmp(dot, ".cfl") || !strcmp(dot, ".hdr") || !strcmp(dot, "."))) *dot = '\0'; io_reserve_input(in_file); long dims[DIMS]; complex float* idata = load_cfl(in_file, DIMS, dims); char* ext = rindex(out_prefix, '.'); if (NULL != ext) { if (0 != strcmp(ext, ".png")) error("Unknown file extension."); else *ext = '\0'; } export_images(out_prefix, xdim, ydim, windowing, absolute_windowing, zoom, cm_table[mode].mode, cm_table[mode].ctab, flip, interpolation, dims, ~sliceflags, pos, idata); unmap_cfl(DIMS, dims, idata); return 0; } /** * Convert flat index to pos * */ static void unravel_index(int D, long pos[D], unsigned long flags, const long dims[D], long index) { long ind = index; for (int d = 0; d < D; ++d) { if (!MD_IS_SET(flags, d)) continue; pos[d] = ind % dims[d]; ind /= dims[d]; } } void export_images(const char* output_prefix, int xdim, int ydim, float windowing[2], bool absolute_windowing, float zoom, enum mode_t mode, enum color_t ctab, enum flip_t flip, enum interp_t interpolation, const long dims[DIMS], unsigned long loopflags, long _pos[DIMS], const complex float* idata) { if (xdim == ydim) { long sq_dims[2] = { 0 }; int l = 0; for (int i = 0; (i < DIMS) && (l < 2); i++) if (1 != dims[i]) sq_dims[l++] = i; assert(2 == l); xdim = sq_dims[0]; ydim = sq_dims[1]; } double max = 0.; if (absolute_windowing) { max = 1.; } else { for (long j = 0; j < md_calc_size(DIMS, dims); j++) if (max < cabsf(idata[j])) max = cabsf(idata[j]); if (0. == max) max = 1.; } int rgbw = dims[xdim] * zoom; int rgbh = dims[ydim] * zoom; int rgbstr = 4 * rgbw; // loop over all dims other than xdim and ydim long loopdims[DIMS]; loopflags &= ~(MD_BIT(xdim)|MD_BIT(ydim)); md_select_dims(DIMS, loopflags, loopdims, dims); debug_printf(DP_DEBUG3, "imflags: %lu\nloopdims: ", (MD_BIT(xdim)|MD_BIT(ydim))); debug_print_dims(DP_DEBUG3, DIMS, loopdims); long strs[DIMS]; md_calc_strides(DIMS, strs, dims, sizeof(complex float)); #pragma omp parallel for for (unsigned long d = 0l; d < md_calc_size(DIMS, loopdims); ++d) { long pos[DIMS]; md_copy_dims(DIMS, pos, _pos); for (int i = 0; i < DIMS; i++) pos[i] = MIN(pos[i], dims[i] - 1); unravel_index(DIMS, pos, loopflags, loopdims, d); debug_printf(DP_DEBUG3, "\ti: %lu\n\t", d); debug_print_dims(DP_DEBUG3, DIMS, pos); // Prepare output filename char* name = construct_filename_view(DIMS, loopdims, pos, output_prefix, "png"); debug_printf(DP_DEBUG2, "\t%s\n", name); complex float* buf = xmalloc(rgbh * rgbw * sizeof(complex float)); update_buf(xdim, ydim, DIMS, dims, strs, pos, flip, interpolation, zoom, zoom, false, rgbw, rgbh, idata, buf); unsigned char* rgb = xmalloc(rgbh * rgbstr); draw(rgbw, rgbh, rgbstr, (unsigned char(*)[rgbw][rgbstr / 4][4])rgb, mode, ctab, 1. / max, windowing[0], windowing[1], 0, rgbw, buf); xfree(buf); if (0 != png_write_bgr32(name, rgbw, rgbh, 0, rgb)) error("Error: writing image file.\n"); xfree(rgb); xfree(name); } } view/src/colormaps.inc000066400000000000000000001202221527407252600153220ustar00rootroot00000000000000// cyclic_mygbm is a phase colormap from the the // "colorcet" project (https://github.com/bokeh/colorcet) // using a transition from magenta through yellow, green, and blue back to // magenta. More information can be found in: // Peter Kovesi. Good Colour Maps: How to Design Them. // arXiv:1509.03700 [cs.GR] 2015 // cyclic_mygbm by Peter Kovesi (http://www.peterkovesi.com) is licensed under the // Creative Commons Attribution 4.0 International Public License (CC-BY) // (https://creativecommons.org/licenses/by/4.0/) // Direct link to the colormap is // https://github.com/bokeh/colorcet/blob/master/assets/CETperceptual_csv_0_1/cyclic_mygbm_30-95_c78_n256_s25.csv static const double cyclic_mygbm[256][3] = { {0.18062, 0.13244, 0.91856}, {0.19173, 0.12446, 0.92396}, {0.20389, 0.11765, 0.92889}, {0.21681, 0.11214, 0.93335}, {0.23028, 0.10794, 0.93739}, {0.24417, 0.10525, 0.94101}, {0.25828, 0.10403, 0.94425}, {0.27246, 0.10417, 0.94716}, {0.28659, 0.10560, 0.94977}, {0.30059, 0.10807, 0.95212}, {0.31440, 0.11153, 0.95426}, {0.32796, 0.11565, 0.95622}, {0.34126, 0.12031, 0.95803}, {0.35426, 0.12544, 0.95973}, {0.36698, 0.13084, 0.96134}, {0.37942, 0.13637, 0.96288}, {0.39160, 0.14210, 0.96436}, {0.40352, 0.14786, 0.96581}, {0.41520, 0.15363, 0.96722}, {0.42669, 0.15941, 0.9686}, {0.43799, 0.16515, 0.96996}, {0.44913, 0.17088, 0.97129}, {0.46013, 0.17650, 0.97261}, {0.47106, 0.18204, 0.97389}, {0.48191, 0.18751, 0.97514}, {0.49273, 0.19280, 0.97635}, {0.50357, 0.19798, 0.97752}, {0.51446, 0.20302, 0.97863}, {0.52541, 0.20790, 0.97969}, {0.53647, 0.21259, 0.98067}, {0.54767, 0.21709, 0.98157}, {0.55903, 0.22137, 0.98238}, {0.57057, 0.22542, 0.9831}, {0.58230, 0.22925, 0.98372}, {0.59423, 0.23284, 0.98424}, {0.60636, 0.23623, 0.98465}, {0.61868, 0.23935, 0.98497}, {0.63116, 0.24227, 0.98518}, {0.64379, 0.24496, 0.9853}, {0.65656, 0.24750, 0.98533}, {0.66943, 0.24982, 0.98527}, {0.68237, 0.25203, 0.98515}, {0.69537, 0.25408, 0.98496}, {0.70839, 0.25601, 0.98471}, {0.72139, 0.25786, 0.98441}, {0.73437, 0.25968, 0.98405}, {0.74728, 0.26143, 0.98365}, {0.76012, 0.26319, 0.98321}, {0.77286, 0.26494, 0.98271}, {0.78548, 0.26676, 0.98216}, {0.79794, 0.26867, 0.98153}, {0.81023, 0.27069, 0.98082}, {0.82233, 0.27285, 0.98001}, {0.83418, 0.27525, 0.97905}, {0.84576, 0.27791, 0.97793}, {0.85702, 0.28089, 0.97661}, {0.86794, 0.28430, 0.97504}, {0.87845, 0.28819, 0.97317}, {0.88852, 0.29263, 0.97097}, {0.89810, 0.29768, 0.96837}, {0.90717, 0.30340, 0.96533}, {0.91567, 0.30984, 0.96182}, {0.92361, 0.31700, 0.9578}, {0.93095, 0.32489, 0.95323}, {0.93769, 0.33352, 0.94809}, {0.94383, 0.34283, 0.94239}, {0.94939, 0.35275, 0.93613}, {0.95439, 0.36323, 0.92931}, {0.95886, 0.37422, 0.92198}, {0.96283, 0.38558, 0.91416}, {0.96634, 0.39727, 0.90588}, {0.96944, 0.40921, 0.89721}, {0.97216, 0.42130, 0.88817}, {0.97454, 0.43350, 0.87883}, {0.97663, 0.44573, 0.86923}, {0.97845, 0.45797, 0.8594}, {0.98004, 0.47017, 0.84939}, {0.98142, 0.48228, 0.83922}, {0.98262, 0.49430, 0.82894}, {0.98364, 0.50620, 0.81854}, {0.98453, 0.51799, 0.80808}, {0.98527, 0.52964, 0.79753}, {0.98588, 0.54116, 0.78694}, {0.98637, 0.55255, 0.77629}, {0.98676, 0.56382, 0.76559}, {0.98704, 0.57494, 0.75486}, {0.98722, 0.58595, 0.74407}, {0.98733, 0.59683, 0.73326}, {0.98736, 0.60758, 0.72241}, {0.98732, 0.61821, 0.71153}, {0.98723, 0.62871, 0.7006}, {0.98710, 0.63909, 0.68965}, {0.98694, 0.64936, 0.67864}, {0.98677, 0.65949, 0.66762}, {0.98660, 0.66950, 0.65654}, {0.98644, 0.67938, 0.64543}, {0.98630, 0.68916, 0.63428}, {0.98621, 0.69879, 0.62309}, {0.98616, 0.70831, 0.61184}, {0.98617, 0.71772, 0.60055}, {0.98624, 0.72700, 0.5892}, {0.98636, 0.73618, 0.57779}, {0.98653, 0.74526, 0.56632}, {0.98675, 0.75426, 0.55476}, {0.98702, 0.76315, 0.54311}, {0.98731, 0.77198, 0.53134}, {0.98761, 0.78074, 0.51946}, {0.98792, 0.78944, 0.50744}, {0.98820, 0.79807, 0.49526}, {0.98845, 0.80666, 0.48291}, {0.98864, 0.81518, 0.47039}, {0.98875, 0.82365, 0.45765}, {0.98875, 0.83206, 0.4447}, {0.98863, 0.84039, 0.43151}, {0.98834, 0.84863, 0.41804}, {0.98786, 0.85677, 0.40433}, {0.98715, 0.86476, 0.39033}, {0.98616, 0.87259, 0.37607}, {0.98485, 0.88020, 0.36152}, {0.98316, 0.88754, 0.3467}, {0.98105, 0.89458, 0.33163}, {0.97845, 0.90123, 0.31637}, {0.97534, 0.90744, 0.30092}, {0.97166, 0.91315, 0.28537}, {0.96737, 0.91831, 0.26983}, {0.96244, 0.92285, 0.25432}, {0.95686, 0.92672, 0.23895}, {0.95064, 0.92990, 0.22388}, {0.94377, 0.93236, 0.2092}, {0.93628, 0.93410, 0.19506}, {0.92820, 0.93512, 0.18153}, {0.91959, 0.93544, 0.16884}, {0.91047, 0.93510, 0.15697}, {0.90091, 0.93414, 0.1461}, {0.89097, 0.93263, 0.13623}, {0.88070, 0.93061, 0.12747}, {0.87014, 0.92815, 0.11977}, {0.85937, 0.92531, 0.11315}, {0.84840, 0.92216, 0.10742}, {0.83729, 0.91874, 0.10257}, {0.82605, 0.91511, 0.098502}, {0.81472, 0.91132, 0.095091}, {0.80332, 0.90739, 0.092162}, {0.79187, 0.90336, 0.089659}, {0.78036, 0.89925, 0.087518}, {0.76881, 0.89508, 0.08551}, {0.75723, 0.89086, 0.083837}, {0.74562, 0.88662, 0.082243}, {0.73398, 0.88235, 0.080673}, {0.72230, 0.87807, 0.079194}, {0.71060, 0.87376, 0.077792}, {0.69886, 0.86946, 0.076415}, {0.68710, 0.86514, 0.075063}, {0.67529, 0.86082, 0.073757}, {0.66346, 0.85649, 0.072319}, {0.65156, 0.85215, 0.071005}, {0.63963, 0.84780, 0.069678}, {0.62764, 0.84345, 0.068313}, {0.61560, 0.83909, 0.066946}, {0.60351, 0.83473, 0.065602}, {0.59134, 0.83035, 0.064284}, {0.57911, 0.82597, 0.063016}, {0.56681, 0.82158, 0.061599}, {0.55443, 0.81718, 0.060374}, {0.54195, 0.81278, 0.059088}, {0.52940, 0.80837, 0.057695}, {0.51672, 0.80395, 0.056522}, {0.50395, 0.79952, 0.055189}, {0.49106, 0.79508, 0.053903}, {0.47801, 0.79064, 0.052644}, {0.46484, 0.78619, 0.051424}, {0.45151, 0.78173, 0.050257}, {0.43803, 0.77726, 0.04922}, {0.42437, 0.77277, 0.04812}, {0.41056, 0.76827, 0.047322}, {0.39656, 0.76375, 0.04674}, {0.38239, 0.75922, 0.046427}, {0.36808, 0.75466, 0.046596}, {0.35361, 0.75006, 0.047299}, {0.33906, 0.74543, 0.04874}, {0.32443, 0.74075, 0.050897}, {0.30984, 0.73602, 0.054069}, {0.29532, 0.73122, 0.058336}, {0.28105, 0.72634, 0.063783}, {0.26717, 0.72137, 0.070322}, {0.25387, 0.71631, 0.077992}, {0.24134, 0.71112, 0.08687}, {0.22981, 0.70580, 0.096608}, {0.21961, 0.70035, 0.10741}, {0.21092, 0.69475, 0.11899}, {0.20400, 0.68901, 0.13129}, {0.19894, 0.68310, 0.14422}, {0.19593, 0.67703, 0.15768}, {0.19486, 0.67081, 0.17161}, {0.19560, 0.66443, 0.18594}, {0.19795, 0.65791, 0.2005}, {0.20163, 0.65125, 0.21533}, {0.20639, 0.64446, 0.2303}, {0.21183, 0.63756, 0.24538}, {0.21771, 0.63057, 0.26052}, {0.22381, 0.62348, 0.27565}, {0.22992, 0.61632, 0.29071}, {0.23593, 0.60910, 0.30574}, {0.24162, 0.60182, 0.32064}, {0.24693, 0.59450, 0.33543}, {0.25184, 0.58716, 0.35008}, {0.25622, 0.57980, 0.36459}, {0.26011, 0.57242, 0.37897}, {0.26346, 0.56501, 0.3932}, {0.26624, 0.55762, 0.4073}, {0.26846, 0.55021, 0.42127}, {0.27013, 0.54280, 0.43513}, {0.27122, 0.53539, 0.44886}, {0.27173, 0.52798, 0.46247}, {0.27170, 0.52057, 0.476}, {0.27112, 0.51317, 0.48942}, {0.26997, 0.50576, 0.50275}, {0.26823, 0.49837, 0.516}, {0.26598, 0.49096, 0.52919}, {0.26316, 0.48352, 0.54228}, {0.25982, 0.47610, 0.55529}, {0.25594, 0.46864, 0.56822}, {0.25162, 0.46117, 0.58105}, {0.24680, 0.45365, 0.5938}, {0.24161, 0.44609, 0.60643}, {0.23605, 0.43849, 0.61894}, {0.23017, 0.43081, 0.63131}, {0.22410, 0.42303, 0.64353}, {0.21793, 0.41517, 0.6556}, {0.21170, 0.40718, 0.66749}, {0.20550, 0.39906, 0.67919}, {0.19945, 0.39079, 0.6907}, {0.19367, 0.38234, 0.70201}, {0.18818, 0.37372, 0.71312}, {0.18300, 0.36488, 0.72404}, {0.17829, 0.35585, 0.73477}, {0.17392, 0.34657, 0.7453}, {0.16999, 0.33707, 0.75566}, {0.16639, 0.32732, 0.76586}, {0.16312, 0.31735, 0.7759}, {0.16005, 0.30712, 0.78581}, {0.15724, 0.29667, 0.79557}, {0.15457, 0.28595, 0.80522}, {0.15202, 0.27505, 0.81474}, {0.14966, 0.26395, 0.82414}, {0.14744, 0.25264, 0.8334}, {0.14554, 0.24118, 0.84252}, {0.14402, 0.22960, 0.85145}, {0.14312, 0.21800, 0.86019}, {0.14305, 0.20639, 0.86869}, {0.14404, 0.19481, 0.87691}, {0.14630, 0.18336, 0.88484}, {0.15007, 0.17219, 0.89241}, {0.15537, 0.16140, 0.8996}, {0.16230, 0.15103, 0.90637}, {0.17075, 0.14136, 0.9127}, }; // viridis is the new default perceptually uniform colormap of the // "matplotlib" project (http://matplotlib.org/) // Direct link to the colormap is // https://github.com/BIDS/colormap/blob/master/colormaps.py // Viridis (and the other colormaps available at the link) are created by // Nathaniel J. Smith, Stefan van der Walt, and (in the case of viridis) Eric Firing. // The file (https://github.com/BIDS/colormap/blob/master/colormaps.py) // and the colormaps in it are released under the CC0 license / // public domain dedication. The authors would appreciate credit if you use or // redistribute these colormaps, but do not impose any legal restrictions. // See for a copy // of the CC0 license. static const double viridis[256][3] = { {0.267004, 0.004874, 0.329415}, {0.268510, 0.009605, 0.335427}, {0.269944, 0.014625, 0.341379}, {0.271305, 0.019942, 0.347269}, {0.272594, 0.025563, 0.353093}, {0.273809, 0.031497, 0.358853}, {0.274952, 0.037752, 0.364543}, {0.276022, 0.044167, 0.370164}, {0.277018, 0.050344, 0.375715}, {0.277941, 0.056324, 0.381191}, {0.278791, 0.062145, 0.386592}, {0.279566, 0.067836, 0.391917}, {0.280267, 0.073417, 0.397163}, {0.280894, 0.078907, 0.402329}, {0.281446, 0.084320, 0.407414}, {0.281924, 0.089666, 0.412415}, {0.282327, 0.094955, 0.417331}, {0.282656, 0.100196, 0.422160}, {0.282910, 0.105393, 0.426902}, {0.283091, 0.110553, 0.431554}, {0.283197, 0.115680, 0.436115}, {0.283229, 0.120777, 0.440584}, {0.283187, 0.125848, 0.444960}, {0.283072, 0.130895, 0.449241}, {0.282884, 0.135920, 0.453427}, {0.282623, 0.140926, 0.457517}, {0.282290, 0.145912, 0.461510}, {0.281887, 0.150881, 0.465405}, {0.281412, 0.155834, 0.469201}, {0.280868, 0.160771, 0.472899}, {0.280255, 0.165693, 0.476498}, {0.279574, 0.170599, 0.479997}, {0.278826, 0.175490, 0.483397}, {0.278012, 0.180367, 0.486697}, {0.277134, 0.185228, 0.489898}, {0.276194, 0.190074, 0.493001}, {0.275191, 0.194905, 0.496005}, {0.274128, 0.199721, 0.498911}, {0.273006, 0.204520, 0.501721}, {0.271828, 0.209303, 0.504434}, {0.270595, 0.214069, 0.507052}, {0.269308, 0.218818, 0.509577}, {0.267968, 0.223549, 0.512008}, {0.266580, 0.228262, 0.514349}, {0.265145, 0.232956, 0.516599}, {0.263663, 0.237631, 0.518762}, {0.262138, 0.242286, 0.520837}, {0.260571, 0.246922, 0.522828}, {0.258965, 0.251537, 0.524736}, {0.257322, 0.256130, 0.526563}, {0.255645, 0.260703, 0.528312}, {0.253935, 0.265254, 0.529983}, {0.252194, 0.269783, 0.531579}, {0.250425, 0.274290, 0.533103}, {0.248629, 0.278775, 0.534556}, {0.246811, 0.283237, 0.535941}, {0.244972, 0.287675, 0.537260}, {0.243113, 0.292092, 0.538516}, {0.241237, 0.296485, 0.539709}, {0.239346, 0.300855, 0.540844}, {0.237441, 0.305202, 0.541921}, {0.235526, 0.309527, 0.542944}, {0.233603, 0.313828, 0.543914}, {0.231674, 0.318106, 0.544834}, {0.229739, 0.322361, 0.545706}, {0.227802, 0.326594, 0.546532}, {0.225863, 0.330805, 0.547314}, {0.223925, 0.334994, 0.548053}, {0.221989, 0.339161, 0.548752}, {0.220057, 0.343307, 0.549413}, {0.218130, 0.347432, 0.550038}, {0.216210, 0.351535, 0.550627}, {0.214298, 0.355619, 0.551184}, {0.212395, 0.359683, 0.551710}, {0.210503, 0.363727, 0.552206}, {0.208623, 0.367752, 0.552675}, {0.206756, 0.371758, 0.553117}, {0.204903, 0.375746, 0.553533}, {0.203063, 0.379716, 0.553925}, {0.201239, 0.383670, 0.554294}, {0.199430, 0.387607, 0.554642}, {0.197636, 0.391528, 0.554969}, {0.195860, 0.395433, 0.555276}, {0.194100, 0.399323, 0.555565}, {0.192357, 0.403199, 0.555836}, {0.190631, 0.407061, 0.556089}, {0.188923, 0.410910, 0.556326}, {0.187231, 0.414746, 0.556547}, {0.185556, 0.418570, 0.556753}, {0.183898, 0.422383, 0.556944}, {0.182256, 0.426184, 0.557120}, {0.180629, 0.429975, 0.557282}, {0.179019, 0.433756, 0.557430}, {0.177423, 0.437527, 0.557565}, {0.175841, 0.441290, 0.557685}, {0.174274, 0.445044, 0.557792}, {0.172719, 0.448791, 0.557885}, {0.171176, 0.452530, 0.557965}, {0.169646, 0.456262, 0.558030}, {0.168126, 0.459988, 0.558082}, {0.166617, 0.463708, 0.558119}, {0.165117, 0.467423, 0.558141}, {0.163625, 0.471133, 0.558148}, {0.162142, 0.474838, 0.558140}, {0.160665, 0.478540, 0.558115}, {0.159194, 0.482237, 0.558073}, {0.157729, 0.485932, 0.558013}, {0.156270, 0.489624, 0.557936}, {0.154815, 0.493313, 0.557840}, {0.153364, 0.497000, 0.557724}, {0.151918, 0.500685, 0.557587}, {0.150476, 0.504369, 0.557430}, {0.149039, 0.508051, 0.557250}, {0.147607, 0.511733, 0.557049}, {0.146180, 0.515413, 0.556823}, {0.144759, 0.519093, 0.556572}, {0.143343, 0.522773, 0.556295}, {0.141935, 0.526453, 0.555991}, {0.140536, 0.530132, 0.555659}, {0.139147, 0.533812, 0.555298}, {0.137770, 0.537492, 0.554906}, {0.136408, 0.541173, 0.554483}, {0.135066, 0.544853, 0.554029}, {0.133743, 0.548535, 0.553541}, {0.132444, 0.552216, 0.553018}, {0.131172, 0.555899, 0.552459}, {0.129933, 0.559582, 0.551864}, {0.128729, 0.563265, 0.551229}, {0.127568, 0.566949, 0.550556}, {0.126453, 0.570633, 0.549841}, {0.125394, 0.574318, 0.549086}, {0.124395, 0.578002, 0.548287}, {0.123463, 0.581687, 0.547445}, {0.122606, 0.585371, 0.546557}, {0.121831, 0.589055, 0.545623}, {0.121148, 0.592739, 0.544641}, {0.120565, 0.596422, 0.543611}, {0.120092, 0.600104, 0.542530}, {0.119738, 0.603785, 0.541400}, {0.119512, 0.607464, 0.540218}, {0.119423, 0.611141, 0.538982}, {0.119483, 0.614817, 0.537692}, {0.119699, 0.618490, 0.536347}, {0.120081, 0.622161, 0.534946}, {0.120638, 0.625828, 0.533488}, {0.121380, 0.629492, 0.531973}, {0.122312, 0.633153, 0.530398}, {0.123444, 0.636809, 0.528763}, {0.124780, 0.640461, 0.527068}, {0.126326, 0.644107, 0.525311}, {0.128087, 0.647749, 0.523491}, {0.130067, 0.651384, 0.521608}, {0.132268, 0.655014, 0.519661}, {0.134692, 0.658636, 0.517649}, {0.137339, 0.662252, 0.515571}, {0.140210, 0.665859, 0.513427}, {0.143303, 0.669459, 0.511215}, {0.146616, 0.673050, 0.508936}, {0.150148, 0.676631, 0.506589}, {0.153894, 0.680203, 0.504172}, {0.157851, 0.683765, 0.501686}, {0.162016, 0.687316, 0.499129}, {0.166383, 0.690856, 0.496502}, {0.170948, 0.694384, 0.493803}, {0.175707, 0.697900, 0.491033}, {0.180653, 0.701402, 0.488189}, {0.185783, 0.704891, 0.485273}, {0.191090, 0.708366, 0.482284}, {0.196571, 0.711827, 0.479221}, {0.202219, 0.715272, 0.476084}, {0.208030, 0.718701, 0.472873}, {0.214000, 0.722114, 0.469588}, {0.220124, 0.725509, 0.466226}, {0.226397, 0.728888, 0.462789}, {0.232815, 0.732247, 0.459277}, {0.239374, 0.735588, 0.455688}, {0.246070, 0.738910, 0.452024}, {0.252899, 0.742211, 0.448284}, {0.259857, 0.745492, 0.444467}, {0.266941, 0.748751, 0.440573}, {0.274149, 0.751988, 0.436601}, {0.281477, 0.755203, 0.432552}, {0.288921, 0.758394, 0.428426}, {0.296479, 0.761561, 0.424223}, {0.304148, 0.764704, 0.419943}, {0.311925, 0.767822, 0.415586}, {0.319809, 0.770914, 0.411152}, {0.327796, 0.773980, 0.406640}, {0.335885, 0.777018, 0.402049}, {0.344074, 0.780029, 0.397381}, {0.352360, 0.783011, 0.392636}, {0.360741, 0.785964, 0.387814}, {0.369214, 0.788888, 0.382914}, {0.377779, 0.791781, 0.377939}, {0.386433, 0.794644, 0.372886}, {0.395174, 0.797475, 0.367757}, {0.404001, 0.800275, 0.362552}, {0.412913, 0.803041, 0.357269}, {0.421908, 0.805774, 0.351910}, {0.430983, 0.808473, 0.346476}, {0.440137, 0.811138, 0.340967}, {0.449368, 0.813768, 0.335384}, {0.458674, 0.816363, 0.329727}, {0.468053, 0.818921, 0.323998}, {0.477504, 0.821444, 0.318195}, {0.487026, 0.823929, 0.312321}, {0.496615, 0.826376, 0.306377}, {0.506271, 0.828786, 0.300362}, {0.515992, 0.831158, 0.294279}, {0.525776, 0.833491, 0.288127}, {0.535621, 0.835785, 0.281908}, {0.545524, 0.838039, 0.275626}, {0.555484, 0.840254, 0.269281}, {0.565498, 0.842430, 0.262877}, {0.575563, 0.844566, 0.256415}, {0.585678, 0.846661, 0.249897}, {0.595839, 0.848717, 0.243329}, {0.606045, 0.850733, 0.236712}, {0.616293, 0.852709, 0.230052}, {0.626579, 0.854645, 0.223353}, {0.636902, 0.856542, 0.216620}, {0.647257, 0.858400, 0.209861}, {0.657642, 0.860219, 0.203082}, {0.668054, 0.861999, 0.196293}, {0.678489, 0.863742, 0.189503}, {0.688944, 0.865448, 0.182725}, {0.699415, 0.867117, 0.175971}, {0.709898, 0.868751, 0.169257}, {0.720391, 0.870350, 0.162603}, {0.730889, 0.871916, 0.156029}, {0.741388, 0.873449, 0.149561}, {0.751884, 0.874951, 0.143228}, {0.762373, 0.876424, 0.137064}, {0.772852, 0.877868, 0.131109}, {0.783315, 0.879285, 0.125405}, {0.793760, 0.880678, 0.120005}, {0.804182, 0.882046, 0.114965}, {0.814576, 0.883393, 0.110347}, {0.824940, 0.884720, 0.106217}, {0.835270, 0.886029, 0.102646}, {0.845561, 0.887322, 0.099702}, {0.855810, 0.888601, 0.097452}, {0.866013, 0.889868, 0.095953}, {0.876168, 0.891125, 0.095250}, {0.886271, 0.892374, 0.095374}, {0.896320, 0.893616, 0.096335}, {0.906311, 0.894855, 0.098125}, {0.916242, 0.896091, 0.100717}, {0.926106, 0.897330, 0.104071}, {0.935904, 0.898570, 0.108131}, {0.945636, 0.899815, 0.112838}, {0.955300, 0.901065, 0.118128}, {0.964894, 0.902323, 0.123941}, {0.974417, 0.903590, 0.130215}, {0.983868, 0.904867, 0.136897}, {0.993248, 0.906157, 0.143936}, }; // The Turbo colormap is a replacement for jet, the old default colormap of // matlab. Turbo, like jet, is a rainbow colormap, but unlike jet it does not // have its banding problems, so it does not introduce false detail. // It is available from Google LLC under the Apache-2.0 license. // This particular look-up table was adapted from // https://gist.github.com/mikhailov-work/6a308c20e494d9e0ccc29036b28faa7a // Copyright 2019 Google LLC. // SPDX-License-Identifier: Apache-2.0 // Author: Anton Mikhailov // The look-up tables contains 256 entries. Each entry is a an sRGB triplet. static const double turbo[256][3] = {{0.18995,0.07176,0.23217},{0.19483,0.08339,0.26149},{0.19956,0.09498,0.29024},{0.20415,0.10652,0.31844},{0.20860,0.11802,0.34607},{0.21291,0.12947,0.37314},{0.21708,0.14087,0.39964},{0.22111,0.15223,0.42558},{0.22500,0.16354,0.45096},{0.22875,0.17481,0.47578},{0.23236,0.18603,0.50004},{0.23582,0.19720,0.52373},{0.23915,0.20833,0.54686},{0.24234,0.21941,0.56942},{0.24539,0.23044,0.59142},{0.24830,0.24143,0.61286},{0.25107,0.25237,0.63374},{0.25369,0.26327,0.65406},{0.25618,0.27412,0.67381},{0.25853,0.28492,0.69300},{0.26074,0.29568,0.71162},{0.26280,0.30639,0.72968},{0.26473,0.31706,0.74718},{0.26652,0.32768,0.76412},{0.26816,0.33825,0.78050},{0.26967,0.34878,0.79631},{0.27103,0.35926,0.81156},{0.27226,0.36970,0.82624},{0.27334,0.38008,0.84037},{0.27429,0.39043,0.85393},{0.27509,0.40072,0.86692},{0.27576,0.41097,0.87936},{0.27628,0.42118,0.89123},{0.27667,0.43134,0.90254},{0.27691,0.44145,0.91328},{0.27701,0.45152,0.92347},{0.27698,0.46153,0.93309},{0.27680,0.47151,0.94214},{0.27648,0.48144,0.95064},{0.27603,0.49132,0.95857},{0.27543,0.50115,0.96594},{0.27469,0.51094,0.97275},{0.27381,0.52069,0.97899},{0.27273,0.53040,0.98461},{0.27106,0.54015,0.98930},{0.26878,0.54995,0.99303},{0.26592,0.55979,0.99583},{0.26252,0.56967,0.99773},{0.25862,0.57958,0.99876},{0.25425,0.58950,0.99896},{0.24946,0.59943,0.99835},{0.24427,0.60937,0.99697},{0.23874,0.61931,0.99485},{0.23288,0.62923,0.99202},{0.22676,0.63913,0.98851},{0.22039,0.64901,0.98436},{0.21382,0.65886,0.97959},{0.20708,0.66866,0.97423},{0.20021,0.67842,0.96833},{0.19326,0.68812,0.96190},{0.18625,0.69775,0.95498},{0.17923,0.70732,0.94761},{0.17223,0.71680,0.93981},{0.16529,0.72620,0.93161},{0.15844,0.73551,0.92305},{0.15173,0.74472,0.91416},{0.14519,0.75381,0.90496},{0.13886,0.76279,0.89550},{0.13278,0.77165,0.88580},{0.12698,0.78037,0.87590},{0.12151,0.78896,0.86581},{0.11639,0.79740,0.85559},{0.11167,0.80569,0.84525},{0.10738,0.81381,0.83484},{0.10357,0.82177,0.82437},{0.10026,0.82955,0.81389},{0.09750,0.83714,0.80342},{0.09532,0.84455,0.79299},{0.09377,0.85175,0.78264},{0.09287,0.85875,0.77240},{0.09267,0.86554,0.76230},{0.09320,0.87211,0.75237},{0.09451,0.87844,0.74265},{0.09662,0.88454,0.73316},{0.09958,0.89040,0.72393},{0.10342,0.89600,0.71500},{0.10815,0.90142,0.70599},{0.11374,0.90673,0.69651},{0.12014,0.91193,0.68660},{0.12733,0.91701,0.67627},{0.13526,0.92197,0.66556},{0.14391,0.92680,0.65448},{0.15323,0.93151,0.64308},{0.16319,0.93609,0.63137},{0.17377,0.94053,0.61938},{0.18491,0.94484,0.60713},{0.19659,0.94901,0.59466},{0.20877,0.95304,0.58199},{0.22142,0.95692,0.56914},{0.23449,0.96065,0.55614},{0.24797,0.96423,0.54303},{0.26180,0.96765,0.52981},{0.27597,0.97092,0.51653},{0.29042,0.97403,0.50321},{0.30513,0.97697,0.48987},{0.32006,0.97974,0.47654},{0.33517,0.98234,0.46325},{0.35043,0.98477,0.45002},{0.36581,0.98702,0.43688},{0.38127,0.98909,0.42386},{0.39678,0.99098,0.41098},{0.41229,0.99268,0.39826},{0.42778,0.99419,0.38575},{0.44321,0.99551,0.37345},{0.45854,0.99663,0.36140},{0.47375,0.99755,0.34963},{0.48879,0.99828,0.33816},{0.50362,0.99879,0.32701},{0.51822,0.99910,0.31622},{0.53255,0.99919,0.30581},{0.54658,0.99907,0.29581},{0.56026,0.99873,0.28623},{0.57357,0.99817,0.27712},{0.58646,0.99739,0.26849},{0.59891,0.99638,0.26038},{0.61088,0.99514,0.25280},{0.62233,0.99366,0.24579},{0.63323,0.99195,0.23937},{0.64362,0.98999,0.23356},{0.65394,0.98775,0.22835},{0.66428,0.98524,0.22370},{0.67462,0.98246,0.21960},{0.68494,0.97941,0.21602},{0.69525,0.97610,0.21294},{0.70553,0.97255,0.21032},{0.71577,0.96875,0.20815},{0.72596,0.96470,0.20640},{0.73610,0.96043,0.20504},{0.74617,0.95593,0.20406},{0.75617,0.95121,0.20343},{0.76608,0.94627,0.20311},{0.77591,0.94113,0.20310},{0.78563,0.93579,0.20336},{0.79524,0.93025,0.20386},{0.80473,0.92452,0.20459},{0.81410,0.91861,0.20552},{0.82333,0.91253,0.20663},{0.83241,0.90627,0.20788},{0.84133,0.89986,0.20926},{0.85010,0.89328,0.21074},{0.85868,0.88655,0.21230},{0.86709,0.87968,0.21391},{0.87530,0.87267,0.21555},{0.88331,0.86553,0.21719},{0.89112,0.85826,0.21880},{0.89870,0.85087,0.22038},{0.90605,0.84337,0.22188},{0.91317,0.83576,0.22328},{0.92004,0.82806,0.22456},{0.92666,0.82025,0.22570},{0.93301,0.81236,0.22667},{0.93909,0.80439,0.22744},{0.94489,0.79634,0.22800},{0.95039,0.78823,0.22831},{0.95560,0.78005,0.22836},{0.96049,0.77181,0.22811},{0.96507,0.76352,0.22754},{0.96931,0.75519,0.22663},{0.97323,0.74682,0.22536},{0.97679,0.73842,0.22369},{0.98000,0.73000,0.22161},{0.98289,0.72140,0.21918},{0.98549,0.71250,0.21650},{0.98781,0.70330,0.21358},{0.98986,0.69382,0.21043},{0.99163,0.68408,0.20706},{0.99314,0.67408,0.20348},{0.99438,0.66386,0.19971},{0.99535,0.65341,0.19577},{0.99607,0.64277,0.19165},{0.99654,0.63193,0.18738},{0.99675,0.62093,0.18297},{0.99672,0.60977,0.17842},{0.99644,0.59846,0.17376},{0.99593,0.58703,0.16899},{0.99517,0.57549,0.16412},{0.99419,0.56386,0.15918},{0.99297,0.55214,0.15417},{0.99153,0.54036,0.14910},{0.98987,0.52854,0.14398},{0.98799,0.51667,0.13883},{0.98590,0.50479,0.13367},{0.98360,0.49291,0.12849},{0.98108,0.48104,0.12332},{0.97837,0.46920,0.11817},{0.97545,0.45740,0.11305},{0.97234,0.44565,0.10797},{0.96904,0.43399,0.10294},{0.96555,0.42241,0.09798},{0.96187,0.41093,0.09310},{0.95801,0.39958,0.08831},{0.95398,0.38836,0.08362},{0.94977,0.37729,0.07905},{0.94538,0.36638,0.07461},{0.94084,0.35566,0.07031},{0.93612,0.34513,0.06616},{0.93125,0.33482,0.06218},{0.92623,0.32473,0.05837},{0.92105,0.31489,0.05475},{0.91572,0.30530,0.05134},{0.91024,0.29599,0.04814},{0.90463,0.28696,0.04516},{0.89888,0.27824,0.04243},{0.89298,0.26981,0.03993},{0.88691,0.26152,0.03753},{0.88066,0.25334,0.03521},{0.87422,0.24526,0.03297},{0.86760,0.23730,0.03082},{0.86079,0.22945,0.02875},{0.85380,0.22170,0.02677},{0.84662,0.21407,0.02487},{0.83926,0.20654,0.02305},{0.83172,0.19912,0.02131},{0.82399,0.19182,0.01966},{0.81608,0.18462,0.01809},{0.80799,0.17753,0.01660},{0.79971,0.17055,0.01520},{0.79125,0.16368,0.01387},{0.78260,0.15693,0.01264},{0.77377,0.15028,0.01148},{0.76476,0.14374,0.01041},{0.75556,0.13731,0.00942},{0.74617,0.13098,0.00851},{0.73661,0.12477,0.00769},{0.72686,0.11867,0.00695},{0.71692,0.11268,0.00629},{0.70680,0.10680,0.00571},{0.69650,0.10102,0.00522},{0.68602,0.09536,0.00481},{0.67535,0.08980,0.00449},{0.66449,0.08436,0.00424},{0.65345,0.07902,0.00408},{0.64223,0.07380,0.00401},{0.63082,0.06868,0.00401},{0.61923,0.06367,0.00410},{0.60746,0.05878,0.00427},{0.59550,0.05399,0.00453},{0.58336,0.04931,0.00486},{0.57103,0.04474,0.00529},{0.55852,0.04028,0.00579},{0.54583,0.03593,0.00638},{0.53295,0.03169,0.00705},{0.51989,0.02756,0.00780},{0.50664,0.02354,0.00863},{0.49321,0.01963,0.00955},{0.47960,0.01583,0.01055}}; // Lipari and Navia are the colormaps recommended by the Quantitative-MR Study Group of the ISMRM. // See // https://cig-utrecht.org/blog/2023/11/27/colormap-relaxometry.html // for more information. // These colormaps are licensed unser an MIT License by their creator: // The Scientific colour maps are licensed under a MIT License // Copyright (c) 2023, Fabio Crameri // Permission is hereby granted, free of charge, to any person ob­ // taining a copy of this software and associated documentation // files (the â€�Softwareâ€�), to deal in the Software without restric­ // tion, 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 fur­ // nished 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 AC­ // TION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT // OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. static const double lipari[256][3] = {{0.011370,0.073240,0.148284},{0.013965,0.079062,0.155370},{0.015899,0.084718,0.162521},{0.017234,0.090035,0.169728},{0.018046,0.095138,0.176970},{0.018987,0.100000,0.184274},{0.019970,0.104911,0.191606},{0.021000,0.109963,0.198961},{0.022084,0.114884,0.206390},{0.023227,0.119924,0.213776},{0.024440,0.124981,0.221213},{0.025732,0.130104,0.228657},{0.027114,0.135178,0.236104},{0.028602,0.140291,0.243540},{0.030209,0.145478,0.251025},{0.031951,0.150619,0.258480},{0.033828,0.155833,0.265955},{0.036137,0.161049,0.273414},{0.038425,0.166276,0.280837},{0.040951,0.171536,0.288282},{0.043537,0.176819,0.295697},{0.046467,0.182111,0.303085},{0.049594,0.187473,0.310472},{0.052785,0.192789,0.317790},{0.056373,0.198137,0.325072},{0.060123,0.203522,0.332335},{0.064059,0.208893,0.339525},{0.068323,0.214290,0.346641},{0.072795,0.219688,0.353691},{0.077499,0.225063,0.360661},{0.082595,0.230463,0.367551},{0.087912,0.235873,0.374351},{0.093441,0.241239,0.381025},{0.099307,0.246590,0.387560},{0.105413,0.251937,0.393974},{0.111813,0.257230,0.400242},{0.118433,0.262485,0.406341},{0.125243,0.267672,0.412263},{0.132308,0.272835,0.417985},{0.139522,0.277918,0.423506},{0.146980,0.282919,0.428820},{0.154569,0.287803,0.433888},{0.162316,0.292606,0.438725},{0.170138,0.297302,0.443314},{0.178074,0.301843,0.447622},{0.186034,0.306290,0.451681},{0.194038,0.310565,0.455448},{0.202008,0.314663,0.458938},{0.210000,0.318627,0.462138},{0.217939,0.322418,0.465058},{0.225808,0.326006,0.467698},{0.233544,0.329454,0.470063},{0.241213,0.332694,0.472151},{0.248744,0.335738,0.473965},{0.256094,0.338600,0.475542},{0.263329,0.341290,0.476858},{0.270378,0.343785,0.477950},{0.277238,0.346109,0.478825},{0.283919,0.348279,0.479499},{0.290422,0.350279,0.479979},{0.296766,0.352104,0.480280},{0.302897,0.353796,0.480422},{0.308898,0.355368,0.480419},{0.314684,0.356787,0.480285},{0.320355,0.358086,0.480032},{0.325830,0.359270,0.479670},{0.331185,0.360355,0.479208},{0.336416,0.361358,0.478660},{0.341527,0.362272,0.478039},{0.346516,0.363098,0.477353},{0.351412,0.363861,0.476608},{0.356223,0.364562,0.475814},{0.360933,0.365208,0.474974},{0.365601,0.365807,0.474080},{0.370195,0.366362,0.473154},{0.374753,0.366868,0.472216},{0.379261,0.367335,0.471236},{0.383746,0.367781,0.470232},{0.388198,0.368207,0.469210},{0.392637,0.368608,0.468151},{0.397066,0.368982,0.467095},{0.401502,0.369337,0.466002},{0.405945,0.369677,0.464911},{0.410391,0.370008,0.463798},{0.414838,0.370329,0.462661},{0.419318,0.370641,0.461530},{0.423806,0.370946,0.460367},{0.428335,0.371246,0.459212},{0.432886,0.371542,0.458027},{0.437471,0.371834,0.456836},{0.442084,0.372124,0.455637},{0.446721,0.372413,0.454430},{0.451402,0.372700,0.453200},{0.456112,0.372987,0.451972},{0.460861,0.373274,0.450722},{0.465644,0.373563,0.449468},{0.470480,0.373853,0.448196},{0.475346,0.374142,0.446922},{0.480239,0.374430,0.445630},{0.485169,0.374716,0.444348},{0.490149,0.375002,0.443038},{0.495165,0.375292,0.441725},{0.500209,0.375588,0.440391},{0.505298,0.375890,0.439053},{0.510431,0.376194,0.437723},{0.515595,0.376498,0.436363},{0.520808,0.376800,0.435003},{0.526060,0.377102,0.433614},{0.531345,0.377408,0.432248},{0.536679,0.377717,0.430847},{0.542039,0.378031,0.429441},{0.547450,0.378347,0.428030},{0.552900,0.378667,0.426602},{0.558389,0.378991,0.425175},{0.563937,0.379317,0.423722},{0.569504,0.379648,0.422267},{0.575126,0.379984,0.420807},{0.580790,0.380325,0.419345},{0.586496,0.380672,0.417860},{0.592251,0.381023,0.416371},{0.598033,0.381375,0.414871},{0.603878,0.381729,0.413368},{0.609753,0.382092,0.411849},{0.615676,0.382468,0.410336},{0.621644,0.382858,0.408797},{0.627665,0.383257,0.407260},{0.633729,0.383660,0.405726},{0.639835,0.384073,0.404170},{0.645983,0.384501,0.402616},{0.652186,0.384947,0.401076},{0.658430,0.385413,0.399501},{0.664720,0.385899,0.397959},{0.671065,0.386410,0.396398},{0.677455,0.386948,0.394848},{0.683877,0.387517,0.393300},{0.690355,0.388122,0.391767},{0.696877,0.388769,0.390232},{0.703442,0.389446,0.388729},{0.710045,0.390171,0.387222},{0.716690,0.390967,0.385745},{0.723361,0.391808,0.384300},{0.730077,0.392714,0.382885},{0.736813,0.393699,0.381501},{0.743578,0.394768,0.380152},{0.750358,0.395931,0.378850},{0.757152,0.397174,0.377604},{0.763951,0.398543,0.376424},{0.770753,0.400018,0.375287},{0.777544,0.401621,0.374250},{0.784314,0.403371,0.373272},{0.791048,0.405253,0.372388},{0.797746,0.407293,0.371603},{0.804395,0.409503,0.370926},{0.810973,0.411881,0.370362},{0.817473,0.414442,0.369920},{0.823879,0.417202,0.369609},{0.830181,0.420143,0.369436},{0.836353,0.423287,0.369406},{0.842390,0.426648,0.369526},{0.848263,0.430214,0.369804},{0.853968,0.433978,0.370247},{0.859490,0.437974,0.370858},{0.864803,0.442161,0.371642},{0.869899,0.446539,0.372604},{0.874767,0.451122,0.373748},{0.879389,0.455884,0.375054},{0.883761,0.460820,0.376553},{0.887860,0.465922,0.378203},{0.891692,0.471184,0.380033},{0.895246,0.476567,0.382020},{0.898512,0.482077,0.384174},{0.901498,0.487690,0.386470},{0.904197,0.493374,0.388928},{0.906618,0.499143,0.391507},{0.908756,0.504965,0.394202},{0.910625,0.510820,0.397017},{0.912225,0.516705,0.399943},{0.913575,0.522593,0.402968},{0.914675,0.528483,0.406078},{0.915540,0.534347,0.409251},{0.916190,0.540189,0.412504},{0.916636,0.546003,0.415797},{0.916889,0.551762,0.419152},{0.916963,0.557475,0.422534},{0.916874,0.563131,0.425965},{0.916636,0.568719,0.429427},{0.916264,0.574252,0.432909},{0.915775,0.579733,0.436411},{0.915186,0.585140,0.439927},{0.914509,0.590475,0.443461},{0.913754,0.595759,0.447003},{0.912931,0.600980,0.450565},{0.912059,0.606142,0.454139},{0.911148,0.611261,0.457722},{0.910211,0.616321,0.461331},{0.909249,0.621333,0.464954},{0.908289,0.626308,0.468602},{0.907326,0.631251,0.472281},{0.906374,0.636160,0.475986},{0.905445,0.641036,0.479732},{0.904539,0.645900,0.483509},{0.903673,0.650752,0.487354},{0.902853,0.655593,0.491251},{0.902079,0.660426,0.495194},{0.901366,0.665267,0.499209},{0.900717,0.670121,0.503303},{0.900141,0.674976,0.507492},{0.899641,0.679851,0.511757},{0.899223,0.684756,0.516121},{0.898892,0.689692,0.520598},{0.898654,0.694648,0.525185},{0.898515,0.699650,0.529889},{0.898480,0.704692,0.534713},{0.898551,0.709779,0.539663},{0.898735,0.714907,0.544759},{0.899033,0.720090,0.549990},{0.899448,0.725327,0.555359},{0.899981,0.730608,0.560882},{0.900635,0.735945,0.566560},{0.901414,0.741342,0.572384},{0.902319,0.746799,0.578354},{0.903350,0.752305,0.584490},{0.904502,0.757873,0.590772},{0.905785,0.763489,0.597217},{0.907189,0.769161,0.603808},{0.908714,0.774888,0.610543},{0.910365,0.780666,0.617427},{0.912129,0.786497,0.624458},{0.914016,0.792365,0.631624},{0.916005,0.798281,0.638924},{0.918116,0.804242,0.646354},{0.920324,0.810234,0.653908},{0.922640,0.816274,0.661585},{0.925046,0.822341,0.669369},{0.927548,0.828436,0.677263},{0.930142,0.834563,0.685252},{0.932811,0.840714,0.693336},{0.935565,0.846882,0.701504},{0.938387,0.853077,0.709763},{0.941274,0.859286,0.718088},{0.944228,0.865508,0.726484},{0.947235,0.871746,0.734943},{0.950290,0.877987,0.743453},{0.953394,0.884237,0.752011},{0.956533,0.890486,0.760613},{0.959709,0.896742,0.769246},{0.962913,0.902994,0.777919},{0.966140,0.909240,0.786616},{0.969388,0.915482,0.795324},{0.972654,0.921726,0.804056},{0.975921,0.927954,0.812794},{0.979202,0.934179,0.821550},{0.982484,0.940402,0.830308},{0.985762,0.946610,0.839070},{0.989038,0.952817,0.847836},{0.992307,0.959017,0.856609}}; static const double navia[256][3] = {{0.013420,0.075817,0.152989},{0.015121,0.080634,0.159960},{0.016255,0.085228,0.167073},{0.016803,0.089716,0.174205},{0.016961,0.093990,0.181411},{0.017336,0.098133,0.188743},{0.017703,0.102263,0.196117},{0.018058,0.106514,0.203551},{0.018404,0.110739,0.211044},{0.018742,0.114975,0.218604},{0.019071,0.119327,0.226230},{0.019395,0.123667,0.233875},{0.019714,0.128112,0.241609},{0.020031,0.132548,0.249362},{0.020346,0.137020,0.257176},{0.020663,0.141543,0.265003},{0.020984,0.146080,0.272884},{0.021310,0.150645,0.280769},{0.021644,0.155250,0.288708},{0.021990,0.159855,0.296649},{0.022349,0.164550,0.304590},{0.022726,0.169252,0.312535},{0.023123,0.173933,0.320514},{0.023543,0.178678,0.328453},{0.023992,0.183406,0.336383},{0.024471,0.188212,0.344302},{0.024987,0.192980,0.352204},{0.025542,0.197784,0.360075},{0.026143,0.202606,0.367909},{0.026794,0.207462,0.375703},{0.027501,0.212323,0.383455},{0.028270,0.217191,0.391145},{0.029108,0.222061,0.398763},{0.030020,0.226972,0.406327},{0.031016,0.231888,0.413802},{0.032099,0.236810,0.421189},{0.033282,0.241728,0.428497},{0.034665,0.246655,0.435701},{0.036177,0.251620,0.442789},{0.037711,0.256558,0.449756},{0.039376,0.261524,0.456594},{0.041190,0.266493,0.463294},{0.042961,0.271453,0.469870},{0.045066,0.276447,0.476271},{0.047153,0.281406,0.482514},{0.049396,0.286374,0.488587},{0.051602,0.291371,0.494481},{0.053996,0.296335,0.500174},{0.056570,0.301290,0.505677},{0.059155,0.306271,0.510984},{0.061738,0.311207,0.516069},{0.064526,0.316148,0.520947},{0.067354,0.321058,0.525594},{0.070218,0.325940,0.530009},{0.073219,0.330814,0.534182},{0.076127,0.335670,0.538131},{0.079162,0.340477,0.541813},{0.082310,0.345245,0.545267},{0.085333,0.349976,0.548472},{0.088490,0.354659,0.551417},{0.091644,0.359270,0.554118},{0.094766,0.363832,0.556572},{0.097864,0.368336,0.558778},{0.100919,0.372752,0.560753},{0.104007,0.377108,0.562497},{0.107081,0.381374,0.564002},{0.110099,0.385537,0.565273},{0.113065,0.389625,0.566351},{0.115972,0.393615,0.567218},{0.118845,0.397510,0.567882},{0.121615,0.401307,0.568363},{0.124403,0.404991,0.568671},{0.127118,0.408585,0.568816},{0.129840,0.412081,0.568808},{0.132441,0.415470,0.568659},{0.135022,0.418767,0.568380},{0.137551,0.421970,0.567982},{0.139985,0.425101,0.567475},{0.142452,0.428133,0.566866},{0.144870,0.431091,0.566160},{0.147220,0.433959,0.565369},{0.149576,0.436782,0.564516},{0.151851,0.439525,0.563597},{0.154137,0.442220,0.562611},{0.156434,0.444849,0.561566},{0.158673,0.447417,0.560478},{0.160888,0.449959,0.559346},{0.163114,0.452457,0.558172},{0.165274,0.454907,0.556983},{0.167499,0.457313,0.555739},{0.169695,0.459700,0.554492},{0.171844,0.462052,0.553207},{0.174021,0.464387,0.551920},{0.176160,0.466681,0.550603},{0.178369,0.468960,0.549279},{0.180492,0.471215,0.547940},{0.182644,0.473440,0.546595},{0.184823,0.475673,0.545236},{0.186971,0.477869,0.543872},{0.189125,0.480063,0.542508},{0.191270,0.482238,0.541130},{0.193440,0.484393,0.539754},{0.195587,0.486551,0.538389},{0.197750,0.488697,0.537010},{0.199899,0.490844,0.535616},{0.202078,0.492957,0.534235},{0.204288,0.495093,0.532857},{0.206475,0.497214,0.531468},{0.208638,0.499326,0.530082},{0.210837,0.501454,0.528697},{0.213030,0.503562,0.527302},{0.215251,0.505676,0.525907},{0.217492,0.507811,0.524508},{0.219733,0.509929,0.523111},{0.221968,0.512056,0.521697},{0.224223,0.514200,0.520288},{0.226532,0.516330,0.518887},{0.228826,0.518491,0.517467},{0.231132,0.520642,0.516028},{0.233434,0.522815,0.514608},{0.235808,0.524993,0.513165},{0.238158,0.527190,0.511714},{0.240527,0.529397,0.510260},{0.242938,0.531613,0.508803},{0.245362,0.533842,0.507323},{0.247837,0.536101,0.505829},{0.250281,0.538380,0.504350},{0.252797,0.540662,0.502829},{0.255325,0.542974,0.501320},{0.257852,0.545302,0.499775},{0.260437,0.547651,0.498247},{0.263045,0.550026,0.496671},{0.265674,0.552426,0.495106},{0.268327,0.554845,0.493511},{0.271026,0.557299,0.491915},{0.273750,0.559769,0.490291},{0.276504,0.562275,0.488653},{0.279291,0.564792,0.487000},{0.282108,0.567358,0.485321},{0.284940,0.569938,0.483632},{0.287830,0.572565,0.481933},{0.290758,0.575210,0.480205},{0.293713,0.577887,0.478456},{0.296725,0.580608,0.476693},{0.299755,0.583353,0.474918},{0.302814,0.586141,0.473100},{0.305952,0.588949,0.471290},{0.309104,0.591813,0.469452},{0.312267,0.594697,0.467584},{0.315523,0.597624,0.465694},{0.318795,0.600585,0.463804},{0.322118,0.603591,0.461886},{0.325473,0.606628,0.459945},{0.328904,0.609705,0.457993},{0.332367,0.612819,0.456024},{0.335866,0.615981,0.454041},{0.339437,0.619188,0.452047},{0.343048,0.622419,0.450027},{0.346709,0.625704,0.447996},{0.350441,0.629031,0.445960},{0.354216,0.632401,0.443930},{0.358071,0.635814,0.441885},{0.361985,0.639273,0.439829},{0.365969,0.642778,0.437786},{0.370017,0.646328,0.435739},{0.374165,0.649930,0.433689},{0.378375,0.653574,0.431684},{0.382682,0.657277,0.429670},{0.387076,0.661018,0.427695},{0.391586,0.664815,0.425736},{0.396188,0.668672,0.423819},{0.400915,0.672578,0.421948},{0.405747,0.676534,0.420141},{0.410710,0.680539,0.418384},{0.415800,0.684609,0.416716},{0.421036,0.688741,0.415117},{0.426430,0.692921,0.413622},{0.431996,0.697151,0.412238},{0.437712,0.701442,0.410969},{0.443601,0.705794,0.409842},{0.449678,0.710198,0.408859},{0.455945,0.714651,0.408050},{0.462409,0.719165,0.407425},{0.469094,0.723723,0.407003},{0.475974,0.728332,0.406801},{0.483066,0.732990,0.406834},{0.490390,0.737682,0.407121},{0.497935,0.742421,0.407680},{0.505675,0.747187,0.408529},{0.513668,0.751981,0.409686},{0.521853,0.756797,0.411156},{0.530269,0.761628,0.412971},{0.538886,0.766471,0.415116},{0.547692,0.771318,0.417631},{0.556690,0.776152,0.420499},{0.565854,0.780975,0.423745},{0.575184,0.785778,0.427379},{0.584655,0.790546,0.431376},{0.594246,0.795277,0.435745},{0.603948,0.799967,0.440475},{0.613718,0.804596,0.445574},{0.623571,0.809166,0.451034},{0.633452,0.813660,0.456821},{0.643349,0.818084,0.462930},{0.653247,0.822434,0.469371},{0.663131,0.826693,0.476077},{0.672961,0.830863,0.483052},{0.682722,0.834941,0.490287},{0.692413,0.838924,0.497751},{0.701988,0.842817,0.505395},{0.711468,0.846607,0.513248},{0.720806,0.850311,0.521252},{0.730018,0.853916,0.529404},{0.739078,0.857435,0.537670},{0.747979,0.860865,0.546036},{0.756716,0.864214,0.554480},{0.765293,0.867473,0.562995},{0.773690,0.870656,0.571548},{0.781928,0.873770,0.580146},{0.789985,0.876809,0.588748},{0.797871,0.879788,0.597375},{0.805587,0.882702,0.605980},{0.813135,0.885563,0.614576},{0.820517,0.888367,0.623153},{0.827735,0.891117,0.631684},{0.834795,0.893822,0.640175},{0.841696,0.896485,0.648607},{0.848439,0.899102,0.656986},{0.855036,0.901678,0.665289},{0.861480,0.904216,0.673526},{0.867785,0.906721,0.681675},{0.873943,0.909184,0.689751},{0.879964,0.911616,0.697724},{0.885854,0.914016,0.705609},{0.891606,0.916374,0.713389},{0.897231,0.918701,0.721062},{0.902724,0.920996,0.728629},{0.908093,0.923262,0.736080},{0.913337,0.925486,0.743425},{0.918458,0.927676,0.750645},{0.923468,0.929837,0.757743},{0.928353,0.931959,0.764721},{0.933130,0.934048,0.771578},{0.937802,0.936108,0.778308},{0.942365,0.938126,0.784921},{0.946819,0.940114,0.791406},{0.951178,0.942064,0.797775},{0.955439,0.943981,0.804030},{0.959606,0.945864,0.810165},{0.963686,0.947720,0.816201},{0.967690,0.949541,0.822128},{0.971611,0.951338,0.827953},{0.975464,0.953108,0.833700},{0.979259,0.954852,0.839361},{0.982996,0.956574,0.844951},{0.986688,0.958281,0.850479}}; view/src/draw.c000066400000000000000000000320461527407252600137370ustar00rootroot00000000000000/* Copyright 2015-2016. Martin Uecker. * All rights reserved. Use of this source code is governed by * a BSD-style license which can be found in the LICENSE file. * * Author: * 2015-2016 Martin Uecker */ #include #include #include #include #include "misc/misc.h" #include "geom/draw.h" #include "draw.h" #include "colormaps.inc" // multind.h #define MD_BIT(x) (1u << (x)) #define MD_IS_SET(x, y) ((x) & MD_BIT(y)) #define MD_CLEAR(x, y) ((x) & ~MD_BIT(y)) #define MD_SET(x, y) ((x) | MD_BIT(y)) static double clamp(double a, double b, double x) { return (x < a) ? a : ((x > b) ? b : x); } static double window(double a, double b, double x) { if (a == b) return (0. == x) ? 0. : 1.; return clamp(0., 1., (x - a) / (b - a)); } static void interpolate_cmap(double rgb[3], double x, const double cmap[256][3]) { int a = x * 255; int b = MIN(255, a + 1); double f = x * 255. - a; for (int i = 0; i < 3; ++i) rgb[i] *= cmap[a][i] + f * (cmap[b][i] - cmap[a][i]); } typedef const double color_table_t[256][3]; static color_table_t* ctables[] = { [VIRIDIS] = &viridis, [MYGBM] = &cyclic_mygbm, [TURBO] = &turbo, [LIPARI] = &lipari, [NAVIA] = &navia, }; static void trans_magnitude(double rgb[3], enum color_t ctab, double a, double b, complex double value) { double magn = window(a, b, cabs(value)); switch (ctab) { case NONE: rgb[0] *= magn; rgb[1] *= magn; rgb[2] *= magn; break; default: interpolate_cmap(rgb, magn, *ctables[ctab]); break; } } static void trans_real(double rgb[3], enum color_t /* ctab */, double a, double b, complex double value) { rgb[0] *= window(a, b, +creal(value)); rgb[1] *= window(a, b, -creal(value)); rgb[2] *= 0.; } static void trans_phase(double rgb[3], enum color_t ctab, double /*a*/, double /*b*/, complex double value) { double arg = carg(value); switch (ctab) { case MYGBM: double val = (arg + M_PI) / 2. / M_PI; assert((0.0 <= val) && (val <= 1.0)); interpolate_cmap(rgb, val, cyclic_mygbm); break; default: rgb[0] *= (1. + sin(arg + 0. * 2. * M_PI / 3.)) / 2.; rgb[1] *= (1. + sin(arg + 1. * 2. * M_PI / 3.)) / 2.; rgb[2] *= (1. + sin(arg + 2. * 2. * M_PI / 3.)) / 2.; break; } } static void trans_complex(double rgb[3], enum color_t ctab, double a, double b, complex double value) { trans_magnitude(rgb, NONE, a, b, value); trans_phase(rgb, ctab, a, b, value); } static void trans_flow(double rgb[3], enum color_t /* ctab */, double a, double b, complex double value) { trans_magnitude(rgb, NONE, a, b, value); double pha = clamp(-1., 1., carg(value) / M_PI); rgb[0] *= (1. + pha) / 2.; rgb[1] *= (1. - fabs(pha)) / 2.; rgb[2] *= (1. - pha) / 2.; } // we could move in the multiplication with the factor // as an extra argument which could save time static complex float int_nlinear(int N, const float x[N], const long strs[N], const complex float* in) { return (0 == N) ? in[0] : ( (1. - x[N - 1]) * int_nlinear(N - 1, x, strs, in + 0) + x[N - 1] * int_nlinear(N - 1, x, strs, in + strs[N - 1])); } static complex float int_nlinearmag(int N, const float x[N], const long strs[N], const complex float* in) { return (0 == N) ? cabsf(in[0]) : ( (1. - x[N - 1]) * int_nlinearmag(N - 1, x, strs, in + 0) + x[N - 1] * int_nlinearmag(N - 1, x, strs, in + strs[N - 1])); } static complex float int_nearest(int N, const float x[N], const long strs[N], const complex float* in) { size_t offs = 0; for (int i = 0; i < N; ++i) offs += round(x[i]) * strs[i]; return *(in + offs); } static complex float lic_sample(int N, const float pos[N], const long dims[N], const long strs[N], const complex float* in); complex float sample(int N, const float pos[N], const long dims[N], const long strs[N], enum interp_t interpolation, const complex float* in) { if (LIINCO == interpolation) return lic_sample(N, pos, dims, strs, in); float rem[N]; int div[N]; int D = 0; long strs2[N]; // 0 1. [0 1] dims 2 for (int i = 0; i < N; i++) { div[i] = 0; rem[i] = 0.; if (dims[i] > 1) { float xrem = 0.; // values outside of valid range set to the edge values if (pos[i] < 0.) { div[i] = 0.; } else if (pos[i] > (dims[i] - 1)) { div[i] = dims[i] - 1; } else { div[i] = truncf(pos[i]); xrem = pos[i] - truncf(pos[i]); } if (xrem != 0.) { strs2[D] = strs[i] / sizeof(complex float); rem[D++] = xrem; } if ((div[i] < 0) || (div[i] >= dims[i]) || ((div[i] >= dims[i] - 1) && (xrem > 0.))) return 0.; } } long off0 = 0; for (int i = 0; i < N; i++) off0 += div[i] * strs[i]; switch (interpolation) { case NLINEAR: return int_nlinear(D, rem, strs2, (const complex float*)(((char*)in) + off0)); case NLINEARMAG: return int_nlinearmag(D, rem, strs2, (const complex float*)(((char*)in) + off0)); case NEAREST: return int_nearest(D, rem, strs2, (const complex float*)(((char*)in) + off0)); default: assert(0); } } static complex float lic_hash(int p0, int p1) { p0 += 12345; p0 *= 2654435761U; p0 += p1; p0 += 12345; p0 *= 2654435761U; p0 ^= p0 >> 13; p0 *= 2654435761U; p0 ^= p0 >> 17; p0 *= 2654435761U; return (1. * (p0 % 256) + 1.i * ((p0 / 256) % 256)) / 256.; } // line integral convolution complex float lic_sample(int N, const float pos[N], const long dims[N], const long strs[N], const complex float* in) { int L = 9; float os = 3.; assert(N >= 2); assert(1 < dims[0]); assert(1 < dims[1]); complex float out = 0.; float pos1[N]; for (int i = 0; i < N; i++) pos1[i] = pos[i]; complex float val = sample(N, pos1, dims, strs, NLINEAR, in); for (int i = 0; i < L; i++) { complex float a = sample(N, pos1, dims, strs, NLINEAR, in); a /= cabsf(a); pos1[0] += crealf(a) / os; pos1[1] += cimagf(a) / os; int p0 = (int)(os * pos1[0]); int p1 = (int)(os * pos1[1]); out += lic_hash(p0, p1); } for (int i = 0; i < N; i++) pos1[i] = pos[i]; for (int i = 0; i < L; i++) { complex float a = sample(N, pos1, dims, strs, NLINEAR, in); a /= cabsf(a); pos1[0] -= crealf(a) / os; pos1[1] -= cimagf(a) / os; int p0 = (int)(os * pos1[0]); int p1 = (int)(os * pos1[1]); out += lic_hash(p0, p1); } return out * cabsf(val); } /* The idea is the following: * samples sit in the middle of their pixels, so for even zoom factors, * the original values are between adjacent pixels, with pixels outside * of the valid range (negative pos2 and pos2 greater than dim-1) set to the * corresponding values. Therefore we need to start the pos2 array at negative * positions. **/ extern void resample(int X, int Y, long str, complex float* buf, int N, const double pos[N], const double dx[N], const double dy[N], const long dims[N], const long strs[N], enum interp_t interpolation, const complex float* in) { #pragma omp parallel for collapse(2) for (int x = 0; x < X; x++) { for (int y = 0; y < Y; y++) { float pos2[N]; for (int i = 0; i < N; i++) { /* start is only != 0 if dx or dy are != 0. * Further, for negative dx/dy, it needs the same sign. * ....0.......1.... d (|d| - 1.) / 2. * |---*---|---*---| 1.00 -> -0.000 * |-*-|-*-|-*-|-*-| 0.50 -> -0.250 * |*|*|*|*|*|*|*|*| 0.25 -> -0.375 **/ double start = - (dx[i] != 0.) * copysign((fabs(dx[i]) - 1.) / 2., dx[i]) - (dy[i] != 0.) * copysign((fabs(dy[i]) - 1.) / 2., dy[i]); pos2[i] = pos[i] + start + x * dx[i] + y * dy[i]; } buf[str * y + x] = sample(N, pos2, dims, strs, interpolation, in); } } } extern void draw(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], enum mode_t mode, enum color_t ctab, float scale, float winlow, float winhigh, float phrot, long str, const complex float* buf) { #pragma omp parallel for collapse(2) for (int x = 0; x < X; x++) { for (int y = 0; y < Y; y++) { double rgb[3] = { 1., 1., 1. }; complex float val = scale * buf[str * y + x]; if (isfinite(crealf(val)) && isfinite(cimagf(val))) { val *= cexpf(1.i * phrot); switch (mode) { case MAGN: trans_magnitude(rgb, ctab, winlow, winhigh, val); break; case PHASE: trans_phase(rgb, ctab, winlow, winhigh, val); break; case CMPLX: trans_complex(rgb, ctab, winlow, winhigh, val); break; case REAL: trans_real(rgb, ctab, winlow, winhigh, val); break; case FLOW: trans_flow(rgb, ctab, winlow, winhigh, val); break; default: assert(0); } } else { rgb[0] = 0.; rgb[1] = 0.; rgb[2] = 0.; } (*rgbbuf)[y][x][0] = 255. * rgb[2]; (*rgbbuf)[y][x][1] = 255. * rgb[1]; (*rgbbuf)[y][x][2] = 255. * rgb[0]; (*rgbbuf)[y][x][3] = 255.; } } } void update_buf(long xdim, long ydim, int N, const long dims[N], const long strs[N], const long pos[N], enum flip_t flip, enum interp_t interpolation, double xzoom, double yzoom, bool plot, long rgbw, long rgbh, const complex float* data, complex float* buf) { if (plot) rgbh = 1; double dpos[N]; for (int i = 0; i < N; i++) dpos[i] = pos[i]; dpos[xdim] = 0.; if (!plot) dpos[ydim] = 0.; double dx[N]; for (int i = 0; i < N; i++) dx[i] = 0.; double dy[N]; for (int i = 0; i < N; i++) dy[i] = 0.; dx[xdim] = 1.; if (!plot) dy[ydim] = 1.; if ((XY == flip) || (XO == flip)) { dpos[xdim] = dims[xdim] - 1; dx[xdim] *= -1.; } if ((XY == flip) || (OY == flip)) { if (!plot) { dpos[ydim] = dims[ydim] - 1; dy[ydim] *= -1.; } } assert(xdim < N); assert(ydim < N); dx[xdim] = dx[xdim] / xzoom; dy[ydim] = dy[ydim] / yzoom; resample(rgbw, rgbh, rgbw, buf, N, dpos, dx, dy, dims, strs, interpolation, data); } const char color_white[3] = { 255, 255, 255 }; const char color_blue[3] = { 255, 0, 0 }; const char color_red[3] = { 0, 0, 255 }; extern void draw_line(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], float x0, float y0, float x1, float y1, const char (*color)[3]) { unsigned char color2[4] = { (*color)[0], (*color)[1], (*color)[2], 1 }; bresenham_rgba(Y, X, rgbbuf, &color2, y0, x0, y1, x1); } extern void draw_grid(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], const float (*coord)[4][2], int divs, const char (*color)[3]) { for (int i = 0; i <= divs; i++) { for (int j = 0; j <= divs; j++) { float x0 = (*coord)[0][0] + i * ((*coord)[1][0] - (*coord)[0][0]) / divs; float y0 = (*coord)[0][1] + i * ((*coord)[1][1] - (*coord)[0][1]) / divs; float x1 = (*coord)[2][0] + i * ((*coord)[3][0] - (*coord)[2][0]) / divs; float y1 = (*coord)[2][1] + i * ((*coord)[3][1] - (*coord)[2][1]) / divs; draw_line(X, Y, rgbstr, rgbbuf, x0, y0, x1, y1, color); x0 = (*coord)[0][0] + i * ((*coord)[2][0] - (*coord)[0][0]) / divs; y0 = (*coord)[0][1] + i * ((*coord)[2][1] - (*coord)[0][1]) / divs; x1 = (*coord)[1][0] + i * ((*coord)[3][0] - (*coord)[1][0]) / divs; y1 = (*coord)[1][1] + i * ((*coord)[3][1] - (*coord)[1][1]) / divs; draw_line(X, Y, rgbstr, rgbbuf, x0, y0, x1, y1, color); } } } extern void draw_plot(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], enum mode_t /* mode */, enum color_t /* ctab */, float scale, float winlow, float winhigh, float phrot, long str, const complex float* buf) { unsigned char bg[4] = { 255, 255, 255, 0 }; unsigned char half[4] = { 163, 163, 163, 255 }; assert(X == rgbstr / 4); assert(X == str); for (int i = 0; i < X; i++) for (int j = 0; j < Y; j++) for (int c = 0; c < 4; c++) (*rgbbuf)[j][i][c] = bg[c]; for (int i = 1; i < 10; i++) { bresenham_rgba(Y, X, rgbbuf, &half, 0, i * (X / 10), Y - 1, i * (X / 10)); bresenham_rgba(Y, X, rgbbuf, &half, i * (Y / 10), 0, i * (Y / 10), X - 1); } unsigned char colorr[4] = { 0, 0, 0, 255 }; unsigned char colori[4] = { 255, 255, 0, 255 }; for (int x = 0; x < X - 1; x++) { NESTED(double, trafo, (complex float val)) { complex float v2 = scale * val * cexpf(1.i * phrot); return window(winlow, winhigh, crealf(v2)) - window(winlow, winhigh, -crealf(v2)); }; float rx0 = (float)(x + 0); float ry0 = Y / 2 * (1. - trafo(buf[x + 0])); float rx1 = (float)(x + 1); float ry1 = Y / 2 * (1. - trafo(buf[x + 1])); xiaolin_wu_rgba(Y, X, rgbbuf, &colorr, ry0, rx0, ry1, rx1); float ix0 = (float)(x + 0); float iy0 = Y / 2 * (1. - trafo(1.i * buf[x + 0])); float ix1 = (float)(x + 1); float iy1 = Y / 2 * (1. - trafo(1.i * buf[x + 1])); xiaolin_wu_rgba(Y, X, rgbbuf, &colori, iy0, ix0, iy1, ix1); } } static const char* spec = "xyzcmnopqsfrtuvw"; char* construct_filename_view(unsigned int D, const long loopdims[D], const long pos[D], const char* prefix, const char* ext) { // Prepare output filename int len = 0; len += snprintf(NULL, 0, "%s", prefix); for (unsigned int i = 0; i < D; i++) if (1 != loopdims[i]) len += snprintf(NULL, 0, "_%c%04ld", spec[i], pos[i]); len += snprintf(NULL, 0, ".%s", ext); len++; char* name = xmalloc(len); int off = 0; off += snprintf(name + off, len - off, "%s", prefix); for (unsigned int i = 0; i < D; i++) if (1 != loopdims[i]) off += snprintf(name + off, len - off, "_%c%04ld", spec[i], pos[i]); off += snprintf(name + off, len - off, ".%s", ext); return name; } view/src/draw.h000066400000000000000000000032511527407252600137400ustar00rootroot00000000000000 #include #include #include "view.h" extern complex float sample(int N, const float pos[N], const long dims[N], const long strs[N], enum interp_t interpolation, const complex float* in); extern void resample(int X, int Y, long str, complex float* buf, int N, const double pos[N], const double dx[N], const double dy[N], const long dims[N], const long strs[N], enum interp_t interpolation, const complex float* in); extern void draw(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], enum mode_t mode, enum color_t ctab, float scale, float winlow, float winhigh, float phrot, long str, const complex float* buf); extern void draw_plot(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], enum mode_t mode, enum color_t ctab, float scale, float winlow, float winhigh, float phrot, long str, const complex float* buf); extern void update_buf(long xdim, long ydim, int N, const long dims[N], const long strs[N], const long pos[N], enum flip_t flip, enum interp_t interpolation, double xzoom, double yzoom, bool plot, long rgbw, long rgbh, const complex float* data, complex float* buf); extern void draw_line(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], float x0, float y0, float x1, float y1, const char (*color)[3]); extern void draw_grid(int X, int Y, int rgbstr, unsigned char (*rgbbuf)[Y][rgbstr / 4][4], const float (*coord)[4][2], int divs, const char (*color)[3]); extern const char color_white[3]; extern const char color_red[3]; extern const char color_blue[3]; extern char* construct_filename_view(unsigned int D, const long loopdims[D], const long pos[D], const char* prefix, const char* ext); view/src/gtk_ui.c000066400000000000000000000351661527407252600142720ustar00rootroot00000000000000/* Copyright 2015-2019. Martin Uecker. * Copyright 2023-2024. TU Graz. Institute of Biomedical Imaging. * All rights reserved. Use of this source code is governed by * a BSD-style license which can be found in the LICENSE file. */ #define _GNU_SOURCE #include #include #include #include #undef MIN #undef MAX #undef CLAMP #include #include #include "gtk_ui.h" #include "view.h" #include "misc/misc.h" #ifndef STRINGIFY #define STRINGIFY(x) # x #endif const char* viewer_gui = #include "viewer.inc" ; struct view_gtk_ui_s { // UI cairo_surface_t* source; // widgets GtkComboBox* gtk_mode; GtkComboBox* gtk_flip; GtkComboBox* gtk_interp; GtkWidget* gtk_drawingarea; GtkWidget* gtk_viewport; GtkAdjustment* gtk_winlow; GtkAdjustment* gtk_winhigh; GtkSpinButton* gtk_button_winlow; GtkSpinButton* gtk_button_winhigh; GtkToolItem* toolbar_scale1; GtkToolItem* toolbar_scale2; GtkToolItem* toolbar_button1; GtkToolItem* toolbar_button2; GtkAdjustment* gtk_zoom; GtkAdjustment* gtk_aniso; GtkEntry* gtk_entry; GtkToggleToolButton* gtk_transpose; GtkToggleToolButton* gtk_fit; GtkToggleToolButton* gtk_sync; GtkToggleToolButton* gtk_absolutewindowing; GtkAdjustment* gtk_posall[DIMS]; GtkCheckButton* gtk_checkall[DIMS]; GtkWidget *dialog; // Save dialog GtkFileChooser *chooser; // Save dialog GtkWindow *window; }; extern gboolean fit_callback(GtkWidget* /*widget*/, gpointer data) { struct view_s* v = data; if (!view_acquire(v, false)) return FALSE; ui_configure(v); view_release(v); return FALSE; } extern gboolean configure_callback(GtkWidget *widget, GdkEvent* /*event*/, gpointer data) { return fit_callback(widget, data); } extern gboolean geom_callback(GtkWidget* widget, gpointer data) { struct view_s* v = data; if (!view_acquire(v,false)) return FALSE; long pos[DIMS]; bool selected[DIMS]; for (int j = 0; j < DIMS; j++) { pos[j] = gtk_adjustment_get_value(v->ui->gtk_posall[j]); selected[j] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(v->ui->gtk_checkall[j])); } double zoom = gtk_adjustment_get_value(v->ui->gtk_zoom); if (GTK_IS_RANGE(widget) && (gtk_range_get_adjustment(GTK_RANGE(widget)) == v->ui->gtk_zoom)) gtk_toggle_tool_button_set_active(v->ui->gtk_fit, FALSE); double aniso = gtk_adjustment_get_value(v->ui->gtk_aniso); if (v->settings.plot && GTK_IS_RANGE(widget) && (gtk_range_get_adjustment(GTK_RANGE(widget)) == v->ui->gtk_aniso)) gtk_toggle_tool_button_set_active(v->ui->gtk_fit, FALSE); bool transpose = gtk_toggle_tool_button_get_active(v->ui->gtk_transpose); enum flip_t flip = gtk_combo_box_get_active(v->ui->gtk_flip); enum interp_t interp = gtk_combo_box_get_active(v->ui->gtk_interp); view_geom(v, selected, pos, zoom, aniso, transpose, flip, interp); view_release(v); return FALSE; } extern gboolean refresh_callback(GtkWidget* /*widget*/, gpointer data) { struct view_s* v = data; if (!view_acquire(v, false)) return FALSE; view_refresh(data); view_release(v); return FALSE; } extern gboolean window_callback(GtkWidget* /*widget*/, gpointer data) { struct view_s* v = data; enum mode_t mode = gtk_combo_box_get_active(v->ui->gtk_mode); double winlow = gtk_adjustment_get_value(v->ui->gtk_winlow); double winhigh = gtk_adjustment_get_value(v->ui->gtk_winhigh); if (!view_acquire(v, false)) return FALSE; view_window(v, mode, winlow, winhigh); view_release(v); return FALSE; } extern gboolean save_callback(GtkWidget* /*widget*/, gpointer data) { struct view_s* v = data; char* name = construct_filename_view2(v); v->ui->dialog = gtk_file_chooser_dialog_new("Save File", v->ui->window, GTK_FILE_CHOOSER_ACTION_SAVE, "Cancel", GTK_RESPONSE_CANCEL, "Save", GTK_RESPONSE_ACCEPT, NULL); v->ui->chooser = GTK_FILE_CHOOSER(v->ui->dialog); gtk_file_chooser_set_current_name(v->ui->chooser, basename(name)); char* dname = strdup(v->name); // Outputfolder = Inputfolder gtk_file_chooser_set_current_folder(v->ui->chooser, dirname(dname)); gtk_file_chooser_set_do_overwrite_confirmation(v->ui->chooser, TRUE); gint res = gtk_dialog_run(GTK_DIALOG(v->ui->dialog)); if (!view_acquire(v, true)) return FALSE; if (GTK_RESPONSE_ACCEPT == res) { // export single image char *filename = gtk_file_chooser_get_filename(v->ui->chooser); if (view_save_png(v, filename)) gtk_entry_set_text(v->ui->gtk_entry, "Error: writing image file.\n"); gtk_entry_set_text(v->ui->gtk_entry, "Saved!"); g_free(filename); } view_release(v); gtk_widget_destroy (v->ui->dialog); xfree(name); xfree(dname); return FALSE; } extern gboolean save_movie_callback(GtkWidget* /*widget*/, gpointer data) { struct view_s* v = data; v->ui->dialog = gtk_file_chooser_dialog_new("Export movie to folder", v->ui->window, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, "Cancel", GTK_RESPONSE_CANCEL, "Export", GTK_RESPONSE_ACCEPT, NULL); v->ui->chooser = GTK_FILE_CHOOSER(v->ui->dialog); char* dname = strdup(v->name); // Outputfolder = Inputfolder gtk_file_chooser_set_current_folder(v->ui->chooser, dirname(dname)); gint res = gtk_dialog_run(GTK_DIALOG (v->ui->dialog)); if (!view_acquire(v, true)) return FALSE; if (GTK_RESPONSE_ACCEPT == res) { char *chosen_dir = gtk_file_chooser_get_filename(v->ui->chooser); if (view_save_pngmovie(v, chosen_dir)) gtk_entry_set_text(v->ui->gtk_entry, "Movie exported."); else gtk_entry_set_text(v->ui->gtk_entry, "Movie export FAILED."); g_free(chosen_dir); } view_release(v); gtk_widget_destroy (v->ui->dialog); xfree(dname); return FALSE; } extern gboolean motion_callback(GtkWidget* /*widget*/, GdkEventMotion *event, gpointer data) { struct view_s* v = data; if (!view_acquire(v, false)) return FALSE; double inc_low = gtk_adjustment_get_step_increment(v->ui->gtk_winlow); double inc_high = gtk_adjustment_get_step_increment(v->ui->gtk_winhigh); view_motion(v, event->x, event->y, inc_low, inc_high, (event->state & GDK_BUTTON1_MASK) ? 1 : 0); view_release(v); return FALSE; } extern gboolean click_callback(GtkWidget* /*widget*/, GdkEventButton *event, gpointer data) { struct view_s* v = data; if (!view_acquire(v, false)) return FALSE; if (event->button == GDK_BUTTON_PRIMARY) view_click(v, event->x, event->y, 1); if (event->button == GDK_BUTTON_SECONDARY) view_click(v, event->x, event->y, 2); view_release(v); return FALSE; } extern gboolean show_hide_callback(GtkWidget *widget, GtkCheckButton* button) { gboolean flag = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(button)); (flag ? gtk_widget_show : gtk_widget_hide)(widget); return FALSE; } extern gboolean window_close_callback(GtkWidget* /*widget*/, GdkEvent* /*event*/, gpointer data) { struct view_s* v = data; view_window_close(v); return FALSE; } extern gboolean window_clone_callback(GtkWidget* /*widget*/, gpointer data) { struct view_s* v = data; view_window_clone(v); return FALSE; } extern gboolean draw_callback(GtkWidget* /*widget*/, cairo_t *cr, gpointer data) { struct view_s* v = data; view_acquire(v, true); view_draw(v); cairo_set_source_surface(cr, v->ui->source, 0, 0); cairo_paint(cr); view_release(v); return FALSE; } extern gboolean toggle_sync_callback(GtkToggleButton* /*button*/, gpointer data) { struct view_s* v = data; if (!view_acquire(v, true)) return FALSE; v->sync = gtk_toggle_tool_button_get_active(v->ui->gtk_sync); view_release(v); return FALSE; } extern gboolean toggle_plot_callback(GtkToggleButton* /*button*/, gpointer data) { struct view_s* v = data; if (!view_acquire(v, true)) return FALSE; view_toggle_plot(v); view_release(v); return FALSE; } extern gboolean toogle_absolute_windowing_callback(GtkToggleToolButton* button, gpointer data) { struct view_s* v = data; if (!view_acquire(v, true)) return FALSE; view_toggle_absolute_windowing(v, (TRUE == gtk_toggle_tool_button_get_active(button))); view_release(v); return FALSE; } static gboolean io_callback(GIOChannel * /* gio_channel */, GIOCondition giocondition, gpointer data) { struct io_callback_data* cb = data; if (G_IO_IN != giocondition) return FALSE; cb->f(cb->context); return TRUE; } extern void ui_configure(struct view_s *v) { gboolean flag = gtk_toggle_tool_button_get_active(v->ui->gtk_fit); if (!flag) return; GtkAllocation alloc; gtk_widget_get_allocation(v->ui->gtk_viewport, &alloc); view_fit(v, alloc.width, alloc.height); } void ui_trigger_redraw(struct view_s* v) { gtk_widget_queue_draw(v->ui->gtk_drawingarea); } void ui_rgbbuffer_disconnect(struct view_s* v) { if (NULL != v->ui->source) cairo_surface_destroy(v->ui->source); } void ui_rgbbuffer_connect(struct view_s* v, int rgbw, int rgbh, int rgbstr, unsigned char *buf) { gtk_widget_set_size_request(v->ui->gtk_drawingarea, rgbw, rgbh); v->ui->source = cairo_image_surface_create_for_data(buf, CAIRO_FORMAT_RGB24, rgbw, rgbh, rgbstr); } void ui_set_msg(struct view_s* v, const char* msg) { gtk_entry_set_text(v->ui->gtk_entry, msg); } void ui_window_new(struct view_s* v, int N, const long dims[N], const struct view_settings_s settings) { v->ui = xmalloc(sizeof(struct view_gtk_ui_s)); for (int i = 0; i < DIMS; i++) v->ui_params.selected[i] = (i == settings.xdim || i == settings.ydim); v->ui->source = NULL; GtkBuilder* builder = gtk_builder_new(); gtk_builder_add_from_string(builder, viewer_gui, -1, NULL); v->ui->gtk_drawingarea = GTK_WIDGET(gtk_builder_get_object(builder, "drawingarea1")); v->ui->gtk_viewport = GTK_WIDGET(gtk_builder_get_object(builder, "scrolledwindow1")); v->ui->gtk_winlow = GTK_ADJUSTMENT(gtk_builder_get_object(builder, "winlow")); v->ui->gtk_winhigh = GTK_ADJUSTMENT(gtk_builder_get_object(builder, "winhigh")); v->ui->gtk_entry = GTK_ENTRY(gtk_builder_get_object(builder, "entry")); v->ui->gtk_zoom = GTK_ADJUSTMENT(gtk_builder_get_object(builder, "zoom")); v->ui->gtk_aniso = GTK_ADJUSTMENT(gtk_builder_get_object(builder, "aniso")); v->ui->gtk_mode = GTK_COMBO_BOX(gtk_builder_get_object(builder, "mode")); gtk_combo_box_set_active(v->ui->gtk_mode, settings.mode); v->ui->gtk_flip = GTK_COMBO_BOX(gtk_builder_get_object(builder, "flip")); gtk_combo_box_set_active(v->ui->gtk_flip, settings.flip); v->ui->gtk_interp = GTK_COMBO_BOX(gtk_builder_get_object(builder, "interp")); gtk_combo_box_set_active(v->ui->gtk_interp, settings.interpolation); v->ui->gtk_transpose = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "transpose")); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(v->ui->gtk_transpose), TRUE); v->ui->gtk_fit = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "fit")); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(v->ui->gtk_fit), TRUE); v->ui->gtk_sync = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "sync")); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(v->ui->gtk_sync), v->sync ? TRUE : FALSE); v->ui->gtk_button_winlow = GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "scale1_button")); v->ui->gtk_button_winhigh = GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "scale2_button")); v->ui->toolbar_scale1 = GTK_TOOL_ITEM(gtk_builder_get_object(builder, "toolbar_scale1")); v->ui->toolbar_scale2 = GTK_TOOL_ITEM(gtk_builder_get_object(builder, "toolbar_scale2")); v->ui->toolbar_button1 = GTK_TOOL_ITEM(gtk_builder_get_object(builder, "toolbar_button1")); v->ui->toolbar_button2 = GTK_TOOL_ITEM(gtk_builder_get_object(builder, "toolbar_button2")); v->ui->gtk_absolutewindowing = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "abswindow")); gtk_toggle_tool_button_set_active(v->ui->gtk_absolutewindowing, settings.absolute_windowing ? TRUE : FALSE); for (int j = 0; j < DIMS; j++) { char pname[10]; snprintf(pname, 10, "pos%02d", j); v->ui->gtk_posall[j] = GTK_ADJUSTMENT(gtk_builder_get_object(builder, pname)); gtk_adjustment_set_upper(v->ui->gtk_posall[j], dims[j] - 1); snprintf(pname, 10, "check%02d", j); v->ui->gtk_checkall[j] = GTK_CHECK_BUTTON(gtk_builder_get_object(builder, pname)); } gtk_builder_connect_signals(builder, v); GtkWindow* window = GTK_WINDOW(gtk_builder_get_object(builder, "window1")); g_object_unref(G_OBJECT(builder)); v->ui->window = window; gtk_window_set_title(window, v->name); gtk_widget_show(GTK_WIDGET(window)); } void ui_init(int* argc_p, char** argv_p[]) { gtk_disable_setlocale(); gtk_init(argc_p, argv_p); } void ui_main() { gtk_main(); } void ui_loop_quit() { gtk_main_quit(); } void ui_add_io_callback(int fd, struct io_callback_data* cb) { GIOChannel* giochannel_strm = g_io_channel_unix_new(fd); g_io_add_watch(giochannel_strm, G_IO_IN | G_IO_HUP | G_IO_ERR, io_callback, cb); } bool gtk_ui_save_png(struct view_s* v, const char* filename) { return (CAIRO_STATUS_SUCCESS != cairo_surface_write_to_png(v->ui->source, filename)); } void ui_set_params(struct view_s* v, struct view_ui_params_s params, struct view_settings_s img_params) { for (int j = 0; j < DIMS; j++) { bool selected = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(v->ui->gtk_checkall[j])); if (selected != params.selected[j]) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(v->ui->gtk_checkall[j]), params.selected[j] ? TRUE : FALSE); gtk_adjustment_set_value(v->ui->gtk_posall[j], img_params.pos[j]); } gtk_adjustment_set_value(v->ui->gtk_zoom, params.zoom); gtk_adjustment_set_value(v->ui->gtk_aniso, params.aniso); gtk_widget_set_sensitive(GTK_WIDGET(v->ui->gtk_mode), img_params.plot ? FALSE : TRUE); gtk_adjustment_configure(v->ui->gtk_winhigh, img_params.winhigh, 0, params.windowing_max, params.windowing_inc, gtk_adjustment_get_page_increment(v->ui->gtk_winhigh), gtk_adjustment_get_page_size(v->ui->gtk_winhigh)); gtk_adjustment_configure(v->ui->gtk_winlow, img_params.winlow, 0, params.windowing_max, params.windowing_inc, gtk_adjustment_get_page_increment(v->ui->gtk_winlow), gtk_adjustment_get_page_size(v->ui->gtk_winlow)); gtk_spin_button_set_digits(v->ui->gtk_button_winhigh, params.windowing_digits); gtk_spin_button_set_digits(v->ui->gtk_button_winlow, params.windowing_digits); gtk_widget_set_visible(GTK_WIDGET(v->ui->toolbar_scale1), img_params.absolute_windowing ? FALSE : TRUE); gtk_widget_set_visible(GTK_WIDGET(v->ui->toolbar_scale2), img_params.absolute_windowing ? FALSE : TRUE); gtk_widget_set_visible(GTK_WIDGET(v->ui->toolbar_button1), img_params.absolute_windowing ? TRUE : FALSE); gtk_widget_set_visible(GTK_WIDGET(v->ui->toolbar_button2), img_params.absolute_windowing ? TRUE : FALSE); } view/src/gtk_ui.h000066400000000000000000000017171527407252600142720ustar00rootroot00000000000000 #include struct view_s; struct view_ui_params_s; struct view_settings_s; typedef void (*io_callback_function)(void *); struct io_callback_data { io_callback_function f; void* context; }; extern void ui_rgbbuffer_disconnect(struct view_s* v); extern void ui_rgbbuffer_connect(struct view_s* v, int rgbw, int rgbh, int rgbstr, unsigned char* buf); void ui_set_params(struct view_s* v, struct view_ui_params_s params, struct view_settings_s img_params); extern void ui_set_msg(struct view_s* v, const char* msg); extern void ui_window_new(struct view_s* v, int N, const long dims[N], const struct view_settings_s settings); extern void ui_main(); extern void ui_init(int* argc_p, char** argv_p[]); extern void ui_loop_quit(); extern void ui_configure(struct view_s* v); extern void ui_trigger_redraw(struct view_s* v); void ui_add_io_callback(int fd, struct io_callback_data* cb); extern bool gtk_ui_save_png(struct view_s* v, const char* filename); view/src/main.c000066400000000000000000000064051527407252600137260ustar00rootroot00000000000000/* Copyright 2015-2023. Martin Uecker. * Copyright 2023-2024. TU Graz. Institute of Biomedical Imaging. * All rights reserved. Use of this source code is governed by * a BSD-style license which can be found in the LICENSE file. */ #include #include #include "num/multind.h" #include "misc/misc.h" #include "misc/mmio.h" #include "misc/opts.h" #if defined __has_include #if __has_include ("misc/stream.h") #define HAS_BART_STREAM #endif #endif #if 0 #include "misc/io.h" #else extern void io_reserve_input(const char* name); extern void io_unregister(const char* name); #endif #include "view.h" #include "gtk_ui.h" static const char help_str[] = "View images."; int main(int argc, char* argv[argc]) { // unused was remove in newer versionf of bart, use it detect new version #ifdef UNUSED long count; #else int count; #endif const char** in_files; int realtime = -1; struct arg_s args[] = { ARG_TUPLE(true, &count, 1, { OPT_INFILE, sizeof(char*), &in_files, "image" }), }; bool absolute_windowing = false; enum color_t ctab = NONE;; const struct opt_s opts[] = { OPT_SET('a', &absolute_windowing, "Use absolute windowing"), OPT_SELECT('V', enum color_t, &ctab, VIRIDIS, "viridis"), OPT_SELECT('Y', enum color_t, &ctab, MYGBM, "MYGBM"), OPT_SELECT('T', enum color_t, &ctab, TURBO, "turbo"), OPT_SELECT('L', enum color_t, &ctab, LIPARI, "lipari"), OPT_SELECT('N', enum color_t, &ctab, NAVIA, "navia"), #ifdef HAS_BART_STREAM OPTL_INT(0, "real-time", &realtime, "n", "Realtime Input along axis n"), #endif }; cmdline(&argc, argv, ARRAY_SIZE(args), args, help_str, ARRAY_SIZE(opts), opts); // We initialize the UI after cmdline(), so that we can run '-h' without needing a display ui_init(&argc, &argv); struct view_s* v = NULL; for (int i = 0; i < count; i++) { long dims[DIMS]; /* * If the filename ends in ".hdr", ".cfl" or just "." (from * tab-completion), just replace the "." with a \0-character. * * Ignoring '.hdr' and '.cfl' is useful since now this viewer * can be set as the default program to open these files from * a file manager. */ io_unregister(in_files[i]); char* dot = strrchr(in_files[i], '.'); if ((NULL != dot) && ( !strcmp(dot, ".cfl") || !strcmp(dot, ".hdr") || !strcmp(dot, "."))) *dot = '\0'; io_reserve_input(in_files[i]); #ifdef HAS_BART_STREAM complex float* x = ((0 <= realtime) ? load_async_cfl : load_cfl)(in_files[i], DIMS, dims); #else complex float* x = load_cfl(in_files[i], DIMS, dims); #endif long pos[DIMS] = { 0 }; for (int i = 0; i < 3; i++) pos[i] = dims[i] / 2; #ifdef HAS_BART_STREAM // absolute windowing for realtime. avoids access to 'unsynced' // memory when calculating the windowing if (0 <= realtime) { absolute_windowing = true; // don't set position for streamed dimension. md_select_strides(DIMS, ~MD_BIT(realtime), pos, pos); } #endif // FIXME: we never delete them struct view_s* v2 = window_new(in_files[i], pos, dims, x, absolute_windowing, ctab, realtime); // If multiple files are passed on the commandline, add them to window // list. This enables sync of windowing and so on... if (NULL != v) { window_connect_sync(v, v2); } else { v = v2; } } ui_main(); return 0; } view/src/view.c000066400000000000000000000510361527407252600137540ustar00rootroot00000000000000/* Copyright 2015-2019. Martin Uecker. * Copyright 2023-2024. TU Graz. Institute of Biomedical Imaging. * All rights reserved. Use of this source code is governed by * a BSD-style license which can be found in the LICENSE file. */ #define _GNU_SOURCE #include #include #include #include #include #include #include "gtk_ui.h" #include "num/multind.h" #include "misc/misc.h" #include "misc/png.h" #include "misc/debug.h" #ifdef __has_include #if __has_include ("misc/stream.h") #define HAS_BART_STREAM #include "misc/stream.h" #endif #endif #include "draw.h" #include "view.h" #ifndef DIMS #define DIMS 16 #endif struct view_control_s { // change-management bool invalid; bool rgb_invalid; //data long dims[DIMS]; long strs[DIMS]; const complex float* data; int realtime; struct io_callback_data rt_callback; // interpolation buffer complex float* buf; // rgb buffer int rgbh; int rgbw; int rgbstr; unsigned char* rgb; // geometry unsigned long geom_flags; const float (*geom)[3][3]; const float (*geom_current)[3][3]; // windowing int lastx; int lasty; // misc bool status_bar; double max; mtx_t mx; bool transpose; }; static void view_window_nosync(struct view_s* v, enum mode_t mode, double winlow, double winhigh); static void view_geom2(struct view_s* v); #ifdef HAS_BART_STREAM static void add_rt_callback(struct view_s *ptr); static void view_ff_realtime_position(void *v); #endif #if 0 static void add_text(cairo_surface_t* surface, int x, int y, int size, const char* text) { cairo_t* cr = cairo_create(surface); cairo_set_source_rgb(cr, 1., 1., 1.); PangoLayout* layout = pango_cairo_create_layout(cr); pango_layout_set_text(layout, text, -1); PangoFontDescription* desc = pango_font_description_new(); pango_font_description_set_family(desc, "sans"); pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD); pango_font_description_set_absolute_size(desc, size * PANGO_SCALE); pango_layout_set_font_description(layout, desc); pango_font_description_free(desc); int w = 0; int h = 0; pango_layout_get_pixel_size(layout, &w, &h); cairo_move_to(cr, (x >= 0) ? x : -(x + (double)w), (y >= 0) ? y : -(y + (double)h)); pango_cairo_show_layout(cr, layout); g_object_unref(layout); cairo_destroy(cr); } #endif bool view_acquire(struct view_s* v, bool wait) { if (wait) mtx_lock(&v->control->mx); else if (0 != mtx_trylock(&v->control->mx)) return false; return true; } void view_release(struct view_s* v) { mtx_unlock(&v->control->mx); } void update_geom(struct view_s* v) { if (NULL == v->control->geom) return; long dims[DIMS]; md_select_dims(DIMS, v->control->geom_flags, dims, v->control->dims); long strs[DIMS]; md_calc_strides(DIMS, strs, dims, 1); v->control->geom_current = &v->control->geom[md_calc_offset(DIMS, strs, v->settings.pos)]; printf("%f %f %f %f %f %f %f %f %f\n", (*v->control->geom_current)[0][0], (*v->control->geom_current)[0][1], (*v->control->geom_current)[0][2], (*v->control->geom_current)[1][0], (*v->control->geom_current)[1][1], (*v->control->geom_current)[1][2], (*v->control->geom_current)[2][0], (*v->control->geom_current)[2][1], (*v->control->geom_current)[2][2]); } void view_sync(struct view_s* v) { for (struct view_s* v2 = v->next; v2 != v; v2 = v2->next) { if (v->sync && v2->sync) { view_acquire(v2, true); v2->settings.pos[v->settings.xdim] = v->settings.pos[v->settings.xdim]; v2->settings.pos[v->settings.ydim] = v->settings.pos[v->settings.ydim]; // if we have changed anything outside of the current x/y dims of v2, we need to reinterpolate // this is common when changing slices in 3D datasets if ((v2->settings.xdim != v->settings.xdim) || (v2->settings.ydim != v->settings.ydim)) v2->control->invalid = true; view_window_nosync(v2, v->settings.mode, v->settings.winlow, v->settings.winhigh); ui_set_params(v2, v2->ui_params, v2->settings); view_release(v2); } } } void view_refresh(struct view_s* v) { if (v->settings.absolute_windowing) { long idims[DIMS]; md_select_dims(DIMS, MD_BIT(v->settings.xdim) | MD_BIT(v->settings.ydim), idims, v->control->dims); complex float* tmp = md_alloc(DIMS, idims, sizeof(complex float)); long pos[DIMS]; md_copy_dims(DIMS, pos, v->settings.pos); pos[v->settings.xdim] = 0; pos[v->settings.ydim] = 0; md_slice(DIMS, ~(MD_BIT(v->settings.xdim) | MD_BIT(v->settings.ydim)), pos, v->control->dims, tmp, v->control->data, sizeof(complex float)); long size = md_calc_size(DIMS, idims); double max = 0.; for (long j = 0; j < size; j++) if (max < cabsf(tmp[j])) max = cabsf(tmp[j]); max = MIN(1.e10, max); md_free(tmp); if (0 == v->control->max) { v->settings.winhigh = max; v->control->max = max; } if (v->control->max < max) v->control->max = max; } else { long size = md_calc_size(DIMS, v->control->dims); double max = 0.; for (long j = 0; j < size; j++) if (max < cabsf(v->control->data[j])) max = cabsf(v->control->data[j]); max = MIN(1.e10, max); if (0. == max) max = 1.; v->control->max = max; } v->ui_params.windowing_max = v->control->max; ui_set_params(v, v->ui_params, v->settings); ui_trigger_redraw(v); } void view_add_geometry(struct view_s* v, unsigned long flags, const float (*geom)[3][3]) { v->control->geom_flags = flags; v->control->geom = geom; v->control->geom_current = NULL; update_geom(v); } void view_geom(struct view_s* v, const bool* selected, const long* pos, double zoom, double aniso, _Bool transpose, enum flip_t flip, enum interp_t interp) { for (int j = 0; j < DIMS; j++) { v->ui_params.selected[j] = selected[j]; v->settings.pos[j] = pos[j]; } v->ui_params.zoom = zoom; v->ui_params.aniso = aniso; v->control->transpose = transpose; v->settings.flip = flip; v->settings.interpolation = interp; view_geom2(v); } static void view_geom2(struct view_s* v) { for (int j = 0; j < DIMS; j++) { if (!v->ui_params.selected[j]) continue; if (1 == v->control->dims[j]) { v->ui_params.selected[j] = false; } else if ((j != v->settings.xdim) && (j != v->settings.ydim)) { for (int i = 0; i < DIMS; i++) { if (v->settings.xdim == (DIMS + j - i) % DIMS) { v->ui_params.selected[v->settings.xdim] = false; v->settings.xdim = j; break; } if (v->settings.ydim == (DIMS + j - i) % DIMS) { v->ui_params.selected[v->settings.ydim] = false; v->settings.ydim = j; break; } } } } v->ui_params.selected[v->settings.xdim] = true; v->ui_params.selected[v->settings.ydim] = true; v->settings.xzoom = v->ui_params.zoom * v->ui_params.aniso; v->settings.yzoom = v->ui_params.zoom; if (v->control->transpose) { if (v->settings.xdim < v->settings.ydim) { int swp = v->settings.xdim; v->settings.xdim = v->settings.ydim; v->settings.ydim = swp; } } else { if (v->settings.xdim > v->settings.ydim) { int swp = v->settings.xdim; v->settings.xdim = v->settings.ydim; v->settings.ydim = swp; } } v->control->lastx = -1; v->control->lasty = -1; v->control->invalid = true; update_geom(v); ui_set_params(v, v->ui_params, v->settings); ui_trigger_redraw(v); } static void view_window_nosync(struct view_s* v, enum mode_t mode, double winlow, double winhigh) { v->settings.mode = mode; v->settings.winlow = winlow; v->settings.winhigh = winhigh; v->control->rgb_invalid = true; ui_trigger_redraw(v); } void view_window(struct view_s* v, enum mode_t mode, double winlow, double winhigh) { view_window_nosync(v, mode, winlow, winhigh); view_sync(v); } static void update_buf_view(struct view_s* v) { update_buf(v->settings.xdim, v->settings.ydim, DIMS, v->control->dims, v->control->strs, v->settings.pos, v->settings.flip, v->settings.interpolation, v->settings.xzoom, v->settings.yzoom, v->settings.plot, v->control->rgbw, v->control->rgbh, v->control->data, v->control->buf); } char *construct_filename_view2(struct view_s* v) { long loopdims[DIMS]; md_select_dims(DIMS, ~(MD_BIT(v->settings.xdim) | MD_BIT(v->settings.ydim)), loopdims, v->control->dims); return construct_filename_view(DIMS, loopdims, v->settings.pos, v->name, "png"); } bool view_save_png(struct view_s* v, const char *filename) { return gtk_ui_save_png(v, filename); } bool view_save_pngmovie(struct view_s* v, const char *folder) { int frame_dim = 10; for (int f = 0; f < v->control->dims[frame_dim]; f++) { v->settings.pos[frame_dim] = f; update_buf_view(v); draw(v->control->rgbw, v->control->rgbh, v->control->rgbstr, (unsigned char(*)[v->control->rgbw][v->control->rgbstr / 4][4])v->control->rgb, v->settings.mode, v->settings.colortable, 1. / v->control->max, v->settings.winlow, v->settings.winhigh, v->settings.phrot, v->control->rgbw, v->control->buf); char output_name[256]; int len = snprintf(output_name, 256, "%s/mov-%04d.png", folder, f); if (len + 1 >= (int)sizeof(output_name)) { ui_set_msg(v, "Error: writing image file.\n"); goto fail; } if (gtk_ui_save_png(v, output_name)) { ui_set_msg(v, "Error: writing image file.\n"); goto fail; } } return true; fail: return false; } struct xy_s { float x; float y; }; static struct xy_s pos2screen(const struct view_s* v, const float pos[DIMS]) { float x = pos[v->settings.xdim]; float y = pos[v->settings.ydim]; if ((XY == v->settings.flip) || (XO == v->settings.flip)) x = v->control->dims[v->settings.xdim] - 1 - x; if ((XY == v->settings.flip) || (OY == v->settings.flip)) y = v->control->dims[v->settings.ydim] - 1 - y; // shift to the center of pixels x += 0.5; y += 0.5; x *= v->settings.xzoom; y *= v->settings.yzoom; if (v->settings.plot) y = v->control->rgbh / 2; return (struct xy_s){ x, y }; } static void screen2pos(const struct view_s* v, float (*pos)[DIMS], struct xy_s xy) { for (int i = 0; i < DIMS; i++) (*pos)[i] = v->settings.pos[i]; float x = xy.x / v->settings.xzoom - 0.5; float y = xy.y / v->settings.yzoom - 0.5; if ((XY == v->settings.flip) || (XO == v->settings.flip)) x = v->control->dims[v->settings.xdim] - 1 - x; if ((XY == v->settings.flip) || (OY == v->settings.flip)) y = v->control->dims[v->settings.ydim] - 1 - y; (*pos)[v->settings.xdim] = roundf(x); if (!v->settings.plot) (*pos)[v->settings.ydim] = roundf(y); } static void clear_status_bar(struct view_s* v) { char buf = '\0'; ui_set_msg(v, &buf); } static void update_status_bar(struct view_s* v) { int x2 = v->settings.pos[v->settings.xdim]; int y2 = v->settings.pos[v->settings.ydim]; float posf[DIMS]; for (int i = 0; i < DIMS; i++) posf[i] = v->settings.pos[i]; complex float val = sample(DIMS, posf, v->control->dims, v->control->strs, v->settings.interpolation, v->control->data); // FIXME: make sure this matches exactly the pixel char buf[100]; snprintf(buf, 100, "Pos: %03d %03d Magn: %.3e Val: %+.3e%+.3ei Arg: %+.2f", x2, y2, cabsf(val), crealf(val), cimagf(val), cargf(val)); ui_set_msg(v, buf); } void view_draw(struct view_s* v) { v->control->rgbw = MAX(1L, v->control->dims[v->settings.xdim] * v->settings.xzoom); v->control->rgbh = MAX(1L, v->control->dims[v->settings.ydim] * v->settings.yzoom); v->control->rgbstr = 4 * v->control->rgbw; if (v->control->invalid) { v->control->buf = realloc(v->control->buf, v->control->rgbh * v->control->rgbw * sizeof(complex float)); update_buf_view(v); v->control->invalid = false; v->control->rgb_invalid = true; } if (v->control->rgb_invalid) { ui_rgbbuffer_disconnect(v); void *newbuf = realloc(v->control->rgb, v->control->rgbh * v->control->rgbstr); if (NULL == newbuf) abort(); v->control->rgb = newbuf; ui_rgbbuffer_connect(v, v->control->rgbw, v->control->rgbh, v->control->rgbstr, v->control->rgb); (v->settings.plot ? draw_plot : draw)(v->control->rgbw, v->control->rgbh, v->control->rgbstr, (unsigned char(*)[v->control->rgbw][v->control->rgbstr / 4][4])v->control->rgb, v->settings.mode, v->settings.colortable, v->settings.absolute_windowing ? 1. : 1. / v->control->max, v->settings.winlow, v->settings.winhigh, v->settings.phrot, v->control->rgbw, v->control->buf); v->control->rgb_invalid = false; } // add_text(v->ui->source, 3, 3, 10, v->name); if (v->settings.cross_hair) { float posf[DIMS]; for (int i = 0; i < DIMS; i++) posf[i] = v->settings.pos[i]; struct xy_s xy = pos2screen(v, posf); draw_line(v->control->rgbw, v->control->rgbh, v->control->rgbstr, (unsigned char (*)[v->control->rgbw][v->control->rgbstr / 4][4])v->control->rgb, 0, (int)xy.y, v->control->rgbw - 1, (int)xy.y, (v->settings.xdim > v->settings.ydim) ? &color_red : &color_blue); draw_line(v->control->rgbw, v->control->rgbh, v->control->rgbstr, (unsigned char (*)[v->control->rgbw][v->control->rgbstr / 4][4])v->control->rgb, (int)xy.x, 0, (int)xy.x, v->control->rgbh - 1, (v->settings.xdim < v->settings.ydim) ? &color_red : &color_blue); // float coords[4][2] = { { 0, 0 }, { 100, 0 }, { 0, 100 }, { 100, 100 } }; // draw_grid(v->control->rgbw, v->control->rgbh, v->control->rgbstr, (unsigned char (*)[v->control->rgbw][v->control->rgbstr / 4][4])v->control->rgb, &coords, 4, &color_white); } if (v->control->status_bar) update_status_bar(v); } struct view_s* create_view(const char* name, const long pos[DIMS], const long dims[DIMS], const complex float* data) { long sq_dims[2] = { 0 }; int l = 0; for (int i = 0; (i < DIMS) && (l < 2); i++) if (1 != dims[i]) sq_dims[l++] = i; if (1 == l) sq_dims[l++] = 0 == sq_dims[0] ? 1 : 0; assert(2 == l); struct view_s* v = xmalloc(sizeof(struct view_s)); v->control = xmalloc(sizeof(struct view_control_s)); v->ui_params.selected = xmalloc(sizeof(bool[DIMS])); v->settings.pos = xmalloc(DIMS * sizeof(long)); v->next = v->prev = v; v->sync = true; v->name = name; v->ui = NULL; v->settings.mode = MAGN; v->settings.interpolation = NLINEAR; v->settings.colortable = NONE; v->settings.flip = OO; v->settings.cross_hair = false; v->settings.plot = false; v->settings.xzoom = 2.; v->settings.yzoom = 2.; v->settings.xdim = sq_dims[0]; v->settings.ydim = sq_dims[1]; v->settings.winlow = 0.; v->settings.winhigh = 1.; v->settings.phrot = 0.; for (int i = 0; i < DIMS; i++) { v->settings.pos[i] = (NULL == pos) ? 0 : pos[i]; v->ui_params.selected[i] = false; } v->ui_params.selected[v->settings.xdim] = true; v->ui_params.selected[v->settings.ydim] = true; v->ui_params.zoom = 2; md_copy_dims(DIMS, v->control->dims, dims); md_calc_strides(DIMS, v->control->strs, dims, sizeof(complex float)); v->control->data = data; v->control->rgb = NULL; v->control->buf = NULL; v->control->status_bar = false; v->control->max = 0.; v->control->geom_flags = 0ul; v->control->geom = NULL; v->control->geom_current = NULL; v->control->lastx = -1; v->control->lasty = -1; v->ui_params.aniso = 1; v->control->transpose = true; v->control->invalid = true; mtx_init(&v->control->mx, mtx_plain); return v; } static void delete_view(struct view_s* v) { v->next->prev = v->prev; v->prev->next = v->next; free(v->control->buf); free(v->control->rgb); free(v->ui_params.selected); mtx_destroy(&v->control->mx); #if 0 free(v->settings.pos); //free(v); #endif } static void view_set_windowing(struct view_s* v) { double max = v->settings.absolute_windowing ? v->control->max : 1.; max = MIN(1.e10, max); v->ui_params.windowing_max = max; v->ui_params.windowing_inc = exp(log(10) * round(log(max) / log(10.))) * 0.001; v->ui_params.windowing_digits = MAX(3, 3 - (int)round(log(max) / log(10.))); } void view_toggle_absolute_windowing(struct view_s* v, bool state) { if (state && v->settings.absolute_windowing) return; if (v->settings.absolute_windowing) { long size = md_calc_size(DIMS, v->control->dims); double max = 0.; for (long j = 0; j < size; j++) if (max < cabsf(v->control->data[j])) max = cabsf(v->control->data[j]); max = MIN(1.e10, max); if (0. == max) max = 1.; v->control->max = max; v->settings.winhigh = MIN(v->settings.winhigh / v->control->max, 1); v->settings.winlow = MIN(v->settings.winlow / v->control->max, 1); v->settings.absolute_windowing = false; } else { v->settings.winhigh *= v->control->max; v->settings.winlow *= v->control->max; v->settings.absolute_windowing = true; } view_set_windowing(v); ui_set_params(v, v->ui_params, v->settings); } static void view_set_position(struct view_s* v, float pos[DIMS]) { v->settings.pos[v->settings.xdim] = pos[v->settings.xdim]; v->settings.pos[v->settings.ydim] = pos[v->settings.ydim]; ui_set_params(v, v->ui_params, v->settings); view_sync(v); } void view_click(struct view_s* v, int x, int y, int button) { struct xy_s xy = { x, y }; float pos[DIMS]; screen2pos(v, &pos, xy); if (1 == button) { v->settings.cross_hair = false; v->control->status_bar = false; clear_status_bar(v); } if (2 == button) { v->settings.cross_hair = true; v->control->status_bar = true; view_set_position(v, pos); } v->control->rgb_invalid = true; ui_trigger_redraw(v); } void view_motion(struct view_s* v, int x, int y, double inc_low, double inc_high, int button) { bool changed = false; if (0 == button) { v->control->lastx = -1; v->control->lasty = -1; return; } if (1 == button) { if (-1 != v->control->lastx) { double low = v->settings.winlow; double high = v->settings.winhigh; low -= (x - v->control->lastx) * inc_low * 5; high -= (y - v->control->lasty) * inc_high * 5; if (high > low) { v->settings.winlow = MAX(0, low); v->settings.winhigh = MIN(v->ui_params.windowing_max, high); changed = true; } } v->control->lastx = x; v->control->lasty = y; } if (changed) { ui_set_params(v, v->ui_params, v->settings); view_window(v, v->settings.mode, v->settings.winlow, v->settings.winhigh); } } static int nr_windows = 0; void view_window_close(struct view_s* v) { delete_view(v); if (0 == --nr_windows) ui_loop_quit(); } struct view_s* window_new(const char* name, const long pos[DIMS], const long dims[DIMS], const complex float* x, bool absolute_windowing, enum color_t ctab, int realtime) { struct view_s* v = create_view(name, pos, dims, x); view_acquire(v, true); v->settings.absolute_windowing = absolute_windowing; v->settings.colortable = ctab; ui_window_new(v, DIMS, dims, v->settings); nr_windows++; ui_configure(v); view_refresh(v); view_geom2(v); view_set_windowing(v); view_window(v, v->settings.mode, v->settings.winlow, v->settings.winhigh); ui_set_params(v, v->ui_params, v->settings); v->control->realtime = realtime; #ifdef HAS_BART_STREAM if (0 <= realtime) { view_ff_realtime_position(v); add_rt_callback(v); } #endif view_release(v); return v; } void window_connect_sync(struct view_s* v, struct view_s* v2) { // add to linked list for sync v2->next = v->next; v->next->prev = v2; v2->prev = v; v->next = v2; // set windowing view_window(v, v->settings.mode, v->settings.winlow, v->settings.winhigh); } struct view_s* view_window_clone(struct view_s* v) { struct view_s* v2 = window_new(v->name, v->settings.pos, v->control->dims, v->control->data, v->settings.absolute_windowing, v->settings.colortable, v->control->realtime); window_connect_sync(v, v2); return v2; } void view_fit(struct view_s* v, int width, int height) { double xz = (double)(width - 5) / (double)v->control->dims[v->settings.xdim]; double yz = (double)(height - 5) / (double)v->control->dims[v->settings.ydim]; if (v->settings.plot) v->ui_params.aniso = xz / yz; if (yz > xz / v->ui_params.aniso) yz = xz / v->ui_params.aniso; // aniso v->ui_params.zoom = yz; view_geom2(v); } void view_toggle_plot(struct view_s* v) { v->settings.plot = !v->settings.plot; v->control->invalid = true; ui_set_params(v, v->ui_params, v->settings); ui_trigger_redraw(v); } #ifdef HAS_BART_STREAM static void view_ff_realtime_position(void *_v) { struct view_s* v = _v; struct view_control_s* control = v->control; stream_t s = stream_lookup(control->data); if (NULL == s) return; stream_fetch(s); long pos[DIMS] = { 0 }; stream_get_latest_pos(s, DIMS, pos); long new_pos = pos[control->realtime]; if (new_pos > v->settings.pos[control->realtime]) { v->settings.pos[control->realtime] = new_pos; ui_set_params(v, v->ui_params, v->settings); view_sync(v); control->rgb_invalid = true; view_refresh(v); } } static void add_rt_callback(struct view_s *v) { stream_t s = stream_lookup(v->control->data); if (NULL == s) return; int fd = stream_get_fd(s); if (0 <= fd) { v->control->rt_callback.context = v; v->control->rt_callback.f = view_ff_realtime_position; ui_add_io_callback(fd, &v->control->rt_callback); } } #endif view/src/view.h000066400000000000000000000047351527407252600137650ustar00rootroot00000000000000#ifndef VIEW_VIEW_H #define VIEW_VIEW_H #ifndef DIMS #define DIMS 16 #endif #include enum mode_t { MAGN, CMPLX, PHASE, REAL, FLOW }; enum flip_t { OO, XO, OY, XY }; enum interp_t { NLINEAR, NLINEARMAG, NEAREST, LIINCO }; enum color_t { NONE, VIRIDIS, MYGBM, TURBO, LIPARI, NAVIA }; struct view_settings_s { long* pos; //[DIMS]; int xdim; int ydim; double xzoom; double yzoom; enum flip_t flip; enum mode_t mode; bool cross_hair; bool plot; bool absolute_windowing; double winhigh; double winlow; double phrot; enum interp_t interpolation; enum color_t colortable; }; struct view_ui_params_s { bool* selected; double zoom; double aniso; int windowing_digits; double windowing_max; double windowing_inc; }; struct view_s { const char* name; struct view_control_s* control; struct view_gtk_ui_s* ui; struct view_settings_s settings; struct view_ui_params_s ui_params; // multi-window struct view_s* next; struct view_s* prev; bool sync; }; // setup etc extern struct view_s* window_new(const char* name, const long pos[DIMS], const long dims[DIMS], const _Complex float* x, _Bool absolute_windowing, enum color_t ctab, int realtime); extern void window_connect_sync(struct view_s* a, struct view_s* b); // usually callbacks: extern void view_fit(struct view_s* v, int width, int height); extern void view_geom(struct view_s* v, const bool* selected, const long* pos, double zoom, double aniso, _Bool transpose, enum flip_t flip, enum interp_t interp); extern void view_refresh(struct view_s* v); extern void view_window(struct view_s* v, enum mode_t mode, double winlow, double winhigh); extern void view_draw(struct view_s* v); extern bool view_save_png(struct view_s* v, const char *filename); extern bool view_save_pngmovie(struct view_s* v, const char *folder); extern void view_motion(struct view_s* v, int x, int y, double inc_low, double inc_high, int button); extern void view_click(struct view_s* v, int x, int y, int button); extern void view_toggle_plot(struct view_s* v); extern void view_toggle_absolute_windowing(struct view_s* v, _Bool state); extern void view_add_geometry(struct view_s* v, unsigned long flags, const float (*geom)[3][3]); extern struct view_s* view_window_clone(struct view_s* v); extern void view_window_close(struct view_s* v); // extern _Bool view_acquire(struct view_s* v, _Bool wait); extern void view_release(struct view_s* v); // helpers extern char *construct_filename_view2(struct view_s* v); #endif view/src/viewer.ui000066400000000000000000001673071527407252600145070ustar00rootroot00000000000000 10 1 0.10000000000000001 1 MAGNITUDE COMPLEX PHASE REAL FLOW 00 X0 0Y XY NLIN NLINMAG NEAREST LIINCO 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 10 1 1 0.001 0.050000000000000003 1 0.001 0.050000000000000003 10 2 0.10000000000000001 1 False 600 600 True False vertical True False icons True False True True True True False gtk-new False True True False True False liststore1 0 0 False True True False fit True gtk-zoom-fit False True True False True False start liststore2 0 0 False True True False True False start liststore3 0 0 False True True False transpose True gtk-page-setup False True True False True True True True False gtk-save False True True False True True True True False media-record False True True False Refresh True gtk-refresh False True True False sync True gtk-disconnect False True True False plot True gtk-select-color False True True False absolute windowing True gtk-index False True False True 0 200 True False 100 True False start 100 True True True start winlow 1 3 3 right False True 100 False False start True True winlow 3 False False True 100 True False start 100 True True True start winhigh 1 3 3 right False True 100 False False start True True winhigh 3 False False True 100 True False start True True zoom 10 1 right False True 100 True False start True True aniso 10 1 right False True True False False True True False True True True False False True True False showpos True gtk-preferences False True False True 1 True False True True in 100 100 True False True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK True True 0 True end in 150 200 True False end True False True True False 0 True 0 0 1 1 True True 0 pos00 1 0 1 1 True True 0 pos01 1 1 1 1 True True 0 pos02 1 2 1 1 True True 0 pos03 1 3 1 1 True True 0 pos04 1 4 1 1 True True 0 pos05 1 5 1 1 True True 0 pos06 1 6 1 1 True True 0 pos07 1 7 1 1 True True 0 pos08 1 8 1 1 True True 0 pos09 1 9 1 1 True True 0 pos10 1 10 1 1 True True 0 pos11 1 11 1 1 True True 0 pos12 1 12 1 1 True True 0 pos13 1 13 1 1 True True 0 pos14 1 14 1 1 True True 0 pos15 1 15 1 1 True True False 0 True 0 1 1 1 True True False 0 True 0 2 1 1 True True False 0 True 0 3 1 1 True True False 0 True 0 4 1 1 True True False 0 True 0 5 1 1 True True False 0 True 0 6 1 1 True True False 0 True 0 7 1 1 True True False 0 True 0 8 1 1 True True False 0 True 0 9 1 1 True True False 0 True 0 10 1 1 True True False 0 True 0 11 1 1 True True False 0 True 0 12 1 1 True True False 0 True 0 13 1 1 True True False 0 True 0 14 1 1 True True False 0 True 0 15 1 1 False True end 1 True True 2 True True False False True 3 view/viewer.png000066400000000000000000003452151527407252600140630ustar00rootroot00000000000000‰PNG  IHDRZr¤n±sBIT|dˆ IDATxœì�w|ÅÙø¿»{U½W÷*÷‚mŒ6¸°©†`lši©¿Þ�/�@HÞÞ—ÐÁzu0Õƒ{ÁƸâ.[½_Ýòûãtç;é$ÝÙ’,Éóýè>ºÛ™�yfŸ™Ùggž™•¨ÃØ)óŒºÇ�@ M³îó÷¤àß�c§Ì3\n/¥e¸=ÞÖ—L � cµ˜IINÄf5 . |FVUµ“¢’2$Ij<�@ AX à =5™ø8;ë>O’TU£¸´\Y�@ g�$I—–£ªšï÷Ø)óŒ’Ò *«çX4�@ ‚ŽAB\ ©)‰˜.w½f“ă¿û:JT ËhÜ÷ðÿàU…O½@ ‚ó§Ûà3´4M¯A‘%¬iy¼½âû:!R� }]$®š”‡"Kx†– t �@–h¤‚ "Ä0t$ I.�@º®¡«^d“YV"«‹êÐ>Ç­pŒÔ™NYÉQ Ø)-.ªø‚óÃ@sU"›md¥%"I…eN|f2ürZc‘dÓ¹–æ4 Èe:ñ6q1fjœ^*�ZDÆ–®ºAבMV�å3’E74$©áÎÇd‹G÷:ÑU/Ô>ŒI² Ùb”A÷Ô4nèš»:lÚ²%Y1ƒ¡£yšoõ´¤˜}×(¸Nµ7y‚6Žæõàu×`¶Æ¢˜-­.ƒ³ª$¢xöøÔÃt]Ãn†¹óæ°lùçT:<(&_Y4ÕCb¬…YÓ§óþ²OpzµF�-¿mÕè]#7-Ž.™‰ îGÓ´¨â ÎS  .^Yú"ÿýðc,ÿè-EaèÈñVzÚÎ(L�œýùoìÜ{¨m[�È¥{œüøg?æ'w-æÅ—ÿŽ<ŠbmüHWÝÌ™:�ÔÔ¾X¹ŽüÂòÈ�­€,/�×§7ûþÐ`ÔÛïú‹n¼�K/™@Zj*‡“={÷ñÄÿ>Ã÷?ÇP=üê§áÃw8F�ΙüåOÿ6í§ž~‘/¿ÚHr¼�_ýö.5‹Åª5_ñØãÿ F7ùŒ—ö&¯@ÐÆQ=.㬼ô¯W0 ƒ›ïøÕ.L[«ËRzb_£á)¹} ×5/sçÍáo�>È·.䲫o¤¼Ú@r¼�Þ\BŸÞ=1 ƒ¥ïü§ÉQ-hÂÐÒu #Ê)@C¯? )ÔÅЋÕLïž=BÊ•žžÀKK^CÑ=¼½t)ýûå±ìãO1) ·Ý|#y}{sÕõ7c²'µ;yBWݪI’QÌ1㸱vI¸@)ª×Mbœ•÷ßXBÿ~}xÿ�%̽v!5nLfk)´-ŲåŸsÇ­ éÓ»'¾õ —]}#’$Œ¬}û²lùç(Š9¢45´TMM�RLÑXM£kfN›ÌªÕëp-ÆÈÌÈàî;o#+3ƒO>û’w?úÙë;ÇUÁµW]ÎèQ#±Ù­ìÞ½——¼†CSÐ=Nüý¯xãÍw¸iÑ ÄÆÄðÜK¯päÈ1~~ϯÉHOcÙÇŸ²ìÓUÈ–˜Ú4+¹úŠÙ\tá(lvÛ¶íàÅWþ�nöMÝËév«Ü²ð: @rJÕUÕlÛþ-ÿzã]TÉ Øe/wýìzõìÎÚ¯¾æTA!ãÇ�aæ-,ÿâ+,f‰ûkåüïGŸ@5`ú¤±\táÖ|µž/×nD6Y¢“Ë«“`ָɝî¦WÏî¬\½®ÞMS÷8¹éGW„•ÝãÕøé]‹ÉÍÉà†ë¯eÂø±|öå*Ö}½™›\Ýp™ëȲèÖ;1$°Z¬;¸ €y×,`˶í(ödfÏ»¯×7MÖ£[g¾YóI‰‰äädr´°²‘ð,ö8΀ Æú eÀ¸‹FñR\\ÂòϾdäCéß/�ã'ò¹yñO�d‰][Ö1~ìEŒ1ŒM;÷µ;y%¹~g®9+™7gcÆ\Hzj*G�Ÿà¹ÿE~Q%º§ªÁv"IJ£í¨±iT� .þ©´`#  ¿¾c+xê­µhhÔª©Ñ.I–©tx˜}å ¼ÿÆËôï×—Ëß ';‹Ýßïe¨rz#.W#†–�¦©hztS�Ь€p„4Š�dhL�| xð‚ëËëÿzÃ0HIIfάé—°vãtw ¯¾ô4S.�HYY9ÕÕ5Ì�3‹… ®ã’©—QVãbñ- ¸úʹºNJJ2Ó¦\JþÉS¤$'‘’’Ìåsf2{Þ|¶î:€æ©aÉsÿËô©—²wߪªª˜wÙ,æÌšÎeW/@²Æ…ÊihüøÎÛ8yª€â’RFŽÎUW\ÎøqcX´ø§H¼õá¿6d0åŒyV‹…ää$LŠÂ²OWb¶Xr>òè_ñª]8‚Å·,ÄívóŪu¨^GtréoþûÅ@¾Ã‡ Åf«;jçlPö…·ÜÅÌSHNö�žL7US9vì8kÖ®k´ÌŠ->DÙç1ô†ú%™lIHН»Ñ°Ñ§{2RS˜=s7má艓ÈÖ„&ÃeS ª³‚»ï¼€ç_zUƒÄDŸ«ƒ×ëÅ7KhàU}‹Ã†föïÚ™¼»Q,¡†–×QÁËÏþ�™Ó§âñx8øÃ!ÆŽͺo6pìè—¼úò3 ¶“òÊRþõRÃáU^ßè˜@ ªÛɒמ¦¿¾ìþ~oÀØòùÙ'¹ìê…­nhA}?¬Hý·“…J‡‡¹×.âã÷–Ò«gw<ÄÜkEm<6hhI’„¦©xÕè^Çc˜Ìµþ5ÂØ„G×TF�¼€øøx>ÿbÁ£ O=óOüïÓ<÷Ï'¸|ÎL.?†Uë62nÌ…¾›CyŽ›Leuï¼þ c/º�Å·.âÑÇÿHãÑÇÿÎ’WÿÍ–õ«ÈÉÎbç®ï¸ýî_ðüÓÿà²Ù3¸xü6mûޱŽ`úÔKÙà&M��ªj¼µôe.ž0–ÙÓ'óѧ«¸(HN9&‘‰“ç€YY™$'%ò2}ê¥Ø, #.0v.7…êª*>þð­€SßjßБ'ÃУ–kÜE£6d0••�|?YöI‰§ý+•؆e·Û­LŸuŸ}ü.Cdñ]?ã³/V¡Xc0Å&5Zf·ªKIizšÀpWsßocÊ¥(¯¨àoO<Š%¢p_%RéÛ«;—Nº§ÓÉKK–"YbÙ²m‡“îݺòß÷ß‹Ùd"'; €ÌÌ Ðµv%¯d„ºbèš—q£/`æô©8N.�~9Ån·’�˜Ìر£m'_¯ßØhøãÿx©vY h §ÓÅÆÍ[¹áæ»Ø÷ízæ^»�×^ú'‡3j÷£¶‚aÄÄØ±ÛOû™Ùí6bbìTÔÔß«1|t1›L¨š†Çë‰ê£ifSp´Y ÕÍŒéSX¿qå•¡å~¸l9ŠÙÆ�ƒ‡€Ú'~C§_ßÞìÜùÕ5 ØYûÕ×ôÏ &^±r º!QPXÀç_®B6Y8~"?(M-ðôÕ»Wòï¡ðø~.žà›æÐ?Cõ„Èi1Tž|â1öîÚÄš/ÿÃï,EQ|S-ÙYYôìá{êùn÷**«Ñ$6miòz„8þzTr•UTÓ³öik×wßòýfæ�<̺·QÙQB»Å�l¶5yž¡:C®Q$‹dk|è1æ^õ#þçO‘”˜ÈkKž¥[N:†®5 y]Ü}Ç-,}ýmÊndY¦¤ÂÅÍ‹ÌÁqû­‹˜=kðÕ¥ªª* ]k_òJ†îõ­H4tÐO×Ûm;¾åБc˜c“Q%;Å%åM¶“¦Âuác+ˆ³5–«,fƼQ\R8^\RÊô¹×síÂÛ1[#3Ü�U%�~ZÕë&;=‰�Þ~•Üœlöî;ÀÞ}ÈÍÉæ£·_%;= Õ¹±Õ Ed1›}#Z^OTš³ˆî<Áùƒ®y˜1u2ÿ|öEd“-ÈÐívc …tø’¥e夥¥øÍ%/éi>§â’²²�ô=_Ý3jšÝî𠢤¶cسwýéñ�°#ÇOaz@NI’™;gÓ¦\Âöow²è–»p8œìÞ±“IA–%Š‹}�AnN6º¦"é]:åž.„ŒÇÆÆPVVA÷n]‚r–¢’K–MTVVú®Mj*†®:i©§‡Í ]oRvt½vôD’$ Õ�®kÌ�7½ÑótM ÑeSºŠæ®áàa7�çëõYxÃu¤¤$3xÐ_�¡y ?œ¿$‰Œ”æÍ�ƒ¦i<ýܢÌ>GvÉdeÕWësñtÌ&M×YýÅذi+†¡µ+y%IbPßîÄÇŰ÷À1ŠK=�ú‘“�…¡ë誫vDÓí¤©pá/ˆÅdF1ùFìëC¶Ø†r4DC>TM­ Ç™g†®“kåÍWŸ£s§\öí?Èå×, q†óÕç˜uÅ�¨qëH¬ÎnÐÐ’eßÔ¡'JCËl²ø:n� †®2°__:wÎeù§ŸûVº›zý“Ìšµ_SQYIÿ~yÜï¯É?y’ù×\ øFÁ¢E’V¯û†²ò úôîEïÞ=Ù¾}'�;ç2gÖ ž|êyö?-'Š S­ÏN\lýûå1m꥘L§�‡W­YGiiݺváõ=OYyS§\’¯Ó颠°ˆÌŒtþüÐý—pÉÄ ArÉQÉ%›í¬]·§ÓIß>½xðþ{)))eöÌ©A…5š” ŠX|ë"È;,kò¼`Yê®­‹¡«ôïÙ…ûîý%+׬¥¼¼‚qc/"%%MÓøvçw ìÛ“ûîýUƒá’lB÷8Y|ËO°˜Í|¸l9ÇòO¡ØߊÕ{ó3Ž;NM�ƒ¹—Í¢OïžlÞ²�u_o``ÿ¼ö#ï71 øÓƒ¿gø°!ÜrûOøø‹¯XõÕ×”––ѽ[Wž}êøüËU¾Åë6±º‰v²{÷ÞFÃë®È"E’V¬Z‹®HlyÐ’DâôÞšæaöŒ9�Õ…ÁÛ;\~Í€±5{Æ–¾óLrÓm¦ACË«ê|±b v[tû`8].¼avš€À´×·;¿ãDA!f{âJ¥U.Þ|'�?úPÀ¡¸¼¢‚ßÜ{?k¾nzz.åU,ZÌcz€ûwOàøw»÷PRRÌÜËg�–Ó–Ä»ý‡ëç_ÅÇòÚ’gyiÉk8ÎÀ¶·Á 7ÝÎ_þô c/º�Õk¿æÝ÷?âª+.Çáp‚$¡XãxðáÇøŸÇaîe³Ø³wŸ|ö3§û #):¹ìÉ”V:ùù¯îåï�?Âí·.âð‘£|þå*f͘Z{ù”&e—M6ž|êYzõìÁ˜Ñ£?ö"¶lÝÞäyÑéRÂá¬!/¯7Æ� =|ä(ÿù¯:~Š]r?Qˆb²kU¸qÁ|žzúy¤Ú¤†¡2x@~z×bt]gù'Ÿó‹{þ€¤XÚ•¼Š-ÕYQG$™Šj•-ZÌc�<Àåsfrùœ™xU•¯¾^OiyM£íDVL�†+NóuñO#ú¿Ÿ g2rÕÜiÈŠ™÷—}PoÃÒ²*'s®º�YÓ§ðÁ>EV"s“’ÆN™g:z²^€ÕbÆl6¡ë:šª¢i*º®cèz`·SI’�$Y‘QÅdB–¼ªŠÛ�½àü@u”±âÓøhÙrþþÏ—Q,¾¶·º00Ŧ I2ºÇ�æq ›m�Í6 Í‹æ®"9)»ÍÆÉS…Hf;²ÙV›F1@ ÕQŽ¡«(¶ß– ž4�3Lš5$ÄÅ�’’LQq15°â³:rª«’ܬtœ.e•tÕד äõèÄÞ={ðª* ññ,ÿèmz÷êÁ?þ,_�l¶bx]ØL:©©©=qP047²Ù¸ÑE% ©nLš›œœ,Ž�8‰Ž„¡zN—µ Ù%Y©Í³ºv/<“=I67xž$)aeñaÔêLöÓ+ø ]CuT�žžBB|<¥ee”—W![c�MÖ&Ã}‰¨5¥(1IÈu6�U�¤&'�”˜@aa1UN7&k<ª³ÖNjj § ñf$“¥ÉvÒT¸@p¾£ë†¦")¦°¯ài(,Ý»d7lhI’„ɤ ( r`¡áûó¿²Gª�Ñ—$ßÞ>†�ªi¨ªÖàk}ç7†¡“‘h£¬Ê‰jȜѾk†��ѬËÐ tÐkÓ”¤Få4ôÚWÚÔÉ_sUñô“�2yÒDNäçÓ)7—ØØV­þŠëÝ�l�;�ŽQÛžš(CTrZíu ]’½Éëæ¼³Ò¥®ŸÖa8‡ô¦Â›Ø×ÉrÀ悔ÉÑi ëáómª�´@;¡4jh -…a赫½Ú¶/_´rºJ¿ž�¸tÒx2ÒÓ)++cÛö�|¹ú+LöĈÓin¹Z’¶$K$´7yAû¦{—ìÆw†Z‚öò­œ’lâûƒÇÙ½w‰otB’�S£¯Qi ¹Z’¶$K$´7yAûGZA3"É&$‹hV�@ ðaغú½s-‡@ A‡âÊw5¼3¼@ �à솖@ A ! -�@ ‚"¬×®aä矠´´¯·}o¥mPW™ŽTÇÎ'½ù Û£{½^t]C×ÛÿË¡ýeð·v¤² Ú7áêfG0²ü˜L¦ÀhGjw¢OiÔÕCG¦#Õ±óIo~ìÕ5MkM9Z”ºeéHe´oΧºØ‘Ê*ú”¶ÁùtÝ;RY;RY"A¬:�@ h!Ñ2 £5åhU:rÙ‚¶JGnw¹l‚¶�¨cí—Žã"Á²wß^¾Y¿îŒÎ�3ërRSS›Y"AGAŒh ]×(«(Ãåv¢ªjDç˜L&lV;ɉÉȲÒì2uävבËv¾ðÍúuÌšq={ölp �Çøt]ZZ†¦iðÑ>`êäédee!Ë-ã‘#êXû¥ÅG´vîÜÅÆ��ë%5ÕAR¢‹1£r‘M=ñjƒÑ�ø–O èpèºFAQ}zç‘‘ž‰¢Df4išJaQ!ûöï!3=³EŒ-� -Ó³gOÖ¼5•Ü>óé6p!à3pü00tƒõë¿a̘± >œüü|>ûâfNŸCFFú¹-D|ýífÊÜq`È”TÖ°íÀ)ŽU`7Kd%é\2´'3F�:×bv(Z|DkãÆ�Üwß}�Æ©*{³¼E>ަÆ£îC‘ qx§c¶f‘#ñd èÈ”W–Ó/oéi†ñ I’ÉÊÌF–e>HJRóN…tävבËv>a·Û):þ š§„âã+<é(æX0À0t0 tÀÐujjj°Z­Lš4 —ËÅÇŸ|Ä¢onÙš«Ž™ì�IŒ³Ñ95f^l¥FÕØ}²Š­×ðÆÚŒØ—øØ„fÉOЊ>Z%%%�ý3‚·Ý7˰*Û0›v ɃQL2&en¯ Uï�[ÜZ"†eõÚ¯8yê'Œ'+33pÜëõòî¢( WÍ›rΡÃGذi—L¼˜ŒôúO7†a°qóv|û-5©)©ôËëˈáÃׯŸïe³f8÷ó/WйS'òúö Ä‹‹‹eÿ�ƒ –A’dbbìäõíCïž=CÂÞÿè? ØŸÝ»‡ä+IV‹…””úåõ%=--ìu©KCe8øÃ!^{ý î»÷¿”µ%ùÛ?žäÒ‰“2xà9É¿µpºœ¤¥¦£ª*//y�mÛ·…„ÿýoOðóÿ÷“�ãÆcÑÂ[HOË`÷ž]­&o]TUå½>bäˆ èÖµKàxaQ+W¯aöŒéÄÆÆòÃáÃ|þå \.7ŽÁèQ#Ï™ÌÑMÛNHH`Ø�ú}`pX¤é "gìŒß°wÛ»¬~}#¦ÿ‹øÔ~§GµjG¶œ.O?ûçZÔ¨©,9Î×ëÖ¢2§´$œÖt“™ë§�aþœ™üý�¯ø¯¼A7Ki½sÇ\4ޱcÆž©Û7­æ£U×Èòÿ—¥S(òq$y’i  &íóq\ÞAÍ*DW¶«×°}Ç·TW×pË¢Ç×oÜÈÒ7ÞÂd2qåÜËCÎyó�÷X÷Í78Nnºñ†�0‡ÓÅ?ògŽ;ÆäIé——GII)/.y…åŸ~Æ~{O ßÍ[¶âñxXpýu�ó?þô3.?޾}zâåde¡�Zlݶ³ÙÌ �Pd‰O¿ØÊ•sçÒ«G�yÞ~÷=bcìtïÖ-�^yY ÀëUÙ´u+�ÿý\<~?¾óv,fs ^qq ýûå…¤çñx¼¾/.y•¹—Í>gOÿ3¦NãŸÏ=Ç�?vNòo-TÕ‹,Ëx½^¾Ûý�<ôg’’’Ÿqå¿þ‹…¿ÿíI à à~ìt]Çl6£ªÍ¿™`¤z7™L¸=ûÛßyâñG1™L†ÁÿûOÒÓÓˆ��eßþýÜó»û˜3{Ù™YüÏ“ÿÇü«¯dîœÙÍ.w$DÛ§DÚ¶;çæ2tpý>08,Òô‘#Ëfú™NZV/Öx9}FýžÎýnÀÐu ßðÆ¥¤¨ˆ�›7!Ù9¹•´˜LÍÕonZ·‚ßÿúgtÎîÁG¿§¸ÆÊkk÷òìëòË[¯eÒ°^¬qsûÍwп[N༚šîýý=Œ¹hL³Èq>ѪÎðu�,ßw> `É’‚$Z\‹ÈMš²,3ö¢Ñ¬Z»†…7\ðwùråÆ�͆M[BÒ«®®aýÆ�Üqë-,}ãM\??ÄGæÅ——PRZʯ¾‚ÝnCÓTdYáî;ngãæÍ�´dYfЀ|°ìcfÏœARbbà¸,+!ñ, ¿¼ëÎ@|èaâââøÕÏæ/1×.Xˆ,ËõÊ.IR½ô†Æ]·/F’@QLœÈ?Á]?ý9Ï¿´„;o»%oÔˆ ¸ûŽÛCÒs8jÂ:_9z”ƒ‡~`Ôˆ B¦²œ.‡&%%…ô´4JËÊHINF–e***±Ù¬¨ªÊ¡ÃGèÜ©‰‰ sª°�¤ÄrsrΧ555è†A|\\HÞ¥¥eÄÅÇ1p@ª«køv×w п1µw ÃÀb±�””Ìoþ뗀ϸ 6´üÇûó_CÂZJžHã-Zpßlð=Ì,¸~>ÿùäSŽ�8ÁÃÜ�®k¼öú[L�<™ŸÜy;º®“““Å£ý;3¦M < ´&Ñö)‘¶mE©ßfë†Ešž :ÅËHJÍÄË~ǦUÏPr|5ýÇÿŃaÄÆÆbµ˜˜7‘ÒÒRtÝh†–Õ¤‘›Ù�²²2’â2‘¥ ì†ï [œ"#ÎDAißü�¬;H¾¾¤9å8Ÿhµ©ÃðF–„nd Ù(ún Í HÚn4­^­G©µ.]»t¡ °�Í[·qáÈ”––ñÝîÝüúÿýœ ›¶„Ä]³nݺveîe³ù÷›oÎp¹\|¹j5÷üêÿ¡ë*UU•!çöÏë[»ªÅÇðaC±Ûí¼ñÖ;Ü~kcóþ••�_º®£ëzȱhÐu-D¶„øxn»ùfþúÄ?¸eá‚@ƒÓu-â<Ö­ßȨ#B^!±ë»Ý<üØ_ÈÉÎÁét2 Ÿ|ö¯½ô< Ü÷àCôèÞ�­;¶“’œÌü«¯dý†MìÚ½›¬¬,Nž-­·hëÓÙµíúa‘¦w®ií`϶wÉ͂훿'#+ŸNÝŠÉ2ƒôÌÞlùäz û/rúÎÇb¶ š<ôìуäÔ >ÿòÓ“©9õ¨:º¦ó�;.â§OâùóØ{ø.W Ùñ2¹£GÒ³S¯¼ý .é…®é�üÛR}:Þxû^xù•Fã,¸þ:\?ÿ¬ójÕWðÔÕ’$ ƒ<Æl¼Æex´Ùx´«yéßÙ`šÛ¦Þ‡4~ÌElß±ƒÊÊ*V®^Í´É“}«P‚8|ä8Ä„±>gÁK&Mdãæ-TTøF‡TÍß4rðÕ×_sÍ Ÿºäfg3nÌE,}ãí–*ZDH’¯ªû‚ÅÆÄ�›“òih+�ÒÒ2âOo×q"ÿ……Ìœ6…’’JJй²Î¢€9³fâõ¸)))Æåra³ZùbÅ –¼úO=óªêåðÑ£€ïf3gæ ¾X±ð®+׬eÎÌé/>.ŽâÒúNž‘²ð†ëëM—sÛÍ7qÛÍ‹Î8ýæÀétÕv†÷üê·�Hx½Þ�O¸8†aàt6¿¡-^¯—ââb’““"zmG\×|Ó¤Ö_ºÛõÖÜm»­ô�Ñõ޼aWPZ|’£G*ÙµmU�”šÀ„Ù¿áÔ¾çØµê.jjJ‘M¦Û;«¥0 ƒää$rÒ»ñ×[GðòëïÑ·[gd$d$F÷ëÊ+oÄõwçò±#‰‰�é0–Ÿk¯º2Äïº.ÍedA+Žh…3²Nÿ�G5& I‰‰‰=HuuuCI�5Ñ—ÍÀdR¸hô…<÷ÒËx<úôîɦÍ[CÒ[±jÉÉI¼óþûµ#22f³™UkÖrÙ왤¦¤PPPð£7f,ãÇ�cÇ·;ùý¬#›�Çãá–E7rÓâ;™wÙlüã·uËPÿwè1³É„êUëÅóx½˜Lõý8êþ.(ôù¤¦¤ÂòúöåGó¯ ‰WSSÓ O‰ª�οÆáÀn·áõžvž÷û֜޳âãB îþ3¥eeŒ½h4)ÉIQ–Ÿ8gÆ´©Ü´øÊË+ؼm)ÉÉôéݯ×7%«i*J_µH©®®fÞesø¿§Ÿ »í曘õU�é¬s…ËéD×uŠŠšö ';;—ÓÙìrE{Í·mßÁŠU«ùïûïãÁGþÄC‡Ò«gwbc|›IVVU‘•yz䦪²ŠØØØ°ù´´ÞΤO9Ó¶>,òôÎ%í¡ýÆiŽÑóVðÝšŸ³ñëõôTLBj?.¼ôöîø„-M§ÿÅÏ“Ôò+;›[�ÕÕÕdÔŽ|þõVøåóïñ«[çS\íæï¯¾ÏõwçŠ £ÉÈÈ ºº:ð`Ó–êÓÙríUWÔÙjN# ÚÐ+x‚}·Ú"º®3mÊd~sïï¹eÑÂÚÑ€ÓhšÆªµk¹`ذ�)ÀáÆðåªÕ\6{&Y™tÊÍeåšµA+� $$L¦†7‡LNJbÆ´©¼öú›g,vVV½íª«k¨®®Ù¶¢!>ÿr%]»t!-55`øèº±Aœ•™IYYÙéß™8NJKKINö­ˆ;~üx½ó‚G(N°eÛ6>]ö²$c:K_çD~~ NbB< ÆŠÕ«Ù°i3—Ï™0²JJËÈŒ ¼�QSSÿfá¿ITWŸû›„ÓåB×54McÙò�ÇgϘSoÄG–å0q4œ-0u N§“ÿ{æ9îZ|޼€ùW_Å“ÿü'ýó#ÄÄÄ�•™É‡ѧ—o»’cÇOàöxèÖµkƒi¶E½5GÛnÉôZ‚¶¨?~#oÏÖwéT»àNVì œøOŽíy…m›þD÷ž%dæ¦g¿‹HJIcÇçóé:ä×$_ø“FRn[èµû€ddd�‘‘ÁS?±ó‹§ßÂíÕ¸yZ?ÍžŠ,ËTVVRSSC||ÇÜ@¼®±ÕÜFœƒU‡áF´ÂYmaõÓéø¾sôËcé’—Hˆ�YþîßËãöð_¿þ%JÐŽÚ•U•\qíõì?p€^={r÷·ó‡$5%™Ù3f`³YÑ4�#G�Õ“ÍŸ¯×ëeÁõó¹aÑÍ(Љp¾VáÊ|lâ„ <õìsL¼x<Ý»vE×uþõúdgeÑ£G÷�¸ªªátºPU•S§Xþéç¬ùjùÓ#!NÒn�‡ÊÊP‡~›Í†9̪¯A°s×w�|RR’¹`ø0žùUn¿õ&\Nÿ~ë��r×–"ðÝl6£ë:{öì¡s§Nœfß×ÿ�={v‘7°[Œ›ác¦rpÏV²ô5T—N".%¯ñ Î1Û·o¯7+£ª*&“)ð½.þ™‡ŽJðtÍMƒ†VCN¥ÍA$FWKæMÚyäa¼ÞÓO•ÏiCcäˆá¬üt9ùù'xìá‡Ðuƒ²²PGk]×yìá‡Ð4•òòrû÷ãõW_¦¼¼’òŠr’““ILˆ§ªª*pc©›¯®ëܲp?»û.***CìyäaTU¥¢¢<�çø=º®S^~zªÎáppãõ×qû-7“ò$ ññÄÆÆRVV2µö—G¬ô¿¾ÅãqS]]òt/˜²²Ò@‚‰‹�cÌèѬX½šéS& Ë �>ô V«MÓùø“åd¤§£È2º®óÒsÏP]}úšø¯Á�×_GyE9¹9¹x<, EE…�¼ÊË+¨®©aÖŒi!Æ76ЫWO²³²êu2gJEÅ™m¡Ñ’8]NÀÀj±b±X8u*Ÿ×/B–eþýæ¿°Z|¯ ±X,\wÍ x<Ž?ŠÅb© 3jÓh^"mw#GŒ`ÕgŸPXX¢¿œìLÖ|ù9EE…¸œNúã}TUÕàp:ÈÉ΢´´4âm)š[ogÓ§4ֶõ±Â‚�vizm‘¶Ø~öîø„}‡b‹Mfå’î Æ;u²ŒÞûS]üÝ{&!!‘ÍÏ£÷È?�Û÷úf•©¹ï‰ªª²oß>’’’ˆ��÷=d¾´Ã‡Ó¯_?¾ÿþ{úõëÇÉ“'3-yoÚÔaJ­#x¤´•©Ãââ¢ÜN''N¯�WqN§§Ó�¢(ÄÇÅâq»8uª¦ÑsÊËË)//o2^IIxY**Ê©¨(Çb6ápÔ„í€+ï™Äó£ª^n^x#¯.ýwàú¯ß¸‘ü“§è”“MAa!o¿ÿ!·,\hÈõ_ñS^^Ž,ËØm6 ë;r»k«V¯¥{·®ôìÞ=dîà¡#ܵø¶�½Ê:"ЬPSSClly}òøzÃW�0«Õ‚¥ÖвZ-¼ûÁi_ž¼>y˜ÍjjªC¦¿›‹HÛ�Ëuº]ãv»CŽ£( V‹™‚‚–Û(2ζO‰´m‡ ‹4=Aätï3ÕSƤËïG’Ì€’ŒäßP$†î¢âä;èj5޲ $%÷dèÈ1|¿ó¯”毡ÿ¸¿úÞ•Ø 4ç=Ñ0|ûÑÅÆÆ`6›#ßà›¹1ôÚië¾mô Iqê°¥iqCküøñ<øàƒQ�3iÒ¤6chµ$çjSÈæ͉–Ø;¿þÅÏ£~ݺveï¾ý¬þêøÝ=¿fðÀ�M>�kšÖàÖŸ}±‚äädî¾óŽz{AÝ}ûmÔÔ8BFð:þz�‘žÅöow0vÌXú÷Ä€þáß:{Fèv†a éÛ¶o##ý´ß[sMé·D»;׫úi+}Šàìðï3§z«0 ؾæô0€}ßm¡wÿa€ÁþÝÛèÝ(`p`Ïnz÷‰ø~½ú fðÃùaÿnÖ¿w)c¯Yß,²5gKJJ"11‘ììlàôŽþ‡Ð¾y}Ñu�¾yyèºNVvvà¾!êzô´¸¡5xð F�Õ9ÕÕÕõ¦àšQQÎ ^¯—ÒÒ’Àï¬Ì îº}1&“‚®ë8�γvˆ}äÁ?ÖîŠ_Yï&¼ê±#bªª2dð`Þ~çmÜ.£FŽ"!!1¢s+++Ù´y#_|ñ9×\}5ªª¢(J›6´Ú ¹lçÖ˜4V}ü¯Àï“Ç|?uüPÐ÷à |?øžÖùÒf“«¹êØäK§òÄ“;ãsE]�žF ­æ™‡õ kG7ÍÔÒ4WÙg‡Çãñyk‚}µÎ7ü«ÎtÝ _^?Þÿ=Þzû͈§J}>Z.ž0 �PU­Y7bìÈí®#—í|cüümg|î’W_âš«æc³Ùš}Óæªc#GŒdò¥SÎè\¿û‰ :ÎÙ+xÎ%¹l‚óI’°X,$$Ä3dÈòòòðz½hšÖd�—$ E1ùŒ-«»ÝŽÙljÖ•À¹Ýuä²�/téÜ•%¯Ö÷_4tÊíܬ£ÀÁ4W+// Y(%hyYuØq;ŽŽ\6Áù‹,˵“XAéûÉêîküi.:r»ëÈe;_¸xÂD<�'ð€¢ë†¡£ëz`‘N]ßE“ÉTëPnÅjµ`6›[ÄÐu¬ý"F´‚DsGÍIGnw¹lç Š¢`·Û±ÛíçZ”°ˆ:Ö~iq­¶HG.›@ÐVéÈí®#—MÐ6u¬ý"F´A«Ð‘Û]G.› m êXû%¬¡e6›K»;š¦vµíhe´oÂÕMÿk0Ú;ªªb6û6BìhíNô)mƒ`=td:Z;_ôæ'l�ž’’J~þqÒÒ2±Ù¬­-S³âr¹).. ;Û÷ÍŽT6Aû¦~ÝL£¨¨�ôôŒvol©ªJaa!©©©@Çjw¢OiÔÕCG¦#Õ±óIo~ÂöæYYÙóí·[þ½»=a·ÇЭ[w²²²€ŽU6Aû¦nÝÌÉÉáäIÈÏÏo÷»×›ÍRSSÉÎÎ:V»}JÛ ®:2©Ž�Ozó#��2Ïxçէε�@ Š+ÜEón]+�@  -�@ ‚BZ�@ -„0´�@ Zah �@ ´ÂÐ�@ h!„¡%�@ÐB´ïí§�@Ð.((( 33ó\‹!h£4U? Ãàĉ”••¶¹ �Íf ))©äää IR½pah �@ hÓäççS]]INNN›{E™ªª’Ÿ¹¹¹õÂÅÔ¡@ ‚6Miiq›}¬Éd"==ƒÒÒ’°áÂÐ�@Цñz½mÒÈòc2™œÒ†–@ A ! -�@ ‚BZ�@ -ÄMxêºÎ±cG8rä%%Å85ÄÄÄ’––F—.]éܹ+²,츶ˆÐ_ÛBè£u×[ ´&QZ'NgÓ¦õ$&&Ó·o“&]Jbbååå?~”={¾gÛ¶-Œ9šÜÜNÍ.´àÌúk[}´.âz ‚Ö&bCË0 vìØÆ‘#‡™>}6�:uFUUt]ÇãñyÚÇÅÅÑ¿ÿ@ʱcGùì³�)**dÈ�aa7ñ´Bm ¡�ÖE\o�àüà‡qâD>†a4Kz’$‘››C�ÝÏ<�±Sæï¼úT“·oßJqqóæ]�,ËhšÖh|EQÐu�wß}‹ŒŒL† vÆB Ρ¿¶…ÐGë"®÷¹Gì /hŒ¦êÇÖ­›éÙ³W“é¬]»Ž[n¹¥9Eã…^`üø±MÆ;xðÇ�9vå‚»"Ñ:qâ8GŽâ†nh²“òÇ‘$‰¹s¯béÒ%¤§g�“SÇTAË#ô×¶úh]ÄõÎü#Y‡‰ö¯û¿îwÿùþÿ�;w>ëѱ& -]×Ù¸q=Ó§ÏÂ0Œ¨24 I’˜ëò�/×»)TU¥¸¤„ââ¼^/Æiòœhû?� -!IÅÅŸ\®�*?±±±¤§§õ ­æ É^ãØ±#$$$’‘‘‰®ë�Î*Ò�®ëdeeŸÀ±cGšM𖦨¸˜÷>\@bB+W¯aç®ïÎ8þû.£¨¸„øø8\n7︌F~¦týE«�ƒár¹HLLD–aåªÕlÜ´¹^¼êêV­^Ëæ-[q:�ãBgG´×oÇÎ�¬X¹ »ÝJJJ ;¿ÛÅg_|yÖrœ/×»)6lÜ̧ŸÁ÷{ö²yë¶&ãGÛÞ‚¶†,Ë(Š‚,ËM~üñ$I 9Þ\¾™MŽh9r„¾}óPUõŒ3QU•>}ò8|øºv=s‡²Ödó–­ôîÙƒ±� 66†u_Cÿ~y(Šuü뮹»ÝˆoµXØþí.zõì Ðdø™ÒQô­>ÆŽò;%9™oÖoàÂQ#Cޝ]·Ž!C±~ÃÆ�ãBgG´×oß¾ :”!ƒ�™‘Î{|ˆÓé I'ZΗëÝ£F^ÀØ1£9rôXDl´íM hkȲLFFàÅòü¿ƒÿû Í’$©ÙFµš4´JK‹3fÜYg˜••ͺukغµþ¨BK ( ¹¹]HKK�ú\]×9‘’)—N ëÖµ+«Ö¬¥ °�œìì¨ã×½YÄÄÆ`è§}Eš �†gþ³�Þÿ�³†›Æ&¶ ýµ¦>ÂáõªØl¡×xïþýôêÙ³ž¡ÕÑõÑg£/ˆþúÙl6<oà·ÇãEQL˜LgwSo¯ýW]ÎVf³9â¸ÍÑÞ‚s�$I|üñÇ †Ï�;7ïÆÛn¯þò3ÿl=CËápb±XÏ:C›Íަ©dgçœU:‘âñx8qâØuL.— ]׈�‰ 3›Í˜Ífjjg_UUv¿‡^=Â?Ý7Þ/¼¿Žnæ—’I¼û½6¡¿ÖÔ‡ŸÂÂBöî?@�£†êj—Lšs8�lÚ¼•¹sf7™GÔGSœ�¾êÉõ;f4«×¬¥ÆQ�Ùl%??Ÿ‰ÆGe „£½ö_uiN}4Å™¶7� -᭺喛녽ð‹KI’ˆ�O{~«MBó¼5ÛãqŸÕù­‰¦ë(¦P6E1¡‡y*�&¾®ë|¹rv»�áÃê;¤6)§o,í]Ñê#n2‡„DQa1……EdÔ:<~µîk†D\\,§³Á4„>ÎŽH¯_MM .— ��$MS©¨¬hΧëÝœi{Ú§ )™òòÒÀñ¤¤”�p€˜0†–,Ë­7¢e·Û©¨(«7í-ååå(Љ“'óÏ*�HQ�:u>£s­ ·'ä¸Ûíû„i|]×Y±j 55fÏšQoSSá‘rÛ¼ñ<ÿÞ¸�5 ›Ø&ôךú𓚒BjНQuëÖ•åŸ~F÷îÝ(/+§ °�¾}zsäè±ÀMôä©dE!9É·SxGÖGSœ�¾üDzýüÆØèQ#ÉëÛ€�ýûóÆÛïÐ¥SÒÒRÎX†öÚÕ¥9ô)gÚÞ‚¶Dðh”߸ Æß½ù曌:°^ø»ï¾Ë•W^Ù,²4ih¥¤¤RPpŠŒŒ¬³ÊèÔ©|rrrëmæÕ±X,ÄÆÆQ\RBf¦Ï™®¬¼]×HK­?tI|Ã0X½ö+Ê+*˜3s:–:VSáÑpÛÌÁÜ6s0«W¯h÷ú‹VáHNJÄ0tÜn7��Ïöo¿ÀÐ}O-{öíI"9)Ièã,‰æúy<<))§;Ä„ÅDeUÅYZçcÿu¶4G{Î5~CëùçŸüàwë­·Ö þùç›mê°ÉGôÜÜN=z·Û Q$ÉÀårrìØÑvµá_Ÿ^½Øµ{7�Ã0ؾã[222HHð 1;~œ�›7Gß0 Ö¬ýŠS§Nq餋1 —Ë…ÛíIi*ülè(ú‹F†apøÈ‘Àˆ×ëeóÖmÄÄÄ’”˜H§Ü.Ÿ=;ð™:e2“&Œc`ÿ~BgI$×/X_6›�ø¸8öì݇^«³ý¢iig¹wÙùp½#AÓ4\.^¯oÁ�ËåÂår¦F¢éÏ‚ö€$IÌ›7�Õ[¶×û\wÝu�­ü”——>Ái4MŽhuêÔ…�;wpèÐ!z÷î‹,G“±„®k:ôN§“N�ÚφwÇ ¡´¬”W—¾ŽÉ¤c·3­ö† PPPĉù0¢éøªªV¸½õλ�4dYáÖ›6~6týE«�õ6òù—+±Z-¸ÝÒRS˜>eJDÓBgG$ׯ®¾.™4‘•«×ðêÒc2™ñzÜL7†„øø³’å|¸Þ‘°ÿÀÖ|µ.ðû•×–pã�®Çf³EÕŸ í¿3»5ŒÛ@Ýí C¼\Þÿ8cw‘º4ihÙl6ÊŽÛˆ��%'§S­pM9‰I†Î‰'عsC† ;k?‰ÖDQ¦M™ŒÃá@UUâããC¬ÛS… 4(¢øf³™ÅaV>øi*ülè(ú‹F’$1ÿš«q8�¸Ýnbcb°Ôú�„#Æn¹þBgG$ׯnûÉÌÈàÚ«®Äáp é:±±±(ÍÐÉ�×;òúö ø¿…#šþL hø )“¹~ßïߌÔ_§_xáÅÓh"ZŠÓ©SÊÊÊØ¶mK`‰³ÕjÃ0t ãô&_>Á}^þ.—‹“'O±sç6ºtéÒjŽœÍMLLLØã]:w¢G÷nÇ?—t$ýE£�»=ðJ�¶DGÒÇ™N_’$Ûìy‰ëÝ4í©?"E’$ýÝ=!»¾�fI’Ä¢E‹ê½Âÿ¿9ˆÈвZ­ôíÛ0ذa=ýû"--•¸¸xl6[`é´ªª¸\.ªªª())æûïwÑ¥KWòò`µZ›Eà¶Âà�õW)´UÎý }´/ZS_âz7M{j?AcøG¡‚×4WšgJÄ›ËÄÇÇ“—7€ÄÄvíÚ†Ý[û°xL&ߊ"UõRYYEAA>N§ƒAƒ†‘��M\\\© Z¡¿¶…ÐGë"®·@p~�››Ã /¼Ð¬/…ÎÎ>»UËQíâG—.]HJJ¢¸¸�‚‚þ�šš$I"&&†¤¤ºvíAzzñññþI°=!ô×¶úh]Äõ:>=zt§G�î†�¦i¨ªŠªªx½ÞÀÇãñ ª*†a ( &“ïÍ‹ï¿Éd |šãÝžQo—lµZIKK#!!�œœÎ¨ªMóíìØf³Šª�"ô×¶úh]ÄõÎ$I Kçš3’@’$¬VѵW„þÚB­‹¸Þ� 5ižM"�@ õ†–@ A ! -�@ m³ÙŒªªçZŒQUs˜ÍQAZ�@ Ú8))i¶IcKUU Imà¥ëçÞ_ � rrr8yòóóñz=çZœÌf ©©©dgç„ †–@ ZœÌÌÌs-‚  ÓTý�$‰œœ\rrr[I¢æCL �@ ´ÂÐ�@ h!„¡%Øhô IDAT�@ÐB˜¶nÝ|®å�@ èpœágΜs.åDˆ$IgôVrI’�eß ¦aX­VEAUU4MCÓ4ìv; \qÅÜpà Œ=:ª|¶nÝÊk¯½Æ|ÀÁƒ>|8]»v%99™´´4dYÆ0ŒÀ ?u]Ç0 dY¼“ÊÿP¸®ë!2ʲŒ,ËH’8_×õ@|I’P%�—?¬î Eýiûã8�“ÉTû’QKàc6›—Ë…ËåÂívãñxðz½�——úór»Ý¸Ýn\.W›\’,h$I ´;?þzMu뢿ŽK’hßMá¯ë†aΓe9¤®ûÛx)¯_ÿã—]Q”€Áyøó©›·ÿãO+ø¥¿~¹‚ãøÏóç,‡_κ×1ø¼àöï§å¦Mqýƒ Ç�ˆèúµ†aPTTDQQ!n·ë\‹#ˆ«ÕFFF&iiilÛ¶«Ûgbd5„¿ÃªÛQ˲è@£Åo$ù;ç`£¨#¬�ºßý¿›Sg‚öÏ™¶…ºõèlë•ߘ ®§uëm¤yÖ5†#8NCñ;j)ÅÅŸÝ.ÆŒ‡Íf;×âDEaaçv…é¹”Áår±k׊‹‹Ç„¡užP÷éÐÿêIò�lY­VRRRÈÊÊ";;;ê|<Ⱦ}û8räiii$%%‹Õj é<ƒŸjƒåó‡ÕýÔ-GpYêÞ"M+ø‰×ÿôíRV%p]‚Gƒãû?þ§òºÿƒGæç/uGqüu,šQ-Ã0ðxëu)=>Èï´Z-«‚Õ ÝŸƒÃ¨áˆÖ#}O<ñDßaûwïâÎ�;X]]E2™D2™4åäMÁf®•xi_®òÿ uKÞå÷ô,>û–$T :¼ƒ ZÅmµZh4üMq£Ñ¨ñ1ò\㹤¯ ©¶Rqµ…Î䳄$* ?J²$•-1”J° A!ºƒBör<�ëµý}aµ)äGG´pðö q5 ¤R),..âìÙ³8sæL_Ë®T*XZZÂÒÒÖÖÖ�Ïç�/‹³ã~fô¶™ª6¬Ýô ×µ¿Šƒ|,ó)|¶íít:h6›æ˜‘déúY.dè Ñét°³³c}/‰ “É ›Í"‘HØ=¯e6Yg*�#‘Høêii¡<ÿéɲ)ºRMÒïsŒ�ár’?Iðô²‚ž\.ß×dÎæÑêFõr‚àH–ÃQíGr– ì ¢�ÎnÊx2™Äc�=†³gÏbqq±o¢µ¼¼lˆV½^G>ŸG2™D$1*P¿Þ”n~+î“í³zú�]EU‹Æ_-yìäëT%ÙÒ%zA"‘@>ŸG.—ÃÌÌŒ!ZÀn-ÐåùÅÒ T´dHO+*ö_:¼øÃ›ÚÏÈñ‚ïÇb1´Ûm39 š”šdñoI–¤¢¥I–mÜ�Û¯½—A¤SoÃ0Ñn·qýú5ܹsµZµ§ï¤Ri<þø¸téò�·ÎaÔpD뀞QS™‰ÅbvC™Lù|Ç�ï{ùKKKøì³Ïðë_ÿ±X ÇŽC6›5áC›JfÉYs�¥D´lM”hTo6›Æg*‘ž,©Ú–\ŽƒC7D"d³Yd³YÌÌÌ ŸÏ#�ûÊ+ð\•äÇ– k;gmkâTU=èz•¡O†5e–®N| šTéð_ÐDÊFÄdi ýžž„íû(póæuÔj\½úÈår=}§T*áý÷Ž›7¯yëF G´‰D�H$�Íf1;;Û÷÷—––pçÎÔëuœ;wsssÈår&¼!F=hKŸ‡Všz!]ÚsÅP‰Í Ûn·}�ÍfÓ7C—ä�Ëæ2é«ÑDK×ÎrpèététÚ„ s¹b±˜/“UÐøþ·y—´*D¤dÉthN^gápØ@,©°‘pÉë^/[û"¹ozý|�ûÁõIȉ›ÞŽz9ÃÆíÛ·ð­oý"‘*•JO߉D"¸ug3é5œ9³Øóº®]»†wÞy•JÏ>û,ž{î¹A7ÛaH°»¦¡PÈ(YD$A2™D.—ë›h•Ëe,//ãÞ½{8wî1??oêg1sÏ6`뙬-ìØåþ 7ÿ¶yºH–è}a�$IÒÀ^)©fÉþ†Ò P–¡î çðè!ÚíY˜J¥|d‹fëJ“;CÛº\ŠÍðDÀt¸Ðöºí;„ìêyjµ*•Š oÖj5Ôj5ß5eÛwÛ¶è‡LD‘¯IR'Éœü—iSü$a6jµâñD_Äîßþ»�þÇÿÔs¨>þøcÓ�öâÅ‹x饗ðæ›oö½½~|õk_ÇW¿öõC[žS´1È0"Ò|>�“'OâôéÓxì±ÇúZÞýû÷±¾¾Ž­­-c€ç !hý|Ö³uí)±/›ÿÂfð•Ë“J3,¥ze ¥’¥ ðºœU­ƒÐo#a‡éD»ÝF£Ñ@¥R1ê+™óœ"q¡ê* }Žë0šœØDþeHÎæó ú¼ü,‹�’ˆÅb1“(¢ �6îšʱÀæÑ’Ðïkbek4 ôZÞ¥ÓéàO~ðoð_~òÓ¾×ñúë¯ãêÕ«xë­·gΜÁ«¯¾ŠW^yÅU–#¸éõ# Üù|§N�©S§úžñI¢%gÞºö<°ÚêåH‚¥[pðs¶£L%Y’ª”õ¶ñÆa+å0ÉÒëpxtÑét ÑÚÚÚÂúú:VWW±ººŠ`cc¥RÉ-í!Ô„E¿.ýRA^.¹<­Ù>¤€ÑïY¯×�ÊÅ•.ÏóŒú«�ñòšÐê•VµlÛ.÷ÝV’ŦØ� z2øñ¡9rl{óOÞˆdµZ-|ðÁøæ7¿i^{þùçQ*•ðÑGæ®8<$œ¢5å�Š A2™4$!c~~çÎ�ÃÙ³gû^>‰V¹\F"‘ð…7lÙOr»lƒ¶-”¨�ó¶Ïò}½.É¢ÿE–t��ëÖßåqë—d98T•IRŽ£ L•Kz¢ˆ Â$ß×­yä¤ÂöyÀï_²Mp¤­'Aš÷�^ø}½e.¯¬¬ ^¯cqqÏÏ•ÍfQ(pçÎ�CÛ‡‡‡#ZS*3ÚtN‚púôi<ù䓸|ù2.\¸Ðײ777±¼¼Œµµ50Í£¹Ž éÜv³èö�Ò¿�éY±ÜOζ=Ï3>*ÞŒ¤ê¦—Çp£$Y¶ÚYƒB’yþ¯Û>þ5ÝÔ™ƒÓ p{Pø]®G± I‘'òoéaägXƒ«[Y ¹¿r;äöé×tqÔŠr»½»¾?ÿð/ðg?üàg?ÿ?Bø£ï|oþë·ñßö3óù_ø}üá?yú§?èiù,z«C„©Tj_AÜqƯnÝêésúìVÒ‚üXúõ÷ÿ×ÿhùŽh=ˆD"X\\ÄSO=…Ë—û¯Ý²¶¶†ååe¬¯¯#“ɘZ@rÖ øfþ¯C”¶›€T–80ëA^~W¿äÍêF´¸<6”$Ë%uR!âyÆ×¥j$CešTi2!¿oû¼|_“"ù¾\¶öMê÷ôu)×A¢Åg™)ä5³M ¤BÍÏp6E\.3ˆl�Üö/þí+øÆï~ïý�Ý›ôÏ~þ¿qýÆ Ü½·d>ûÂÕˆW^þÇð<¯çå »^‰�� óžÃxÀ­Gr £Ò4;;kZîœ8q¢ïe®¬¬¢•ËåLuëP(ä+R4“¶)Z6ÍÀµY^‡´‘]V|×årmáF™¥Øh4F>;v˜ÈóØë5h wé�žŸËe².œ\f·l\ÛvIÈëI"}Í…ïVäµÇ÷eÑS~OŽQüœV»´²¥ß³+Û¶� ¶Zmü«?þ>b±~ú_ßÉúæ7¾�WÿéËð¼Z_Ë/ 8{ö,>ùä\¹rðé§ŸÂó¼�&ÎG…a*U½B+UT²U°4Ñz 1z³Ž?ŽS§N äÍvýY÷îÝÃÚÚ‘N§�ïIß´—ƒ¯ó9ˆŒIHr%Ë*p¹ÒC¢ûR9Ð5d­Þˆ‚Ê94�¾fœ6�€ØZßH"£›™kâÁë,hÂT—.ˆPqÛlê—-\)ÉŒ­¢<·�û[¯×�ÊÌ{l)$É¥<²VбÔÛn#[Ý|^ÂܶZ­†ïûŸ€![ðü7žÅïÛ�+/¾ø"Þ~ûm¼ð Èçóxã�7ðÌ3ÏàÉ'Ÿ|¸�w8T8¢5e�$‡UÙùºD>ŸÇ‰'&Z­VË­z½Ž\.‡t:mãr€ä�Â6Ûˆ–ÞùY¾/ „ÊB¡�NÇ×_Q†þ8Û§9—}ât1UMФ?«^¯÷}œ‚4¡�$!�ú)Iäu#kÁqÙ:L¨Ÿ¹ù·Mù²… Iõze…{ªk;;;¦Œ…ôLr¬â„‰àßAIõ~Iª}YGI´€]²õ½±G¶¾ñ»_Ç}çÛ¨ÕúS²$^{í5ܸq§OŸF*•ÂÂÂÞ{gÚn‡Ã‡#ZS úˆ8�I°vÖÙ³gª¿¾¾Žb±ˆR©„X,fÚíHU‰3R=hÛB†ÝÔ,9Cç3É”­¢»$`rFδq]’ßáà/ šÒÛÅ,1‡Ã‚Î ‡Ã¦ö¡Cc¶É‰¾ôëz‚£ýKA…=I‚ôõ%¿+·__ã:t'·En=\�NÇ×»ñ bhƒVå¶öZ×ê° ÃÁDµZÁwþÙâoýÆoàïý�¯øŠ“²�Édï¾û.–––P©TpñâÅ‘J‡ƒáˆÖ”AÌ„ü›h>ŸÇéÓ§qîܹ�Ö³±±�r¹ŒV«e² e¦zA!CÀ^ȳ›ï#(ÂuÙÊBÐü.k|é‹ôsIO–3¿; <�µ Þ#lá2^rò!'’àèúTT‚ø&JÜ>¹ ¸o mÒ#‰Cø2+QN€äÿAã�Í“EpÛmDËv솉T*…û÷—qòä©}“Üf³‰¯þݯuO¾¾¼¼ŒT*Ý÷úN�:õ°›ì pXÞ,­)gˆ±X ¥RɼÎAè0‰V$1!CÝbÆ6HK)YAƒ¡ ¡ØÈ×ÇÁ\¶Õá1aÈ�7é!‘ŠÚüîà0,ðü“ÿóÐ…8m×’ ÷‘ÄȆçÒ�NuÛÖ¾†ëÓŠ“^—M“!ù:•m¹=�NÇײJV³g¸T¯Óf+°‘¹ EKµacqñ,>ýô/Q«Õ| e7´Z-ܾ} ‹‹g�z>epDk ÁM,95›MÄãqÌÍÍá±ÇÃÉ“'Zǽ{÷°¼¼ŒjµŠùùy£jÙÈ“mÀÓÊ”mÀÖ*–|æòôrµzÆ�—a Þä ®[/CÞ† NØ"‹çs�1ž�ao©bÉÿõç5ɲ]‹Ú ® ‘®Ö.¯a›—‹ëâ5%½”õz}ßrõ˜@hÕ^‡=õ{ò3£º–/\x ¿üå_áÆ�k=÷.L¥Ò8}ú .^Üý®ÃôÀ­)ƒŽóSÍ‘ž‰™™ÌÏÏãäÉ“=϶$–––p÷î],//#‰ ŸÏ#“É ‹ùf­6•J,:±á b¦ý^r¹rÿøˆ–ü¼$Z:d¨+¿sy.”èpØ�ÊÏMz¶$ÑÒwIXäù¯ !C|ZÙå„D‡òdHN>ø©˜©×²ž×Ebi iJe72¥ß—¯É÷äkÃF.—ÃÓOçÎ=Ñs÷ˆH$‚d2‰L&3ä­s5Ñš2ÈÁgffÀž9œX:�F¡PÀüüü@ë¸{÷.îÞ½‹û÷ï#—ËaffétÚZ¥Â´�šiÿ…ídêµ1BØÒÏ›�­0©,NªÁåÝÄ2”Í2,ADKž÷2û¶ßõ™Ý%™Òa9Ѳ™Îå2c±˜ùœÌD”~-®ƒc‰öŽÉõÉuØÂ™£4‰‡B!d³Yd³Ù‘­Óa|áˆÖ”AršÄpð.•JhµZww¿wï–––ðàÁ\¸pÉdápx_¶Ÿ†&C:Ä ýWÕ’3y¹n9ØÊ¦º2d¨C+¶ÒAÇ×fÞwp8,H%“ItèPgÝ> Hê$i!tQ~ŽïÛžy}u_°í‹¼†åúõßAJWÉrp8J8¢5ÅÐD‹³Ef B´J¥îÞ½‹¥¥%”Ëeäóy¤R)ã½�ä%(´Ç‡ÐmŸ³‘3¹ =È›Ž •j¿ ×!u[í¬ Ð`7¥Îa<1JoÎa£Óé˜P<Õyþ&vvvö…íôæÙBtÒ#)Ã÷zû¥ª-É–^¯\ž\§\¯�hÙp‡Qí)†¡‘e2 …�ÚîÜ»w÷îÝÃýû÷�F133ƒT*e²m!>n‹~èP€�Œ)Z2¼"3«8ó—7mÚ•J˜l}�šEŒº�ÃÃa’‰”•x˜èt:Æ”®Mïúº ò?ÑïEÈëOûÇô>qÒ$ÍùÒ´ìon-·á —®iåà0*8¢5¥�3AiàŽF£xòÉ'ñôÓO#‘Hô½Ü¥¥%Ü»w+++( ÈårH&“Ö"‹½@›z»=lá$©�ÙŒµ€¿^–®ú.)G´& Óò{‘˜ “8’lI¢%•4šåìS½$¤ïK†ñù}ªWš€Õëu3N±Þ�l›tmÛŒð’�ieÌÁa”pDkJÁA�  tž7PØpmm ëëëØØØ@<G*•²ö&üµulÛÆç ÷5Ùâ2¥ŸK¾/M·2Þ¦~Ù-†,¦ ƒú¹Hti¾'Z$´B-¯W>¤*%keñ{R�£º‹ÅÌx&Ã…Ìv–ÿkÿ'—;I˜››Ãúú>üðFq˜ $I,,,àøñ9G´¦ Ò„*ýTµ:�r¹ñôÓO´’¬b±ˆB¡`Š”r°“„H›×õ€,É–í=­ZIé_Ï|ålVªZ\®ôeI’µ³³ã+PzØY\“ NN4 ÊÖäð+Ö¬�E%*‹™p¿Í“)Á¦î¡Ð^¹�ÉëW‡ 'UÕj·'‹:ìAózG´¦r`¢I¢R©àé§ŸÆùóçñùÏ~ u|öÙg¸wï*• Nž<‰d2¹Ï#¡e|�­ä±™iu–¡Ü7’,éÑu~øyIØdøZ­æH–Ã#‰^�á4¦{Hé§â²¤?RèƒÂyòsìA*¿o+Ül6±½½mlét�NÇx¹ø}Ž?šNáZ[[C½îáʕߞ8ŸÖêê NœXxd·Áó<ܼy kkkæ5G´¦ 6o°;#œ››Ãùóçºp—––pûömܽ{áp…BÁ,G¦|KC¬¬ãÅgvоíÕ"äÿ²H)¿§+Wk¢¥ýYžç¡V«õ”eè`‡,éá0y�!¸ ‰-?Ûl6}×»~æg%ä5É¿B”¡E†=ÏÛwmv:”ËesÝJ%_\嘴=ãŒÕÕû¸rå‹G²€d2‰K—.ãÃa^sDkÊ = Ò ÞétpâÄ œ?~ å~öÙg¸}û6îÝ»‡Ç{ÌG´$døÀB°, ÚÈ–.4¤héeñæ@5Ëó<_Óm‡þ •Cçm›Lè²AM´4©âäF/SN¢l�AÈ¿¹¾p8 Ïó¬çW£Ñ@¹\öµõÑ-�äØ1id«^¯;’5ÁH&S>o�#ZSŒh4j ­±X O<ñžzê©�–õ«_ý ¿þõ¯ñàÁ\¾|333ÆP”9hS¤ô{Ajˆ°%¹¢*% ¥.å@¥EšÞ©b1dè08ä�Íõ}œ�t:�x<8;Õ¯uS¼z™QëÌA%YÎA–tÐ$‹D‹¾,‡‡ƒôÖD"G´ìììøHÖAÉ-Ò/%=TRѶ)eò{T¶Âá°1ÃK´ÛmT«UQãútõx‡£€#ZS9³c&αcÇpæÌ,..´Ì;wîàîÝ»¨Õj8}ú4’ɤIÍÖÅ »™£maC­xÉÁ[ú±Ø��•£˜™/³Ž¤W„D‹Ù…•J%0áИbÏ–(ü åoã0½h6›flöû/µ‚¤I—üŽ´Ç€¹ÆS©ÝÂ�Õju_ègg¥RÉŒétÚWY^–‚pp5Ñš2Äb1#¯s0œ��Å™3gpöìÙ�–I¢�Ç‘Ïç ÑbÁA9«•ƒìA>-ùYÛgdoB©fÉA™©áÜé!ѪV«¨T*¨V«ÎKt‡Ãæ&o¢½öŠt˜lè:WúšÕ 1Ý òzÒEµL^§$H’pyž‡J¥â#\Íf¥RÉL²R©”)Aɘ#ZGG´¦œµÉ>e±X Ç�Çâââ@ý¾VWW±ººŠõõuäóy_ÛYž°ÍTµÊdŠ—þ*ÝbG*ZºœƒV²d�,><Ïsá­C‚ Ñ�ì{Ф ÍN?d桞\ñý^–¡I™.Í¢?/Õk*«•JÅ÷9ÏóŒÙŸ&ù~¶ë0Ðn·qýú5ܹsµZµ§ï¤Ri<þø¸téò�·ÎaÔpDkJ 'DñxóóóxüñÇZîêê*677Q©TpâÄ $“I£ ÙêUi‚%«·kb%C€|�Ÿ×�fåC¦ƒËPƒ¬¿S©TŒŠåyž»ù"´2¡«{3KÍaza+ ÀJh‚2Œå5¬ÃŒò»Tµ¥ï*‹Ÿh$A­Vó�5LxaAbN¼FE´nÞ¼ŽZ­‚«Wÿ¹\®§ï”J%¼ÿþÏqóæõ!o�èáˆÖCë“DF­¹¹¹�‰Öƒ°¹¹‰Z­†L&cˆÉŽ&ZÒ_%ZÑÒéßAäL’-ÎNe‹!M´šÍ&jµªÕ*Êå²óe�¼Ùê�¯S' ZQê–™+ëgé —Î,äëz]2ÃP¿.¿Ãs‰Ëæ´d†þ IDATwXM>�"‘H`ggÕjÕLªdâ Ë»Œ ·oß·¾õ{ˆD"û· D"ܺ³Œ™ôΜéÝO{íÚ5¼óÎ;¨T*xöÙgñÜsÏ ºÙCBÿ±$‡±�ôIÈŽ÷ÄÎÎŽñg=ùä“­ƒaÃN§cf�’ É¡€½ßÿ·¥yKHÒ%ýYRþç`ËÖä&` fJO—Ãá@úߨ3ÒÖÉar@²B_S2™ l—¿üåÁ7ÞáPáˆÖ�ƒb«ÕBµZE«Õ2¡ÃApïÞ=ܽ{+++˜ŸŸßG´ˆ š8Aï¶Ð§ 0Œ gÔÒBÓ5•,Ù^Ç‘¬áƒ¡j­Bð=wüÇRu¤·±ÑhìS¡Y"�ãK"‘ðÕ­“!@m°� ™²U–×ÙŒôp1THr( žTÕ‰²Ù,<ÏCµZÅúúº©¥7Êò�ÎÞøöÎøþì‡?Âïüƒ¿�ùýï™ñë­·€Ÿ¾ûßÌçþÑ ¿ 7~eeõzÝ7‘Îf³( ¸sçΡí‡ÃÃí)•ÙðøñãM´Êå2žzê)+ÑêF°$lY‰ÌvÚLð² ´ôƒÈz84ÀW«Uc‚wY†£3 ¥ŠéˆÖxC'’°‹àï9�Ç‘L&}„JÖ¬“×£-³˜°½ìM°4I³™âYÎ�m ê–H$ yŒD"¦–«Ú� íöîvÿù‡�?ûá�?ûùÿÂ}çÛxó_¿�ÿþ³Ÿ™Ï¿øÂïãÿÉËøÓ?ýAOËçï¥C„©Tj¢Æ¿_ݺÕÓç.œ??´mòcé×ßÿ_ÿs å;¢5EÐÙB¹\óóó{–——±¼¼ ¦íŽMѺ7–Ö!A9«åwu5x]Ò�)ÝÒ/MÙ²^U‡Ñ�¿‘#Z“IRø{Ñ IMñ KUÉVâA2•�aD=ñÒJ˜­ÔƒmÝr½2#‘û‡�R7j•›ëúâß¾‚oüî×ñÞÿؽIÿìçÿ×oÜÀÝ{Kæ³/\ý‡xååÜWfd¡Plnnú^ߨØ0ï9ŒÑš"Ð4ÎÁnff'Nœxykkk(‹fV+U%éÙÐa#í±ÒFWý¿~0ƒPšà™ÎÍíàóeÉ 8g€=ø»ñf×ouxžKA½ó<¾$-,n,‰«ÿË0�î'hógÊåð©NºÀ±ÌP•Ë“DJ¶v²}WNÜ$Ù§*ÇýõyÅÐa«ÕÆ¿úãï#‹/–$YßüÆ7ðê?}žWëkù…BgÏžÅ'Ÿ|‚+W®>ýôSxž‡Ë—'§èé0•ª^¡•**Yƒ*XŽhM0lÍ|)÷§R)ÌÎÎL´îß¿�µµ5loo›”i©(i¢¥C2kP—l°Íh�½¯l»CïM¯LÝfh€Š•,W(óhÁß½ÈÐoæºnšÃð Ɉ®¡ÕétÌX"Ãt…Þô„Ë–](?Ëk[‡åú4A“ãɹ̈́Ïíg¦äè‰ÖÞºjµ¾ÿí>ãûóßxü½o\ãëÅ_ÄÛo¿�^xù|o¼ñžyæ™�Ëù8 ŽhM(lÒ:°[ã¦Õj!™LâØ±c­¥¥%¬­­¡V«ann‰Dbß`«K5HhÒe+dÊÿõ÷Hžd5hú2b±˜¯÷!=\ì³ç”�É€T¨œD"ó»²6šë›8H_”$ºT«åu'}Xº02°?Dôš³$aÒ!g©hq›dE½L=ù …B¾R4G½ÞZ­†ïý‹=²õ�ßý:þè;ßF­ÖŸ’%ñÚk¯áÆ�8}ú4R©ðÞ{ï=Ôv;>ÑšPØfgT�jµÒé4æææ0???ÐòïÝ»‡µµ5„B!S2Â&ñ4 ÚXPµx6ô<Ï-�FîB†“ª±XÌÈŒÅbffÏ~G´†y ’̰dƒ,± 'WZÁì­vä$J‡õg¹ ©\Éïiß•^ŸVÍäöF£Ñ# Eó–ë®V+øÎ?ûCü­ßø ü½¿ó_qRƒ~�L&ñî»ïbii •J/^©áß¡78¢5ÁЃ•ô/¥ÓiÌÏϤh5 ܽ{<@:�ö*•á=.ÔЄKû°l$L6…n·Û¾Ù¶ %ð3’h95ËßödÜ·AúîxŽ{õÙ¨p9  ñ’”p¢Fo%‰‹$Y¶ÿ–¯K²Àª,iE‹$Kú¬ä6ù´$)ÓÙˆM ‡…T*…û÷—qòä)3&Íf_ý»_ÁÎÎŽï½f³‰ååe¤Ré¾×wêÔ©‡Ýd�ÃòfŽhM0äìG7öeý¬A²Oîܹƒ••‹E£6ÐÇa ÿé0!àŸéê¯Í(KoC€¬�¥³ˆd¸�5³ft˜hÒÍ☠RÍtd² °—Õ'¡IA+†ï¨4þòAÙ„’�…uác­zIÏŸ­Í(±¸xŸ~ú—¨ÕjûŽiZ­nß¾…ÅųîÜŸ28¢5%`H�þ–¹¹9œ;wn eݽ{«««ØÞÞ6í+8XØBAfx½}z�•u|d�3’-à9ÀòæË⤬ïLÓ{8꺟°Ï#þ~2ÌÊóÃ…�li%Zÿ-ÃuAË$äØÐÍÛ©'fü®~M~_“,ý�Û0j\¸ð~ùË¿Â�×zî]˜J¥qúô\¼¸û]‡é�#Z =³¤2‹Å0??ÿÐD«T*áÌ™3†huS´‚äùƒfÀ’À±@©,RJ/÷�­5dx‡£G�ѹx“özØÉfàŽh ¶^¢6re#I½.Ÿc…öYù8%ÑÒM~¦ɲ­Qz—r¹ž~úó8wÏãH$‚d2‰L&3ä­s5Ñš`p¡×…ê@6›ÅÜÜÜÀáË岩¤Ì¾f,ë N�=Ø�pI‚fÛI²XÒ�ßá:�Úí¶!X“TýxÚ¡+t÷þæòæËŒRg‚ šÍ¦)�‹Åº*GrÒÔÍ÷d³t#j¶ÿµ¦ _¹’Ÿ‘cȨ è†B!d³Yd³Ù‘­Óa|áˆÖ ‘H ‘HÀó<´Z-d³YÌÏÏD´Ø¬V«¡Óé˜Ð!M¦¶šXA¥´/ËV šïI¼lT-‰gßÕjõzýÈÃd{$�ž¿9°?c À¾»ÃpÀ,_³IZdÖ°ÿ÷èV¢ÅFÄlöùžü[®ÃVR¦Ñ’ÛAœ‡£€#ZSf U«U4 är9,,, ÔzgkkË(Z¡PÈ×@–ƒ˜�PÙB‰„&L6µ‹3ëF£á«p/‹WÒ¿ÅÒã™1ÖoÖc·ßQ{�Ùêõº¹ÆY³Nþ®¶¬BÝõ��Ÿ“Ðcƒ&]Úß�¬Ibe#Zò»Ìbu^N‡£‚#ZSšÄàØ±c‡ ×××Q*•P.—MA ÔUÞ5É òlIÂ$Â4ðÓÄÏÐ!‰V³Ù4û$ûº�áx�™^ö© B ä5¨Ã}¼~ù;k•¨[hN’!~N·É‘J—ôVñû¶Ð`�‚%Õò£¬¡åà áˆÖ”!�b~~gÏžèûëëëØÞÞF¥R1-oÒ-u‚ˆa#[R¾§B&‰×GõÊIÿã ª2aÁa2Ñh4öõ4$1bÓpÑÒcÁdi; a“5¹´:%Éׯ‰–6ÖÛT4G²ÆŽhM 8óŸ™™Á±cÇ®¿¹¹‰r¹ŒJ¥b¼_6EKz3ôÿú5©hÉp�4Á3ÛŒ¹_NÁ?°}U­Qfv9.x­ñúÔžJ’9±ê¦hÉ0¤>WH¾41öü~z½T»‚¼^Ý úüÞ¤/zn“ÉäQoŠÃð¼‰$êõ݈Œ#Z Yn�ƒ«l§ÓýWn4(•J¨V«¨V«8vì˜!Z åiŸUÐLRÆüž”þù:ëaÕj5T«½Õœq8°/!š`9R<Ù`‡^« ×Û²;¹‘ˆ¤Šd‹m~4l¾-I¼tÒ Z[zÂ'—u”}ûʼn�áæÍk¸té2’ÉÔQoŽCð¼n܏ޅ…ܹóG´&lQ"—T*…t:=�²°µµ…R©„J¥‚jµŠÓ§O#™LšY¬4©e… µ?ƒá6�f],‡ñE45�R©”ïÜ b©=6“YWkb"¿Ã’3¡Ðn‹0I¨tK/`¿šÅ0!‰–m{‚ÆMÆ&‰hÍÍÍa}} ~ø £Š8L‰$püøœ#ZÓÙ«Œ½á …æææZÞÆÆ†É:ö²©>Áò¼ êÏ ز�´®‹5I2ÿaA„Ç© o”TKI¸B¡�)µá†ӃÃNBèt:¾°¤n- V�:fs4¡²]/zù“‚v{r¶ÕÁ}š9¢5¡à@ÕéìVN÷<™Lóóó8yòä@Ë\__G±X4DK6©Ê*ÒÅ5Aê6°ÉÚY2Û‰Ë=èûÓ„h4ê«W‡}%-ŽÒd‰D‹Å�J¥�Éd�ÉdL![*�€3ŠndbšÀë�c‹ Û ¡j–´Gز»ù²ºý?®X[[C½îáʕߞ8ŸÖêê NœXxd·Áó<ܼy kkkæ5G´&¬oÅÃpsss8qâÄÀ�Ü×ÖÖP,Q­V�F÷áuÑ@Û f»iØü\¦,ë !kéL;"‘‰R©b±b±¢Ñ¨QúÂá°)F;j„B!Äb1£fe2d³Yã·aè÷ #²Ã~0$TøsÁäz¶ä„ÑöÓ*yPí-¾/_×ãÕ$�›««÷qåÊ'Žd9ì —.]Ƈþ¼æˆÖ‚ƒ‘l¶Ì›p½^7ŠT?XYYÁýû÷±²²‚ÕÕUd2$“I“Î-{¡IhÙÞVúAÿÏïèôp½\’­i‡ÍXÌcE3òQ)Z6ÅA†‘é¯cµ~WÞ¡7èR�ʤØ«‰·³³cŽ“*=¬ �´íuíÁ’!ÃI;¾õzÝ‘¬ F2™òyëÑšP�hÉÐM»ÝF¥RA±Xì{y÷ïßÇòò2îß¿�R©„ÅÅEŸÙ™ËÊü±‘*ýºÌ:ä ›� °$gür}ÓH¾x<¸¿²šõQV´Ö*$·‰ÏlÙT­V]Åþ>`«bþ¨€y†YØ?Ù°©W¶qÈö¹ …ÝÁaÔpDkB¡I °;�Ôj5loo÷½¼û÷ïcuu+++‡Ã˜™™ñ)Z:4d«aÓ­�)rÔ‰Ò‹¡oøÓ4hÊ Íf³iö“aÕ£$–:ÔËÐ�¿$Z®´CoxT@·p‰:ýA™ƒÚ¯”„#ÿÖVmapp5Ñš`È–6À^»ŠAÂ7,RZ©TŒÙYÊù6OaË.”,* r»B¡�ñfíììXÓêçnÛ0É�õÄXsˆ¾¬£VïXW‰¿C«ÕB­V3¿C£Ñ@­Vs$«HE˜N…88F­V«å+LjS€ýž-9yÓ뵙쎎hM hP–j_…B}ܵZÍ4’®V«†h1ãÐf~׃–�h1D°³³³Ï‹Õét|DK“C½,9k�fп2N Ifão™–/ûQ:ô†I¹ùSMÖv’hñü’‰½Ÿ Ïɉ'�õ´’Y‡É€#Zˆp8l²vdý©cÇŽáôéÓ}gnll˜FÒ•JóóóFÑÒ§ÂÃ�N7“–aB¶û ÚeI£-¬à0Zt:Cšeí£ �CwLÂ�_'BhÔla?N¶˜½”�¨ýZz¤~ÛÔ.‡£€#Zi gÚÿÜÜ~ó7_ûÚ×ð;¿ó;}-¯\.c{{¥R ív©TÊ´W±y ôƒ° ¤ºá´TGH²l7�‘5ˆRç0HžCÿ˜”ãÖn·MM7�uä«ì­V õzÝ”zˆF£V/¨Í¯„ ÷FIºÚí6®_¿†;wn£Vë­­X*•Æã�?�K—.yëF G´&ä¨�9s¿õ[¿…¯ýë}/«T*™ö;Àn†&ƒÈ•œí¥_K¢% ß²v–­´Ÿš¦—çà0ɘP{?�]²Òm‚tвlàx�FÍx ³ ƒŒñ’”é¿G­lݼyµZW¯þr¹\Oß)•JxÿýŸãæÍëCÞ:‡Qí †ìoxâÄ \¸pa fÒšhÑŸeë ¦.� ì!I¶˜¹F?ÒAŠ÷uRnPÓº#ábxÀ¾Ð±$8½B׋“}Q¹,YâÅæÇ’ëÖ¯Ùº}û¾õ­ßC$A¥Réé;‘H_ùÊWñ“Ÿügœ9³Øóº®]»†wÞy•JÏ>û,ž{î¹A7ÛaHp`',�™L…B'NœhYårÙ4“fÅofڤǒ×;3Ù2Jbÿ–‚×k+B�3資îìµZ ñx¢¯cÑét�H$z5ÀÇŒ/|á €‹/⥗^›o¾Ù÷ö:øñ«[·ð«[·myNÑš0ÈL@”l6‹ÙÙY,, ÖÛ‰­r¹ì ð xý (+‘ƒi·b¥’Xɲ :8ŒôUþ �4­…ÿ»ÕÑÒ�$‹¥ô¸#×a+Rª“g´×kÔªÖ ãU¿ãìë¯¿Ž«W¯â­·Þ°k!yõÕWñÊ+¯¸Êòc§hM4ùv‰V¡PÀììlßË£šÅòÉdÒWÚÁ6k´Í&mïÔŽ'ˆÀi¬\¦ƒƒÃh!“X8¹£q�Ä+è{½‚­²æžlýôÐë³yIåc”D«Ûv÷ºOÝÐjµðÁà›ßü¦yíùçŸG©TÂG}4Œ]rNÑš`t:Äãqär9 d³Ù¾—AoV¹\F§Óñ-™iÄõñYü-2‚É^¼Vr&¬C £ÉÕ¬P(dˆ–®ç7èòI²šÍ¦Y&×¥3�ýž¬n%hŽÂvÐé w¼ZYYA½^Çâ➟‹“î;wî uÝýÁ­ Žd2‰\.7�šÀ”u a3™LúJ;èС4ÆÍ*uÍ,­‚u�uY‡Q{+ºƒ F³ÙtÉ �d¨Ÿ„Kz)¶¡¸T´"‘¢Ñ¨1Åë1ˆ¤K¨~êý íöp¯ÖOÔ!ÂT*5Q�zõB]8~äÛ _tÑš@È‚Édétz lC`WÑÚÜÜÄÚڀ݋”hP†a7Ù[z¯dxéÍêFºlÅ]Æáx€Ery~Œc{‡á‚¿9 ×ê†ï ’-ö?¤š¥KÍp�ÝêøI�¢5Ü1«P(677}¯oll˜÷ÆŽhM0Z­âñ8²Ùì@aC`WÑ*‹æâL¥R¦´ƒT—Âáð�Y>6B%_·Uˆ·-.»›Ìa´ˆD"ˆÇãFí”ç†#[�xKÅØßÀyP�ÄI/˜Í_D²l!ģ°C‡…BgÏžÅ'Ÿ|‚+W®>ýôSxž‡Ë—'§èé0•ªA·�JÖam›3ÃO¤wiggét333˜™™é{Y�FÅbÅb­V Ùl‰Dš�cØ´�S-ZÒ¯÷B´¦ÝǨ‡�Ç}YšÓ YjCzstaY‡éÉÃ|ƒ\§Òw%Á‚Ƭ¯gË ò^Mõ{£Â°Íððâ‹/âí·ßÆææ&Úí6Þxã <óÌ3xòÉ'‡´WƒÀ)ZÎwvvÐn·133ƒÙÙÙ�Ô¾*©hä×’jÖ¸šàc±˜!X¶¦ØÓ†Š¨lòüg"ì0èߟשPs’¬ ^™ìÁÖ�T*………¼÷Þ{C_¯CpDkÂ@¹ž‰Ö±cÇú^Öêê*®&øT*…X,fB¬ã¸�Õ þ–2¤ãÈÖ£^ßAD;•J¡P(Å7£Ñh T*TÖêÓË–d ð·äêV+(Cñ(&²X/�¡Ø^‘L&ñî»ïbii •J/^t ó­ C45%Ñh™Lù|~ óãÊÊ o:)D"T*T*D£QCŠ%aàd!ˆpM²ú4,Èëž¡C©v:xžgTz`7£—$+�Þ«#%¬ �•³4ÓŠ–ƒÃQÀ­1‡­æT«ÕB"‘@*•2¤«W�`Õëu´ÛmxžgÒÊ僺¡J%Ã…A¤Š Îà{5ÏO"xó¨×ë(—Ë2”$?‘HøÊ[xž‡jµ·ôõ£¯ÏÎÎbnnsss˜ŸŸG4Åöö6¶··M}:^rb!Mó®´E0‚JOÐâ Õ;†Ô�]%kffÆœ_ºÀ§$ZzB¨ÿ—*û$#‘HÀó<$“É£Þ‡ày5$IÔë»ã¾#Zc =C“¯w:Äãqd2ëÀÔ $Z�F×ý$¥y[��©YÜN۾ȑÐÄnÒIf%N’âžgT2™ ¢Ñ¨ñ4•J¥}ŠÅ8!‰˜}˜�¹áFô IDAT�Åüü�ùùy …ž ܱHéƒ áb’&{Û€”1¨I–ÍË¢C‰Òû¥—å0>  tüøqœÛþ–ß‘¿×$’,¢Ýž¬íu؃>ÕÑsHÙœˆÇã( ˜ŸŸÇììlÏŠÖêê*VWW±¶¶†õõu´Ûmäóy“uh«Ù£ÿîf‚·U¤–ƒ¡:Œ'ÒÉår˜ŸŸÇ¹sçpþüyÌÍÍáÔ©S˜™™Áýû÷±²²‚h4ŠR©„ÕÕUlnnŽåï* gÊóU×E“5¶èÍ¢ÚjSbüÐV¾þ„|]–m Ù"Óa>­tëçnÛ쯤?)X[[C½îáʕߞ8ŸÖêê NœXxd·Áó<ܼy kkkæ5G´&ò¦Ðét‹ÅŒ·¡×‹pggÇ”tX__ÇÖÖ˜p‰ì¡T†!HÙâs7W7…À…cÆ ²P¤ù{e XD’Ùcãz#cݦZ­†r¹Œ­­-£¨Ð ÏšNÝ’qÝ¿qƒ>†Ñhtßk¬‹E%�ß³©Tòð×è’¥ô2&Å�eÃêê}\¹òʼn#Y»Η.]Ƈþ¼æˆÖ€aJï4ø²)m/(•JØÚÚÂææ&677Q*•L6™4¡jC<`Ï´ €63¬¼II%Á‘«ñýIõzÝGN:�"‘¶··�¢Å~™årÙ|?›Íšôýq÷¥\.Õ­^¯#�¢R© Z­b{{µZÍZ¢ä¨›4O"¤zeSËub �-�½m ã²�©&[Àä–Œ©×ëŽdM0’É”Ï[çˆÖ@{ ØŽ'™LóîA Ñ*‹(‹(—Ëæû’hiõ¢4ÉÒÐ$K‡ÆT¨X‘ ‹E£ZÅãq¬¬¬˜0t±X47¶L&ƒ\.‡h4jT¢£F§Ó1EIc±�*• Âá°é]ÉZ¹" è§ý’Ã.H˜8�Óè–Ý, •ò3ü-ägù›ô¢hM*ér˜|8¢5!`&Žçy˜��E.—C.—ó÷ëf,—˨T*hµZVj‚$ý Ïɇìyƾgî¦5žÐ¿Õêê*Úí6Êå2âñ8fff�H$P,±½½mÚ8ÉïKóù¸€„€©O…˜çh86Å{I*žrè úÚ'lƒòu*[6EÑÖŒ¿ ËŠÈlEù9§óÑáÑ‚#ZI†�†Q z%Z;;;¨V«¾Ѳ �A…ÿ‚Ié×Ò³Nв¹¬Ãx£Ýn£R© Ýn›Úk,\J%¨Z­¢R©˜ïð7fàq‰‹’zžgÎÖ¡“asž·AÕÈöC+�z,±�6¨Ì•>AMÆHèi®g¶(×!½[ãFü-8¢5H¥Rèt:f–Í~mÙl¶'¢E5K*ZÀ.ÑêÖ?LݨôŒT—~ qÚa2�ÉdLú=ãcêÏYôs\@ÒH¢_¯×Mg…T*µ¯o¨,1Ñ¢�ØS Çéx :q@“¬ ¿Ëg›¢EÉ/Ç’F£aJHHc½Lâà²]BƒÃQÁ­ €TŒXW‹YS½´ß)—Ë(•J(‹ØØØÀÖÖ–œlY†Z�Ò¾ùM¨lÅKõ2&$ÇÌÍ­ŒsOG[)f²U·°ƒ‹ÅL?RN‚êõºiWT¯×§v²!Ç }ý%ש`z¬ü¥"HZé#dM4f’2æz½n 4;8ŒŽhM$Ñb¦ {tƒ$Z›››¦~V<·fÙBšhÉ�´áê–-ä0Þ�ígú!Zã }žÊДnCÕ/ÑŠF£>µ9—Ë€1Ú—J%_+Ÿi„­>™[l–„nÉ4|Ÿ¿ {mj]«ÕB2™4Ÿ‘!F&<Œj²×n·qýú5ܹsµZo½@S©4ü \ºtyÈ[ç0j8¢5�fuYà/(›G‚Ff¶L)•J¦<—a›ÁK²¥I!ÿ·‘,¢›'Ãa|A_Ë$| ‚�hô¹^3“É$r¹fggQ(P(ìNtÊå2B¡vvvÆZñ{XØ&\­VË7NéÒ0:ܧ½VAÞ®v»mü€,×Á?À^Ë$z «ÕêÈÎá›7¯£V«àêÕ?0„û ”J%¼ÿþÏqóæõ!o�èáˆÖ˜C“)ªY2�¹èËÚÞÞF¥R�çyf¹¬Ì,K;Ø–)‹WÊ÷{!MrðŒÅbh6›ˆD"SïW™Œk£è‡…Ì„ÕÊ«T@òëå\�ÇãÈç󘛛Ãüü<Ž?޹¹90EQÙ[‘‰Óz|eâ °G¾¤*¥Ë7ÒgìUë×d Ø«�&¸g2äóy¤ÓióY±z½>2¢uûö-|ë[¿‡H$âKé†H$‚¯|嫸ÉOþ3ΜYìy]×®]Ã;#J¥‚gŸ}Ï=÷Ü ›í0$8¢5æ�>¬p8Œd2‰D"Ñ“7 Ø%Z¥RÉG´èu°*å€eËâëZ�²$$Ñb¨3�:¢å02è¬ZY4W*/<�%Ñ¢bÒ ±XÌ4yŸ››ÃÉ“'qâÄ ,,,  akk [[[¦n—,±2�át†ô4Ñ’þ79�ÔÄ‹v]¢A~V®CŽ7•JÅ$²äȨP«Õ�'ú"v�N‰D¢çP#|üñÇøÒ—¾„—_~/^ÄK/½„×_ßýîwÙl‡¿Á¯nÝ\8þP–çˆÖC2¨‰„1{örs�ßÚÚB¥RA½^7þ,i¨×¥¸~ààlmZÕ¤<9Û•³P‡a"(C*[,GAÿ³Úz!Cœ´0$ŸN§‘ËåP(|í²HšÍ&677‡±½½=¬Ý>Rð˜J©$Y:«S?ë'�$g:ô�F‘ÍfQ,}%lŽƒŒoý*n¯¿þ:®^½Š·Þz pæÌ¼úê«xå•W\eù1‚#Zc ÎkµZÆŸ%›n`Ãb±ˆ­­-S°‘ªI›–æƒêÛH"”Ä÷åÀ)Ó³›Í&b±˜/´àà0LØn^rAc5CÚ$]½fÊÒ|Í놥˜y˜J¥P(LÆ\4Åòò²!Õjuê&ú_þò—‡º~‡ÞáˆÖƒD‹[æôJ´˜e¨‰ëIS½„�hÉðŠ&Zò4@J¿ £ÎÀ’¡K‡Q€fiª%‘HÄWÙ¾—óQ—… !H¥RÈçó&lÎVŸ§I»ÕjM�A^ú²H\ƒT« èc*+ùÓô.‰Ö±cÇLBB³Ù4ã›çyf %:�áŽe+++¨×ëX\Üóse³Y ܹsg¨ëvèŽh�)d±=üÉd™LÆG”ºyµ˜íÄG­VC(2Þ,­f62¥D´ä÷õÀÚét|$ €i>ì2F**Ò§‰D�J¥Ì#“ÉÀó<“LÂ>ˆ6ììì ^¯£R©`{{Åb¹\™LÆ\·‰DÂ(¸T»X,•~°išdHE‹„K�¶b°:\(KnÄb1_ÂB(B"‘0áØN§ƒt:�l6k’ob±¶¶¶Ðh4FN´Úíá*Z<Ÿtˆ�çÔ¤€~¨ƒpX~©~¶A¿>è68¢5fà€DÄfæ�N§{2ÅW*Ó"…DK“,I‚tê´,í„ ¼íìz)‰„ùãך¦Í �­DtË%8yá͘….³Ù,fgg} µ‹Å"âñ8¶··áyžõÆ’ ¥R ›››¾:wžç!�N#“ɘ&Û /ÒÓU¯×M­­i‚ž„t,>“´ñ™ÉALòi4Èçó&ë�*X$Áæææˆözò|ˆÞ·�� óžÃxÀ­0ÊR€›Í¦ÏÏÀõSѢÅÎÆeÛ�z½nn2Ó0(£ÐF ø9>w ÚÈV,ó-‹?Jæx™àÀcÆÙ·$ÂL`‰�që8É *Âã‹Å�Ëå0??oÞßÙÙ1mtxÎÓÏ¥—U«ÕLãmþŽ¡Pžç!—Ë!›Íš>‹ y±Š<ý’ÓØl½ŸI‚Ì öÆCÑâxÂ1�e‰Ž?ŽÙÙYCÒøú¨1ìÐa¡PÀÙ³gñÉ'ŸàÊ•+€O?ýžçáòåÉ)z:L¥jÐmpY‡#Æ(•iå#*Þ€¥Ñ6ÕjµZÍ<ªÕ*vvvŒÌ,‰ŽÍèn+ê(É—,F(@ÄnE!å¬U’ºiWmhΕ7s¤ ¢ Ñò¸ÉÒXö�ãûÀ ™†¥Ý‹ÅLI†Ó§OãìÙ³X\\ôUçïÄãÏ0Ÿ>6�NårÙ×+‘Š-–h6›X__G¹\öÕêš¶ãý°*µÌÒöjjÉR1œ¸Õëu3ÆñÜf�­R©4ò°!·ØxñÅñöÛoã…^@>ŸÇo¼�gžyO>ùäÐ×íÐ;Ñ#È oÈTzäàB£íADËóët¢ŸDíS<÷MÖzÝo~ždŠÇ”¨V«&‰DLH–íÇxí� £ø=_{í5ܸq§OŸF*•ÂÂÂÞ{。¯×¡?8¢5†�7Eê²·!‰V&“ \†ög•J%0! Âæ±²‘$I´l-6ø°1¾T8’µµ¦rÎÐ!à/êÔw2¨h¦îÍG⪽qR �Ù\ü,×ÀÜÈ6 ž°7á±cÇpâÄ œ$¡Ôᮃˆ&}Zõzݼ&¯mB·‘™f0Ó3 ù²ûQaä8¬'!óÚí6<*pD«ŒJ’•†rBÞ`©Ž�MlÙßPÖ©¢×KªÀþ6%ò¦"¡• ÙGL®‡ÊÃP ƒòõz½>éì21!‘H¢Òh4ŒG޳x*^Ü� ÒÂ"—²’¿T=mJ•�hñYgB{¹‚ÔKù,ÿI3tw:czgi–a`P–Eaˆ�DyPFš»epb'½ˆAž›Aäžþºv»�ÍÍM¬¯¯£Ýn#›Íš1t¸pá)üò—…7®õÜ»0•Jãôé3¸xq÷»ÓG´úÀ¨ŒÁúf)›1ó¦ÔÇjggÅbÑT…o4ˆF£(—ËhµZ˜™™ÙWG+H¹âh»9K’%ûTuhN•*kM˜IHò˰CƒÉdÒÙ¬ø H\´Õ>ÓÅ`5qÖÛ(!É2°wžÉïËСþ̓ˆÏ…I)C±³³ƒJ¥‚õõuSO‹ T­VC¥RÁÚÚŠÅ"J¥’I0™„}WHB4É ‚�8&iȱ¥R©oªŒŒ¹\O?ýyœ;÷DÏŠo$1%|¦ Žhõ�Q ° q ¡‘–FønDk{{[[[†l5 cÆ­V«èt:ûnÜÚ[Åuë²|]-Y�™Ê•̪ãÀʲ$Z“Üz‡™„$ZÌ0k6›F…bæ§ô§ü] VΧO?t&¡.òhË6”†\ùû雕ô+p­rÉPš®û¥“!Æ Ífårëëëèt:¦€T]766P,Q.—Mù‡Á!•ïA2Že¨±Ñj·Û¦å“‡FI´B¡²Ù,²ÙìHÖç0ÞpDkLÁ›àÏ“Fh8g¦¡,VªM¹ºŽ°ß—%3ãô�Vf R �Š—‹Å|áEM6&œ…ær9är9ó;QÙÚÚòý$Íô¬�´Éú@šPÙLì6ï•„þmõr ›wO«²FšVÅd éß’å?‹tÉíï5ô¤AŸ {èyžgü=TBÜÞÞ6%R‚ôÙI²;é~¶Ã¯}6™"LÝÐmì`8xggÇ­l6k-ùÛ88Œ Žh�jüE#%ÑâM˜D+èÆJïK;Ð ìÊÙlh+²™-Q¦Ë’&Zl#Âl-II¶l•qU)ÉËöº–’T(‚fܶÐáãa/6†¡$´Q¼Ùl¢R©øªßÇãqÌÎΚP¡öUIâ ìÊuÙþæùÐí†!o*:Ô¢×£IžÜ¾nê—^¾$ˆÚ3£¿#Ÿ¥OMž³A°% hbsD WÈ’T,©8ó·§ÒÆk%‰ —Ë_CËápجjµŠr¹Œr¹l: ŒƒºuXÇ–Þ=Yj&û<žƒnƒ|_Ò�¢577‡õõ5|øá/Œ*â0H$’XXXÀñãsŽh5¤TNò¡‰�ü_ß l`æ3°xÓ’e!äMQ-I¨¤wB=m”R}l!MóãD´l³sú¸Ÿrà—!í/ŠÅbÈår&é@«ŽA¡8>k²tCè¦(Èïk?Š®›%SY£ۺõvh²¤4h’Éð,Ë*ȉÃ>Aûh ½Êí�û6*°V�1I÷�ÛEÕ+›Íbvv³³³( ¦ÞR86jôÖÖ677ÍùÀ7š°˜2Ud™AzX�¥H& íöäm³Ã.ôéæˆÖÁæI°-Þ@dÁÒ #¼$Z$[Ý-›‚B�ˆ¼‘êjಬƒ«kÛÈ”$pã€h4Šd2éë9‡MåýF£�X,æô¹ýzãñ8Ž?Ž™™_1ÙƒÌÏòY¾®CºD7Å+Hm"t¶!—'=y‘,Ò ú¼-ô©¿G‚¤Õ[~®ÑhtõìPi4&ävصºzÃõÒ£¥Ã†ôìe2CÆgffP(Ìß’h2;˜ç$¯[ÏóÆ>üÞ+ø›I�à/Ñ0ÈoÙ‹b;îX[[C½îáʕߞ8ŸÖêê NœXxd·Áó<ܼy kkkæ5G´Ž¶D{$É¢Ò’Íf‘JÙcö ;0ã°V«ÿƒ-Ã�U–µ¬®oŒ|MVÌ®×ë>/D,C*•2¯I‚¡½;GM¶xÃËd2(•Jf›e/´ ³­|�…T$X‹�ê£�0éß[— lD}<µ’2ÔËöt;jÔþ0½NRî\†l4,CŠ4Êë'3keÇú³ŽÊÏÄ0s«Õ‚çyæ·cW=áÑ×›ÅóZ§‡-™Lúªš3œ8-d‹“:9FѯÅ1æaTðnÞÄqÆêê}\¹òʼn#Y»¥^.]ºŒ?ü…yÍ­1‚V2äM‡Þ!šgmÐ}ÚX<’B*Zúæ© ˜V,H´XtQ¦Ä‡ÃaÓzÀ>Åç ¢5Êc45k333h6›ØÚÚ°×êˆÛØM�b}6«eh–�¡W}%Ѳ…ù°•~�ç…í7âgYªCf^ñ3ºeŽ$Lòù¬oZA„,èæ¦Õ7YGŒÏ|- e–ûÃDŒNg¯nV©T‚çyûˆÙ(Q­VÑh4LqÌh4j’RR©”/!E’`îs<7¿ Užl6»Ïë×n·Q©TÆ* ?(ØŽ‡D;�£Õj¡R©øŽÑ4…L{A½^w$k‚‘L¦|Þ:G´Žz� !É:Dñxܤ‘ÛÀú1”Ü=ÏC«ÕB&“Ù—iØ«ŸEF$dJº Å{7R›Â"g›£¸9ÒGEó±V ¨”´ÛíÀ™4ë7Q“ʃˆ…�hÊß׎£×G+ Ý–Mè²¼™ËÀîoÊs†¡:ÝZIv°)[¶gn— š¨IRFÒ)³l©nð¼ …B¦a7·€¯#ÁQ‚ýùÛ‘Är[™IhKLI§Óæ7âu&ÛéãÓ@@d£už›T*’}èIÃQ«é�&Ñú%ü¼®¶-o:²� ÌNjµZF�)—˦Ö�\^�¡ÞFô¬RÞ¸y£«Õj¦_œÕ49ð�Ò¨šH$033ƒ™™_(F6æ ’7:³d2‰t:m2 ¥Ò å¶c«�êšTÉi|H¥L+‹¶b�\–,œÉcË呤ó÷”™m$Y KUOâ r’L©mA,ÌYF„ë‘D‹¡'YCk K™P•#Ù¢*Ç?ÛÛÛ†ü'“Iß9ĉ“¾†§Áßéì&œÈ¾ŸÌ@Õ½A�kŽŽhx³”= û¹¹èÙ–Ì0”áé#Ò`¯Aöøš™™1á IÖtøدFØÞ×a!I´¨ ÉeÈ>÷…ÙŠò>l¤R)Ss©P(˜dÞ¼d¨°R©ø*t³f½2$ZrÛeXK[M"e˜H[ýû&“I:bkBšÀõïÁs�ÓIª¸\ÉR³Ù4~ ÙZ“,n;ÿªµ&‰¤ òxËã&a«ññôáQ IDATÆý�…<©^i¢5®à¶R•#‘`ÓjžWRmåõÃ}”×°Î*�dÐoÇóŠI€ÿÜe«¤~àˆ–Ã8À­C‚Vú5ÓDËeØBJœéÛX~Ÿ5´ä�§ÛÍ­›QZ ¹ TwlÅ!é)“õqx¦'cTÞ zÛè›öJM4 T«Õ}ÛÐjµ|áZYù[ªKZñëvܤGJ‡e±K:ª:À”DàÍ»Ýn››2“&2™Œ/Ä,2†Y8”7sŠã�‰ë¡7J–µèå·ëFàù¬—ÃïÈâ¼Tð¤?PŸG“â¾2ÄϰY¥RÙ×Zˆ¿''P²Ûà ÕïÇ�NårÙwPÍ* ¾Ä¢×‰,Ïu>¦…œ:LÑ3È› ñ’M¥5ªÕª1Ë—e˜´Úbûßf\v3+ª‘-Ft ys¥¢%CPÃ"Z4Ë›� V¥R Ot:ŸšEeIþ.šhÉïʇT%¥Ï†¯³¥ o²|¶©ŠñØQIcµtfBJ¢%ÕfçqYñxÜ„µ¸¶¯l'#IžÍ䇱©¥\Ÿ>~º´+À3‹o’ÍÒô6 C äùFE3‘HøÈÃŽÝJ‡L*ØØ›¿k*•B¡P0çsNšd ­"óÜ“c!•}‡QíCÄaͨeX@"¼QڌƜõJòC¢EŶ�Ý ¢Ú°.3ÄlYiÜv†~t…y*wzÙÀ$HT¢:�½ÖA¥R [[[�D‹DMÞø¤:§=IA$C7*W2û,s}6›õ.’A]Lzu?Ñ’uš‰„UU“j-`�ŒIÅIþÆT¼dÏFº$�–ë—Ûa{MC†§yÜIºÆµÏoXà¶“xmoo’%=u$ÃãäEÝÔ(†˜Ì`Ù»2™Œ/IB“+I@e¨�5×F�v»�ëׯáÎ�Û¨Õz w¦Ri<þø¸téò�·ÎaÔpDëqXôftS¢Îô©ÒT*T«UÄb1¤Ói£èèò„¼w»iiÒGÃ2—)ÍÞ$dòæ«oÊÃÉ&É'C„2ÄÚ ôÊHãüA¡B ’+ ’6í»¢—�!CB¶a©T*¦”÷K“–”¿qÐ1–FzwŠl6›¦˜«MÑ’J›T $ ³‘Où¬Ãì6’ÅÐ÷‡Šßç xœ½Yƒ‚4éUໆ&r\ÐàµJ�$±b>°×�”ß—äÓÖw•ê!ë Ž7o^G­VÁÕ«€\.×ÓwJ¥Þÿç¸yóú�·ÎaÔpDkàÅ„ �TÐlݶ,M²jµ"‘òù¼! ½Èl·ýELõ3?'=Lšhqä SÖj…9U*0TÒtÓZY[L†3YˆÔ敲y “H$ŒÊÄrü=øÛÊ,;n;3ëdáYrÓªRñ”J£~è,6’>]Þ�7/Ý @‡cX SQy^ØÎ#B“2*iüíd&&ß'ù’u³úI@wHõjš » �/•xúØø:‰–D�g�cÙÎΪÕêȈÖíÛ·ð­oý"‘HÏÙ“‘H_ùÊWñ“Ÿügœ9³Øóº®]»†wÞy•JÏ>û,ž{î¹A7ÛaHpDkH�ƒþA·l˜…HS¶V,´Ï@Vkg‰‡f³iLÑRAáÀtÃëu "Ѳ©òYþ-Õ¬a+ZÒ£&ÁãA£1�3·‹Çœj–,")÷Eo¿Nb� ,nšËå|Æ|é¿â͇d¦ÑhÒÌpŠ íI’ë“Þ/n«$=ÜGI¢l5·Úí¶¯�’6ÃK¢¥“äqÒd:ˆléµTt¹\î7['1÷^¯›¿§…dM3´rÞÍ>@õYw¡�ã‡ToõõÎkœã)‰û(°[²"Ñ×9Ùétþ&ù¡÷ÌÊ�?þ_úÒ—ðòË/ãâÅ‹x饗ðúë¯ã»ßýî ›íð7øÕ­[€ çÏÊòÑèQö'Õ�£®Lΰ• /Ù*Kÿ onòæ«Íõ6õA`Úo¤ÜGJøz9r¿¸/¼Q�ÚS‡‘ÉdL-Y¯H†%¤¯�$ËVí]‡ uV(«Ï³5½&4¨Kß� ¹1’¤Yf™±‡ž„$_r{uùy>Ñ«B…@z ­:òwå>Êåòó¼éÙ”7©®éó+Rí §Œë$±d²C©¶ašT¯Ã@¯¤ç° U¬n¿kóéPi±XôM€´  ù®qY o”D±ï÷ø¿þúë¸zõ*Þzë-À™3gðꫯâ•W^q•åÇŽh"d])ì’¸ðûºÌ€?+• ÎþõÍ7(ãë ¢%ÿÖ!+ùú´¢%‰ 6w áp333Èçó†d‘hÑä^­VQ*•P.— ÁaÁW’M2µq[ÞIˆ%Áâ#›Íú2y®Ð ÏöI$~T¶¸/2\BÒCÃ4ý_:+UB†!Ñ’áK›¥½`ò<Ò ’hñuÀ~Ù2Ã4äy¦Ã‚L*à¾óõZ_IÖ¬›dCùa�ç­üÍtˆ}˜�^N�Z­fdIEV•r@°Šû¤¡õ•w‘šán¨q£V«aii 'NœÀ‰'°¼¼œ¹ï¸‚pvv^äÎbvjÛU´øb3’ªYŒõ" â9ìº}5OÉûNÕ&&'v$ÔzlDv=ÆŠ÷Ì“Ø:‘ôwžÃg6R)ÝeÌÏ´Ýý¹ yOø·*yl?Ió0¨{Æ÷¨AI2ûD �|¦t½/|vtR§Ÿ+ÉšžžÎ–¾£9ibÝï�÷z÷ïßG§ÓÁ… /⹘˜ùæÍ›c½v�ý¡ Zª—¼iŒ;�ÎÀ  JA$onn¢Ñhdù‘¨9ÑÊh”8¸�vµÂÝR|w—�¯SObÀ[ZZÂÉ“'±ººŠÕÕUœ:u +++Ùþ„º}Éöö6šÍæ@0¹«V‘B§ê—â3=¯C‚EÅ€Šðb�7*L$Ë“¢ý­/ݦ†.´Èý§÷FU%½¼Ot¯Dé+œ|é}vâ§}Çû¯ÿGdŠåD.jIíw=–1[LžËß@ \É«qiÿÈpUxy5~DЧg¹ï÷û{&ªŒä©‹—J¥ŒTQù×ôšŽf’èõÆûl±�ÜËQ­V_j¢X`<Ô0T¼Ô~êàŸ¿l ¢uÀ "µ_è ¢nCÎÖóâ ��Æ@-Ö…nMD©ˆŒªKùÀ-=ŽˆÔ¬qÏ”+• VVV°¶¶†7ÞxkkkX[[É'²Á¸×ëeÊQ«Õè#ݬ7/–LIÏÜÜ\F²è.ä ÏœYN$¦$‹ª$‰–gÖwRãy¹œ�2�†Bï·*YJ®è6VÇûÎ@{ÝnÇ÷“ŒÔ7`0‘º'�¼é^z)¢‘g�»Su�nÅÝÝÝla�ª]þÜ¥ò¸)aÓ­¥ø<²_Xu1E(â³^€ùÒ¨ö�ûwꊥºÈý·¨“V>óœ,és«Ê='!º!ûaÜïq»———qñâE|üñÇxï½÷Ÿ}öÚí6Þ}÷ø$=§Rõ²u(VaìG­‰@Õ4 ìôü1Íf3#ZÜ@ZÝ#J¶<îÆÉ…ÇHDÇ{*€ÔùQN¦qbii)s’d�:u*#Yóóóùw¢Å)²å*û�)¶¸¸˜åÌ⬜÷à ‰-%[ºÐ@WÖ‘hé¢ €×Àt­+ï…ªgšk�uRb¤DKÛ­ôgVË£²Àç@ÏÑ4ªdEŠª¶GW´ªRËþÒ4ÄqNî9 áþì÷ûûZ¹ù*P÷qJeŠT{N89±ð±‰Ï+ãºÚúUC:^“¸Þ|€ßþö·øÉO~‚¥¥%üêW¿Â÷¾÷=|ó›ßûµ ŒŽ‚h� W†tf§Ÿquã}\Ñb| 'g§ªThü�® ‹Ÿˆli�£8=OÏõx WÛàeU«Õ,.KÕ¬ÕÕÕ,(½Z­f†ÙÝ_ìo»¯íÓ@ìz½ž©iÜ«P³§3ÎH]3$V®f±�èN‚M¢¥$K7ºöû©„†D‹;lnnf±ij¤hœ4ü–§qWÞo4�$j‘6O­Šˆ¿¯äÌÉ�ªZž�þuQ°"Wÿ(nÙ£Žôo_`Cèþ�::IW²å‹€^G¢õ‹_üW®\Á¹sçP­V±¶¶†?üác¿n�ý¡ ZÀ(ƒ¼+�ªé<àùÁƒxòä 666R¨ûÉc|Ô襌 Çey;¢tpêdìU  ©»6fgg±¼¼œ­.yò·o߯ƒ°¾¾Ž­­­, %7æ -ÙwäFJ‘R4Ü�–RÅ^U¶×¤«Šééi,..äÊbœ3C+ù!áà‚צi1¢·m�Ÿrž-_� ù h(™^�qX4¦ê.!i! ÓU†îöÔ{Âàq*�î®T¤}À6+¹R®ñQÚ_$ƒ¬�¥Ò{ÌZÊ¥˜"úÀà^�~œ«Z©¸¯£‚¼ß û�**Iã•:�NF:ùœ†‚3*¢ºé3Æ•¤‹ÈñLûˆÏ—ß{'Y‡A¸/\¸ˆÏ>ûk6™»»»¸~ý.\¸x¤ï_�ý£ Zw­åÁOUÑ¢jA—–îc<_Î{ïÞ=|ýõ×xðàž>}Š�� lnnfÇè*µH‰ŠŒXD.ø®®¨<•ŠÇj—Ýúbzz:Ûvˆei~æÈZ]]Íòd©‚¥uÖ”L‡ÁþÒ�‰ó >0¸>z£ä$…d‹ÄZŸ x÷àt%8ÉÕú³|Mã¨~¿Ÿµ_]žîŠT¹V (g,Gû@›ºªÅó] õ¶¹ ×݆Ú>WÞò²ÃFÞxá;pw>+ܪ†îoÝJê(""’—8l±‡ªÂÞÀçZ¯åîÿIà�w¾…/¾ø®\ùdä½ «Õyœ;w—.=?·À냂hÐE÷ —ì3HšDk{{;#Z7oÞă°±±�­­-4›ÍÌ­Æ€Ð(¨Ù]‡:ãO‘'BW�¥ÚáN•žQÁ•–t°H´–––2’ÅÕ…µZ-#—ª€Ñø�dmlldD‹{ sSQu,Ÿ1kû�hé±$¤êBÔ,òìS='RùîDÈÉ–ß#OÏà±.êîSâêÊËb¢U¶[ÿV)‰›¦|Pòä•õVém÷~RRªe7·š/Œ`æo¦á‹Ûu»]LOOi¢åÐñ‚¿{’-Í� -`pbDz\µç33IUkaaßþö?ãÍ7ßy¡'–µZm̵+0iDëˆ@�Aä*¡ ˆ)4“8?#¡«Aƒ¥YÞ0wŸ_ß•.U!RdC��•h•J¥wc”8c'ÑZYYÁêê*Nœ8‘¿3nÉ•,žÛl63’Å8%ª‘‚’ê“iÒcu¦í @µÏ4Ý„Þ7&®Õ`q¯KŠ`9QQä÷•äh”v»±RCÆv*�w×]¥¼>ŸgÝ›ÓÛ3 "F£Mrì1qGÙ…èÈ#õ&«Ü¼*ôùÐXTä9áPa¤ˆå)ZÑx:‰v1€¿@�‚hÐ…C"£J�M`°4Wª±Œ^¯·'#¼»i`yNT'F¬ßUîç9 LvpÅÀ1{;ÛÆ-ƒØ;�ªÕ*VVV°²²’åÈÒ­ndê �¹» £Ø¬ˆ”x¹Ácß°_ÜåI’/u¥©±Q2E@ü݃øSíqÒíq.¡Ë¯K—(݇Úfª‹$’¼ŸtqQeòú»[(uOôÞÕ%…Ç‘h/¶¦i6›éBølSñ>n©€½JxJ-öÉMz¢‰Èq"¡^DkLÐUƒ£€d ÀÀÊ!dUj¦¦¦Yú÷$ZÛìuA¹±öÏô8U³T± "£¿—ÉÁs˜;ƒmb0»h-›E3^EÓ �ôÑåÊ´$ZÌ9ÆmZ"râq®hy?ºk.Eh¼Ìˆ\¤Œ�-W#¢(­›òÉŒT;­/û€pÏ3ôzÏs{é1Q]=Ø9EµMZžNZôu\ȈÆò7P*•VÞv:�,l@·à:.pUËWJó?ÖŸc}'ö£Ž(0.DkLØï@®.à…�ÑÕhóD_þÜÜÜWŒT®hé»b˜ûÁ4(U¸ô¥« †õóFé¦Ì¥R)SIÈ>55•¹ ™ÃŠªÁk1gãÛèZå¬ßÕmg4h³½Jl�A·®øN>#…*E¶RÇégúw*½FêþEÏ‚ß÷aí‰Þ½ÎÞ¯Q_ò•REµÿnTÕ`“di’Zw}upÂÅIŸ3%�\€ «Ž�R„Ÿ¿«ÔŽçFä+z£ó ˜ ¢uÄ@ß>cttë wæpª×ëÙv€Õ¸¸1uãÉì^=WÉ•¿ÔÓ°©KÍÕ,u�MOOg›13®¡V«agg'K[±¹¹ 8sæ Nž<™¥q`\–*J <óz�¹¼ÿ¨$j ½«gl—’í߈E$*¥:FÃU-%ë)òè±SÑó�ºçü_WªÊ©çæ¹iôYÑÅmEõŒþ�Ê÷ÌüÇEÕ¢º===�N§³'Œ@_ªª¨{Y‰–î&¡ÏlÞÄ(5žé¸�÷L(0.Dk‚(—ËÙBCÌAF ƒæ!ÒÀP733“-ºîïBÌóg�‚”›H²ˆl¹’¥nS’@-‹Ë¶y�™™™�ìÏ|1ØŸ3öùùù¢E—¡ºUAÛÝÝÍHgûQðpä®òø3íWÍa¼ˆcðµÇ×± lO¹øòHJJ©ÒÏT¹É»©gB'*CºY¯öµ*•)åÊÉ—£„T]ç)rõOt¬Ö�'—4ê©•¶G gG×!IÇqG4YÓxGÏòH–5ý>RW�:˜Þ§R©vU ¼ÚíÊå :�çé– ¢5Ah¾&)ß¶¥ßža›) Ü@êRonÍÒï?’er<¦ ‘#ùˆ7~jð#¥EƒU�½Á¬T%ƒã`¦ç………=mb@;ëL•Žñ(Lõ ®B'0úݱà Ò0å…}¡õÔ|]¬««J£º+òHUôYÑr²¬®4’ön·›‘&]@аi’T}çyÐÞívꤩE´<Ãÿ¹7!³›kzÛøw¤ÂEî#NJ¢þ9NF×qÜHC¶··³1ŒÏÇ]Tá«§@¯1”,‹Äí¸(Z§OŸÁÕ«ŸàòåwQ©T»:ö�v»…+W>ÅÚÚnÞ¼  ZEdðu%� 7ûcdÔ81C4�UŸhë^Ç�LÞÀ7�5²^)¢¥A¼ ­¥¥¥7œ’.ÎjiÄ#¢E‚£F™uñüQÃÈe„”úâ £-æ…")SRà®ÉQ‘G¨\•ÓŒZï¨îžcͯ£Êªž£«@I¦;�Î@¶_ã¯4žßkwBPƒµ}Éò{¨Jˆç‹Ú}˜ˆÚ}öºAÝЮ~{WúFï½^/{Ω&ûøs\ÅÄêê*?~„�>úc¦Š8(—+X[[ÃÉ“«Ñ:*P%‹†AóE©lNc¥ŠgìTo˜wJÝ�42în!¢™bdÌYV$Óëg$Jªhèµ*• 3uˆ ÙR©”ÍnUÑÒ­8Ä£G�pîܹ�¬íÌæ¾µµ…�� øÿ9Ižgƒg’V½žN&?ô ð‘2Bên–«†—çReÑ‘ÁO¢ˆ¤iG®Æˆ$§Ü‡y˜ïIõ´ ¾ Žm÷ç•NUG#‚¤íe_º±L‘²¨_Sê¤ÖIŸ[� Ó}:;^KÉéa«l¿R IDATÇì§hüâo3ú(0IDë@�gÝ4æÑ*B?Wh��r¢Iê)’ઌ§Pל—çdkff&KRºººŠµµ5<|ø�?F£ÑȈ .Õ¬õõuT*œ9s'NœÀÂÂ*•Ê€Ò¢n0ögº:Ãuò骉ö�+az�4“Ξ#uÊûÚ¿�®ëñ9zNJiŒ¾‹î««&$™ŒWrÒäåGuÓr½¯R*œ¶WûÓ�¦÷_ž¢æíôsü¹¤»TSS´ß•ÿ£b?j^ê9ó‰ �NS À¸Q­#U]48\ °× 0/S ÌÎΆ¹µ€Á¼P„�H¥býÜ`yÝÝe¤äƒ« °¼¼ŒÕÕUœr#lll`ss3KôÉÜZºE ðÂè¤È–*UN¶"Ø2rnДh•ËeÔëu,//ãäÉ“8uê?~ŒgÏž¡Ñhdç·Z-lnnfyµH´jµZ¶¢§Zð¿i¤46�å#Þ.uqѵKw(�sÔ¯Ú¼·Þ�‰•„¤ÈVô¤~élß Sêø”Â–Gð¢ÿóbÎôµ-Þ¶è<½^¤f’ÜhöõI%ú<f:�Î?ÙR5�ÏvÊ�ìð°‹¼Iã¤\‡W¯~ŠV«‰÷ßÿW,,,ŒtN£ÑÀþçàêÕOÇ\»“FA´ŽœÔÏc­¨héfÔ *Z$Z\™¨ŠVÊU}6B-ž“×=njj*Û(›ªÖÉ“'<\677³s¶¶¶°¹¹‰ÍÍÍÌݸ´´4@´<ë¸.uƒq¶ëÄÀáÔ»`Mª¨¹¨†ƒˆàðó<·nÔ¯Ãꑬˆ iðwž"—"eQ»GU "Ò=sJˆRßEðvD9ä\Eb^·ý¸­þ›£ÊƺÈâØôÙyÝàq�Ä0…x7©DUW{'ãÆõë×ðãÿ/LOO£ÙlŽtÎôô4þå_þ'þýßÿ7Ο¿0òµ>ùäüîw¿C³ÙÄ÷¿ÿ}üà?xÙj §õ€7`QÖdÂI€Æºƒ?S}ñ'�( s#éq‘ò]‹ßq0d¢R¬���LáÒœYº£¦UмXQ{F©¯+|~.û—ªÿÖ@îhå“+7Qṩ²œ”¸R“gˆœXñ:¼Ö(�çIôø±¼~Í{6Ô}çÙô�då©Zz}ϧ¤ÝÅ©:L$ ú"©bÚ fä÷‰Ôë}N#µ5�$éo)úé³? ´Z-ÌÍ•÷EÚûý>ÊåòÈ®FøË_þ‚ï~÷»€K—.á§?ý)~ýë_﻾ñåµkøòÚµ+¯P´Ž|­j¤¹jÏj–¥1Ѭ}?òz¤HDP£ççÑÀ‘h±�F#[mèD‹F&•>ånpC«F|˜"¥ƒ´^K‰Qž:6ìå}¯ß©ò‘,=×ÕJ¿FDþx"™W篟õ>äÅ:¹ÁÒ{‘§”¥Ü6Ñÿ~|Ê •©IÑ}�ª”"]'E¾õxÖCß' UµR«/µ¾J*_ {FG9ß1ÿmM:eÆ(­ÔäkìîîâÃ?Ä�~ô£ì³þð‡h4øóŸÿ<Ž&xIŠÖÀÔÔÔ@ g^ ¸~øð!;}𕱽½�Ã/R:pË®6Œ ¹¶+�žr!“í½¿òÜ{yåFuλ÷yß�BÚ"%+¯ìTÝÕh¥Ü‹ûmSTÏkEâ¥$ËcýRê„~ç÷j”û¨äsÒªë¨9½"åª Xiø½ò•Øq×eœX^^€l,%ž�Ô�£�'oK�4Œ<êó ÷ÈÝV©úûõFAªŸµìˆlõz½Ì¥¨+•dé»Nòú//ŽÎÛ|ˆÈa�|h¹ÙŸùÉÕi¼÷nyy/^ÄÇŒ÷Þ{ðÙgŸ¡ÝnãÝw�OÒÓq*U/[*YU·×'šò#ÏÈöz½Œh1@^±¸¸ˆr¹œÍÚ¨„骾-OJ ðÿ#£ê†+{ 3¯³½½��� ûì3üŸÿóðãÿxàÜf³‰©©)T«Õlå¡þíÅÃŒ‘gì#c@£Õï÷³¬ÛÜ¿°Óé ¤o˜››XaY«ÕP¯×Q«Õ0???�?+ª¯F]ÖíÆ*"Ú¶T{S}0ŠRï§_/UvT�ÈËrýX¯�£Á‰•9ìœT£:yå]_¹*#¹‘=.LŸ+ü”€¥îŤ }õ²1EùNõïaµ“ðÅ ¯ UÒ5^5úíO“èß_üâ¸rå Î�;‡jµŠµµ5üáûu ìÑ:H¹—¸b¯ÛíâÓO?Åââ"ºÝ.Î�;‡3gΠV«áéÓ§(•J˜ŸŸG»Ý0x¢ìÈ)U+OyðÏ#•‡F @–lq{{;#Zt...fjÝÖÖó} ¨×ë$‹+Ý:éÑ :Àå,'D)’]/E¬ü|/ïýŸw?H$¢x©T9~¯£vñïQIVÔ^/#zŽ¢vûçÑï!"!ym÷6ê}s¢›Ã !y}5*T]f›ü7¼x6C5SU—‹y>±ŒTÊI-Ýl¼Ìý¨T*øýï�;wî ÙlâÒ¥K‡îú.°Ñ:$èl.ú12Q']*·n݇~ˆ{÷îáòåËø¯ÿõ¿âí·ßÆÆÆ¦¦¦0??�F£1@‚ô‡îË�ȦWl¬„G˜éÖ€N§“‘ª¥¥%4 4›Môûýl/ÄZ­¶'üÜÜÜžÀ`�³¡ñTU�Ç幄"’¤d!:&Ï%ÉcÔ]ÅŠ�2ø¦Ê�îݨ$+¯üÉ…”k»‡‘¬QÈgt=ïw¯›ß7­§º #¢5J�¯JîÔ««cI¶¢cÙÞIþ—J¥la 7¼ŸžK‹×žÔý­V«¸wï.Þxã,ffF3³;;;¸{÷.ªÕù}_ïìÙ³û>§@7V­C‚îJº€Á¼:$,ív·o߯ŋ133ƒ'NàäÉ“X]]ÅÒÒnÞ¼¹Gñ`ùþ?ß=Î…³a΂Õ ˼M…Š{3öz½,þj}}Íf3‹Åb�?‰Ñüü|F²¨dq€òDެ»¨j@‡¹ORDÂ]«y÷ÎU’¨<¿Ï~LŠä #MÚ6¯C^}¢>È#rºàa˜+JÛ‘G¶¢Ï\©J½ò®§ÿ§úÔÉ–>ÛþÌGDÏù0õšO:öIöòâï&� .â³ÏþŠV«5ò¶N»»»¸~ý.\¸xlŸÁ1 ¢uÈH „$\.—±³³ƒ`ss333ÉZ]]Í–ózü•_Ç�µæYÖÕqfå«ák{{;ÛR‡®Âíííll-’2‚$‹nCMéàÙØõº‘ñd;<ŸRªü>¤f£6�âštÕHË‹ˆATFž±Ì3P)7cTÿfÿEuÉ#®Q{Õ’G¢"u4oACÔ}°§ÌhÑ¿£tܳ­ëó¢÷Ò¡“‰IuýxHppd+õìL ï¼ó-|ñÅßpåÊ'#ï]X­Îãܹó¸téù¹^Dë�0Ì8«§Ñ#yž»ÞNŸ>�3gÎàäÉ“X\\ÌΕdy¬„ÖÉs±>Œ©Ð²t #áét:ÙgÝn­VkO’RM¸7???@²æææ2u)Úž„}PªrNb´íÞ?úî÷#R9FU\ôÚyßGå8ù‰ê­ôv�r]–‘A¯Kª=þ,hÝòH–ïd+Õ7ynà”ÒçÏ ?óÕŸÇUÝŠÜäy{ÒH)íTõZÕ6ðíoÿ3Þ|óí‘Û4==�J¥‚Z­6æÚ˜4 ¢uÈ yQ#ÅÏ îÐgK‰�÷!?w¹æü:)R3,Õ†B��­¨ORõÈ#r¡KýöŽ#"’y؈ÔÛ(Öó áϪÿ=N”J%ÔëuÔëõ‰\¯ÀÑFA´¥R)ÛÃO]i:H0×ÔÌÌ ðÆoà�wÞ¬­­auu5ûAë`•2�êJˆ•&ŽÔ`zŽÅ2œÔõz=´Z-¬¯¯‡b+é"ÉÒ= ©H1VL-' ê.Œ”æÞÞ¼ø%)àFÜIi*VÉïIÞ÷>Wb¡ñi‘R ¯ï '£Ç©çé°ÀßÛ(êæ¸�ú­(0 Dë�AR¹„ºÝn;Òëõ²ÿüs|þùçøÎw¾à¹;ñÌ™38}ú4ž>}ŠF£‘mÆì« õz‘±á`65õ|åÙÙÙ…ƒÇè;áRº©©)Ôëõ�Õ�Às¢U.—C’E%K vDhXßÈàGuW²¥ª†¶I …;+æs…LU$ï#'6®Dí×лB™º7ú™.«�”,GD®RíŠú‡»h2Yí'Þ‹R©”Ýïˆli;¢û¤u‰ˆ_äfNõÕq†ÆŸ±í‡ ½ü­ªÌûÉÅ/ºHÝüÀ ÅSW,»öQR÷ üc¢ Z‡ŒÔþ[ÓÓÓÙÊ;fWçgJ´¶¶¶P«ÕðÆoàôéÓ¸uë677³ý�\E3K‡’¦XP²â$A�¬î§¦¦°¸¸˜%\ÝÚÚÚ£hED À€"Òív÷¬*tׯÍÙ]\J²¸��’“ýÛU%JFqKêlžŸ�r_R÷)ª³–¥ßé}L•9ª2õ‹÷UMª°^w}ΘdÒ·RJM¼�QÛ£º9¹ÔvGí;nPbã1|‡Q¾ûß½^/SÌI¸§¦¦0;;›� $_|n5… å¨u(Pà°P­CFžQÕÙ(݈Õj�?ÆW_}…»wïbww7Ë©µ²²‚O?ý4S´–¡*�^Cá €ª>`“PèqÌ›¥ûê¶:¥R)[‘¼P´ÔÕ©ý 'Žº˜€u¡›‘†\ÛÊA�v˜1Š\1$ªh/ö•ŒDwÉi{öc Rj[¤îø1T X%šJ|Ô¥º”kNË&Éêt:Ù‚Ž¼{ Œ¶,ßû3j«+lQ¹­Ãa»Ü^I²fggGR�òêâào�ñ˜ú¬•J¥ŒlѽOu[‰‰y þœªŠvÔÁ¼‰•Jå°«Rà%Ðn·P.WÐé<�)ˆÖ!#ÊNÍÏi˜úýçù©4¿¹¹‰ëׯã¯ýk–GkeeKKKh·Ûh48qâDF‚<`:2tQI©IÀ`P¹<“`16K3¾ÏÏÏgÊœ-Î\=¥„¾«±Wr¥¹�H9ëÝÙÙÉ®¥®Eu‹¦\JN´^tqÑ-ædOÿ÷ÅÚÿîÓëh]R„"RÇþl±�:�ºÝîÀ¶E»ÆgM‰jž‹ÎŸ>ív;#YÚÿ‘òçÄZÛŸ§´¥úÎÕM¦x¼öï(Äû¸à ”> $:–Ëß>Ÿ5U8ùÛÖPÞSÞ·Ô$%o<98}ú ®^ý—/¿‹J¥zØÕ)°´Û-\¹ò)ÖÖÖpóæ Ñ:täͰ···3· L¥RÁÆÆnܸ�«W¯âòåËX[[ÃÊÊ VVV` »2:säw‘¢åqQ$J´Ô(+1Ó˜`ïFÑÝnw€h1>OÑr%J�®æÌRŽj�a-‡[ûDÆ8º¾+Zl‹ª@Þ�Eä�ÿûµ"¸š‘刼(Xwºó˜ÉŸovv6ëU確ä-*ZºXÀIV”>$õ›ˆˆ©¶=¯N~SmaŽ;RcÊ~155•…!ì—hå)µtr|c耺‘Ið;�Î@Ø‚ÞCŽ?üßWLÃ&$G «««xüø>úè�™*Ràx \®`mm 'O®Dë° >©ÁŸß©!ž<_~ù%1;;›e…ŸžžF½^ÇDZ¶¶6Ë ×wÅ…’º+M<º±±����ŒX¨êÁ€rßjµÐn·6Š®V«YÝIRTYâÌ–ƒ®¦•ðÄ£Þ—/\õ§KŸW꼟<“¿ž‘'½FŠd)òHi¤†E.s/ïuÃQm“�$YårÀ^¥Rc뀿[%R>‘àßsxœð|¼mã½÷þÛ±‹Ózðà>NŸ^û‡­C»ÝÆÕ«ŸàÑ£GÙgÑš F�£ñï8 $!*—ËhµZøê«¯pñâEüÓ?ýΞ=‹ééiœ:u 7nÜÈ(]5Èw5œþre‚¹»è ¤ñäÿsss.E½^Çüü<Êåò€j¤DË\�×ЫªCjL9ˆ–J¥�`k5ªN¶´Oym�Ñ{ãÿG1oìWö¹—2ðÈ–“Fêõ{=CTF5H]ÝzìKs-[�Õ°vhð9ß•8ûñZßèyL³”²‘/¶�* 9HDó\/%>Èq@Õ«ÉR÷" š’lMBè³{\\‡ÜÃ{ïý÷cG² <ï¹|ù]|ôÑ³Ï ¢5aDW^Lˆ£~ÿù¾�4P[[[xðàîß¿�jµŠÙÙYœ={'OžÄÇÑl6³�,šÕ©‚Àº)Ébœ ã½"¤¾ã¶:4Ü ’oµZ$Í“•êË]m,Ý•@刪”ÂkÿFJ¨™™™=D-ed4 žuS…�uW¥0eàµn„*œùÅXø9êêä=å³äÿê’eŸFJ\ŠDªò¦J¿#I�îEDâRŸ¥î�«|Àà.¯C Ö0¼*A¢+OÝÈQ'UŸòTGþ­Ï¢¯“3-WÓ¶QÌÖQG§Ó)HÖ1F¥Rˆ­+ˆÖ„ €yƒ¢Ïê9[ãóàÁÜ»wKKK˜��Źsçðæ›oâã�?Æææ&æççrTE.&W¨~Ðsi7ƒ¤�üÌÌSSS Sûýç«&·¶¶Ðn·3ÕHI–¾TÕb]õ�@-­*u�©KÁ]aŒ×ÚÞÞò£{寂ý¡Ä–å¦îõ01LµI¹ µŽ»¦«B5ýûVU3$u-FÄÈÿvÉÕ¬ˆ@êõF!yD+"Y<çuYM8nÌÌÌ Z­bzz:[1ªé¯'Zúƒã¿SUž¿Ou?ê½ep|¤Ê'E«Àë…‚hä `tÓùL�¤äñãǸ{÷n–ÎauugÏžÅÇŒ§OŸf„Gåsà…¤.?�ãÑU‡4hŒIUQá [[[h6›ØÜÜÌê_­V3å+R´R1=jÔSŠ–î©.  ]MGB¤�³‘ÒäísŨT*íq�zl×0¢•ÕC ß#›–§ŠŽÇ`é9®þŒânsÒ§J„×+ê»hµatlª?¼.©ö¿ªÒó�ýÝùý{UD÷/ï>ës¤/u=z\VD´ ’Uà0Q­CI@4ב„™™4›Mܺu KKK8uêΜ9“m2}÷î]Ôj5Ôjµ=û)ª¤«íäÍ™,"&7º”·Ip8èmll Ýf³‰f³™•³°°0ÃÅ ¥}Ï÷Y0ÕU¦8óU²H5F‰ƒ*(ªº¨‹5ÓÞCö‰±.`à}¦h¦ÔšÈHäÅ2i¹j4=FfX=ò®¯ß©2å+S�è¤HSD¼RD/ÕÖ¨î©Ï ÄÐgXÇ๠í±S£ ïYÕE(üþ<¹;‘e»êJjA´ & ¢u0ꀥD�Änß¾�¥¥%,,, V«auukkk¸sçVWWqúôéƒ ®àc¦v_šO¢B—œf‡žžžFµZE¥R 2›››ÙßÏž=ˮǴP­V±¸¸ˆz½ž•¹5¦Â /0¨n‘hÑÝ5;;›eÓWE‹Ùâù®­Óé ¸,y "¥LiÌ�”Ù�2£Îs‡ùõõ™¼ïýX_±¥.œQ·TÝR„.Êgö*$+y¤µ Z£�c‚ºè�çŠq¥RÉ~GÜ bDî;�Ì8ÑÒ‰�Á+‹ƒ«}õó&�‚hŒjvwwÑh42ÉAîÉ“'¸uëÞxã ìîîb~~§OŸÆ—_~‰»wïâìÙ³{®:'Z1’¼J¥’)ZªÌµÛmt»]ôz=<}útO;4íI–Çk¹Úâõ� UT¢eÝ‘ÁUEK·‰ò”š¥®7Uæœéµµœ”‚–'I®Ä©ñ¡Áb¢VàywµÐsù*UïÏHqŠŽ÷:éwJ°¢ms¢ûà„ו3ï§£!R¬TYæÿ£ÀI“^ƒ*°Þ³^¯7ð[ôß$¯�Ryõº>n(p(ˆÖ@Ê¥”ÂÎÎ�ÆÀtïÞ=<~ü­V ³³³8}ú4Ο?�{÷î¡Ñh Dõër"ÑòŒé4â¼&—V3ÿ ËŸžžÎöéâuÌO·¡­h;ÖoãÍc=%AT†ëƒ; „C ‚– ¼p[’lé=î¾�Ôo³_×?çyy}Â{§ñ,²œYê®!ÑÒ´º=JЏæ‘-=Ö¿ãKUQ%ù)’¥Ï®>×yd«À«Á¬QúVÕMWŸt¬qâä“ö¢ß†«³<.5Ñ'z½>ýôܼy­ÖÖHçT«óxë­·qùò»c®]�I£ Z„L‘ÑFº4P›1EµZ �F�?ÆÖÖV¦h}ûÛ߯ýû÷R¤– IDAT±±±‘]#¥œêpc§+ô”é É$ ÌÏÄ©(›¥ñYZž®ØSƒéF–ýàƒ+_Ó1 ÉŠT¿G¹ÐAŸ.VöÛã®[.R�ÚN*x¼“ª¨ž^GdU·�çÛ˜h~£HÕÊ»Vêù�È–¯òÔçoÑòës7îwBS`>0J�¼«Ëïƒ'æó055•Åhú¤'zòÔ`/:°?W¯~ŠV«‰÷ßÿW,,,ŒtN£ÑÀþçàêÕOÇ\»“FA´ ‘åçyÆ@å|%@333¸sçnܸ�Ó§OcvvçÏŸÇêê*¾þúkܹsg Šƒ&g“N2"¥AWÐñšJ¢tPc<TCËWùéKOÂûÄI�~¦ƒ±&­_äšHÕ%ïþ¸±Æ“ø9¹ˆž þíp’å}ÕIË&�^äò\YÚ?ž$eÜœ «R¦ÊË�ŒŸº S{O:"Õ,Õ?Ézu°ù›ÎC¤ÞòoªYîêã»?©²ø¿O¶”äEnËqãúõkøñ�ÿ¦§§Ñl6G:gzzÿò/ÿÿþïÿçÏ_ùZŸ|ò ~÷»ß¡Ùlâûßÿ>~ðƒ¼lµ Œ Ç'ƒÛk†Ôìj?3.Î+• q÷î]\»v <ÀÌÌ .^¼ˆ7ß|·o߯íÛ·ñìÙ³,‘g¿ßß“¥Ý÷#t`¤¢/Í.Î6Ð…X«Õ²˜¬ÅÅEÔjµŒìED+å.ãßÑ «ut /_ )Xy1I~�"2è}Å ¶u%gD"X®ŠÔõ½ý©zøwO×oµZÍ^\¡:??Ÿ‘òr¹¼'›Cc©¢Å®JE÷ÛU©èµÂ䄽 Z�aý™R?£ÕÍ©mŸFM�ÅwMJÑjµZ˜›+ïë™ë÷¹ëÇh®FøË_þ‚ï~÷»€K—.á§?ý)~ýë_﻾ñåµkøòÚµ+¯P´ ©ü~‰Öììlf0oß¾�¯¾ú óóóXZZ™3gpáÂüéOÂ�7055…¥¥¥¢¥y¥ÔmçJ ݚǃÁò2ùvvvÀ¸2w–“º”K(Bôyޠ˺*áИ,'YNþ†å_òk—J/öB0@è4ã=‘çÞLµ7¥¬y}ôxí5z\UêǨ�RÙRŠ–¾kݼ�Z/‹ç)›)"¬Ÿï7A�Ñ0 ÑÒcõxpWšù·O8üš©1Øë²œ¹r¼Ì3·ßÉÀ/ùK¼ÿþûøÍo~8þ<~þóŸãg?ûY‘Yþ¡P´ ‘»éeP*•Ðn·³ ë[·n᫯¾ÂDZµµ…jµŠ .à“O>Á�7Ðh4’êG©TÂÜÜ\¶��A…ÎF}Vªÿ³LˆUåÃÝM‘Û)5ƒ�^ѬØ¡F.RÂc¶Xç¼ëi{Ô¸ªÕn·÷ÄC¥ž‡¼üQJzò\�üÎÛê÷$"�‘›0BD²T¡HÅXE.Z½–»óT©”!u…¬Àd­"Õßhô§&Àh$Û¿?LìgÜzÕuww~ø!~ô£eŸýð‡?D£ÑÀŸÿüçq4©ÀK¢P´&€H}ðfÀh¦Z­fff°¸¸ˆ­­-|ýõ׸xñbF´.^¼ˆõõuܼyßúÖ·ÎUb055•elg6y¯#Á€oUŠx,Ëò}9cM¹˜øwD~F%Y)÷ƒ£{�-ëínfâ�¶ ‰ˆ2Ë ™d[=L•À(ˆ�ÏKž!Ñcø¿~矧T.-C¿O][�'|µ 唪¦Ð î2ôúx=½ ‘;r¿JA�W‡ß'¾û³êÊiJáåZ£’´I ß/¹¿ÿ>:�.\xÏU¯×±¼¼Œ›7oŽõÚö‡‚hö33Wøý���ÿ0‡J¥‚z½Ž{÷îáÁƒxôèúý>NŸ>�ï|ç;ø¿ÿ÷ÿâÞ½{¸xñâÀÀ¤…±U$HI$H¶\� ™¡1õ�/OÑâ~ƒîFeÆ'6l³“,?7¥¶D÷NÏ¥;„}Z*•²Ä©Z¾G÷Ýë‘jk"mSdSåòœ¼öT}"£êup¢å“�aÄ2ªc�ÉBû,HÖÑºêšw¿ÆV¥~ßѳ¯/%î‡áF7É[^^€=I¡Ÿ%Zy*`JÉÊ[mèdMÛÏkD÷g´ÀäÁñ!E´rcê+õœ”i™yÇqÀg=40^ ¥ª)˪8G®jþ=iLâ¹ûÅ/~�+W®àܹs¨V«X[[Ãþð‡±_·ÀþP­#„a?L1%5zÎÎÎ666’OÞ¹s÷ïßÇ“'OP¯×qêÔ)œ?›››øûßÿŽjµŠ“'Of•4žý~?Ë ®n·QÚ “ƒ » =q§[_ɘŠÕH‘,ý›uÐóÝØó;7ºb�ÿ»B¹1RJ�†ºÙôxÏ)äusÑRŠ¢¾r’õ“—£F,OÑÒ?ÞëHqSb Æø©ªêõõ~Òÿ#’¨*k¡f-¸¢¥DkØ3šš8ƒH»b¬ï“³ç�J¸¨nï•J¿ÿýïqçÎ4›M\ºtéPÚZ Ñšœ½,Ô°¤Êí÷ûØÚÚÊöµëv»øúë¯Q¯×ñÖ[oaii çÎ�ËV!þéOÂÛo¿�wÞysss™ÑÜÚÚB·ÛP«öÖSU ²W’¥uOµÛI’ÂyDKËŒÊa?jº�óˆ®EµÎˉԧèšÜxÚ]`º7¢~îdÇï}J Òz鱑˜ê{uåШ«Wó¦Eª‚—§××|[ªÞi›ý|m¯B]•êŽ,��ƒŸòైÀ‹øHŸ@DnC ½ðƒÐg#Z¹8IT«UÜ»wo¼q6û-ÃÎÎîÞ½‹ju~ß×;{öì¾Ï)�ÆAÇ�DkÌP5å 0ªáhµZ(—˘žžÆÓ§OqåÊT«U¼ùæ›8uêþËù/˜��Å•+WðÕW_azz‹‹‹ÙŒ³Õje 6_uÕWÎÎÎfÆÙQiwQaÊS´Xïè\‚í^j Äç9N´¼¬”ÍÊIÒ�æíáJÄZFDòÜõ>Uæ¼�ý9õlö¬;ÍSHÐ\ Ó@úH�‹ p´("ÏíT ©p„ƒ*ÛóÈñYФÆTBUÍõñAáÏ�×gF y“‰qàÂ…‹øì³¿¢Õj�ìØÝÝÅõë×páÂÅâ¹}ÍP­1BÓ†•ÅA…Æp~~�N�F÷ïßÇîî.VVVð­o} §OŸÆÊÊ >üðC\»v §N�B¹\F¹\Þ³—á(ðNÏ£QæÊB_áçeh{#—+YyDËωÈ�çS)/ü\�W5F¯éDJ�Q7¢ÖI—·Gq)Qß»Ë$oÆï‰X£>ÓëësœÊ毱2ѽd|D¤¬yÛ#—RtŒ>ÿ…š5|µæA�ÄIW//Æ(þ¦¢|uyäˆÝÜÑwѤdxç�oá‹/þ†+W>yïÂjuçÎ�Ç¥KÏÏ-ðú  Zcĸ¥ëHiR2Òét033“Åkݾ}ÿûß±´´„ÅÅEœ;w³³³hµZøÓŸþ„Û·ogåpºŸ¸•È}`óÕ†ªdx¬”—‘Z‰–÷wjpŽTÿŒíW7”’¡¹‹ê�z©›Ì¯Ã—.w�Ú¢fP\Éò ŸõE²”2Àžë Ø›¶AûšePÅ#y÷8=ï3¶+2¶ZÇÈ¥q‚ò1µÇI•Æ•*¹ÒÔ+þ{ŠTI½×Ñó®Ï…«Õ“|ðíoÿ3Þ|óí‘ ÿôô4*• jµÚ˜kW`Ò(ˆÖ˜pØ1Ðét0;;›%2ýûßÿŽ/¿ü'OžÄw¾óœ;wgΜA¿ßGµZÅW_}…[·náÖ­[#+ì茈ícèn?GjpŒf»)’W¯¼MúîÀë®Ê–“‹¨þªÆ¨QQ•¯×ë¡\.ˆ] Ñ >"9^owû)é#O£‹´�"wŸ»úüÚl_´bDö"òëŸkJm¯Ö¯ÀpŒCíI¹Þõ;Ïo§Ä^ã·ô7Û￈Ô¸Ähµ¡'žäX\*•P¯×Q¯×'vÍGÑ“`¬¦§§1??�™™ܸq«««xë­·P¯×±¸¸ˆííílõáòò2ªÕ*?~œmáãжq dy”Q:ˆ(Qi¤Eа7Þ-�d�2K�\k>˜³óˆ–Ÿ›Wýßã¾"Wž5\^VD´´'9T–¢k颖­†,E´ô˜¨¿”äéÊÀÔýv¤ 5cŒ´ ·áá!zV#2ï÷3ú�i:ÒÉ Ë÷U»ú›Ðï ˜4 ¢5ŒcÆ8*šÍ&Êåræ†zöì>ÿüs¼óÎ;¸{÷.fffP¯×ñöÛoÈùõzår<سo–•ÿu¦©+ÕW3œp¹‘×ÐŒêy1‘ÁÎ#¼£(hŒ1áw‘›+U†Ç6¥®©íd€¼¦ÁàêD'2jHôÞé1Npü¥mP¢¥J�ÇÐø½rÃæ š+Z–R"]ó¸]Òï¹Ø ¢5:zRè÷Í×®+ø"0¼¾º>ýÚQö‰*9z¾+Zúrxä®÷NËrO3w»aôlîN¶ÔMåËòöG÷�ïÚnÍÔïý¤JÝ눃R�¹h O¥ôã<$@•(-GeLMMe÷×)a48ê(—Ëh·ÛÙŽŽÚíÊå :�6€‚h�£þ¸‡  A´ûÃx­ëׯã‹/¾Àêê*Ξ=‹ÝÝ]T*,//�Ö××±¾¾ŽÍÍM<{öl@Y·½ðø‰¼àÓÈU¨ ˆº RŠ °WÍb_égjD\Ñ™pdü#pÐW•�ÿkyÏÕ_¿S(áé÷ûY¸;ÆÉÑììlÀÎw�ù“@ñ¾érw/K‰³æDSÅAï•¶_Ÿ7�™ŠÔ ^?ê?慠tU{ü‰ÖA‡£„H!> 믗I��§ôêuÙ¶ÍŸqÿíès9l"›§puœ>}W¯~‚Ë—ßE¥R=ìêØÚí®\ùkkk¸yó€‚h�û�ÏšÔÀøÏ›7obmm o½õ>|ˆ……”J%,,,`aa‹‹‹XXX@½^Çüü<ÚíöI_ ³ª]‘ŠC8Éâ€Ë8¢ÙÙYt»Ý�'�³p"–ÔÀšr=²^ÃÈ–ªZî¾�ͶuÅT*FD X¤¼¹�‰ŽqOÝtÃä®~§ŸylK´Ò0 :�Ü’Qž,7Öy}튩*§Q¼¿×‡E ÷;>�¢hñ;�hñ³ÔÄðhòòº¸WWWñøñ#|ôÑ3U¤Àñ@¹\ÁÚÚNž\-ˆÖ¸q�äé ÊjµZØÚÚB¥RÁìì,666píÚ5\ºt ·o߯™3gP©T²M©™f~~•J%Û ÑW9Ñóˆyý#ãLE‚IV©Ìð:N¬œ¨¹¢å‹ÍšóH›Æˆ¨ ‹„ªÛ픣Añîúc?Eðv±œ”ú©„•s;9ñ•Xº^索IyqtQš%Zþ]ª�ѽQ×¥ºDý¾‘ {lßëˆÃRd^…h�z¼† (Yæ³Àg(E´ô7íWôzÇG�+0ÿ Dëý~?‹³ªÕjèt:øê«¯pãÆ Ü¾}•J§N�ʈÉžr“j%ZnS Œ"å:ìv»9œH.<Þ(Eº"%щ‰Ïzµ=ÆûÍÏ'Iá L'WN²¢ÙvD \acYZŽ×‹ßÓHEãJ^S¤Ëã¶´>JœR¯ˆhE*¡g…»¡Yï¹¹¹,!®cM¾¹% †Ý ÿ�ùoÙ ·O¬RdË_£Ôå¨áùJï6Þ{ï¿»8­îãô鵨:´Ûm\½ú =z”}V­c€ƒœ¥·ÛíleZµZE«Õ­[·ðùçŸgF˜qZsss¨V«Y\—»›€½[^(ø¹»stðS÷ÏôôtgCeˆ)#8 jŽ'7â �øè ë1SúJC/ÛÉ ÁÜÜÜR•ºûÁcÊ¢ã"Duu㣠ØÏ¾JTI�+t¼?QP»+[ïåý¬uŽÚÅcÑ=[.—3‚833“=�N­V+{u:�=ùÞ  R÷íUÏóçUŸ[WÈýÙˆžaŸÌð<ÿ8áÁƒ{xï½ÿ~ìHV R©àòåwñÑGÌ>+ˆÖýà_9ÛÝÝE«ÕB­VÃüü<�¾þúk|þùç¨ÕjX^^Æ…  Û¾‡Æ.µñ²’-%%ü<�h)ÙÚÞÞÆôôt§EbÍf#%*�¬D :&5PG¤� ÑÒÿy-n¶­œTã�j×0bÂw'Œn`¸Z+Šyr¢¥å¥VF/ï7W'¢ö8ÉRe�DKI~·ÛÅöö6Úíö¢U`<د*´%)5±àïÅW9§^‘Û0ÕŽã€N§S�¬cŒJ¥:[W­CÂËÎÝnóó󘛛Ãââ"?~Œ¯¾ú §N�Â… Ðn·Ñëõ0=== (xŒ�G\u`t¤­RéyÂΙ™™EKÝsÃÈ”+ý;ï8%Y~nêXÜ5~ˆÄŠn-%PÞG±¦fy¦Ú©Ÿ“ðº[ÑÉMJÑò¸:wýú5#·Ž¿»+Õ ]†¼ÿ2óÖÖVF²Úí"Xx\دûMÝêûAªlwæ)Yþ “¨ÌÍÍ…©4m…ªƒyÈ3ty„QÛ© ™?W&µ÷¿Nøw¯×Ë2ÈGåä)RÞ·ÃÈžÿíÄQ_J^#Eɯãä*�Tå}æ÷ÅSKÏŸ ªX ~g\V·ÛÍ’èòõº&&=*Øï¦ ¶Æí½ \eÝ/ÉŠÔö£>&x}Q­1áUgsãc¢€„äÑ£Gxøð!îß¿�ÙÙYÌÎÎfÇ+±Ñœ7ú6%[înôø%¦s ‘UÃî5•­(.#šÍ²Ž)5kT8)rÕËx_9]OWé©ê•çbK©l"’ÃÏ¢Ü]©ó�`yÛõíƒT§\>|vÊårF²è°Ñh`ss›››ÉšxoF!M®j¿êu=þsÉJ=§ZV�‡�‚h�IˆŽ9lp"„’dݹs'KZêé ”h¹º¤Aß W–4ð]ãqty¾$Ý3/põîšJõµÈ)7—ŸãGJÝ Q“W›ÜX9áŠ\œ®VåÕm˜‚–꣨ ‘¨õ‰ú1rUús077—ïw:lnnbccOŸ>Åææf±ºpBØï¥cDÞ¹‘J]Û>yõ5Š{¾@�q¢ ZcÀqùQs¥Ww5 Ü»w·o߯ÚÚfffP­>ßþAQ%:F®('`J´\ÉðÄ–:ûþf‘ªEÐxû}ÈSaôóaˆ-'¬ÃÜÜÜÀ9JÂU)ð2¼=6¿­×ú;Îë{ÿý§Ž¥âË¿=A©žýÖ‡=—Ѥ ¯>ãB¯×çŸ~‚›7¯£ÕÚéœjuo½õ6._~w̵+0iDk 8.Ù©Ix語ÇjÝ»w/#Y$I© †�PEª’Æ.ñº]†T¬¢rUR÷¡;½.ëìåDŠKJµŠŒË¨ƒ·#*5$YQÚ'†ÑJ¹0S×�Ú7*ÉÊ#_£|‘\�»aà;ÉSdôûý,&k}}Ïž=ÃÆÆFA² îªË;n\u¬ôsôwÎk›`LW¯~ŠV«‰÷ßÿW,,,ŒtN£ÑÀþçàêÕOÇ\»“FA´þÁAÉgÏžáÞ½{¨T*XXXÈ\z$DQ Fäªs¢Åkx‚K&)ÕìâZ.ë5Jž)¯¤e˜ÛÁÕEŠ”Œ¢)‘ò<`lk¢íeý½|'ŠÑýˆT§Ôñ©ökyNÜR÷ÉÉ¢’Dö‰§f|gž6¾ommaccOž<ÁúúzOX`²p—/0œàÃ(ûQFÏ®ïÞ ¿!N¾ôûHaŸ®_¿†ÿøazzÍfs¤s¦§§ñ/ÿò?ñïÿþ¿qþü…‘¯õÉ'Ÿàw¿ûšÍ&¾ÿýïã?øÁËV»À˜°ÿ„'’x™ü1Gš°ÛíâÞ½{xüø1666Ðjµ²D—š+ ˆå}—ú#²Ås™å;ÊÓä ˆ’%ÍQEì//WÉ™g•O�QÝQú?ë¯9¡øò¥ëyYÛSª[Ê]è'Ïåâuv¸j•­ßGñsþÌÌÌ \.£R©dûkV*”J%ììì ­‚d.Ôž *÷ÏöKj¢óSd‹¯Ô†æ©ò'I¶Z­ææÊûRØúý>ÊåòÈ®FøË_þ‚ï~÷»€K—.á§?ý)~ýë_﻾ñåµkøòÚµ+¯P´&Œa±‡�~¿?0Ëd\ÌÆÆjµºÝ.J¥R¦h)HÒ˜ûˆ±TQÜVj0ô4E4ö*E8»ÕígT¹âqQXUxRn7¿&�õz³/ìY�HR¡Ä’[ ù¬ß Mä�úØÉN¤èy?§ÚõYÊ€é½'©Tknn.[a S5�µ¾¾ŽÍÍÍc㆑sþ�ãÈˤvð2uB¢'íÑd"o’1IUëežÝýÚ†_þò—xÿý÷ñ›ßüpþüyüüç?ÇÏ~ö³"³üÂñ”`Ž)&ù#ß8@²~³¾¾žå¹¢â¢p¢¥J�§w6ëÌË×ä«Óœé9NÚ¼­©ÏR™ÎÝÈŒ¢)h<è[•,.Hà‹JO¥Rɉæ–Ru!"ƒZÏ<*õÀžq IDATŠú*ïþEÊ–¶�õ�ÚU*=߀*Ö³gϲ†“ÀqU¢'�Q&Jú¼¤‚Û÷s=w)G„Kǘ<’å˜ä$7OE1†ÝÝ]|øá‡øÑ�~”}öÃþ�FþóŸÇѤ/‰BÑš 4xó(Á­ÝÝÝ,9äüü<€ îéÇcûý~¦Xx U6|q£ž"G£“&]½ÞxŸ!æ“saµZ=V¹æF�…zçߘxüó—­CA´&ˆ£ê:�m~Lpå׿æ&¦§§Q«ÕW§ÓA¯×@×às`oªÂþÝÎÎÎ@šã«=(× ¯£ËÀU9Š,ýn"Õ‡õUpÖ®×Ô$¯)W^D¶TÑò…T¸ò\)— ë™RñRÆVU#ÔåI×I•¬gÏžáÙ³gh6›cÛ¿ÐI hª˜Œ‘óXÁøüÉ“'ÙwŽ ¢u€xƒ|Tàõ¢¢Å¯T*annÕjµZ À E‰–%W´‘¢åÁ´|y¾K�+ÓïIFJ¥çÁæšÇ+µjŠç§\…®ÒEíñz8hØžÝÝÝ�x3í¯ÔŠCu#êVE4VÝn7ÛÐWsjZ ¿‘�Rµ/åÒ{¢qY v§¡¤±$vvvÐjµÐl6±±±��� 4�,‰îAA »“A}.œhësì.êȽ}‘÷¼c‰IOÇ©T½l¨dTÝ ¢5Ae—„¼\b?77‡ÅÅEìîîbnn 8}ú4ž={†õõullld):�NH–H.t:Ÿ]+ÑRBÀAVÕ™™™Œ¤è>�ÀÞ_ƒsUÙÊKS@D*†~]s÷¡ž©rêå/ ¶§2Ȫ*�H©pÃÚ©bìO#Y.—ÔÖ‡ñX�F#[ax�J–Ö'Ú³SŸ?m“Y–�t¾Î`ûFI� ßiì$?ŸžžÆüüüÉRåÔNðùñ#$nžG/E¢›lMâùàƒðÛßþ?ùÉO°´´„_ýêWøÞ÷¾‡o~ó›c¿v�ÑQ­ â(-Ƨ(Z­fffÐn·3bÃý§¦¦Ðív±±±‘ôn·›%W¥tõ!€=9µ"²E¡1a$mJ¶ÜÅ¡ K’×a™¬�¯êDÄ)ehýØæt—• ÈEÃãu¿H¾”+áòüCZŽ·… �ˆh´Â�¹±Ê幄èÖlµZÁzúô)šÍ&¶¶FÏ4 ¥Ri`¥£ÖAïM jÌ™ÃKïÿQú #óyÇæAÕ½”æÏ¹+ÔDµZÅâââÀJd}Þ86ð~¥VR¡Vå:"Y¾âù°ÈÖ$ž“_üâ¸rå Î�;‡jµŠµµ5üáûu ìÑš ŽâŠC…¦ý~ív­V ­V •J%···±¾¾ž f4Jîªb¹Ñ¢‹O3ÃóÅ{± u_uÇAØÕ BbW�8øó<íýÛËÔcR†È¿�Ô"5jÙÊs‰¨ÁaÛz½Þ@‚Tuï*áòœGÞ®fñ>¨2èîB*YT/x=æg#É¢’Õjµp� É¢ëÒ÷›Ô~×Ï]ÅÑÅ!©{?I(AÑ{A”J¥d+�$û#©ç€Ïëàj4ÌÍÍa~~>[½¬ã…ÿ¶};&%Lº?bÔ¦”’å¿óIBW=�uµŽŠJ¥‚ßÿþ÷¸sçšÍ&.]ºtè.Ó{Q­Ò¯æ7*—ËYŒV«ÕBµZÅÜÜ\6˜¨ñvw‚ÇéÖ;¼Ž’,wy©QQW¢+ªŽEî5‘H%Ê˽¥Ç¤ŒV䌔*Ö1EâtpÖvGdK�ÓX$ÖU³Òw»Ý=qu$BJ*ü=Rø�“¬jµŠjµš¹|¸2U7‡~öì677Ñl6œd)Á"É*—˹çø=R5U?W×÷a@•%%üŽˆ”Ýý(;y.q}ôyc¿©*>33ƒZ­–�Ñ3­ez¾¨N©º8Ñâq‡åæ­V«¸wï.Þxãìž”8)ìììàîÝ»¨Vç÷}½³gÏîûœitÜXA´ dH¹Ã¶¶¶Ðh4P«Õ0??�Z­†N§“  ®N©¡ÒY©º'¹Ý�­Óà+Ñ"ùr·ƒBVOk ÆÓI–žQb—üó¼�\¿�È–Ÿ7LÑÒÿ½Ôª˜1[Ü<¼Ûí¬¸Óûe£Ï#YìKªT³æççȉ&À}òä ž›ô:aöÆ-ùsM¼þ£ªaôw£Ä;R£¾Õº;øœªâ˜Š[ŒÎ? ÂU*•P¯×Q¯×'~íGÑšŽš¬�‡”�”�ñ³³³˜ššB½^ÏT«n·ÊþZ6€ŒDqÀäñª`u:”Ëå=q[œ#—‰»ÇXo}¹âÆw®òYº– ~ç}8J?kiŸs…è¹Q§\2ìW;RÄÒ]iÚv 0ßÙÙÉv IæªÂ�� ´Z­‘H–Æô±®NpýÙô üùùùìo®ºÔ|L$lS´ÓWÀê‚�íímÌÌÌd‹4& ¿·ÚW)õŠï©øÆ~poO�·R¨Â¤å*ùŽ6Ÿç±úûÕI�0ÿ­ùïZËËû½h  ¢5fè@w\T­Ô Ë æ�� ÔjµÌ•¸»»‹v»®B00�TQ8ØÒàqïDÝC‘3ZKõ„P#¢+Ù5¬QÀ·»ã"#¡Ç;Á‰T0?'U–«mÚ&¿¦BçÝPEõsƒ3Êõ¼ßTíÑ•T;;;h·Ûèv»hµZo4ØÜ܉�0¨Þ]|‘Û…¹­‹æ`ÞúÀGwŸè»~îîG'6@:—æeEJƒ>'dÑl_É•÷½×1"pîæÑ:jÿóaàûîîn–Â�¯f³¹§ý4’/’PRÁÝͳ³³$‹‹ª–º £m€×G¥JI€º¨H´ºÝî@ާI¤{Ðû«EŸA'[þ=Ï�Æ¡WŸT™Ò¾óm¥üZ®fùoˆ]ö©þI}=ß  ¢U`R;¿—J¥,¯V¹\F­VËV{U«ÕŒ u:�Ì©aPÐpˆÓ¢ rkk ÕjuORàEÌFT®Ú/H#gÿ4ÜàÕE¦å«sc5ŒüDH,%Yn´´>QÙ‘‘É»¾’:½v¤n©JȾS…ÄXÏçÞ…ûÙzjêŦÂN´Tyâ‹õ(•JyÝøšŸŸÏÈ—Þ?U´ôÞ{óÞ+Ñâ³DâÏ“ �ÞÝøšP£kT¸BMüøH…J�“§@ùßúlz]‘Ubéup×s�‡…‚hMÇif¥†ß¥î�X­V3ÅA•ºZ¸¹q*^ƒ Ùr…„q=¾’xAóÍ ×^IVD¶|ÖÝO'An$x®+,Ѭ~èuJ¥Ò@àw´ �ï14U‚;ÇEÌ™Åø©a ÉròÅøðšºr•Š–º=–ö¡_‡Ê¦»*=&Mï#Ÿ{ÙO"NKë¬ÿ{_ò}”ß[¤Œ¾ÌøãÄͯéõ‰”¯h²à X¼�z~j’3ŠÊv”qúô\½ú ._~•Jõ°«S`h·[¸råS¬­­áæÍ ¢5v·¸‚Æ� Y¡1¢Š133“) LPéêLžªåà2zµµ•Õ…©"—0¨Æñ]Ý?ê Scîç³½¼FJˆXdp´®y®'Zžj@�O•£uã1Tž4…“Šê¢ª'®üh;IÚ¨j±Üaù‚¼}®†¸"©`Þ6bjjj`›MNÊ—öWK¤ê%û À@€¼bnn;;;Y<⸉–æ*óº{Ÿ�艗|m‡+¯)h:‰‰®ï¿ÿè\½®+®)’ÆïSÄs?í9jX]]ÅãÇ�ðÑGÌT‘Çårkkk8yrµ Z“Â(òõQU´J¥RFl€Á�ŠD«Ýn£^¯c~~sssYêŸÉú`šæä"Ñj6›˜™™A¥RÉ�9ëÿ@LÔýäÖ]~¼–)RÞV=6¥0¸ÁSò¡3z­oj¶‘,¶A]|N²¸¢Æ%E±R¬-–5Ê=uõ*…ˆlöûý,­1MPê$‹D(RU”ð2ÞÉIYt¿¸xƒŠÖ¸â5+"-©F棅" ·¢ã}BÝK?ßUf�!ÔvŽB£q`”öEôzÇ«¾^Àµ‚h½$Ž*9:Hø ÌÁ�Ý„Ló Kí[Àó©zu:�‘2%3è˜dK³}3½ƒÏ’£¿U½àÀÎÏ ~¯Š�Ì>³vƒ�‘«#O™‹â„œð¥ÊçËhê 'ZN¨Ô:‰#q•dy úÿcïëb$»ª«wUu×u÷üh{<Ç&4X‰”1J)¼ „@¬8râXŠ„„x"JòBdå!â%HyBÉC"„x”ð!…„0"HD¶Y Âr&‰ç¯§»g꿪»ê{hÖéuWís«ª§«º{æn©TÝ·î=ÿ÷ìuÖÞg³É0"1p?@Y0W`ÁÇ‹? ´”=ãº`AÁmŒ{ùX'˜¯ù3«?ÚƒˆúrùŒëbmó¥òÆ�ÆT”‰Ô4ôyík�uŠ�yMË{tÜÇ6§E677­ßïÙÕ«¿~êü´nß¾e.\|dËÐëõìÚµWmss3\Ë€ÖÈQ€­½„ÏÀÃD Ÿ,3 ;kµZpŒÇnDÄUB„y˜vVVV¬Ûíº¾<ÚžpÂg°¿ÒHQó�Çüy ƒÆh.¿§,óù|S`ÅÀphÅ”2û‡™øeñÁÆeúiÅÌgì»fæŒÎm€±ì�îß´yMÛSÈò€–,÷HÇ+£¾o1°å}N‹Ü¾}Ó®^ý�S²21+—ËvåʳöÊ+ß×2 uH™d�Fæ efSïôƒ"‚;À€VµZ çöz½´ÊårBy3[“ €€™%v³•Ëå° 1¼l«åÎÃnO>¢‡Á §©mÍíÊ,Ðb�Å÷¤ùƒ)ÄcDû ”ËÁá(hÍ2?¨)—Ÿc6‹ëå�/e�ùwˆмò(È‚x}ÉåTÖ�ËÀ‹¯lžLcuO«ôûý d�b)—+ ߺ h-XfyÙOÚ„ÀåÁj^Á®Á¤Ö¤P(X£Ñ ¾Óé$X"(È\.—`¼VVV‚Òijý~ߚͦ­®®?äsŠ2/àR…Wö:ù+øRÅ«ŒYlÏiLKŸwR⽟Á•þά›°ð·ž#É; Ä�B ìîîNôŸ™M˜�c€ÀcßXIÇÀê¥àcfêjµšðÓðâtù£~@øðØáv×±‚àªGá§5sÄ3€áöÕô´þŒø eÐÅDZ¹06<ðæ±» ž”©Ä‚B 1FU™3m‡´ÂI›g3ytä¡Z³0 G‘›=DNúËðT,C˜”™™ 䈃T;�΄"ë…ç0±By¢ÿ“ 1»X‰òq-؉æ)Ò˜Ò™–XyxlUl"�I �)ƒ¥f4/DBYyá8Ö•š =Ó"úÏP`S³FØ…Çæeƒ�iáç9Œ%˜”Ô‘‡‚8€-õ;ä²ôãùJe?X$vò·šÍD�'„,jÊäv�-Пº‰Á{Gbï� ûRñ¢GY&AÊRy}í-†´ŽZ?Îÿk^�Òœ�ÉÉ’‡h-’ÂÔE�”·ÙÁÖsžäà»…ãQvww­Ûíçy6Gh™Yð ÂaÕ|ˆu§Ó XhaK¾šO¸Ìü;×Ç3“(xRñ€€®úY‘ñªÜS\uÌV Àefö‹}°<ÆŠý°b‘á=h-+|�iQP6 tÅØ¦Xh1 Ë SžÇÌÄX-®§—¾™öæ¬N§Ý™yÑñ‘P¹O<¦&Í$¨&^òÓ#lzÅ=l†��,�Íä<½:hùÙ|Ì÷(ÛK3“LŽS Å’½`G+º 6K†~`…†”`­V ÀH�6 ƒ`räÝ‹õz=<ßl6¦CŽ}1˜5uU[=CPno²f&÷¦¥ÇL•úþðïžÒTÈåÒ{cl�Äq´ÔQÞc8 |<æ€ ×�Ë åË}¢ 5 „ê½øV€¦á<Åí9nsÝÙAžÁ|áÿ 3% ³=ä ÷»¶�?-¯¶•×^\W®§vbéq[#p,Æü6P{{ ˆÛ`–÷Ö/º¸: æÂÑhd¯½öª]¿þ–u»�™ž©Tªö®w=eW®<»àÒe²ly(�Ö2äQsãñÁwˆš”0 3[°ººL}½^/˜õà8ofÁÜPÀŠ�PÇã±moo‡3 …B8Óf ˜ÏÌÌUª¨ƒe£¼I^Wù :Ó–øfàdf “+{.ìÀÍ€‰™,ÝYÈ÷ëÿ¨òЀ`“—íŒvdP† KÛ7Ö~Üæìoã�ùØ5�ÙVv‹ïçqÀ@‹™Úñxü …‚u»]«T* &mÐâáÓÄ+Ê¥qí´Þ^Üè¸fgt-¯.¦W€w>Õ+‹ö—_�õ¥óê§uákž,sξví5ëvÛöüó`�Fc¦gšÍ¦}ç;ß¶k×^[pé2Y¶<4@K•f&G+Ê|ðÄov`^áÕäÊÊJ`´šÍfÂôˆŠðuA”qV¥RÉêõz¸gggÇ:�ŽíììØÚÚšÕjµ²Øœ– 3mŽ­‚u\¥™=¦‰‚ e0ð½²�Y+f¶Æ�Y+5ë1« æIô%>imÁ;ÚPõëJcPbi§ª´ßT3p`@¹Xñ£þø ]˜µ …‚µZ­À¨Âü­±ÈT>ÓÄ’Êh©ùOÛÂk´iŒuÒþÀâ@ìƒhi�ÈSæ ã‚ûÝ»GÍÕ±:yéh»Æ˜ÛEÉ[o½iÏ=÷ûV(¬ÝnÏôL¡P°�|ä£öµ¯}ÅžxâòÌy½úê«öå/ÙÚí¶}üã·O|â‡-v& ’´t Ÿ6Y&M|œ”ôqJ£…‰™Ù³ƒÈàpŽÇζ~¿Ì1¿ˆÁÀV¡PH˜ÅÚí¶µÛmk4aç”%vˆ™%MYª`tuÏÀ'mRÖûõ>ú>yf��Ñò¡Iøx ŸŽ M7ưh]ñ›úÛ1HRs¡úuq¾ èAØç‡A939샆6„ó=›,5P+Ú¢¦2Ot\p›ª/ƒ°X_°xã[Û ÏbG'o2ˆ!:±…Ê,àÊû; �ëÂÉc¹T.KºÝ®‹¥¹a¥RifS£™Ù�~ô#ûЇ>dŸúÔ§ì™gž±—^zÉ^~ùeûìg?{˜bgòsùÙ›oš™ÙÓ¿ð G’^h�fð𨂟ã6Cår;áOÓV¥ð×êt:Öëõ¬ßï':VÌ|¬ +ÖJ¥L�pŽÇÑ<v tÔ”0+ÐJ›àù^`ñõ˜£1Ïäæ}Ô÷*æØ®Îðiì…‚,8•R´Mby Ï‘žŸQEÌíÄÏaLp(e°hiÛkÙcuW°Å–M©lfð�ÇÖétí? ›…omOn¥0Ñ>Ö´P.°(7Ìò0�¢­òx<"4‹7´�µ½Ó|õº¦¥éy÷p;ÅÆå¢ep­2où^~ùe{þùçí‹_ü¢™™=ñÄö™Ï|Æ>ýéOg‘åO�$L‡§l�ÖrŸщÑ,¹¢ÅD]*•‹e�É; ±±ßï§vV–¼+Ìì€]Öï÷­ÕjY»Ý¶n·v'ærÁOÍvµ±xÀHÁ‘®öU�ó=1°[E{ÌÊŠ6�Ç.h‚¢W‡öXÜ,Vò\¯_½› Ó@–~ëGY;NOÝe†r)R0Áõ‚p^|Ÿ¦ÍàŸó@[c·+û,á0AèÃ~¿?×¼ œ†´¼~ÖúáYo\`�ƒ…/‹áÝæ�àVóU™ärÇÀ§¥ãMï×w›¯-S�ßÞÞž}÷»ßµ¯~õ«áÚ'?ùI{ñÅí‡?ü¡}øÃ^hþ™Ì.¦ÃÓ ¶–%�bûð¤…ÿ™¹)‹V©T“&˜+žÀÁJõûýÀà°£±šÒlºÔöB¾Ëœ»ÇãÅ6~ëÖ-ë÷ûvùò�?W½^·�� »~ýúBóÎd>yhœá3Y¬¤­œ´ªÕª™%C% ƒ ŒÌ,LÔp†‡ÿ&yuæ… M0»»»¶³³c•JÅ�FÈ+sf‹¼:yõQ–eC¥÷ÄÚŽ•‚™M(Q³ƒƒ´=6 à‹Á•~˜x ) Hé·Ö< •PYT!z@m¯û¼q‚ûZ}üØG�Áy ¢nl2„?!0£ƒ-„113«Õj¶¶¶€6xôûýTGy+øV6uS³¨ŽIfótŒ1ÀâÆ&ê6‹7Sð¡ä8ø]%ÍÇQÇTs¥õâw’û žÛÏ›C–%£ÑbA€®š± =-¨irTþRó”A¯¶ £•ÉT‰1˜Ì´ðÂcÈ‚B‚s;>ÌÂ@y²2V°¥ e§Ó±V«õsÇÓâ»Á¾(f>0ŠÕ•ÿço-�w�—&›®<öʉ-öÅR ¥>i\no'·i dÅ€—Yë•Ö†1`ªí¦àŠÓá ™ ºØ·�çve'ÖŸ|@-äÃ,"Ú ­ÕÕUë÷ûÖëõ¦ô4‰tϬÍÁAõY®‹·Ó”Íüì•ÙB\GŸÌ²ÔONû1 À{uÐv`à© µ¦§Ì;ß³LY´ÝØØ03³íííÄõ­­­ð[&'CК¦,2y´…ÍR6Ñáïñx¶5ë93øjÁ´Â‡õB�šMœÄÎÄÑhv b‡Ä3GñJ?m’×Up À·§À@hûáwU†l&ôâdi@VDx€J™Ži Óc̰°x LY.3€BLø^ä«l�î>T¦NÛ„Ó>â±Á�99|ÃÞÞž‹ÅÀªcü áôjµj•J%ŒñYEýÒP£i¬"îÙÛÛ›ðC=Õôêù{a<öz½pÀ{·Ûuû_cmé{ƒ6Žõ§å�öM›•¥Â³ÓW‹’E›766ìÉ'Ÿ´ÿøÇvõêU33{ã�7¬×ëٳϞž §‹dª[†…í:4Ë@V&qñƳP4X1�F£P+úÁ`�`À „`Fä•4ûcáLÒPhYív;(6o¥Ì&]Q«I"Æ€xmà±||�=t™Á›g<§v 6ÊuaðÄ쌂ŽYY,n=^ yVf@;M+j•Á€‰™�–Óä~ó€ßËy0£ªQæÙÁ}oo/òcšŸÀb U*•¬Ó™¾]_YýfS ö�²´¼1˦WÝ|Â}afÁ©¿ÛíZ¯×›¸Ï½ ¤ô~/?Í[JÞ;9+KÅm»LY†>}ñÅíK_ú’½ð ¶¾¾nŸÿüçíƒü ½ûÝï^xÞ™Ì.ŒV&™xZ˜Ì”²à4 §Z˜½˜+“„Þ£J˜WãÅbÑ:�Ž�ÇckµZA± ‡ÃD¸VB1Ö÷á7Ïô1+ã« \#¸«’÷Â8¤ù`i{x±¤<Ÿ,~&­.û¥÷§±|Úž9�•§‚b�ÁðLGÌÚ!~FMYhŒ;ä@¢»lííí%‚àh1p)•JÁäˆ]{[+M¸½µot|¦1ˆÜç±þå¨ï¨ /švww-ŸÏÛp8´n·vøêøƒ=÷3ÑScR§±T ®¼wÙ›³‚±EÈ2têç>÷9{ýõ×íÒ¥KV©TìâÅ‹öÍo~sáùf2Ÿd@ë!¬¼%0-°�+Åz½nëëë��0bE³!û”Ë剃ìC%±²²bÃáÐvvv‚)¤T*%¶§#|«²ÆßiÌŠ2,{†o�‘Âoü»·“P�ÁÍ,*< ¡u‰±xZUDœn¬´MÒÚ*¦4¹½bizŽþ^ZÚ6^_zŒ‹š¾Ø|È»ò<£oØçIMrfÓã)år¹ð,ê¤ãÅ€Åo(;û†!¼Cf61Þr¹\0öû}»ÿ¾µZ-·Ü ì¼wAA¿÷éøˆ¥Éó÷—‚s¾×cN—%p“˜U·b|Í#årÙ¾þõ¯ÛÛo¿mívÛžyæ™c–™Äeb×a¸Á¤ _ŸE¯ê1¹óÙh4„ ó O$ÌÒ FV©T eÖ€™ê�3æF£‘íììFÁÌ‚)“dz‚´+ ÜÏÊ�+<�©Rð¤þX`”•çÅ &´<ÌJ†™ŸØ„ž¦8ç]œÚWS�¦mË×kw ì·kO®_ h°p]¸ŸbÎåÌdMSž0Or8Ù܆ 9«««aSÊÉ@Ð <Êà¶×ëE��™E™3°e¶.–Æ<Ì«åwJßÏ_lR©TìæÍöØc�P;MvwwíÆ�V©TçÎïñÇŸû™LârÔ~cYx‡‡Pòù|…B!øF-paÃÄnvp8r½^,U§Ó±û÷ïÛx¼¿Ý��ˆ±`«×ëY¯× `Q³ PX}W*•„²„èŠ:¦È!ê?¥ÀË6j*Œ�(ÞÉÅçzNÏøæ:)ÈRfN™;ô³x(¯¦¼þ�g<ÄÚ4ío •ÕÒû•ÍÑ@¦Ü6ú?‡‰PÒ`¥07ªYY�À³™%â ¥í8ŒÅ­‚éàõãrxía–ô›âw’ ö›ìv»‰2a|ò�Ñ*ÜG<Ötc‚Ç*);è øÕ÷PÇ®>Ëwrùò“öÆ?±n·;á듽½={ë­7íòå'3Âã!“‡æ¬ÃGYxåžËå‚3nµZ €1}ŽÒ”¨l“‚€Z­”O§Ó±v»mãñ8 BŒ¹ÝÝ]ëõza…¯QºñŒúÏ@Qà°_ž\Ù%f Se–Œã¤,³ Þ4ƒ¹Ýs|çwŽYî_ÏÆ3¢ìÞ*ž—çÛÂæMC�¥Çœqû©¤Í+ÜÖ ´Ð®Üþz?/ P/õ�b€tÕÍÁJÑÆ`#8>?Ë&BœÃY(ì$Üï÷'ΖY�u=a£+MŒ%ìDdÿÞmˆ|yµ»··Ì8ß�u•ÙQ!y[­VrÃá00d¼s,Ílá�ý›ËÌL­4ó!³nê|ͦ/�‰R…Ââ)U:1`¦éèÿ\oOÑi»°’ñÊ–…Ÿg¥�ûô˜!�åB[2â1£ÀHƒù�ceíî¥ÍfÓ¶··íÞ½{Öjµ¬×ë%ÒÄØ�Fvÿþ}ët:/+[ÉS§•Í�Ça\à~¯_<çy/4LôÜ_:«hs™<ðÄó�šºccÖûx¢sÑQ-0g•\nßu¢^¯/-ÏLN®d@ë” Ø«B¡@˜LþzÞvã±2IsŽöƆ‚OqcÅ“ Å*]W±aÝn7%Á;¼<ÿ$f*௅|ƒ�U*ÛÝÝ ¬EÚä¬`ÀcPÔ× UÁ Kã`Aá±Y”A> ¤ÒÀ——³§”ø¾˜É&v?ú(�ùŠ™õP.Ï�‡M…Þs/i~s ÀÌÌeq¿X63çrñßòù¼µZ-»wïžÝ½{×¶¶¶¬ÙlZ·ÛM¤‡²îîî ¥ÁJ\âƒqÂã ¬‡£à>Uš7V¹ŽxϹÿ²`–çzFÔ”ªà†f Ž••T–Öüøæ±§ã–Çé²�V&™°d¦ÃS,»“åh´-}4Y«Õš`p¸3&VZžÀô§â)&�T1aò™j˜dá3Æ‚4ð›^X‘©Ÿ’‚<8ÛãY(`>Ã�Òå2{>L^Ì+ïngî;­/ÈòÎ<Ô�A:Ìн^Ïnß¾m7nÜ@ëîÝ»ÁL áÁ½Eß§íÐÄåÄ€Ûï+Ÿ³è^5­z‚q–æ¬Ía/ü:�NX¼@Ôÿ�ýÎð;Äcµô½Öñ?#cJ3Éä¸$Z§X À¨9Å»_Í*i˜:îªðÎ"(B6}@‰AÙòÎ.0ˆñÅ;¤XÁ±]�é!¸/&P~6‚™#žÿ“*.ä©&-Ï7†�Ü9b¸:¾kÞj:ŠbAz�ÍJ1Óš÷ç© �…ÓàoïoüÏÎêZeI¹_Q2.CÁ–ö£¦ï1ˆ(+úu0X«Õ²f³i·nÝ ŸÍÍMk6›ád‚N§Àoòˆ À·�šíø}ævDŸpÀT¤å�òØ»®¬±÷ñ‘B¼#ï­–™Ç˜?b~[\¶4FËc¨T4�;-R*•¬×ë…Ì™œ.éõºV*•­ßÿ¹ä1—'“9E•*¶“³I%´ƒ�moo[µZ “QZ@Å4sN.wp�4ÒFؤǦ˜Gòùý� årÙîÝ»&k63`5Œ`ph¯V«V, 6K@HÈÞÞ^ˆÄÀGÁMl5Ì ‹Ù°*lžb€åmPV%<0‚ò@<Т ˆ*\þMýdô½î¥Ë€†Á‚Þë•LÆX€"(p=#¾w¸ííù]1„û™¹ÅØk·Û¶µµe;;;Á\¸½½m÷ïßÀõ@Œ¸YdCš01r›ïíí%BN(#Äy(È* ®—úpòY�º@Èç÷C±h؈ápNj0;ˆó¥æA… ®ô]ô®yï§2£Ì³œ&°uáÂ;ìÚµWíÊ•g­\®wq2™Cz½®½þúkvñâE»~ý¿Í,Z§N”ê�ÇáxÄ âUf³Ù NòPFÓá=óB>Ÿ+\Z0íŒF£„�I¿ß·ñøàðér¹&aLÐØˆ2ÁDÔjµ¬^¯Ûîînpäã1‹¯ ûÒLc?ÐÆjŠRö�ƒ¿ôœÝc«sZ1 fBdQ¦ŠŸç{4½yÙþ�™+ö£‹±œLÌÜ' Na²Òžü,bS)s‰ú2ÐBú{¯×³f³i[[[vçÎ�Àdh™øz;f6µ™ù&pŒQ0ÇÈË3ÅqZžÒ‰•ᰨх¤×ë…÷‹ô —S��g5�{fûøòÆ&Ú“/:æuñr’åüùóv÷òÊ÷+’Éé�R©l/^´sçÎg@ëaøi!샂œ]ÆÛÉÓÄS® 0Å�uj6›Ön·­Ýn‡I—#j›Y0s"®Ê “‹?ü¿³³“ð‚3ý4 æ +qf£¦191Ó³7Ì`)ÐÂõK¨ìƒ2D±¾àgõšg*æ4dyÊ)–ßã±\ìs¦ìŠgÖ�d&ÂS¼è7�¼�1Ã&k�I¦ÌˆÖå„ã=Â9ܼyÓnܸawïÞ ;y!1Æ7Mb¾xlJgQ'6=²ßŸ. ¸¾ 6õ½©×ëÖh4ЪT*‰HõÜ÷ܾÌ&ãýÂ"¾xÊö¢�pMûšÛ†7®ÌbÖ~U6ú4Éht:@a&“¢ÓA´N™¤M…B!,|˜�á³Í&ýBby)£ðf*—Ë…³wvvìÞ½{áXfyVVV¬Ýn‡P 0?ðªØó1C™Á$ ½ØÎJ~L‡™¹fUiÂ@@Óðb`©_–·“ÐSÞßÈ �•Æ4�Åéèª^¿Y8/”'f†ô€¡š~ø>M^¾Òê`�o6„ËàŽû�c§1˜ä:óæ‹ÑhdÝnךÍfçpãÆ »qã†moo'vÀNó‰ŒÕOÍe\o˜ÆÕ®aZð7À ÇÜŠÛ4??lTÁþ�˜;XØïì5D3¼�û×b �ûÒ[„ÄÚÏÌ?F+�¹?‰²¹¹iý~Ï®^ýõSç§uûö-»páâ#[†^¯g×®½j›››áZ´N™Ä&õ|>Ÿ`²ð�¶�còœõHž5/h�F#»{÷®Ý½{ךÍf˜DÙï7Ø3›P \Çr¹lgÏžµ[·nÙÞÞžµÛíàç5­9X™+`4KšT è¯“:®1kÅæª˜£;Òàï˜iÿs™T¹{Œ• +'N í QÓÆoiÖ:NXù³_”ú¥i�µmÕ À ±ÊÌ&�)âcš¸ýùœ@®Ò‚Ù@ëæÍ›vóæMÛÙÙI‰yY,Px׫@6ï)hñãuæÐ v=¦åbÇw¼›ÌL1àFÛ⾴çѮœ/àtqhó˜óêâïo{’åöí›võêoœ:�•ɾκråY{å•ï‡k§hÍKÍ¥œ–—€ ¦9^ÉA�t»Ý™|šôyUà¬Øòù|8Ëp<‡mð;;;á~øÌ`¥ ÿ™r¹lÕj5~d/äÑï÷­Óé„ÿÙ¹z»¥Œ¸bÊʩڑ'jªÙ_Mw±Åü±Ò‘öƒþÍ€eÔ{=¦ŠÆ3jZ\Í#æïÂí3ñxmà8(tÔ›M‹ºËSÇ;>0³i}Ù ‰sÿ¶¶¶l{{;qÜbx1ӔƦzÂeœÆ,Î:ïxãRÛÓ,i¢SV L¿3ðãsÈ@œËžÕ±_Á=žÓ¾2~œ÷,mã�yoÁx’¥ßïg ëK¹\IøÖ�h ¥“üi=Ç!ãñ8¨»¢À ííí…ŠÓ“ ôy±p…›7oÚÿüÏÿ$âx1ð¾¾ngΜ±�� «T*vþüù`fÄ :—Û? %ƒ6ä+›Ù�cu.7é”ËKÍzZ·ÐRðÀ,ŠúßL3Izí‰üø›WôÓÒ`“ ÿæ1vª€T9³É’C3Lc ™uU¬¢ E'A6“ÁtØjµ `fvîܹ„/&ö��»qã†íîîZµZµjµLŠ�+ÿY@B 0 lÙß«R©ÿµXü,®/§)+®›2^Ú†iÿ#U0žé��›9h'›¥4m'žùÎ3_¥1/iuá6Q�wÐñ;­cŒŸóB˜Y‚qÑã� Äa*W†‹Û')À¿ðÎ�;!~V«Õ²^¯7õ]*ü£ª<áú€íQ 5‹x¾h èoÌ43Sè�ÙÉùÍ (‘3Š"%f>ds&~çºxõã±5o›f’É"äD­eœÉrDWÜÜpÖe3Ùp8 ÁG£‘�9sÆÎ�;—p:æ”777íÖ­[¶¾¾n…BÁ*•Jb§Ø/€Lþi’Ëå‚S:(êQ«Õ¬V«%àF]øyþf°¤«n4©‚ˆ­ Ó” ‚ u^fŇiœ;Ç VÁ–e½b剉*04ª²d  ÅŠ”ÓÑØWH“Ë eͬ‹ú ñ8`…޲�I ¶³³cwîܱÍÍÍÀh1ÐJQÛ³-”�Y�ðÎtmÄL¡Ç q¿ðYë|V#cöc<Œ0Ó¦,Ì&™,fšu¡�ö~)“œ®LŽ[N$Ђx+ÞìeYžèd…¿y"�÷ã�03󯯡��� ø´8Â4�kµš5�à$ŸÏç&E”,ʠ¾Q¼•»R©X­V³z½>q¨´:${½Ù¤?PlÒgVkZ›jûòÿZ U@‰ã_Æãƒ ™êhÍÿ£Üc7+Њ½ZVæpJgoÛ×4¦12ȇÃ<(ØÒ±Âg{¢l0±÷z½˜l–š =F‹Í›óUnËÀ,³ƒ Á ´ÐFiÌ*Ø,5›³Ÿ(ƒ”£˜ƒy xfgY\·Ø»ªïb h�¦ð™<\r"�+¾–�¬å ”!ÌpfI¥¼»»ký~ߚͦmooÛx<¶µµµpT&½ñø`Çü¤F£‘ݹsǶ··­X,N0Vˆ'©Š\‡òær¹°Ý~`•J%€,øgñ$�f¶Ãu]y+ðÔgñ[l®f<üî­è±# !5 @<†„ýt´ÐQ6‹ÄÆü£x ©YÉl2Ž3OÌ€ð‡M]½^/aÒfæKÓ6Û3Ýn×:�ŽmmmÙææ¦Ý¹s'ÞÀòúÝ3ó„N�vNãøa<Ó€0÷-�N‡ÛZ_ô!=5Mô�àw‰Çª.,Ò|=“©·Xaò²�Öh4²×^{Õ®_˺ÝÉ“;<©Tªö®w=eW®<»àÒe²l9‘@Ë,©Ð—°–�ßIvŽ… Î�~¿o­VËvvv¬X,Úúúzð»b†  U(ÂN¯���Ç�õÊår�¹‡Ai›%�ÛUØy¾R©Øúúz"†bÿèjØZfÊEÙVlh§˜ã¯*€iŠPWó`…J¥RhWŽ2ÏŠ#€@UÀpà2F  Âm¢Ïƒp’€Öææ¦u»ÝêÁ‹»†ñ¨U9`è´öyPѶQ°¿:FÕ„çùU2ØU?¸ieÔE‹÷áûÙLî-\ô݈1v\G[Ë�k×^³n·mÏ?ÿÖh4fz¦ÙlÚw¾óm»víµ—.“eˉZf‡‹+s”y>êâ)^�hvÀ ˜™�9sÆ�†•Ëå˜È`~;S(¬^¯[·Û Çë …p>#òáC¤qOZ€D€­jµjµZ-¡]ñ4 e6ÁcxÒŸeÌz×=³·3ZðÓ�Γ„yŽ�‡Ó”ZL”­ÓrÏùï\.7 V�–²êE™ËåÎÿðåë÷ûì‡�9Ã"¡ÝnÛöö¶íììØÎÎN uVåî±*Þ‚6`…ð¥c”ÙÌYEÙ$eýs{z›¦åñœýõ]cP[Üx ‘X9¸^iá`!o½õ¦=÷Üï[¡PÇžM“B¡`ùÈGík_ûŠ=ñÄå™ózõÕWíË_þ²µÛmûøÇ?nŸøÄ'[ìL$'hy¦Žeæ™IRQò19Pþp¢Åo0Õˆñ³ØÅÄ«ÛJ¥bõzÝîÝ»g÷ïß·\n—!‚›"¨i>Ÿ“{¿ßŸ‰æB<ËÎûiþ4ªÜqÍ,S í�&¬À˜óØ% d•J¥Pøf±I@gKª™5­¸G¿cŒH¬žü­m Ь»"=PªÊßZf”<¢§3[L£yY IDAT¥Ê!Eôðp(]„%ét:Öl6­ÕjY·ÛM˜ÒPï(¯ ¦P–^ÛMko0;j6Ö¶çg¸ÿy,3kÍ}„çp�ñžGføic-�™óFZgË’n·kÅbiî¾-•J3›ÍÌ~ô£Ù‡>ô!ûÔ§>eÏ<óŒ½ôÒKöòË/Ûg?ûÙÃ;“ŸËÏÞ|ÓÌÌžþ…_8’ôN,Ðb™u5žÉÑK.— ¦ÂÁ`LXÌZaÃ�´!˜Y{e¶¿’ÛÚÚ²{÷îÙx<¶õõõà‹”ÏïqƒIžŽ·šÍçóV­V­R©„¯uמxPWV‚žbÕU:~WQ&)¦Tcìœ�aö›…“¸‡»áp˜ˆ;å1Y\tyÀ)¦ÓÚP�–)ϼƒƒEh±òïõzlÇ�‚³»²}a ´àø®ýŠñêõÛ, ¢›$fíü¼úã©Ó¿‚8./·!÷Þa оÀgž]•óŠž”íšå>”;¼—©GàÍ[¾—_~Ùžþyûâ¿hffO<ñ„}æ3Ÿ±OúÓYdù$'heàjy¢ ›Ø8¼B§Ó Iƒ�U*ët:‰£uÌ’»¡lõ˜0V£Ñ~dîn·˜-°9jòƒùPM¼ ì7(JuZW?­Mp ßÊrÅX¢´¿½<™©B»2xÕ�Êp!�=á¿=öŠ•o ª‚‹)w.úÌ3ñ1HÀ˜ƒ‰åAìc<²YˆãqL‹žYtéœMÔf“Îà1Ϋ‹¶·£×n³Ìu N(¹y¡¦‹:x›7h!}´ßQË4 «÷¬@ËÛ4±LF åX¤ìííÙw¿û]ûêW¿®}ò“Ÿ´_|Ñ~øÃÚ‡?üá…æŸÉìr¢�V&Ç#Pö˜¨Ù½ßïÛ�;w¬Û톰 ­VË�F"º4›Â<% GïF£&ö{÷îÙêꪭ¯¯[±X´jµšˆÅT­V­Ùl&ÊŒtp˜6›/=å‚z*ØRð¡ì×4%™6¹Æ”0x—!6qŸ¶ÐÆÊ^°(«Âõe�åm‘×:xÊ.Ærqf©øÜLÄz2ê‹3;ᨿ!vŠàæß™aEÁˆáì>�ñð˜=eLôo¯�gaþ¦‰ÞÃ@”ûKÃ=è¸V(Œ'ýðnãE�ÏØf~/øÿ´±ç1YËv†ß/Ïbó»uë–õû}»|ùÀŸ«^¯ÛÆÆ†]¿~}¡yg2Ÿd@+3;8ßÐÌ‚³:ûo€%êõzá€ÝN§&cޏŽg X@Að„ßh4,ŸÏÛÖÖ– k6›V.—C¸öëÁAÔ¬ÀŽÕjµPVݹä­äYA¦í¤Rð…ïYMG€SAÙ¿,-M�Ÿ˜@ûÆØ,UpêÆíåÕÉcËð7+3¾LúÀóÙb'=€&‚i"¤Æàp8LðÍÊ–�>^èÔcù¸ Úê×4M¸M´�geµø>,‚P?.¿<�F p/‹ý‰½�(‹Þë½{±ç+€Ñ~âz¡ž ¼A€wòý J˜åÓ{b {Ññ¥u›UIs;˜Y¢|GÅXycá($mì§Õ_YSîKý[{Ë”e­Ï}îsöúë¯Û¥K—¬R©ØÅ‹í›ßüæÂóÍd>É€V&f6©q>Lˆëëëvùòe{ßûÞg¿üË¿lÃáЮ_¿nׯ_·3gÎØÝ»w'Ì�lÎa¤&=3K€4„jÈår6 lkk˪Õjpj†¯§é�8ø„y GÁ€2A¬½x ª8M(gN+&|¿šºÔ'`‹•�¶hq¹ Éì€QAÁŠ .»šÑÔ\ªL¦²jÜÆšB4 +•JQ K2�Bœ5R|ä’ÙÁ.=UÈÊhyì¡:ˆ38ç2Î#±gØ¿*MÐÇ:[žX`ajôÌ| ¶ÒL×ÚGhCËf´°`™4ÏÛÆårÙ¾þõ¯ÛÛo¿mívÛžy晥›H3™.ÐÊdB†Ãaˆß4�­ßï[£Ñ° .ØåË—í™gž ;¿îÝ»gµZÍnݺ•pDövR)à2›TXf@R±X ‡V#m\Ã}ž�2Z NbŒ––Sïá¿y2÷@Òa‰™ÈTù+àbðcf‰ß9ê>ü�ØtжÆÉj<'L¬˨â)=¯ý¸nÊj)› ­ ùrº¡ffû¨À,Ƥ²Z16QA° ×{ ¥íõ ¢ïÐ"ØŒ îó£ÎgV6KÛ�ïIZ±4-•JÅnÞ¼a�=öxÂä�&»»»vãÆ «Tªsç÷øã�ÏýL&q9j¿± he„'R[çs­V«V¯×Ã5+žÑÎG£ý€¦…B!85«x¦+Ï—C6?x`Íc9<Î*š–šyd�aR†MAV¯× @ L€*û­©éŒÔEWà(M«{Œ5ˆµ¿Ùt å±Øì€ñÂl„MªÈ3—Ë%Ú@û5´be›x¨Ù*-Íil–2i1 ø ‚´8³…C½.‚Xtž0óY5ÏÞû�´—°ôòå'í�7~æ­YdooÏÞzëM»|ùÉ…çLŽO2 •Iœ•‡—|oo/˜ðq½R©X­V Ýì@y²Â†ð„Û�†{Ô¬¸ººÂ= kµZ~S±•®²j1Óƒ–SÐU«ßGÌtä1b³ÆŠLÁƒŽK†çàµÛí&OF_rÄ›B[²”LUª1†Ae»bŒ¦2Z¨—Á /�kسgL‰‚½‚F|Mû+«8MÒØ®ÎYÌÚ±¼8¿E€,. ·×ã("ï½@úº‰÷i_«Ù‘Eç€eÉÓOÿ¢ýô§ÿi¯¿þêÌgV*U»té {æ™ýg3yx$Z™a ° Åb1-Äã#nÌ,ø©èäéÅÂáߨWÊââcp4‹oKÚ šË‚¿±ZæçUѰâKYž‰„:ÀïšC»ò3³ƒØfÝn7Ü ¦‡�0*‹6�¬T*Y¿ßO°Y^ÿ˜%wéymÅõöÀç4S�‚ƒ4E¨l˜w=ö,(+íi±•Zg´Ÿ‚ÖS¹,i4öž÷¼×ÞùΧfî_0öµZmÁ¥ËdÙ’­LÌlrç®AÉ—Ëåp˜4Ÿ½g6©½U(¬i@‹ÙuBö§åÅòVßÊfpÝ™UãØRl^ô”>ÅbÑÌ’«W/j¹§¨cì‘7éyŠÂc¼bŠ”Y ¤—ư(xàru¬ yXØÈÀŒÙ¡½^/€ŽŠ¯ÁN=†�M‘1@Å~J^]”ÉPP%ª¾y1… ÑÝ�Ãá08ó£�`+�â¸`£Ñ(JõPÅ�¿geC<†ÒìfÉqë™ÚgÉg<ž<½á(œÓ9-;�Ó˜xÀ@ßD˜S¼*jN�-¼è)“|”ït&™V2 •IBb &ÌXtwÜÏÏyéÆvz)À‡ZÇLžrSPÁJž�¿t°ÂÓÉ:�{PaÁ€Ác„p�Ïh4J(3ì4T�굋žÈõT�Å¿y éx@ËY…B!xì(Ðâ@«�~¿â§-<§LRìÞà˜(ó©c;'gɃNJÊêêj"h탊‚Eä« È“f–ÿ ´¸ øÀtMW}y·¨Š–ã›C2ÉdÙr,@Ë£�39^A(³ŸV˜PäÈòØ#þM©ü˜¯’´æ‘£¥>2,œ§¦5ØÒ<ç×Üì—…k`s˜ÍÂîPn/î#~¿NŠ™ôÔaÞYÞÊ_Í l<°›˜=epX�Å€…MkÇÌ; Î+/êÆl˜O6Ý©IKÃch½¸ÞˆFÚ ¬¼üÓÚ}_, 7›Zãñ8q~cšè& ŒqÄ‹óDPZÿª™PÛ‡2´ êªãŸ4§o¯<êó–ËåBì;ÈaÁ–'^{ Üº�†�—ýà™½<ô½›µ\üìi�óçÏÛÝ»›öÊ+߬H&§CJ¥²]¼xÑÎ�;¼@Ël±ÑŒ39¼@¡+—Ë–Ïç­R©X½^·jµØ€áph½^ÏÚí¶õûý‰c&b J•÷áÉwee%(SN›çǦ5fVØ$à¢Ï"o”MËèÉ4€¥À’Óf& â9l{Ïk™¼úƒ-Q`«fHf°<Àë;U˜1öŠófà¨Ïh¾p¤�F‰#†BÐfÚš&º3Ö†^ݸ}ÓDWFëóbBh¥ �#¦�“¸ŸkFœrðÞêNX¼Ç:¦ñŒîbNË'í}JS|ßi‘Ñ(#"N«èÐÍL‡� Ä¶�ó$ U­V­R©X£Ñ°Z­³a6ìt:hÅL&ÓV¨cˆÍøèaÁ :D0€`3&ü­ÎµºKŽÿÖ6ó”î÷ê©uÖzxß nÔ„Çæ7¾Ÿë¯}¡`‹ÛI£¥{uævñÆO¬Î̪y€Mc3±‰ÏÌBü/¤_ÁN§3|˜%Á+³n;ô Lû,`ŒïÑwC7 ¤ ·�öLý¹\ΪժÕjµpð8Ió 3�eç ÊhñÁÊÜhW7Eà^üÏ̯7�Ä€–²Ó ›››Öï÷ìêÕ_?u~Z·oß² .>²eèõzvíÚ«¶¹¹®Í·­+“‡B<…ÿ+°=�Ñhd¶±±a�F#Dï÷ûÖív­ÓéØp8œzpjŒ•ñvò$�À›z�š_8N’ÇÜx€�óÖßù>ýh�ô9¯ÎiÌ—‚ ýV†(¦ˆÙÇJ�Úõ£~Xš�¶«~<Âk¾®¦KŒV²š‡§¤óù|Ø 1‹(£µHÅÀÞðþ‡OšwÔ”æ@Åíc–4“rXõ�š·^±E̼Øõˆßh±‘}²8ž›²ÌÓ|½1Ê÷ébæ° zÙrûöÍŸûg�.�•ɾ_ä•+ÏÚí۷µŒÑz%6Ùx“ûÙ³gíÂ… vþüy[__~3ý~?0Zf–Z1   Ä›\Í#œ¡ ¸|˜Ü5ò´:Ù{&«X9=sR¬cJ×ÕßÉ«;+¤ÃŒ‹æÅ×µ,h°ú;”¹/ 1ðä�â˜Lïç4 øÇãñ„?ã•EÛp{Èþn^Û•°â÷vjâ3xÜG³¸S€éc_Ê|>Ÿ`|ÁNbÑ„…“ž•9�0PV�Ã=�/=J �-”<`ê•—-¿ÿÓêvZX­~¿Ÿ�¬S,år%á[—­LÌ,9ù×j5k·Û¶¶¶f�?þ¸]¼xÑΟ?okkkÁŒV·Û5³ 5�ýaF&f&AY°b�FÖï÷'€ |ŠÒØlAÒ¸Þã™&ø/-�©Jm£Ñd€EýžúÆãqÂ? ÏèïÌjyl?Çÿk}=�奣mÅq¼Ø:Öö^Ú³-¸Ø®?®çƒŠî„Õ3ù<™7ßÕÕU«T*!¬›ÁáËÈ»)y‚šæfÍ›Á¾Ö!üËfI°Wè_7¼°Rðé1àZ&vki€ð´€¬L>yh�VŒæÎÄž„š666ìüùóvöìY[__·jµv´õz=k6›¶³³cfû¦G¬,y¥­¦J•¨�ìù£pž,^ˆƒ˜ù0æGæ™vÒ~çûæw³°k³€-ϱžËÄlŸ®< +¯–›û6–&ŽÒ0r U͇Á’™ß:°;ƒÁ`¢½yü(xê1&²I‡Ç›«1F½� óÈÊÊŠ•J¥ƒÄõávh·Û¶²²b�NÇ …B…qX6‹ëÈ‚]� Å~WlĘäñ§cßÞ{c»bL˜·0Ê$“eËC ´Ì”ÀIÜáxT«è£Uè«««¶¾¾nçÎ� þY•J%(ív»Öl6­ÛíZ±X´r¹”šÆÄñ˜5£ðÊåaÖʘw ² íD�&9Þ]ˆëìWÂeã4b +6‘{€Åÿ1vÏc’ôo½¦@‹âµÌ ld<_5ÍËYœ?ƒhΗŸÁ8ñ¢‡sýqo±X » aC¹\nbç!vÌz`‘Ç�çtXÑ1®u€ sZ~±¹~iår9øJ¢Àè`ÃJ»Ý63Klü+}Ás¹Üþ^l–ÉçóÖjµÂûÉæMÝYˆt¼zÆÞ)·±Ý£s™I&Ç--ЊMô'ENÐR‡áJ¥2´Êårp FËÌÂo˜P¡@Õ´£Œò…xÊ&(b62#ÆÁV‘—7éx±‡úoyÀÐ[=k¹=‰™õlñN{†Ë1'ƒ“΢p¦™\ÒêÄy3S¦>fz?+^> [1î-‹6 ýŠñQ(@ æ5UÈ,Hï ÷Æ'¾´¸<Þ†�V.—çR©P…�(Z�û±ÝnO_>€išó½Ö ¯R©X¹\íˆr«³;·�Ù~L§º ñÞC~w½tNқɣ+-Ðb9‰fÄ“T3 [²÷öö¬ÓéØåË—íÌ™3¶±±âg1pÍçóaׯyåîÅ£R'a�X=Ð…{xÕî�(ä� áìÇsJ�9ž{Ÿi¬�÷ŒæÃõceï™ÍôeH¸Î0ërº^;s:jFäû”�ò€÷�ö-—Öi1ØbO‘Àƒ1‡�AU‰ÕOûIëp¶ÜgZ>[Ô»ˆ…U¯×ÃgeeźÝn˜l*ÕÓt1ÿ?�ç÷ÀÀ‡…—îÕE —#¬<¦‹ëi– G£>Z˜ËøÙ“6çfòèÈC ´b ê(Í*ÇYoBg¢P(Ø™3gììÙ³¶±±aµZ--(p->ð˜MrP€hwV°f“€$Fÿs™±Jæ˜O¬D9 -0]¬Ä=ÐÁå…Ę,1°ñîe©>�ú§­Ä°jÜ!9ܯšƒ´YM-i šÇƱBÕvbŨ1”¸ž òà« ……�²C\?¯]¹ìúÜQH \2бGÈ;W¯×mmmÍêõº5�„_"Q´e·Û  [�ã¹ß óÎGÈÏÌ‚Ï&@_£Ñ!Y¼±å/oÁ¡ï©Yr7.¿»ú?ß3ml/BF£‘½öÚ«výú[Öívfz¦R©Ú»Þõ”]¹òì‚K—ɲå¡Z,žé⤀­ãU–úv Õj5k4¶¶¶fÕjÕŠÅâÄ®¥b±h�F#±�Üó™JSÒº# ¤²,HÑ™Åa_,öëá� �Ä™mâòÅ”„Ž+|¯Þà •ÓRPàå¡L�i¨^ù9�øT°§ýÇuÔ6T¶„ç´,ª¢Ä‡ý�Ð÷È Ê^%ƈL»¦u:Ì\Á —ÓB�5oL°˜©V«V¯×m}}Ý�†5�PF;ìîî&âUlÅ‚×*ó7�0;ŸM3³z½nµZ-ûNÇæ< ƒeCø›¯Å@?Ï5Ë�k×^³n·mÏ?ÿÖh4fz¦ÙlÚw¾óm»víµ—.“eËC ´¼•Ú£ ®T< •Ïç­ß ¥^¯[¥R ‡L{ÊY}® @=®àˆÙ(6Mâ7>†Ï§ƒŒF£ÄÑ,x¸§a.ËîîîÄ„­ÊÈóñá1åMþ^{+˜›à(ÐQS ·�öm¬¼13[iZZGí70ˆÓÚÁc¿ø¥…ðåÂî:€éfû¦,fsÒl˜:ìœá½j¢�&ù|>Duo4¶±±agΜ™Zfû‘¨œ>\ý~ߚͦµÛíÉ}<>ðß{�ù�Á:ÜO�KÙG íÀõçqƒ6CÚ܆º@Ð1ÀQó‰™Ä—!o½õ¦=÷Üï[¡P¦I¡P°�|ä£öµ¯}ÅžxâòLÏ|ï{ß³ù—±ëׯ[£Ñ°ßüÍß´ßù�ß íñ“ŸüÄþéŸþÉþë¿þËÎ�;gÏ=÷œýÚ¯ýÚ¡ë•Éád)‘áAÑÏ’ç´•y& ²^¯ U«Õ¬R©„cO¼  FÒÂ;èÊ6¦|ðÔ4Kk䉕+Oì]']Ž#E®Ê?¦�<öcÊ@q:1Ç}€( ¥h‹µ{Œqôêå]c�ë1m|¿göTAº thAЯø6“M̱²/B<&OóN“\.gµZÍjµšU«Õ´Îž=kgÏž ¾“¶¶¶–ølllعsçìüùó¶±±aõz=,’ðîp9s¹}Žö1†Ð+?Þ=6b)>̼ÅäÆÚÄ{¼y"ö9€Ùß�]š+ÿñxl¥RifS£™ÙW¾ò»s玽ç=ﱕ•û£?ú#ûó?ÿóðû>ðû�ÿø{ê©§lkkË®^½jÿðÿ0W]EùèÇ~Ë>ú±ß:²ôJFKWA™ˆ7ù¨I[ãK¥R8LQŠ•©bçZ5q~ Nb!O¶ž”GŒ7³ÄQ3˜`°†I ìp IDAT?Vnìx¬Ó,íŒof¢æUðHà¶Š)¢˜“8ß§þSœnZÞž°Ù�ÛQÓ‰� Tò=h;=Ž'¤øÐp­?¿èù� :c‚�ØÕ³á¹sç‚�d4…Óxñ€px'8Äx<¶Á`€»FmŸæÏ~uHÛìàÈ�‡Æï2û‹y~y,±±§‹ï÷iïñ2ä0¦ÊyËø¥/})ñÿ•+WìOþäOì¯ÿú¯ÍÌìÍ7ß´ .„ß×××í _ø‚½ð s—-“ÃËR€Ö²8^ªŒ½òE']åŽF#+—Ëa§S­V ¿C¡" ¬jñ§‘Æ¢ð‡'Z}†óÅw©´¿R„Ù Æ`0°b±˜È‡•›š\©L›¨8)ˆáû™õ‰9îr¾Z&EìŸæ�ÀØoc•ÆZi]<ÐâPí{ý]Û˜•¿Þ㵡µÂNñú,Ä�‹T¼\>0« 2fI'#ÔjµÀhÁo’Ó/•JG*á}è÷û �Æ ¡2t|Ï_ ¦A,x°»—߀=ü¯ï´w¾¡ÖŸ¿Y´Ì UýÑø}X¦�ʰli6›vîܹð?ƒ,3³K—.ÍÊ#“£‘‡’Ñ‚¨¢9J9Íl—›�Ç`�n£Ñ˜Z2Ê\x>VÊ,¥±Y1¶¿óJ±“°•>üQ˜`Ò×Ýv(ó¬@Ë+«*ñ˜W°å±IÚ?ü= d鳚>——A¨Ö�×rÄ”¢×Vž98¤Ò@­- ÌÉæRmo~>V棖˜vçw8¸—Ëe«×ëÁ$¸¶¶-Z¼ðÀ1YüNìîî†ãrúý~8ÚÊóEL+Gó×ç…rª!gHZžWÒ>*Ç´–“ß~ðûû¿ÿ{{ûí·íúõëö�ÿø�î}ívÛþöoÿÖžþù¥”+“y¨�–™ï ÿ  Ë[ùŸVñŽ=�F =Ütoo/ì4jµZa…ëí‚óX,ü™Æ<ŽÇçbb‡Ó-” òÃêšë Å€R›Xy½2*ÃK‡ŸSÓ™§ŒÓÄK/mÕ+ç4‰•Ï«ë´r3ãÀå„2ö€ –…£÷³ÿ-lâ쑆ú´M+÷ƒˆJçÍ Ï"P+̇ì“5�c…Í+`xr`fä1Í ,TÆ`‚O/4ï2föXÛëŽd½Oó|ÚÂ'¾dÙ2-'Ïz½nï|ç;-ŸÏÛ¿ÿû¿Û~ðûÀ>�¸gww×^xá»pá‚ýÅ_üÅRÊ5«Ìê õ�ÿ÷ÏK/ƒ^?lz åÉQ¼tó(IOÒvy-SÔìÀ“!Ž×€`²æÈðkkk‰#OtBÔ‰.`TÉ{Œ¦ ÓG ÷˜+ì.„òbQpä9ërY¼ÉŸ?,Pú¬·àëlîDŸLY^™!ÊÆi?p<"¯Î¨ˆÝëõ1h�Íd ßާſk˜$‘ò9ìÑ3óˆ"æ°wÅb1áFk<�d¶¿ó��ÅêêªÕëõp�Y¦Á``ÃáÐJ¥’•J¥p¼Q·Û�:—ißðCf–‘Ÿ· „먻gù½ãqïÍ#, ² {À~²,p÷þ÷¿ßÞÿþ÷›™ÙïþîïÚÇ>ö1û½ßû={ì±ÇÌl1ò‡ø‡ö¿ÿû¿ö¯ÿú¯V,—R®Lä‘Z*ó²*ÌÌÌkR`Pô ¢]¡P/"PW*•Ä3Z…BÁ�†•J%wWbàRFƒÿÖöeÓQ±X ¦‹n·kív;8ÿb·$êÇ@+¶’NÛ±Ä& (ôxáç½zhýäzÀŽÛ€ËÃe`ЦàÍc+µþ*èC5?r»è&O™¦1œ�^纂µd6 gk*0@ÜO̼`,Rzu˜'O¹Ìf­¯¯'Â;ŒF#ëv»ÖívfrØØ=ÌÇSÁd8 Ð*•JÖjµÂs|8tLЮ· W3ÐâóOÑ&|L—»„onK`ÜNúQs$žá/Ë’e™YÞûÞ÷ÚÞޞݽ{×{ì1�FöÒK/Ùo¼aÿöoÿfëëëK/Ó4Y$SuØ2€É:ª²e@ëeÞ‰‚Ée^fkQ+3ïXˆ2³¡ŸiÂiòªÔ %Á+éñøà°iÜÃNïÌ)€R0¤lû¡1ØŠ� V\/±¶÷~ãvñ@—¤4/ÍßëÍ[ÁZ¬\1ñú>¶µŒZvÞÁãƒÁ“WîX9-œÿakÌ `³~}}ݪժU«UÛÝݵJ¥b•JÅz½ž ƒ‰¹dee%øoñ­T*Áüó!o(‰±c®xwww­Óé$Þ¸åw�ÛŒ�ùc Ü{ÿ�oÔáñË~kË”EƒºÑhdßøÆ7ì·û·muu՚ͦýå_þ¥]ºtÉ~é—~ÉÆã±ýñÿ±}ï{ß³o}ë[6�lssÓr¹\Âa>“ÅK´æVº|mž«þ?k¤èE õsðîÅïÓ€–˜bÊ›™ŽÁÌ–™v‹·¶+8RoG¹\n`áë`�ìY™hü*-CLÒÆ�Çòðs°ð;þ- l±rJ_Z6ÍÇ+OZ™cea å�q¢ì·˜,“Ñ8Œ Í°»–AÖÆÆF` †Ãaˆ}…8YºèCmæû?1Ð�FÖï÷­Óé„]’ŸŽã�‚Ëå²íííÙÎÎŽõz½à É¡8øY6ósðBÇl2ìŒ÷>°ÉŸY=³É°šß¢eyýéŸþ©=÷ÜsvæÌÛÞÞ¶_ù•_±o~ó›¶²²b­VËþîïþÎÌÌÞ÷¾÷…gJ¥RâöL/КS¦)—ä§+óe ÊÛQ¤÷²ÙÀc‡fe¶TéÇšþÎ>0% ‡CwW£Ç¤p™Í’;)õƒvñÊÈi©Ó­Ww�ešÖ/i@+--Ìx 5 M[@x,—)�ÙŠ�BÍŸÇ€ö?ŽWÒíêiyŸAû‹Åb&CøCår9+•JV.—Á„ÕlªH¹í`FØjµZÖjµ ¼ã0¢ß`"Ð3Û?üºÕjY¿ßlZÌu@ã‰$qùù7þ[7 ´bïúq­yÍ•hƒY%ŸÏÛÏ~ö3»uë–mmmÙ;Þñ;sæLø½^¯Ÿš1ÿ°K´æ=>Møü½LÓ†W”cuuÕÖ××íÂ… væÌ™pf îCœ-3³N§&bÜÃJR}}8-¯íÒ56¬xc‘둦¶»28žBдØ$ÆŽ¡nZW�ícó¤w¯–¿«� —ƒÙ5-�WïXÄØ/ÜËJùêF€ØöÍÓS�\n´/§­Ì–Ù�¿÷‘2%'Yx|s}átÎñ§p?�?^lðßìd,—˶»»|¥jµZmJš?Þý\.v÷"=0pý~߯ã}$̙ޢ ýb–4  …hÒ÷ƒÇ�Ö]}»bï÷2¤R©ØÍ›7ì±Çw™=OvwwíÆ�V©TçÊëâÅ‹vñâÅÃ3“ˆµßX´!1à0‹¨’5ó*.KxZ]]µµµµÐRQ']^«@Ëc"b ÄcCX1óÿ¸Ÿ}¨d1û”¶ûOo ¦ ˜�‹u¢O3wx`Ë+·›hÕ¤ÂÎál&áoMOû}‰1gHG�–¹Õ„ì¥ç?�¥P�…¼ðÍìŽó“. QgÔ)ím[|Z‚2Ϋ««V©Tl4Ó;µ…€¦¼yí��¾`‡0öØ„†÷´yãÀ›3t1Àe÷Þc6ñë“¶€Z¤\¾ü¤½ñÆO¬ÛíNìtŽÉÞÞž½õÖ›vùò“§b¬f2»d@ë�SÓDW÷üYöË¥“¶„㜴jure…Õ-VÅ•JźÝî„@A’æ;MÒ@ˆ �ÑÒtøº25ØŠ‰>~>-m�É™´4°aF g3«¤±Œ8_e­ÒDëG“¦ì±ò(cÇ¿©9LëÏ OÙ.e‡N“pÙ™™B2˜ Òk ´xìàýe“ùöövNŒ@¦èO<ËýÈ noo/¼ð—D¬.6ñª¿�Î?1ŸJ]hq)ÀÔÅ–wï2äé§Ñ~úÓÿ´×_uæ³ +•ª]ºô„=óÌþ³™<<’­#žØgQ\X¥²’ÁŽ™eŠ2-0!lllX£Ñ˜í`–Tþü7ê†ô<–NÛÇ£ö½ÿ=Q ÅåÑU°š"=–L•?¯m–Ëå&”—þ®õÀý˜ˆå£fhàÃmÂãQŸÃ·öƒ–KÙ¯= ª¹‹ËÉ Úk+]lx ”ŸeF+—Ë¥žu©ÏžTas§ÙA0Ö^¯gívÛZ­V¨7B;´Ûmëv»Öï÷¸Áñ;Ü:þÁN!ðïýû÷­Ùl+8È{cœß3ujG"ÔÃh4J8åó<É,�oáÉnº(âkºLi4öž÷¼×ÞùΧfž× …BÂ%#“‡G2 õ€¢ÊbÚK•¦h–- ´¯Çc´ØDEç9‹ëäi–î+1�â�¥Á€ ƒA˜2*Ê !M3K-5zíû-­®ÚÿÜNªl ²éкH?æ¥ì®ylOŒ¥‹ÕÓÛ­™ËåãuHpz-¡èø2Ðâr¡oc¬Ùq vûš´7ŸÀÐét¬Õj†¨×ëY§Ó±N§€Ô'Ë›kxl`Wc½^·û÷ï‡O³Ù´f³6èx‹ncD¤G=üŽF£p²„÷Žëûá-Z8yf{³É Ç ®s¹\hÛL2É€ÖŠÒ^ðñx& UþÇ!("FcÆN&ÏÇ‚�ñщ.Æ`±(cáMÂi´‚’i`Í ^ŸyÊ% l1`Óç¸ÝXq0àóòõŽ®ú zqÀ´�Z'IbÊî°iÌ*º*={ölˆŸZìTºººj�F#¡¼yŒ�‚"ÞFÎâ±] \xåË÷ëî™4ˆ±RPE¯«t�è`*ÈC™9=63zæÆ˜¤?N›•µ¶�&U�±z¨¢eç{©x^Ë aö%ÆTÅX>MOÁ<–Ìí¬ã|‘ʖͳø@C͸ÌÄé1R`´8ôÊ`0l‡j`ŠÓåñ €ÀZp²ßÝݵr¹lƒÁ aŠçêÇcÂïƒKík³t�¥¦C“ì»…tqý´:Â�F§«¼™ˆµ h-@tE>Mø>ž ç‘Ã:ybR.•J¶¶¶ŽáˆíÚÂÄ?ío¥®V« _ ³éáXôðý ˆX1³?-~>6�szh/hlyuˆÕ…}[ä(££l„‚&¤«LŒ .³%h#|«bÂ3±z¨¹P-V€^ÿk_rûxm¨å‰�ÅꟄþôÆ×Q Ê ñ°þØtƽ®~Lè3´7ƒ2  ƒ>`F‹ûX-Ïÿ€¡ÊårÈ_ýœ0æÀ¼q›ë˜ñB:xc. Ô룠�ß7°Çx~e§I677­ßïÙÕ«¿~êü´nß¾e.ï!×ÇY†^¯g×®½j›››áZ´ ÞD2�4F0iW*•pvaÚêpí9vóß:Æ 4°`µÊàE™°4Æ#–¦²VÊÆÅ@HZú¬üÑiì”#·—èÒ€––÷±y�•LO\^] 0{è1Xêxï™ùšÇ|(ûç•Ãë3ܧmÌŒ×Yó;¬¤�eh1Ó4 p±)QÇ4Ì…¥R)‘êÏ / Àbdyãv0„¨òÜ ²ø7nK.'çËmÏJÇ ~gJ��——¶ƒ.p…_Ùi’Û·oÚÕ«¿qê@V&û¾ŽW®ô£÷j¹bé+èá¹#.sLA)ðÒ¶S0ƒöPö ϰÃ5磫™ÐcÒÀ§-Tœ?·K¬|ÜÆ`9=FRËr˜÷ã\cƱ(ЀâúÇ@–²YÈG�9ØgVÀXpŒF£„/Ž£…sUàÇÔï÷Cð{̧G覽ùò¢Sß5Xé>º½40î±+ºßï'Ìÿ§Aúý~²N±”Ë•„o]´(‡™Ô— Π°JÆ${Á±:Äq›¡¨‚(¾Ÿïñ@–Š2-ž)ŠÓŸ¶Òc…´. =Ÿ0õ#ó¾=ÓH,?ï~®¿~{eå2{õfFA6áp?2xV†GëͬŽö„M‹� ›`5-½?öÑþŸ&Ì2y¾FHC�–²Y ¶dáo"oLåóù‚¥Z­†r1ÓÈå„É f~Ý¡Òív­×ë%v¥ró ebçs#6Õ1ãÈþRº À=Ÿ.¶Ààñ£þZ(-§™d²lÉ€Öå0  xæCf¡t5í Nìõz Ó‘·òT…Ì$òö-Üã)Ó´IW•RÚÄc‡x®àEMfÊÖx`"m%®Ç£±²i�4!=þ? l¤õ•,­G ¬xí♹}Õ¯ŠA´š‰µ~ø›ó�Õ]û4 p1paäõ!ƒ'f´dyí‚�ÇšqZ‚‹#ö™SÇ{€e9UÚí¶µZ­ð^+£�Äí¯iq9ø>¼3Ãá0±»2m1a–ÜXÀý¤!Up�A^¿ß iâh¡L2Y¶d@kA¢”ù<ÏaRU˜£#˜ ½ÝH�ápâù`BfÍlêâýÆlŠ™¡ßÓ˜²“䙑b’æÐ­`ÐsœWVËc2clЧ°c ›kù£p?§ë1$`$4�såÕ)& 1‡s€´B¡bYñ\ÃcÆ[¤xÀŸßøca!3ÂЬ­­e@+“c‘ h�@ñVí‹UÓ&"pÛï÷@ 3&e¬4Õ›WøL1@¤l™~{,�§Øä°²Ðöе<:uÇ!@;›Y"$€V½^Áƒ»Ý®™˜SQV~�´Z-ÛÞÞ¶^¯g¥RÉVWWíöíÛ¶½½m­V+-€5êøáþö„Ù&ÜÇ!,¼ñÏc6�17³PVÞ1‰¾(‹¶¶¶f¶¾¾ž­LŽE2 µ ÑUó¼‚Uß2„�FZžãñ8LìØÉcfaeçÛY-�}Q%Æ¿áïØ5® € ûËÄêç11`ƒz!}Uš|¯úi^Ú¶ Žbã&Ö¦}t,¦4(P¯\ÌD¢ x¤=–ˆÍ�Úw šÐ~Óê…ôY‰ëØÓhæXÅ·,YicFÛDA•9öãüt£J­V³r¹lår98–c£ —Mûïf³Ù´|>©ÎçóvçÎ� F ‹)u‚÷$mŽÐÒ…3�º°ôÀµ·à2³ÀÔ±ïL¬ðgÛØØXªép4Ùk¯½jׯ¿eÝng¦g*•ª½ë]OÙ•+Ï.¸t™,[2 µ ñɼÏ/Ú!¦@³ý€†µZ-5´&L6r\%ÞšÍq|ÒœÙ$S¥äýª1+ï4fKëƒû=3c ({Ì3:\WV. ¦í�2©ùÍS+wöÅJäÇ&ÃX?y`—ÛW˯ã? ÔÇ€¸´“}Ÿ`–Ãó ˜Úí¶µÛm3;LÊ»oß¾m[[[Öl6C:Òã°óX>ŸL�šb™Ñb–õUf•Ê0CŒy,—;ð5Ŧ˜YñYкví5ëvÛöüó`�Fc¦gšÍ¦}ç;ß¶k×^[pé2Y¶d@k9,;uIc4ŽJr¹\P†X)Ç“6;ðµ`öŠÏºc'\ pª¬€çlí™øÿû£ @›šn<¦'æ´ÍàMEÍC Ó|N˜ÝQÐÈŠ‡•<þ÷ÚFÙmÇilƒ´¸ *<�ÉJZë‹vöòN³¬h™ a¿&ôG1çtàiû©0ÛÄõW ï�!M×71À�Þüòu6Ý3ÐC(ìnµZ6�Âÿü>0Їá°yÞa‹ÅD‡öÚS°z>oº¨Ðº©I[ÍÆ¦†}ÙðY¦�Ö[o½iÏ=÷ûV(À�&…BÁ>ò‘�Ú×¾ö{â‰Ë3çõ­o}˾ýío[¯×³_ýÕ_µ—^zÉ�üŸÉñI´æ�e�,äµèüàœšËí·Q¯×SW_¼‰}7TQÇ-¯~±‰ÚS:¬Èfa´”mR…‰‰Z�—QÿVåè±\­3„ +G5—qz^ZÊJ¥±6˜‰)4ÎeU@¨Œ!?(@3K´¿æë™…¼1áå s"¸ŠZ IDAT�ã:Æ ÚSÁî´w‹™¤Él!÷û,`6ÖöÊdé7§­Œ±™%Öª¸ÿ²ºÝ®µZ­p†!Ú 2�lssÓîÝ»g�Î�™Kw+²97ŸÏ[¹\Nô£úry› t'Æ /€¸�tœ0ÐB;¡Ît0³V*•`>¬V«K ïÐív­X,Í5‡�Çc+•J3›Í̾ð…/Ø_ýÕ_ÙŸýÙŸÙÆÆ†ýÍßü�}ãß°þç>L±3ù¹|ôc¿effßùGÓŽÐ:Á²h …I±X,Z½^·õõuÛØØˆÞ�ÝMØuç÷´Õ§-\ÃJÖóáRà%3A¦18ÞJ™óòã{=æËÌN˘ìc €ÿ÷b—™0ph…^Ò€+þ�1/Þ3Úþ¸¶ººÎÉc��Ä3ý! €<^ÿã~°bPö`CìÀD¤‘΃A‚-ôÚLMu,Ê€ÆÀ�Šö—ׯi‹¯¼hŽa×jµ¬X,ðV«>Ž¡×ë%€V«Õ²ÝÝÝÄ‚í¿³³c­ÿßÞ·ÆHv�Õ®êêîzvõsºg¦güœÄ18clâÄ1¾P’+’XŽe"Œ,'Á@dArÅ#Yʤ›{ó+Šl$$DBŠø”( /%ÂJÀ–LÀÒ<Œ !Žƒg¦Ý¯ªê®GwW×ý1¬Ý«¾Þ§ºzÜÕÓ=þ–TêêSç±Ï>ûìoíõ}ûÛ++ H¯­­u�`Öy«Õ Ê‘¾×|^¬CuòYe³Ù°ö!ï7•Jm‹íÔg£äHË£*º^SŸ—ºôwrï5®æz»íóÿôOÿ¿÷{¿‡Ï~ö³€÷¼ç=¸çž{077‡ééé]_ßÑ8Ñ:Àè7ÑbG�Ëå0::ŠññqŒŽŽ&ÎðQ&ãÓ‹ja;$ë’²Oa ·Ùóň™^Ç&iµÆŸûÇ‚˜µ.ceÐ{´*•Þ# aì\1eOÏo•({ï±:Š]­+ºar¹\P1iôõ¾õþbî«öi«a¥Á&éä>$Z$üxx8,~Ìs© XïÓ^?‰ˆÚØ,K–-™RôB²ìoZ‡±}èd»jµŠÁÁÁ d‘D­®®†ÜW­V õz=|jµZø�÷¤ï¦ÂJrµí3Ÿ—íëût*¶|_èÎËd2÷fïݾŸZÚ®t0t­nƒ§ýÂ~\krrÕj5ü_©T‚’ç88p¢õ;¨B¡ÐÓ¬xK²E×�5*¼ªF…�ªu-î¤6uSfbß“Ü�Võ±®1% ¶\±|HÖ@ª!§rgËt&Öä‡ñ1ì«c÷#–Ý—n°„H1&ÑÑ3«†j®®t:–¢ÉçóA]µ 1cÏ_·ÅÚ•u#ÇêÍÊ$XB¥×Mªî§ï ÉíÊÊ –—— ¨Š t¯Õjõ@å™D«V«…åux=¾ƒLë û,þäOþ¤k¬­cÿáDë- *…B£££;ÎŽ¡áã›ù{8£(fXcî!5º6bŒ4hçS§º-{L’«ÒŘ §ù‰¬Ò¡Ê aÏ›¤Ü©b î¹�îς׎ÕAl{¬®cõJB¨nSþÎ5/µô|öù €­öÔíÄÔGº¤ŠÅ"J¥r¹\ 1IŸ•^Kÿê}ÇT®Ø¶¤gaëÖªvIÏEß ­ lêõ:*• ƒrµ±±Ýùº?‰–ºû•Àñýãr5$Qúì-ÑÒ˜+(UÈbuoŸ­>S;pIª{¶C ;°³¦¹/•b¦~И»ýÂæfÿ­×^{ óóóáYÔëuüÛ¿ý[߯»—`<ÔNØ«x©Ý”Án¿Ú28ÑÚØ‚½†�íÓ »‘ÈCüØØJ¥R×ý5æjccõzAíHR0t¤«£h›£'©ƒ�)S1$¹u’ ½Fl54šN€ûÛ `=·uci¹l0ùðð0ÖÖÖ044ÔQ†˜k%VWZIˆPý-æÂQ%OËÅi}Îú bª‘Ö§ê«:ØMáÔ`g­l6\e–¤%oë’V"°“Á�Õ�½†þ®ñWJ2cÏEÝo–h5 T«U,,, Ñh„{äoêÒW¢¥d‹î~UƒHÖèvåŒ5/KL5õU**MöcëDÛëD«ÆêR¯Íw‹ŠD‹3¦õr¿µµµhž»~£—>øÍ`cc�>ú(¾ð…/à‰'ž<ùä“xûÛߎ}èC¸ûî»ûz}Gïp¢µ‡°ñ~\o'£›DüØaÒõR(vôë³sf®]$ÖªAöÓMñ²dÕº�´c&vRw’ÔÖ‰Mé`Gܶþtä�D€¨$jÝO‰!ÏÛjµ�Éd:ReØd�úÜ­BSSbÿëó²÷GcÏLõz=1&MëÍ^/F’í½«ˆcåÒÀwÎ(+ ÈårÞV.Kž­ßI9±–Ý(‹ [×±�±Xyu¶o½^³ °ÄÞAmKš–EgSé"™¡ªÅ�€ÖMŒ¤Ú…mŸîÈ�¥ƒ-�-KxésX[[ qgP,Q,;Þo–…}VÒ9û…~»———±´´„Ó§·œž:u ù|?úÑ� Ñê§Ruµe¸¦³÷“D&Øü^×ÑnΧ£¹˜1%h¼tês6›íznJõ%ëèߪ;4ØÖUÇó$¹ø»M–¨DË"ÝëøµŒvD­Ÿ$õƒÛ­ªCc‘Dl”\¨·†°Ýne@ï]÷�*-kŒ\Ç0UYTaÑX>C¦þ R÷ �uáK*›Ö‘%¼Ž=–®BÆde³Ù@´²Ùì65ŒÏJÛZ¬L¶N,yào1òg¿[bfaÉ–d(ÁÕØ(ÝNßêêjhê.¶dÈ{>WM A²¥[T9Š‘ª˜â#Õ– i>-;{ÕæåKjS¼NaÆ4‰–†8ð}⻺Ÿè·­œššÂÍ7ߌ?þã?Æ»Þõ.¤ÓiüÙŸýšÍ&îºë®¾^Û±;ôD´ösp¡�\?^®nªUÒõ”<°3×c8¤’Õ+Ñ¢K‚#D;ú·.C;B�Y½'^Gstñ:Ü×’Nû�)Dö¾µ³¥AÒ)àÜ7–ÏʺbFܪpÖé9-1àtyUótá^’KnøÝª‚Vi²×Öó(Ñ¢±cL–ƒÐêí¦^ítÿJ°º4Ö�æEb»å 6UÔ(h}ðÚ–Dë6Ûžm]Ù6¡Ûl�X(©R¬Ö?‰ëyppp›‹/•êœ4a'hèG˧DKUiu'jXõÊ>ýŸÇq%UV]æ}óÚvù.mJìX‡ªPa###êï‘$UgTîöC”øÊW¾‚Ç{ ÓÓÓ( ¨T*øÃ?üCÜrË-}¿¶£wôD´\ÅÚVEØKÄΙ¤TéþÖøª»�3™G—PéVWÅŽ{hh(1µƒu…XEÊv¨vįçPÂÄmz_±ZÏ«ÐÎ[ µ5š15"é\–ÜÄFåz:…žD‹õ¹¾¾Þ¡LÄÈKl{l`#¸Z>U¸TñÐý766:ÚJìXK’ÔU‘l›P#O%‹ëÕ‹Å�öËú"´$U“—êµcíO'JNbê ­ÿØóWØs³Í‘|ð¯æ�#áå,_^‹ûY¢¥®8 *Ðúa,—M<¬ä—÷fgÆr;‰ S=h6}�ã²Ä[ÉŸ�uq*Yä=êìËF£�¡¡!LOOcffcccÈçó¨×ëçîe�Æ~�Ê~¯6�Ïu7¸÷Þ{ñýﯿþ:�n¸á†Žd´Žƒ�ÑÚC\«ÚB�•Uèr`\‹(«Xhg¨DËfˆ�‘$-›Ýn;b«êXR©Æo`` cÚ¶%ZVÑR¯Û’Œ©v~1²’Djì³à¹øïAïƒq1á[We¬ÓN"Y1ãÏkÚ2êÿív»#Û¸Þ»Þ÷Nì1bmÿORáhć††Â¢ÀL¦ËåTŠÅb¸ÇF£Œ½Kµþm9µÍض¬éIbuoŸml Ár�ê,ëÏ=K´8sNÏ¥ ’.gÃwR ë‡Lc£¬—ߪZúž±Íjú.��hZ¿$O|Iòõ¾øì¸o³ÙÄðð0¦§§qâÄ LLL`ll ¹\.LÒÑ84¤ír¹.]ºˆcÇŽoËÑ—„�� \¼x¹Üîr`¥R)ÌÎÎ^M1 Øë¸1'Z‡ÝÜê>a'ÃÑ~:�Ù¾ù—27¨;�ä€Ê·%‘-Kâ,™±Ä ‰¨ñw-ƒ0ž/æF±ÆÒ*-1C3ÐIç‰ýSŸu­êó±kÁYƒ®ç°$Õ^#V¯JþTÑС.¬¯¯osIY"o¯»ŽÝ?VgWf³–J%Œ��a||<¸ˆJ¥ŠÅb ív;´c]ŽGI»UjôùÙ:VRºSž7Uîì}Ø¿ÛgÛ?ªf1^Ž @óâ=YÕG³V«µmÆ¡Î<¤»PÝu±�ˆ&çÕ>…û°Éf³AÝRU+Ö&3žƒñžTxY&]5AIÙÆÆJ¥Ž9‚ÙÙÙ@¼™-_û%¦ÙïY‡'OÞ€—_~ õz}Ç,ÑjµðꫯàäÉzVÁ‡N´1’^ƘÚb;MëL®�:Ž©60ž'¦fÙ)ÿv4l;à˜�Òc48>fü,éÔѸΖ³„Åþ3¦¼–�ß­‘Õíöžbʉ’Œ$%Ðf«£ä˜ñ°dˆå±„“e¶ ƒ]^GU–[‰K ¼Žº-É¢"ÉçJu5—Ëa||G�ÅÔÔÆÇÇ111f—ÑMÄ”…B…B¡#¸Úº]“Ú˜Þ ´]0=F¬µ}t#íú[LYÑóñÐU–N§ƒË@ Ÿe ËÌlñLVZ«ÕB\ HLµSõŠ*•MN t&.ÕĶVeÓH`Ë¥F•JcµXÚWh;$Ñbѥøö¢ªyÎ�;ÓóÚ…¹\³³'pêÔ•cלhbtS´,ÑÒΓ.ÎÚâ2&Ý:"Ž„ÛívGçk;lvÚìDIŠÔØZƒ+»Ž¬¹Íº¡Tª½ à¶åˆ‘,-KLµâqÖµ;V÷W—¦î#¨1¥$62�]ß’9uCÛc«Hxøœ‰$U1FVôðž-!ãv>�F÷‰Ö±cÇpôèÑ@´ŸÍfQ©TP©T°±±±�hqƤ–?I�"Øn“ˆV7’nÛŸn×úI"¦–´ñ�Ѻ#Ñ`ž5%Zöú›››ãkµZpRÉÒzÐü]Ìü¯1X$ZêÊc_¾€ëbªÛQÕYÞ§¦+Q¢EB™ô|Úív�h1vorrù|>Á×j5”Ëåà&µj\¿122‚Ûn»7Þxsϳ9. }.�c¿áDë€B b vd3„ÖøqÊX&Í»C°óTÒ¥�¿/u«øtS¬ÁVÅKÿÆTëN³ “Žò“Ô‹™Ñó(bý(Ábð°­ÁÁÁPêF±õ»7«YÚ�(”pÙc¬±:'~PåÐkè9•8Ð@ÇîippÅb1ÄÞ?~ÇŽÃôôt R:Ã�ä`cc#¸ÅÒét0¶6Оõ«u¥÷k•/ë¾MR»©‰I„< öx�OjµZ!݃º-ùå‡ËÀk\ ÈhÕºæ3ÔÁ‘–Õºéí ÂÔS1d|×ÚÚZP¤Ô…L‚Æz( ¨V«XYYA¥RA¹\Æèè(677144úµZ­†ÅÅEd2™0@Œµm‡c?àDëB;¿nD‹ûqEKƒ@Õ¨cddSSS8zô(&''»Ž¼êõ:–––‚ª¥† À6Ì«Ž\­ª L-ç±VqQ…*«VÅHëÆ*Ý7¦xYE‹ûñÞ´\$¯öZIJ–ƱhŽ!Æ[Ù¼B6_˜%v¶è¾1¢•dðõyÚö¦î!K�º)Z±2è³³j!·•J%ÌÌÌàĉ˜��űcÇ055Ô›�žíŒ$‚ ‡º‰HbIÄô9ÇÚ§*>ú›UR´ÍXr®í* ݈—¶'’,Æ&‘dÅÖïS2¤JÕ,%$½<Žd—¡l§ Ê×só8m節öAš— É–ÎfÖóè3* hµZaÝÇJ¥rj ‡¤¥�F—/_F6› ^5 ŒÃ±Ÿp¢u‘äþ±ÐŽÝº7”h©Ì¯FŸ�)€Ð!Ç’–.,, R© ^¯o ’¶Ç Y†Ž‚YFv²¡\– ñêª ¹QE‚Ö’Š˜ª ¿Ç~³„ÉÖµ>~��î5øV�bLÑâuì2)Z¿–|Zb¥åì¦fi¬œÝGËmÛ�Ut”Lð¾ô||f1ÒË2ÐØ¦R©`Ü'''qìØ1ÌÎÎbffE6› Yà‰ááaäóù¢ £Ìº¨°mJ*mœaÒǶm[/ú ”Ðõ¢fÅž¥-ªxêR³DKÝžš7‹>6p#Áâld;™ÏŠíRÛ *W:ðQ¢¥ûqæÝãóáDU`ë*l·Û!ì¡Ñh V«¡R©`ee%¤tH§ÓaíVÎV¥âi•W‡c¿àDë€B�a¬:cckT-°²>G®¨×똟ŸÇúúz’gG¹¾¾Ž……… fé5¬a5Bö8ª 4È£¹žØi+qÑ1;~í䓯¡ÒûкTd]¸ú=æJâõ•\ñcU4%5¼]ÞF æNÆ=Ö^ì>ŠóçÏàŽ;N#›Í]ëâ8v�F£ŽsçÎbff.ü'ZìT“ÐK§®nJð$YœOòT.—Cü³‰ÖÈÈ …r¹2™LÇR(ív»ƒhÙÜMJ¶’Ô-ý®5öKU%–ȱÞIºô~9SurrGŽÁÄĦ¦¦022‚|>�|>�F£�•••�èÝnw$ýTã¯nG­o¼G� à“ˆ Ÿ£m:cnss3-¶Q{œm§¶-ÆÚ�%]Ú¦í±IeŽmORÄbïx¬œö·ÍÍÍà2ä{KRÅA"×>äsâ;£îIÍÇz¦û~ss¹\îÐ�,bsóp•×±ÛÔœh`ì”QX;x;"ÖQ©˜Ú‘8 XÒ*÷­V KKKX^^Æââ"Êå2jµ�+£,;í?Öñk¼‘%–¨!`G«Fh``kú¾o”Ë��·±å³F+VŸÖè©É^OgòcÆ‹´ÛW’kZ7”Ö£º-Yµõ­ûÄ NUHž“F•®¢f³‰‘‘”J¥°ŽÍkU(Â=‘pÑUCUA³’SY sgff¹ÇÇÇ‘Ïç»’,}~ZoªV±î5ÞHI�­Sûœí5ìubÿ±òuÛÆïV!ëåØYÔòZåÓ*Y±™‚,‹’ÎZlµZÁG•ÐR[/ªÀq}ßI†èŽ)c,¯y½¸�Mjjï;6€: ˜ŸŸG³ÙÀ}÷Ýèâ´ææ.czzæ-[†F£�óçÏ`~~>ls¢uˆaã“E;¹=4¥€î³±±RÙ¢ªlwÆÊ§3è¬AÔŽÐÆg¨Mï�D†ç¦ª V5E•­낱d+É[EEc]ôÃe5èÂÈårB³ÙDµZ ç¶DKŸ‘ueÅŒ©…5Úö>•th𴶃t:�ÑÑQ?~Ç�Çìì,Ž9–¼a ”*Xºõàà –——±´´ÊM£]*•0==�£G�†ä¤ÌüÞ bDE8;Á¦h·;g«ÆH¶UˆbÄ+)>Ò–3öLlù{…%„öÚ1¥Us]é;b “öT³•V‰kl`eCìýkÙt¢‹2;°Ò”šJÄH«šuS2ææ.á¾ûþÇ¡#YŽ+/î¸ã4žþ¹°Í‰Ö!@Òh,)°³ÝÞZL�¥4o�ÉŠu¥ð7Æs1VCgj qlt‹‰:«Fq6ž½oŽ‚én`Ž$vºI£tKeË똓” =Øž;K]2,k.—C¡PÀÐÐP˜m9<<Ü¡RYõN�¹%Z±òÙ6`ëMÿ,³*]¬³v»Ý±¸3?GŽÙF`¬Â¡.�Ê›››Èf³ÃÌÌ ¦§§199‰±±±žŒb’’«D @0Ê6ù5Ælk$æö¼ö=‹©hZÏIí'V^­ë½‚Þclða]ðVÙdYtafkëÚ×÷CÛ³N$`Ùl]é„ë>:gH*Ѳ ‘cϺA šÍ¦“¬CŒl6×[çDëàjdoM@P¡PeAU#Žê­q·åàyIÜxœþN’¦DË–…FÝ+ëH\•« éˆVÝIÁ¹T:¬[Že¶A�„–ÁªIIÁZV–�ÇÒðóÚ6Q©ª1Õ-‰dÅ �%/z.�ô “XŸSSSAu²y­”¼Xuadd$ÄÌp‘_Æ¢T*all GŽÁÈÈHH}Ñm¦-Ÿ™êëý«»X‰c,«½%žú¬lýÇ>1ãnß—ùµD+I™Ú ’T,½'ëV³×g}j?@72gøY7¹uÉéuy~­3;‘DËo)±`~Ý@hWü4�àòÔ,õív;LüÙKBëpô 'Z‡ìü{�Êð!–*›Ív±[…,ƒâcçÕÑ!°•tÐ=Ø�Tv^SGÚ–Luë”IØ�« !fð”ªq±#yUª¬ª¤FZ �ÆÄÑxiYiD¸M³nó9Ä=æwë‚Ñ:Ô2[é÷ûŸåbßø 2™ Ž9b¨ÆÇÇCÚU”èèL/n_]]E¥R 9˜X?>>Ž#GŽ T*õD´bÛ6”(ª k17“%×J¬bË’œ˜»^Ïß’ûèûc•«Øõ›yß2 IDATíû�J¥‚Û�bêsÒ3ˆÕŸ­3;¨R¢lwá�é[t–«.šÍã¸/peå‹r¹¼cÜ«ÃÑ8Ñ:à°äN jÃN‹£B.[a ³uYãÃmê #l¼‹º�4W]uö¾´sµ® k8bêÏÃ2ÅŽç¾,‡N'YÓ2Åþò;Ï«óXùil¨ViJ‡F£±m‘ß7ãBŠ)\–LÄ ¿NmݰìêîµÎÆwéûlë›×Ñw'©O‹©bVÝV­XZZB©TÂÈÈH˜p266ÊI7•-‡ãZÀ‰Ö!@ÙˆÁ K¬ô|ìŒÔ�e1&(dbÁL&Ó¡:(‰ÑY�š\§`kl>ŸXN.MSÀû¡ÁS²ÀóÙà^­íÄy�1‚3ÖØè¾±éò$sœÁ·²²!Þ�K‡0Þ�/öœc„Ϫ#ú›=N�ÿ�¹”4†©T*áøñãaÑñR©”²½ès¥Êze6÷V«R[ÐàqÆáèè(ÆÇÇQ,·µ+[÷ê†æw-ƒªNš´Ó褶S•X©š¦ß»©F1â¼WJ–>G;(JœÙö#YT¤ÛívpýÆHjLÙ²Ç:S×a’º¦6BßyÖ;WKKK¡]¥ÓWÒª”J¥@êòù|X�¼X,º¢å¸&p¢uÀÑMÕÙéuƒÄˆ;G­�%gˆé,.Uµl<ŒÆc)qÓýIî4µ.¶¬Š…sK¶x$6:k‘÷©Pw—C"Fº,4>Œ×PUNãÄÚív(æ:ktuT*T*• j)‘³Ï2öüÖ€Úã•p))¶êëfhh“““8qâŽ;†ÉÉIŒŽŽvL³×˜3½wMÁÁ™jÌÌÝn·CÚˆ±±±@´bj!IÉ•] RÛÏ­dÌNz°u’D„¬ŠÕÍnc–ìsáv«„½Yè{®ÿÛOŒ`±}jLš%—tÃÅÎoÕ+ÖAlb„’×X{´ä3FÂì3`Ÿ±¾¾ŽK—.…ò”J%LMM…d¦\jleeʼn–ãšÁ‰ÖÇn;æX‡ \ùQiP#«é4¶�Ä�DËo[k�Ù`ví«{n`` ,Jsï)AÓ{PƒÉΙD˳˜�?"¶¿^Ç*D±OÒ(~mm-ÔËÆÆjµVWWQ«ÕBbÏz½” {?IPâ—T^Uô”*©à1ƒƒƒ( ˜˜˜ÙßU5ˆr«f¨Ò©Æ™ÿ3—˜éõõõmù½¬�U¢SÕh«2Å{S¢mcôl{‹‘, Íç¬iì Èºêö¶>õyÛëÆÚr,ø�壨iS,ÑWEÔº­ªÜ�|jy´�*YÓËõz™L&Ìzf~¶¹¹9 ajj ÇŽ í–¹ÝFFFP¯×÷¬þwÂææ&Ξ=ƒ ^E½^ëé˜\.�›nºwÜqºÏ¥sì7œhp\ ÑÒtìd™l�#=�*­„È*4݈p…lňi|©P©ñŒ¹4I"£aÓíJ¬AKRz’ k”�$Õ»Ub†eo6›Á`Õëu †À]’-ÀkËÓͽ©ûÅ‚ùí>–1ÎÅÎ %ÑâR;ù|ÃÃñgZV5¼úÌcñLlwªŒòó¹r‚U¦,ÙR¢ÑM™âo:!A ±*aIêÕNñsœQ©í#Vž½BRV·w VG„%Z:HK"tÝÈV¬, mÛ–¼¦R©³ÇÉ6Ü�ëhê@ŽªðåË—qôèQ,--U‹ç)•J¡Ùœ?õú*yä—122ÒÓ1Õjßþößàüù³}.�c¿áDë`·´­��‹ELLLtt„œý¥ñ6ì@5ÖˆS»5#3÷±ÌJ¢Ô%I£È²µZ­m£df–™ŠƒuÐÅŽÖº$”P¨¡`¹-ìÈZ °Ýn?j\4 š÷I’¥Æ—Ëï0ž$Ë–-f0­Ñ´e±F$f|U1àóµJÍÐÐ …B˜eH×_Yà½iÛ¢â  Û�Æ«¡µî¸$%‹Ufcue¯­Š÷³„ËÎþ´J ë¹[ü•ÖµnÛK5+éÃrh™zE¬¬I •�ñ³ƒ{ÞØ=°.µž¬êªe¢*œÏçÑno¥siµZ(—Ëh4XXXÀòò2VWW111ú8¾gûE´^}õ|ìc¿ˆt:�ÕÕÕžŽI§ÓxßûÞ�¯~õÏqâÄÉž¯uæÌ|ùË_Æêê*xà<øàƒW[lGŸ�¼j±ãÀ iyœØù1Ñ(;¡W_}/^D¹\î˜ý¦F,•º2¥ŸËªh q³Ù n/ªjœô|ÚIkìU’aâê�îkcŠ€í±IIî %_$mU8lmã{¬ŠÀkǎ׼×ÖÖB®…GU‹ �s[:�Áñl§1ÕÊ’,U˜bnRmûJ|uËiÉ–}nÖMhUDžKc ©”ñ|ú\÷BÍJ"öÝâÃl=Ù}t¿^ê26è…èÅÔnÖcì}ORÏtÒŒ~Øö„Äʪk›Þ¯$ õzÃÙ]Ý+ë¡öæj€ï}ï{¸÷Þ{§N�Âã�?Ž/~ñ‹».¯£?|åüð•Wöì|®h]gÐÌïv{­VÃÀÀÆÇǃ±§ñ¶$ûB¡ ɺëõ:€N£LÃeI;FuÿiÌÏ9ÅΖFK]2I$�eRã—F·”5Fö»5P1£¢ç�)Sö|T±””RÅKrµ¨kVaI¤u—Ù:SBe˧ϔ�ë–hià³Ö/¯KÆÅ³ÛívÑdÀõ)Ï,€àŠÖuí s¹\ø{ôèQ[nE5!–‹19Ü—ŠV£Ñè]jP³.�©²Ä'k»…½§� éî–rÀ¢Ùÿ•Tk½Ûïöºv»�˜`?1UÎ’>;à'•Ju,Æw�aÚ>÷Ií`§O¯hµZxöÙgñÐC…mýèGQ­Vñ /ôã–W W´®3脌‘J"ÖåDCšÉdBE’  6m‡«dƒŠ€^K£•„íÔÑXã¦16ì�I“HD*µ•Ð4f T%°Æ@�‚½×n�¢, Þ·{Ý$b;¿^ÇÖUa³Ûu_}NJ8´œZ}Žúx>.y²´´„ÕÕÕìNÅŒäܪ*Z¿Ö}jg ZåÅÆÅ2Âë}[··’,¾GlËú®XÂgŸU¬ ï±�E’;�õ®×JºfŒ`Lj¾èh½Ú¶; gŒˆé=jZ=¯�Ù³.@ Y¾f³®É‰'ÕjËËËXXX@>ŸïiØ/´Ûý½ÞåË—Ñl6qòäVËBË „·õ�ô¬â‹¿JR+­«uØ­ I?¦ª"œ4`}ê1:¨Òr(™ÓAû-¿¶3%Z¼v­V Ïycc�F+++X^^Æüüöœí;`ÏÉÈù¡’988ˆF£ν¾¾fù’hÙzî'úí:à 7Ü€_|÷Ýwàå—_F£ÑÀéÓ‡'éi?•ª«-•¬½*›­C*Ý�JmåÂb'5pj44†%Fl,ÑÊçóh4AP¢Õjµ:‚¥5.‚�dÒˆš£Uº~ô7«t�.¦Øýëö¤Î5I1±çP’Èコf¬›0æ®!iŠŒ˜»QGøö>b¤0F4y$Îl·ÛaâC¹\ÆäädÈÎÅ¢Ù&lÚ‘f³bcæææ077‡……… ’ÆH– *�‘h…’€$…B [Rº u‡“dÅ(„*oÖ�ÌvÎß9˜è…hq`aÉ[7Ò‹×ÚéÙÇH¹öú>Y«ûØð=�´Øw†õ¡ç°÷SkõÆiñ<­V«ƒh[‹Úó3>pÿ‰Vÿg8>öØcxæ™gðè£�bttŸÿüçñÞ÷¾o{ÛÛú~mGïp¢uÈ�dÔív;àŠ‘ÈårÛ:CRm 1LÊŸÄd“LóÐh4::Ok%,ƒ.áÂ{±Œ$&6ªM")„…˜j§�½vâü«±.–D©;#V&»MÿßéY%mORtìÿ1õ"© –ÐÅ”·F£�Z­†jµL.ŠM’¥³ iس°°€×^{ X]]ÅÈÈ2™L ê±vfɹ8½7�ä‘’G«^Ù w›Ÿk§sÚödÛ@’Š”mÿº¿–%¦¶òÿXý(iS²cÉ™U‘õ�S5K]‡J0õž“\÷¶=ªÆAÕ©Ø ÄÖ1·i<©º¤ÙßÅ&t�@êd‰~c?ˆÖSO=…sçÎavv¹\333øÆ7¾Ñ÷ë:v'Z×)˜Ñ=&í³Sc'ÄÜFù|>$œ´F�³I¶VWWÃÚcj¨XeBIGÇÚáïdÄ”´Ù€p Ó­ ³ÓxmþM"m–hï5¤±‘}Ìè*’ ¯ÝžD(­kFëϪzœ%,V�±*]ˆ«««a=Ær¹Œååå@^†††°²²òªq:ýââ"Þxã ¼ñÆXZZÂòò2šÍfÈ._*•P,;Ú]‘Tv”lYãj I”`±lê*´ñ„Ýž�^_]iIFÔúnÆÖ’”ؾv@a÷‰ $t{LÕ²ª•ÍÀK!‘4ÙDëÆ^[ïQg2] ÷³ïOlÄsó]o·ÛùÞx u_+¢ErÞ+áJ¥R;~‹l6‹¯ýëxýõ×±ººŠS§NõôŽ8ö‰D+6¢w(aˆ�6ÕÝG¢U(Ù²™ÁmæoÎláÔj*VšUãw¬¡ÒÙII ”–Õ’0 ^‡�üÜl')ßaI–_Þ‡’<^?6Ó+IÝJåÛ{Iº7{œ5h±:ãµ­›Sϯdƺƒ¸c¥RA¹\ÆÒÒRpµ  \.£\.w(^óó󘛛Ão¼ÑáŽ%ZTµì}ªÑæ=ìTKô£qX6ñi:�îxºÎºÅgÙgÔ«¢`ÑRâÎsöJجòcß{}t–fѲ qŒléû�TN-ë�q{œ8Âï±sX¥Yãð¨°ZEËf÷gß°_D+—ËáÒ¥‹8vìxÏAø¸xñ"r¹ü®¯wüøñ]ãHÆ^Ç�%¶€ý�=»G¯„—yЏ>X¥R «Øër!Âús–dé¬0íP9šÔ2Q!Ó5ñ” ÙÑ¥’,Kh¬Ê‘Ǡ׌€[²‹ŸŠíËßbç³®N[WVIÔãíucqXŠ^Œ·ª‹I¿ë5Õ¸Óf³YŒŒŒ`tt4¨[—.]ê0º$+º´g*Öjµ£ÈåO,Á²$+VΫ�k’ÝJ¥!SM0•€mÍ™Å6nŸ#UÌÍ™™¬Ç˜ Ô"FÆcä�Ûí16�ݶ¯¤úT×?VÍ� Žb¤ÐVt»u·ë}«âdUÕX™mýØkëþ7gÉÙ~­“'oÀË/¿„z½Þó5[­^}õœ0%/–ň–>sÞ'�¿ª?ûÕ Ø&4þ+éÙÙØ?Uš-ÑVu'Fõ|†J´l|U/D˺Ñù®i}©Çó©Úc#Z^{~ýP‘gã$ æøS¢µŸ‹J;„­ëÚé+ I¥®¬hOÄF—±ÎÔŽ|5 ˜çáÈž²¿~�ÅPظK-£U!´ƒ¶Š–**jH5 ?†$âe;þØ1ª:u;O,¦E÷W ÇjÝÛëÛãÔpÛßY›â€õL¼¹¹Ù‘"¡^¯‡ºãó^[[C»ÝF­V q\õz½#ù§U´ìºl{�õõõŽ”T7¸HºmçJŒ4~'ön�PÅ~çý*aî…pqÖ¯žÓ^CU[*Pú+qÑã’Èy,ÀÆ.Ùv¨÷#Zz¼më¼®%nVQÖó[ò©.R‹��Î årµZ-„4[íðÊÀ`}Ççâpì%œh]'h·ÛÁÄQp%K6—F)‹†Ž� / $ÿ*)°®Au¡ ¥ÃÎPÒxKœ¬r•¤æ¨q¶Rò>ÕåaÝpúÌE§çÕëÅT'Ý7v%€z�–xÙó&ý«‡�Ô.î«[�Dñ9«šÃòr¹Œ×_ívÕj5$Õ{Z]]ÅÜÜ\Øgeeo¼ñ±²²ÖÔ„·\LºŸ˜››ÃåË—177‡ùùùPž$²ÎÅwIücqSZ¯¬Ã˜j¤$„dt'lllE‰eÐlñ6žŒDK•'�u²ï‘ýkëÁÞŸ%¢1ÅÌ-uÿÅÔ¸iÕß-É"ÑŠµkÝß’8� ­K*é'iÀâpôN´®#èȜƀ®?~炬Ú!«ÂaI�íA»väM£Ê`S«l©+¢[€m¬ó·Ð²²ìj<,1´$ËŽ²µ³·åIRœº)ª.hýÙçÔí-«–�çí6¨Ñ2Ùïú¿ºãù]'ÂÄê-¦`'½£±º×ëÇÚ»¼Û…ÂÕ•ÙC7ãpì)œh]'°ÁÝŒ«RI=6ƒŠÙ¾9-Ÿn ÑXmBÝMf;Uu!r»�ÐAt¨¼(Qk··ÖæcÂÃv{k|«ÕB£Ñ踖Ul0­vôÖ$K:ù—÷Éû³k«©±ˆ)kŠ˜ŠFè=ÄÈpL=Ô@b�·bý±.×××CàxµZí(+S5´Ûíp|­V .º•••Ðnøìb‹F÷ ˜ŸŸŸååå°r�*�š è˜p$t#[ÚN4�Án”�¡§©øWãÆø¾és�©Ã±¿ -wLųm=FŽbÇųXýÙíVÕŠ½cº¯H©¢•Éd°ººÚ·^û° “É ÑhôÝÕîè�:2™,šÍ'Z× ¬jB"Òh4¶º[n".QR¯×Ã’=ív»ÃhRá²P¢E£ÊÀXcACD¢#YZ>9�B®¹šØ‰*ÑÒѽ� Q7‹u‰Æ‚cŠÿ&N«�è©›‰*’UÖô:1ƒ§ÄJƒ†cî]½5Îl$Zkkka;�·ºŸ�-B2ͲkúÎðk4aíC«ÙÇû9ã«\.¢µ°°€ÅÅÅP&*ØN¸ ‘•Ô¬+–Ûô:ª îuÕ3ÞˆyÊòù|t@rÆëé»ÓÍuhɾ%6±Eì]°ï’Ö›­Øy“HXR;¶åŽ‘2>Çááaäóù0X°e»2àè-ݵÄôôQœ?wÜqÙl•`ÇޢѨãܹ³˜™™Á… ÿÀ‰ÖŽ Á?è Q- ¡£Íår¨V«!VFã§è:Q¢ÅµÃÚívÈ9Dƒ¬š5æ4 T;´³Uƒ£±VÑR °Uï܇DK—SaYy}ÆÙŸ„Ǧv°äK"IeŠ]�÷¨ueÝwܮϰ›‘SU/–Ã(¦¾°NÙÚíö¶ f]†…Ïš¿ëú–JéRd üÊÊJÇ,Fçî÷ò'ËËË�h-..¢Õl6;Ò(ðþ ªtŒ“â6Kœ­RÈúÕ¶«*q7¢eû>S¾;$ ¥R £££ê]bš$VI„¶Ûáâõbí¦›Š#D–<é`IËlÛ»móVå²íÞ¾‡ImžuW(Â2PÚ±l‡�hMMMaaaÏ?ÿ\PE‡™L333˜œœr¢Õ+“ÜÌÎD @77‚í0c®„¤ŽW»ÆÕÔÛNÇ$�°“öQ—G7b÷Õßì¾ö¯­Ï$ãÚ«º±Ä ž-÷N÷�tÞ˜Nº~’"\}[Ø-”0+ Ý©½ìÆÝf�‹¹Àz96 v£ï³½®%(½`¯ŸÃ^·ç½¸~7Uš¿ln^Ûúu\=lÓ DëÒ¥‹û]‡ÃñÂåË—úvî|>‡»ï¾ wß}Wß®á8üX__»ÖEè óóóh6¸ï¾û]œÖÜÜeLOϼeËÐh4pþüÌÏχm>×Õáp8Ž„¹¹KÿŸu¸H–Èf³¸ãŽÓ˜›»¶9Ñr8‡ã¡Ùl:É:ÄÈfs±uN´‡Ãáp8ú'Z‡Ãáp8}‚-‡Ãáp8Ž>Á‰–Ãáp8GŸàDËáp8‡£Oð„¥‡Ãápì!677qöì\¸ð*êõZOÇäryÜtÓ͸ãŽÓ}.�c¿áDËáp8Ž=ÄùógQ¯¯â‘G~###=S­Vñíoÿ Ο?ÛçÒ9öN´‡ÃáØC¼úê+øØÇ~ét«««=“N§ç“|À œIDATñ¾÷½_ýêŸãĉ“=_ëÌ™3øò—¿ŒÕÕU<ðÀxðÁ¯¶ØŽ>Ác´‡ÃáØCÔëu gvµd»ÝF&“éÙÕßûÞ÷pï½÷N�:…Ç_üâw]^G'~øÊ+øá+¯ìÙù\Ñr8‡c�±¹¹¹ëcv»P÷ç>÷9<òÈ#øÒ—¾8qâž|òI|êSŸòÌò®h9‡Ã±Çh·ÛWõé­V Ï>û,zè¡°í£ý(ªÕ*^xá…~Ü’ã*ኖÃñ&Á2•J!•J]ëâ8Ž€v{÷ŠÖnpùòe4›Mœ<¹ÏU,166† .ôõÚŽÝÁ‰–Ãñ&Ñjµð…/|ŸùÌg�Ëå00àB±ÃñVÇææîÜ€»ÅÚÚlsær¹ðÛa@¯±P·Þr˾—Án¿Ú28Ñr8Þ$Ö××ñôÓÏ \®àÿïÏbllÌÉ–ÃñÇnã­v‹±±1ÀÒÒRÇöÅÅÅð›ã`À‰–Ãñ&Á‘ë·¾õ-¤ÓiüîïþFGG�l9oaôÛu866†n¸/¾ø"î»ï>ÀË/¿ŒF£�Ó§OÒÓ~*UW[*Y{U6·ÇáïÿþïñÍo~O?ý4ªÕêUÍ:r8×ú �=öžyæ,--assŸÿüçñÞ÷¾o{ÛÛútWŽ«�+ZÇá–[nÁw¾óÜÿýÈårøµ_û5‹EW¶Ž· úí:€§žz çÎ�Ãìì,r¹fffð�o|£ï×uìN´Ž=B«ÕÂí·ßŽ¿û»¿ÃûÞ÷>d2Y|üã�£P(8Ùr8ÞbhµZè™p¥R©]«àÙl_ÿú×ñúë¯cuu§N�ò™ÏN´Ž=ÂÆÆÒé4î¼óNüíßþ->ð� ›Íà—~é—P(¼t8Þ"Èår¸té"Ž;ŽÁÁÞÌìÆÆ.^¼ˆ\.¿ëë?~|×Ç8’±×qcN´Ž=B«ÕB«ÕÂàà Þýîwã/ÿò/ñá™L¿ð ¿€|>ïdËáx àäÉðòË/¡^¯#�N÷tL«Õ«¯¾‚“'oØ·£cÿàDËáØ#lll`pp0Œ`ï¿ÿ~üÅ_ü~øad2Y<ðÀÈçsN¶Žë·Þúvüàßǹsgz^»0—ËcvöN�ºr¬ãú�-‡c�Ðjµ‚û�dëýï?¾ò•¯àÑGE&3Œ~ð:Ùr8®sŒŒŒà¶ÛnÇ�7ÞŒV«ÕÓ1étÙl…B¡Ï¥sì7œh9{*Ztþð‡ñGôGxâ‰'�Édð³?û³Èf³N¶Žë©T ÅbÅbñZÅqàS¡Ž=-~ûØÇðôÓOã·~ë·ñÿðšÍ¦Ça8Ç[N´Ž=ƒáùÙÜÜÄ;ßùN  üú¯ÿ:–——ñ›¿ù›8wî\Ï.‡Ãáp^¸ëÐáØ#0>kaaÏ=÷üqüʯü þàþÿøÇQ*� �NchhÙl6¸‡ÃqýÂ{y‡c�Ðjµð_ÿõ_xøá‡±¼¼Œ|O<ñ~ÿ÷ƒƒiÜÿý!ÅÃàà †‡‡¯u‘‡ÃÑg¸ëÐáØ#üçþ'|ðA¼ã·áÔ©[ñôÓO#“Éà7~ã7ðµ¯} ívÅb###Èårž-ÞápD‘ÉdÐh4®u1W‰F£ŽL&þ÷žÞáØ#<òÈ#¸ë®»ðÉO~Ÿþô§ñôÓO£\.ã3Ÿù ^zé_pöì94›Ík]L‡ÃqÀ1=}çÏŸA£Q¿ÖEqì�FçÎ�ÅÌÌLØæ®C‡c�pÿý?…GùEüØ�ÝŽááaüø�ÿ8žyæ<õÔS¸óÎ;ñ�ÿøÞýî{<µƒÃá芩©),,ÌãùçŸC³éÊÖaB&“ÅÌÌ &'§páÂp¢åp¼i ¤ð;¿óÛø¹Ÿû9ÜtÓME»ÝƧ?ýi|ò“ŸÄw¾ó¼ôÒKøà?èËápô„ÍMOÿrXa3÷8Ñr8Þ$†‡‡ñ«¿ú«H#—ˆث{îyžyæ|÷»ßŇ>ôóxÏ{Þƒ\γÂ;Žî˜ŸŸG³ÙÀ}÷Ý�l6»óss—1==³óŽ×i�Ο?ƒùùù°Í‰–Ãñ&100€B¡€T*ÕA¢2™ ~æg~÷Üó.¤R)äóy ]Ã’:ŽΞ=»mÛOþäOnÛöÏÿüÏû²_½^Ã�wÞf&ï×u÷b¿ÅÅELLL\Óò õ´_?Ê—ÍfqúôOàÌ™3á·ÔO}à¡öSÿë¸ûîwm;Ðáp8Žë/¾øOpàìß‹/þ~þç?r­‹qUx«+ZÄ_ÿõ7ÿç‹_ÞR´Øà‡Ãáx+á Ú?jÇáÇ üÄ]÷à/·ð?l`quc§c‡Ãáp8LñÓ§røÈ;ü·¢õÍÝÄ¿^ÞØ)ïp8‡Ãáèí6ðÒÅuWbÅà»ÿ~%)ÚS9†Û�å®Yá‡Ãáp83þåõ:þï_]ÄwÿýЇp@p:Ér8‡Ãá¸züØñ\G–/Áãp8‡ÃÑ'8Ñr8‡Ãáèœh9‡Ãápô N´‡Ãáp8ú'Z‡Ãáp8}‚-‡Ãáp8Ž>Á‰–Ãáp8GŸÐ3Ѻóž÷ô³‡Ãáp8×\Ñr8‡Ãáèœh9‡Ãápô N´‡Ãáp8ú'Z‡Ãáp8}‚-‡Ãáp8Ž>Á‰–Ãáp8GŸàDËáp8‡£Op¢åp8‡ÃÑ'8Ñr8‡Ãáèœh9‡Ãápô =­3ß{¡Ÿåp8‡Ãá¸îàŠ–Ãáp8GŸàDËáp8‡£Op¢åp8‡ÃÑ'8Ñr8‡Ãáèœh9‡Ãápô N´‡Ãáp8ú'Z‡Ãáp8}‚-‡Ãáp8Ž>a& ƒ˜( â¥×ë׺<‡Ãáp8‡/½^¼ à§OåðÒÅuü¿¿ºˆÅÕ�kZ@‡Ãáp8ŽÃ ’¬ÓLJð#ü·¢õ‘w àŽãC׸h‡Ãáp8‡ï<>„Ýv%:k²™A<|xøôð5-˜Ãáp8Çõ†w8‡Ãáè`}}ýZ—Ãáp8‡ãº¹U ~굯ii‡Ãáp8®3<÷­¯¥þ?H�žu]aŸIEND®B`‚