repo migration

This commit is contained in:
2006-09-11 20:19:10 +00:00
commit 41511462f9
167 changed files with 64535 additions and 0 deletions
+626
View File
@@ -0,0 +1,626 @@
h5partPluginInfo.o: h5partPluginInfo.C h5partPluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \
/usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \
/usr/include/c++/4.0.2/bits/stringfwd.h \
/usr/include/c++/4.0.2/bits/char_traits.h \
/usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/c++/4.0.2/bits/stl_algobase.h \
/usr/include/c++/4.0.2/climits \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \
/usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \
/usr/include/locale.h /usr/include/bits/locale.h \
/usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
/usr/include/libintl.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \
/usr/include/bits/initspin.h /usr/include/bits/sigthread.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/c++/4.0.2/cctype \
/usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \
/usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \
/usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \
/usr/include/c++/4.0.2/exception_defines.h \
/usr/include/c++/4.0.2/bits/stl_pair.h \
/usr/include/c++/4.0.2/bits/cpp_type_traits.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.0.2/bits/concept_check.h \
/usr/include/c++/4.0.2/bits/stl_iterator.h \
/usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \
/usr/include/assert.h /usr/include/c++/4.0.2/memory \
/usr/include/c++/4.0.2/bits/allocator.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \
/usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \
/usr/include/c++/4.0.2/exception \
/usr/include/c++/4.0.2/bits/stl_construct.h \
/usr/include/c++/4.0.2/bits/stl_uninitialized.h \
/usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.0.2/limits \
/usr/include/c++/4.0.2/bits/stl_function.h \
/usr/include/c++/4.0.2/bits/basic_string.h \
/usr/include/c++/4.0.2/bits/atomicity.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \
/usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \
/usr/include/c++/4.0.2/bits/stl_heap.h \
/usr/include/c++/4.0.2/bits/stl_tempbuf.h \
/usr/include/c++/4.0.2/bits/basic_string.tcc \
/usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \
/usr/include/c++/4.0.2/bits/stl_bvector.h \
/usr/include/c++/4.0.2/bits/vector.tcc \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit-config.h
h5partCommonPluginInfo.o: h5partCommonPluginInfo.C h5partPluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \
/usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \
/usr/include/c++/4.0.2/bits/stringfwd.h \
/usr/include/c++/4.0.2/bits/char_traits.h \
/usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/c++/4.0.2/bits/stl_algobase.h \
/usr/include/c++/4.0.2/climits \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \
/usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \
/usr/include/locale.h /usr/include/bits/locale.h \
/usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
/usr/include/libintl.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \
/usr/include/bits/initspin.h /usr/include/bits/sigthread.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/c++/4.0.2/cctype \
/usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \
/usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \
/usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \
/usr/include/c++/4.0.2/exception_defines.h \
/usr/include/c++/4.0.2/bits/stl_pair.h \
/usr/include/c++/4.0.2/bits/cpp_type_traits.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.0.2/bits/concept_check.h \
/usr/include/c++/4.0.2/bits/stl_iterator.h \
/usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \
/usr/include/assert.h /usr/include/c++/4.0.2/memory \
/usr/include/c++/4.0.2/bits/allocator.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \
/usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \
/usr/include/c++/4.0.2/exception \
/usr/include/c++/4.0.2/bits/stl_construct.h \
/usr/include/c++/4.0.2/bits/stl_uninitialized.h \
/usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.0.2/limits \
/usr/include/c++/4.0.2/bits/stl_function.h \
/usr/include/c++/4.0.2/bits/basic_string.h \
/usr/include/c++/4.0.2/bits/atomicity.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \
/usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \
/usr/include/c++/4.0.2/bits/stl_heap.h \
/usr/include/c++/4.0.2/bits/stl_tempbuf.h \
/usr/include/c++/4.0.2/bits/basic_string.tcc \
/usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \
/usr/include/c++/4.0.2/bits/stl_bvector.h \
/usr/include/c++/4.0.2/bits/vector.tcc \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h \
avth5partFileFormat.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMTSDFileFormat.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFileFormat.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/array_ref_ptr.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \
/usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \
/usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \
/usr/include/c++/4.0.2/bits/ios_base.h \
/usr/include/c++/4.0.2/bits/locale_classes.h \
/usr/include/c++/4.0.2/streambuf \
/usr/include/c++/4.0.2/bits/streambuf.tcc \
/usr/include/c++/4.0.2/bits/basic_ios.h \
/usr/include/c++/4.0.2/bits/streambuf_iterator.h \
/usr/include/c++/4.0.2/bits/locale_facets.h \
/usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \
/usr/include/c++/4.0.2/bits/codecvt.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \
/usr/include/c++/4.0.2/bits/basic_ios.tcc \
/usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \
/usr/include/c++/4.0.2/bits/locale_facets.tcc \
/usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \
/usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \
/usr/include/c++/4.0.2/bits/fstream.tcc \
/usr/include/c++/4.0.2/backward/strstream \
/usr/include/c++/4.0.2/backward/backward_warning.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSelection.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/pipeline_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ImproperUseException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtexception_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/PipelineException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ref_ptr.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtTypes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/dbatts_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/void_ref_ptr.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/utility_exports.h \
/d/visusers/cristina/H5Part/H5ecloud/H5Part.hh \
/d/visusers/cristina/H5Part/H5ecloud/H5Part.h \
/usr/local/hdf5/include/hdf5.h /usr/local/hdf5/include/H5public.h \
/usr/local/hdf5/include/H5pubconf.h /usr/include/inttypes.h \
/usr/local/hdf5/include/H5api_adpt.h \
/usr/local/hdf5/include/H5Apublic.h /usr/local/hdf5/include/H5Ipublic.h \
/usr/local/hdf5/include/H5ACpublic.h \
/usr/local/hdf5/include/H5Bpublic.h /usr/local/hdf5/include/H5Dpublic.h \
/usr/local/hdf5/include/H5Epublic.h /usr/local/hdf5/include/H5Fpublic.h \
/usr/local/hdf5/include/H5FDpublic.h \
/usr/local/hdf5/include/H5Gpublic.h /usr/local/hdf5/include/H5Opublic.h \
/usr/local/hdf5/include/H5HGpublic.h \
/usr/local/hdf5/include/H5HLpublic.h \
/usr/local/hdf5/include/H5MMpublic.h \
/usr/local/hdf5/include/H5Ppublic.h /usr/local/hdf5/include/H5Zpublic.h \
/usr/local/hdf5/include/H5Rpublic.h /usr/local/hdf5/include/H5Spublic.h \
/usr/local/hdf5/include/H5Tpublic.h /usr/local/hdf5/include/H5FDcore.h \
/usr/local/hdf5/include/H5FDfamily.h /usr/local/hdf5/include/H5FDgass.h \
/usr/local/hdf5/include/H5FDlog.h /usr/local/hdf5/include/H5FDmpi.h \
/usr/local/hdf5/include/H5FDmpio.h \
/usr/local/hdf5/include/H5FDmpiposix.h \
/usr/local/hdf5/include/H5FDmulti.h /usr/local/hdf5/include/H5FDsec2.h \
/usr/local/hdf5/include/H5FDsrb.h /usr/local/hdf5/include/H5FDstdio.h \
/usr/local/hdf5/include/H5FDstream.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMTSDFileFormatInterface.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFileFormatInterface.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtGenericDatabase.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetDatabase.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatabase.h \
/usr/include/c++/4.0.2/list /usr/include/c++/4.0.2/bits/stl_list.h \
/usr/include/c++/4.0.2/bits/list.tcc \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSpecification.h \
/usr/include/c++/4.0.2/map /usr/include/c++/4.0.2/bits/stl_tree.h \
/usr/include/c++/4.0.2/bits/stl_map.h \
/usr/include/c++/4.0.2/bits/stl_multimap.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILRestriction.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSIL.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILCollection.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILMatrix.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILSet.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtGhostData.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataset.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtCommonDataFunctions.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataRepresentation.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObject.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectInformation.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataAttributes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisWindowTypes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtVector.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/math_exports.h \
/usr/include/math.h /usr/include/bits/huge_val.h \
/usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
/usr/include/bits/inf.h /usr/include/bits/nan.h \
/usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
/usr/include/bits/mathinline.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/viswindow_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMatrix.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataValidity.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPipelineSpecification.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataTree.h \
/usr/include/c++/4.0.2/set /usr/include/c++/4.0.2/bits/stl_set.h \
/usr/include/c++/4.0.2/bits/stl_multiset.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtIOInformation.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMaterial.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSpecies.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtVariableCache.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/MIR.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/mir_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/MIROptions.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSystemIncludes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkWin32Header.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/vtkConfigure.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIOStream.h \
/usr/include/c++/4.0.2/iomanip /usr/include/c++/4.0.2/functional \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIdType.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStreamWrapper.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStrStreamWrapper.h \
/usr/include/c++/4.0.2/deque /usr/include/c++/4.0.2/bits/stl_deque.h \
/usr/include/c++/4.0.2/bits/deque.tcc
h5partMDServerPluginInfo.o: h5partMDServerPluginInfo.C h5partPluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \
/usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \
/usr/include/c++/4.0.2/bits/stringfwd.h \
/usr/include/c++/4.0.2/bits/char_traits.h \
/usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/c++/4.0.2/bits/stl_algobase.h \
/usr/include/c++/4.0.2/climits \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \
/usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \
/usr/include/locale.h /usr/include/bits/locale.h \
/usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
/usr/include/libintl.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \
/usr/include/bits/initspin.h /usr/include/bits/sigthread.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/c++/4.0.2/cctype \
/usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \
/usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \
/usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \
/usr/include/c++/4.0.2/exception_defines.h \
/usr/include/c++/4.0.2/bits/stl_pair.h \
/usr/include/c++/4.0.2/bits/cpp_type_traits.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.0.2/bits/concept_check.h \
/usr/include/c++/4.0.2/bits/stl_iterator.h \
/usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \
/usr/include/assert.h /usr/include/c++/4.0.2/memory \
/usr/include/c++/4.0.2/bits/allocator.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \
/usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \
/usr/include/c++/4.0.2/exception \
/usr/include/c++/4.0.2/bits/stl_construct.h \
/usr/include/c++/4.0.2/bits/stl_uninitialized.h \
/usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.0.2/limits \
/usr/include/c++/4.0.2/bits/stl_function.h \
/usr/include/c++/4.0.2/bits/basic_string.h \
/usr/include/c++/4.0.2/bits/atomicity.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \
/usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \
/usr/include/c++/4.0.2/bits/stl_heap.h \
/usr/include/c++/4.0.2/bits/stl_tempbuf.h \
/usr/include/c++/4.0.2/bits/basic_string.tcc \
/usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \
/usr/include/c++/4.0.2/bits/stl_bvector.h \
/usr/include/c++/4.0.2/bits/vector.tcc \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h
avth5partFileFormat.o: avth5partFileFormat.C avth5partFileFormat.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMTSDFileFormat.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFileFormat.h \
/usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \
/usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/c++/4.0.2/string \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \
/usr/include/c++/4.0.2/bits/stringfwd.h \
/usr/include/c++/4.0.2/bits/char_traits.h \
/usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \
/usr/include/string.h /usr/include/c++/4.0.2/bits/stl_algobase.h \
/usr/include/c++/4.0.2/climits \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/cstdlib \
/usr/include/c++/4.0.2/iosfwd \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \
/usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \
/usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \
/usr/include/c++/4.0.2/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/langinfo.h \
/usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \
/usr/include/bits/initspin.h /usr/include/bits/sigthread.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/c++/4.0.2/cctype \
/usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \
/usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \
/usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \
/usr/include/c++/4.0.2/exception_defines.h \
/usr/include/c++/4.0.2/bits/stl_pair.h \
/usr/include/c++/4.0.2/bits/cpp_type_traits.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.0.2/bits/concept_check.h \
/usr/include/c++/4.0.2/bits/stl_iterator.h \
/usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \
/usr/include/assert.h /usr/include/c++/4.0.2/memory \
/usr/include/c++/4.0.2/bits/allocator.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \
/usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \
/usr/include/c++/4.0.2/exception \
/usr/include/c++/4.0.2/bits/stl_construct.h \
/usr/include/c++/4.0.2/bits/stl_uninitialized.h \
/usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.0.2/limits \
/usr/include/c++/4.0.2/bits/stl_function.h \
/usr/include/c++/4.0.2/bits/basic_string.h \
/usr/include/c++/4.0.2/bits/atomicity.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \
/usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \
/usr/include/c++/4.0.2/bits/stl_heap.h \
/usr/include/c++/4.0.2/bits/stl_tempbuf.h \
/usr/include/c++/4.0.2/bits/basic_string.tcc \
/usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \
/usr/include/c++/4.0.2/bits/stl_bvector.h \
/usr/include/c++/4.0.2/bits/vector.tcc \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/array_ref_ptr.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \
/usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \
/usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \
/usr/include/c++/4.0.2/bits/ios_base.h \
/usr/include/c++/4.0.2/bits/locale_classes.h \
/usr/include/c++/4.0.2/streambuf \
/usr/include/c++/4.0.2/bits/streambuf.tcc \
/usr/include/c++/4.0.2/bits/basic_ios.h \
/usr/include/c++/4.0.2/bits/streambuf_iterator.h \
/usr/include/c++/4.0.2/bits/locale_facets.h \
/usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \
/usr/include/c++/4.0.2/bits/codecvt.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \
/usr/include/c++/4.0.2/bits/basic_ios.tcc \
/usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \
/usr/include/c++/4.0.2/bits/locale_facets.tcc \
/usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \
/usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \
/usr/include/c++/4.0.2/bits/fstream.tcc \
/usr/include/c++/4.0.2/backward/strstream \
/usr/include/c++/4.0.2/backward/backward_warning.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSelection.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/pipeline_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ImproperUseException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtexception_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/PipelineException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ref_ptr.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtTypes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/dbatts_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/void_ref_ptr.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/utility_exports.h \
/d/visusers/cristina/H5Part/H5ecloud/H5Part.hh \
/d/visusers/cristina/H5Part/H5ecloud/H5Part.h \
/usr/local/hdf5/include/hdf5.h /usr/local/hdf5/include/H5public.h \
/usr/local/hdf5/include/H5pubconf.h /usr/include/inttypes.h \
/usr/local/hdf5/include/H5api_adpt.h \
/usr/local/hdf5/include/H5Apublic.h /usr/local/hdf5/include/H5Ipublic.h \
/usr/local/hdf5/include/H5ACpublic.h \
/usr/local/hdf5/include/H5Bpublic.h /usr/local/hdf5/include/H5Dpublic.h \
/usr/local/hdf5/include/H5Epublic.h /usr/local/hdf5/include/H5Fpublic.h \
/usr/local/hdf5/include/H5FDpublic.h \
/usr/local/hdf5/include/H5Gpublic.h /usr/local/hdf5/include/H5Opublic.h \
/usr/local/hdf5/include/H5HGpublic.h \
/usr/local/hdf5/include/H5HLpublic.h \
/usr/local/hdf5/include/H5MMpublic.h \
/usr/local/hdf5/include/H5Ppublic.h /usr/local/hdf5/include/H5Zpublic.h \
/usr/local/hdf5/include/H5Rpublic.h /usr/local/hdf5/include/H5Spublic.h \
/usr/local/hdf5/include/H5Tpublic.h /usr/local/hdf5/include/H5FDcore.h \
/usr/local/hdf5/include/H5FDfamily.h /usr/local/hdf5/include/H5FDgass.h \
/usr/local/hdf5/include/H5FDlog.h /usr/local/hdf5/include/H5FDmpi.h \
/usr/local/hdf5/include/H5FDmpio.h \
/usr/local/hdf5/include/H5FDmpiposix.h \
/usr/local/hdf5/include/H5FDmulti.h /usr/local/hdf5/include/H5FDsec2.h \
/usr/local/hdf5/include/H5FDsrb.h /usr/local/hdf5/include/H5FDstdio.h \
/usr/local/hdf5/include/H5FDstream.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkFloatArray.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataArray.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkObject.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkObjectBase.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIndent.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSystemIncludes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkWin32Header.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/vtkConfigure.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIOStream.h \
/usr/include/c++/4.0.2/iomanip /usr/include/c++/4.0.2/functional \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIdType.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStreamWrapper.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStrStreamWrapper.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSetGet.h \
/usr/include/math.h /usr/include/bits/huge_val.h \
/usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
/usr/include/bits/inf.h /usr/include/bits/nan.h \
/usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
/usr/include/bits/mathinline.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkTimeStamp.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkRectilinearGrid.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataSet.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataObject.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkStructuredData.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkStructuredGrid.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPointSet.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPoints.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkUnsignedCharArray.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkUnstructuredGrid.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatabaseMetaData.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ExpressionList.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Expression.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/InvalidVariableException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabaseException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/InvalidFilesException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/BadIndexException.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellType.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPolyData.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellTypes.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIntArray.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellType.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellLinks.h
h5partEnginePluginInfo.o: h5partEnginePluginInfo.C h5partPluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \
/usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/gnu/stubs.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \
/usr/include/c++/4.0.2/bits/stringfwd.h \
/usr/include/c++/4.0.2/bits/char_traits.h \
/usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/c++/4.0.2/bits/stl_algobase.h \
/usr/include/c++/4.0.2/climits \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \
/usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \
/usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \
/usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \
/usr/include/locale.h /usr/include/bits/locale.h \
/usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
/usr/include/libintl.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \
/usr/include/bits/initspin.h /usr/include/bits/sigthread.h \
/usr/include/unistd.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/confname.h \
/usr/include/getopt.h /usr/include/c++/4.0.2/cctype \
/usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \
/usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \
/usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \
/usr/include/c++/4.0.2/exception_defines.h \
/usr/include/c++/4.0.2/bits/stl_pair.h \
/usr/include/c++/4.0.2/bits/cpp_type_traits.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.0.2/bits/concept_check.h \
/usr/include/c++/4.0.2/bits/stl_iterator.h \
/usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \
/usr/include/assert.h /usr/include/c++/4.0.2/memory \
/usr/include/c++/4.0.2/bits/allocator.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \
/usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \
/usr/include/c++/4.0.2/exception \
/usr/include/c++/4.0.2/bits/stl_construct.h \
/usr/include/c++/4.0.2/bits/stl_uninitialized.h \
/usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.0.2/limits \
/usr/include/c++/4.0.2/bits/stl_function.h \
/usr/include/c++/4.0.2/bits/basic_string.h \
/usr/include/c++/4.0.2/bits/atomicity.h \
/usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \
/usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \
/usr/include/c++/4.0.2/bits/stl_heap.h \
/usr/include/c++/4.0.2/bits/stl_tempbuf.h \
/usr/include/c++/4.0.2/bits/basic_string.tcc \
/usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \
/usr/include/c++/4.0.2/bits/stl_bvector.h \
/usr/include/c++/4.0.2/bits/vector.tcc \
/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h
+104
View File
@@ -0,0 +1,104 @@
##
## Programs and options...
##
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/
include $(TOPDIR)/include/make-variables
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/
HOMEPLUGINS=/d/visusers/cristina/.visit/linux-x86_64/plugins
##
## Libraries and includes...
##
VTK_INCLUDE= \
-I$(TOPDIR)/include/vtk \
-I$(TOPDIR)/include/vtk/Common \
-I$(TOPDIR)/include/vtk/Filtering \
-I$(TOPDIR)/include/vtk/Graphics \
-I$(TOPDIR)/include/vtk/Hybrid \
-I$(TOPDIR)/include/vtk/IO \
-I$(TOPDIR)/include/vtk/Imaging \
-I$(TOPDIR)/include/vtk/Rendering
MOC=$(TOPDIR)/bin/moc
CXXFLAGS=$(CXXFLAGSORIG) -I/usr/local/hdf5/include -I/d/visusers/cristina/H5Part/H5ecloud
CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/hdf5/include -I/d/visusers/cristina/H5Part/H5ecloud -I$(TOPDIR)/include -I$(TOPDIR)/include/visit
LDFLAGS=$(LDFLAGSORIG) -L$(HOMEPLUGINS)/databases
##
## Files...
##
PLUGINDIR=databases
PLUGINNAME=h5partDatabase
WIDGETS=
ISRC=h5partPluginInfo.C
COMMONSRC=h5partPluginInfo.C h5partCommonPluginInfo.C
MSRC=h5partMDServerPluginInfo.C avth5partFileFormat.C
ESRC=h5partEnginePluginInfo.C avth5partFileFormat.C
SRC=$(ISRC) $(COMMONSRC) $(MSRC) $(ESRC)
SHLIB_FORCED=-L/d/visusers/cristina/H5Part/H5ecloud/ -lH5Part
ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
MLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
ILIBS=
MLIBS=-lpipeline_ser -ldatabase_ser -lmir_ser -lavtmath_ser -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lexpr -lparser -lplugin -lutility -lvisit_vtk -llightweight_visit_vtk -L$(HOMEPLUGINS)/databases -lI$(PLUGINNAME) $(MLIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
ESERLIBS=-lpipeline_ser -ldatabase_ser -lmir_ser -lavtmath_ser -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lexpr -lparser -lplugin -lutility -lvisit_vtk -llightweight_visit_vtk -L$(HOMEPLUGINS)/databases -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
EPARLIBS=-lpipeline_par -ldatabase_par -lmir_par -lavtmath_par -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lexpr -lparser -lplugin -lutility -lvisit_vtk -llightweight_visit_vtk -L$(HOMEPLUGINS)/databases -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS)
IDSO=$(HOMEPLUGINS)/databases/libIh5partDatabase.so
MDSO=$(HOMEPLUGINS)/databases/libMh5partDatabase.so
ESERDSO=$(HOMEPLUGINS)/databases/libEh5partDatabase_ser.so
EPARDSO=$(HOMEPLUGINS)/databases/libEh5partDatabase_par.so
DISTRIB=
##
## Derived objects
##
IOBJ=$(ISRC:.C=.o)
GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o)
SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o)
VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o)
MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o)
ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o)
EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o)
MOCSRC = $(WIDGETS:.h=_moc.C)
MOCOBJ = $(MOCSRC:.C=.o)
##
## Standard targets...
##
all: message $(IDSO) $(MDSERVERLIB) $(ENGINELIBSER) $(ENGINELIBPAR)
clean:
$(RM) $(IOBJ) $(COMMONOBJ)
$(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ)
$(RM) $(MOCSRC) $(MOCOBJ)
$(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO)
$(RM) $(JAVAOBJ)
##
## Other targets...
##
message:
@echo
@echo "****************************************************************************"
@echo "*** Building h5part Database Plugin"
@echo "****************************************************************************"
##
## moc
##
$(MOCSRC) or_no_widgets: $(WIDGETS)
@rm -f $@
$(MOC) $(@:_moc.C=.h) > $@
##
## Automatic dependency stuff
##
include $(TOPDIR)/include/make-targets
+21
View File
@@ -0,0 +1,21 @@
Reading H5Part data into VisIt:
VisIt, http://www.llnl.gov/visit, is an open source point-and-click 3D scientific visualization application that supports most of the common visualization techniques on structured and unstructured grids. One of its advantages is that it employs a distributed and parallel architecture in order to handle extremely large data sets interactively. VisIt's rendering and data processing capabilities are split into viewer and engine components that may be distributed across multiple machines.
This database plugins allows the user to read H5Part data into VisIt. To be recognized by VisIt the filename needs to have the extension ".h5part". This is important, otherwise VisIt will try to open the file with another reader and it will fail.
Building the plugin:
You must first install VisIt in your machine to be able to link to its libraries.
Modify the Makefile to reflect your installation.
TOPDIR is the path to the VisIt Distribution installation.
HOMEPLUGINS is the path to your home dir .visit plugin directory. Create it if not there.
SHLIB_FORCED is the path to your H5Part. I made H5Part statically linked to the hdf5 library, if you don't, add your -L/hdf5librarypath -lhdf5
Modify the location of the hdf5 include and the H5Part library.
If compiling a parallel version add -DPARALLEL_IO to the CXXFLAGS and CPPFLAGS.
Note: TOPDIR is defined twice because in make-variables it is defined by the VisIt developers to be in one of their machines.
@@ -0,0 +1,597 @@
// ************************************************************************* //
// avth5partFileFormat.C //
// ************************************************************************* //
#include <avth5partFileFormat.h>
#include <string>
#include <vector>
#include <vtkFloatArray.h>
#include <vtkRectilinearGrid.h>
#include <vtkStructuredGrid.h>
#include <vtkUnstructuredGrid.h>
#include <avtDatabaseMetaData.h>
#include <Expression.h>
#include <InvalidVariableException.h>
#include <InvalidFilesException.h>
#include <BadIndexException.h>
#include <vtkCellType.h>
#include <vtkPolyData.h>
//h5part specific
#include <H5Part.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#ifdef PARALLEL_IO
#include <mpi.h>
#include <avtParallel.h>
#endif
using namespace std;
// ****************************************************************************
// Method: avth5part constructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:47:07 PST 2006
//
// ****************************************************************************
avth5partFileFormat::avth5partFileFormat(const char *filename)
: avtMTMDFileFormat(filename)
{
// INITIALIZE DATA MEMBERS
H5PartFile *file;
fname = filename;
file = H5PartOpenFile(filename,H5PART_READ);
if (!file)
EXCEPTION1(InvalidFilesException, filename);
int i, j;
int npoints, npointvars;
int nspace = 3;
H5PartSetStep(file,0);
//points
npoints= (int) H5PartGetNumParticles(file);
if (npoints == 0)
EXCEPTION1(VisItException, "npoints is zero");
points.resize(npoints*nspace);
cout << "constructor: npoints: " << npoints << "\n";
//point vars
npointvars= (int) H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */
pointvars.resize(npointvars);
pointvarnames.resize(npointvars);
cout << "constructor: nvariables: " << npointvars << "\n";
char name[64];
int status;
for (j=0; j < npointvars; j++){
status = H5PartGetDatasetName(file,j, name,64);
if (status != 1){
EXCEPTION1(VisItException, "could not read a variable name");
}
pointvarnames[j] = name;
}
H5PartCloseFile(file);
}
// ****************************************************************************
// Method: avtEMSTDFileFormat::GetNTimesteps
//
// Purpose:
// Tells the rest of the code how many timesteps there are in this file.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:47:07 PST 2006
//
// ****************************************************************************
int
avth5partFileFormat::GetNTimesteps(void)
{
int nt;
H5PartFile *file;
file = H5PartOpenFile(fname.c_str(),H5PART_READ);
H5PartSetStep(file,0);
nt=H5PartGetNumSteps(file); /* get number of steps in file */
H5PartCloseFile(file);
return nt;
}
// ****************************************************************************
// Method: avth5partFileFormat::FreeUpResources
//
// Purpose:
// When VisIt is done focusing on a particular timestep, it asks that
// timestep to free up any resources (memory, file descriptors) that
// it has associated with it. This method is the mechanism for doing
// that.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:47:07 PST 2006
//
// ****************************************************************************
void
avth5partFileFormat::FreeUpResources(void)
{
}
// ****************************************************************************
// Method: avth5partFileFormat::PopulateDatabaseMetaData
//
// Purpose:
// This database meta-data object is like a table of contents for the
// file. By populating it, you are telling the rest of VisIt what
// information it can request from you.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:47:07 PST 2006
//
// ****************************************************************************
void
avth5partFileFormat::PopulateDatabaseMetaData(avtDatabaseMetaData *md, int timeState)
{
//
// CODE TO ADD A MESH
//
// string meshname = ...
//
// AVT_RECTILINEAR_MESH, AVT_CURVILINEAR_MESH, AVT_UNSTRUCTURED_MESH,
// AVT_POINT_MESH, AVT_SURFACE_MESH, AVT_UNKNOWN_MESH
// avtMeshType mt = AVT_RECTILINEAR_MESH;
//
// int nblocks = YOU_MUST_DECIDE;
// int block_origin = 0;
// int spatial_dimension = 2;
// int topological_dimension = 2;
// float *extents = NULL;
//
// Here's the call that tells the meta-data object that we have a mesh:
//
// AddMeshToMetaData(md, meshname, mt, extents, nblocks, block_origin,
// spatial_dimension, topological_dimension);
//
//
// CODE TO ADD A SCALAR VARIABLE
//
// string mesh_for_this_var = meshname; // ??? -- could be multiple meshes
// string varname = ...
//
// AVT_NODECENT, AVT_ZONECENT, AVT_UNKNOWN_CENT
// avtCentering cent = AVT_NODECENT;
//
//
// Here's the call that tells the meta-data object that we have a var:
//
// AddScalarVarToMetaData(md, varname, mesh_for_this_var, cent);
//
//
// CODE TO ADD A VECTOR VARIABLE
//
// string mesh_for_this_var = meshname; // ??? -- could be multiple meshes
// string varname = ...
// int vector_dim = 2;
//
// AVT_NODECENT, AVT_ZONECENT, AVT_UNKNOWN_CENT
// avtCentering cent = AVT_NODECENT;
//
//
// Here's the call that tells the meta-data object that we have a var:
//
// AddVectorVarToMetaData(md, varname, mesh_for_this_var, cent,vector_dim);
//
//
// CODE TO ADD A TENSOR VARIABLE
//
// string mesh_for_this_var = meshname; // ??? -- could be multiple meshes
// string varname = ...
// int tensor_dim = 9;
//
// AVT_NODECENT, AVT_ZONECENT, AVT_UNKNOWN_CENT
// avtCentering cent = AVT_NODECENT;
//
//
// Here's the call that tells the meta-data object that we have a var:
//
// AddTensorVarToMetaData(md, varname, mesh_for_this_var, cent,tensor_dim);
//
//
// CODE TO ADD A MATERIAL
//
// string mesh_for_mat = meshname; // ??? -- could be multiple meshes
// string matname = ...
// int nmats = ...;
// vector<string> mnames;
// for (int i = 0 ; i < nmats ; i++)
// {
// char str[32];
// sprintf(str, "mat%d", i);
// -- or --
// strcpy(str, "Aluminum");
// mnames.push_back(str);
// }
//
// Here's the call that tells the meta-data object that we have a mat:
//
// AddMaterialToMetaData(md, matname, mesh_for_mat, nmats, mnames);
//
//
// Here's the way to add expressions:
//Expression momentum_expr;
//momentum_expr.SetName("momentum");
//momentum_expr.SetDefinition("{u, v}");
//momentum_expr.SetType(Expression::VectorMeshVar);
//md->AddExpression(&momentum_expr);
//Expression KineticEnergy_expr;
//KineticEnergy_expr.SetName("KineticEnergy");
//KineticEnergy_expr.SetDefinition("0.5*(momentum*momentum)/(rho*rho)");
//KineticEnergy_expr.SetType(Expression::ScalarMeshVar);
//md->AddExpression(&KineticEnergy_expr);
//
int size;
size = 1;
#ifdef PARALLEL_IO
size = PAR_Size();
#endif
if (!points.size()) {
EXCEPTION1(InvalidFilesException, "Number of points is zero");
}
cout << "Populate: size, : " << size << "\n";
avtMeshMetaData *pmesh = new avtMeshMetaData;
int dimension = 3;
pmesh->name = "particles";
pmesh->originalName = "particles";
pmesh->meshType = AVT_POINT_MESH;
pmesh->topologicalDimension = 0;
pmesh->spatialDimension = dimension;
pmesh->numBlocks = size;
pmesh->blockTitle = "subset";
pmesh->blockPieceName = "subset";
pmesh->hasSpatialExtents = false;
md->Add(pmesh);
int i;
for (i=0; i < pointvarnames.size(); i++){
AddScalarVarToMetaData(md, pointvarnames[i], "particles", AVT_NODECENT);
}
}
// ****************************************************************************
// Method: avth5partFileFormat::GetMesh
//
// Purpose:
// Gets the mesh associated with this file. The mesh is returned as a
// derived type of vtkDataSet (ie vtkRectilinearGrid, vtkStructuredGrid,
// vtkUnstructuredGrid, etc).
//
// Arguments:
// timestate The index of the timestate. If GetNTimesteps returned
// 'N' time steps, this is guaranteed to be between 0 and N-1.
// domain The index of the domain. If there are NDomains, this
// value is guaranteed to be between 0 and NDomains-1,
// regardless of block origin.
// meshname The name of the mesh of interest. This can be ignored if
// there is only one mesh.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:47:07 PST 2006
//
// ****************************************************************************
vtkDataSet *
avth5partFileFormat::GetMesh(int timestate, int domain, const char *meshname)
{
cout << "GetMesh domain: " << domain << "\n";
H5PartFile *file;
file = H5PartOpenFile(fname.c_str(),H5PART_READ);
if (!file)
EXCEPTION1(InvalidFilesException, fname.c_str());
long int tnpoints, npoints;
int npointvars;
int nspace = 3;
int nprocs = 1;
#ifdef PARALLEL_IO
nprocs = PAR_Size();
#endif
H5PartSetStep(file,timestate);
//points
tnpoints= (int) H5PartGetNumParticles(file);
unsigned long long idStart = ((int)(tnpoints/nprocs))*domain;
unsigned long long idEnd;
if (domain < nprocs-1)
idEnd = ((unsigned long int)(tnpoints/nprocs))*(domain+1);
else if (domain == nprocs - 1)
idEnd = tnpoints;
H5PartSetView(file,idStart,idEnd);
//points
npoints= (long int) H5PartGetNumParticles(file);
cout << "GetMesh: npoints for domain " << domain << ": " << npoints << "\n";
if (strcmp(meshname, "particles") != 0){
EXCEPTION1(InvalidVariableException, meshname);
}
if (npoints == 0)
EXCEPTION1(VisItException, "npoints is zero");
points.resize(npoints*nspace);
double *x, *y, *z;
x = (double *) malloc(sizeof(double)*npoints);
y = (double *) malloc(sizeof(double)*npoints);
z = (double *) malloc(sizeof(double)*npoints);
int status = 0;
status = H5PartReadDataFloat64(file, "x", x);
if (status != 1)
EXCEPTION1(VisItException, "Could not read x coordinates");
status = H5PartReadDataFloat64(file, "y", y);
if (status != 1)
EXCEPTION1(VisItException, "Could not read y coordinates");
status = H5PartReadDataFloat64(file, "z", z);
if (status != 1)
EXCEPTION1(VisItException, "Could not read z coordinates");
for (long int i = 0; i < npoints; i++){
points[nspace*i] = (float) x[i];
points[nspace*i+1] = (float) y[i];
points[nspace*i+2] = (float) z[i];
}
free(x);
free(y);
free(z);
H5PartSetView(file,-1, -1);
vtkPolyData *dataset = vtkPolyData::New();
vtkPoints *vtkpoints = vtkPoints::New();
vtkpoints->SetNumberOfPoints((vtkIdType) npoints);
float *pts = (float *) vtkpoints->GetVoidPointer(0);
for (long int i=0; i < npoints*nspace; i++){
pts[i] = points[i];
}
dataset->Allocate(npoints*nspace);
for (long int i=0; i < npoints; i++){
vtkIdType onevertex = (vtkIdType) i;
dataset->InsertNextCell(VTK_VERTEX, 1, &onevertex);
}
dataset->SetPoints(vtkpoints);
vtkpoints->Delete();
H5PartCloseFile(file);
fprintf(stderr,"proc[%u]: done\n", domain);
return dataset;
}
// ****************************************************************************
// Method: avth5partFileFormat::GetVar
//
// Purpose:
// Gets a scalar variable associated with this file. Although VTK has
// support for many different types, the best bet is vtkFloatArray, since
// that is supported everywhere through VisIt.
//
// Arguments:
// timestate The index of the timestate. If GetNTimesteps returned
// 'N' time steps, this is guaranteed to be between 0 and N-1.
// domain The index of the domain. If there are NDomains, this
// value is guaranteed to be between 0 and NDomains-1,
// regardless of block origin.
// varname The name of the variable requested.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:47:07 PST 2006
//
// ****************************************************************************
vtkDataArray *
avth5partFileFormat::GetVar(int timestate, int domain, const char *varname)
{
//
// If you have a file format where variables don't apply (for example a
// strictly polygonal format like the STL (Stereo Lithography) format,
// then uncomment the code below.
//
// EXCEPTION1(InvalidVariableException, varname);
//
//
// If you do have a scalar variable, here is some code that may be helpful.
//
// int ntuples = XXX; // this is the number of entries in the variable.
// vtkFloatArray *rv = vtkFloatArray::New();
// rv->SetNumberOfTuples(ntuples);
// for (int i = 0 ; i < ntuples ; i++)
// {
// rv->SetTuple1(i, VAL); // you must determine value for ith entry.
// }
//
// return rv;
//
H5PartFile *file;
file = H5PartOpenFile(fname.c_str(),H5PART_READ);
if (!file)
EXCEPTION1(InvalidFilesException, fname.c_str());
int status;
long int tnpoints, npoints;
int npointvars;
int nspace = 3;
int nprocs = 1;
#ifdef PARALLEL_IO
nprocs = PAR_Size();
#endif
H5PartSetStep(file,timestate);
//points
tnpoints= (long int) H5PartGetNumParticles(file);
//point vars
char name[64];
long long *idvar;
double *data;
unsigned long long idStart = ((int)(tnpoints/nprocs))*domain;
unsigned long long idEnd;
if (domain < nprocs-1)
idEnd = ((unsigned long int)(tnpoints/nprocs))*(domain+1);
else if (domain == nprocs - 1)
idEnd = tnpoints;
H5PartSetView(file,idStart,idEnd);
npoints= (int) H5PartGetNumParticles(file);
cout << "GetVar: npoints for domain " << domain << ": " << npoints << "\n";
for (int j=0; j < pointvarnames.size(); j++){
status = H5PartGetDatasetName(file,j, name,64);
if (pointvarnames[j] == name) {
if (strstr(name, "id") != NULL){
idvar = (long long *) malloc(sizeof(long long)*npoints);
status = H5PartReadDataInt64(file, name, idvar);
if (status != 1)
EXCEPTION1(VisItException, "Could not read dataset");
pointvars[j].resize(npoints);
for (long int i=0; i < npoints; i++){
pointvars[j][i] = (float) idvar[i];
}
if (idvar != NULL)
free(idvar);
} else {
data = (double *) malloc(sizeof(double)*npoints);
status = H5PartReadDataFloat64(file, name, data);
if (status != 1)
EXCEPTION1(VisItException, "Could not read dataset");
pointvars[j].resize(npoints);
for (long int i=0; i < npoints; i++){
pointvars[j][i] = (float) data[i];
}
if (data != NULL)
free(data);
}
}
}
H5PartSetView(file,-1, -1);
for (int i=0; i < pointvarnames.size(); i++){
if (pointvarnames[i] == string(varname)){
vtkFloatArray *scalars = vtkFloatArray::New();
scalars->SetNumberOfTuples(npoints);
float *ptr = (float*) scalars->GetVoidPointer(0);
memcpy(ptr, &pointvars[i][0], sizeof(float)*npoints);
return scalars;
}
}
H5PartCloseFile(file);
EXCEPTION1(InvalidVariableException, varname);
}
// ****************************************************************************
// Method: avth5partFileFormat::GetVectorVar
//
// Purpose:
// Gets a vector variable associated with this file. Although VTK has
// support for many different types, the best bet is vtkFloatArray, since
// that is supported everywhere through VisIt.
//
// Arguments:
// timestate The index of the timestate. If GetNTimesteps returned
// 'N' time steps, this is guaranteed to be between 0 and N-1.
// domain The index of the domain. If there are NDomains, this
// value is guaranteed to be between 0 and NDomains-1,
// regardless of block origin.
// varname The name of the variable requested.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:47:07 PST 2006
//
// ****************************************************************************
vtkDataArray *
avth5partFileFormat::GetVectorVar(int timestate, int domain,const char *varname)
{
//
// If you have a file format where variables don't apply (for example a
// strictly polygonal format like the STL (Stereo Lithography) format,
// then uncomment the code below.
//
// EXCEPTION1(InvalidVariableException, varname);
//
//
// If you do have a vector variable, here is some code that may be helpful.
//
// int ncomps = YYY; // This is the rank of the vector - typically 2 or 3.
// int ntuples = XXX; // this is the number of entries in the variable.
// vtkFloatArray *rv = vtkFloatArray::New();
// int ucomps = (ncomps == 2 ? 3 : ncomps);
// rv->SetNumberOfComponents(ucomps);
// rv->SetNumberOfTuples(ntuples);
// float *one_entry = new float[ucomps];
// for (int i = 0 ; i < ntuples ; i++)
// {
// int j;
// for (j = 0 ; j < ncomps ; j++)
// one_entry[j] = ...
// for (j = ncomps ; j < ucomps ; j++)
// one_entry[j] = 0.;
// rv->SetTuple(i, one_entry);
// }
//
// delete [] one_entry;
// return rv;
//
return NULL;
}
@@ -0,0 +1,75 @@
// ************************************************************************* //
// avth5partFileFormat.h //
// ************************************************************************* //
#ifndef AVT_h5part_FILE_FORMAT_H
#define AVT_h5part_FILE_FORMAT_H
#include <avtMTMDFileFormat.h>
#include <H5Part.hh>
#include <vector>
#include <string>
// ****************************************************************************
// Class: avth5partFileFormat
//
// Purpose:
// Reads in h5part files as a plugin to VisIt.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Mon Feb 27 13:53:31 PST 2006
//
// ****************************************************************************
class avth5partFileFormat : public avtMTMDFileFormat
{
public:
avth5partFileFormat(const char *);
virtual ~avth5partFileFormat() {;};
//
// This is used to return unconvention data -- ranging from material
// information to information about block connectivity.
//
// virtual void *GetAuxiliaryData(const char *var, const char *type,
// int timestep, int domain,void *args,
// DestructorFunction &);
//
//
// If you know the times and cycle numbers, overload this function.
// Otherwise, VisIt will make up some reasonable ones for you.
//
// virtual void GetCycles(std::vector<int> &);
// virtual void GetTimes(std::vector<double> &);
//
virtual int GetNTimesteps(void);
virtual const char *GetType(void) { return "h5part"; };
virtual void FreeUpResources(void);
virtual vtkDataSet *GetMesh(int, int, const char *);
virtual vtkDataArray *GetVar(int, int, const char *);
virtual vtkDataArray *GetVectorVar(int, int, const char *);
protected:
// DATA MEMBERS
virtual void PopulateDatabaseMetaData(avtDatabaseMetaData *, int);
std::string fname; //filename
std::vector<float> points; //point coordinates
std::vector<std::vector<float> > pointvars; //point variables
std::vector<std::string> pointvarnames; //point variables' names
std::vector<float> minExtents; //min extents
std::vector<float> maxExtents; //max extents
};
#endif
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<Plugin name="h5part" type="database" label="h5part" version="1.0" enabled="true" mdspecificcode="false" onlyengine="false" noengine="false" dbtype="MTMD" haswriter="false" hasoptions="false">
<CXXFLAGS>
-I/usr/local/hdf5/include
</CXXFLAGS>
<LIBS>
-L/d/visusers/cristina/H5Part/H5ecloud/ -lH5Part
</LIBS>
<Extensions>
h5part
</Extensions>
<Attribute name="" purpose="" persistent="true" exportAPI="" exportInclude="">
</Attribute>
</Plugin>
@@ -0,0 +1,65 @@
#include <h5partPluginInfo.h>
#include <avth5partFileFormat.h>
#include <avtMTMDFileFormatInterface.h>
#include <avtGenericDatabase.h>
// ****************************************************************************
// Method: h5partCommonPluginInfo::GetDatabaseType
//
// Purpose:
// Returns the type of a h5part database.
//
// Programmer: cristina -- generated by xml2info
// Creation: Mon Feb 27 13:53:31 PST 2006
//
// ****************************************************************************
DatabaseType
h5partCommonPluginInfo::GetDatabaseType()
{
return DB_TYPE_MTMD;
}
// ****************************************************************************
// Method: h5partCommonPluginInfo::GetDefaultExtensions
//
// Purpose:
// Returns the default extensions for a h5part database.
//
// Programmer: cristina -- generated by xml2info
// Creation: Mon Feb 27 13:53:31 PST 2006
//
// ****************************************************************************
std::vector<std::string>
h5partCommonPluginInfo::GetDefaultExtensions()
{
std::vector<std::string> defaultExtensions;
defaultExtensions.push_back("h5part");
return defaultExtensions;
}
// ****************************************************************************
// Method: h5partCommonPluginInfo::Setuh5partDatabase
//
// Purpose:
// Sets up a h5part database.
//
// Arguments:
// list A list of file names.
// nList The number of timesteps in list.
// nBlocks The number of blocks in the list.
//
// Returns: A h5part database from list.
//
// Programmer: cristina -- generated by xml2info
// Creation: Mon Feb 27 13:53:31 PST 2006
//
// ****************************************************************************
avtDatabase *
h5partCommonPluginInfo::SetupDatabase(const char *const *list,
int nList, int nBlock)
{
return new avtGenericDatabase(
new avtMTMDFileFormatInterface(
new avth5partFileFormat(list[0])));
}
@@ -0,0 +1,39 @@
#include <h5partPluginInfo.h>
#if defined(__APPLE__)
#define GetEngineInfo h5part_GetEngineInfo
#endif
// ****************************************************************************
// Function: GetEngineInfo
//
// Purpose:
// Return a new EnginePluginInfo for the h5part database.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
extern "C" EngineDatabasePluginInfo* GetEngineInfo()
{
return new h5partEnginePluginInfo;
}
// ****************************************************************************
// Method: h5partCommonPluginInfo::GetWriter
//
// Purpose:
// Sets up a h5part writer.
//
// Returns: A h5part writer.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
avtDatabaseWriter *
h5partEnginePluginInfo::GetWriter(void)
{
return NULL;
}
@@ -0,0 +1,25 @@
#include <h5partPluginInfo.h>
#if defined(__APPLE__)
#define GetMDServerInfo h5part_GetMDServerInfo
#endif
// ****************************************************************************
// Function: GetMDServerInfo
//
// Purpose:
// Return a new MDServerPluginInfo for the h5part database.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
extern "C" MDServerDatabasePluginInfo* GetMDServerInfo()
{
return new h5partMDServerPluginInfo;
}
// this makes compilers happy... remove if we ever have functions here
void h5partMDServerPluginInfo::dummy()
{
}
@@ -0,0 +1,124 @@
// ************************************************************************* //
// File: h5partPluginInfo.C
// ************************************************************************* //
#include <h5partPluginInfo.h>
#include <visit-config.h>
#if defined(__APPLE__)
extern "C" const char *h5partVisItPluginVersion = VERSION;
#else
extern "C" const char *VisItPluginVersion = VERSION;
#endif
#if defined(__APPLE__)
#define GetGeneralInfo h5part_GetGeneralInfo
#endif
// ****************************************************************************
// Function: GetGeneralInfo
//
// Purpose:
// Return a new GeneralPluginInfo for the h5part database.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
extern "C" GeneralDatabasePluginInfo* GetGeneralInfo()
{
return new h5partGeneralPluginInfo;
}
// ****************************************************************************
// Method: h5partGeneralPluginInfo::GetName
//
// Purpose:
// Return the name of the database plugin.
//
// Returns: A pointer to the name of the database plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
char *
h5partGeneralPluginInfo::GetName() const
{
return "h5part";
}
// ****************************************************************************
// Method: h5partGeneralPluginInfo::GetVersion
//
// Purpose:
// Return the version of the database plugin.
//
// Returns: A pointer to the version of the database plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
char *
h5partGeneralPluginInfo::GetVersion() const
{
return "1.0";
}
// ****************************************************************************
// Method: h5partGeneralPluginInfo::GetID
//
// Purpose:
// Return the id of the database plugin.
//
// Returns: A pointer to the id of the database plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
char *
h5partGeneralPluginInfo::GetID() const
{
return "h5part_1.0";
}
// ****************************************************************************
// Method: h5partGeneralPluginInfo::EnabledByDefault
//
// Purpose:
// Return true if this plugin should be enabled by default; false otherwise.
//
// Returns: true/false
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
bool
h5partGeneralPluginInfo::EnabledByDefault() const
{
return true;
}
// ****************************************************************************
// Method: h5partGeneralPluginInfo::HasWriter
//
// Purpose:
// Return true if this plugin has a database writer.
//
// Returns: true/false
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// ****************************************************************************
bool
h5partGeneralPluginInfo::HasWriter() const
{
return false;
}
@@ -0,0 +1,60 @@
// ****************************************************************************
// h5partPluginInfo.h
// ****************************************************************************
#ifndef H5PART_PLUGIN_INFO_H
#define H5PART_PLUGIN_INFO_H
#include <DatabasePluginInfo.h>
#include <database_plugin_exports.h>
class avtDatabase;
class avtDatabaseWriter;
// ****************************************************************************
// Class: h5partDatabasePluginInfo
//
// Purpose:
// Classes that provide all the information about the h5part plugin.
// Portions are separated into pieces relevant to the appropriate
// components of VisIt.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 9 09:51:18 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class h5partGeneralPluginInfo : public virtual GeneralDatabasePluginInfo
{
public:
virtual char *GetName() const;
virtual char *GetVersion() const;
virtual char *GetID() const;
virtual bool EnabledByDefault() const;
virtual bool HasWriter() const;
};
class h5partCommonPluginInfo : public virtual CommonDatabasePluginInfo, public virtual h5partGeneralPluginInfo
{
public:
virtual DatabaseType GetDatabaseType();
virtual std::vector<std::string> GetDefaultExtensions();
virtual avtDatabase *SetupDatabase(const char * const *list,
int nList, int nBlock);
};
class h5partMDServerPluginInfo : public virtual MDServerDatabasePluginInfo, public virtual h5partCommonPluginInfo
{
public:
// this makes compilers happy... remove if we ever have functions here
virtual void dummy();
};
class h5partEnginePluginInfo : public virtual EngineDatabasePluginInfo, public virtual h5partCommonPluginInfo
{
public:
virtual avtDatabaseWriter *GetWriter(void);
};
#endif
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
<?xml version="1.0"?>
<Plugin name="Binner" type="operator" label="Binner" version="1.0" enabled="true" mdspecificcode="false" onlyengine="false" noengine="false" iconFile="icon.xpm">
<Attribute name="Binner" purpose="Bin particles" persistent="true" exportAPI="" exportInclude="">
<Field name="dim1" label="dim1" type="int">
</Field>
<Field name="dim2" label="dim2" type="int">
</Field>
<Field name="dim3" label="dim3" type="int">
</Field>
</Attribute>
</Plugin>
@@ -0,0 +1,47 @@
// ************************************************************************* //
// File: BinnerCommonPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
// ****************************************************************************
// Method: BinnerCommonPluginInfo::AllocAttributes
//
// Purpose:
// Return a pointer to a newly allocated attribute subject.
//
// Returns: A pointer to the newly allocated attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
AttributeSubject *
BinnerCommonPluginInfo::AllocAttributes()
{
return new Binner;
}
// ****************************************************************************
// Method: BinnerCommonPluginInfo::CopyAttributes
//
// Purpose:
// Copy a Binner attribute subject.
//
// Arguments:
// to The destination attribute subject.
// from The source attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerCommonPluginInfo::CopyAttributes(AttributeSubject *to,
AttributeSubject *from)
{
*((Binner *) to) = *((Binner *) from);
}
@@ -0,0 +1,44 @@
// ************************************************************************* //
// File: BinnerEnginePluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <avtBinnerFilter.h>
#if defined(__APPLE__)
#define GetEngineInfo Binner_GetEngineInfo
#endif
// ****************************************************************************
// Function: GetEngineInfo
//
// Purpose:
// Return a new EnginePluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" EngineOperatorPluginInfo* GetEngineInfo()
{
return new BinnerEnginePluginInfo;
}
// ****************************************************************************
// Method: BinnerEnginePluginInfo::AllocAvtPluginFilter
//
// Purpose:
// Return a pointer to a newly allocated avtPluginFilter.
//
// Returns: A pointer to the newly allocated avtPluginFilter.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
avtPluginFilter *
BinnerEnginePluginInfo::AllocAvtPluginFilter()
{
return new avtBinnerFilter;
}
@@ -0,0 +1,535 @@
#include <BinnerFilter.h>
#include <DataNode.h>
// ****************************************************************************
// Method: Binner::Binner
//
// Purpose:
// Constructor for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner::Binner() : AttributeSubject("iii")
{
}
// ****************************************************************************
// Method: Binner::Binner
//
// Purpose:
// Copy constructor for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner::Binner(const Binner &obj) : AttributeSubject("iii")
{
dim1 = obj.dim1;
dim2 = obj.dim2;
dim3 = obj.dim3;
SelectAll();
}
// ****************************************************************************
// Method: Binner::~Binner
//
// Purpose:
// Destructor for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner::~Binner()
{
// nothing here
}
// ****************************************************************************
// Method: Binner::operator =
//
// Purpose:
// Assignment operator for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner&
Binner::operator = (const Binner &obj)
{
if (this == &obj) return *this;
dim1 = obj.dim1;
dim2 = obj.dim2;
dim3 = obj.dim3;
SelectAll();
return *this;
}
// ****************************************************************************
// Method: Binner::operator ==
//
// Purpose:
// Comparison operator == for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::operator == (const Binner &obj) const
{
// Create the return value
return ((dim1 == obj.dim1) &&
(dim2 == obj.dim2) &&
(dim3 == obj.dim3));
}
// ****************************************************************************
// Method: Binner::operator !=
//
// Purpose:
// Comparison operator != for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::operator != (const Binner &obj) const
{
return !(this->operator == (obj));
}
// ****************************************************************************
// Method: Binner::TypeName
//
// Purpose:
// Type name method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
const std::string
Binner::TypeName() const
{
return "Binner";
}
// ****************************************************************************
// Method: Binner::CopyAttributes
//
// Purpose:
// CopyAttributes method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::CopyAttributes(const AttributeGroup *atts)
{
if(TypeName() != atts->TypeName())
return false;
// Call assignment operator.
const Binner *tmp = (const Binner *)atts;
*this = *tmp;
return true;
}
// ****************************************************************************
// Method: Binner::CreateCompatible
//
// Purpose:
// CreateCompatible method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
Binner::CreateCompatible(const std::string &tname) const
{
AttributeSubject *retval = 0;
if(TypeName() == tname)
retval = new Binner(*this);
// Other cases could go here too.
return retval;
}
// ****************************************************************************
// Method: Binner::NewInstance
//
// Purpose:
// NewInstance method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
Binner::NewInstance(bool copy) const
{
AttributeSubject *retval = 0;
if(copy)
retval = new Binner(*this);
else
retval = new Binner;
return retval;
}
// ****************************************************************************
// Method: Binner::SelectAll
//
// Purpose:
// Selects all attributes.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
Binner::SelectAll()
{
Select(0, (void *)&dim1);
Select(1, (void *)&dim2);
Select(2, (void *)&dim3);
}
///////////////////////////////////////////////////////////////////////////////
// Persistence methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: Binner::CreateNode
//
// Purpose:
// This method creates a DataNode representation of the object so it can be saved to a config file.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::CreateNode(DataNode *parentNode, bool completeSave, bool forceAdd)
{
if(parentNode == 0)
return false;
Binner defaultObject;
bool addToParent = false;
// Create a node for Binner.
DataNode *node = new DataNode("Binner");
if(completeSave || !FieldsEqual(0, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("dim1", dim1));
}
if(completeSave || !FieldsEqual(1, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("dim2", dim2));
}
if(completeSave || !FieldsEqual(2, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("dim3", dim3));
}
// Add the node to the parent node.
if(addToParent || forceAdd)
parentNode->AddNode(node);
else
delete node;
return (addToParent || forceAdd);
}
// ****************************************************************************
// Method: Binner::SetFromNode
//
// Purpose:
// This method sets attributes in this object from values in a DataNode representation of the object.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
Binner::SetFromNode(DataNode *parentNode)
{
int i;
if(parentNode == 0)
return;
DataNode *searchNode = parentNode->GetNode("Binner");
if(searchNode == 0)
return;
DataNode *node;
if((node = searchNode->GetNode("dim1")) != 0)
SetDim1(node->AsInt());
if((node = searchNode->GetNode("dim2")) != 0)
SetDim2(node->AsInt());
if((node = searchNode->GetNode("dim3")) != 0)
SetDim3(node->AsInt());
}
///////////////////////////////////////////////////////////////////////////////
// Set property methods
///////////////////////////////////////////////////////////////////////////////
void
Binner::SetDim1(int dim1_)
{
dim1 = dim1_;
Select(0, (void *)&dim1);
}
void
Binner::SetDim2(int dim2_)
{
dim2 = dim2_;
Select(1, (void *)&dim2);
}
void
Binner::SetDim3(int dim3_)
{
dim3 = dim3_;
Select(2, (void *)&dim3);
}
///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////
int
Binner::GetDim1() const
{
return dim1;
}
int
Binner::GetDim2() const
{
return dim2;
}
int
Binner::GetDim3() const
{
return dim3;
}
///////////////////////////////////////////////////////////////////////////////
// Keyframing methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: Binner::GetFieldName
//
// Purpose:
// This method returns the name of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
Binner::GetFieldName(int index) const
{
switch (index)
{
case 0: return "dim1";
case 1: return "dim2";
case 2: return "dim3";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: Binner::GetFieldType
//
// Purpose:
// This method returns the type of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeGroup::FieldType
Binner::GetFieldType(int index) const
{
switch (index)
{
case 0: return FieldType_int;
case 1: return FieldType_int;
case 2: return FieldType_int;
default: return FieldType_unknown;
}
}
// ****************************************************************************
// Method: Binner::GetFieldTypeName
//
// Purpose:
// This method returns the name of a field type given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
Binner::GetFieldTypeName(int index) const
{
switch (index)
{
case 0: return "int";
case 1: return "int";
case 2: return "int";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: Binner::FieldsEqual
//
// Purpose:
// This method compares two fields and return true if they are equal.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::FieldsEqual(int index_, const AttributeGroup *rhs) const
{
const Binner &obj = *((const Binner*)rhs);
bool retval = false;
switch (index_)
{
case 0:
{ // new scope
retval = (dim1 == obj.dim1);
}
break;
case 1:
{ // new scope
retval = (dim2 == obj.dim2);
}
break;
case 2:
{ // new scope
retval = (dim3 == obj.dim3);
}
break;
default: retval = false;
}
return retval;
}
///////////////////////////////////////////////////////////////////////////////
// User-defined methods.
///////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,66 @@
#ifndef BINNER_H
#define BINNER_H
#include <AttributeSubject.h>
// ****************************************************************************
// Class: Binner
//
// Purpose:
// Bin particles
//
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class Binner : public AttributeSubject
{
public:
Binner();
Binner(const Binner &obj);
virtual ~Binner();
virtual Binner& operator = (const Binner &obj);
virtual bool operator == (const Binner &obj) const;
virtual bool operator != (const Binner &obj) const;
virtual const std::string TypeName() const;
virtual bool CopyAttributes(const AttributeGroup *);
virtual AttributeSubject *CreateCompatible(const std::string &) const;
virtual AttributeSubject *NewInstance(bool) const;
// Property selection methods
virtual void SelectAll();
// Property setting methods
void SetDim1(int dim1_);
void SetDim2(int dim2_);
void SetDim3(int dim3_);
// Property getting methods
int GetDim1() const;
int GetDim2() const;
int GetDim3() const;
// Persistence methods
virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd);
virtual void SetFromNode(DataNode *node);
// Keyframing methods
virtual std::string GetFieldName(int index) const;
virtual AttributeGroup::FieldType GetFieldType(int index) const;
virtual std::string GetFieldTypeName(int index) const;
virtual bool FieldsEqual(int index, const AttributeGroup *rhs) const;
private:
int dim1;
int dim2;
int dim3;
};
#endif
@@ -0,0 +1,116 @@
package llnl.visit.operators;
import llnl.visit.AttributeSubject;
import llnl.visit.CommunicationBuffer;
import llnl.visit.Plugin;
// ****************************************************************************
// Class: Binner
//
// Purpose:
// Bin particles
//
// Notes: Autogenerated by xml2java.
//
// Programmer: xml2java
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
public class Binner extends AttributeSubject implements Plugin
{
public Binner()
{
super(3);
dim1 = 0;
dim2 = 0;
dim3 = 0;
}
public Binner(Binner obj)
{
super(3);
dim1 = obj.dim1;
dim2 = obj.dim2;
dim3 = obj.dim3;
SelectAll();
}
public boolean equals(Binner obj)
{
// Create the return value
return ((dim1 == obj.dim1) &&
(dim2 == obj.dim2) &&
(dim3 == obj.dim3));
}
public String GetName() { return "Binner"; }
public String GetVersion() { return "1.0"; }
// Property setting methods
public void SetDim1(int dim1_)
{
dim1 = dim1_;
Select(0);
}
public void SetDim2(int dim2_)
{
dim2 = dim2_;
Select(1);
}
public void SetDim3(int dim3_)
{
dim3 = dim3_;
Select(2);
}
// Property getting methods
public int GetDim1() { return dim1; }
public int GetDim2() { return dim2; }
public int GetDim3() { return dim3; }
// Write and read methods.
public void WriteAtts(CommunicationBuffer buf)
{
if(WriteSelect(0, buf))
buf.WriteInt(dim1);
if(WriteSelect(1, buf))
buf.WriteInt(dim2);
if(WriteSelect(2, buf))
buf.WriteInt(dim3);
}
public void ReadAtts(int n, CommunicationBuffer buf)
{
for(int i = 0; i < n; ++i)
{
int index = (int)buf.ReadByte();
switch(index)
{
case 0:
SetDim1(buf.ReadInt());
break;
case 1:
SetDim2(buf.ReadInt());
break;
case 2:
SetDim3(buf.ReadInt());
break;
}
}
}
// Attributes
private int dim1;
private int dim2;
private int dim3;
}
@@ -0,0 +1,92 @@
// ************************************************************************* //
// File: BinnerGUIPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
#include <QvisBinnerWindow.h>
#if defined(__APPLE__)
#define GetGUIInfo Binner_GetGUIInfo
#endif
// ****************************************************************************
// Function: GetGUIInfo
//
// Purpose:
// Return a new GUIPluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" GUIOperatorPluginInfo* GetGUIInfo()
{
return new BinnerGUIPluginInfo;
}
// ****************************************************************************
// Method: BinnerGUIPluginInfo::GetMenuName
//
// Purpose:
// Return a pointer to the name to use in the GUI menu.
//
// Returns: A pointer to the name to use in the GUI menu.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
const char *
BinnerGUIPluginInfo::GetMenuName() const
{
return "Binner";
}
// ****************************************************************************
// Method: BinnerGUIPluginInfo::CreatePluginWindow
//
// Purpose:
// Return a pointer to an operator's attribute window.
//
// Arguments:
// type The type of the operator.
// attr The attribute subject for the operator.
// notepad The notepad to use for posting the window.
//
// Returns: A pointer to the operator's attribute window.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
QvisPostableWindowObserver *
BinnerGUIPluginInfo::CreatePluginWindow(int type, AttributeSubject *attr,
QvisNotepadArea *notepad)
{
return new QvisBinnerWindow(type, (Binner *)attr,
"Binner operator attributes", "Binner operator", notepad);
}
// ****************************************************************************
// Method: BinnerGUIPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
BinnerGUIPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1,113 @@
##
## Programs and options...
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-variables
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
##
## Libraries and includes...
##
VTK_INCLUDE= \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Filtering \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Graphics \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Hybrid \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/IO \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Imaging \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Rendering
MOC=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/bin/moc
CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS)
CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit
LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L/d/visusers/cristina/.visit/linux-x86_64/plugins/operators
##
## Files...
##
PLUGINDIR=operators
PLUGINNAME=BinnerOperator
WIDGETS=QvisBinnerWindow.h
ISRC=BinnerPluginInfo.C
COMMONSRC=BinnerPluginInfo.C BinnerCommonPluginInfo.C Binner.C
GSRC=BinnerGUIPluginInfo.C QvisBinnerWindow.C
VSRC=BinnerViewerPluginInfo.C
ESRC=BinnerEnginePluginInfo.C avtBinnerFilter.C
SSRC=BinnerScriptingPluginInfo.C PyBinner.C
SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC)
JAVASRC=Binner.java
JAVAOBJ=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java/llnl/visit/operators/Binner.class
JAVAPLUGINFLAGS=-d /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java -classpath /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java
SHLIB_FORCED=
ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
ILIBS=
GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS)
SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME)
VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS)
ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS)
IDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libIBinnerOperator.so
GDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libGBinnerOperator.so
SDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libSBinnerOperator.so
VDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libVBinnerOperator.so
ESERDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEBinnerOperator_ser.so
EPARDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEBinnerOperator_par.so
DISTRIB=
##
## Derived objects
##
IOBJ=$(ISRC:.C=.o)
GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o)
SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o)
VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o)
MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o)
ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o)
EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o)
MOCSRC = $(WIDGETS:.h=_moc.C)
MOCOBJ = $(MOCSRC:.C=.o)
##
## Standard targets...
##
all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS)
clean:
$(RM) $(IOBJ) $(COMMONOBJ)
$(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ)
$(RM) $(MOCSRC) $(MOCOBJ)
$(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO)
$(RM) $(JAVAOBJ)
##
## Other targets...
##
message:
@echo
@echo "****************************************************************************"
@echo "*** Building Binner Operator Plugin"
@echo "****************************************************************************"
##
## moc
##
$(MOCSRC) or_no_widgets: $(WIDGETS)
@rm -f $@
$(MOC) $(@:_moc.C=.h) > $@
##
## Automatic dependency stuff
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-targets
@@ -0,0 +1,107 @@
// ************************************************************************* //
// File: BinnerPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
#include <visit-config.h>
#if defined(__APPLE__)
extern "C" const char *BinnerVisItPluginVersion = VERSION;
#else
extern "C" const char *VisItPluginVersion = VERSION;
#endif
#if defined(__APPLE__)
#define GetGeneralInfo Binner_GetGeneralInfo
#endif
// ****************************************************************************
// Function: GetGeneralInfo
//
// Purpose:
// Return a new GeneralPluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" GeneralOperatorPluginInfo* GetGeneralInfo()
{
return new BinnerGeneralPluginInfo;
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::GetName
//
// Purpose:
// Return the name of the operator plugin.
//
// Returns: A pointer to the name of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
char *
BinnerGeneralPluginInfo::GetName() const
{
return "Binner";
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::GetVersion
//
// Purpose:
// Return the version of the operator plugin.
//
// Returns: A pointer to the version of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
char *
BinnerGeneralPluginInfo::GetVersion() const
{
return "1.0";
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::GetID
//
// Purpose:
// Return the id of the operator plugin.
//
// Returns: A pointer to the id of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
char *
BinnerGeneralPluginInfo::GetID() const
{
return "Binner_1.0";
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::EnabledByDefault
//
// Purpose:
// Return true if this plugin should be enabled by default; false otherwise.
//
// Returns: true/false
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
bool
BinnerGeneralPluginInfo::EnabledByDefault() const
{
return true;
}
@@ -0,0 +1,85 @@
// ************************************************************************* //
// File: BinnerPluginInfo.h
// ************************************************************************* //
#ifndef BINNER_PLUGIN_INFO_H
#define BINNER_PLUGIN_INFO_H
#include <OperatorPluginInfo.h>
#include <operator_plugin_exports.h>
class Binner;
// ****************************************************************************
// Class: BinnerPluginInfo
//
// Purpose:
// Five classes that provide all the information about an Binner operator
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class BinnerGeneralPluginInfo : public virtual GeneralOperatorPluginInfo
{
public:
virtual char *GetName() const;
virtual char *GetVersion() const;
virtual char *GetID() const;
virtual bool EnabledByDefault() const;
};
class BinnerCommonPluginInfo : public virtual CommonOperatorPluginInfo, public virtual BinnerGeneralPluginInfo
{
public:
virtual AttributeSubject *AllocAttributes();
virtual void CopyAttributes(AttributeSubject *to, AttributeSubject *from);
};
class BinnerGUIPluginInfo : public virtual GUIOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual const char *GetMenuName() const;
virtual QvisPostableWindowObserver *CreatePluginWindow(int type,
AttributeSubject *attr, QvisNotepadArea *notepad);
virtual const char **XPMIconData() const;
};
class BinnerViewerPluginInfo : public virtual ViewerOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual AttributeSubject *GetClientAtts();
virtual AttributeSubject *GetDefaultAtts();
virtual void SetClientAtts(AttributeSubject *atts);
virtual void GetClientAtts(AttributeSubject *atts);
virtual void InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault);
virtual const char **XPMIconData() const;
static void InitializeGlobalObjects();
private:
static Binner *defaultAtts;
static Binner *clientAtts;
};
class BinnerEnginePluginInfo : public virtual EngineOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual avtPluginFilter *AllocAvtPluginFilter();
};
class BinnerScriptingPluginInfo : public virtual ScriptingOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual void InitializePlugin(AttributeSubject *subj, void *data);
virtual void *GetMethodTable(int *nMethods);
virtual bool TypesMatch(void *pyobject);
virtual char *GetLogString();
virtual void SetDefaults(const AttributeSubject *atts);
};
#endif
@@ -0,0 +1,142 @@
// ************************************************************************* //
// BinnerScriptingPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <PyBinner.h>
#if defined(__APPLE__)
#define GetScriptingInfo Binner_GetScriptingInfo
#endif
// ****************************************************************************
// Function: GetScriptingInfo
//
// Purpose:
// Return a new ScriptingPluginInfo for the Binner plot.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" ScriptingOperatorPluginInfo* GetScriptingInfo()
{
return new BinnerScriptingPluginInfo;
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::InitializePlugin
//
// Purpose:
// Calls the initialization function for the plugin.
//
// Arguments:
// subj : A pointer to the plugin's state object.
// data : A pointer to data to be used by the observer function.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
BinnerScriptingPluginInfo::InitializePlugin(AttributeSubject *subj,
void *data)
{
PyBinner_StartUp((Binner *)subj, data);
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::GetMethodTable
//
// Purpose:
// Returns a pointer to the plugin's Python method table. These methods are
// added to the top-level visit module's methods.
//
// Arguments:
// nMethods : Returns the number of methods in the method table.
//
// Returns: A pointer to the method table.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void *
BinnerScriptingPluginInfo::GetMethodTable(int *nMethods)
{
return PyBinner_GetMethodTable(nMethods);
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::TypesMatch
//
// Purpose:
// Returns whether or not the input PyObject is Binner plot attributes.
//
// Arguments:
// pyobject : A PyObject cast to void*.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
BinnerScriptingPluginInfo::TypesMatch(void *pyobject)
{
return PyBinner_Check((PyObject *)pyobject);
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::GetLogString
//
// Purpose:
// Gets a string representation of the current attributes.
//
// Arguments:
// val : Whether or not to log state information.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
char *
BinnerScriptingPluginInfo::GetLogString()
{
std::string s(PyBinner_GetLogString());
char *v = new char[s.size() + 1];
strcpy(v, s.c_str());
return v;
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::SetDefaults
//
// Purpose:
// Used to set the default values for a plugin's state object.
//
// Arguments:
// atts : The new state.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
BinnerScriptingPluginInfo::SetDefaults(const AttributeSubject *atts)
{
PyBinner_SetDefaults((const Binner *)atts);
}
@@ -0,0 +1,175 @@
// ************************************************************************* //
// File: BinnerViewerPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
#if defined(__APPLE__)
#define GetViewerInfo Binner_GetViewerInfo
#endif
// ****************************************************************************
// Function: GetViewerInfo
//
// Purpose:
// Return a new ViewerPluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" ViewerOperatorPluginInfo* GetViewerInfo()
{
BinnerViewerPluginInfo::InitializeGlobalObjects();
return new BinnerViewerPluginInfo;
}
//
// Storage for static data elements.
//
Binner *BinnerViewerPluginInfo::clientAtts = NULL;
Binner *BinnerViewerPluginInfo::defaultAtts = NULL;
// ****************************************************************************
// Method: BinnerViewerPluginInfo::InitializeGlobalObjects
//
// Purpose:
// Initialize the operator atts.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::InitializeGlobalObjects()
{
BinnerViewerPluginInfo::clientAtts = new Binner;
BinnerViewerPluginInfo::defaultAtts = new Binner;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::GetClientAtts
//
// Purpose:
// Return a pointer to the viewer client attributes.
//
// Returns: A pointer to the viewer client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
AttributeSubject *
BinnerViewerPluginInfo::GetClientAtts()
{
return clientAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::GetDefaultAtts
//
// Purpose:
// Return a pointer to the viewer default attributes.
//
// Returns: A pointer to the viewer default attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
AttributeSubject *
BinnerViewerPluginInfo::GetDefaultAtts()
{
return defaultAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::SetClientAtts
//
// Purpose:
// Set the viewer client attributes.
//
// Arguments:
// atts A pointer to the new client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::SetClientAtts(AttributeSubject *atts)
{
*clientAtts = *(Binner *)atts;
clientAtts->Notify();
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::GetClientAtts
//
// Purpose:
// Get the viewer client attributes.
//
// Arguments:
// atts A pointer to return the client default attributes in.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::GetClientAtts(AttributeSubject *atts)
{
*(Binner *)atts = *clientAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::InitializeOperatorAtts
//
// Purpose:
// Initialize the operator attributes to the default attributes.
//
// Arguments:
// atts The attribute subject to initialize.
// md The metadata used to initialize.
// atts The variable name used to initialize.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault)
{
if (fromDefault)
*(Binner*)atts = *defaultAtts;
else
*(Binner*)atts = *clientAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
BinnerViewerPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1 @@
s/Binner/Binner/g
@@ -0,0 +1,114 @@
##
## Programs and options...
##
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
include $(TOPDIR)/include/make-variables
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
PLUGINSHOME=$(HOME)/.visit/linux-x86_64/plugins
##
## Libraries and includes...
##
VTK_INCLUDE= \
-I$(TOPDIR)/include/vtk \
-I$(TOPDIR)/include/vtk/Common \
-I$(TOPDIR)/include/vtk/Filtering \
-I$(TOPDIR)/include/vtk/Graphics \
-I$(TOPDIR)/include/vtk/Hybrid \
-I$(TOPDIR)/include/vtk/IO \
-I$(TOPDIR)/include/vtk/Imaging \
-I$(TOPDIR)/include/vtk/Rendering
MOC=$(TOPDIR)/bin/moc
CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS)
CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I$(TOPDIR)/include -I$(TOPDIR)/include/visit
LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L$(PLUGINSHOME)/operators
##
## Files...
##
PLUGINDIR=operators
PLUGINNAME=BinnerOperator
WIDGETS=QvisBinnerWindow.h
ISRC=BinnerPluginInfo.C
COMMONSRC=BinnerPluginInfo.C BinnerCommonPluginInfo.C BinnerFilter.C
GSRC=BinnerGUIPluginInfo.C QvisBinnerWindow.C
VSRC=BinnerViewerPluginInfo.C
ESRC=BinnerEnginePluginInfo.C avtBinnerFilter.C
SSRC=BinnerScriptingPluginInfo.C PyBinner.C
SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC)
JAVASRC=Binner.java
JAVAOBJ=$(TOPDIR)/java/llnl/visit/operators/BinnerFilter.class
JAVAPLUGINFLAGS=-d $(TOPDIR)/java -classpath $(TOPDIR)/java
SHLIB_FORCED=
ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
ILIBS=
GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS)
SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME)
VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS)
ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS)
IDSO=$(PLUGINSHOME)/operators/libIBinnerOperator.so
GDSO=$(PLUGINSHOME)/operators/libGBinnerOperator.so
SDSO=$(PLUGINSHOME)/operators/libSBinnerOperator.so
VDSO=$(PLUGINSHOME)/operators/libVBinnerOperator.so
ESERDSO=$(PLUGINSHOME)/operators/libEBinnerOperator_ser.so
EPARDSO=$(PLUGINSHOME)/operators/libEBinnerOperator_par.so
DISTRIB=
##
## Derived objects
##
IOBJ=$(ISRC:.C=.o)
GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o)
SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o)
VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o)
MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o)
ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o)
EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o)
MOCSRC = $(WIDGETS:.h=_moc.C)
MOCOBJ = $(MOCSRC:.C=.o)
##
## Standard targets...
##
all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS)
clean:
$(RM) $(IOBJ) $(COMMONOBJ)
$(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ)
$(RM) $(MOCSRC) $(MOCOBJ)
$(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO)
$(RM) $(JAVAOBJ)
##
## Other targets...
##
message:
@echo
@echo "****************************************************************************"
@echo "*** Building Binner Operator Plugin"
@echo "****************************************************************************"
##
## moc
##
$(MOCSRC) or_no_widgets: $(WIDGETS)
@rm -f $@
$(MOC) $(@:_moc.C=.h) > $@
##
## Automatic dependency stuff
##
include $(TOPDIR)/include/make-targets
@@ -0,0 +1,422 @@
#include <PyBinner.h>
#include <ObserverToCallback.h>
#include <ColorAttribute.h>
#include <snprintf.h>
// ****************************************************************************
// Module: PyBinner
//
// Purpose:
// Bin particles
//
// Note: Autogenerated by xml2python. Do not modify by hand!
//
// Programmer: xml2python
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
//
// This struct contains the Python type information and a Binner.
//
struct BinnerObject
{
PyObject_HEAD
Binner *data;
bool owns;
};
//
// Internal prototypes
//
static PyObject *NewBinner(int);
std::string
PyBinner_ToString(const Binner *atts, const char *prefix)
{
std::string str;
char tmpStr[1000];
SNPRINTF(tmpStr, 1000, "%sdim1 = %d\n", prefix, atts->GetDim1());
str += tmpStr;
SNPRINTF(tmpStr, 1000, "%sdim2 = %d\n", prefix, atts->GetDim2());
str += tmpStr;
SNPRINTF(tmpStr, 1000, "%sdim3 = %d\n", prefix, atts->GetDim3());
str += tmpStr;
return str;
}
static PyObject *
Binner_Notify(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
obj->data->Notify();
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_SetDim1(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
int ival;
if(!PyArg_ParseTuple(args, "i", &ival))
return NULL;
// Set the dim1 in the object.
obj->data->SetDim1(ival);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_GetDim1(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
PyObject *retval = PyInt_FromLong(long(obj->data->GetDim1()));
return retval;
}
static PyObject *
Binner_SetDim2(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
int ival;
if(!PyArg_ParseTuple(args, "i", &ival))
return NULL;
// Set the dim2 in the object.
obj->data->SetDim2(ival);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_GetDim2(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
PyObject *retval = PyInt_FromLong(long(obj->data->GetDim2()));
return retval;
}
static PyObject *
Binner_SetDim3(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
int ival;
if(!PyArg_ParseTuple(args, "i", &ival))
return NULL;
// Set the dim3 in the object.
obj->data->SetDim3(ival);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_GetDim3(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
PyObject *retval = PyInt_FromLong(long(obj->data->GetDim3()));
return retval;
}
static struct PyMethodDef Binner_methods[] = {
{"Notify", Binner_Notify, METH_VARARGS},
{"SetDim1", Binner_SetDim1, METH_VARARGS},
{"GetDim1", Binner_GetDim1, METH_VARARGS},
{"SetDim2", Binner_SetDim2, METH_VARARGS},
{"GetDim2", Binner_GetDim2, METH_VARARGS},
{"SetDim3", Binner_SetDim3, METH_VARARGS},
{"GetDim3", Binner_GetDim3, METH_VARARGS},
{NULL, NULL}
};
//
// Type functions
//
static void
Binner_dealloc(PyObject *v)
{
BinnerObject *obj = (BinnerObject *)v;
if(obj->owns)
delete obj->data;
}
static int
Binner_compare(PyObject *v, PyObject *w)
{
Binner *a = ((BinnerObject *)v)->data;
Binner *b = ((BinnerObject *)w)->data;
return (*a == *b) ? 0 : -1;
}
static PyObject *
Binner_getattr(PyObject *self, char *name)
{
if(strcmp(name, "dim1") == 0)
return Binner_GetDim1(self, NULL);
if(strcmp(name, "dim2") == 0)
return Binner_GetDim2(self, NULL);
if(strcmp(name, "dim3") == 0)
return Binner_GetDim3(self, NULL);
return Py_FindMethod(Binner_methods, self, name);
}
static int
Binner_setattr(PyObject *self, char *name, PyObject *args)
{
// Create a tuple to contain the arguments since all of the Set
// functions expect a tuple.
PyObject *tuple = PyTuple_New(1);
PyTuple_SET_ITEM(tuple, 0, args);
Py_INCREF(args);
bool retval = false;
if(strcmp(name, "dim1") == 0)
retval = (Binner_SetDim1(self, tuple) != NULL);
else if(strcmp(name, "dim2") == 0)
retval = (Binner_SetDim2(self, tuple) != NULL);
else if(strcmp(name, "dim3") == 0)
retval = (Binner_SetDim3(self, tuple) != NULL);
Py_DECREF(tuple);
return retval ? 0 : -1;
}
static int
Binner_print(PyObject *v, FILE *fp, int flags)
{
BinnerObject *obj = (BinnerObject *)v;
fprintf(fp, "%s", PyBinner_ToString(obj->data, "").c_str());
return 0;
}
PyObject *
Binner_str(PyObject *v)
{
BinnerObject *obj = (BinnerObject *)v;
return PyString_FromString(PyBinner_ToString(obj->data,"").c_str());
}
//
// The doc string for the class.
//
static char *Binner_Purpose = "Bin particles";
//
// The type description structure
//
static PyTypeObject BinnerType =
{
//
// Type header
//
PyObject_HEAD_INIT(&PyType_Type)
0, // ob_size
"Binner", // tp_name
sizeof(BinnerObject), // tp_basicsize
0, // tp_itemsize
//
// Standard methods
//
(destructor)Binner_dealloc, // tp_dealloc
(printfunc)Binner_print, // tp_print
(getattrfunc)Binner_getattr, // tp_getattr
(setattrfunc)Binner_setattr, // tp_setattr
(cmpfunc)Binner_compare, // tp_compare
(reprfunc)0, // tp_repr
//
// Type categories
//
0, // tp_as_number
0, // tp_as_sequence
0, // tp_as_mapping
//
// More methods
//
0, // tp_hash
0, // tp_call
(reprfunc)Binner_str, // tp_str
0, // tp_getattro
0, // tp_setattro
0, // tp_as_buffer
Py_TPFLAGS_CHECKTYPES, // tp_flags
Binner_Purpose, // tp_doc
0, // tp_traverse
0, // tp_clear
0, // tp_richcompare
0 // tp_weaklistoffset
};
//
// Helper functions for object allocation.
//
static Binner *defaultAtts = 0;
static Binner *currentAtts = 0;
static PyObject *
NewBinner(int useCurrent)
{
BinnerObject *newObject;
newObject = PyObject_NEW(BinnerObject, &BinnerType);
if(newObject == NULL)
return NULL;
if(useCurrent && currentAtts != 0)
newObject->data = new Binner(*currentAtts);
else if(defaultAtts != 0)
newObject->data = new Binner(*defaultAtts);
else
newObject->data = new Binner;
newObject->owns = true;
return (PyObject *)newObject;
}
static PyObject *
WrapBinner(const Binner *attr)
{
BinnerObject *newObject;
newObject = PyObject_NEW(BinnerObject, &BinnerType);
if(newObject == NULL)
return NULL;
newObject->data = (Binner *)attr;
newObject->owns = false;
return (PyObject *)newObject;
}
///////////////////////////////////////////////////////////////////////////////
//
// Interface that is exposed to the VisIt module.
//
///////////////////////////////////////////////////////////////////////////////
PyObject *
Binner_new(PyObject *self, PyObject *args)
{
int useCurrent = 0;
if (!PyArg_ParseTuple(args, "i", &useCurrent))
{
if (!PyArg_ParseTuple(args, ""))
return NULL;
else
PyErr_Clear();
}
return (PyObject *)NewBinner(useCurrent);
}
//
// Plugin method table. These methods are added to the visitmodule's methods.
//
static PyMethodDef BinnerMethods[] = {
{"Binner", Binner_new, METH_VARARGS},
{NULL, NULL} /* Sentinel */
};
static Observer *BinnerObserver = 0;
std::string
PyBinner_GetLogString()
{
std::string s("Binner = Binner()\n");
if(currentAtts != 0)
s += PyBinner_ToString(currentAtts, "Binner.");
return s;
}
static void
PyBinner_CallLogRoutine(Subject *subj, void *data)
{
Binner *atts = (Binner *)subj;
typedef void (*logCallback)(const std::string &);
logCallback cb = (logCallback)data;
if(cb != 0)
{
std::string s("Binner = Binner()\n");
s += PyBinner_ToString(currentAtts, "Binner.");
cb(s);
}
}
void
PyBinner_StartUp(Binner *subj, void *data)
{
if(subj == 0)
return;
currentAtts = subj;
PyBinner_SetDefaults(subj);
//
// Create the observer that will be notified when the attributes change.
//
if(BinnerObserver == 0)
{
BinnerObserver = new ObserverToCallback(subj,
PyBinner_CallLogRoutine, (void *)data);
}
}
void
PyBinner_CloseDown()
{
delete defaultAtts;
defaultAtts = 0;
delete BinnerObserver;
BinnerObserver = 0;
}
PyMethodDef *
PyBinner_GetMethodTable(int *nMethods)
{
*nMethods = 1;
return BinnerMethods;
}
bool
PyBinner_Check(PyObject *obj)
{
return (obj->ob_type == &BinnerType);
}
Binner *
PyBinner_FromPyObject(PyObject *obj)
{
BinnerObject *obj2 = (BinnerObject *)obj;
return obj2->data;
}
PyObject *
PyBinner_NewPyObject()
{
return NewBinner(0);
}
PyObject *
PyBinner_WrapPyObject(const Binner *attr)
{
return WrapBinner(attr);
}
void
PyBinner_SetDefaults(const Binner *atts)
{
if(defaultAtts)
delete defaultAtts;
defaultAtts = new Binner(*atts);
}
@@ -0,0 +1,21 @@
#ifndef PY_BINNER_H
#define PY_BINNER_H
#include <Python.h>
#include <BinnerFilter.h>
//
// Functions exposed to the VisIt module.
//
void PyBinner_StartUp(Binner *subj, void *data);
void PyBinner_CloseDown();
PyMethodDef *PyBinner_GetMethodTable(int *nMethods);
bool PyBinner_Check(PyObject *obj);
Binner *PyBinner_FromPyObject(PyObject *obj);
PyObject *PyBinner_NewPyObject();
PyObject *PyBinner_WrapPyObject(const Binner *attr);
void PyBinner_SetDefaults(const Binner *atts);
std::string PyBinner_GetLogString();
std::string PyBinner_ToString(const Binner *, const char *);
#endif
@@ -0,0 +1,279 @@
#include "QvisBinnerWindow.h"
#include <BinnerFilter.h>
#include <ViewerProxy.h>
#include <qcheckbox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qvbox.h>
#include <qbuttongroup.h>
#include <qradiobutton.h>
#include <QvisColorTableButton.h>
#include <QvisOpacitySlider.h>
#include <QvisColorButton.h>
#include <QvisLineStyleWidget.h>
#include <QvisLineWidthWidget.h>
#include <QvisVariableButton.h>
#include <stdio.h>
#include <string>
using std::string;
// ****************************************************************************
// Method: QvisBinnerWindow::QvisBinnerWindow
//
// Purpose:
// Constructor
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisBinnerWindow::QvisBinnerWindow(const int type,
Binner *subj,
const char *caption,
const char *shortName,
QvisNotepadArea *notepad)
: QvisOperatorWindow(type,subj, caption, shortName, notepad)
{
atts = subj;
}
// ****************************************************************************
// Method: QvisBinnerWindow::~QvisBinnerWindow
//
// Purpose:
// Destructor
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisBinnerWindow::~QvisBinnerWindow()
{
}
// ****************************************************************************
// Method: QvisBinnerWindow::CreateWindowContents
//
// Purpose:
// Creates the widgets for the window.
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisBinnerWindow::CreateWindowContents()
{
QGridLayout *mainLayout = new QGridLayout(topLayout, 3,2, 10, "mainLayout");
dim1Label = new QLabel("dim1", central, "dim1Label");
mainLayout->addWidget(dim1Label,0,0);
dim1 = new QLineEdit(central, "dim1");
connect(dim1, SIGNAL(returnPressed()),
this, SLOT(dim1ProcessText()));
mainLayout->addWidget(dim1, 0,1);
dim2Label = new QLabel("dim2", central, "dim2Label");
mainLayout->addWidget(dim2Label,1,0);
dim2 = new QLineEdit(central, "dim2");
connect(dim2, SIGNAL(returnPressed()),
this, SLOT(dim2ProcessText()));
mainLayout->addWidget(dim2, 1,1);
dim3Label = new QLabel("dim3", central, "dim3Label");
mainLayout->addWidget(dim3Label,2,0);
dim3 = new QLineEdit(central, "dim3");
connect(dim3, SIGNAL(returnPressed()),
this, SLOT(dim3ProcessText()));
mainLayout->addWidget(dim3, 2,1);
}
// ****************************************************************************
// Method: QvisBinnerWindow::UpdateWindow
//
// Purpose:
// Updates the widgets in the window when the subject changes.
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisBinnerWindow::UpdateWindow(bool doAll)
{
QString temp;
double r;
for(int i = 0; i < atts->NumAttributes(); ++i)
{
if(!doAll)
{
if(!atts->IsSelected(i))
{
continue;
}
}
const double *dptr;
const float *fptr;
const int *iptr;
const char *cptr;
const unsigned char *uptr;
const string *sptr;
QColor tempcolor;
switch(i)
{
case 0: //dim1
temp.sprintf("%d", atts->GetDim1());
dim1->setText(temp);
break;
case 1: //dim2
temp.sprintf("%d", atts->GetDim2());
dim2->setText(temp);
break;
case 2: //dim3
temp.sprintf("%d", atts->GetDim3());
dim3->setText(temp);
break;
}
}
}
// ****************************************************************************
// Method: QvisBinnerWindow::GetCurrentValues
//
// Purpose:
// Gets values from certain widgets and stores them in the subject.
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisBinnerWindow::GetCurrentValues(int which_widget)
{
bool okay, doAll = (which_widget == -1);
QString msg, temp;
// Do dim1
if(which_widget == 0 || doAll)
{
temp = dim1->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
int val = temp.toInt(&okay);
atts->SetDim1(val);
}
if(!okay)
{
msg.sprintf("The value of dim1 was invalid. "
"Resetting to the last good value of %d.",
atts->GetDim1());
Message(msg);
atts->SetDim1(atts->GetDim1());
}
}
// Do dim2
if(which_widget == 1 || doAll)
{
temp = dim2->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
int val = temp.toInt(&okay);
atts->SetDim2(val);
}
if(!okay)
{
msg.sprintf("The value of dim2 was invalid. "
"Resetting to the last good value of %d.",
atts->GetDim2());
Message(msg);
atts->SetDim2(atts->GetDim2());
}
}
// Do dim3
if(which_widget == 2 || doAll)
{
temp = dim3->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
int val = temp.toInt(&okay);
atts->SetDim3(val);
}
if(!okay)
{
msg.sprintf("The value of dim3 was invalid. "
"Resetting to the last good value of %d.",
atts->GetDim3());
Message(msg);
atts->SetDim3(atts->GetDim3());
}
}
}
//
// Qt Slot functions
//
void
QvisBinnerWindow::dim1ProcessText()
{
GetCurrentValues(0);
Apply();
}
void
QvisBinnerWindow::dim2ProcessText()
{
GetCurrentValues(1);
Apply();
}
void
QvisBinnerWindow::dim3ProcessText()
{
GetCurrentValues(2);
Apply();
}
@@ -0,0 +1,67 @@
#ifndef QVISBINNERWINDOW_H
#define QVISBINNERWINDOW_H
#include <QvisOperatorWindow.h>
#include <AttributeSubject.h>
class Binner;
class QLabel;
class QCheckBox;
class QLineEdit;
class QSpinBox;
class QVBox;
class QButtonGroup;
class QvisColorTableButton;
class QvisOpacitySlider;
class QvisColorButton;
class QvisLineStyleWidget;
class QvisLineWidthWidget;
class QvisVariableButton;
// ****************************************************************************
// Class: QvisBinnerWindow
//
// Purpose:
// Defines QvisBinnerWindow class.
//
// Notes: This class was automatically generated!
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class QvisBinnerWindow : public QvisOperatorWindow
{
Q_OBJECT
public:
QvisBinnerWindow(const int type,
Binner *subj,
const char *caption = 0,
const char *shortName = 0,
QvisNotepadArea *notepad = 0);
virtual ~QvisBinnerWindow();
virtual void CreateWindowContents();
protected:
void UpdateWindow(bool doAll);
virtual void GetCurrentValues(int which_widget);
private slots:
void dim1ProcessText();
void dim2ProcessText();
void dim3ProcessText();
private:
QLineEdit *dim1;
QLineEdit *dim2;
QLineEdit *dim3;
QLabel *dim1Label;
QLabel *dim2Label;
QLabel *dim3Label;
Binner *atts;
};
#endif
@@ -0,0 +1,350 @@
// ************************************************************************* //
// File: avtBinnerFilter.C
// ************************************************************************* //
#include <avtBinnerFilter.h>
#include <avtDatasetExaminer.h>
#include <avtDataAttributes.h>
#include <avtExtents.h>
#include <vtkStructuredGrid.h>
#include <vtkDataArray.h>
#include <vtkFloatArray.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkMath.h>
#include <InvalidDimensionsException.h>
#ifdef PARALLEL_IO
#include <mpi.h>
#include <avtParallel.h>
#endif
// ****************************************************************************
// Method: avtBinnerFilter constructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
avtBinnerFilter::avtBinnerFilter()
{
nprocs = 1;
#ifdef PARALLEL_IO
nprocs = PAR_Size();
#endif
sgrid = NULL;
dims[0] = 10;
dims[1] = 10;
dims[2] = 10;
}
// ****************************************************************************
// Method: avtBinnerFilter destructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// Modifications:
//
// ****************************************************************************
avtBinnerFilter::~avtBinnerFilter()
{
}
// ****************************************************************************
// Method: avtBinnerFilter::Create
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
avtFilter *
avtBinnerFilter::Create()
{
return new avtBinnerFilter();
}
// ****************************************************************************
// Method: avtBinnerFilter::SetAtts
//
// Purpose:
// Sets the state of the filter based on the attribute object.
//
// Arguments:
// a The attributes to use.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
void
avtBinnerFilter::SetAtts(const AttributeGroup *a)
{
atts = *(const Binner*)a;
}
// ****************************************************************************
// Method: avtBinnerFilter::Equivalent
//
// Purpose:
// Returns true if creating a new avtBinnerFilter with the given
// parameters would result in an equivalent avtBinnerFilter.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
bool
avtBinnerFilter::Equivalent(const AttributeGroup *a)
{
return (atts == *(Binner*)a);
}
// ****************************************************************************
// Method: avtBinnerFilter::PreExecute
//
// Purpose:
// Called before "Execute". This will set up the range's we are operating
// on and the data structures we use to count the density.
//
// Programmer:
// Creation:
//
// ****************************************************************************
void
avtBinnerFilter::PreExecute(void)
{
cout << "In PreExecute\n";
avtStreamer::PreExecute();
ndims = GetInput()->GetInfo().GetAttributes().GetSpatialDimension();
if (ndims < 2) {
EXCEPTION2(InvalidDimensionsException, "Binner", " <2D");
}
dims[0] = atts.GetDim1()+1;
dims[1] = atts.GetDim2()+1;
if (ndims == 2)
dims[2] == 1;
else
dims[2] = atts.GetDim3()+1;
grid_size = dims[0]*dims[1]*dims[2];
data = (float *) calloc (grid_size, sizeof(float));
avtDataset_p input = GetTypedInput();
avtDatasetExaminer::GetSpatialExtents(input, extents);
#ifdef PARALLEL_IO
UnifyMinMax(extents, 2*ndims, 0);
#endif
for (int i=0; i < ndims; i++){
cout << "spatial extents: " << extents[2*i+1] << " " << extents[2*i] << "\n";
}
}
// ****************************************************************************
// Method: avtBinnerFilter::ExecuteData
//
// Purpose:
// Sends the specified input and output through the Binner filter.
//
// Arguments:
// in_ds The input dataset.
// <unused> The domain number.
// <unused> The label.
//
// Returns: The output dataset.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
vtkDataSet *
avtBinnerFilter::ExecuteData(vtkDataSet *in_ds, int domain, std::string)
{
cout << "domain: " << domain << "\n";
float x[3];
int numvar = GetInput()->GetInfo().GetAttributes().GetNumberOfVariables();
cout << "numvar: " << numvar << "\n";
for (int i=0; i < numvar; i++){
cout << GetInput()->GetInfo().GetAttributes().GetVariableName(i) << "\n";
}
for (int i=0; i < ndims; i++){
step[i] = (extents[2*i+1] - extents[2*i])/(dims[i]-1);
}
for (int i=0; i < ndims; i++){
extents[2*i] = extents[2*i] - 2*step[i];
extents[2*i+1] = extents[2*i+1] + 2*step[i];
}
for (int i=0; i < ndims; i++){
step[i] = (extents[2*i+1] - extents[2*i])/(dims[i]-1);
}
vtkPointData *inPD = in_ds->GetPointData();
vtkDataArray *in_data = inPD->GetScalars();
vtkPointData *outPD = sgrid->GetPointData();
vtkIdType npoints = in_ds->GetNumberOfPoints();
cout << "I have data: npoints: " << in_data->GetName() << " " << npoints << "\n";
int bin[3];
float delta[3];
for (vtkIdType i = 0; i < npoints; i++) {
in_ds->GetPoint(i, x);
/* find the corresponding bin */
for (int j=0; j < ndims; j++){
delta[j] = (x[j] - extents[2*j])/step[j];
bin[j] = (int) delta[j];
}
if (ndims == 2){
bin[2] = 0;
}
/* 5 contribution */
data[bin[0]+ dims[0] * ( dims[1] * bin[2] + bin[1])] += 1;
}
float check_nptlc = 0.0;
for (vtkIdType i=0; i < grid_size; i++){
check_nptlc += data[i];
}
cout << "nptlc " << check_nptlc << "\n";
cout << "npoints " << npoints << "\n";
return NULL;
}
// ****************************************************************************
// Method: avtBinnerFilter::RefashionDataObjectInfo
//
// Purpose:
// Tells the output that
//
// ****************************************************************************
void
avtBinnerFilter::RefashionDataObjectInfo(void)
{
cout << "Refashioning\n";
avtDataAttributes &inAtts = GetInput()->GetInfo().GetAttributes();
avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();
if (pipelineVariable != NULL){
outAtts.AddVariable(pipelineVariable);
outAtts.SetVariableDimension(1, pipelineVariable);
outAtts.SetVariableType(AVT_SCALAR_VAR, pipelineVariable);
outAtts.SetCentering(AVT_ZONECENT, pipelineVariable);
outAtts.SetActiveVariable(pipelineVariable);
outAtts.GetTrueDataExtents(pipelineVariable)->Clear();
outAtts.GetTrueDataExtents(pipelineVariable)->Set(drange);
outAtts.GetCurrentDataExtents()->Clear();
outAtts.GetCurrentDataExtents()->Set(drange);
}
outAtts.GetEffectiveSpatialExtents()->Set(extents);
outAtts.GetCumulativeCurrentSpatialExtents()->Set(extents);
outAtts.GetCumulativeTrueSpatialExtents()->Set(extents);
outAtts.GetTrueSpatialExtents()->Set(extents);
outAtts.SetSpatialDimension(inAtts.GetSpatialDimension());
outAtts.SetTopologicalDimension(inAtts.GetSpatialDimension());
}
// ****************************************************************************
// Method: avtBinnerFilter::VerifyInput
//
// Purpose:
// Verifies the input
// ****************************************************************************
void
avtBinnerFilter::VerifyInput(void)
{
cout << "Checking Spatial Dimensions: " << GetInput()->GetInfo().GetAttributes().GetSpatialDimension() << "\n";
cout << "Checking Topological Dimensions: " << GetInput()->GetInfo().GetAttributes().GetTopologicalDimension() << "\n";
}
void
avtBinnerFilter::PostExecute(void)
{
avtPluginStreamer::PostExecute();
/* need to put the data together */
#ifdef PARALLEL_IO
cout << "In PostExecute : " << PAR_Rank() << "\n";
#endif
vtkFloatArray *out_data = vtkFloatArray::New();
out_data->Resize(grid_size);
out_data->FillComponent(0,0.0);
#ifdef PARALLEL_IO
SumFloatArrayAcrossAllProcessors(data, out_data->GetPointer(0), grid_size);
#else
memcpy(out_data->GetPointer(0), data, grid_size*sizeof(float));
#endif
// Create the structured grid.
float x[3];
#ifdef PARALLEL_IO
cout << "making the grid: " << PAR_Rank() << "\n";
#endif
sgrid = vtkStructuredGrid::New();
sgrid->SetDimensions(dims);
vtkPoints *points = vtkPoints::New();
points->Allocate(grid_size);
for ( int k=0; k<dims[2]; k++){
if (ndims == 2)
x[2] = 0;
else
x[2]=step[2]*k + extents[4];
for (int j=0; j<dims[1]; j++){
x[1]=step[1]*j + extents[2];
for (int i=0; i<dims[0]; i++){
x[0]=step[0]*i + extents[0];
points->InsertNextPoint(x);
}
}
}
sgrid->SetPoints(points);
points->Delete();
out_data->SetName(pipelineVariable);
sgrid->GetPointData()->SetScalars(out_data);
sgrid->GetScalarRange(dataRange);
drange[0] = (double) dataRange[0];
drange[1] = (double) dataRange[1];
#ifdef PARALLEL_IO
UnifyMinMax(drange, 2, 0);
#endif
cout << "drange: " << drange[0] << " " << drange[1] << "\n";
out_data->Delete();
out_data = NULL;
sgrid->Update();
#ifdef PARALLEL_IO
if (PAR_Rank() == 0){
#endif
avtDataTree_p tree = new avtDataTree();
tree = new avtDataTree(sgrid, 0);
SetOutputDataTree(tree);
sgrid->Delete();
sgrid = NULL;
#ifdef PARALLEL_IO
}
#endif
RefashionDataObjectInfo();
}
@@ -0,0 +1,64 @@
// ************************************************************************* //
// File: avtBinnerFilter.h
// ************************************************************************* //
#ifndef AVT_Binner_FILTER_H
#define AVT_Binner_FILTER_H
#include <avtPluginStreamer.h>
#include <BinnerFilter.h>
class vtkDataSet;
class vtkStructuredGrid;
// ****************************************************************************
// Class: avtBinnerFilter
//
// Purpose:
// A plugin operator for Binner.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
class avtBinnerFilter : public avtPluginStreamer
{
public:
avtBinnerFilter();
virtual ~avtBinnerFilter();
static avtFilter *Create();
virtual const char *GetType(void) { return "avtBinnerFilter"; };
virtual const char *GetDescription(void)
{ return "Binner"; };
virtual void SetAtts(const AttributeGroup*);
virtual bool Equivalent(const AttributeGroup*);
protected:
Binner atts;
virtual void RefashionDataObjectInfo(void);
virtual void VerifyInput(void);
virtual vtkDataSet *ExecuteData(vtkDataSet *, int, std::string);
virtual void PostExecute(void);
virtual void PreExecute(void);
private:
vtkStructuredGrid *sgrid;
int nprocs;
int ndims;
int grid_size;
int dims[3];
double extents[6];
float step[3];
float dataRange[2];
double drange[2];
float *data;
};
#endif
@@ -0,0 +1,519 @@
/* XPM */
static const char *icon_xpm[] = {
/* width height num_colors chars_per_pixel */
" 256 256 256 2",
/* colors */
".. c #000000",
".# c #030b01",
".a c #061101",
".b c #081502",
".c c #0b1b02",
".d c #101f03",
".e c #0e2103",
".f c #132b04",
".g c #112503",
".h c #1a3505",
".i c #223b05",
".j c #303f04",
".k c #274606",
".l c #394c05",
".m c #375606",
".n c #2c5308",
".o c #3a680c",
".p c #27661a",
".q c #791428",
".r c #771b37",
".s c #6b1b37",
".t c #7a0f1f",
".u c #5b2c59",
".v c #5c264e",
".w c #5b356b",
".x c #583366",
".y c #5b3973",
".z c #573b78",
".A c #4e3972",
".B c #692348",
".C c #672b57",
".D c #772347",
".E c #762b58",
".F c #71305d",
".G c #63356b",
".H c #6b3163",
".I c #673468",
".J c #633973",
".K c #633d7b",
".L c #6b3973",
".M c #6a3c7a",
".N c #773367",
".O c #763b77",
".P c #6e2f60",
".Q c #721f40",
".R c #404d04",
".S c #475705",
".T c #515e05",
".U c #496507",
".V c #556906",
".W c #5a7508",
".X c #49780e",
".Y c #667706",
".Z c #6b7704",
".0 c #516b33",
".1 c #6f417b",
".2 c #6f716e",
".3 c #5c5d61",
".4 c #6e3f80",
".5 c #553f80",
".6 c #4b4386",
".7 c #584387",
".8 c #574b96",
".9 c #4f4b96",
"#. c #5a52a5",
"## c #5c58b1",
"#a c #6b4183",
"#b c #664488",
"#c c #684b96",
"#d c #764487",
"#e c #774b96",
"#f c #735398",
"#g c #6754a7",
"#h c #685bb6",
"#i c #7853a6",
"#j c #785bb6",
"#k c #724fa0",
"#l c #7464b5",
"#m c #7764c7",
"#n c #7269d0",
"#o c #7971e2",
"#p c #31902d",
"#q c #34a838",
"#r c #1d9036",
"#s c #2db347",
"#t c #13ab4c",
"#u c #27d35d",
"#v c #548915",
"#w c #4a9525",
"#x c #50ad2f",
"#y c #688609",
"#z c #768806",
"#A c #70950e",
"#B c #75a814",
"#C c #6cb22a",
"#D c #67952f",
"#E c #65a855",
"#F c #68cc33",
"#G c #59d854",
"#H c #3dc13e",
"#I c #3ff293",
"#J c #8a0206",
"#K c #870b18",
"#L c #970205",
"#M c #960b17",
"#N c #90101d",
"#O c #871428",
"#P c #871b36",
"#Q c #961427",
"#R c #971b36",
"#S c #900f20",
"#T c #a70205",
"#U c #a70b17",
"#V c #b70205",
"#W c #b50d16",
"#X c #a71427",
"#Y c #a71b37",
"#Z c #b71b38",
"#0 c #b61326",
"#1 c #a02339",
"#2 c #862447",
"#3 c #872b56",
"#4 c #972447",
"#5 c #972b57",
"#6 c #8f3259",
"#7 c #863468",
"#8 c #873b77",
"#9 c #973467",
"a. c #963b78",
"a# c #8e2f60",
"aa c #a72447",
"ab c #a72b57",
"ac c #b72447",
"ad c #b62b57",
"ae c #b03555",
"af c #a73467",
"ag c #a63b77",
"ah c #b73467",
"ai c #b73b76",
"aj c #ab2f60",
"ak c #9e1f40",
"al c #8e4478",
"am c #b14775",
"an c #b54459",
"ao c #c70204",
"ap c #d70204",
"aq c #ce0d17",
"ar c #ce172f",
"as c #d12734",
"at c #e70205",
"au c #fe0204",
"av c #f50508",
"aw c #fa0b16",
"ax c #f01117",
"ay c #f91626",
"az c #ec1930",
"aA c #f82832",
"aB c #c72346",
"aC c #d12b51",
"aD c #c73567",
"aE c #c73c77",
"aF c #d7386f",
"aG c #ed2b4e",
"aH c #e63668",
"aI c #d81f40",
"aJ c #cd4775",
"aK c #fb4951",
"aL c #f14c70",
"aM c #e85d68",
"aN c #943f80",
"aO c #864487",
"aP c #864b97",
"aQ c #974487",
"aR c #964b97",
"aS c #8f5595",
"aT c #8754a7",
"aU c #885ab6",
"aV c #9654a7",
"aW c #975bb6",
"aX c #8d4fa0",
"aY c #9864b9",
"aZ c #8f68ae",
"a0 c #a64487",
"a1 c #a74b96",
"a2 c #b64588",
"a3 c #b74b96",
"a4 c #af5496",
"a5 c #a655a7",
"a6 c #a75bb6",
"a7 c #b755a7",
"a8 c #b65bb7",
"a9 c #b04fa0",
"b. c #a764b9",
"b# c #b16bb1",
"ba c #a46797",
"bb c #8864c6",
"bc c #9764c6",
"bd c #986bd5",
"be c #8c70d5",
"bf c #9077ec",
"bg c #a765c7",
"bh c #a76bd6",
"bi c #b565c6",
"bj c #b074d3",
"bk c #a675e5",
"bl c #ab79e9",
"bm c #9e5fc0",
"bn c #c74587",
"bo c #c64b98",
"bp c #d24c8e",
"bq c #c555a6",
"br c #c759ad",
"bs c #ce6bb2",
"bt c #ea568b",
"bu c #f46b91",
"bv c #eb71ac",
"bw c #d16b93",
"bx c #cb77ca",
"by c #e17cc5",
"bz c #cf3f80",
"bA c #879706",
"bB c #8b9709",
"bC c #97a706",
"bD c #8eb00e",
"bE c #a7b705",
"bF c #aab409",
"bG c #94b22a",
"bH c #89a765",
"bI c #95c715",
"bJ c #b1c90b",
"bK c #a2db28",
"bL c #9ae455",
"bM c #c9d509",
"bN c #d3e70e",
"bO c #ebf10b",
"bP c #daea2c",
"bQ c #dff24c",
"bR c #8e928d",
"bS c #adafad",
"bT c #a692ac",
"bU c #9286f8",
"bV c #b48bd0",
"bW c #b18def",
"bX c #aea2e4",
"bY c #e58ab0",
"bZ c #cf8cd3",
"b0 c #cc93e7",
"b1 c #cfabd5",
"b2 c #d2adf0",
"b3 c #ea8fd1",
"b4 c #ebb0ed",
"b5 c #eba4da",
"b6 c #d0d0d1",
"b7 c #eeccf6",
"b8 c #e1d6f3",
"b9 c #b2d2a5",
/* pixels */
"aWbjb4aW.7.5.A#ibVbf.y.ybbaU#i#c.5.A#cb8.z#fbVa6b0a8bhbgaW#i.4.xbkb0bmaVaX#k#k#e.1.K.w.1b4aW.waPaO.O.ubmaT.4.4.w.x.1b4bgaT#baUaTbhb4b0aW#k.4.xa6aV#d.y.xaPaQ#8a3a9aXaX.4.O.x.1b8.H.H.u.1baa4.v.HbZa7a4#8.F.Ca3a2a0#9.N.B.Ca.......................aBaBaa#P.rae#X..............................atao#Janazar#Xb6aGadab#2.r#2b4...q#O#YaB............#Kar#0#Q#O#KbY....................#U#M.t#MaA..........................................................#L#Jas..................................................................",
".6bjbjaW#d#c#g#maT#d.w.4bf.4bhbcaU#i.8bb......aVaVbhb4b0aV#e.5.xbcbcaTaT.4.J.J.4.y.x#daZaYaS.....I.ubhbhaWaX.4.z#daZbmaT.4.y.4.4bhb0bhaT#k.5.w#i#e.4.xbaaW#8.Pa9a1.O.4.4.u.1b#bg.....N#8.H.C.Fa7a1a1a.#7.C.Ha.a.a.#7.C.FbT#3..........aIac#O........#R#P#Pamar#S#Q..............................#L#0aAbvar#QaGb3aC#P.r#6bw....aGaB#R..................#S#O#OaC........................#M#Wax.....................#auavao#L................................................................avao..................................",
".8a6aV#e.y.xaWaT.4.A.yaSblbkbhbdaU#i#b.y........aObibjb.aT#d.y.waX#i.4.4.y.y.4.J.4.4aPaW#eb7a6aT.4bhb7bjaV#e.1.w....ad#b.y.ybV.ybmbcaT#e.4.A.yaT.4.x#bb.aP.Pbybxa1bia6aR.4aR..#Z..............#ZaN#8#7.C.FbV#U.N.E.C.Eala7#9........a3a3aQ#7..........#4aa#0#Xar#O.....#..aiag........aIar#Qazar#X..aAaz#Yah#5aH#Z#Raa#4....aGbuaB#Y.q....................ar..............ayawaq#L..............................auaAaw#V#L.............................................................#aKawao#L................................",
"#gbb#e.4.x#d.4#b.J.ybTbVbhb7b0bc#j#k#b.7.4........aWaWaT#e.z.x#aaT.7bg.w.1#daT.M.1.w.x.1bZbZbgaX.4bjb0bjaT#c.y.yaPaR.O#d#baTbgaUaUaT#e#b.y.JbTaWaWaT#daY#ea7bxbra8b4bxaR.O.I.OaB#O....bnag.E....#O.H.C.CaSa1bqb4.P.Eala0#6am......bqbybra0#7.C............aGaGar#Q....btbzaEaf#3.B..aGbtar#Q#Rar#Q#Qarbzbtai#5.D#Y#O#4aC....aHaG#Z#P.q..................................awaKaGao#M#U..............................auat#T#L............................................................auavap#V#J................................",
"bT.J.M.x#fbV.L.J.yaXbmbkblb2b2bcaT#e.4.K#b........aT#e#e.4.x.1b6.4bjbhbmaX.4.w#c.7.G#daXbhb0biaP.4bmbma6a5aXaO.4aTaP.O.u.J.MaT#e#b#e.4.w.1aZb0bibgaV#e.4.4a1a1aQa5a8aRal.H.uaOaraCaabvboaf.E.E........#8#La3bsbsbq#7.E.C#7........bobybsa.#7.B#7..........aGaL#Z#K...#bpbyaiaf#2.Bbpbpai#9.B#1#X.t#1..bpbuah#4.D#3#Pbu......aBac#1.q#1..................................axaxaq#T#K#W............................axaKat#V#J............................................................apap#V#L#W................................",
"beaSaWbxa6#d.x.Mbb#i.8bhblbkbdaY#e#c.5.z.7#i.........4.4.x.1aZbm.5bxb2aW#i.4.w.4#b#ebb.4bmbmbgaWaXbia8a6a5aRaO.4.xaO.L.xaRar.K#b.x.y.5.y#faYbhb7bjaTaP.4.yaQaN#8a5aRaO.1.u.Ia5bza3a0#7bna#.E#3............a0boa0a1aN.N.Ca0........a3a2a0#7.E.Cal#R........asar#X.qaraEbpaJaf#3.B.Dbpbyama#.DaC#N#Qb5..aEah#5#2.s#5aB........#Y#R#O.qaM..................................aqao#U#K#Uaz............................aAayap#T#Jauat#V........................................................#L#J#0..................................",
"....aVaVaO.L.waV#c.7.5bcbcbcaU#k#b.z.y.K#faU........#c.4.1#eaW.4bmbmaX#e.4.w.waP.....I.GaVbhb0a6aXbib4bja5aPaO.4.u.O.u.La5bdbc#i.z....#P#2adbxbxbj#i.4.y.yb1.H.NaOaO.L.I.Ib1azbybsaQ.N.F.E.Ba2............bya0bra9aR#7.Pboboa2a..Ea0a.#7.P.valba#R.q......#R#X#K#1....ahaf#6.D.B#2bnai#6#3.Bag#Qas..ayafab#2.s#6amb6..........#R#RaB................aGaGac#Q..............#L#M#0az.................#............avap#V#J#WaKat#V#L..............................................................................................",
"......#d.M.Mbaa6..#cbfaUaUaU#i#c#b.A.A#caZbb..bkbdaU#k.5aTaX.4.ybhbhaUaT.4.yaVaP.4bhbb#ebmaV#ebgbibyb0bxaVaO.4.I.u.O.1b7bhb4aWbWbc#i.5....aWbgaWaX#e.4.x.KaZ..bi#7.I.L.Oba.ubqbya7#8.P.C.Bbw......bpbnaf.Eadbrb4a7aQaNbqbvbsa0a..E.B#7.F.C.EbZac#P#R......boboa2a..E..#5#6.D.D#6bsag#9.E.Bal#0....azaK#2#2.Q#6bpaa#P........aGaHaI#0.q....aGaGaI#Z#QaGaL#Y#O#Y....ayayax#W#J......................auavao#J......ao#V#L#LaMawao#T#L..............................................................................................",
".........ybhbcaU#i.z#j#i#i#k#c.4.A.A.7bVb1..bWb2bcaU#f#b.7.4.Jbhb0bgaU#e#a.x.4aX.4.wbibib#aV#e.Ka6bxa8a5aRaO.L.x.x#db#bjbhbhbkb4aU#e.7#c....aVaT#e.K.x.1aS....aTa9a8a1#8a8a5aR.OaN.N.C.N#9........bybra.a3a7a7bsa7a..Obqb3bsam#8.F.B.E.E#7a0ag#3.B#Y.....#bvb5a0a..E.Bai.D.Da#bnaG#3#3.B#7am.#.#..bnaiaf#J#5aLaC#1.rbS......aGbuaB#Y#O....aGbYaB#Y#O#O#Z#R.qaB....ayaMar#W#K.#..........avap#VaqavaKawao#L.#auauap#T#Tapatap#V#J#V..auavao#J....................................................................................",
"........bhb2bcaU#e.4.y#j.4#c.5.y.x.z#ib1bhbkb2b2bc#j#c.z.5.4bhb2b2bjaT#e.K.y.4aP.4.w.Lb4bVaX#d.Ga5a6aVaPaO.O.I.u.IaSbbaTbc#ibdbc#e#b.5#f.L..#e#e#b.1.yaZbi.....4.4aQaNbrb4a5aO.O.xbiaWaX.M.D....a2a2#9brb3a1a5a1aN.N.va3bqa2#8.N.C.CaQbzb4a2ag#6.B......bobvbsa2#8.E.Caf#5#3aFah#9.DaEaga.aK..bzbvbqai#9#3.Dadak#P.rae......aIaI#Z#Q#O#ZaIaGaGaC#X.q#P#Q#Oaa......azar#0#M#Kaq........auawat#V#J#Tatao#T#JapaAaAao#Latat#V#T#J#0avauaAax#V#L....................................................................................",
"......bhb2b2bh#i#c.zbcbcaUaT.4.5.KaZbcbd..bdbkbdaU#c.8.z.5aUbhbjbgbcaP#e.y.w.4.4.L.w.MbiaW#d.M.xaRaRaPaO.O.G.u.Lbaa5#k#c#c#caU#i#c.y#baU.Ia8bi.J.M.yaTbg.waO.......Oa6a8bia5aO.Ibib2aWaP.1.x......a..NbobybvaQaN#8.H.Ca0a0a.#7.C.C.NaCbpboa2a#.E.B#9....a2a3a0#9.E.v.Eafbzbzbpaiaj#2.Baiaf.E.Bbzbybvafa#.D.Dak#P.samb8......#Z#Y#P.tae....aB#Z#Y#O.q#1#P#1...#azaraq#0#M#Kan..........ayaAapaxar#W#U#T#Jas..atao#T#L.e#T#Jaq#W....atatao#L#Maxap#T..............................................................................",
"#m#...bdbjbdaU#c#bbhbhbdbb#j#c.5.zbb#j#k.5bbbbaU#i#c.y.z#ibbaWbmaUaT.4.K.x.yaT.4.waWaT#eaP.4.w.x.4aOaO.4.G.I.x#fb4b..z.5#fbj#k#ba5.zbT.O.uaVa6aVaP#b.1.x.1..........a7a5aRaO.Ia8a5aR.OaO.L.wa5.4.x.B.Ea3a3a0.N.N.P.C.Oa.#7#7.F.C.Nb7..a2ag#9.E.s.EaiaL#0agaga..N.B.Fala#bzbybvah#5.D.Qa2#9.E.BaEbnai#5#3.B#3#P.ranaCaCaCaa....#O.q#1.#....#Y#Y#O#P#Pbt....aAaLaz#0#S#M#J#Z...........#avatayayar#0#M#Laq....#V#L#JaK.....#..........#V#L#LaMaAao#Lao................................................................at#V........",
"#m#g.6aWbcaT#k#bblb2bXbdaU#i#c.7.AbcaT#e.4#j#i#i#c.z.z#fb8#maTaTaP#d.1.x.1aZaYbgbgbmaU.4.4.J.w#fbZ.L.O.G.u.Ialb#a5....#d.y.1bda8a6aR.O.G.NbhaXaP.4.L.u.1bab.aV.4....b3aOaO.Oa8bra8aRaO.u.x.MaR.O.I..aAa0aN#7.N.H.H.OaR...N.E.valbs..aL#9#9#3.D.Eb5aGaI#Y.t#7.E.B.Eama2.DaEbpaE#5#5.Q.Dafa#.D.Eaiahaf#3.B.Banac#PaDaHbtaC#4.raHbuac#R.q......#P.qanaC......aAaGaG#X#K#Q................aoayaLaLaz#W#M#U........#Tat....................#T..atap#T#J...............................................................caxauap#J......",
"#h#..6.8#i#e#c.zb0b7b2bc#j#k.4.J.y#caT#ebmaWaTaP.z.z#cbXbc#g#j#e#e.4.1.K#db2bhblb0bmaT#d.4.xaSb......x.O.I.4aSaVbdbc#j.7#c..bib4biaO.N.xbhbj.4.4.L.I.1bTaYa6aX.4.y.4a6aVaO.Lbrb4a8aQ.O.I.1aZ.1.u#daGaH#8#7.F.v.Pbaa1#8..br#7.Na0.B#2btbt.E.E#6bn..ar#X#O#Z...E.E#9a2.B.BahahaEaEaf#5.Da#.B.B#7a##5#3.D.DbaaEaa#P#PaHaLad#R.raHaC#Y#P#P....................arar#0#N#Kas..................axaAaz#W#U#K#X....................................#T#L#Jas..............................................................auawax#V#J......",
"##.8.6#g#c#c.zbkblblbkbd#i#g.7.y.z#caTbhbhbmaV#e.K.KaZbc.8.8.A#c.4.5.yaSaYaWbhb2b2bgaT#e.4.w.4.........J#daWaqblb2bb#i.7#c..a8a6aR#8.x.LbmbmaU.I.G.LaZa5b2bhaX#a.w#abiaVaP.4.Ga6aR.4.H.u#daW.G.1a6ar#0b0.F.C.Fa4aQ#5.Qa2boa0a#bna2#9.Eae#3.sam......#O#Y......arar#X.t#5ajbzbvaEaj#5.D.D.B#6b6aj.D#3.Bambnaa#1.sabaDad#4.q#PaB#Z#R.q#R......................#X#N#Nanaz..................aqaraq#U#K#Xas..........................................................auauap#L........................................atatauavap......",
"#..6.7#l...z.4bdbdbcaU#j#c#c.z.A.7#jbhb2b2bcaT#d.K.w#e.7aP..#gbl#b#e#caT#c..bibjbgaY#e.4.y.w.4............aLaqbkbVaU#c.z#c..aVaP.K.I.Ga8aTaXaT#e.z.xa6bja6aV#d.1.x#dbxaV.4.I.IaRaO.N.u.Ia5.N.Ia5....aWbgaX.1.xaP#5#2.Dboa2a0a#b4a2#9.E.D#2am....................#X.tac..bzbvbvbnab#2.Q.DalbaaE#5.D.D#4aaaa#1.r#2aDaFaCac#Pb3#R#OazaIac#RaCaDaa................#S#Xaz......................#0#U#K#NaM..............................................atao.........#aKaxap#T..........................................auaKauap#T....",
".7.9#lbU..blbhaWbbaU#i#k.4.4.A.z#faZbhb0b0aWaP.4.y.y#e.7.z.y.Gbb#j#f.A.7bbbeaWaWaT#e#d.y.x.yaT.7..........aq#MbcaU#c.z.zbhbgaWaT#k.waVbxb4#d.4a8a9aRaO.IaX#d.4.x.JaWaVaO.M.x.GaV.L.N.Ib1a8.N.C..bqa3a0aN.N.I.1#5#2.Qbwb3bra.#7bqboa1aN.N#5.......................#bqa3a2aEaLaJah#6#2.Q#2aJai#5#3.Q#2..#Paiaf#5aDaHbvbzac#4.r#S#RaLaKar#Q.qaCaa#P......................azar#X................#M#M#W..............................................awaAap#T......avawat#V#L#V........................................auawav#V#Jao..",
".A.8bXbfbdb4b2#iaU#i#k#k.K.A.7#lb8bbbgbhaW#e.4.z.x.1aT.z.5.w#d#g#c.8.7bVbdbdaTaX#e#d.K.x.1b#aY.7.8.7......#M#M#i#c.5.zbib0b4aWaP.4.w.4bxbxa5bra8a8aR.4.O.u.1.y.1bSa8a5aR.4.x#d.I.I.Lbaa5a..H.Ca7b4bxa0a..N.Cb..D.Daibobsbq#9.Ebxb3a0#8.H.H........................b3b3a0ahahaf#5#3.B.Qafaf#9#2.Q#3b7bzbzaEaf#3.QaHbtaFak#P.rab.Daa#P#Y#Q.qaD#4.raa............ar#Z..aGaLar#X#M................................................................auaAaAao#T#T....apapao#L#Tax........................................atatao#T#J....",
"#.bUbfaUbdbkbc#f#f#f#c.4.5.7#bbVbj.zaWaWaT#e.4.w.w#faZ.y.4aTaS...z.7#ibdbWbd.4aP.4.4.1.yaZb6bgaU#e.7.............7.zaZbhblbZaW#ea8a8aVaR.O.Ibrb4bxaR.4.I.v.w.1aWbibia5aRaO.I.I.I.Ea1a1aN.N.ualbqbybsa0#8.F.E........a2a0a.#7a7brbsaQ.N.C.P....................a1bobvbqa.#5aj#5#2.Q.QbabY..#3.Q.Dbw..brbyai#5.D.DaCaCabak.r#2#5.raa.r#1.t#P#1.r#P..........aGaGaI#0#KaAaAaq#M#K.#........azar..................................................atavap#T#Jaq.bauap#V#L#Las..........................................#T#T#L#LaK....",
"aZb4bd#jaWaU#i#c.z#b#b.5.y#faZbc.y.yaTaP#d.4.w.y#db8aW.zaTbab.......bfbbbbbgaW.J.4.z.y#faYaWbdaU#e.5.K..............a5bmbmaVaTa8b3bxa5aR.O.GaOa8a7aN.4.P.uaOaPa8bxb4a8aR.O.N.G.u#8a.#8.N.C.FbZa3a3a0#8.N.B.FaQ....a2aga.#7.Ea1a1aQ.O.P.val..................bqbra0a2a0#7.C#2#3.B.Qanbw......#3....a2bnbnaj#3.B.Dacaa#2.s.rbw#4.Q#5.q#1#QaM.r.rbY..........aAaLar#X#K#Qar#X.t#X.......#aAazar#X.t..............................................aoao#T#L#0#LauaKat#V#Latao..............................................#Vap......",
"bdbWbbbfbe#k.4.4.z#fbV#c#b#iaU.z#lbhbh.4.4.x.x.1bTaY.y#fb2aW#O#0..blb2#gbxbgbmaT#d#b#baPb2b4bhaT#c.K.z..........aE#5aOaVaTaP#ea8b4b0aVaO.L.I.La1aP.O.H.u.Hbaala8a8a6aVaO.G.I.1.HaRa6.P.P.1a4..a0aQa..N.C.Fal........a#.E.E.B#8aN#8.P.C.1b7..................bsbsa.a.#7.P.v#6.D#5#6ah................ahafa#.D.Q#6..#P.r.ran#4.Q#2am#2anaB#X#4..............azas#0#S.t#Z#X.t#NaM......aAbuaLaq#X#K................auaAat#L........................#J#T#V#Vauawaxap#T#Lavap#T......................................................",
"..bbbWbU#o.5.5.A#lbh......bUb7.4bhb0b0aW.z.K#e#iaW.A#fbV#0#S#QbfbebmaU#ibhbcaU.4.K.w.4bhblbhbc#e.4.A.1........btbn#5bh.N.4.4.Ga8a8a5.4.O.I.u.OaOaO.N.u.1b1aVa5aVa5aRaO.O.u.IaSa1aQaWaT.J......a.#8.N.F.Palbs..........#7..a#ag.P.N.v.1bs........a5aN..bna2af#3a0#7#7.E.valb#bubtab#2#2..............a##5.D.Dalbs.....#ad#4.D#PbT#PaJ#M#Z..................ar#0#Q.t#1aI#K#X..........azaGar#0#Q.tar..............avaKap#Tauap......auavap#T........atao#L#Watap#T.t#WaAao#T#T....................................................",
"..bfb2bX#m#g.6.8..........bUbfbfbhb4b0aU#e#b.y#b.4#eaU#m.8#Xblb7bhbhbhbhbjaYaT#e.z.y#ebcbcaU#i#c.y.y#f..blbd#j.7abbmbgaVaX.4.Ja5aVaP.1.1.u.IaR.O.H.u.Ibaa4a8braOaPaO.O.G.xaSb4a5aQ.N.H.w.4aXa7a9.E.N.CaQa7aQ.N............#9#7.Ebq#8a0a..N....a8biaQbpbya2a..N.B.F.N#3.Na0adaFad#4.s#5............bnai.E.Q#9a2..........#2.r#5#Paa..........................#Q.tasaG................arar#0#M.t#N................avap#VavaKap#V..auaAaAap#T#T......#T#L#Lax#V#T#L#Uavap#V#Jaq....................................................",
"..bfbf#m#g.9.6#l......#obe#h#m#nbgbjbc#e#c.z.y#e#h.7.7#m#g.6bfbkb2bjbhb7b0aUaT#c.z.zaWaTaT#i#b.1.y#fb8#gb7bW#g.5bibibgaWaX.4.waRaOaO.L.u.Ibab4.x.L.Halba.Aa8b3bx.L.L.x.x.1bZb0a1aO.H.H.waVbrbxa9aR#8#8bqa7aQ#8.v.............E.Ebxb3a1a..P.Fa8bybia0bob3boa.#3.E.Fa4......#Xaa#4.r#2aD..........bobyaEahaf.E..............axao#Laq..............................as#Z..azazar#S......#0#0#N#N#Nbu........awaq....ao#T#Javav#V#L#Vavavat#V#J#W................#T#W#Wao#V#L#Tav....................................................",
"..be#m#h.8.6#lbe....bfbf#o#m#g.6aWaW#i.4.1.x.1aZ#g.6.9#j.7.zbhb0b2bcbhbjbhaW#e.4.ybhbmaWaT.4.y.y.1bXbh#g.7.G#gbgbxb7bZaV#e.4.y.J.O.H.u.H.1bZ.K#b#j#i#c.AaZa5a5aQ.O.G.OaOaRa5a5aO.O.u.N#dbja7b3a8aQ.N.u.NbYaQ#7.C.........#bnaga3bqa4aN.N.C.Fa5a9bza2a2a2aja#.D.E#9...........D#P#4aJ#O#Ra2af.E..bpbzbpaiaf#3.B............az#M#W..............................aKaG#ZazbuaG#0#S........#K#M#Rasan......awaAax#U#J..#Laqatao#T#Jaxapap#V#L#LbQ......................#L#T#Uay.............batao....................................",
".7bh#..8.6#cbdbdbc#j#cb2be#h#..5aT#k#k.4.w.AaZb7.6.6#g.8.A#gbgbhbhaUbcbcaT#e.4.zbjbhbhaUaP#c.w#baTbc#j#f.7.8.5bibjblbjaX#e.K.w.M.I.I.IaSaS#b.z#baW.z.yaTbdaQaO.O.I.Lb1....aRaN.O.C.1aSb.aPa3a9aN.O.P.uaOa0#7.F.CaQaD#2..bpb3ai#7a0aN#8.P.FalaObpb3a2a9a3a1aN.N#3..............aHaH#1.qbobra..E.Ea0bwbvai#5#2.B..........aGaG#X#XbS..ayar....................aGaHaG#XaGaGas#X#K#X........#L#Jas......awaAaAaq#M#J....atao#J#LaA....#T#L#JaA............................................aKav#V#L..................................",
"#b.Abc.8#.bkb0bVbb#k#b.A#n#..8.6#h#b.7.w.y#eb1.7.6#.b8.7.8bXaUbmaUaTaWaT#i#c.y.Ab0b4bVaU#e.4.y#bbfbb#g#b.5#g#iaWbgaWaP#e.1.x.w#daWbdaU#i#c.y.y#l#e.5.zbT.....Oa8a5aRaO.ubm.L.O.P.Cb#a9#e.4a1aQaN.N.v.Ha4#8.N.v.Fa2bn#5.Dboboa9a9a0a..C.Pbaa4..bpbnahbsbya0a..N.B..............ac#1.qaabwa2#7.Ba.a2bzaE#9#3.B.E......aFaFad#4#K#1b6ayaK#W#K.....#azar..........ar#Y#Oarar#X#K#Oas......axaqaxaq......aqaqaq#T#J#W....#T#J#W....................................auap........avao......avavap#T#L..................................",
".7.5blb2aUbhb2bWaU#c.7.z#j.8.6.7#n#c.y.5aTaW.8.5#lbW.8#fbe....aT#k#k#e#k#b.K.4bhbjbjbjaP#e.J.A#bbb#i#c.A.7be#iaWaVaT#e.4.w.x.yaVaO#j#i#e.7.zaZbc.BagaT..a5a5aO.Na8aRaO.IbcaT.4bmaXaP#e.J.J#8.O.P.H.Fb1#7.N.P.Fb5bzaj.D#9a2afbybZa0#7.C.Fa4....a2afbqb3bva2#8.P.C#P......aGaI#Y#R#O#PaDag#9.E.Na2..afaf#6.D.Ealad#4..bvbuab#4.sbRb6ax#W#K#MayayazaG#0#M........#Q#O#O#X#Q#N#Oanar#XawaGazaq#Maq#J..awaL#V#T#M#UaG............................................auaKap#T....auaxat#T....apao#T#JbY..................................",
".z.7#mbkblbdbdbb#e.4.z.KaU.6.8bTbe.7#daY.#....#g..............#c.4.K.x.K.7.y#caYbcaWaT.4#b.A.yaT#k.8.7.7bV.M#gaXaP#e.4.w.x.1bTbV.L#b#c.z.A#bbV.B#6....bib#a5aO.L.uaO.O.I.Obibia6aVaP.O.w#8.H.P.N.1baa3.E.P.Oa0..#5.D#2..#3a3aQ.NaN#7.C.N.B..bna#a#a3a9a0boa0aN.N#Q......aGaC#Q#P.......E.C.Bbs....#3#3.D.DalamaD#4aFaLaDaa#2.rabb6aHaHad#RaAaGaAaA#0#K#0................#XasaK#0#S#SaGaz#W#K#W#K..axaxap#U#Waxauauap#T..................................auavap#J#V#Lao..avaxao#Lao....#L#Laq....................................",
".z#fbb#ib2bbaU#i#c.5.A#faU.8#lbfbkbb#i.4#cbfbf#m#.bhbmaU#i#b..bf.z.K.z#iaU#b#iaUaU#i#e.4.z.A#faY.5#b.7#mblbf#mbf.4.M.y.x.w#dbg.7.z..bibgaVaP.1a..#..a8b4b0aRaO.H.u.O.I.uaObib7bjaVaO.J.L.N.Ca9aQ.N...#b3bsa..Ea1aQaQ..bqbqa9aQ#8.C.P.val.Cbza3a2aNa0a0brbsa1a..N.C......ac#Y.tac.........#......bzbv.D.D#9aiaLac#PaDadab#2.s.radbSbubtac#4.raqar#0#M#Naz................azaraq#X#Sayarazar#Xaq#1..ao#W#U#JaMayazaq#L#T#T..............................auaAaAao#L#L#U....apap#T#T................................................",
"#cb8bebdbl#i#k#e.7.z#fb8bh#lbe.zb7bc#i.KbUb8bfbhbhbgaYaUaP#b.A#kbe#h.9be.G#i#c.6#e#e#b.K.y#bb1aY#e#ba6a5aR.4#jbb#j.w.4.K#eaV#c.AbTbhb5bjaV#e.J.w....a8a8a5.4.1.x.IaR.xbabmbibxbjaP.4.G.L.Cbxa9aQ.N.Ha0a3a0aNa8a8a1aN.N.Lb4a7aQ#8.P.Nalb1.Pbqbrboa3agbqb3bya0#8.E.B......#R.qae......aGaI#X......aEaEaf#3adaCab#4.raaab#2#2.rbY..aDaHaD#4#P#2#U#M#M#KaM..................#Xar#X#KaybuaGaGar#0.tayawaq#L#LaqayaMazaq#L#Jaq................................atao#L#L#Uax....#L#T#JaA................................................",
"bVbe..bbbcaU.7.7.A#fbebc#k.7.A.7aZ#i#c.ybeaT.4blb4bVaYaT#e.4.y.4.4.4.7.1.xaT.7.5be.5.1.x#fb#aYaW#ea8a8a5aRaO.L.G#bbgbmaX#d.w.zaZ..bxb0b0aXaP.y.w....a5aRaPal.I.x.1.I.1bZaRa6aVaP.4.w.x#da7bxa8aN.P.I.Na.#7a8b3bxaRaO.N.Nbra9#8.N.C.Nb#.Fb7bsbpb4a3aga3a7a4a.#7.C.F..................aGaC#Q#Q....ajaf#5.D.Eab#4#P.Db3.r#2#2am....bRadaa#P.sae#X#0...........................t#Q#QazazaGaGar#M#OaGaLaq#Mawaq#TaAaz#W#M#Mav....................auauap#Lap..#V#L#LaK..........................................auavap................",
"be......#i#k#c.A#caTb2#i#c.z.7aZ#j#k.zbkbdaUbhb0b2bWaW#i#c.K.z#b.8.5.6#h#daWaVaP.4.w#b.4#eb2b0bhbib4bZa5aP.4.L.ubhb7aYaX#d.y.4..aWbgbgaT#d.4.x.1aT..aOaO.O.I.C.1b8.1aRb1.OaXaP#e.1.u.1baa1a1al.N.u#8a9a1aOa8bZbxa1aN.I.H.Oa..N.C.FaQ#8a4a0a3bpbsbqa.a0a0al#7.F.C#7.D................ar#X.taC.......D#2.Bam.r#P.raJ................#R#P.rabaC#NazaGar#XaBak.q..........azazar#X..aqaraIar#X#K#Kazaqawawazaq#W#K#W#L#K#0ao..........auavao....aAaAao#Lao#L..ao..............................................aAaxao#J..............",
".........5#c.A.zaTbd#k#c.z.KaZbd.4.zbkb7bd#jbhblblbcbb#i#b.y.A#b#i.5#cbeaZ.....4bc#i.4.8bgbxaWa8bxb4b0a5aP.4.I.u.Ob0bgaP.M.w.4#j.7aWaT#e.4.w.1#f....a6.I.L.v.1bjaV.I#ebc.I.O.4.G.w.1bVb.#8aO.1.C.Nb7b3a1a5a9a7a1.O.N.H.CaO.N.C.Fbaa1#8.P..a0a2a2a..N#8#8#7.F.C.1bY#5.D................#Q#Z..bpa2#9.B..bzaDab#2ab...................2b6aaaHaDad#PaLar#Q#O#RaGaCas#R...#aLaHar#U.t#U#X#0#X#N.taM#W#UawaMaAaq#W#L#L#J#Uaxapawawaq#T..aKaw#V#L..avaxauap#T#J................................................atavap#T#L..............",
"#i..bf#o#g..#k#caZbe#i.7.7#kaU.8.6#bbkblbd#ebcbdaYaT#k#c.7.A.z#faT.z#f....aWaU#ebjaT#b.yaUaT#ia6bib#a6a6.4.O.x.I.OaW#e.4.w.waP#j#caP#d.4.J.Abab8..biaRaP.1.O.Ibaa5#cbd.......x.L.MaOaV.4...I.H#8b#bxbiaQ.Oa1a1aO#8.I.v.FaQ.C.ualbsaN#7.P#8#7aga.#7.E.C.C.F.Calbaai#5.B....................bpbva2#7.CbzbvaDaj#2.D........ad#4.......#b9aHaDadab#2#1#X#O#RaGbYaC#Z#Q#PazaGas#Y#Q#O.##M#S#S#Oac....#Uawazaq#V#T#Jaq#0aKawawaMayaq#W#Javao#L#T..auaKaAap#T#T................................................#V#V#T#TaM..............",
".5.8bU#n#..6....b8bkbdaT#h#h.8.A#nbfbcaU#i.5aUaUaU#i#d#b.x.y.KaZaW#baT#ibhbVaW#i.z#e.z.y..#ebma5a8a5aRaO.O.x.x.GaS#e.4.J.x#daY#j#c.z.K.4.xaSbV....b0bi.O.G.u.1a6..............bhb4bc#i.4.K....biaVaP.I.O.CaOaO.O.H.u.CbYa9.N.Oa0a0#8.F.Cal...N#7.E.Bala3am..aEbtaJ#3.D#Z..................a2ag#7.BaFbtbuai#5.D.Q....aHbtaD#4.r......bTbzaJaDab#2#4#Q.taGaGaHaC#R.q#PaGaKaI#Z#Oac#Payazaz#0#K......ataq#V#U.t#0....apaoawaAaAao#T#J#W#L#T....atavap#T#Jaq....................................................#V..................",
".5.7.7#m.8.8.#bfbeb4b0#i.5.8bkbd#j#caT#i#c.z#iaT#k#c.5.y.y#bb1b1#b.GaUaTblb0aU#e.z#c.x#e.....4aRaVaPaO.4.N.u.1baaV#d.1.w.1b1bd#c.7.A#l..#d....bea6a6bkbd.M.OaR................bhbjbc#e.y.K..bxbZaVaO.G.4.CbZ.L.I.v.PaSb#....a1aQaN.N.vala1.......N#7a0a2....ahaf#5.D.D#X#Q......bnbnag#5....#7.E.EafaEah#5#2.s#3....aHbvad#4.D.#....aFbvb3aE#5.D.D.t#1aCaCac#Y#Q.q#1aGbuaC#1#Oaa#P#PaLar#X#K........#U#M#J#UaA....#L#Tataxap#V#J#Laq#Mao....aoao#V#L#Wav................................................................auap....",
".7#i.7#m.6#.#o#m#jbhaT#c.yblblbc#j#c.A.4.A.zaZ#e#c.5.y.y.1aZbVaP#d.w.yaUbhbc#e.4.z#f#bb0......aTaOaO.O.G.G.x#db4a6.J.1#daTaU#i.8.A.7#m......b7be#kaPblb4aU#c.A................aWaT#k.4.A#fa8bxbiaX.4.G.MaR.....I.NaQa1.......P#8.N.v.CbY......................#3.B.DaJ.tb5....bpbvbnaf#5.D#3a.#7ag..ajaj#3.s#3ah....aDad#4#2.rab....aDbpaJab#4.Q#2#ZbuaM#Y#Y#P#P#4aCaGaC#0#Q#O#Z.q#Raz#0#M#K..........#U#Vaq......awapaq#W#W#J#UbY#0#M#M......#L#T#Way................................auauap#T........................auaAap#L..",
"#f#j#i.9.6bX..aObfbe#h.6#bbWb2bb#i#b.z#i..#k.....7#b.A#baTbcaX#e#a.w.K#laU#i.4.A.KaUaY.........4.4.O.L.u.I#db#aVbxaY#b.w#j#i#c.z.KbXbdbf#j..be#j.7.Ibkbd#k.7.AaU..............#d#e.4.7aZaYaVa5aR.1.1.xaR.......................v.C.Pa4.......#aFboboa2a.#3......#3..#Oar......bvbvboaf#3.B.E#9.C#7..#2#3.s.Da4......abaaah#5am......ahahad#4#P.Qaj#4aHaCad#O#OaaaMaeaB#Z#R.q#1#P.rad#0#M.t#1....................awaKat#T#L#L#Uasaq#U#K#0.........aavavap#T...........................#avaAap#T#T..................auat#Vat#V#J.#",
"aZbbbcaU#k.7..bUb8#o#h.6aYbkbd#i#c.z.zaU..........bh#b#cbjbg#e#e.K.w.4#e#ebgbbaV#i.4.............w.5.O.LalaO..aWaT#e.y.waZ#c.A.KaZbebWbj#j.7#k.7.7bXaZ#i.4.A#c...................y.K#faY....aOaO.G.uaSa6....................................btbobybsa0a..E.v................aibnbnaf#5.D.s#9.E.C.......D#5ae........bzbzaEaf#3....aH#4#4#5#P.D#6aEab#2aa#4#4#P#P#2aF#Q#P.q#Obw#Pam#Q#Q.t#Qas..........awaw#V....awayao#T#L..aqaq#U#J#Maz.......#auaMawap#V#L..........................avap#V#J#L................avaKat#T#T#L#W..",
"b8bkbb#j#c.5.5bfbf##.8.z#nbb#j#k.7.w.8bb........bkbhbmbmaVaT#d.4.w.w#dblbkbjbcaTaP.5.xbhaU#d....a0be#maT.A#g...4#e.J.JaZaY#i#g#i.7b2bk#j#..A#m#k....#e#c.z.4bda6a5aP.O..........bcaU..a8a6aP.4.O.xaSb.......................................ahbobvbwal#7.E.B............aEaDajaiafa##6.B.Eam.Db#........a2a.........bzb5bnaf#2.BayaGbv.Q.r.s#9aJaDaa#2#2#P.r#2#4aD......#Q..#R#Y......#X..........auawaKax#W#M..ataq#U.taqat#T#L#M#XaK........auauayaxao#L#L..........................#V#T#L#W#J................avat#V#Laqaq....",
"bdb2bb#i#cbmaUaT#e.8.6#l..#k#c.5.5.7bWaU....bf#oaUaTaXaVaP.4#a.w.x.1aWbhb4b2bcaT.4.4.w.4aU.4.z....#h#c.7.8bf..b4bfbe#j.8#j.5.7#c#jaO#j#k.AbhbcaU#i.Kbf.7#cbca8a8a5aRaO.I....bkbWbc#ibib4aWaP.O.xaO..................boa3a0a..Nbqboag.N........a3a2ag#7.E.v.E...........#byaD#5#9#5.E.E.DbTaJ.Dag#3....b4a3#9.E....aEbpbnah#5.D.DayaFaFaaaFaDaLaEab#5.r#2#1................................axao..avaAaxax#W#M#L..#W#T#L#0avavao#Tauavao#L......apavatao#T#Jaq............................#Vao#LaK................aoao#L#L.#......",
"bWbd#jaPbhbhbmaW#i#b.z#o.....5.7bhbbaU#k.4bfbhbhbgaU#e#e.4.4.J.w.1bTbVbhblblbhaPa5aXaO.4bf#n#g......#.#i.#..aVblb7be#j.8.9.7b8a1aO.I.O.8bhb0bkaU#e.z.5bb#ga8b5b5a5aO.4.I.I..bjb0bcaVaVblaVaO.I.w..................bqbqbqa0a..N.Bb3aN.N.E....aEa0ag#9#6.C.Falbqa2#7....aFbpaJ#6.s.D.D.Ealbn.B#3af#3.Ba2bpam#7.Bam....aiah#5#3.s#6bzadaa#PaDaDahad#4.D.ram................................awawao#Uatap#W#W#U#JaM......aq..awap#TauaKaxao#L........aoao#T#J#WaM....auauap#L..........................................#L#V..........",
"bb#j#kbhbhbkbmaU#i#b.z.z....bkbkbhbcaU#e.4.AbWb7bdaU#e.M.4.w.x.1aSbgbmbgbcaWbibga6aVaP.4.G#m#cbcaU#ebkbdaU#i..blbUbe#g.5.8.......NaVaO.Ob0b0bjaT#k.z.zbia6bibxbxa5aO.O.u.L..bcbibgaWaX#d.w.O.x.1..a9a1aQ.H........brb4bsag#7.E.Ba.#7.Bal..bza7bx#7.F.C.Eala2bqa..Ca...ahab#5.Bbw..aj#6bqa3a0#7.F.D.Baga.#7.Bal......#5#6#3.D#2b5bz#P#4.qababab#4.r.DamaF..............................awaAaAao#L#U#T#U#J#Jas............ao#T#Javavap#T#Jap........#L#J#WaA......aAaKao#L........................................................",
"#j#ibjb0b7bVaYaT#e#b.J.K....bkb7b0bc#i#e.z.w#cb2bhaT#e.4.y.4.4#eaVbibgaWaTbibxb0a6aVaP.4.G.GbhbcaWaT.4.5aU#k.7.7#m#g.9.6#l..bWa8b.aVaRaO.xbdaU#c.4.y#bb7b.a5a5aRaO.O.I.u.1a7#ibhb4b.aP.4.w.4.1a7bxbxa1aN.I.I....bobqbqa3a..N.C.B#9.C.EbZ..aEa7bs.v.E.C#7a2..a..N.N......#2.s#6......bqb4a3a0.N.B.s.E...E.Bala3....bnaf.D.D#6bnaFaj#4.s#4ac#2.s#P.ranah.r..............................axaxap#T#Kaq........................#V..aoao#T#Jas........................axap#T#J.b......................................................",
".4.7bhb0b0blaU#i#e.1.y.yaTbdblblbjaU#e#b.z.y#ebhaU#d#b.z.z#e#ibfblb4bjaTaXbib4b5a8aXaO.L.G.Lb0bjaU#i.4.A#j#c.5.6#g.8.9#gbU..bib0b1a5aPaO.G.I#e#b.w#baTbiaWaRaRaO.4.H.u.1aR..bibxblaW#i.4.w.4aZa7b3bZa1.O.H.I....a0a3a0a.#7.E.v.Fa0.Na2....#9aRa1aRa0aO.u.1.....N.#.........#aFaj#2..bobqa4#7.F.Calb5......aHaDaa#Pbp#9.D....abab#2.Q.Eah..#P.rajaM#R.s#1aB#P..........................aqao#T#M#1ax..............................#L#T#0..........................#V#V#Las........................................................",
".z.7bgbjbhaW#e#e#b.y.x#baTbcbdbcaU#k#b.4.x.1aUaU#k#b.3.x.KaT.ybhb0b0bjaTa6bibjbia6aP.4.G.x.MaPbkaT#e.5.y#b.8.z#c.7.7#lbe....bib0bZa5aO.L.G.L#b#b.zaZbjaXaPaO.4.O.H.I.GbTa5..a6bgaW#e.4.5bga5aP.4braR#8.O.u.I..a0..a.a.#7.N.B.FbT............aObqa7a1aQ.Nb5................bzbvaj.r..a2a0a..F.v.Ea3......aGaLaL#Y.qaf#3.Q.......r#2#6bw..awaMaq#1#P#O#2aCad#R#P............aG#Z..........#M#L#0az..................................................................#Tao..........................................................",
"aU#jaWbcaUaT#e.4.y.A.y#fbbbfaWaUaT#c#b.A.K#faU#i#c.K.x.KbTaY#cbcbjbgaT#e.4a5a6aXaP.4.L.x.GaObhaY#e#b.y.w#f.z.z#ibe#g.7......a5a8aVaO.O.L.u.O.1.zaZbcaS#d.1.J.I.N.u.4bab#.Oa8aVaXaP.4.Jbibib.aX.4.G.4al.u.IaQb4ag.C#7#7.E.B.Fala4.............4bxb5a1#8.N.C................aDah#2.s..a.#8.E.C.Nb4..........ac#1#P#P#3.Bba..aiaf..........axaq#T#J#R#1aCaFak.r#4..........aGbu#X#O................................................................................................................................................",
"#i#gaUaUaT#e.4.1.x#aaTaYbf#o#i#k#c.7.z.z#fb8bh#b.z.x.z#fb2#i#baWaWaTaP#b.KaVaRaPaO.L.w.u.OaSaU#i#e.K.x.zaZ.6#fb7#m#g.7#g..bgaVaXaP.4.N.u.Oba#d#e.GaPbV.I.M#db#ba#8aPbiaPa8b4a6aP.4.4bib5b4aWaP#d.G.O.H.ubaa1a2#7.val.F.F.CaQa4..............bqa8bsa3#8.H.uaQ..........a7a1a.#2.Dba..a9.E.N.Na4al..........#R#P#Pbt.EalaHbzbzaf#5.D#2......#U#MaAbS..acak#PaHaFab.r......aI#Z#Q#Q........azaG#0#Q....................................at#T...........................#auat#V......................................................",
".9.7.7#k#e#b.5.K.y#bbXbcbX#o#n.5.z.A.y#fbVbcbU.z.A.z#ibVbb#k.4#eaX#e#b.K.xaP.4aO.O.I.x.1bSbZ#k#e.5.x.2bVaZ.8bX#m#g.8.6bbbhb0aO.4#d.L.I.Ibab#.L.L#db##c..........bgbZbiaOa6aWaPaO.J.JbmbibiaWaO.L.x#d#8aSb##7a..C#7..........................a1a9aQ#8.H.v.F..........bqb4a1aN.Cab......a0al.P.H..............#4........bzb5bqaf#3.B#4.r........bTb8....#PaFbubt#5.r......#S#O#P.#........aGaK#0#O#0...............................#aAauap#T........................avaKat#T#T....................................................",
"aU#j#g.4#b.K.A.x#caZaYb2bX#o#h.8.z.1#caT#l.9#l.8b2#ebkbc#e#c.z.z.4#b.J.A.zaS.L.O.I.x.1aSb##b#b.z.A.yaZbe.y#j#m#g.8.5bb#i.4bgbm.L.O.u.3aSb..4a6a5aP.Lbe............aVaXbibiaWaX.4.xaOaVaVaT#d.M.w.waZ#8.P.O....#7........a8a8a5aR#8.u........aQaN#8.N.C.1b1..........bqbqa0.N.Ca9a0#8..#8.C.Hb1........................aFbpbna#.D.B#9.D.........2b6.a....ahaDab#2.rah....................arar#Q#N................................avauaKao#Lavauap#V................avat#V#Laq....................................................",
"#g#c.5.A#c#b.K#f#eaUbUbU#o#h#..6.9#n#..9.9bS#obV#hbbaU#i#c.1.x.KaU.w.K.KaSaZbf.G.M.G#daRbVbd.A.7.zaZaY.z.y#ibmaTbkbdbd#jbhbZbmaV#e#daR.w.I.Obia6aP.O.x.............4bib4bZaVaP.4.w.4aPaPaP.M.x.1bab1.N.C.N.O............brb4a5aR.O.C....a1aRaO.N.N.v.Na4............a1aQ.Nbqbrbra1aN.C..................a2a...........aiaha##3.s.E.sae..........b6bS......#4#2#2bY......................#X#Q#Oan..................................avap#T#LauaKap#T#T............aK#V#V#L#T.#....................................................",
"#e.4.5#cbcbd#g##bf..#o#n#n#g.9.6#l#o#..9#lbfbd#j.8bhbcaUaT.4.7b1bdbcaU.4.z#n#h.9.8#..z#mbhaWbdbcaT#e.7.x#b#jbgaWbWb4bbbib5b0biaT.4.J.w.yaP.Mb0aWaO.M.IaW#e........bgbiblbjaV#d.J.w.4.Oa7a9a1aQ.Nbg.O.F.u.1.O.u........a7bsbxb#aO.I.u.Obra7a1aO.N.H.OaQ...............N.N.Pbqb3b3a0#8.C.N............bob3a3#9.E........#5a##3.D.Eb5#6aD..........bRb6........#2#5..................................................................ao#T#LaMavap#V#Jaq..........auaxap#L#V........................................................",
"#ebfbe#j.9.7##bU.1bvbU###..8.3##b2#l#obe#j.5bb#kbkbhbgaUaX.4.wbeb4bc#i#c.y.6.8.6#h#i.4bhb4bcaU#i#e#b.w.1#laUb0bkbWbWbdbmbxaU#i#b.4.w.ybgaWaT#eaR.4.x.LaP.8.y........a6a6aV#d#d.w.GaPbrbxbsa1aN.N.u.N.v.Fa1.I.CaN......a5a7a1aO#7.I.Ha8b0bZa1#8.N.v.....................F.Na3bqa1#8.F.v#8............bobrbo#9.E#7.........D#2#6a2#6..............bRb6............................aGaCac#R..................awawaq#U........................ao#V#L#L.#..........apapauauat#T......................................................",
"aTb2bb#g.6.8.I.1a5bo#o#o.9.9#lbe#hbUb7bd#g.7.7bhb0b4bdaU#e.5.y.4b0bc#e.4.z#f.z.9#n#b.ybUbf#m#k#e.5.1.KaZb1b0bjbdbdaU#ibhbdbmaT#e.J.wbhbhbmaT#d.y.L.x#dbe#h.A........aVaTaP#d.y.x.JaWbrb5bxaQ#8.H.C#7.Ib#b#.H.HaQ........aRaQ.N.P.ualbrbZbxaR.O.I.CaQ......................a0aQ#8.N.C.Na1........aFada2a0a.aiaf.D..................................b9b6........................aGbuaLac#R#O..............ayaLaGaq#Mawaq........................#V.#..............#TaKaAap#T#T....................................................",
"aUbe#k.8.A#l.1aR..a.#o#n##bUbf#n#.blbfbe#c.z#cbhb0blbV#i.4.z.y.4aW#i.4.4.zaZ#ob6.5.5bUb8be#j.8.K.5.yaZbVaWbcaTaUaU#ibhb2b0bcaT#k.Kbhb4b5bm#i#e.J.K#dbZ#ma6aVaPbgaW#d#e#d.1.J.w.1b6a9bra7a1#7.N.C.uaOa4a7.I.uba........a7.O.O.H.H.LbZa5a7a1#8.1.C.CaR..............ad......#8#8.N.F.FbT........aLbvab#7aNbpbnag#6.Q.................................2b6..............aGaGaCacaqaGaGaB#1.q#P......ayaz#W#Kayayaxaq#Kayap#Taxao#J....auazar........................avaxat#V#J#W..................................auauap#L..........",
"bh#g.8.A#gbe........#7##bXb8#o#mbmaWaXaP.7.5bebhbhbmaT#e#b.A.y#faUaT#b.waZaYbVbW#mbfbWbU#n#g.6.8b8#f#nbfaT#i#e#b#k.4bkb0b0bc#e.4.ybhb0bVaY#e.1.y.zbg#ma8a8a5aP.L.x#d.x.L.M.xaSb.aWa8a9aRaN.N.H.u.HaQ.O.H.I.1bZ......a7b5bx.I.H#8aR..aRaQaN#8.H.u.OaR............buaa.r.......C.P.Ca1.#a2a..E..aFad#4.sbnb3bvaf#3.B....................aHaDad#4.r....b6.#..........aGaGaLaCac#P#PaB#Y#O.qae....ayaMaz#0#Saybuax#W#LaAaq#T#J#T#M.aauayayar#0.t....................apapao#L#Uax................................auaMawao#L..........",
".6#j.A.7bX...........EbUbXbX#obhbiaWaVaP.1.z#oaWaWaT#k#c.y.y.KaZaU#e.1.y#ebfbe#n#..Abe#n##.8.9#l.6#lbebf#h.4.4.x#b.5bgbhbcaT#e.K.wbgbhaW#e.4.K.x.4#gbib5b5aV.4.G.I.M.w..bk#dbb#cbha5aN.4.O.P.v#3b6#d.H.NalaQ........a9a7a4#8.C.H....#8aO.O.P.H#7b5..............ad.rbY..............bobnaga#.Bab#4.r#6aEbnai#5.D.Bai................aHb3aJad#4.Q....bSb6..........aGaHaLaLaa#P#R#R#O#Oan......ayazaq#Sayayazar#U#J#U#W#J#M#L#L#LataGaLar#U#K................auavat#T#L#LaK..................................avavat#V#Jaq........",
"bXbf#kbb#k............#obfbfbhb2b2a6aT#e.4.x#oaT#k#e.4.J.A.7b1bV.4#c.x.yaT#g.5#..A#.#j#h.8.6#lbX.8bXb8#o#haVaT.4aU.xbcaUaT#e.5.x.zaWaTaT#e.4.x.1#i#ia8bxa8aP.1.x.GaS.1..bfbf#kbWb2a5aR.N.I.C.Nbaa1.O.uaS....bkbha5aRaOaQ#8.H.ual....a3.H.L.uaOb#al................aa..............bpb3bsaf#3.B..#2#5..afafa##2.Bba..........aGaI#Y.qaFaHaJaa#2.rab...2b6..........aIaCaBac#R.sad.....#........#W#W#U#KaMaqaq#W#M#Kas#M#MbY#JaM#Wazazar#W#M#K#M..............avaAap#T.#......................................ataoao#L#U..........",
"#o#j.8.7#c.z..#o#m....#o#o#mblb2b0aW#e.4.K.w.4#n#d.4.y.x.1aZbcaT#k.K.A#baZ#c.z#j#hbUbf#..6#lbU#g..bfbf#m#gbmaV#i.ybi#i#k#e#b.z.KaZaP#e#e.5.y.ybTb2bma5a5aR.4.I.u#d.1aW..bb#j.8bkbia8a5aO.H.NaOa5.1.u#fa5....b4a8a8aWaR.4.w.F.1a4....aNa.#7aO.valb5................................a2boaga#.E.Ba.........aiaf.B#6ai..........aLaC#X#Oadadaa#4.r#PaC....b6..........#Racaa#1.q#1aCayayax#U........#K#Masao#0#U#N#MaM#T#Uas#Las#T....aq#0#M#JaM#L#U............avat#V#Jat........................................#T#L#LaA..........",
"#n#gbU#o#o##.9#o##.9....#hbmbibibgaW#e.4.w.w.4#n#..6.4.1#kaUaT#k.K.z.1b1bd.A#c.#..b2b2#n#g.7#.....#n#m#gbhbgaU#ebib4bZ#c#b.A.w#fbVaV.1.4.x.xaSbVbZbcaRaPaO.L.x.1b7.1.4..bf.7.5a8b5bZaRaO.G.Ibk.G.LaRa5a5aR..a8b3bZa5aO.O.u.O...........N.F.C.Cbs..................................aga0#9.E.Bba.......#bpbzag#6.B............aB#Y.q#1aa#4#4.r#Pb5......bTb6..........#O#P#PaaaM#Y#QaAaq#S#U......auaMav#V#L#M#Maq#J.......a#W......#M#U.tas#U.tas............ao#T#Las............................................................",
"#m#cbXbU#n##.9####.6#h..bf#.bgaYaT#e.4.J.A.yaZ##.9.9bW#nbcbcaU#k#b#baZbc.7.7bX....bf#n#..9.9bf.8.5bgbcbhb4bVaT.4bibZb0aV.5.K#eaT.M#e#d.x.1#eaTbhblbjaP.O.L.u.1b#.JaP#dbWbU#h.5a8bxa8aO#8.I.I.x#c.zbibZa6aR.4a8b0bxaV.4.L.u.O....a1#8.....N.Nal......................................a#.E.Ebzaiag#3..bzb4bqaf#3.B........ai..#Q.t#1.....r#P#2aJ#5.......2b6............aIaGaC#Z#Q#Oaqayax#0......avaxax#T#JaAaAao#J..................#Waq#U#K#1ay..............#Tao....................................................avat#T....",
"##bUbXbU#n##.9####.6#o..bebfaTaTaP#d.y.x.1b#aW##.6#...bkbVbcaUaT#b.ybk.7.7##bU#o#.#n#h.8.9bX.9.9b0bVbmbhbhb.#e.4a6bmaT.4.5.x.JaXaP#d.z.y#daVaTbmaWaTbmaX.4.4aS.y.1aWaVbe#m.8.6aRaVaQ#8.I.uaO.waRbibxb4aWaO.La8a8aVaRaO.L.xaO..bxa9aN.C............boa0#9...............................Nbpb3bnaf#3a3a2a.bna#.D.B#9....bzbnafa#.B..bzbzahbpbpaiaf.D......b6bT............aB#Z#X.q#R#Ubuaz#W#K....atat#V#J#Watap#T#J.b..................#M#M#0ax......................................................................auaKat#L....",
"##bU#o#o##.9.9##.9.6#n..#nbU.4#e#a.K.K.yaZb1bd#n###obhblb2bcaU#k#b.4#baTbWbUbgaWaX#kbc#j#k.8.7bhb2b0aUaWaWaT.4.xaTaXaP.4.wbgbga6aT#e.K.1bg...4aTbibibmaX#d.x.y.wbVba.....8.6bXaOaO#8.I.u.1b5.1a5a8bxbiaVaO.GaVa8a8a5aRaO.uaV..bra9a1aQ#8........bob4a0#7.C......bobna0#7.B......a2a.#8bnbpbvbo#9bqbsa0a..E.E.B.E....bzb4bnaf#3.D..bvbsafbvbvai#5.D#3....bRb8..........az#Q#Q.q#ObYazazaq#U#KaGaI#Y#O#J#Tayazar#UaM....ayay#U........................................................................................avat#V#Jaq..",
".8#o#n##.9.6###o.6#.#obd#gbUb8.5.K.w.1aZbVa6bU#o#h.6bkb0b0bdaT#f.7.z#b#.bhbhbjaWaX#e.y.w#k.7.ybcbhaU#e#i#e#b.y.ybT#d.4.xbhbibgaYaV#e.M.x#ebhbgaTbxb4a6aP.4.w..............biblaX.L.O.ualbV.Ib1..a5aRaXaO.N.ua8b3b5a5aO#8.I.I..aQbrboa0a..C......a3bq#7.E.C......bybsa3a2a2a2a2a..Ea2a..Ea2a0#9#3byb3a0a..E.E.Db5aDbnbobwbp#6.E.Q#9bpaEaiaEai#5#6.B#9....bRb6.......#....#0#O#1#Z..arar#U#KaGbYaIak#P....aKaKaz#0#K....aLaz#U#M...............aap....................................................................aoao#L#T.#..",
".6.9##.9.6.9bX.9#.b2bUbd.7bUbf#obk#d.4aX#j#c.A#n##.9bgbhbcaUaX#c.z.z#ebUbhb7bxaWaP.4.K.J#k.4.yaTaU#e#b.y.4.4.1aZbg#c.M.wbib4b2aWaT#e.J.x.4b7bdbmbxbja6aO.L.x#e............bfbb#c.waV.4.G.IaV....aRaRaO.O.x.Ga8bxbxa5aO.O.I.N....bxb3a0#8.C#7....aNa..E.Cal....a2bpboa9boboboa0#8.E.B#9.E.E#9#3a0bqa2a.#7.v.NbwaHbtacaiag#9#3.B.Dagaf#5#2af#9#2.B#6am.....#bSbS...#.#....#O#Nas.#....#M#KaBaGaGaC#R.q#RayaGaGaq#U#K#0axaq#W#Kar............auaKat#T....................................................................#Lao......",
"#naZbf.9###o#.#.bfbe#m#..7bf#n#mblb7bVaU#j#b.6.8#..6bcbhbhbmaT.4.z.5aUbgblb0bjaW#e.4.J.4.4.A.y#f#e#b.y.zaZbgaT.z#ca6aVbgbhbjbjbg#e.4.w.x#eaP.OaWaWaXaP.4.x.JaV..........bWbWbb#i.za8a5aR.O......bg.O.L.x.xaPa8a8a5aQ#8.H.x.1a0#8bra0#7.N.Cal.......E.Ba0........bqb3bobsb5bra0#7.C.B#7.C.E#3.B.Ba0a.#6.B.Fam..aHaF#4aj#5#3.B.Dbw..#3.D.B#3#3.B.EbY.........2b8.#.....#...#..........az#WayaBac#Y.q.qaCaqazar#W#J#Kaz..#U#J#0..............avaw#V#Lap.............................#avao....auatao................................",
"bb#i.8be......bUb2bU#o#o#n#m##bdbfbWbkaU#k.7.A.8.9.6bhbxbhbmaT#e.1.wbcaWbmbgaV#e.4.y.J#daX.A#baU#j.K.K#ebc#b.4bibia6a5aPbma6aT#e.4.K.x.KaVaP.4.uaXaP.4.GbhbgaWaT#b#o#g..bWbW#j.4bib4a5aR.O.x....aWaW.I.IaS.waVaRaPaO.L.u.IaSa9aQ.H#8#7.Cala0..a3a0.N............a3bqbobqbqa2a.#7.C.Eam.Bal..#3...N.N.C.Cba....adaa.r#6.D.B.Bamaiak#X.....#..#3...#.......#..b6.#.#...#...........#..#X#KaK#Y#1#O#Pbw..#W#0#X#K#NaM.#.....#................aoao#L#T..............................avaAap#JauaKavao#L..............................",
"bb#g.8.5....bfblbUb2bfbeaU#g.7bbbdbdaU#k.4.z.5#i.9bhb0b4bVaU#i#c.y.y#e#naWaXaX.4.K.xbga6aVaR.4.4..............bib7bZaVaPaVaXaP#d.1.x.1#eaUaP.L.w.M.M.wbhbWbWaWaT.4.yaP.Jbe#j#k.7a8bxbibmaWaX.4..#eaP#d.K.waTaOaO.O.L.u.IbTb#a1aN.H.P.C.PbsaObqb4a0.N.P..........a0a0a2a3a2#9#7.E.v#6a2alb7.........F.E#7.........D#5......a#bvad#2#P#Q.....#.......#.#......bSbS.#.#.#.....#.#...#....ayazay#O#N#Y#W....#K#M#QaCaM............awaq............#V.#..............................axat#V#Javaxav#T#J.#............................",
"#j#k.7.7......bebfbkbfbcaU#k.5.zbb#j#i#c.5.z#kbmaTbhblbjbjaU#e#b.y.y#e#gaPaX.4.4.4bibibxa6aX.4.M.x......bf#oa6bjbxbxaX.4.4#e.4.K.J.w#fb7aX.4.G.x.4.L.4bhb2b2aU#e.K.yaP.J#i#kbkbea5aRbhbibmaX#e.J...K.4.x#fbia8.L.O.u.HaOb#a7aQal.C.I.Na9a7a1#8.Pa7aN.Na3a0a.......a.#9aga.#7.E.B.Nb5albs...#..bra5aN.C.....#.#.#.....#.#..aHaF#4.r#P.#...#.#...#.#.#.#.#.#...2b6.#.#.#.#.#.#..........arar#W#M#Uax#W#J......#Y..............awaLax#U............................................ao#V#JaMatap#V#J#L....................avavap#T..",
"#g.8bcbmaWaT.4.Kblb8bXbb#j#k.7.7#g#k#c.7bdbhbibmaTbmbhbcaU#e#d.J.x.1aU#g.5.4.J.wa8bib7bxa5aP.4.M.L.M....b8#o##a6a6aV.4.O.x.y.4.x.waSbVaX#d.M.x.LaV#kbjbcbiaY#e#c.z.zaZ.w.4bfb7bbaRaOb0b4a6aP#d.G.4a8biaP.1bib4biaX.NaNaOa1aN#8.C.Halbxbybya0#8.E.Na..N.Fa0#7.C.....C.Ea##7.E.B.Cbwa2.#......a7b3a8.1.x.#.#.#.....#..bnbnaia..E#P.rae...#.#...#...#...#.#.#.#.ab6.#.#.#.#.#.#...#.#.#.#.##U#L#KaHaB#Y#M......................away#W#Kaq............................................#Tao..#T#V#J#Tax..................auaAaxap#L..",
"#kbhbhbcaUaT#e.y.AbWbW#m#k.4.z.7#i.4bkbkbdbxb0aYaTaWaWaT#k#e.K.x.1#faV#c.A##.4.4bibib0bZaVaOaO.L.w.4..bfbU#n#.aVaPaP.4.w.I.MaV#c#daTaPaO.O.x.1bTaV.4bhaWaU#i#e.z.y#f.4.xaVbkbkbd#cbibjbjb.#e.M.x.1aRaRaO.xbibiaW.4.H.uaO.O.N.P.Hba#8bqbxa6aVaO.G.N#8.C.EaN.N.Ca......E.B.E.E#7a.a2.E.....#.#.#aRaO.H.1.#.#.#.#.#.#..bob5ai#9.E.Ean.#.....#.#.#.#.#.#.#.#.#.#.#bSbS.#.#.#.#.#.#...#.#az#0.##0aGaGaC#Z#P......................ao#V#L#U........................................................#V......................avavap#V#Jap",
"bhb0b4bjaW#k.4.K.x.4#m#i#c.7.A.8bbbeblb7bhb2b0bgaTaTaT#e.4.4.y.JaSb7bh.zbfbf#n##a6bibgaW#d#d.L.G.waObdaU#c.KbkaO.4.4.G.G.1b1#gbcaU.4.4.M.x.G#fb1....bm#e#e#b.K.y#fb8aTbVbfbbaU#g.5aWaWaV#e.4.x.GaS.4.O.u.1a5aRaO.4.ua8a7aRaO.H#8a1#8a1bxbZaVaO.L.Ga7a5aQ.N.B.CaQ............bpb4ag.E#3...#.#.##8.u.1a5.#.#.#.#.a.#bnbpbwa2#7.E.E.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.2b6.#.#.#.#.#aHaLac.saK#0#K..aGbuaB#1#Paa....ayayar#M..........#J#M..................................................................................apap#T#L#W.a",
"bib0b4bVaT#e#k.y.w.4#b#c.7.A#c#lbebkbWbWbibjbiaW.4.4.4#b.z.x.z#bbVaY.z#ibXbf#m#.a5aVaVaP#e.4.I.w.waSbhaU#c.Ab0bW.G.M.uaOa6.9bkbhbb#i.w.L.waSb#.7....aXaP.1#b.xaSbV#daWbkb2bkaRaO.zaTaXaP.4.G.ybaaW#e..aOaVaOaO.O.xa8bxbxaR#8.L.IaR.Oa8b3bxaR.4.Ibrb3a5aN.O.ub5......boa3a0#7.Ea2a#.B#7.#.#.#.#.#.#.#.#.a.a.a.b.b.a#9a2ag#9.E.v#7.#.a.a.#.a.#.#.#.#.#.a.a.a.a.#.bb6.#.#.a.a.#aLaJak.ras#U#O..aGaB#1#P.qacaGaI#Z.q#0#M#M............................................auauat#T............................................#L#Laqat..",
"bhbjbibcaX#e.K.w.w#d#c.z.z.7bTbkbfbdbkbdbmbcaT#e.4.y.x.x.K.z#faZaZ.A#fbbbXbU#h#.aVaXaP.4.4.G.u.1aZaZbd#k.z.zaUbb#kbf.4bf#mbhb2b0bb#i.4.Abd#e.z#c.#b8aU.J.x.z#b.xaSb...bda8a8a9aR.O.u.4.M.x.w#daY.y.#.....4.G.L.L.LbibZbxaP.O.u.Ial.HaWa6aR.4.La8bZbyaVaO.I.u......bob4bqa0#7.Ca#.E.Ebn.#.#.#.#.a.a.a.aa8a5#8.u.a.b.b#9a#.E.B#6b7.b.b.b.a.aaB#R.a.a.a.a.a.a.a.a.abRaB#Paz#0.aad#4.ram#Q#QbY.#ac#Y#R.q#1aGbYaC#Z#O#Uayaq#W..................................auao...#aKaKao#T#T....................................................",
"aWbmaWaT#d.4.J.x.KaT#c.z.7#lbdbbbbaUbbaUaTaTaX#d.y.x#bb1aW#i#e#b.A.1b6bf#o#m#g.7.6aO.4.4.J.u.G.1b1a6#i#b.A#baU#ibUbUb8bU#hbkb2bWaU#e.7.z#i.7#bbc#nbf#h.K#a.1bVbc......bbbxb5a1aO.O.u#m.J.y#daS.ya8a8a1aQ.N.4....a5bra5aR.O.H.H.H.H.CaVaXaO.O.ua5a8aVaO.O.u.I......bobra7#7.E.Ba.#3a7a3a0#8.#.a.a.b.aa7bxa5.O.u.b.c.c.d#3.B#6bw.b.b.c.c.cbtaC#Y#P.b.b.b.b.b.b.b.abtaCazaKar#X.##Pae.#.#.#.#.#aG#R.q#1aCaGaG#Z#Q.qacbuaz#U#J.............................#avawap#V#Lavap#V#Jaq....................................................",
"aWaTaT#e.4.K.x.1#faZ.7.7.8#h.5#g#g.7#i#i.4.4.4.y.J.1aZbcbU#b.7.A.zbTbd#n#m#g.9.3#g.I.L.w.x.x.1b#b##k.8.A#bb8#c.7bfbfbfbe##bdbdbb#e.4.A.zaU#haZbW#m.6#..Ab6#cbhbc#e.w..a8bxbsa5#8.I.uaO.6bV...4aXbsb4a5aO.O.u..aRaOa1aRaO.1.u.3aO.HaN...O.L.u.GaRaRaO.1.H.1aP.#.#..a2a2a..N.v.Ea0bqb4a7aQ#7.P.b.b.c.b.aaRaO.ual.e.e.e.e.e.c.d.dbzah#5.caCaGaaaCaB#P.b.c.b.b.b.aaBaC#YaAaG#0#N#N.a.#.#.#.#.#.##Z#Y.qan.#aB#Z#X#O#Paxayaq#M#J............................auaAaAap#T#Lap#V#J#Tau..............................................awauap",
"aT#e#e.4.K.y.yaTb6aY.7.A.4aU#n#m#c.7#i.8.4.A.5.K.1aZaY#..9##.z.zaUaU..#..8.9.9.9bXbebf.G.GaPaS.y...4.7#cbc.z.7#l#m#n#n#h.8bbaU#i#c.5.z#baU#.#gbf#h.6#lbe..a5aRaO#ba6a6aRa8aRaO.O.u.IaS........a7bxbia1#8.Ia8a7a5aQ.4.4.N.I.HaZbT.........L.1aPa8#8.O.I.IaSa1...#.#a.a..N.C.Eb1a3bqbZa7#8.E.C#8.b.c.c.c.N.ual.e.f.f.e.f.e.g.gbtbvaFaDad.d#YaGbvaB#R.c.e.c.c.c.c.caa#Parar#X.taB.a.#.b.#.#.#.#..#O#1.#..#Q#Q.q#Obuaqaq#U#JaM............................atavat#V#J#T#L#T#Uax..............................................auaAaAau",
".9#b#b.y.x.z.1bTaY.7.y.z#ibb#n#j#c.A#gbf.4.4#ibcaPbUbd#..9.9.9b8bf#h.6#c...8#.#n.7.7#m#.blbb#h.z..............#o#h#l#g.9.7#b#i.4.7.z#cb0#h.6#.#..9#h.#.#a8a8a1aO.O.Ia6aR.4.I.1.I.IbaaR.A......a5a5aRaO.I.ubrb3a9aQ.O.I.L.IaSb#a5..............brbx.x.I.4a5.#.#.#.#...F.E.Fa0.#a0a3a0aQ.N.C.FaQ#6.e.e.e.f.f.f.f.f.f.h.h.f.fa2btaFbtaFab#2#2aCaH#R.qae.e.g.e.e.b.c.a#P#M#Q.t#ZaGaB#R.#.#.#.#.#.#aGaIac#Rar#0#Rar#U#S#L#Kas................................ao#V#L#LaK......................................................atavaoav",
".9#n.y.K.w#faZaY.8.z.8#lb8bW#j#h.8.6#gbf#j.8.8bga6aWaR#d#i.5#obXbd#g.6#g.5be#m#c.A#l#..6bfbkaU#c.7..........bWbUb8.9.8.8#g#n.z.4.A#fbe#h.7.6be#l.6bf#ma8b4bxaRaO.L.xbiaP.4.I.I.H.1b##..z......aQaQaN#8.ua8bxbsa9#8.N.C.O.4aObs................a1aN.P.H.#.#...#...#.#a2a..#.#.#.#aNaN.O.C.Cam.sa0.e.e.f.f.f.h.h.f.h.h.h.h.h.haEbzbuaD#5#2.rac#1#P#4#Y.r.g.gaGaC#Z.r.cbT.c.caGbvaB#Y.t.a.#.#.#aGbuaHaB#R.q#W#Qauap#J.....#..................................#T#Wax....auauao#L..............................................#V#Tao",
"#h#g.6#m#m#f#c#b.z.z#bbXbdbe#j#g.6.6#hbe#g.7bibga6aVaX.4.J.w#h#m#l.7.6bU#o.9#c.7#cbbbf#m.8bW#j.7.7#.......a6bf#o#o#n.9bbaU#i.4.zbXb2bb#g.6#gbfbfbe#j.7a8bZbxaR#8.I.IaOaO.1.x.1aOaR#g.A#l.........O.N.u.Ha1a5aRaN.O.C.HaO..a9a0.O.................N.1a4...#.#.#.#.#bobra0#7.B.#.a.H.N.C.valbZa2.e.e.f.h.h.h.h.h.h.k.h.h.k.h.h#5aDaDab#2.s#4.h#P#PaD#R#O.haGbuaGak#P.d.3bS.baGaI#R#O#P.a.b.#.#aHbubt#Z#R.q#0#K#Mao#L.#.#.......#.....................................#aAawap#T...............aauat............................#V..",
"b8.6.7bW#..7.7#b.A#ibebe#m#j#g.8.A.7#m#n.9bib0b4b.aTaP.4.J.I#g.9.9.8b2bU#n.9bfbb#fbfbfbb#..5#c.A#g#...bgbmaT#b######.9bX#k.7.5bebk#m#g.9.6#mbfb2bb#h.7a5b#aRaO.1.u.IaO.O.x.waV..bgaW#e.J.............NaOaRaQaO.O.P.ubabqbqa7a1aN.H...........#.#.#.....#.#.#.#.#.#brbvag.N#7.b.b.abg.Eala0.g.f.f.f.h.h.h.h.h.h.k.k.k.h.k.i.iaFadab#2.r#2b7.i.i#Z#R.qb5.haIaCacaI#Zad.dbR.d#Z#Z#R.qb5.a.a.a.#aGaIac#R.q.r#U.t#X#T#J...................#............................avaxap#V#L..............awaKap#L..............................",
".8.A#mbe#m.8.8#l#i....#m#h#g.8.A#cbgbmaUbhbhb0b0bjaX#d.M.I.w.4.4#.#nbfbb#.bkbkbb#k.5#o##.9.6.z.9b2#obibZbmaX.4.w##.9#h#l.A.5#ibc#m#h.8.A#lbkbWbW#m#g.7aRaRaO.1.I.FaOaR.G.Ibabibjb2aV.4.w................b7.O.L.I.u.1b3bqb4bxaQ#8.P.H.............#...#.#.#.#.#.#a2a3a0#7.Fal.a.c.caWaX.1#b.f.f.f.h.h.h.k.k.k.n.h.h.k.k.h.kbtbvah#2.s.rbw.k.k.i.i#QaB.i.i#YacaGaGar#Y.qbH.d.d#P.qan.b.b.a.a.#aBaa#R.q.qbY#K#Qas#LaM.#.......#..........at#T........................#Tao#V#Jas..............atap#T#L..............................",
".A#.#o#h#g.9.7b8......#g#g.8.7.4bjbhbhbkbkb.bjb.aV#e#d.J.x.MaX.4.wb2bl#m#g.6bW#j#k.5####.9##.8bebUbhb0b0aWaT.4.y.4b8bb#c#c..bhbc.8.8.A.8bWbebf#m#g.8.A.O.4.O.1.I.2bZ.u.uaSb#b2bibg#d.M.xaV.7........aWbbbe#g.C.IalaR.Gbrbsa7a..O.C.N.......#...#.#.#.#.#.a.#.a.a.aa.#7.E.Bb7.c.c.c.e.K#f.f.f.h.h.h.h.k.k.p.k.k.k.n.n.n.kaEbzbvaj#4aa#4bpbzah#3.s.k.k.k.kaIaGbuaLac#Q.q.3bH.g.d.c.c.b.b.d.a.a..#P.q.qaa.t#NaJ#Vaq.#.#.....#...#.#..auauav#V#J.#......................#L#Laq................#L#L#LaA..............................",
"#.bf#o#m.8.9#m....a9#8be.5.7.7bhblb4bhb0b4aWaWaVaP#d.1.x.G#daV#d.J.KbW#j#c.z#i#i.4.5#j#..6#n.9....bgbjaYaT#d.y.x#ebd#k.z#hbkb7bj#k.4#c....#j#j#i.8.A#ca5.I.L.xaPb##c.6aO#.....aTaP#b.x.M#h.8.#....b0bga8a8a6aR.L.....4a1a1aQ#8.H.Cal.....#...#.#.#.#.#.aa3a0#7.a.b.F.C.Ba4.c.c.e.e.e.f.f.f.h.h.h.h.h.k.k.k.k.n.n.n.o.o.mahaDaj#5bzaEaj#2bsaf#6.D.n.n.n.n#XaGaGaB#1#O.q.fbH.2.f.d.c.dazazar#0.#.a#Rac.##Xas.#.#az#W.#.#...........#avaAav#V#L....................................................................................",
"##.6bf#h.7.8.9..b5a5.1bU#m##bfbhb0b0bhblblaXaXaP#d.M.w.3#db6aV.M.y.z#m#c.z.7#j#c.A.5bb##.9#o.9bfbfaWaVaT#e.1.x.yaV#i.7.8bdbhblbc#k.5.5....#f.4.8.5.8bia8a5aO.O.u.J.J.6#j....bh.4.4.x.1aY#..5......a5a5aX.Ma5aP.O.x..a5aNaN#8.N.valb7.....#.#.#.#.#.b.#bqbqa0a..C.b.b.c.c.e.e.e.e.f.f.f.h.h.h.h.k.k.k.p.naFaiab#2.o.n.m.o.mab#5bzb5aJaj#2.Q#9#2.Q#9.m.l.l.kaBaB#Y#1.qambH.0.0#E.2.daDaAaMar#X.t.a.#.#.#.#.#.#aKazar#M.#...#.#......atatao#L#W....auap................................auavap#L....................................",
"##.A#m#..6#..8..a1aO.ubU.9bUb2bcbjbcbcbhbc#d#e.4.M.J.G.1bTbibga6aVaX#d.K.A#kbb.7.7b1#m.8.6.9bUb8#obf#e.4.1.w.Kb1#g..#.....bbaU#i.z.y#ibb#c..b8#o#.a8b4b0aVaO.L.u.J.L.w......aWaU#g.4.6bX.AbV....bia8a5aR.1.uaO.L.IaP..aU.N.P.u.NbZ.....#.#.#.#..a9aN.abxb3a0#7.E.N.e.c.e.e.e.f.f.f.h.h.h.h.h.k.n.na3a0a.b5aiab.D.o.o.o.o.U.Q.raFbtaE#5.D.D#6.Q.D.m.o.m.m.m.l#R#O#P#1aC.2.i.f.j.3btazaGazazaq#M.b.b.b.a.a.#azaKaK#W#K#M...#.#....aGar#V#L#T.#..aAaAap#L............................auaMaxao#L....................................",
".9.6#n.6#.be#n...L.x.1#o#nbUb2aWaUaTaUaUaT#e.K.M.G.u.1aZbibia6a6aWaT#d.J.wb0.8.3aZ#n#..6.9#obUbUbma6aVaP.L.1babe#g.6......#c#ebfbfbb#g.5#g#obUbgaVa8bxbxaXaO.I.xaO.J.w..bb#e..#b.y.5bc........a8b3b4aVaO.O.u.O.x.IaVaV.O.4.N.NaQb1.#.#.#.#.#.ab3a8aOa0boa2#7.N.Cal.e.e.e.f.f.f.f.h.h.h.k.h.k.n.nbqboa2a..Eai#6.Qae.oaDad#4.X.Xahadab#3.s#6.D.DbY.U.o.U.U.UaHaL#R#R.l.2.0.i.i.haFbuaJaraLaGar#Q#M.b.b.a.a.#arar#W#M#Nas........aAaL#Z#Q#V.#..avaxat#V#Jao..........................avaxap#V#Jap..................................",
".6##.9.6bXbU.#....bfbU#o#obU#oaTaT#e#e#i#f#c.7.y.M.1#eaPbhb4b0b.aWaPaO.L.x.4b8#n#n##.6.9b6bX#obibia6aVaP.4.ubUbf#c.A......#h#gbWbU#m#h.6.8#nbhbjaWa5a6aR.4.N.x.IaX.4a8a5aR.G.z..#k....a5aR.O..a8bxbxa5aO.L.CaO.IbT.M.4bxbx#d#daT.....#.#a5#8a1a7aR.N.Ca0#8.N.valaV.f.f.e.f.f.h.h.h.h.h.h.k.n.n.nbyb3a0a..E.C.D.D.DaHbtah#4.r.W#5#5#2.D#2aJ#3a2.X.X.U.U.U.UaBak.qae.m.0.k.k.k.iahajabaAaGas#0#K#S.d.b.b.b.a.a#U#M#Man.#.....#..aIas#Y.t#1......atao#L#W.a..........................apap#V#L#W....................................",
"#n#####n#h......bUbUb2#n#.#o#n##.4#b.z.1.4.z.A.K#ibVb0bhbxb4b2bgaTaP.4.y.x#a#o#n#..6.6#m#o#hbibZb4b.aVaO.M.x.4#g.6bV..bhaW#ebfbXbW#j.8.A#h#ob0b0aTaRaXaO.4.x.1bTa5bibia5aO.O.uaU..a8a8a7aRaO.ua5a5aRaO.O.x.IaSa5a5.w.4bia6aO.x.O...#..b4a5.O.uaQbqa0#8.N.N.B.CbZ.f.f.f.f.h.h.h.k.k.h.k.n.n.n.oa3bra3a.#7.C.E.DbY.Bbtbtaj#2.Q#y.W.D.D#6aJ#v.W.W.W.W.U.V.U.U.U#Pan.S.U.UaGaGac#P.k#2.Qarar#0#N.t#Z.3.daB#Z.b.a.##U#0ar#Q.#.#.#.##Z#0#S#QaB.#...##T#L#Uax..............................#T#Laqax....................................",
"#obU#o#o##.9#o##bUbUbU#n###h##.9.6.K.1.KaT#b.4#c#ibhbxbibjbxblbgaX.4.M.w.x#dbUbfbU#o#h.6bf#jbibxbxbjaX#d.J.w.4.5#l..bjbjbd#j#i.K#m#g.6.6#naWbiaV#e.K.4.L.I.1aSb#a8b3b5a5aO.H.u....a8b4a8aO.O.IaRaRaO.1.H.1bTaV.O.C.Lb7aRaVaO.1ba.#.#a5a8aN.4.ubqbya0#7.E.g.L.f.f.f.f.g.hbnag#9.E.p.n.n.n.o.ma3boa2a..F.F.Cal.D.DbwaDad#4.r.D#v#y#y#v#v#y.W.W.W.W.W.V.U.U.U.U.U.U.U.S.laHbtac#P#R.i#5.i#U#M#O#N.h.0aGaH#Z#O.b.bazaKas#0#O.#.#....#Q#Nas...................................................#....................................b6",
"bUbXbU#o##.9###n####bU#nblb8.9.9###n.8b2bUbUbfbf#mbhbja6bib.aWaX#d.4.G.x.JaSa6a5aX#e.Lblbd#ma6bib.aT#d.M.x.waP#n..bhblbdbdbb#i.5.5.8.6bT#n#.aT#e#a.xaT.I.GaOaRaZa6bia6aQ.4.I.uaRaTa8a8a5#8.L.uaO.O.L.I.uala5aO.O.CaZ.Oa8a5aR.O.u.#.aaQaQ.N.uboa0aN.F.E.Ca..f.h.f.h.f.gbrbsa0#9.C.n.o.o.o.o.Sbrb3a2a..N.Bala1.Qbnbnaia#.Q.Db5#y#y#y#v#y#y.W.W.Y.W.W.W.V.W.V.U.V.T.U.SaCaHaBak.q#1.k.k.i.i#X#0.j.f.daHaH#Y.q.b.baGaGas#N#O.b.#...#.#.......#.#...................................................................................2",
"bUb6#o#o##.9####.9.9#obU#o#n.9#c.6#gbVbf#nbWb2be#maWaWaWaWaVaTaP#d.J.x.w.1aWbiaVaXaO.O.ubX#jaVaVaXaO.1.x.1.1aV#n#obhbkb7bVaU#e.7#b.A#l#i##.9.4.4.x.1bV.6#m....biaRaRaP.4.G.u.ObVa6a5aRaO.L.u.HaV.I.I.IaOaVa5#8.H.uaObrb4a4aO.O.u.#.a.b.N.ubybxa1#8.N.H.E.f.f.h.h.h.hbobybsag#7.E.E.o.o.o.obobvbsa2#7.E.Ca3.Dafbtb3aga#.Eae#z#z#A#y#y#vaFab.V.W.W.V.W.V.V.V.V.V.T.T.S.Uac#1#P#4aCaG#Z#O.i.j.i.j.f.hac#Y#O#1#E#Earar#X.t#XbQbM.#...#.#.#.#...#.............#.#....................................................auauat#V....bR.2",
"#o#o#o##.9.6####.6##bUb8#o##.9.9.6aZ#o#hbfb2bXbe#haTaTaXaTaTaP.4.M.w.y#bb1aVbZaVaP.4.L.u.O#f.5aPaO.1.G.w.1b1bmbfbfbdblbUbk#i#b.z.7#nbb#g.z.6bdbb#j#c.6.6#n..bfb2b0aO.4.L.Ibia6aVaPaOaO.O.I.IbT.u.1aW#ea1aRaO.L.v.Ia7bsbxbi#8.G.uaO.a.b.ca9bybyaR.O.C.Nb5.h.h.h.h.ha7a7a1aN.P.E.va..o.o.X.Xa0a2ama..N.v.F.B#Ba2bpa2af#3.B#6#A#A#y#y#ybnaEaf#4.r.W.W.V.V.V.V.U.U.T.U.T.S.r#P#4aJaGbtas#R#O.k.j.j.h.g#Q#O#PaC.e.3.2#X.t#X.#bMbF.#.#...#.......#...#..............................................................auayaKat#V#J...3b6",
"#o#n##.9.3#n#o.9#.#nbXbX#n##.9.9#obUbX#obfbfbe#l#g.7.1.1#d#e.4.J.1.1.MbTbVb0bZaVaP.4.G.x.O.7.z.J.4.w.x.1b#aW.8b2be#hbdbb#j#c.K.z#kbk#g#b.6blb2be#j#c.AbXbf#obmbiaW.I.N.ubhb4a6aT#e.K.L.I.1ba.x.Lb7#iaWaT#e.N.H.Ib4..a5aRaO.O.u.L.#.b.c.ca1a7aQ#8.1.ual.h.h.h.h.h.hb3bxaR#8.P.C#6a0.o.o#v#vaga.#8.E.B.Nb7babDbDaiaf#6.B.D.B#A#A#z#Abzbrbpaf.E.D.V.W.U.V.U.V.V.U.U.T.T.U.S.S.S.SaGaC#X#P#R.laq#U.i.j.i.f.h.fayaq#J.0#EbH.#.#.#.#.#.#.#.#.#.#.#...........#........................at#T........................auaKaxav#V#L#LbRbR..",
".9##.9.9.9bX.9.9bU#o#o#o##.9.6#lbUbU#obU#n#n#m#g.9.6#..w.K.M.4.y.walaZb#bib#a6aPaO.L.x.x#d.z#lbV#h.4.1#fbe#m.8.8#n#.aU#i#k.7.A#fb8#j#c.Abkblb2bc#i#b.7#ib8beaWaPaP.4.ubhbjb5bgaP.4.y#a.I.IaO.1ba.4bgbgaU#e.y.La7..a8aQa0#8.I.Nb1.b.c.b.eaQaN#8.O.vala4.h.k.k.h.ia7bxbZaQ#8.u.HbY.X#v#v#v#A#v.N.N.B.Cba#6bDbD#Ba##3.D.DbY#2bA#A#z#zbpbvbo#9.E.B.W.W.W.V.V.V.T.V.T.S.S.T.T.S.S.Sar#Z#1.qaBaKay#W#M.i.i.j.faGaLaq#K.d.dazar#W.3.b.a.a.#.#.#...#.................................#aAawao#T......................auawapao#T#LbY.3b6..",
"#m#g#.###n##.9#n#o#o#n#nbdbd#m#k#o#o##bUbU#h#g.9.7.8b6.8.6.8#h.4.4#eaWaVa5aRaR.4.O.G.u.LaV#k#..Abb.9bfbfbf#h.z.8##.9.8#c.5.z.7bX#h#c.A#fbdbfbf#j#c.5.7bbbWbga6aP.4.x.1bmbibgaT#d.K.w#f.u#daSaU#cbhb7bjaV#e.J.K#d..bqa3a1aQ.N.C.a.c.c.e.f.f.L.H.u.FbZ.i.h.h.k.k.ka9a9aQ.O.N.u.1.X.X#v#v#v#v#B#B#B.Nam#B#B#BbDbDbA.D#3af#3bA#A#z#A#za2aia..E.B#6.Y.V.V.U.U.T.V.T.U.T.T.S.T.S.R.S#Q#O.qaeaxayaq#M#X.k.j.j.iayaq#U#K.daybuar#U#Mba.3.a.a.#.#.#.........#..........................avao#Tao......................atat#L#T#JasbRbS....",
"#m#g.6#n####.9.9bSbU#.bfbfbe#m#k.7.z#i.4aU#c.8.6#gbT#h.9.9.7#.bl.5#cbfaXaXaP.4.O.I.x.1bTaW.8.8bTbfbe#o#n#h.8.6#l.6.9bV.z#b#b#f#c.z#l....bbbb#j#k.9.5#ibbbhb7a6aP.4.xbVaTaWaXaP.4.x.JaT.Ib1.....5biblbjaP#a.w#baZbobyb0a1aQ.N.C.N.c.e.f.e.f.f.h.Na0.p.h.k.k.k.p.kaQaQ#8.N.u.1aRa2aga#.F#B#B#BbD#BbIbDbDbDbDbDbCbCbDaJahbAbA#zbA#z#z#9#9#3.B#6bs.W.W.V.V.V.V.V.U.S.U.T.S.SbObM.S.RbObOayax#0#U#KazaIac.k.j#U#L#MaM#UaxaA#U#M#XawaAaq#U.a.a.#.#...#.#.#.#........................#V#L#L.#......................#T#V#L#LaKb8.3.#....",
"#l.8.5#gbU#..9#n#o#lblb2b2#o#j#g.7.6aT#k.y#k.5#.b8#o##.6.9.5#nbe#m#gb2bX.4aO.1.G.G.Ibab1.9bfbb#gb2#n#h#h.8.z#.bU#gaU..........bmbga6aR.4.G#k#c.7.A#fb8.Kbibjbj#dbc#i#b#j#e#e.4.x.waZaWaV........a6aWaT#d.w.AaZ..a7bybya1a..N.C.N.e.e.ea6aV.4.ha9aN.i.ka2a..j.na0a0.O.N.C.Pb#bvbyai#7.B.E#B#BbDbDbDbDbDbDbCbEbDbCbCb3aj.DbAbA#zaFaDad.D.Eala3.Y.Y.V.Y.V.V.V.T.U.T.T.S.S.RbObF.R.S.SawaMaz#0.t.laGbuas#Q.n.jayaGaz#Maq#W#M.t#ZayaKaq#T#M.2.a.#.#...#...#.............#............ao..............................#V....#Eb6......",
"#c.9.AaU#obU#o#n#..9blb2bWbmaU#k.4.5#j.4.z.4.K.5#n#h.9bfbfbf#m.8#gbUb2bX#m.G.O.u.1aSbxa6.6#h#m#c.6#g.8.8.6#g#obb#k.7..#o##....bib0a6aX.4.J.G.7.z#fbV#e.za6aVbkbhbcaU#e.A.7.y.x.xaTaW............aPaP#d.K.w#ab1..boa9a7a9aQ#8.Cal.e.e.fb4aV.MbrbxaOboboa3aN.P.Fa3a0#9.B.NaQbobsbqag.E.B#9#BbIbIboam#3bEbDbDbCbCbDaEai#3.QbA#zaFb3aFab#2#PbA.Y.W.Y.Y.ZbM.V.V.V.U.T.T.S.S.TbFbC.S.S.RazaAaz#U.t.RazaG#X#Oac.l.kaq#U#N.f#L.t#Xaxataq#T#Jaq.2bRbR.a.#.#.#.....#..........................................................b6.2........",
".8.A.9bebUbXbU#l.9.9bfbhbhbgaU#e.4.y#jaU#i.4.z#bbb#jbfb2bU#n#h.8.6bfbfbb#hbdbd.4.4aX.7#o#.be.7.7.6.8.7b1.8blbW#j#cbhbcaU.4bda8b0b0biaR.4.w.LbmbhbjaT#b.waPaPblb7bc#i#b.y.4b6..aX.9be...............4.y.x#fbV.#b2bra8bra1aR.O.P.N.f.fa6a8boa3a0#8aObob3bq#9.E.Fb3a0#7.C#v#va2a2a.a#.B.EalbDbDbDb5ag.Ebzbta2#9.EbDbA#3.sbw#z#zaFbzaD#4.r#2.W.W.W.V.WbObOaGaBaa.S.T.T.S.R.T.R.R.T.T.Razaq#0.tan.lar#0#N#Q.l.l.n#S#Mas.i.i.f.j.d#W#W#J#LaA.b.b.2bRbH.#.#.#.#.#...........................................................2b6........",
".6.8b2.6#o#o#n##.6bWbhbxb4bgaUaP#b.y.4aWaT#c.z#ibb#ibUb2bW#m#g.6.6#n#n#h#gbkb0bc#i#c.5.z##.9.A.A#l.5be#n.6bbaU#kbhaWaTaU.4.Aa6bib.aSaO.1.x.1.7aWaT#e.y.KaTbdbkblbh#e.7.w#k.............................4....bfbfbrb4b3a1aO.N.H.I.g.hbhbqboa3aN#7.C.Ea2a.#7.v#7a3#7.F.C#v#A#9#9a#.E.Eb1bDbIbEa2ama#.Bbpb3ai#5.E#2#z#z#A#y#y#yahad#5#2.Dam.V.V.V.V.VbMaHaHaCac#P.SaEah#5.S.R.R.R.R.R.R#U#K#X.R.l.R#Q#Qar.l.l.l.k.l.k.j.i.g.h.d.f#M#Xaz.c.d.b.b.a.2bRbR.#.#.#.#......................................................bS#E....at#V..",
".8be#h.6#g#h##.6blb2bhblb2bgaT#e.7.y.4aW#i.4.y.4bb#kbfbf#n##.8.6.8#o#h#.bkbWb2bcaU.4.7.7##.9.z#iblblbf#m.8.6#cbhbjbmaT.4aWaR.4aXaP#e.M.x.waS#c.7.4.y.wbV#.aUbcbbaP#b.w.zaZ.8................................bWa9brbsa8a4#8.N.C.Na7a1bobxb5a7aN#7.C.Ea.#7.B.1b7a..P.CbTa0.Pa2.B.E.Ca4a#.BbIbEbIa#.Ebzbpboaja#.B#3bA#z#y#z#z#y#2#4#2#2am.V.V.V.U.T.UaCaHbuaCak#P#Rbvah#5.Q.T.R.R.R.R.R.R.R.R.R.j.R.R.R.R.j.l.l.l.l.k.k.j.i.i.h.d.d.g.g.d.c.c.c.c.b.a.2bHbR...#.....#.#..............................................#Eb6..aAav#V#J",
"bhbcaU#i.7.9.9#gbebfbhblbjbm#e#c.y.w#e#i#c.5.y#b#k#b#n#n#m#..6.8#l#n.5.8bhblbkbc#k.7.z.K##.9##aUblbmaWaT#e.6.5bhb2bcbibia6aVaO.4.x.O.G.Gbaa5.7.7.w.yaZ.6#obfaT#i#c.J.zbTbb#g.8#h.6..........................bb#ia9a4aQ#8.O.C.ualb0a9a9bqbqa4#8.F.B.F.F.B.FbY.X.N.Balbra0.E.B#7bobvag#7.BbIbEbIbJ#3aiaiaf#5.D.Dan#A#A#z#z#y#z#y.Z.r#5.W.W.W.V.VbGaHaHaCaBaa#2.qaebtaj#3.Q.T.R.R.R.R.R.R.R.R.R.j.R.R.j.l.R.l.l.l.l.l.l.k.i.i.j.j.i.g.f.g.d.d.c.c.b.b.a.a.2bRbR.#.#.#.....#........................................bRbR..auaxav#V#J",
"bjbhaUaT#b.x#b..#n#mbcbmaTaP.4.5.A.1aZaU#c.5.w#i.4bmbmaT#e.K.7bTbk#n#..6bdbcaU#k#c.5.z#faU.9#nbdbjbhaWaT.4.5.Jbjbhbmbxb7a6aX#d.L.w.L.1bab#.8.A#gbX.8#.#.##bi.4#c.y.y#fbd#h.8.8#h.9.........................#.7.5a1aQ#8.N.P.u.1a4bxa5a0a0a0a..N.E.Bal.o.o.X.X#v#va3bqbq#9bpbnagbnag#7.D.BambJbEbEb7#5#9#6.D.Balbs#A#z#A#A#z#y.ZbMbJ.W.W.V.W.V.VaGaLaLaaaa#P.r#1aHaj#5.Q.D.RaGaLac.q.j.R.R.R.R.R.R.R.l.R.l.j.R.l.l.l.l.k.l.k.i.h.h.h.g.d.g.d.d.d.c.c.b.a.a.aalbabR.3...............................................3.#..apap#V#Jaq",
"b8bgaT#k.4.y#b..#o#caUaT#i.4.5.x.KaZaY#i#c.z.7bmbibVbmaU#e.1.xbfbU#h.8.6aUaU#i#g.7.A#caZ.9b9bdbib4b0aWaT#c.J.yaWaTbibxbZbiaP.O.I.xaPaOb##c.z#cb8##.6#o##.9bjb4aV.4#eaW#d.8.A#l.9.6......bd#k...............#...#.P.O.O.C.H.Nb1a4aRaOa.aN#8#7.C.Falb7.o.X#v#v#v#v#Aa0boa0.Ebv#9a.#9.E.BbabEbJbIbIbc#c.Q.E.B#9bwbzaEag#3#z#y#y.YbJbDbJ.V.V.V.U.UaIaCac#R.r.qaead#5#3.D.Db5bAaGaL#Y#O.l.R.R.R.R.R.R.R.j.l.R.R.R.R.l.l.l.l.k.k.i.i.h.g.g.h.f.g.d.d.c.c.b.b.a.a.a.#.3bHbR.2........................................bRbSap#V..#T#Jaq..",
"b0bh#i#e.z.A.4aUaT.4b8#e#c.K.A.y#bb1bm#k#b.5.4biblb4bcaX#e.4.Jbe#j#..6.Abe#k.8.5.A.zbTbb#obXbbbhb0b0aW#e.4.y.y#e#eaWbia6aP.4.1.x.MaW.8.8.A.9bV#..9#.#o##bmbia8a6aRaO.waP.z#l.6.9b6....b0be#k#b.........#.#.#.#.#.a.x.H.CaOa7bXaN#8.N.u.E#7.E.C.NbT#m.o#v#v#v#v#AbBbybrag#7.B#7.B.E.BambIbIbJbJbI.4.AbVbA#A#zbpbybnag#5.B#y.Y.W.W.U.V.V.V.U.Ta9#8#Y#P#O#PaI.B.S.l#2#2ae#O.Zac#Z.r#PbFbCbMbFbB.R.R.R.R.R.l.R.R.R.l.l.l.n.l.k.j.j.i.h.f.h.f.g.g.g.d.c.c.d.b.a.a.#.#.#.##EbSbR.#..................................auaAat#V#L........",
"aUaT#c.4.xbhbhbcaU#k.5bh.J.A.A#bbcbm.w.4bgbmaVaP.1b0aYaT.4.K.J#e#g.9.6bU#obf.5.A.KaZaY#gbUbdbebmbmaW#e#d.K.x#baW.K.AaVaPaP.O.x.1aS.9.9be#g#gbgbdbb#g..bf#obib4a6aP#d.I.O#l.8#.#h....aU.7#j.7#f.............#.#.a.b.c.c.e#c#n.h.i.I.uaSa5bf.N#7a0.z.X#v#v#v#v#B#Bbobvbsa..E.E.E.Fb7bIbIbIbIbJbEbDbDbDbA#AbA#Abpb3bpaf#3.D#3.V.WbNbE.V.V.V.Vbobr#8aL#R#1#R.q.D.R.R#S#Q#OaGbQ#P#O.qaMbB.ZbF#zbC.R.R.R.R.R.l.l.l.R.l.l.l.l.l.l.k.k.j.i.i.h.g.h.g.g.g.e.d.b.b.b.a.a.#.#.#...b.2bSbS.#............................bRauaAax#V#L........",
"aU#i.4.AbhbxbhbcaU#k.4.xbWb0#eaT.4.J.wbibga6aVaP#d.IaT#e.z.w.1aP.9.z#lbUbUbU#n#g.6##....bWb2beaWaVaT#e.4.x.waX.6b6.6#c#d.M.L.wbab.aWaT.4bf#jblbWbe#k.7b8a8bxbybjaP.O.I.O#h.6......bWbcbf#m.6bd.............#.#.a.c.e.e.f.f.h.h.k.k.n.n.nb2bW#k.zbX.Xa0a.#A#B#BbDa0a2a.#7.C#7.BambJbIbIbJbEbEa3.N#BbD#BbDbCamaibnah#6.E.D#9bNbJbJbF.V.U.UbMboaN.PaCaB#Y.q.r.EbA.l.l.l.jbAbMbC.l.jaHac#z.R.R.R.R.t.Rawaq#M.R.l.R.R.R.R.l.l.m.l.k.k.i.i.h.h.j.h.g.g.e.c.c.c.b.b.b.#.#...#.#....#EbSbS.#......................b6aSatat#V#Jaq........",
".4#c.K.zbhb4b2bcaU.4.z.z#caYaT.4.4.xbib4b0a6aVaP.4.w.L.4.x.A#faTaWaT.4bUb8bW#m#g.7###.bkbWb0bd#e#e#e.5.w.yaZb6#n##.9bU.G.G.1aSb#aVaX.4.M.Jblb2bW#j#g.7#caVa6a6aR.O.G.uaS.8.7....bkbkbXbX#j.7#h...#.....#.#.#.a.b.c.e.f.f.h.h.haSaR.I.n.pbd#j.7.z#vbqa7aQ#7.EbDbIbD#9.E.E.Fa4bIbJbEbEbpbnag#3a1.N#BbAbBbA#AbJaiafa##3.s.DafbNbCbMbMbFbJaCaHaCak.P#Zak#P#PbubYbM.lahajbFbMbC.Z.jaHaLaa.r.R.R.t.R.RawaMax#U.R.R.R.R.l.l.R.l.l.l.l.k.k.i.i.i.h.h.f.h.g.d.d.c.a.b.b.#.a.#.#.#.#...#...2bRbT....................#Eb6..#T#J#T..........",
".4.A.x#fbhblbkbcbgbmaU#i.KaX#e.4.x.wbhb4b0bmaX.4.M.I.LaR.x#bb8bgaWaT#b.xbfbe#g.8.9#h##bTbfbb#j#c#b#a.x.y#fbVbf##.9.9bU#mbha6bibia6aR.4.x.Jbebfbb#k.7.z#laVaVaP.4.I.uaSaV.6bX....aU#jbU#na8a5aO.O.f#o#n.9.#.a.a.c.e.e.f.ha7a1#8bxaR.O.Ibm#ka3aN.Nbqb3bra..F.CbDbEbIbI.F#7ambJbEbIbDbnbybsag#3.E.vbAbNbNbMbNbN#5#5.E.B.Bb1bNbJbMbCbEbJbBbtbtadaa.rbC#P.raDa2.S.RbzaEaj#2bF#zbGbBadaa.ram.RaqbBbA.Raxaq#W#Jar.l.l.R.R.l.R.R.R.m.l.l.j.j.j.i.h.g.g.g.g.d.d.b.d.#.b.a.#.a.#.a.#.#.....#...2bRbS.#............bSbT..avat..............",
"#h.4.4#ibcbcbjbhbhbmaT#e.y.y.4.y.xa6bgbjbib.aO#d.J.x.MaP.1b#bcb0aWaP.4.1.4#h#..6.6#n#o#jbb#j#k.7.A#g.1#aaT#nbmbgaWaP.Mbib7bib5b4a5aP.M.w.4#j#j#l.8.A#gbb.6.4.4.L.I.3bZ.8#hbb.8bb#j.5#ma8b0a5aO.N.wbU#n.6.a.b.c.c.e.fbgbrbxa1#8.CaR.N.Ibqa3a3aN#8.Ca9aN#7.C.NbIbDbIbU#n.9bJbDbDbDbDa2bpa2a#.B.DbabDbNbEbEbFa6a5.D.B.Ba4bNbNbEbJbCbIbKaHbtbtad#4.r#4bPbMbBbBbMbzbvbt#5.D#3bFbCbBbP#PaabBaLar#QbC.Z#U#V#L#T.l.R.l.R.R.laq.R.l.R.l.l.l.k.j.i.h.g.j.g.f.d.d.d.d.a.b.a.#.#auauap#T.#.#.#.#.#.#.2bRbS...........2..auaKatao#L..........",
"bXb0bVbbaWaTbhb7bZaZ#i#e.K.z.y.x.1aZa6aWaVaP.4.M.x.x.1aVaZbjblb0aX#e.J.w#a.8.6.8b8#o.9bU#g#c.7.4.7bV###h.8#gblbjaWaP.4.wbVa6bxb.a6aO.G.xaP.8#c.8.z#cbX.w#f.L.x.L.MaSa6bfbebhbhbdaU.4.AbibxaR.1.L.O#n.9.9.b.b.c.e.ebia7bxbyaQ.N.uaQ.ualbqb5a4a..N.Ba.#7.C.Fb8bIbEbXbU##.9bEbDbD#BbDagaga..E.BalbCbh#ebJ#Abib5a5.O.LbNai#3bJbCbEbAbQ#FaDaCad#4#P.qanbEaGaHaB#RaEaEae#2.s#5bEbA.ZbFbF.jarar#X.tbB.RbB#z#W.R.Saq.l.R.laKax#U.SawaAap#J.k.j.i.i.i.h.f.g.g.d.d.c.b.b.a.a.#axayap#Lao.........#...#aSbRbSataobSbS..auawap#T#T..........",
"bkb2b2bb#kbhbxblbWaU#e.4.y.z#e.4#eaYaVaXaP.4.M.G.x#faZaT#cbmbmaW#eaW.y.yaS.9#.#lbT##.8bU#m.7.5#cbebe.9.8#gbgb0b0aVaP.K.waWaVa5aX#e.M.x.waV....aW#c#d.x.1aWb2aT.OaO......bdbhb7bdaU.4.AbmaWaP.I.xaR.9#h.a.b.b.e.f.fa6aRa9aR#8.I.FaR.O.1a7bqa3#8.E.CaN.C.EbabDbIbI#o#o##.9bDbD#B#B#B#B#3.E.B.NbJbhbc#b.1#ya8a8aO.L.Obpa2#9bK#AbEbEbK#Bacabaa#P.sanaebJaLbuac#R#5ab#2.Q#6aEbBbMbB.ZbFbB.jaI#Xbtazazaq#M.RauaKax#V#Latax#V#Jaqawax#V#J.l.l.j.j.i.h.h.g.d.g.d.b.b.b.b.a.aavap#V#J.#.#...............#auaxap#T....atap#W#Jaq..........",
"bdbkbe#k#cbmbgbcaU#e#b.z.x#baZ#n#h#g.4aP#d.M.G.w.1bTbi#e.4aUaT#ebibmaV#e.4.Jbf#m.9.9bUbU#n#.bmbmaT.5.9#h#.bmbiaY#e#e.w.1aTaPaRaO.4.x.1bTa6.....4.4.K.yb1bhaW.4.y.yaU..bhb2bhbkbc#k.5bia8aWaP.4.xb4...#.a.b.c.eaRaR.4aP#8.O.H.Hb1.1.o#va1aQa..E.v.Na7a9aQ.O.HbIbIbD#.##bK#B#A#A#A#B#BbObN#7bCbC#f#e.zbc.WaRaR.1.HaSbna..DalbIbCbMbEbJbF#2#P.s#4aJbKbIaGaB#R.qae.r#2#9btbBaGaI#0#zbB.ZaGaz#UayaKaAaq#X.tawayao#M#W.R#V#M#T.RaoazaraB.l.k.k.i.i.h.j.h.f.g.d.c.c.a.b.b.a.##T#LaA.#...#...#...#....auaAayao#L#V....#T#Jaq............",
"bb#m#j#c.5.yaWaT#i#d.z.A#a#faUbdbb#i.8.M.4.x.u.1aSb..A.4.K#b#ebibib.aV#e.4.xbf#m.9.9b8bU#nbhbjaY#i.4.x#nbiaWaTaT.4.A.wa6aWaP.4.4.u.Iala5bmaT#e.z.K.KaS#baX#e.4.zbT#obUbdbhbbaU#i.7bib4b0aT#e.M.wbcaU#e.a.ca8a8a5aRaN.G.I.N.Pba.o.o#v#v.N#8.P.F.Nbrbxa9aQ.O.HbIbEbDbIbD#B#B#B#AbNbNbDbNbIbJbNbJbAbPboa0.NbJ.O.uaSbM#6.E.EbEbCbFbCbPbMbBbM.Z#4bAbAbI#D#Zak.q#2#4.YbB#AbFaGbYaI#X#ObBaCadazaraAaGaG#0#Q#Kaqap#W#Jax.m.l#V.l.RaAazar#X.t.l.j.k.i.i.g.d.h.g.g.c.d.a.b.b.a.#.a.#.#.#.#.....#........avaxap#V#Jao......................",
"bW#i#f.8.5#b#f#e#e.4.y.zaTb8bkbdbb#j.4bjb7.M.JaOaV.y.w#b.1aUbib0b4b.aTaP.J.w.4#h.9.9bU#o#hb0b2bm#e.K.y#.bh.4#e.4.J.ybia8aWaX#d.x.M.4bjb0bcaT.4.w#i#c.z#i.J.y.x#fbU..#oaUaT#f#f.5.5bgbjbjaX#d.G.yaTaU#d.ybfa8b3a6aRaO.N.I#na9aQ#8#p#v#v#v.E.F.Na4bxb3bqaQ.O.C.NbIbE#BbA#A#A#A#BbJbNbDbJbJbPbJbJ#AbJbqa..CalbNbEbKbIbJbNbJbBbIbJbKbDbCbMbCbJbE#FbJ#AbCbG#R#4abbE.WbBbGbFaIaG#Z#QaHaHaFac#R#Pazazaq#U#K#NaIar#Jaz.S.R.Z.R.RazaMaLar#X#K#W.k.k.j.i.i.h.d.d.g.d.d.b.b.a.b.a.a.#.#.#...#.#.#........aoao#V#J#W.#......................",
".wbd.7.z#fbV#c#b.7.A.z#cbXb2b2beaU#gbhblbmaVaX.4.4.y.y#e#n#ibgbjbhbi#e.4.G.x.4.8.6#g#obfbmbhaWbdbb#i.7aTaW#eaWaX.xbib4b0aWaP.4.G.Mbgblb0bj#e#b.y#e.A.z.#..bU#n.6....#n###c.A.7.5a6a6aWaT#d.1.x.1bWaT#c.ya8bxbZb#aP.4.P.La8a0a.aN.I#v#v#v#B#Bbja1a7a7a0.O.N.CalbD#B#A#A#v#A#B#B#BbJbIbJbDbJbJbD#zbPa..E.EbIbJbIbK#BbJbJbDbIbJbMbJ#BbJbFbDbD#BbL#BbBbKbKbP#ybJbDbGbD#y#z#Z#Z#X.taHbuaLaa#P.rar#0#U#K#ObYaLaB#X#O.RbC.Z.R.RazaGaz#0#M#K#0#M.l.i.i.f.h.g.g.g.d.d.c.d.d.a.c.a.a.a.#.#...#.........#..#L#L#W..........................",
".A#j#c.K.z#i#g.6.7.7#kaPbkb2b2beaU#kbibibiaWaX.4.J.w.zaT#.##aWa6aVaP.4.M.x.waT.6#.b8blbgbmaT#e.5bb#k.8.5aPaPaP.4.4bib0bZaVaO.L.w.MaWbhbcaT.4.J.waT.yb2.5bfbX#h.7......b7bb#gbibibgaPaX#e.M.x.1b1aT#c.z.xa7a8a5aRaO.N.ubqboa2ag#7.B.H#v#B#B#BaU#ea1aQ#8.1.v.FbabC#AbNbJ#A#AbDbDbDbJbEbDbEbDbNbN#vbJbzah#5bDbN.WaE#6bIbDbIbJbJbK#BbDbD#AbDbDbG#C#CbCbDbJbD#zbQbK#B#y.YbGbO#O.qaeaCaDac#P.q#4.W#Q#K#NaCaGaHar#Q#O.R.Z.Z.S.Rarar#0#U.t#N#L#J.k.j.i.h.h.g.g.g.g.c.c.c.bauat#T.#.a.#.#.#...#.#........b8.2............................",
".x.K.8.A#fbebb.5bcaU#e#cbdblbkaU#g.4bjbVbja6aT.4.K.w#aaU#k.5aVaXaP#d.1.x.1aZaV.7bVbbbhbhbmaU#e.K.w#k.5.6bf.K.J.4.Ma6bmaVaO.4.G.x#e.4aVaT#e.K.y#eaW.K#c.5bia6aX.4#b..bdbf#ga8bib7bjaX.4.K.x.Jb#bm#e.4.yaZaRaRaRaO.O.ubobybZa0a.#7.C.F#A#BbIbIbIbD#8#8.N.H.FbTbD#AbNbNbDbI#B#BbDbDbDbDbDbNbNbIbIbJbzb3ai#5.DbPbpbp#9.BbKbIbMbKbK#AbL#BbIbG#C#BaB#R#ybBbDbC#BbP#CaGaCac#QbObGbB#Aacaa#4.r#Pb4#AbB.Z#0#0as#Z#R.t#1.S.S.R.R.R#0#0#Q#S#NbY#J#T.l.k.i.j.h.f.g.g.d.e.d.b.caAaw#V#T.a.a.#.#.....#.#.....#bS.#............................",
".x#a.8.7bXbbbbbhbhaWaT.4bdbb#j#j#cbibhb4bVaVaP.4.z.x.4aY.7.zaZaP.4.4.J.G#db1#m#g.7bib0b4bgaV#d.y.w#c.z.7#j#m#g#dbcaVaRaP#d.L.x.1aZaVaP#e.K.K.1b1.x#f.za8a5aRaO.L.x#b#o#..7bgbibia6aP.O.x.MaP.##b.5.w#bbc.eaO.O.O.I.Hbobybva4a..E.C#7#m.8#BbIbIbDa5.H.I.IbabD#B#A#AbJbMbJ#BbNbNbDbDbDbDbMbIbObMbKaFbnaf#6.QbDbnal.E.EbI#B#BbD#BbGbDad#2bKaCbtaBak.qbGbD#B#A#BaGbYaC#Z#Q#ObDaFaHaF#P.q.ran#SbCbC#z#z#K#Y#Q#O#Raz.RbB.Z#z.ZaG.t#S#QaC.t#U#J.n.k.j.i.j.h.g.g.d.e.d.c.bavao#Lax.a.a.#.#.#.#.#.....#b8#E..............................",
".y#eaWaZbdbdbhb0bjaWaT#caUaT#i#cbkbibjblbjaW#e.4.J.w#e#h#g.zbRaU.M.J.waSb.bf#m#g.6bhbjbxbm#e#b.w.yaP.A#fbf#j#..5#jaOaP#d.1.I.LbVaVa6aX.4.x#faU.z#bbkbia8a6aRaO.N.xaO#o#h.6aWaWaVaP#d.x.GaZ.#.#.#.a#e.e.ga7bx.N.I.Lbaa3a3a0a.#7.C.Bal#m.7#m#BbIbJal#8.H.ObDboboa0#7.vbCbJbNbNbEbJbEbNbJbA#AbQbJbDahab#3.s#6bNa#.E.DaEbIbKaLaF#4aHaHaD#4.saGaGaBak#P#x#B#v#x#CaGaGaC#Y.q#ObGaHbYaLae.r#2#Q#Xazar#QbObMbFbB#XbB.SbB.Z#z.Z.T#Z#X#OaIayaz#U#K.n.l.j.i.f.h.d.d.g.d.c.d.c#T#J#W.a.#.a.#.#.......#.#.#bS.#..............................",
".1aT#nblbdbhb0b4bVaUaP.4.J#c#.bhb0aWbgb.aV.4.4.1.x.JaT#m#.#hb2bhbcaW#i#bbgbmaW#e.JbcbgaVaP.4.1.w.1aZ#cb8#m#g.z.8#m.z.M.M.u.1aZa6b4aWaP.4.x#h.1.4aU#hbxb4a6aRaO.I.HaS#n#..9bgaPaP#d.I.wbTaW.#.#.a.b.c.e.fa1a5aQ#8aO.Ca0aga.#7.F.B.Ea1#..8bDbDbIbIbIbJ.1bD#Bbrb5a0#7.Ca2a.bJbDbJbIbnai#6bNbNbJbCahbN#2.s#2bwbJbL#FbIbDbI#BbtaJ#2bzbtaD#4.QaGbYaC#Y.qaHaBaa.raGaBac#Z#R.q#1bDaDaDab#2.rab.tazaMar#X#MbFbF#zbB.Z.Z#z.T.Z.Z.R.S#Q#zbEaq#0#J#W.m.l.k.k.i.j.h.g.g.d.d.c.c.d.b.b.b.a.b.#.#.#.#......b8bR.#..............................",
"bVaWbkb2b2bcaW#i#eaT#e.5.A.4.7bkb2aVaVaX#e#d.K.x.1.1aW#.bf#obhbhbdaWaT#b.y.5#j#e.4aTaTaP#d.1.x.1b1#fbV#h#g.7.7b2.9#faTbg.4aPbibxbjaWaO.L.x#d.9#m##a8bxbxbiaO.O.I.uaP#g.6bUaXaP.M.L.1aSb#.#.#.#.b.c.e.e.faOaN#8.I.C.O#7#7#7.E.F.FbY#8.Ebfboa3a..PbJbIbD#Ba2bra7a..N.va.ag.Ea2bDbzb5aia#.BbMbPbpbn#9.Dbna2af.Eag.C#C.UbIbIad#4.saDadaa.r.raGaHac#RaHbuaD#4.qaL#Y#Y#Q#P#1aA#y#4ab#2.r#6aDaCaAaG#X#Q#O#M#A.Y.Z.Z.S.S.T.Z.T.T.R.R.RbCbC#M#0.S.S.m.n.j.j.g.g.f.g.g.c.e.b.c.b.b.b.a.a.#.#.#.#.....#b6..................................",
"b7bgbkblbhbhbcaT#e.z#b.y.w#fbcbhblbdaP#e.4.J.w.1aSb6aY#lbUbkb0b7bhaU#e.4.y.KaT#e.5.A.4#e.z.z.1bTaY.A#ia6aVaP.4.H#.bUbibhaWaXaWbmaV#e.M.w.JaZ......a5a8aVaR.4.H.u.LaP.6#g.....K.xaTa4aQaO...#.a.b.c.e.gbfbW.I.N.ualbsa5.C.P.B#8a4a0a..E.Cb4a1a..E.EbEbC#z#ya0a.#7.B#7bvboa2ag.E#7bpaf.E.BbEbza7a2aNbpbva2af.E.B.EbK#BbKbKbD.Dama.#4.r.rbYacac#R.qaCaCaa#P.raCar#O#O#1aC#y#y#A.s.r#5ahbKbJasar#X.t#ZazaqbB.R.R.R.l.S.S.T.R.R.S.T.TbA.S.T.S.S.Uayaxaq#K.h.h.j.g.g.d.d.c.d.d.#.a.a.#.#.#.....#.bbR..................................",
"aU##bcbhb0bZbm#i#e.y.y.A#faZ.9bcbcaU.K#a.J.x.I.1bTaW.9#o#nbhbWb0bjaT#e#b.y.4aU#e.K.zaT.z.4.KaVaY.Abibga6a5aP.O.u.xbb#cb2aW#eaPaXaP.4.w.1bVaV#g.6#naRaRaR.4.N.u.1aS.O.G.7#.....a8a7a5a1aN.I.C#b.c.e.e.fbebe#c.7.Oa8bra8aR.4bsb3bsa.#7.E.EbraRaO.C.FbD#B#A#y#7.N.C.Fbsbob4a3a..E.E.B#3.D#6bDbqb4a7bobrb3aiaf#6.Q#8bKbIbK#BbKbI#G#Gadakaa#w.l#R.q#Raaaa#P.qbY#Y#Q#OamaIac.YbG.X#w#y#B#A#AbK#Q#Q.taaayaGaq#M.ZbCbB.Z.l.S.T#z.S.R.T.R.Vax.S.S.Uaybuax#W#M.i.j.f.f.g.e.d.c.b.d.d.a.a.a.#.#......b6b6...........#......................",
"##.9#mblb4bWaYaP#c.y.z#ebVbc#laUaU#i#k.w#a.w#faTbg.6bXbU#obcbhbcaT#e#b.w.w#c#f.4.K.zaP#i#j#k#c.z.5bib7bjaVaP.4.xaObb#g.AaT.4.x.1.4.x.waSaVbb#g.z#hbb.4.4.N.L.Ibab#aO.G.Ibkbca9bxb4a5aQ.O.I.H.5.b.e.f.h#.#g.Ab1bfa8b4bxaQa2bqa3a0#7.N.B.Na8a5aO.L.IbD#A#v#A#B.E.Eam#7a3boa2#7.B.E.B.D.EambDbqbra7bnbna2a.#6.B.BambIbD#BbI.U#CaHaHaCak.r#x#xbL#F#C#x#P.rae#C#x#PaaaGaGac#P#BbL#G#p#yaHaFaabG#y#X#UayaA#0#K#0#z.ZbB.R.SbB.Zaxaq.T.TaMav#T#T.TayaAar#W#J#W.i.hawawap#L.d.c.c.b.b.a.a.#.#.#.#..bRat#T................................",
".6.6bgbhblbhaT#e.4.w.yaTaY.8bU#f#k.4.5.5.KbRbVaP.9bU#ob8#oaUaUaT#e#b.J.A.1aZ#d.z.A#baU#g.7#c.z.5a6biblbjaX.4.G.x.OaS.8.5#g.y#aaZb8.1aObUbe#g.7.6.6bd.4.L.I.4bab#aR.O.I.Lbra8a8bxbybraO.O.C.IaRaU.f.f.h.h.k.h.n.na8a8a5aO.La0aNa.#7.B.Calb2a5aP.I.G.E#v#y#A#A#Ba2a..Fa2ag#9.E.Ca.#3.EbIbIbIa2a0aN.Nafafa#.E.B#3bPbK#CbGaEah#3aHaLadaFaDabaa.s#x#E#q#p#x#wbG#C#GaGaLaLaa.r#1#F#x#F.jaHaL#R#P#A#AbFaqaq#M#K.S.m.Rawawao.Sawawaq#Lavaxao#L#W.Saqaq#W#J#Kat.j.kaKaAaq#T#L.d.b.b.a.a.a.#.#...#avauavao#J...#..............avao........",
"be#jbkbcaWaT#e#b.x.w#eaU.6bfbfbk.w.4.z.1aZbjaWaX#e##.9#o#o#eaP#e#b.K.w#bb1bV.z.A#baTbc.7#c#l#caUaVa6a6aXaO.1.u.GaS#cbdbdaU#caYaZ#o##.9#n#l.8.zbXbUbe#h.6a9a8a8aR#8.I.uaObrb4a5a8a1aQ.O.F.C.IaZ.e.f.haU#e.k.n.n.oa1aRaO.L.u#7#9.N.E.Cbaa3.CaR.1.I.I.E.Zbqa3a2bpboaga#.B#3.E.Eba#6bDbCbPbJbIala..N.C#6#3.D.D.DamaDab.Dbvbpah#3.QadaHaFaDab#2.Q#C#x#pbG#w#v#F#v#w#vaB#Z#O.r#C#p#x#F#wac#R.raC#A#AbI#M#M#JaMbMbFbBayax#UaxazaAao#Jaqao#L#TbMbJ#V#U#J#MaMat#VawayaAao#L#M.dbO.#.b.b.a.#.#.#.bavaAat#V#J................auaAap#L......",
"#h.8bkaTaT#e#b.y.y#fb1#l.9bW#hbcbd#e#caTblb0bbaT#c.A.6#o##.6.7.4.z.A#baZaY.K.y.zbTbj#c.6#c.7bUbf#oaXaPaO.O.I.1baaVbfblbd#j#c.A#h##.6#n..#c.6#lbUb2be#g.9bfaRaRaO.N.u.Oa9brbsaQaRaQ#8.N.v.1aSbU#n.fbWbc#i.AaX.1.o.4#8.N.1.Ib1.P.N.Fbaa4.F.CaO.I.CaS#7bqb4a3bpb3bsa..E.FbJ#7a..1bIbDbNbPbJa2#8.C.Falba.B.E#9aHbvaFab#2.Dbuaf#3.QaFbvbvahaa#2#2ab#CbL#D#v#v#s#x#x#p#R#P#Pbw#x#v.i#v#v#E#R#ybQbDbQazaraz#0bObMbC.Zaq#W#JbYaxaq#U#KbBbO#VbBbFbBbC.T#Uavavao#Lapaxaq#T.tar.dbPbF.b.a.a.#.#.#b6atat#V#J#T.......#avao...#awaxao#J......",
".7bdbk.4#e#c.J.K.zbTbc.6##bdbb#j#j#i.4bhb2b0aW#k#b.y#a#o.9.9b2...7.4#k#b.5.x.1aSbV#k#b.z#c.6b2bX#n.4.4.O.J.L#fbZ.8bkb2bU#ibhbcaU.8.1..bUbUbU#hbhbcaU#b.z#maO.O.H.L.GbTa1a7a0aQ.4.O.I.I.Hbaa9#o###.bWbdbgbf#m.8.w#v.u.N.Oba.Na1bqa4a.al.C.F.1.Hala5#7a3bqa3a2boa2#7.E.Ba.bJbIbJbK#CbPbKbva3#7.NbIbK#BbIbIbKbpbtah#5.r.Daf#4.B.DaDaJaEae#4.r#2#v#C#x#GbL#w#x#p#p#q#w#w#w#F.XbG#B#v#x.o#A#AbG.YayaGazazar#Sap#UbD.S#WbFbB#U#M#KaM#zbMbFbMbFbB.T.T.Uaoao#T#LbM#V#T#M#U.f.gbMbF.c.d.a.#.#.gbR.##T#J#Tau...#auaAaxap#T..apao#T#W......",
"bbaUbkb2.K.4.A#daZaY#f#.bkbkbc#j#c.7.zbhblbkaU#k.1.y#a#g##.b..bba6aWaX#d#e#b#e#j#i#b.3.7bbbfblbl#j.8.G.L.xaSa6bd#kbfbe#jbkblbcaT#c.y....be#mbhb2bj#i.K.z#fbi.L.L.1aZ.G.MaQaO#8.F.H.N.HbaaZbU#o.8a7a9aR.Nb2#m.8#..Xa7brbyaQ.N.Ca0aN#7.F.Fal.HaSb#.Fa0a2aN#8afa0#9.E.v.NbJbDbMbLbQ#vbJbNa2a..CalbIbIbNbIbKbKaDah#5#2.r#2#5.D.BbZadadad#4.r.Dan#G#p#H#F#x#w#w#p#p#w.o#s#FbK#w#B#v#C.obL#D#w.X#AaGaAaLaG#0#M#M#V#J#zbB.ZbJ.ZbJbMbFbBbF.ZbPbF.T.TbMbB.UbP#TbEbFbB#U#V.i.f.g.g.d.b.b.b.#.#b6bR.#...#........auaAaAao#Lao#L#T#Lav......",
"bgaTbkbWbWbk#iaT.z.z#f#ob0b2be#i.8.z#cbmbmaU#e.4.y.KaT#e.ybfbfbibga6aT#d.J.J#j#g#b.z.7bTbV#nbe#j#c.5bhbhaUbbbb#k.5aU#jbhb0b2bc#i.4.A#e..#g#.bdbhaW#c.y#bb7a6b#a6aO.O.G.4.N.O.P.C.HbZ.G.bbUbX##brbxa9aQ.N.Ca8a1aN.Ia3a7a0.O.P.P#7#7.F.Pbaa3#7.C.Cbaa5#8#7.F#3#7.E.B.Eb1bJbA#A#F#F#FbIbI#7.Pbna2ag#6bKbKbK#Baeae#2.s#2b4#2.EaHaHaF#4#2#2#2alaD#P#x#x.X#x#G#q#w#x#v#x#p#F#F#w#p#B#x#D#D.W#A#v#varazazaq#U#K#0#T#L#zbBbPbDbBbBbMbMbBbPbBbFbCbMbFbM#zbMbFbCbM.nbE.k.i.i.h.h.g.e.c.c.b.a.#bR.#.#............atatao#T#J................",
"b0#ebdbdbbaU#c.7.A.7aUbfbkbd#j#c.5.5aUaTaT#e.4.w.Abdbb#j#c.4bgb0b2aYaX#d.J.JaY#b.z.zaZ#n.8#m#h#g.7bhb2bkbfbfbd#j.4.5#cbdblbcaT#c.z.w#i....bmaWaX.M.5.1aZblaVaRaP.4.x.Gbaa8bx.O.1aN.x.O.b#n#na7bxbxa1#8.H.CbZa1aO.HaQa9a1aO.valb2.E.Pala3bD.C.Ca4aQ#8.H.C.Eal.B.Dala2bIbM#AbNbNbKa8a5aObKbpboa2aga#.E#FbIbL#F#2.s#6bY#F#p#GaHb3aFab#2.r#5aD.qae#p#G#q#w#q.0.p#E#x#w#pbG#wbK.o#v#x#qaxar#U#C.X#0araq#X#N#Nas#JbYbCbAbFbObB.Z.TbCbBbFbBbObMbMbBbCbFbBbF.U.RbM.n.k.k.i.h.f.g.g.d.c.b.ab8.2.#.#.#..........#V#V#T#T#Z............auau",
"bcaUaUbb#j#k#b.A#b#fbb..bbbkbd#j#c#f#c.5#c#b.A.5bkbdbc#j#k.5bib0b0aWaP.4.w.KaVbWaW#i.1.z#lbebe.8.7bhblbfbWb8be#j.7.7#.#jaU#i#f.7.x#caZ.9bxbZaWaX#a.xaZbb#c#d.4bjbgaUaP.zaOa6aVaO.L.uaSa5aR.4aRa5a9aO.O.C.IbxaR.O.ubra8a9aQ.N.EbU#h.6#mbIbDaR#A.O.1.H.IbT#BbDboboa2ag#9.EbKbNbIbib4a5aO.Gbzbybrafa#.E#3bKbKbKbK#Bbaa.#p#H#xaFaHaD#4.Q#P#R.rae#H#F#E#r#s#r.X#x#F#E.X#E#C.X#x#w#CbHaybuaq#U#C.X#v#D#K#N#1aK#W#D.XbG#zbObNbCbBbBbB.ZbMbBbPbFbCbBbA.V.T.U.UbMbFbMbM.k.i.h.f.f.g.e.c.b.ebT.#.#.#...#.#..........#Tao............auaMax",
"bdaU#k#i#f#b.7.A#fb8#j..bUbkbd#m#g.5#c#c#m.5.Ablb2bXbbaU#c.zbmbgaWaP#d.J.x#db0b0aU#e.z.KbU#obkb2bdaWaUaWaP.4bd#g.z.7aWaP#e#e.K.z.Kb1##.9b0b0aWaP.L.waPaU#b#bbgb0bjaW#e.K.yaOaO.L.uaOa8a8a1aN.PaNaN.O.H.LaOaQ#8.I.ua8b3a1#8.H.H#h.8bUbe#g.AaR.O.H.H.F#8a0aNbobpboa2a0#9.E.B#CbJa6bia6.L.ubnboa2a#.E.B#6bK#B#F#Bbqa3a0aHaFadaDadaa#2.rae#Pahab#x#w#w#s#s#p#w#x#F#w#x#x#paGac#w#w#xaxaq#U#Jas#v#w#x#D#C#x.X#B#vbBbB.Z#zbFbFbBbB.ZbBbBbBbFbBbBbFbC.V.V.V.W.UbBbMbBbF.h.h.h.f.g.e.b.cb6.2.#.....#...#...#.....#................avawav",
"bf#m#k.5#c.5.A#fbV#gbVblb8b2bb#j#c.5#cbfbf#n.8bkb0bWbb#i.8.zaWaTaP#d.1.x.1aSbgaU#e.4.x#fb2bdbb#i.5#cbhbcaT.4.A.7.A#iaRaO.H.5.z#cbeaZbfaVbiaW#e#d.w.waT#c.5#fbhb0b0aT#d.y.K#o.L.uaOa8b4a9a0aN.G.I.N.u.Cbaal#8.I.CbTa9a7#8.N.u.N.8bkbWbb#c.7aQ.H.O#v#vbqa3a.bnbvb3bnag#7.E.C#FbPaSaR.1.xaOaiag#9a#.B.Dam#F#F#G#Cbyb3albubuad#4#4#P#Pam#xbzaFah#5.Q#s#G#p#p#s#p#w#x#G#FaHbtac#P#p#w#W#W#M#X#x#CbG.0.X#w#w#B#v.X#A#AbG#v#vbNbE#z#z.Z.Z.ZbFbBbB.Zavavat#VbBbGbFbFbF.n.k.h.h.g.g.e.c.bbR.#.#.#.#.#.#.......#...#................atapao",
"bfbb#h.7.7#c#c#i.8bWbfbfblbW#m#g.7.z.8b8#o#m.8bdbdbd#f#c.5.A#eaP#d.M.w.wb#bjaT#k#b.A#bbcblb2bb#k.zbhb7bgaT.4.w.za8a6a5aX.4.G.y.x#daY#j.7aVaP#e.J.x#b#j.5.zbcbgbgaT#e.1.x#b...#.1aPbrbqa7a1aN.N.u.I.OaR.o.U.H.Hba.NaQaN#7.u.1b7bJbbbb#g.A#f.O.vba#Abobvbq#7bobwbpbo#9#3.B.EalbJbK.O.x.1aEa#a#.E.E.DbT#BbK#F#Fa0a7a1aFbtaFaa#2.r#P#4#Fbzb3bnaf#3.Q#F#G#H#x#w#w#s#E#q#paCaBak#O#qaI#0#x#UbK#x#D#v#D#B#xbHbHbD#w#BbD#B.WbObNbBbBbBbBbBbF.T.T.ZbBaAaKat#V#L#z.Z.m.l.n.k.ibF.f.g.e.cb6.2.#.#.#.#.#...#.........#..................#V#L",
"bf#j#g.7#cbbbc#k.zbfb2bdbebb#g#c.z.7#lbWbf#h.8bbbbbgbgaWaX#e.y.J.K.x.waSbe#o.4.7.A.1bV#obWbWaU#c.zbhbjbm#e.K.wa6bZb3a5aP.4.I.waSaW#m.8.8#d.4.M.J.1b..7.zbeaVaPaT#e.4.x#baZ.#...K.La7b4bsa1aN.N.u.IbZ.o.Sa6a5.N.H.Cal.N.C.HbsbMbEbD#c.z#cbe.uaQ#y#Aa6aX.O.Ea2a2a2a..N.E.B#3bKbJbI#FbQbJanaE.E.E.Eamah#B#F#F#B#Fa.#8aDadab#1.s.raHaBakaFbnai#5.D.D#p#I#s#p#E#w#G#E#p#Fac#Y.saJaAaz#Z#X#u#F#v#v#E#C#C#w#wawaq#y#vbG#A#BbObCbCbF.ZbBbPbMbCbObObAavat#V#L#Tavap.m.m.k.jbPbF.d.f.e.cbS.b.#.#.#.#.........#.#........................#V",
"#n#g.8.5.8#j..bf#o#hbW#m#j#g#c.7.7aZbe#n#h.8.6#kbibjbhaWaX.4.J.yaU#iaP.9.9####.9#ebfbe#j.8aU#c.5.5aWaUaP.4.x.4bib0b0aVaO.L.x.M#h#n.9.7..bd.y.L#daVaWbhbha8aWaX.4.Aa9aRaQ.N.#.#.#a3bsbybxaQ#8.P.C#8a9aR#8b4aV.4.x.4#BbDbNb2bb.1bDbDbDbDbJbE#y#y#AbibxaXaO.xagafaf#7.F.B#3a0bN#FbJbKbK#CbPaf#6.D.BbRbIbI#F#F#F#F#G.P.C#5#2#P.DbYbuad#Paiaf#9#2.s#3#H#u#s#x#w#w#s#p#p#x#x#PabaGbYaMar#X.t#qbK.X#w#C.W#vawaLaq#K#A#vbPbKazaqarbFbBbBbFbBbNbFbFbMapao#T#JbYaKap#T.m.n.kbFbB.f.f.eb9#E.a.#.#.#.#...#.#.....#...#......................",
"#j#c.6.7#l#h.6bU#o#h.8#h#c#b.z.7.8b2#n#j#..6.8bdbhb4b0aW#e.4.y.1aU#e.K.z#nblbe#gbUb8be#g.8.8#b.zbV#e#e.4.y.Kb8a5a8a5aR.O.w.IaObga6aT.4bUbkbW#jbhb2bhbib0bZaVaP.4.xa7a9aR.O.u.#.#a1a7a7aQ#8.O.u.PaQa7a1#8.HaO.L.xbhaU.AbDbd#c.AbDbDbDbD#A#y#y#AaZb0bxaP.O.w.B#7#6.E.E.EbTa2#BbKbIbKbIbzag.D#2.s#9aJ#H#CbL#B#F#F#x#q#x#F.D#2aJaCadak.q#1#6#2.D.Fam#s#p#u#s#r#H#u#H#p#q#w#q#sazaGaG#0#S.tbK#x#w#C#v.XbG#Baq#Mat#W.XbKaAaGaq#W#K#z.ZbBbBbMbFbC.Z.V#T#Laxavax#V#Lap.l.k.i.h.h.f.eb9.a.a.#.#.#.#.#.#.#.#.#.#..........................",
".y.9.A#lb8##.6bX#n#g.6#.bd.8.9#g#h.9bf.8.6#g#obcbgbjbjaY.4.K.w.1aV#c.y.1.Ab2bebfbUbU#m#g.6#c.zaZbf#m.z.5#fbg#eaVaVaX.4.L.u.IaVbdbdbb#k.wbbaU#cbcaUbcbib0bxaV#e.L.I#da5aO.N.CaOblbWaRaQ#8.N.C.Cala0bxaQ.O.H.O.ub#bl#k.z#i#c.zbTbDbDbD#A#y.W#y#AaVa6aRaO.G.G.BbP.E.E#6amambIbNbDbPbKbpbyaga#.B.PaQaJahab.r#4bL#C#F#F#F#G#F#x#Gakak#P.raC#r#3.F#I#t#r#p#p#u#r#G#H#E#E#x#p#E.0asar#0#Q.t#N#x#D.X#C#C.X#vbG#yawaAao#JazaGaKar#U#KarbFbCbMbMbB#zbMbFbA.V.Vao#V#L#VbJ.n.k.i.h.f.fb9.2.b.b.a.#.aauat#T.#.#...........#..................",
".z.A.8bX#l.9.6#h#h.8bhbhbhaU#k.5.6bUb8#o#j.8.8aTbmaWaT#e.4.y.w#f.4.K.w#f.6be#gbUbe#n#g.9.6bebfbUbe#g.6#.aUaT#c.4aOaO.1.G.1b1bdbWbkaU#i.5.5#c.A#i#caTa6a6aVaP.4.w.GaVa5#8.H.u.ObWbk#8#8.N.P.P.Nb1a8a4#8.N.Cal.1a5aP.7#eboa3aQ.PbDbD#B#A#y#v#v#A#BaPaO.x.xb1b1bKbI#B#y.W#v#vbJbKbKaEbtbwaf#3.B.PaHbvaDab#2.D.r#x#x#F#w#G#G#u#u#t#P#R#u#s#r#u#u#u#t#s#q#s#q#r#I#q#p#p#H#H.p#x#Y#0#Q#O#QbY#w#v#p#v#w#F#w#v.Xaxaxayaxaqazar#U#N#KarbFbBbFbFbF.TbFbCbA.V.V.W#V#VbMbB.n.n.k.h.f.gbSb9.b.b.a.aauaKat#V#T.#..............................",
".z#i#n#h#..A.9#n#..Abkb7bk#j#c.7.4bUbf#n#..6.8beaTaXaP.4.y.A#daP.K.A#cb8.8#h.9bX#j#i.7.zbTbU#n#n#h.8bmaU.4.4.wbx.I.L.u.1ba#dbkb2bW#j#c.z#c....bU.7bhaVaRaP#d.w.1aZaVaO.O.u.Ca1a3a7a3.P.N.valb#a1aRaO.N.u.Pba#v#Aa7a0bqbsa3aN.H.CbD#A#A#v#v#y#Aa2a..M.1b#a0#6.E#BbIbIbKbKbNbKbN#F#Bagaf#3.sbtaFbtbtah#5.r.r.r.D#x#x#x#q#G#q#s#u#u#p#H#saDadab#t#t#r#t#t#u#paGaB#Z.B#u#p#p#x#p#O#Q#OaC#w#xbL#G#x#w#x#w.X#vaqaybtaz#Waq#X#M.taJbBbM.ZbB.Z#z.V.VbC.Y.W.VbObObBbCbF.n.k.k.h.f.f#E.b.b.b.b.aavax#V#T#T...........#....................",
"#d#i#h#..9.9bX.8.6.8bhbjbj#i.4.z.1bf#n#gbdbmaT.4bf.4.4.wbga6aVaP.1.wbV.9#o##.9#o##.7.6#jbU#..6#.bhblbgaT#d.K.4bibgaV.4.y.waTbdbdaU#e.8.y#j....#o#maWaT.4.4.J.L.1a6aO#8.I.uala9brbra3aQ#8.O.F.G.I.O.O.H.Hb1#v#ybrbqa3a0#7a1#8.C.NbD#A#ya3a0a.bqbra..Ebybsag.E.EbKbNbJbJbzbnah#6.E#Fa##3.D#3btadaDad#5#2.s#3.r#4#x#w#H#saHad#4#u#I#t#GaHaJad#4.r#s#s#t#I#IaGbYaC#Y#O#q#H#s#p#x.p#E#p#w#p#pbL#x#w#w#F#B#x#w#vawazaz#W#K#M#KaBbGbBbF#A.Z.Z#z.VbCbC.Z.Y.VbNbFbB.UbKbB.n.i.h.fbTb9.b.c.b.b.aapap#T#LbY...#............................",
"#e.J.6.8#.be#g.6.9#nbcbcbc#j#c.K#fbc#hbhb0bcaT#c.wbf.4bibZa6aX.4.J.x#c#lbU.9.9##bUb2#n#..6#g#...bhb4bcaX#e.y.4aWaX#d.1.x.1aVaWaU#i.4.A#faY.......8.8#b.w.M.waSaZ.O.N.H.I.FbTa7bZb5a3aN.N.C.N.k.n.n.O.NaQ.X#v#ybrbybxa0#8.v.N.vaQbqa2a..Fa0#7.vbsa..Ebpama#.B.EbEbJbPbJbvbwaf#6.Q#F#7#2.EaDbzbzab#5#2.s#2b6.ram#w#GbLaHbvaB#P#2#s#saHbtbtad#4.r#2#I#t#u#taGaHaC#Q.raeb9#s#p#q#x#q#rar#Y#x#p#F#wbK#F#v#w#p#xaxaqaq#K#K#B#D#z.ZbAbCbBbBbBbB.V.V#z#A.Y.VbCbM.Z.UbMbB.k.k.i.f.2.c.c.b.b.b.b.a#L#LaA.#...#.#.#........................",
"#d.K.xbkb2aZ#i.6#caTbhbhbcaU#e.zb8aZ.9b0b2bb#e.5.z#jbgb4b0biaT.4.J.w#d#g.6#ib8.9bUbf#h.8bgbgaT.4bhbhbm#e.4.w#b#e#d.M.L.1b2#d.5a8a6aV.1b1..........bd#j......aYaT.7.H.N.OaQ.7a7bra7a1#8.N.u.N.k.kaV.4.o.X.X#va8a3bsbraN.Na0a.ala1b4a3a..Fa0#7.Ba.#7.va.#7.F.Fb7bJ#ybJbzbpbp#9.E.D#6bIbKbzaEai#9.D#2.s#2bw.DbT#u#t#u#Iaead#4.ran#u#tadaDad#4.r.raj#u#r#t#uaBac#R.q#O#s#H#q#H#x#p#EazaI#Z.q#s#w#F#pawayaq#Jayap#U#J#NaK.ZbD#vbBbObN#A.Y.Z#y#z.Y.V.V.TbObE#zbAbObObB.n.i.hbHbH.c.c.b.a.a.b.a.#.a.#.#.#.#...#........................",
"#d.J.x.4bl#j#c.z#cbhb2b0aW#i#e.5.zbb.8bhaY#i#c.w.zaTbgbxbga6.4.4.w.yaP.7.z#m.9bgaWaX#dbhblbgaVbgbmaU#e#b.x.yaZ#b.J.K#db#.4.ybibxa6aV#d.x........bfb2a5aXaO...5.4.wbbbf#j#c.Aa1a1aQa..N.C.CaQ.pa1aQ#e.x.x.Xa6bxa0a3boa3aQ.NaN.N.Cbqa3#7.C#7.E.Cal.B.N.E.E.BbabA#zbna2ag#9.E#3.B.DbK#Fbtbvbnai#5#3.D#2#2.D#5#u#t#q#u#t#R#4.r#2#p#q#u#4ab#1#2.ram#u#t#r#r.9#R#1.q#Obp#G#p#u#q#s#paGbuaC#0#O#X#x#x#xayaA#W#Kayao#L#UbC#y#AbCbNbCbObFbBbBbB.ZbB.ZbFbEbObPbC.W.UbCbCbM.k.h.hal.g.c.d.b.c.b.a.a.a.a.#.#.....#...#......................",
".4.y.w.4bb#g.5.zaUbjb2b0aU#i.4.y.z.8.8aU#i#e.y.zbTaUaVa6aX#e.4.G.x#daX#i.4##bibiaWaV.4.wb2bibjb4aP#ebmbmaT.5bmbgaWaX.y.K.4.Jbib4biaR.4.G.4bd#jbc#gbibmbia6aVaP.O.7..#j#c.z.8aNaNaN.N.H.CalbZa7a7a1aN.Pa0.O#vaRaObqbsa3aN#7.C.E.C.N.O.E.C.F.CbT.Eala4bIbNbNbNbDbpbza2a2#9.E.B.DbZa4bzbtbybpaf#5#2#3#x#H#x#F#H#q#G#q#H#q#s#uaDaa#t#u#t.Q#P.sah#u#I#t#r#u#r.p#sak#p#q#p#u#I#u#t.paBaI#Z#Q.q#u#q#E#waq#W#Janao#JaM#C#A#D#BbJbM#z.ZbJ.ZbB.ZbF.V.VbFbAbAbFbMbCbC.U.m.l.k.hb9.2.d.c.c.b.b.c.a.a.#.#.#.#.#..............................",
".K.x.w#e#g.7.5bdbbbhbhbcaT#k.5.y#aaW..bb#c.z.z#bbm.8aPaPaP.4.J.xbmaWaP.4.4.Abxb4bgaX.4.w.4bgblblaWbha6a6aXaO.LbjaWaP.4.J#j..a6a8aXbia6aV.4.5#j.7a8b0bibibiaVaP.O.u.....7#gbd.4.N.N.C.C.Nbsa7bybZa1.O.P.N#8.v.O.Lbrb3bq#8.N.C.C.P.H.N.FaQ.BaS.N.valbDbDbNbNbIbBbpb4bqag#9.E.Eam.D#8aEaLbza2#5#3.D.Dam#x#H#F#F#H#w#x#s#s#GaLaDaa.s#I#t#u#I#t#u#I#I#t#t#t#I#u#u#t#u#G#H#E#u#u#r#q#x#0#R.taM#w#F#p#v#D#Nas#D#Lax#B#w#vbPbQbJbCbFbDbM#z.ZbFbCbF.ZbBbB#z#z.WbC#zbJ#z.n.k.h#E.g.e.e.e.c.c.a.a.a.#.a.#.#...#.#..........................",
".w.w.MaV.7blbkbhbcbbaUaU#e#b.x.y#i.4....#i#c#ebb#h.6.4#a.4.G.xbhbgaWaT.4.y.A#kbia5aVaP.4aOaVbgaWbhbibia6aVaO.L.xaX.J.5.4..beaVaRbibjbgaVaP.J.G.7a8bibib4bjaRaO.L.u.1.#.##e#d.w.x.L.N#8.7.za7bxbsaN.O.C.N.N.CaN#Aa3a3a..N.C.E.B.N.CalalbM#A#BbKbIbJbMbDbJbJbIambpbpboa.a#.B.Bag.D.Hahahahaj#5.D.D#6#C#q#G#w#H#q#H#G#u#raHbtaJ#4.r#3#I#u#t#t#t#u#uaCaGaB#Y#I#t#u#G#I#r#s.p#s#s#x#w.X#O#YbL#F#E#FbQax#Var#UbL#x#v.0#vbKbKbF#AbPbD#AbF#ybB#zbBbB#z.W.V.V.W.W.UbCbD.k.kbS.0.g.d.e.d.c.c.a.c.a.#.#.#...#.#............................",
".x#bbSaZ#obkb7bVaU#iaT#e#b.z.z#fb8.4.5..bUb2bW#m#..5#gbT.G.Mbib0bjbcaP.4.w.4#kbibia6aX.4.JbiaT#kbgbxb4a6aX.4.G.x#e.4a8a5aRa8a6a5bhb7bVaRaP.G.G.5a5a5bibib#aO.4.I.uaO.#.a.a#a#e.bbc#e.zaT.Aa4a4aQ.O.P.vaQ.P.uaQ#AaNa.#7.C.Nb1.Ea4ala1a4a3al.ubJbJbDbDbDbDbDbJ#9a2a2aNa#.E.B#3#3.B#9ab#9#5#6.D.s#2bY#x#x#x#I#I#r#s#qaEaFahab.D#P.r#I#I#t#t#r#I#u#raHbuaB#Y.q#X#s.p#q#u#s#r#r#E#p#p#x#t#tbL#x#x#Fauayayaz#W.t#x#w#CbGbMbGbI#BbD#AbObObB.Z.T.Y.ZbB.YbC#z.W.W.X.obM.k.hal.f.g.g.e.c.c.c.a.b.a.a.#.#.#.#.#............................",
".ybTbV..bdbWb0bW#j#k#b.4.y.z.1bV#c.z.zaUbebf#m#g.9.zbe#k.5bib0b4bVaU#e.1.y.4bhb4biaVaP.4.J.M.M.4a8b0b0b.aP.O.I.GaO#ebZb#aRb0bZbmbjbjbiaP#d.w.waTaOaOa6aVaP.4.I.u.LaV.#.#.a.b.c.ebgbcaU.4bcaNaN#8.P.va3a3a2a0#7.EbA.F.C.Pba#7#7alba#vbsbra..F#B#BbDbBbobnaga#.Caga.a##3.B#6bZ.DaEaha#.D#6.D.v.Dam#F#F#F#F#u#s#s#s#rbtbwah#5.D#2bY#t#taDacak#u#tadaHaC#Z#O.q#X#Q#q#p#s#r#r.p#H#E.p#t#I#r#x#w#vauaAaAaLar#M#KbI#B#BbDbD#B#A#DbM#zbMbCbNbJ.V.V.V.VbCbB#y.W.X.UbObPbBb9.0.g.g.e.g.e.e.b.b.b.a.a.#.#.#.#.#.#..........................",
"aSb#..bUbbbdbdaU#k.4.z#b.1#faT#c.1.x#faU#m#m#g.8.6#lbebdaUbmbjbhaY#e#d.K.x#dbhb5bxaT#e.M.G.MaW#ka6bia5aP.4.N.u.LaX#e.K.KaRb0bZaVb.aVaP.4.J.x#a#....NaRaP.4.O.u.MbVaV#d.#.b.b.a.db4bjaT#c.w#k.N.N.uaQbsbra0aN#7.C#7bAa7bybsaQ#7.C#A#ya7boa3a0.EbNbMbpb3bnaga#.B#3a#.D.E.Eba.Ebzbzah#5.D.Q.D#6ag#F#x#x#x#G#x#u#s#qaFbvbuaj#4.Q#2#P#taHaCaBaa.B#I#uaB#Y#Q.q#1#N#1#u#r#u#r#r#t#p#p#q#s#t#r#wbQ#F#wataxaq#W#K#M#C#v#v#vawaxaq#LbQbA#zbObN#z.Z.V.V.YbObM.ZbFbEbMbFbFbM#E.f.f.g.e.c.d.c.b.b.b.a.a.#.#.#.#...#..........................",
"aV....bUbUbb#j#i.4.z.A.7bbaT#k.5.A#bb7bb#g#..8.6#fbXbkbhaTaTbcaUaT.4.K.x.yaZa6bga6#d.4.G.waOaW.4aVaVaPaO.L.u.1#faVaT.K.zaOa8aVaVaTaP#d.K.x.1b7bU.......O.G.I.Ibaa5aP.4.xa6aWaXaO.Kbj#i.z.z.7#ba6a.bqb3b5a0#9#7.E.Na5aRaObra..N.Cal#yaQb4a3aN.P.EbEbpbvbo#9.E.C#7.B.E#7an#F#5bvbyah#5.D.EbzaJaj.Q#G#x#u#H#H#H#p#raFaEah#5#2.s#5anaHbtbvadak.r#uac#R#Q.q#Oas#N#I#s#s#p#r#I#t#s#p#r#p#p#p#sbL#x#F#T#W#W#M#Kaz#x.X#vawaMawaq#LbJbGbMbFbGbP.Y.Z.Y.ZbObM.WbB#AbObC.navauat#L.e.e.c.c.c.b.b.b.a.#.#.#.#................................",
"......bf#n#i#k#c.7.5#cb1bdbU.4.A#fbVbX#n#..5..##..bkb0bha6aWaX#e.M.4.x.1b#b8aWaVaX#d.M.x.JaZaT.4.GaPaO.O.G.IaSb1aT.4.z.4aVaRbga6aXaO.G.w.1bV.7........aV.L.LaOb4aWaP.M.Mbxa6aX.4.x#i#b.A.1#b.kaPaObobqboa3#7.E.B.Na8aRaO.H#7.C.F.EbNbobrbq#8.P.NbEbna2#9a#.E.Bambra..E#7#FaibpaE#5#3.s#9bubt#5.Q#6#G#G#p#q#H#G#Iahadab#2.s#6ai#uaDaHaDak#P.qabaC#Y#O#2#t#M#H#s#raFaCak#t#t#q#r.0#u#x#w#s#q#p.X#E#x#L#N#F#w#w#C#Cawayaz#W#J#0bFbCbC.ZbQbF.V.Z.ZbFbC.W.W.VbPbB.naAaAap#L.g.e.c.e.c.b.b.a.a.a.#.#.#...#............................",
"#c....#h#.bb#b.7.A#faZbb.9#n.9.6bfbUbe#h.8.zbe....bgaWbibga6aVaP.M.x.4#fb1.xaPaO#d.M.w.xaZb1#e.4.x.1.O.G.uaObjaT#e.K.x#f.Ibibja6aXaP.M.GaP.w.4...........4bmbib.a6.4.y.waTbiaP.L.x#d.y.1b7a6aV.4.La2a0a0a..N.C.CalbZaRaO.I.N.Eb5.EbAa0bobna2#9.EbCag#9#7.E.B#6a0a..E.Ea0bKbDah#5#2.B#6aiaDaj#2.Dai#H#q#H#w#s#H#u#t#2#2.Q.DbsaHaHadaBaa#4.q#PbuaB#Y#P#t#taCac#RaHb3ad#4.s#H#H.p#s#x#F#C#x.o.oawax#W#C#C#x#p#v#v#xaqaq#V#L#JbNbBbQbF.ZbMbF.Z.V.V.Y.W.W#v.UbEbFbHaxat#V#J.g.g.c.c.c.e.b.a.a.#.#.....#...#..........................",
"#c.......6#fb8bU#c.8.7#m#.##.6bX#nbe#m#..A.9...#bjbZbhb0b1a6aX.4.M.x#a#i.y.1bZ.O.L.x.G#db1aP#a.w.1aV....alaTaT#c.4.x.1b8bib0b4b.aR.4.G.Ga5aRaO............aVaWaPaP.L.x.1a6aX#d.1.uaS#dbca8b4a5.4.xa.aN#8#7.F.CaSbYa8aR.O.I.Lba#7.Bal.Nbqb3a2a..E.E#B#7.B.B#6bnbD.E.BalbDbI#B#2#2.B.DbY#2#3.D.DbYbLahab#p#t#r#q#s#t#I#2.D#6#uaHbuadak#P#P#PbvaBak#O.qaCaGaGaB#Y#OaF#4#P.r#q#p#G#s#p#F#x#wbLawaKaq#W#L#v#w.X#w#wbG.W#W#J#LaMbMbBbMbF.TbQbC.ZbM.Y.W.YbE#A.X.m.nbHao#T#Lan.e.g.d.c.c.b.b.a.a.a.#.#.#................................",
"be.8......bf#n#h#h.8.8#hbbaP.K....#h#..7.8aUaUbib0b0bgb4b0aWaP.4.y.w#daW.4aTaZbc.w.JaSaV#e#a.J.JbTb.....aO#d#a.y.w.1bja8a6bibia6#d.L.x.GaRaVaN.I.O..a8a8a9aR#ebma5aP.Jb8aXaO.L.x#eaVaVa8a5aO.I.I.u.o.N.N.C.C#7a3a5aR.4.I.uba#7.E.Bambobqb3am#7.E#7#BbM#6#3bJbCbMbJbPbDbD#BbKbK#B#3bvaj#2#3#B#5#HbzaEaj.D#H#q#q#q#H#u#t#u#s#raDadak#P#P#Pad#Z#Y#R.qamaGbtbuac#Y#O#R#P.raM#p#I#H#G#F#x#G#s#C#waq#V#K#T#w#v#C#v#w#D#A.U#U.WbObObBbC.Z.ZbFbFbPbMbB.W.YbE#A.o.mbM.0.f#Vao.f.e.e.e.c.c.b.a.a.a.a.#.#.#................................",
"bU.8.8..bUbW#o#h.7.AbhbhbcaT.4bhbdbbaT#c.zaWaTbgbibgb.bxbgaW#d.4.x.waPb2bmaV#e.Jbc#jbfbf.x.M.GaZaY#b.z.....J.L.4.K#kbxb1a5a6aRaP.4.G.I.1bxaQ.4.GbgbmaVaO.LaObibiaWaP.M.x.4.L.G.ObZbjbra7boa0a..Fb#.ob2bd.N#8#Aa3a3a0#7.ubaa5.E.BbT#Aa2a2a2#7.N.valbJ#AbIbJbNbJbEbqbn#9.BbKbKbK#BaJah#4.Qaf#x#qaFbvbpab.Q#5#p#q#x#u#I#r#s#r#raaab#2aCacaa#u#r.q.qan#IaIaGaH#Z#Q.q#Y.ran#r#p#E#q#G#x#q#G#s#s#p#T#J#W#w#C#BbG#v.o#BbGbG.Y.WbMbFbMbF#DbF#z#zbFbC.Z.V.WbJbA.o.mbQbC.j.h.g.g.g.g.e.c.b.b.b.a.a.#...#..................................",
"#b.y#...bUb2#n#g.7#hblb7aW#ibkblblbb#i#c.Abc#eaWaWaTaWaWaXaP.4.y.x.1aZb0bjaVaP.J.J.9#o#mbhb0b2aW#e.7.K..bibhbmaX.4a6bibiaOaPaO.4.G.w#db8a5aO.Nbibxb#aV.4.G.Gb3b2aW#e.L.x.w.J#daX.f.hbqa3a3a0aN.E.B.obb#i.K#iboboa3aQ#7.Cba.F.CalbJ#Aa.aga.#7.B.Bam#A#z.Zboa0a#bKbrbra#.CbJbK#B#Caj#5.D#2aJ.K#G#GaEaj#2.s#F#G#E#saF#5#u#s#r#r#t.DaHaHaCaa.r#4#s#I#E#IaBaB#Z#R.q.qaB#Q.t#p.pawax#K#q#H#F#q#x#x#p#w#C#w#C#v#y#AbG#y#ybPbGbMbJ#z.Z.TbCbC.Z.Y#z.Y.W.Y#ybMbA.o.RbJbJ.f.f.f.f.e.f.e.c.c.b.b.a.#.#.#.#.#.#..............................",
"#c.y#i..bf#n#h.7.8bdbWbWbc#kbkb7bWaU#i.4.z#b#b.zaT.4aXaX#e.4.J.x.1b1aWb0bZaT#d.y.K.8b8#.bhb0bkaU#c.z.z..bib4bgaP.MaVaVaXaO.O.M.w.w.1bVaRaO.O.ubxb2b.aX#d.G.MbibgaP#d.x.GaVbe.e.e.g.fbpbqa3a0#7.P.va.#c.A#fa3byb5a1a..N.C#7bIbMbDbJbD#A#7.E.B.Bam#y#ybJbpboa2#7.Ca2#9.E.EbD#BbI#BbI#2#3aiai#9#x#q#4#2.Da4#F#p#saHbvab.Q#paGaCakaFbYbuadaa.r#2#r#t#q#t#t#X#Q#O.qbwar#Q#Q#saybuaq#M#p#G#G#w#H#E#p#E#C#v#x#w#p.XbG.WbBbI#AbEbBbFbPbMbAbA#ybB#zbM.Z.W#vbCbFbA#E#E.h.h.h.h.f.e.e.e.e.c.b.b.aauauap.#..................................",
"aU.zaUbUbfbb#j.7.7#obhaU#k.4bkbWbjaU#c.5.A#c.1.w.4.J.x.4.M.J.J.ybab.a6bgaV#d.K.x#d......bbbcaU#c.5.x#e..bgbiaV#d.x.1aOaO.L.x.G.O.1aPa6aO.N.N.IbibiaV#d.L.x.1aVaP#d.w.u.1.b.e.cbiaW#ebqb4bra0aN.E.vaQ.o.U.Xa3brbqa2#8.P.ualbNbJa5al#A#AbMbJ.Eal#y#ybMbqbvbva0#7.B#9a#.EbMbI#B#BbKbK#Abzbnaiaf#3.Q#x#xaf#H#q#w#paDae#2#2#qbYaCakaHaHaFaa#4.r#4#t#s#u#s#r#u#O#Pan#Z#Q#N#1#qayaq#U#J#p#G#x#x#x#p#q#C#x#x#E.o.X.0#D#v#v#ybObD.ZbObPbBbF.Z.Y#zbMbM#z.W#v.WbCbAbE#z.h.h.f.f.f.e.e.e.c.c.b.a.baxaKap#L..................................",
"bVbTbfb2bW#m#g.7.7..aUa5aVaP#dbbaU#e#b.z.zaZ.A.1b8.......J.M.1aSaW.zaVaX#e.4.x#db.......aUaT#e#b.A#cb8.JaVaX#e.K.zaS.7.M.xaSbTaObgb4b#aP.I.LaVaVaXaP.4.x.GaZaP#d.L.x.MbZ.b.c.cb4a6bqbsbsbsaN#7.E.C#8.o.U.Wa0a2a.#8.N.B.Fam#Abxa6#8.CbJbMbEbE.W#y#y.Ybsbnama#.E.CagbDbPbD#BbI#C#CbKbnbtbyaiaf#3.B#p#H#q#G#H#x#x#s.r#2#raCaC#Y#OadaBac#4.r.ran#r#t#r#r#G#s#I#u#Z#Y.t#Ob5#H#U#W#Kac#G#G#w#C#w#x#E#F#xbG#v#v#B#v#D#y#A#DbJbG.ZbNbFbC.Z.Y.YbB#zbB.W#y.YbPbCbJbE#z.h.h.h.f.e.f.e.c.c.b.b.a.aavav#V#Jap................................",
".1bXbfblbd#i.8.A.5bibia6aVaRaN.G.I#b.z#bbSbc.zbVbg......blblaWaPaU.7.8#e.1.J.1bV........aW.4.5.A.zbVbdaU#k.z.J.JaZ.7.8bia6aP.M.wa6bia6#d.G.yb4aPaO.4.G.xbVaOa8.G.xaSbg.aa9aQ.OaVaXa3a3a2a.#7.N.v.Eam.m.obrb4a.#8.N.C.Fb1#AbAa7aR.L.IbJ#ybE#y.W.W.Y.Waga.#9.E.BbabDbDbIbD#B#F#B#FbGbzbtbpbn#5.E.D#x#x#p#H#G#F#p#p#G#r#s#rak#PaC#4aa#2#P.rbw#u#t#t#r#t#s#s#u#t#p#O#SaC#H#x.X#x#0#x#p#H#H#F#v#w#w#C#v#x#D#C#B#v#w.YbG.XbF#zbBbFbC.YbA.Z.Y.Y.Z.Y.Y#v.WbEbC#D#B.i.h.h.f.f.f.f.e.e.c.a.b.a.aapao#L#W..................................",
"bbbUbbbb#j#k.6.5bdbjb0b#a5aR.4.L.H.z.7#lbh#a#eaT........bWbhbhbhbc#j#c.4.M.M#e.............4aW.4bhb2blaU#k.5#caPbfblbib2biaP.L.GaVaV#d.L.uaSbia6a9boa1aQal.Hb3aRaO.Ibra9a1aN.N.C.GaNa0aN#7#7.C.Cal.m.m.oa8a8aO.N.v.Fa0bJ#zbqa7a1aN.NbE#y.W.W.W.W.W.W#7.E.E.BambEbDbJbJbMbLbL#x#C#Cahaiaf#5.D.B#3#C#q#w#C#p#p#w#q#w#s#s#r#saHbtad.r#P.rae#t#t#r#G.p#H#q#q#s#q#p#r#s#q#G#p#H#x#x#w#p#w#w#w#qbK#F#v#p.X#w#waz#0bGbPawayax#UbBbJbCbBbA.YbB.Y.Y.V.Y.W.W.obH#D.h.hbNbM.f.f.f.f.c.e.c.b.b.a.#.##L#W.b..................................",
"..be#h#h#c.7.6bSbibib4bxaRaO.O.I.O.4aTaU....bf#mbcaU#ebebhb4blb0bc#i#c.y..bb#ibfbe#g.5.4bgbj.K#ebjb2blaUbmaP#dbfbf#ma6aVaO.M.x#d.G#d.J.J.1aVaSaObxbsa3aQ#7.Ca5aO.Gbrbqa7a1aN#7.C.O.f#7#7.N.F.CambZbc#b.SaQaO.N.Ib7bAbJbD#zbyb3a1a..N.HbJbA.X.W.W.V.V.VbMbJbDbDbIbJbA.UbK#B#F#F#B#B.Saf#5#3.B#6b5#F#x#w#G#H#D#p#G#HbzaFahaa.QaIar#R#P.p#s#s#r#s#r#s#p.p#t#r#p#s#r#u#G#G#w#s#x#F#p#E#p#w#F#HbKbK#C#vbG.Xayazar#UbBawaMaq#U#UbCbCbB#zbA.Y.V.Y.VbQbC.W.Xaxap.i.hbPbE.h.f.e.e.c.c.c.c.a.a.#.#.#.#....................................",
"aW.8bhbh#c.7bebea8bxbia8aPaO.L.I.GaO......bUbfbhb0aW#e.ybibhb2b2bb#k.4.y#kbd#j#cbb.8.7.4aWaVaP.4bcbcaWbibmaWaP.KbfbibmaVaO.G.Lb7b2aR.M.4b.aTaOa7b3b3a1#8.N.u.O.La7brb4bya1aN.N.C.N.g.f.F.F.PalbwbW#j.7a1.O.N.Hba#A#z#z#Abqbxbxa0#8.C.PbCbJ.W.VbObPbAbNbJbDbDbPbDbK#AbDbKbJbD#BbG.m#FbL#3.B#7a2#6#G#x#GbL#H#w#s#GaFbvbtad#5.Dbz#Z#P#R#r#r#r.p#r#s.p#p#u#u#r#s#p#E#s#p#qazaB#0#p#w#w#wbL#G#qbQbQ#A#w#DayaMaKaq#S#Kaxax#W#J#0bJbB#zbB#z.Z.Y.Y.YbFbE.Xayaxaq#L.hbFbD.f.f.e.e.e.e.c.b.a.b.#.#.#......................................",
".4bfb2bgbgaVaP.4a5a5a5aR.4.O.I.I.1aQ.....#b2bWbjb0aU#b.waZbdbhbcaU#c.z.zaZaU#d#b.z.9.8.z#e#d.1.1aUaUbib0biaT#e.M.Jb4bxaP.4.G.Lb3bxaR.4.x#e.y.Ja3bra3aQ#7.F.Calbra9bxbZbxaR#8.N.C.Na7a1aO.fb2be#g.5boa3a0.E.C.N#y#y#zbB#za1a7aQ#8.N.u.1bNbN#A.UbMbzbzaiaj.BbAbJbAbDbIbQbDbK#A#CbDbK#BbIbGaFaHaD#4.r#x#C#H#H#p#s#HaHbtbtah#4.Q#2#1#O#R#r#E#G#q.p#r#r#GaAayar#S#x#s#p#qaAaLas#Z#K#x#x#C#w#q#s#B#C#F.0#Caxazar#U#K#Mao#W#M#LaM.Y.Z.Y.ZbC.V.Z.W.W#v#vawaAayao#J.i.h.h.h.f.f.e.c.c.c.a.a.#.#.#.#......................................",
".5.zbjbibgaWaP.4aRa5aRaO.O.L.u.1aSaR....bf#o#gbmaU#e.AbUb8aYaUaT#c.K.x.1aWaT#f.w.7.9b8.yb8...M#daVa6bZb0biaT#d.y.JbiaW#d.O.x#dbxbjaP.J.G......a0aQaQ#8.H.v.Na4bxa1a7a7a1#8#8.P.u#8b5a1aO.NbW#j.4.4b3braN#7a0aN.N#y#y#AboaQaN#8.N.C.Nb7.ZbEbJ.U.Ubzbya2#5.D#3bJ.m.SbDbMbGbDbI#B.Rahaj#A#AaFbtad#2.r#F#C.o#x#C#paHaDaDab#5.r.san#O.qaD#E#HaHaL#4.p#q#qaMaGar#Kas#u#t#GaGaHaI#X.t#X#v#w#w#w#w#CbKbQbK#x#War#0#K#NbY.Y#J#JbC#z.Y#ybBbJbC.Y.ZbMbE#v.Xaqaxaq#L#L.h.h.h.h.f.f.e.e.c.a.a.a.#.#.#........................................",
".y.ybib7biaVaP.M.4aOaO.4.L.u.HaSb7....bf#n.7#g#k#e.1.y#o#o.y#i#c.7.z.7b6bb#i.4.y#e#m.M......b4bjaPaWbibgaV#d.1.x.1aVaO.4.x.ua6a5aP.1.uaO......#8#8#8.N.C.Fb3aRa7a7a1aRaN#7.N.v.FbabsaQ.O.I#8#k.AbobsbqaNbqa7a0a8aVaP.Gbnbo.N.N.u.Hb#.N.E.W.V.maEbtbtah#5.D#2bMbC.SbJbD#BbNa0#9bzaJaj#2.YaCad#4.r#4#C#w#D#x#p#FaFajab#5#2.s#6am.qaM#x#q#GaCad#P#H#H#sazar#U#K#u#u#t#qaIar#Y#N.q#w#w#CbL#w#CbQbKbP#BbGbK.t#M#Nas#vbJbG.Y.Y.Y.W.Z.ZbBbA.Y.VbO#A#y.Uat#T#M#LaA.h.h.h.f.f.f.e.e.c.a.a.a.#.#..........................................",
".AbmblblbjaX.4.L.x.4.4.I.u.IaSbZaU..bfbf#n#.be#j.7.K#f#n####.9.7.A#fbdbcaT#e.z.K#e........aWa6aX.4.xaWaXaP#a.w.1aZaO.O.G.IbTa7aO.M.I.Ob#....a5aR.C.N.C.1a4....aRaOaNa.#8.H.C.HbTb#aQ.N.P.I#c.A#fa2a0aNbobybxa8b4a5aO.I.Oag#7.E.Nala..F.E.Y.TbpbyaEaf#5.D.BagbNbAbP#BbKah#5bvaFbubtab#2#2#B#4.r.raC#w#v#x#H#p#xaCac#2#P.s.Dbw#R.qbv#H#G#G#s#Pazar#X#q#W#X#Nae#E#u#t#x#X#Q#O#OaMbL#wbL#F#w.obI#CbI#B#v#v#BbG#D.X.ZbPbI#A.Z.Y#ybB.Z.Y.YbFbBbFbCbDaKavaoavavatao.t.h.h.f.e.e.c.c.a.a.#.#.#..........................................",
".yaVaWaWaP.4.M.w.Jbibg.I.GaSaRaZbg..bgaUaP.4bf#j#c.A##.z##.8bhbcaU.4aU#i#f.1.A#caU..bmaVaObmaP#d.w.1#e#d.4.y.xbTbj.O.L.IaZaV.....L#d....a7a8a5aR#8.u.u.1...#...O.O.I.N.H.C.Hala7a3a0#7.vb#.f.hbhbm#7#7a3a3a3aNa..E.O.I.O#3.C.Ebaal#7.va4bJbnbvbvaj#5.E.B#6aDbCbJbEbtaHahab#2aDaFah#4.r#6#A#x#2#H#q#F#B#p#p#waGaGaBaa#O#4#w#p#w#F#p#p#G#I#paGaHaB#Y.q#p#w#0#DaGaB#R#w#p.t#O#Y#x#C#x#w#v#F#v#C#v#v#p#w.X#DbF#B#y#y#A#A#y.Z#zbG.Z.Y.Y.YbE#zbFbAavawav#VauaMatao#J.h.f.f.e.e.c.c.a.a.a.#.#..........................................",
"aZaYaTaTaP.4.x.wbiblbjaWaT#d.J.J..bjbjaWaP.y.K#j#b.z.L#c..blb2bbaT#c#k.4.K.x.Kb2bgbibmaT#d.G.4.K#fb..x.K.1.1aZaYbZ......................a8b5a7aO.O.uaObs...#...#...I.1.N.N#8bqb4a7aN.N.Cal.hbhb7aW#e.Pbobqa3a0a..E.C.Ia5#y.E#z#y.N.CalbJbD.Vaiag#3#3.salbnbF.l.lbzbtbYaDab#2#2af#5.D.Qb4#D.l.S#G#G#q#v#v#BaHbtbvadak#O#R#w#p#F#H#p#q#G#q#GaGaLar#Y.q.X#E#paGbuaB#Q#Q#p#p#w#C#B#C.X#wbK#F#pawawax#W#J#C#ybJbPbJbC#A.ZbMbF.Z.ZbJbCbB.Y#ybC.W.Waoap#V#Javax#V#T#L.f.f.f.e.e.c.a.a.a.#.#............................................",
"#g.7#e#d.4.A.x.1bhb4b0aWaP.4.G.JaPb2b2aV#e.y#b#g.5.7bbbdbdb0b0bc#i.4.z.z.w#bbca6bhb4bxaP#d.G.M#d.w.5#j....#a#daX......a6aR.O..........bma7a8aR.O.I.Ia4aR...#.....#.#.#.#.a.aa4bqa4#7.F.Cal.fbibmaX.4.Jbob4bra0#7.E.CbT#y#y#z.Z#z.ZbMboa2#7.V#9#7.D.Eb1ag#2bC.l.laDbzaEaD#2.r.D#2.Q.sambG#A#v.l#GaHaHad#R#vaCaHaFac#R.q#1#x#p#F#G#F#E#q#x#paIas#1#O#S#r#q#xaBaB#Y.qan#w.p#p#x.0#v#v.obG#A#DayaMaq#V#J.W.WbIbObDbFbAbJbMbBbNbFbE#zbDbCbAbMbB.X#D#L#Lasapap#T#JaM.f.f.f.e.c.c.c.a.#.#.#.#.#........................................",
"#k.7#c.J.w.x#db#bibjbiaW.4.4.w.MaVbhaW#d.4.x#e.8.A#gba..bbbhbc#k#c.z.zaU.7#i.4blbibia6#e.M.x#d.4.xbW#m.7............bxbxaR.O.Mbkbe#i.5..aRa9a1aQ.Nb#b4aV.L...#.#.#a9aR.O.a.#a0a0a..N.v.Ea0.faTaT.4.xbobwbvbra.#7.C.Cam.W#y.Y#z.ZbJbobvag.E.E.V.B.sa4bYag#3.DbC.laFahad#4.r.safbK#ybGbI#D#BbG#C#vaHaLac#4#PacaBacakaCaB#R#p#E#F#G#w#x#F#w#s#Y#X#O#ObY#p#F#F#w#R#O#1#w#w#C#w#p#p#x#D#p#w#Catayax#W#M#J#A.W#AbCbCbP#zbPbFbMbMbBbJbCbA#zataobA#D.0.n.mbO.k#T#Jas.f.f.e.e.e.c.c.a.a.#.#.........#....................................",
"#c.6#kbdbhbhaWaTaWaWaT#e.1.x.xaP.4aT#k#e.x#fb..7#cbU......aUaT#c.1.yaZaY.4.xbgbxaVaVaP.4.x.1aY.J.xaT#h.5..........bibxbiaO.G#db2bb#k.5a6bra7a1aQ#8.vaO.I.x.#....brb#aR#8.u.##8aN.N.C.Fb1.I.f.f.K.x#fa2a3a2a.#7.F.B.F.W.W#y#y#y.Z#za0ag#7.Ba..V.VbCbpbp#9.D.DbE.laD#5#5#2.r#6aJbQ#BbGbI#A#AbNbKaDaHaD#4.r#4#w#Y#RaGaCaB#Y.q#w#x#H#x#p#x#w#x#p#O#O#Z#p#w#F#E#w#w#F#C#v#w#F#C#w#x#p#G#F#F#w.Yaqaq#T#Kan#v#C#ybJbKbObCbJbMbAbCbJbAbBauauavap#L#D.n.nbNbFbFbObNbA.h.f.f.e.c.c.b.a.#.#...#avao........................................",
".z.6aZaTblb4bmaPaTaP#e#a.w.y#fb8#e#e.4.z#bbV#b#kbb........#c#c.5.z.7bX#d.x.4aWaW#e#e.4.G.ybV#a.x.1#g.7#l............aVaP.M.waVa5a9aRaNa7b3bZaRaN.N.C.4.xbZ......byb3aR.O.C.abq.E.N.Na4.B.g.g.f.f.f.h.ha.a.#7.F.v.Nam.W.W.Y#y.Y#y#y.Z#3.C.N.VbMbC.Uagaf#3.BambA.k#4#4.D.raeaJbJbIbK#B#ybFbDbK#B#Bacak#P.saeadakaGbubuaB#R.raa#x#p#p#w#E#p#w#s#q#x#E#p#w#F#x#x#wbG#w#v#w#C#C#x#w#EbL#x#x#v#x#L#U.t#0#B#v#vbDbJbEbQbFbNbNbA.ZbJbC#zauaKaxao#L#D.k.k.jbE.i.jbCbK.f.g.e.e.c.c.b.#.#....aAavao#J......................................",
".AbTbebgblblaW#e.J.4.K.y.y.1bV.1aWaP.K.J#f.E...................7#f#i.M.x.1bV..aP.4.G.K.JaZ.K.J.Mb..8#l.1.O..........#d.M.uaVbrbia9aR.4brbybxaR#8.I.C.1.IaU.4..a1a8a1.O.P.uaQbobsbr#8.P.Ca0.e.g.f.h.h.h.N#7.F.C.FbT.o.W.Wa2ag#6.Y.Y.Y.Y.Z.WbMbMbA.V.S#3.QambE.Ra8aR.r.DabbDbJbD#AbC#BbIbGbG#B#BbG#P#P.saeaLaD#4aGaHaC#1#P.qac#w#p#x#pbL#F#D#G#E#x#C#F.o#w#G#C#x#w#v#v#p#p#w#Eazar#X#w#BbG#FbNbDbB#A.XbGbPbN#AbCbMbFbFbFbJbGbEbB.Yavavap#T#Jao.k.n.k.ibObF.h.f.f.g.e.c.e.b.a.#.#.#auawax#V#J......................................",
"#fbeaW#ebmaU#e#b.w.K.M.J#daS.1b1bh#e.y.Jbf.........................M.wbV......aXaX#d.w.1aZ#d#b....aV.O.Ga5..............aR..a8b4a6aO.Oa9a7aR#8.1.C.IaR.I.O.zaU..aRaO.O.uba.#a1a0a..N.v.Fa1.c.g.f.f.h.h.i.C.E.Fal.o.mbqbtbpag#3.B.Ybnaiag.E.YbCbF.T.UbJ.SbFbAbMb4a5.O#d.jbMbJ.jbEbObNbK#vbG#yaHaCaa#P.laHaLaD#RaBacaa#R.q#1#O#q#C#p#pbL#F#C#q#DaAar#Q#C#w#CbG#w#p#w#x#x#xbHazaGar#0aGazar#X#NbI#w.X.XbDbM#BbG.Y.Z.Z.Y.ZbCbFbAbB.Waoao#V#Jas.o.k.k.h.hbNbC.h.f.f.d.e.c.b.b.a.#.#.#apapao#JaC......................................",
"bgaWaP.4aT#e#a.x.1bSbh.5.w.yaZbm#e.4.x.1..........................bdbb#j.........M.G.wbaaX.GaV..b0a6.4.I..................a5brb#a8.4.Ha1aQaN#8.H.ubaa4aR.O#k.#.#.P.N.ual.#.a#8#8.N.C.Eb5aR#8.P.g.f.f.h.h.i.k.k.n.m.obnbpa8a7aRaObpbvbnaf.E.E.V.T.VbMbCbA.lbMa5a8aO.CaO.jbMaFajbFbPbDbCa7a1aGb3aC#Y.rbGadad#4.q#2#1#O.q#OaM#Y#xbI#C#C#x#x.X#CaGaLar#Q#K#0#x#v#w#w#DazaIar#QaKaMarazaHaKar#X#K#A#v.XbG#BbFbDbD#A#D.V.Z.YbB.ZbA#z#A#y#J#Laq#D.n.p.k.h.h.h.f.f.f.gbObM.b.b.b.#.#.#....#T#J#T........................................",
"#caP.4.y.z#b.w.waSaW#a.w#e.ybdbb#i.x#aaYa6aV#e........bqa0.NbiaVbfbkbd#i.5..........blbf#h.A....bxa6.L.L......a8a5.O........a5aRaN.O.u.x#8.O.H.P.FbZa5aR.4.u.#...#.#.#...#.a.#.E.N.Na4a0#7.P.F.e.g.f.f.h.h.k.k.ia5aRaNa2bibZa1aObobrbo#9.D.C.T.Vaia#bA.S.lbCbCaO.I.FbC.jbzb3af.DbCbDbOb4a1aCaFaFah#5ae#Aak.r#2bK#C#R#R#P#PaCaGazar#OaCac#G#pazar#X#K#Y#0#K#A#H#paGaLaGar#R.qaI#0ayaGaKar#Q#K#0#DbCbD#y#A#AbPbC.Z.YbA.V.Z#zbCbA.YbMbFbJbBbObE.k.h.h.h.h.f.f.f.gbFbC.b.dbPbM.#.#.#................................................",
"#c.y.y.yaSaY#daTaP#e.y.waXbkbdbia6aVaP.Lb2aW#d.w....a9b3a1bib7aSbkb2aU#k.z#f........b2bc#i.5....aQ.4.xb8....bib2aR.O.Ga8a6aRaQaO.O.I.ubaa4.H.uala5b4a5aO.Oa9aQ#8...#.#.#.#.#.#.O.Obqbsa0#7.C.N.e.c.g.f.h.h.h.ibra7a1.O.HbxbsaQ.Oaiag#9#3.B#6bzbzaE#5.B.S.l.l.l.j.1bCbBbKaDah#2.DbC#za9a9aOaFaHaFad#5#2#2.X#v#B#CaGac#O#PaC#xaLaLar#OaJak.q#p#X#X#N#Qaq#K#M#C#C#waGbtaC#Z#O#O#0#Uazazar#X#S#K#B#vbPbJ#AbD.YbCbB.Y.YbMbE.Y.ZbA.ZbObPbFbFbObObB.k.p.h.h.h.f.f.f.f.e.b.a.abMbM.#.#...#..............................................",
".8.A#i#daW#d.y.waX.1.x.1.Kb2bibia6aV.4.O.xaX#d.xaP..a8a6aXaP.L#ebdbd#g#c.zaY........bkbd#j#c.z.....Ja9aRaO..a6a6.4.Gbibxa5aR.L.H.C.Halbs.uba..a6a8a8a6brbqa9aRaN.N.C.#...#.#.#.abobsbsaN.N.B#8.eboag.N.h.f.ha7b0bZaR.N.P.OaQ#8.I#9#9#6.B#6bsbzbvaia0#9#5boboa2a..BbAbBbFah#5.sa4bF.ibF.4.4aHbvbvad#4.r#2#D#AbHaLaLac#O#B#BaIaGar#X.tas#P#PbH.X#E#X#M#N#1#G#x#p.XaIaC#Z#Q.q#Q#Q.t#0#0#X#N#NaMbObMawavat#V#D#A.Y.Y.ZbFbB.V.Y.Y.W#ybMbFbCbEbFbM.k.i.kbM.f.f.f.e.e.c.c.b.b.b.#.#....................................................",
".z.5aUaT#e.4.A#d.4.L.1b1bda6bxb4a8aP#d.L.x#d.J.L..bibia6aVaO.L.xaU#c#b.AbR.#......bkb4bk#i#b.7..a8a8a5aR#8.HaRaO.1.IbibxaVaO.x.1.zaO..........aVaVaRaObrb4a9aQ#8.H.u.#.#.#.#.#.a..a2a0#7.E.Cala3boa2#7.B.f.fa9a8a5#8.N.CaO.4.IaEah#9.B#9a2bEaiboboa3ag.Ebqbya2#9.Ea#.jaHaFaD#5.DbF#z#ybN.OaFaFaE#5#4.s#2bGbDaGaHaH#Y#P#R#D.X#Z#Q.t#1#P#Pbvazar#QazaGaB#X#x#w#w#D#Z#Z#Q#O#Pb6#L#Q#C.t#Q#QaCbDbQbMauaMap#TaxaxaqbMbFbAbA.V.Y.Y#y#v#ybFbB.n.k.nbObMbNbM#B.f.f.g.d.d.a.b.a.#.#......................................................",
".A#caZ#k.4.KbmaWaP.4aZ.Jbcbmbibib#aP.4.I.x#e.wb1bkbjb4a6aRaO.G.xbb#e.zaT..........bdbdaU#c.z.7.Ia8b4a5aR#8.H.H.L.xaVaVaVaO.O.uaS.A#i............aOaOa9bybxa7aO.O.H.HaNa1#8.#.#.#..a.#7.F.CbT.cbobya0#7.C.h.haRaRaO.1.u.Ca1.Nbpbpaia#.D.T.VbAa#bqb4a2a.bobsbvai#7.E.Ebzbybpah#4.DaCad#PbQbDahahab#4.r.QanbK#A.YaBaa#P.qaD#B#v#v#Q#Z#x#F#waGbYar#QaGbuaB#X.q#wbKbGax#Q#O#O#1.tbY#y#D#v#vawat#TbQbMavax#VawaAawaq#TbCbBbA#z.Y#y#y#v.X#D.n.n.k.hbMbCbFbC.h.f.e.dbObF.b.a.#.#.#......................................................",
"#ebX#d.G.4bhbgaWaT.4.y.y#kaVa6aVaP.4.1.u.LaV#g#bbibxbxbiaP.1.G.G#d#c.7#k..........aUaU#k.5.KaYa5bxbxa8aO.O.P.N......aOaO.O.x.1bV#cb2...............La3a7a7aR#7.N.C.IaRa1#8.H.#.#bqby.P.Ca4#7.Ca2a0#7.F.N.g.i.haO.N.H.Fb3.Caibybyaia#.B#5bC.T.Tbobra2#7.Ca2a0#7.E.Ba.bzbtbtab#2.r#2aa#PbJbJ#Aaa#4.r.DamaJ#A#ybBak#P#Oam#B#BbG#BbI#v#BbQbKasaI#XaIaGaH#Z#O.qbDbKaMax#W#J#B#Laq#B#AbNbDauaKat#TbMbCao#W#LawaKaA#V#L#U#z.Z#z#y#y#y#vbG#DbNbC.h.i.hbJ.h.f.h.f.ebNbMbB.b.a.#.#.#.#....................................................",
"#e.y.K.xbibxbjaWaT#d.y.yaS.4aPaPaO.M.x.1aSaV#k.AaVa8a6aP.4.L.u.NaV.7.z#j........bWb0#b.z.zaZ.4bia7a5aQ.O.I.ual....a5aR.O.IaOb##fbebhbc#i.y.........4aQa1aQaN.N.C.Iala9al.Hal.#.#a0bob3bsa..E.C#7#7.E.Eb4.f.f.h.h.N.NaQ.C.Caibpaia#.D.BafbAbA.Ta2a0a..E.Ba.#9.E.B#6a2aDaEae#4.r.Qafak.qaB#P#B.Q#2.Qafah#z#A#A.YbF#zaAaIar#N#x#ybQbK#wbK#B#Q#Y#O#RaB#Z#R.q#ObGawazaz#T#J#y#A.ZbD#AbK#Bavaxao#L#V.Y#A#L#Maxaxaq#U#Kasauat#T.Z#y#v.X#D.mbMbD.kauao.h.h.f.f.e.g.dbJ.b.a.a.#.#...#....................................................",
"#a.y#d.4bxb4b0aWaP.4.w.yaX...4.4.M.1.wbTa6#i.7.AaXaRaPaO.O.x.1aPaV.A#f..........blbca6a5aO.I.IaVaQaOal.N.ualbaa8a8a5aRaN.Ia9aRaNbhb7bc#i.z..........a8#8#8.N.H.CalbZ.N.C#7boa0.N.#a3a3aN#7.C.F.g.c.N.c.e.g.g.j.f.h.h.i.k.k.kag#9#3.s#9.SbC.S.S#7a#.N.Ea#a3#3.BalbaaCabab#5.D.salaF.raHaCaa.r.ZbBbJ#BbD#AbG#AbG#ybBaHaH#Z#S#wbDbKbDbKazaGar#Y#X.X#R#Q.q#O#A#A#Waq#U.taMbJbA.WbB#ybD#Bapao#T#L.V.YbFbD#A#W#W#U#J#0awaAat#V#L#v.X#E#D.k.n.kavayap#L.f.f.f.e.e.c.b.a.a.#.#.....#....................................................",
".K.w#abmbhbjbiaT#c.1.w.4aXaT#b.y.L.LaTaZ#j#c.A.8bc.4aO.M.L.xbab#.A#cbX..........#ja8b4aVaO.x.Ib#.O.O.I.F.Ib1..bib5a5aR.O.G.LaR.4.Cbhbc#b.yaU........a5aR.H.C.CalbY.#.#..bhaW#e.xa.a.a.#7.E.Ca0ag#9.d.c.e.g.f.f.h.h.h.h.k.i.k.E#3.s.Nam.o.S.SaFaE.C.Eala4bzaEaf#5btad#4#2#2.s#5aD#PaHbvaD#4.raBbG.ZbObM#A#B#A#ybGaraG#Z#Q.t#ZbKbI#B.WaGaGaI#Z#ObCaq#0#R#XbObP#A#L#JasbQbFbNbC#D#ybPbD.0#z#Laq#T.Y.Zazaq#W.V#L#0bAaxayap#T#L.X.X#D.n.n.k.haxawao#J#V.h.f.e.e.c.b.a.#.#.#...#......................................................",
".w.yaVaVbmaWaV#d.7.y.w#baTaU#c.x#k#b.A.7.4.5.7bWbb.4.G.G.Gbab#..#c....a8a5aP.I....a8bxaR.1.uaPaOaO.O.N.OaO..a8bxbZa5aO.L.I.LaR.4.uaO#f.y#fa7a1aQ.F...4aO.G.G.1b1...#..bib4aW.4.wa0.#.N.C.Cbpboa2#9.E.c.e.g.f.h.h.f.h.h.i.k.k.k.n.m.m.m.m.U.TbuaFab.D.Sbpbvbnaga#.D#4.r.Da3#8.EbBbCaDaCab#2.qadbMbObMbF#ybIbGbNaC#Z#Z#X.q#QbPbQ#AbKaGbuaLaI#X#O#QbQ#M#YbJbMbFbCaGaAao#JbBbCbC#D#CbF#A#zawawax#W#Mayayaz#0#M.VbBbEavap#V#Jao.X#E#D.k.n.k.katap#T#L.h.f.e.e.c.c.a.a.#.#.#..............av#V........................................",
".wbSbmbcaTaT#e.4.1.x#daZbc#i#b.A#i.7#i..bc#cbdbb#iaV#e..............bib4a5aO.IaO..a5aR#8.u.Ha5aN.Ia8a9aQ.O..a5a8aVaR.O.I.uaRaNa7a1aN.N#ba7b4a1aN.I..a7.I.L.1b...bqa3a0bgbga3a0#7aT.#.#.a.#bpb4ai#9.E.E.d.g.g.f.f.f.i.h.h.k.k.k.k.n.n.m.m.SaEaJah#6.DaEbrbvbnaf#3.B#6.rb5a4.N.NbBbBaFaDaj#2bwbAbNbObCbFbBbBbQaGbY#Z#O#S#YbC#A#BbK#CazaGaI#X#O.t#ZbDbBbPbObOayar#Uaq#T#J#WbJ#DbG#B#v#z.YawaAaq#T#MawaKazaq#K#VbFbA#V#V#L#M#v.o#D.k.k.p.h.i#T#L#LaK.f.e.e.e.c.c.b.a.#.#...#..........auauap#L......................................",
"#fbmbWbb#d#e.4.y.J.ybTbjaY#e.z.x#i.4.z.4.5a6a5aP.4aWaP.L.4..........a6a8a5.O.uaRa9aO.O.I.Ib1a5aRa8bxa7aR.O.uaRaRaOaO.G.xalaVbra8a9aN.4.Cbqa8a9.O.uaObxaQ.P.N....braWaX.4bobsa2a..E.#.#.#.aboboa2#7.B#6a#.e.e.g.f.f.h.g.f.h.i.i.k.k.n.m.m.S.mab#4.D#6aibnaEaf#3.D.BafaaaN.N.Ca3bMaHaFaEaj#2.Q.ZbPbJbMbBbB#z#AaBaB#O#PbEbJbA.Y.Z.U.T#Z#Z#Z#X.t#1aB.U.XbQbPaybuar#U#K#JaMbB#A.W.Z#DbB.ZbBaxaq#W#J#Waxay#W#U#Jaq.YbC.W#v#V.X.obH.2.k.h.h.h.h.h.h.f.f.f.e.e.e.e.b.a.a.#.#.......#......aAaAao#L.#....................................",
"..bWb0bb#c.J.K.w.1aZbgaU#e.4.A.K.z.z.Ka8bia8a5aRaN.G.4.G.1..........aRaR.4.u.1aVa9.4.u.OaRa8bsa1bxb3a4a7a0aN.N.4.4.P.1.Jb5a7b3b5a9aN.4.PaNa0a3a3a0aN.N#8.C#8boa0bibiaVa3a0#8a0#7.C#7.#.#.aaga.#7.B.Ba2ag.g.e.g.g.h.f.i.h.h.i.i.k.k.k.l.m.m.m#2.r#6.S.Rahafa#.D.s#7ahab.raDab.SbFbpb3aJab#3.QbFbFbAbPbAbCbB.ZbM#R.raIbPbCbA.Y.0.U.U.S#Q#O#O#1aM#K.U.XbKbDayaA#W#N#NaqaMbD.Z.W.0.YbB.ZbB#z#V#L#Lapar#W#U#J#N.Z.Y.W.W#v.X.o.obNbJ.k.h.h.h.h.h.h.f.f.f.e.c.c.c.a.a.#.#.#..............atap#T#L......................................",
"..bdaY#g#c.Abdb2aTaU#i#e#b.yaZ#e.K.z#ca8b5bZa5aP.O.G.L.xaO.............O.I.IbxbcaT.4.C....bsbxaRa8bra8a8a1aN.H.C.G.GaOaR.Na9bra7aNaNa3boa1aN#7.Ca0aN.N.v.I#8.Cagb0b4bqboa2a..E.P.Ba4.#.#.#.E#3.B.EbTam.b.d.d.g.g.g.h.h.h.h.h.i.k.k.k.k.n.l.m.l.R.S.R.l#3#3.E.E.DbwaDabaFaFad#2ahbzbpaD#5.Q.QbB.Z.TbFbBbC.Z#zbMbObMbAbFbB.0.0.Y.TaGayar#S#1#U#Kan.V.Z.W.Yar#0#M#KbYbB#yauat#TbE#zbGbA.W.ZbBatap#V.t#U.t#XaAbNbMbM.W#v.o.o.lbObF.j.h.h.h.hauauatao.e.e.c.c.a.a.a.#...#...#.#........#V#T#Tas......................................",
"aO#j#i#c.z#cbcbkbb#c.4.4b2bWaT#e.y#bb8bxbxbZa5aO.L.H.O.4aV..........bhaWaT.7bhbgaW#e.y..bda5aQ#8aRbrb4bsaR#8.N.Nb2#8#8.N.CaRa1aQaNbobrbqa1aQ#7.E.PaN.N.C.N#7.C.Ebia3b3byag#7.C.Eba...#.#.#.#.a#7.e.a.b.b.c.dbnaiaf.B.f.g.haiaj.i.j.k.kaFah#4.l.l.R.R.R.R.R.D#6ag.R#4aFb3bpad#2.sahahae#2.s#2#z.Z.Z.SbCbF.Z.Z.ZbMbBbJ#zbB.Z.V.W.SaGaL#Z#Oar#Mar.V#D#z#A.Y.Y#M#SaB.W#zauaKap#TaobAbCbB.Y.V.Z#L#T#L#0avapbNbObObFbCbE.U.o.nbHbDbD.i.h.h.h.fauaKat#V#J.c.c.b.a.b.#.#.#....................................................ap........",
"bb.4#b.A#fbV#gaU#i#c.ybca5aRaO.4.w#b#ca6a6aRaO.1.G.IaSbVaZ........bkb4bbaP.4b0b0aU#e.J#bb0.O.O.Ha1aN.NbsaQ.O.F.CaNaT#b.NalbcaO#8.Na7b4b3a1aN#7.F.C#7.F.C.NaR.F#9aRa3boa3ag#7.C.E.#.#.#.....#.a.a.#.a.b.c.dbzb5a2#9.B.fbzbzaEaf.D.iaFaHaFad#4.s.l.m.l.l.l.S.R.R.R.R.RaDaFaD#4#2.Q#5#4#2.D#2am.Z.T.T.tbF#zbMbF#N.Z.T.VbGbB.Y.0.Y.Tazar#Q#ObFbF#z#z.Z.Z.Y.YbB#DbBbBbLbBavat#V#J#y.WbBbCbGbC.V.T#zbPauaAat#V#JbMbGbF.WbQbF.l#D.h.h.h.h.h.h.favav#V#T#L.c.b.a.#.#...#.#..................................................auavatao#J..",
"bb#k.z....#fa3#e.4.z.5a8a8aVaO.N.IaZaQaVaRaP.O.1.u.Ib.aZ..........bkblaW#ebgblbk#i.1.A#faU#cbra7a9aQ#8.C.O.I.C.1aR#b.AbVbV.....P.Cbqbxbra1#8.N.C.P.N.C.Cal.C#7..a0a0amaN#7.E.Ca4.#.#.#.#.#...#.#.#.a.b.b.bbnbnaf#3.B.gbzbybn#5.D#3aFbYbtab#4.r.m.l.l.l.R.R.R.R.R.S.Radadab#4.s#2.R.R.D#6.Z.T.Z.S.RbObNbObMbBbF#z.T.TaIac.T.W.0.T#O#Q#OaMbBbB.Y.V.V.V.V.Z.VbA#z.YbQbMbM#V#LaqbB#y#zbMbMbF.Z.T.TbFavaKat#V#LbMbB.o.XbMbFbH#E.h.h.f.h.f.f.fapao#T#LbY.b.b.a.#.#.#...#.#................................................auaKat#V#L..",
"aU#k.5#e....a.#7.5.zbibxa8aRaO.O.u#8.H.NaO#8.I.L.IbZ.#............bcaU#e.1.waW#i#b.x.zaW#k.5bsb0a1aQ.O.H.H.u.Nal.H.4aZ........a0aNa3a3a0#8.N.C.C#7.C.C.Pa0.Balbqa2#9#7#7.F.Bbwa3.......#...#.#.#.#.#.a.a.baiaf#3.B#7.gaiai#9#3.s#9aDaJad#4.D.Qae.l.l.l.l.l.R.R.R.l.R.l#4#2#2.DaF.R.R.R.Z.R.R.R.R.RbFbFbObFbC.T.Z.ZaAaGar#O.TbBaGaM#Z#O.V.V.Z#z.V.V.Z.T.TbB#z.Y.VbMbC.VbC#zbBbB#zbBbMbBbFbC.VbC.Vavax#V#L#WbBbM.U.mbM.l#E.h.h.f.h.f.g.f.g.d#T#Jaq.b.b.a.a.#.#.#.....#................................................auavao#T#L..",
".4.4.waU.......E.Na2brb0bxaR.4.I.xaO.#bhbc.L.ualb.al..............#e#e#b.A#b#d.4.1.za4a7a1brbZbZa1aO.O.P.H.Nbab#.Ca0.Dai..bqa7a1aNa0aN#8#8.P.v.1a4.C.Nb1.C.Fa0b3a2#7.B.E.Bama0...........#......a6aP.#bzbnbnaf#3.B.H.da#af#6.B#3aEadajab#2.s#6.n.l.l.l.m.l.m.m.R.R.Ra7b4aQ#5.S.R.R.R.R.R.R.RbMbM#zbB.VbFbCbB.Z#zazaLaH#Y#O#QbBaIar#Q#ObB.V.V.T.Y.Z.Y.VbBbG.Zat#W.TbG#z.ZbFbMbJ#z.Z.ZbF.Uaq#L#zavawawaq#W#KbCbPbBbObMbBbPbB.f.f.f.f.f.e.e.e.c.c.c.b.b.a.#.#.#.#.#.....#..............................................apao#T#JaM..",
".8.A#faW....ayar#N..a8a8a1#8.O.u.GaR..aT#eaP.O.u.NbZ.................5.z#fbj.#.4.K#ibxbia1a9a7a9aQ#8.N.u.OaQa4.Nba.Dam..bqbybsa3aN.O#8#7.P.P.FbT.v.1ba.F.EbZa3a0a..F.F.......................#aEa2#3.4bzb5aiaj#6.BaS.g.g.D.Dala4.i.i#5#2.D.rbw.l.l.n.l.l.l.S.R.RbM#za3a0.N.C.R.R.R.S.S.RbFbBbMbFbBbFbFbF.RbB.TbBaIaGar#R.tac.T#Y#Q#QbubA.V.VbC.Z.VbBbBbBbGawazaq#M#z.T.VbBbMbB.T.T.TbFayay#WaxavaAaMax#W#JbAbFbFbFbC#EbMbM.f.f.g.f.e.e.e.e.c.c.b.b.a.a.#.#.#.#.#.#....................................................#T#Lax....",
".z.zbV......aK#0#Kara1aRaO.O.I.IalaR.....4.5.N.1b...........a7aQ.N..#b.4.KbT......brb3b3a1a1aQaQ#8.1.u.CaSaTa3a1aQ.N..bqbob3b3a1aN.N.P.P.C.Na4a1al...N.Eal....#9.E.CbZ...........#.....#.#.#btbvah#5a2bpbtai#5.D.B#9.g.d.d.g.g.f.h.h.h#2#4ae.k.k.l.l.l.l.l.l.l.RbFbB.S.N.Ca5.R.R.R.l.l.lbFbBbJbB#zbMbMbM#zbFbB.S#z#Z#Q.q#1ayazar#N.VbCbF.T.VbB.YbCbC.Z.ZayaKaz#V#L.VbMbFbB.ZbC.T.T.TayaAaxavawaqayay#W#M#J.mbCbI.jbPbEavavap.g.e.g.e.e.e.c.b.b.a.a.#.#.#...#.#.#................................................................",
"#fb1....a5aOar#M#X..#8aN#8.I.u.1b1..............bhaW#e.4..brbsa0.N.C....a9a5aRaO..a9a8a7#8.O#8.1.N.H.Cbaa4bqa7a1aQ.N.vbra3bra4a3#8.C.C#7.........................Ea............#...........#bpbtaf.D.Damafa##6.Q.E.c.d.c.d.d.g.f.dbzaEaj#3.D.i.k.k.k.l.lbna2a#.CbF.R.l.R.l.R.R.l.R.R.RbFbFbC.RbC.RaGaB#RbFbFbAbC.S.S#Oaa.WaAaLar#Oar.VbBbJ.Z.V.V.V.ZbJbBaxazaq#U#JapbMbBbE.S.T.T.T.Uaxatao#Jap#Vaqaq#U.tan.n.k.k.hbMbCaxayap#TbMbA.c.c.c.b.b.b.a.#.a.#...#......................................................................",
".L.Ia8a8a5aO.N.I.#...L.N.N.v.1aV..............bhbibmaT.4.xbxbxaN.H.H..a8bia7a1#8.Ha1aQaQ.1.H.u.F.C.LaRa9.vbxb5a1aN.N.va3a0a0aN#8.N.C.CaS.......................................#.#....ab....aiaf#6.D.E#9#5#3.D.Db4.b.b.da7a1.4.gbzbpaEaf#3.Q.i.j.k.l.kbvb3aga#.B.l.m.R.R.R.R.l.R.R.RaDaabBbC.l.SaGbvaB#R#Q.R#z.R.S.S.SbBbAasar#M.t#B.ZbNbMbC.VbE.TbAbF#zaq#W#U#J#0bCbA.U.S.S.T.T.U.U.U#T#J#U.X#L#M#L#J#U.n.k.h.ibH.0auawaAao#L#TbJ.e.c.c.b.b.a.a.a.#.#.#.#......................................................................",
".I.Na8b4aRaO.G.I..bgbmaT.4.J#e..........a6a6aVaP.LaWaP.4.xa9aQ.4a8a1aR.Nb4bxaR.O.H.OaN.N.P.Calb#bsa7#8.Na7bsb#a1#7.F.CaQ#8aN#8.N.C.FbTbs............................................ai#9.D..#9#3.D.Bbs.##3.B.Bam.b.b.c.ab5a5.OaEbvbvaEaj#3.D#5.h.i.j.kbobo#9.E.B.l.l.l.l.l.R.l.RaHaHaFad#2#PbE.RaGaC#Z#O#Y.R.S.S.S.S.S.T.S#X#Q#SaJ.ZbFbFbCbBbFbH#z.Z.V.T.W.Z#KarbAbB.Z.T.U.T.U.U.V.U.W.U.X.o.U.U.m.m.n.nbM.j.i.ibH.fatatao#T#Jaq.e.c.b.b.b.b.a.#.a.#.......#....................................................................",
"bhaU#e.zaQ.O.u.1bjbVbmaT#d.x.y.z......bibibiaVaP.4.x#d.J.waP#8a8a8a1aQ.O.ua1al.I.uaObh.I.vaQa5a1a0#8.N.v.Na1aQ#8.N.v.Hbi.N.N.P.B.Cala4............................................bzbnaf.Eah...##6.....#.#.#.a.a.a.b.b.caRaO.HaEbpbnah#3.D.Bafaf#9.h.iaga.#3.B.E.l.l.l.l.l.R.R.RaFb3aFab#2.rbC.ZaB#Z#RaCaBaa.R.T.R.S.R.T.R.T.T.R.T.TbJbBbB.S#zbBbB.Z.S.SbGbBbF.TbM.Z.U.U.U.V.U.U.V.U.X.U.o.mbMbObE.n.nbObObB.hb9#E.g.d#V#T#Jas.e.b.e.b.b.b.a.#.#.#.#.#.#..............................................auap......................",
"blaW#i.z.K.I.1bgb0b0aW#e.1.w#e.yaR.Obobib7bxa6a6aRaO.M.w.JaVa8b3bZa1aO.O.C.O.N.u.HaVbgaWaP.M.x#a#8.N.P.Hb#aN#8.N.v.1b4b3bZaR.4.N#8..............................................bzbvbv#9.B.D.#.....#...#.#.#.#.#.a.a.b.b.N.u.1ahahaf#5#2.s.Dahaiaj#3.0.R.E.B#3a2.n.l.l.l.l.l.l.laHbtaJ#4.Q.QbB.S.R#OaHaGaDac#P.R.R.S.S.S.T.R.T.TbPbBbE.Z.S.S.Y.Y.T.T.S.SbAbPbFbObMbB.V.U.U.U.X.U.o.U.o.U.m.mbEbObC.n.kbJbFbM.hbH.g.g.d.c.e.c.e.c.b.b.b.a.b.a.#.#.#.#.#..............................................auaxat#T....................",
"b2aT#c.y.K.Hb#aWbib.aX#d.w.yaT.xaR.O.ubibxbia8a6aVaO.L.xb1.Na8bxa5aRaN.O.C.O.H.Ib1.waXaP.4.w.1b8bs.N#8a0aWa0.N.u.1baa8a6a5aO.I.GaRa0#8............................................aiaf#3.Bam.....#...#...#.#.#.#.b.a.a.b.baCad#4#5#5#2.D.Db1b3aD#9#2.s#3.i.i.k.k.k.k.jbPbF.l.l.RaDahab#2.r#2.R.S.R.RaHb3aDaa#P.r.R.S.S.S.S.S.S.RbFbF.SbF.S.S.S.T.T.S.S.T.TbFbObMbF.V.U.U.U.o.m.o.o.m.o.m.m.n.m.n.l.k.k.h.h.ib9#E.g.e.c.c.c.e.c.b.e.b.b.a.a.#.#.#.....#............................................avaxaAao#L#T..................",
"aW#d.7.x#b......aTaT.4.1.wbTaW.w#e.HaNa5a6bxb4a6aR.4.G.Ial.Na9a8a7aRaQ#8.I.C.O.H.4.waX.4.xa7a1aQ#8bobmbiaW.N.N.EaVaPbib4aVaO.I.Ob3a2#8.E................................a3a0a..P..a#.D.Da4.......#...#...#.#.#.#.#.#.a.aaHbtadaa.r.D.D#6ambvbtai#6.D.saf.E.i.i.i.i.k.kbMbB.R.n.lab#5#2.r#2b5.S.l.R.maHaHaDak.r#PbC.S.S.S.m.S.S.S.T.S.U.U.S.U.U.U.S.U.U.U.VbMbPbF.X.UbM.S.m.o.m.m.o.m.m.m.n.n.k.k.k.k.k.h.f.hbH.d.e.eavao.c.b.b.b.b.b.a.a.#.#.#.#....................................................atap#V#L.#..................",
".G.4.w#daY......#d.4.5.K#aaY.A.Jbra7aRaPbmbibxbiaP.4.x.IaV.Ia8bxbxa5aQaO.P.C.O.H.O.waTa7bra7a1aQ.O.ubhb4aW#da8a8a6a8bxbxaR.O.x.Ob3a0#8.Ea.............................bqboa0a..E.C...#......aCad.q.#.#...#.#.#.a.#.#.aaFbubvah#4.D#4.d.c.daEai#5#3.Q.D.Ea#.g.j.j.i.j.i.j.k.k.l.l.l#2.r#5am.R.S.l.S.ladac#4#P.sab.m.U.m.m.U.U.U.U.S.U.S.U.U.m.U.U.TbMbM.Z.U.UbFbB.mbMbPbB.n.m.m.m.n.l.l.n.k.n.k.k.h.h.h.h.fb9.2.e.eavayao#L.b.b.b.b.a.a.a.#.#.#.#.......#............................................#V#T#Tas....................",
".J.J.5bV........bjb0.5#eaZ.A.4b1b4a7aWa7aVa6aVaP.4.G.x.1a6.Pa8b4bZaRaO.O.H.uaQ.H.ObV..brb4bxa1aQ.O.I.HaVaP.Jbib4biaPa5aRal.G.Hbaa0#8.F.Ea...........................bqb5bZa0#8.E.C.......#..aHaa.s.#...#.#.#.#.#.#.a.#aDaFaE#5#P.D#4.b.c.caf#5#3.D.DbY.C#E.0.g.i.i.f.i.j.i.k.k.k.l.n.l.m.m.laCacak.m#Pak#P#Pam#N.S.m.U.S.U.m.m.m.m.o.m.U.o.m.S.RbM.ZbBbF.m.m.m.m.n.nbFbCbE.n.n.n.jbPbE.j.n.h.i.h.h.h.f.f.gbR.g.c.cavat#V#L.c.b.b.b.a.#.a.#.#.#.#.....#..........................................................................",
".w.JaV........bgb0b0aW#e.Ja7a1aQ.Nbgbma8a8aRaP.4.L.u.1ba.Ma9a8a8bsaR#8.N.H.HaO.ual....brbybya1aN.N.P.H.x.1.wa6a6aP.4aOaO.L.u#dala..N.v.1a0..............bzai#9......a3brbqa.#7.B.F..........aa#PbY.#...#.#...#.#.#.#.#adadaa#2.r#5an.a.2.2.D#2.Q.Dam.g.g.0.0.0.0.d.daB#Y.i.i.i.k.k.k.k.n.laHaHadak.qaGar#4#Q.qb5.m.m.m.m.m.m.m.max#W.m.m.n.l.m.lbFbB.l.l.mbMbM.k.k.k.jbMbA.n.n.k.kbMbB.k.i.ibNbN#A.h.f.g.g.2.c.c.cap#V#JbY.c.b.a.a.#.#.#.#.#....................................................................................",
".x.1......a9a1aWbiaWaP.4bra7a1aN.O.uaWaVa5.4.4.J.1.IbTaP.L.Ja9a5aRaO.O.H.u.NaQ.Ha1....a9a7a9aQ#8.H.Cal.xaVaPaRaRaO.G.1.L.IaV.....E.v.Cb#................b5ai#6.B....a0a0a.#7.E.val........a1#8.....#.#.#...#.#.#aHaD#4.s#4#2.s#2bs.3bHbHbR.d.b#4.d.b.d.d.d.g.0.2aGaGaIac#O#5.i.i.i.j.jaGaHb3btac#4.raI#Z#Q.taC.m.m.m.n.m.l.n.maAaxao#J.n.n.l.k.k.n.k.k.k.kbMbCbC.k.i.k.kbD.k.i.i.k.i.ibMauapbEbFbJ.f.g.gbSb9.c.b.b.b#V.b.b.b.a.a.b.#.#.#.#.#....................................................................................",
".JaS....brbra1#8aT#i#da7b3bZa1aO.N.u#8aOaQaO.G.L.1aSb1aVaR.GaQaQaN#8.H.u.1aQ.HbT.C.C..aRaRaQaO.P.v.Ha4.1.......L.w.xb#............................a7a9aQ.Na2#3.B......a.#7.E.B#7a3......a8a9aN.C.....#...#...#aFbvaDak.r.abp#6ag.Eb9.c.b.b.b.b.d.d.d.b.d.c.d.d.daGbvaI#Z#P#O#2#4.iaFadaaaHaHaFaa#2.rab#Q.taM.n.n.n.k.l.k.n.kaxayax#U#J.n.k.k.k.k.k.h.j.i.i.ibF.iavao.i.h.i.h.i.i.i.hbNaxayap#T.f.f.f.e.b#f.b.b.b.b.b.b.b.a.a.a.#.#.#.#.#.#.#.#.#................................................................................",
"b#bgaX.4bxb3a1.N.1#b.wa7bxbsaR.O.P.C#8.J.O.N.I.uaObZa8a5aO.I.N#8.1.H.I.Ib#a4a5#8.C.N..#8.4#8.N.C.HbTa4b.........................................a8bxa9a1aQ#8.vbabzaEaha#.N.Bala4......a7bxb#.O.C.......#.......#aCaa.r#2bpbybnaf.E.B.a.b.#.b.b.d.d.d.c.b.c.b.d.daGaHaC#Y.q#O.D#2aHaHaBaaadadaa#4aCaIac#R#K#Nawav#V.k.k.k.k.k.laq#V.tan.k.k.k.k.k.k.h.i.i.i.h.hauavap#T.f.h.h.f.i.h.hauaAaAao#L#TbC.d.cb9bR.b.b.b.b.b.a.b.a.a.#.a.#.#...#.#.#....auat#L..........................................................................",
"aVbgaVaP.J.waO.N.Ca1.4a1a1aQ#8.N.u.Ha1a6aVaO.LaObib4bZaX.4.L.I.I.I.u.1a4a5a3a..N.Cal.....N.L.v.Ibaa4bia6aO.x..........................bzai#5....brb3bqa7a0a..PaEbvboag#3.B..............aRal.C.H....aFah#4.#....#4#P.raDbnbtbn#9.D.D.a.a.b.a.b.a.b.baiaj.b.b.d.caCaB#Y#O.qaa.DaHbvbuad#4akak#5aGaGaCar#R.q.kaAax#L#W.i.i.k.i.i#J#Las.i.k.h.i.h.i.h.h.ibPbB.havaKaAap#T#T.h.f.h.f.h.hatatap#T#JaxbF.c.cbR.b.b.b.a.b.a.#.a.#.a.#.#.#.#.#.......#auaKap#T..........................................................................",
"b4biaV#d.J.L.N.ubaa1.P#8aN#8.N.C.NbTa7bjaVaO.L.La8bZbiaR.1.I.IaXaV#d.xa0a0a.#7.C.Ca1..a8b4a5.O#8.IaOb4aVboa2a0.E......................b3ah#5.B..a3a3b3bZa0#8.P.Nbtbzaiaf.D#9.............N.F.Fa4..btbvad#2.r.#bT.2bSb6b6aiag#9#3.Bal.b.a.a.a.a.b.abvbn#5.D.b.b.c#Y#Y#R.q#RaCamaDaLaD#4#2.s.raGaHbuaCac#R.qaxaq#K#U.i.i.i.i.i.i.i.i.i.h.h.i.h.h.f.h.h.fbFbC.hauawat#V#Laq.f.f.f.f.g.g.g#V#T#L#Z.c.c.cb9bH.a.a.b.a.a.a.#.#.#.#.#.#.#.#.#...#.#..avav#V#Jax........................................................................",
"b4bla5aVaO.OaXalbaa..N.H.N.N.C.Cbaa1b3bxaR.4.G.OaWaVaR.4.G.x.ObjaP.O.waP#8.Na8a7a9aO.Lbibxb#aO.L.H.OaWbob4a3a..E.E..................aibn#9.D.E..aQa7brbraQ#7.C.Nbzbqai#9.D.D......................aFaE#4.r.r.2bSb6...#.#.#a#.E.Dal.b.a.#.#.a.#.baEbpaE#5.Bai.a.b.a#P.qaeaC.baLadadaa#1.r#PaDaIaGaCaC#Y#O.qac#U#K.k.i.h.i.h.h.h.h.h.i.i.j.h.j.f.h.h.h.g.h.f.faoap#V#L#Uax.g.g.g.g.e.g.e.e.g.e.e.c.b.cbR.a.a.a.#.#.a.#.#.#.#.#...#.#.#.#...#....ao#V#L#V..........................................................................",
"bia8a5aVaR#8.IbZa1#8.C.N....#8aQ..a6a6aR#d.M.waSaPaP.4.L.u.1b8aX#e.x.1..a2a8bxbxa9aO.N.Ca5aR.O.I.CaS#dbobsbo#7.B.E....................#5#2.Bb4....aRa1aQ#7.P.CaSbvbvaf#3.B.D#Y....................ah#4#2.Danb6...#...#.#.#.#.E#7.#.#ay#X.#.a.#.#..aj#5.D#6as#X.q.a.a.#.a.b.baraz#4#P#P#PbYaraBaBac#Y#P.q#R#W#N#U.f.f.j.h.f.h.h.f.f.f.f.f.f.h.h.h.h.f.f.g.g.gbO#T#V#Uay.c.d.e.g.gbObO.d.c.c.c.c.b.bb6al.#.a.#.#.a.#.#.#.#.#.#.#.#.#..............#T#W.#..........................................................................",
"bib4biaRaO.4.I.Na..F.CaQ.N........aXaP#e.1.u#daZaN.I.L.x.Ib#.M.4.J.Gb1....a8b0b0aRaO.I.IaR.O.I.ualba..a2a0#8.F.Cal.......................D..........a.#8.H.Bbaaibzai#5#3.Bai#9.r................bTadab.ram...........#.#.#..aCak.#aAaG#0#N.#.#.#.##4.D#6aLaI#Y.t.#aGaGaB#Y.a#Oarar#P#P#Sas#0#K#Y#1#O#P#ObY.t#X.f.g.f.g.f.g.g.f.f.h.f.g.h.h.f.f.f.f.g.g.g.g.dbMbMbM.e.c.d.c.c.e.cbObFbJ.c.b.b.b.b.abR.#.a.a.#.#.#.#.#.#...#.#.#.#.#.#.#..........................................................................................",
".Gb4biaRaO.O.x.L.N.C#7a1al...........4.J.G.Gb1al.P.C.C.O.........4a2#9a5a5a5a8a5#8.O.u.IaR.I.u.1b#....#7a..E.v#7a3......................aHaHab.r.......N.Cala1#9afa##3bzbzaiaf.E.B..........aHaHaFaDad#2.D.............#.#bvaCak#Pazar#Sas.#.#.#.#azaHar#Q#Z#O#NazaGbuas#Q.q.a.a#QazaI#Z#K#N#Q.3#O#O#1aC#X#K.e.g.g.g.g.f.f.f.f.f.f.f.f.f.g.f.g.f.g.g.g.e.davap.e.c.c.c.c.d.b.c.bbFbC.a.b.b.b.b.ab6.2.#.#.#.#.#.#.#.#...#...#...........#........................................................................................",
".Gbia6aO.O.I.x.1aVala4ala4..........a..M.L.C#7bZ#9boa3aN.N.FaO.Iboa2#9bxbia1aRaO.1.I.Ialai..al.............EaQ#6.B......................aHaL#4.r................#3.D.Bbpb3aEaf#3.Q....b6.3bRbuaFb5adab#2.r.....#...#bnai#5#3aa#P#4.##N#X.#.#.#.#..aGaH#Z#O#Q#NaHaIaHaH#Y#Q.q.#.#azbuaG#Z#O#U.b.b.caras#X#N#N.e.c.d.g.g.g.g.g.g.g.g.g.g.g.g.g.e.e.e.d.g.eauauat#V.c.c.c.c.b.b.b.b.b.b.a.a.a.a.a.#bT.#.#.#.#.#.#...#.#.#.#.#auauat#Tat#V..........................................................................................",
".LaPaPaO.L.x.LaS#d.C.Nbs...............F.Ca.a4.Bbob4a3a..E.BaO.xbvbna8b3bxaRaO.O.H.Hala5..a5aO.L........aEbpam#3.B......................adaa.r#4................a0aQaEbtbtai#9#3.B#6.2bSb6b6acaFaLaD#4.r#P.#bzai#9bvbrai#5.B#P.qbu.#.#.#.#.#.#.#.#aI#Z#Q.qaB.#.#..aB#Z#R.t#1.#.#azazar#Q.tar.a.a.b.b#X#N#ObY#E.c.c.c.e.e.g.g.e.e.g.e.e.e.d.e.eauap#L.d.caxaKap#T#L.c.b.b.b.b.b.b.aauawap#V.#.#b6.2.#.........#.#.#.#.#.#auaAaAat#T#Lao#L........................................................................................",
".1aR.4.O.u.waSb6aP.O.w..........aVaO.x..#7.E.Ebabobsbq#7.E.Ca0.xaOa7a5a7a5aO.O.P.uaPb#a2bxbiaP.L.L......agafa#.B#3........................#P#5.....................N.PaJai#9#3.Q.Dafb6b6.....raDad#5#P.r#5bvbqaibzbybvaf#3.D#5...#.#.....#.#.#.#.##O#Q#Oan.#....aC#Z#P#O#R.#.#.##Z#Z#X#O#1.#.#.#.#.#.a#X.b.a#EbHbR.c.c.c.c.c.c.c.c.c.g.c.c.eauavat#V#L.cavat#V#Jaq.a.b.b.b.c.a.a.aawaKax#V#U.#bS.#.#.#.......#...#.#....avaxaxao#T#L#V#J........................................................................................",
"aS.O.L.x.x.1b1a5aP.L.G........a8a6aR.O.ua8a5aO.Ia0a0a..N.val.1.IaRa8aRaRaO.O.u.1aR......bxbxaO.I.O........#3.B#9am......................ad#P..........................af#9#2.D.BbT............#4#4#2.r#2aDbvbvagaibnah#6.D.Bam#O...#.#.#.#.#.....#.....#.#.#.#aGaIaB#Y.q.#.......##Q#O#OaC.#.#.#.#.a.#.#.a.a.a.c#EbRbR.b.c.c.b.c.c.c.c.c.c.caAaAap#T#L.c#V#V#L#T.b.b.b.a.b.b.#.#axawayaq#M#Lb8ba.#.....#...#...#...#.#..atatap#T.t#W#J#T........................................................................................",
"bZ.I.I.uaOb#bxa6.4.I.G....aEbib4a6aO.L.xb4a5aO.I#7#7#7.B.Fb4.ub1bxb##8#8.N.I.HbT.uaR....aRaP.L.Iba..................................aFaHaD#2#P......................bR.D#3.E.BanaE................#Pan..bzbnaia##9afa##3.safai.t#Z...#.#.#.#...#......aGaB#YaGaGaI#0#Q.q.#.......#...#...#.#..aCac#R.#.#.a.#.b.b.a.##EbRbR.a.b.b.b.c.b.c.b.baxap#W#L#L.b.d.a.c.b.a.b.a.a.#.#.a.#.#aqaq#U#JanbS.............#.......#....au#V#T#T#U#L#L..........................................................................................",
".va0bqa2#7aVaVaO.L.xaS..bza8bibia6aO.G.GaVa5.O.u.4.E.Fala4.IaVaRaRaO.L.x.L.Nal.u.1....a1aQ.N.Iba......................aGaI#R........aFbtad#2#2..ad#2aCaa.........2.2bSb6b6#3#9.qae................aGaB#Y#9ag#9#3.B.E.D.B#6am#O#1...#.....#.#...#aGaGaGbuaBakaGbYaI#Y#O#Oac.............#.#aGaGaIaB#Y.q.#.#.#.#.#.a.a.a.a#EbRbT.c.a.a.b.b.b.bao#V#L#Mav.a.a.a.#.a.a.b.#.a.#.a.#.#.##T#U#J#Wb8#E...................#......auaxat#V#L#V............................................................................................",
".N.Ea0#7.N.E#d.L.IbaaW.Pboa9a1aN.N.Ia0ag#7aO.I.IaV.L.Ib#.........4.I.Iba.L.O.H.Ib#..a8a7a1aO.u........................aLaB#O#Y......aCad#4.sambuaD#R.rak.rb9.2bRbSb6b6....#R#OaJah#5..............aLaC#P#R.D.D.B#3bw..#6....aa....aq#U.#.#......aGaLaGaLaBaGaKaLaB#X#O#O...#.#.......#....aGbuaLaB#Y.q...#.#.#.#.#.#.#.#.#.a.2bRbR.#.a.a.a.aauaA#L#V#L.b.a.#.#.a.#.#.a.#.#.#.#.#.#...#...#b6...........#.#.........#....atap#V#J#V..............................................................................................",
"#7.u.N.E.Calbo.Ial.N.Ba7a8a7aRaNboa3a2a0#7.E.HbZbY..a8a8aVaO.G......aO.L.ub#.O....brbxb3aR.1.C........................ac#Y.tas....aFb3aD#4#PaDaHaa#P#4#P#PbRbSb8...........#bzbzah#5.B............#Z#R#PaC..bpbvaf#3.D..........ayaEaj#4........aB#ZaCaB#X#PaIaI#0#N.tac...............#..aGaGaC#Y#O.qac.......#.#.#.#...#.#.#.#.2bRbR.2.a.#avaAap#T#T.#.a.#.#.a.a.#.#.#.#.#.#.#.#.#.#...#bR.....#.....#...#..............#V#L#L................................................................................................",
".N.C.N#S.Nbob4boa..E.Ebrb4b#aQaNbrbya2a0#7.E.C......bxbxaRaO.I.........I#d......a8b4a8a5aO.I.uaQ........................#OaB......aCaD#4#2#2..aa#P#PaD#PaGaIak............bzbvbrah#5.Q#2#4..........#OaCaI#Kbzbn#5.D.E..........bzaFah#4.s........#P#Z#Y#Q.q#Z#Y#R.q#1bu....aIaIar#Y...#.#aBaB#Z#R.q#P.....#.#.#.......#.#.#...#.#.##fbRbS#Eatat#V.tax.#.#.#.#.#.#.#.#.....#.#.....#.#..b9b6....................................................................................................................................",
".F.C#8#OaIbnbqa3#7.B.EbrbxbyaQbobyb3a0a.#7.C.Ea0..a5bxa8a7a7a1aO.HaI#Z#O........a9a8aRaQ.N.uba......................................#4#P#2bwbS.3#PbSb6b6bYaCak#OaAas#X....aFbubuaj#4.Q#2aa.r....ac#RaIaGaEah#5aj#6.ram........bzbvbtaj#4.Q....axaq....#O.qae..#Q.t#1aL#O..aGaHaGaB#Y.t#Y.#..#Y#Q#O#ObY...#...#.............#...#.#.#.#.#..bRbR#T#Jar.#...#.#...#.#.#.#.#.#.#.#.#...#...bbR.........#....................................................................................auauat#V................................",
".v.Fa4ae..a0aga..E.Cala7a1aQ.Oa3boboaN#7.F.B.N......a5a8bia8a1#8.P.H#Y.q........a1a1aN.H.u.1a1ab.....................................##RaH#Z.qb6b6b6....aC#Z#P#PaLaz#S#Q..aiaEah#4.D.sana..raaaGaI#Y#Obpbnaiaj.D.sa2........aEaEbzah#5#2.QahaGaI#Z#K.....#....aGbuaGaa#P#YazaLaK#Z#X#O#Y.q....#P#1#Z...........................#.......#.#.#.#bRbSbR...#.#...#.#...#.#.#.#.#.#.#.#...#b6bS..............................................................................atao............avaAatao#L..............................",
".CbTa9bqa9aQ#8.N.FaQ#8aRaQaN.1a0a0a.#8.E.v.Eal.#....aOa8b4bxaQ.O.P.H#O#O........a7a1aQ.N.P#2.r......................................aHaCak#Y.q.#........#Y#P.qaCar#X.taC..#5ab#5#2.s#6am#P.saGaH#Z#R#OaFbyai#5.D#3aHaC#ZaFaCadaaadab#2.s#6aGaI#Z#Q#O#Q........aGaLaCak.q#RaIaIar#Y#O#O#Z.q.........#.........#...........#...#.........#.....#....bRbRbT.#...#.#.#.....#...#..........bR............................................................................auauavao#L..........avavap#T#L..............................",
"ala4bqbqa9aQaN.P.Ca9aQ.OaN.P.H.H#7#8#7.F.Cbabs....brb4a7a8a4#8.1.u.N#RbY....aFbrb4a9aN#8.H.D..................................bS.2.2bvaCaa.sbw................bpa2agaDahab...D#2.s#9aJbs.rbwaBac#1.tacbnbnaf#3.Q#5buaCaaaFaFad#5.D#4.r#PamazaGaB#1#O#Y.......#ar#Z#Y#P#OaD#Z#Z#Y#Q.tanaIaB#Y#O.....#.......................................#...#.#...#bRbSbS.#.#...#...........#.#..b6bR............................................................................avaAaxao#L.#........atap#V#Jaq............................au",
"a0a3bxb5a1aN#8.P.Pa1aQ#8.P.I.HaQ..a#.B.Cala7.E#2axa7a8a1a1aO.N.C.Ha5......aFbvbqbxa8aN.P.Ca.........aFah#4................#f.2bTb9aCaJaC#4.rah................bpbybzbuaDaa.r......#7.##PacaI#Z#Q.qae#Pagaf#6.Q#6aiaHaDaFbybtad#4.D#4#3bYaGaLaL#Z#N#OaC....aGazazaraIac#Y....#Q#O.t#1aCaLaB#Y.q...#.........#.......#.............#.............#.......#..bRbSbS...#.............#.cbR..............................................................................atatap#T#J............#T#Jaq..............................at",
".ubqbxbya9#8.N.C.Ha0aO.N.P.NaQ.O..bqbo#7a.a#.C.N#4aQaQal#8.N.H.PbT........btaEa1a1#8.N.C.F........aFab#2.D#2...........2a2a.#7b6b6..ac#4.qbY........aEaiaj#2..bqbqaFbvah#4.D#4............bt#ZaB#Z#O#1#3.D.B.DbYaBaB#YaFaHaDaa#2.Q#5aFaHaIaIaI#X.t#Q#4....aGaLaIaHaGaB#Y#P......#XaGaLaL#Z#R#O#Y...........#.............#.......#.....#.......#.....#...#....bRbSbR..............b6bR................................................................................ao#T#TaM...............#................................#V",
".ua1a3a1aN.N.P.vala4#8.H.CalaR.Obobyb3a2a.a#.C.Nae#J.1.C.I.N.FaR..........aBabaN#8.O.H.ubZ......bzb3ae.Q.sam....bS.2aSboboa0#7.B..aI#P.saDakbna2a.aHbzaEafa#.QagagaDahab#2.raCaCaa#P....aIaC#R.q#O#1......#3......#R.radadab#4.r.Qahaaac#Y#Z#Y#O#Qb5#2....azazaIaI#X#K#Y.q#R......aIaI#Z#R#O.q.......................#...#.................................#......bRbSbT.......#..bR....................................................................................#V......................................................",
".IaNaQaN#8.N.v.Oa4#8.N.u.Ha1aQ.Nbnbwboa2#7.E.B#6#KaC...O..................#P.q#2.H.u.HaS........aDah#2.sam...2.2bRb1bobybrag#7.C.E..#Y#O#Pbpbza2afbtb3a2aj#3.Q#5a#adab#2.saHaHaDaa#P#P..ayaq#MbY.....................#..#4#2.D.rbw.Q#5.r.q#O#Q#Ran.rab....aGbuaHar#Q#O#R.q#4........#Z#R#O.qaJ..........................avaq.............................#.......#.....2bSbS.2..b6#E............................................................................................................................................",
"b5.O#8.N.H.H.HbTa1.N.F.FbTbs#8.Ca0a0a.a..E.v.Fa2............a7a3a0#7........bqboaQ#7.P............#4.Dbw.3.2bRb9b6b6bobsbqa..E.C#9....#O..brb5a2bzbvbuai#5#2.Q#5..#7#P.saCbtbvaCaa#P#PayaLaq#M....aw#W....................#2.Dab#P.rah..aHaaab#4.r#4aD....aGaKaL#0#S#K#Z.qaD..........#R#PaD..........................auawap#L.........#auauap#L..........................#fbTbSbS..............................................auatao..........................................................................................",
"aR..#P.F.P.Obaa4.L.C.F.1a7aO.H.Cb##9#7#6.B.FbTa3............bybsaN#7.C....a7a0#8.P.N.v............bS.2.2bSb9b6......a2a2a.#7.F.Cam......aibpbna2aibnaiaf#3.Q.saf........aCaFaDaa#4.r#4aqaq#U#K..aGaz#V#K..................abae#4.sam....aFaD.Q.r#5aJ......aIaIar#Q.t#N.sam............azar#U........................awaAaAaq#L#U......avaKaxao#L..............................bSbR............................................avaKavao#L........................................................................................",
"................aIaNal#X.O.P.Ial....#3.B.Cama2............a7bsa7.O.Ca3a0bqbra2#8.C.C.C.........2.2babSbSb6............a.#7.E.CbS..........agag#9ajafab#5.D.B#6ai..........adac#4.r#2ae..#M.taL..axaq#M#L....................#P.s#5.#aFaDaa.r.r#4.#........#Y#Z#X#N#ObYaa............ayaLar#U#K................awaq....axap#T#Jaq......avaxap#V#Jap.............................2..............................................auaAav#V#L........................................................................................",
"................aAbuas#Q#Q#W..arboboa2#9.E.E................aQaN.Nbqa3a3b3b3a0#8.C.N.N..b6.3.2baa0a#b6.....#azar#N.......E.Ea4............#9#7.E.D#3#3.D.E.Ebw............#4#P.r#Pam...#aEad....#T#M#U.#aGaBac#O.................#aFbyaDaa.raa..............#O#O.taC#1..............azaGaq#M#S..............awaKaq#L..#W#W#J#W........aoao#V#Las..............................bR..............................................atatao#L#T........................................................................................",
"..................ar#X.taB.#azasbybyag#9.E.E................#7.Pbob4bsa3bra3#7.N.v.Na9.2albSbqbra2a..C....aGaL#0#S#X.........................E.BalboaH.D#3af..................#4......btbpaj#2........aHaGaI#Z#P#P..............ayaHaFaD#4.raj......................................araq#W.tas..............axayaq#Jaq....................#Tavauat#T........................bRbS................................................#V#L#LaK........................................................................................",
"..................#X#S#Q..azaHbobsbsag#6.C.E......aEaf#3........a7brbra0a0a.al.C.Fa4bHbSb6b8bqb5a2a..C.E..arar#Q.t.#...................abzaiaf.E..aHbuac#R.r..........................aEah#5.rah......aGbuaB#Y#Q#O..............aCaCac#P.razar#0#Q..................................ayawaq#M................aqao#L#U........................auaxat#V#L.......................2.......................................................#..........................................................................................",
".B........a3a0#7..........arara0a2aga#.E.B#7.D.#bzaEaf#3.B......a1a0a..N#7#7.F.FbYbSb6b6..aHbobraN#7.B#7....#Q#SaJ....................bzbnaiaf#3.BaCaBak#P#P..........................aj#5.sam......aFaGaHac#1.q#R............aHaHaCac#R.qazaI#Z#O#X..............................awaGaA#W#J#W..................#U........................avaxayap#T#Lat#L................bSbT..................................................................................................................................................",
".B#7....bqbra0#7.C..........#S#Ka.#9.E.B#7b4.Dbtb5bnaf#2.QaFaFaD#8#8#7.C.C.N.F#8.Nb6......aHa0a.#7.E.Fa0............................bzbyb3ai#9#2.B#4aa#P.raF......aCaIac.r......aFaFaDab#2aj......aHbtaB#Z#Y#O#PaeaCaCac....aGbubvaDaa#P.qbtaGaCaB#X#O..............................axaq#T#J................................................avap#V#Jaqat#J.................2b8..................................................................................................................................................",
".C#7aya3bsbsa..N.Ca.....aHaCac.r..#3.valbw#2.QaJbpbn#5.Q.Qaibvad#4.C.P.Ha1.N.C.Ba0........aC#7a#.E.Cam.Eag..........................aibpa2af#6.B.Daf..#P.#.......#bYaG#Y#O......btbtaDab#2.Q......aFbu#R#R#O#OambtaHaDac#P..aCaHaHaC#P.r.raBaLaKaB#Y#O..............................#U#L#Man..........avaq..................................#V#T#L#Wat#V#L..............b6bR....................................................................................................................................................",
".u.Ha4aQ.Na0#8.C.Ca3aEbzaf.Eaa#P#M..#5ab#2.samagafa##3.s#3aFaEab#P.Qaba.#7.C.vbaa3..........#P.C.Ca0.C.F............................agaiafa#.E.B#6.#............aCaHac#R.qac..aFbvbvahaa.r.Qah....aFaEab#4#R#2#KaHaLaFak#O#Padacad#1#P.q#PaGaLaL#Z#R#O#Y...............................#............awaAaq#L....................awawaq#W#M......ao...##Lax..............bTbS....................................................................................................................................................",
".v.NaQ.P#8.H.P.CbYbpbnaEaf#3.Q.rae.....D.ranah..#6.D.E#3aEahae#4.sam#Lah.F.Fbaa2am............#7#7.E.Eb5..............................#9a##2.B#6b5..............#Zac#R.q#4.q..aDbzaD#4#4.r#2......abab#4.r.Db4#SadaCaa#P.qah..aaaa#P.r#2bwaIaI#Z#R#O.qaB............................................awax#V#J....................ayaKaq#V#J...................#auap#L.....2......................................................................................................................................................",
".u.Na..H.C.F.Pa1arbtb3ai#9.D.D.raCay#V#M........bobs#5#9.EbS#2.Q#2aD#V..#5.D#2am..................#7.#...................................D.B#9bn...................q#Oaa#Q#O..adabab#4#P.Q#6aCab.r..#2.r.sbw.taCac#R#P#Pam..aGbt#P.raaan....#Z#Y#O.qaM........axaq#M................................ao#V#JaM....................awaxaq#K#J..................ayaxap#T#TbXbR......................................................................................................................................................",
".CaS.D.E.C.C.Paq#Ubzbnaf#5.B.DaiaMaz#M#M......b1brbsaga#.C#9......#U.........#................................................aGaI#Y.q........adak................aCaBaa.q#1....#4#2#2.r#6aFaDak.r#4....#N#KaGaHaBak.q......aCaHaLaa#P.q......#P.qae........ayawaq#V#L........awawaq#L................atao.#..................awaMaxao#N#W.aavavap#L.#ataoauaAaAao#T#TaSb6......................................................................................................................................................",
"babZ.E.E.FaQalac#Oafafa#.D.Dam.#aq#W.t#0..bS.2.2a3am#9.F.Ca0..............................................bnbzaNa#.E......bzbzaf#3#Y.q....aHaCaCaa.r.#bzaFaj#2..aGaGaCac#P#R......#2.ragaDaFac#4#Paa....aFadaLbuad#R.r......adadac#1.s#2....................ayaKaq#T#L........aAaAaq#L#W............auauat#V#L..............awawaAax#W#J#WauaMaxaoauauauap#Tatap#V#Jaq.3........................................................................................................................................................",
"bs#3.E.Ea.albYac#P#R#6.D.Eal....#M#Jas.3.2#fbSb6#7a#.P.CbTaf........................................aHaCaBbybvag#3.B......bvbpaf#5.B#O....aHbvaBak#O#Rb3aJaj#2.DaGb3aB#Y#P#P......aCaCac#Pad#4.r#2ah..aHbpadaCaB#1#P.ravap....aa#R#P#PaF....................axaq#V#Jauavap#LawaGaA#W#L#T............ayaKap#T#L............awaMaxaq#W#M#Jaqavaxat#VauaMaxao#T#T#V#L#VbRbS........................................................................................................................................................",
"#3.E.B#7b7bsaL#Y.q#R..#3an......bS.3.2bRb1b6b6b6ai.B.Cal.D..........................................buaCbzbtbsaFaDab#2..bzbvbpaEaDaj#5..aCaLaLac#R.raabtbp#5.D.DaHaHaC#R.q#1.saHaGaGaCad#P.q.s#PaM....aLaHaaaaak#P#PbYaKat#L....#R#4........................aq#V#MavaKauap#L#Vaqaq#U#Jas..........ataxav#V#L#T............away#U#W#T#JaM..apap#V#Lauaxat#V#L#V..#Wb8.3..........................................................................................................................................................",
".D.B#3am..aCacbna2aga##3..b6bS.2.2bRb6b6b8........#5.E.BbY..........................aGaI#Z#O......aBaHaCbzaiaHaFaDaj#2.sahaibzbzaEah#5.D#5adac#4.q#Paeah#5#2.QafaB#Z#1#O.qan.raHaHbvaDaa#P.r#5.r#4....adaa#P#P#P.racavaw#V#J..................................ayaqavawav#V#L#W#W#U.t#0............axaqaq#M#LbY............axaq#V#L#Maqar....#T#J#Latapao#T#Lax....b6.2..........................................................................................................................................................",
".B.Eb#a0..#Ybpbpa2aga#.D.D.2bRbRb6b6b6...............E#6..............bna2aga#.E....buaI#X.q......aIaIbpbrahbtb3ahab#2.r..ajbtb4aJaj#3.Q.Eak#R.r#Pbv..#5#2#2am..aDab#4#OaJ.r#5aIaCaFaDaa.r.q.D#2aF......#2.saM#V....aoao#Las................................ayaGaratapao#L#Jax..................ayaKazaq#MaA........at#V....#T#M#JaA#Xavap..........#V#L#Las.....c.2b6.........................................................................................................................................................."
};
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,470 @@
#include <H5PartRandomSampleAttributes.h>
#include <DataNode.h>
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::H5PartRandomSampleAttributes
//
// Purpose:
// Constructor for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes::H5PartRandomSampleAttributes() : AttributeSubject("f")
{
factor = 1;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::H5PartRandomSampleAttributes
//
// Purpose:
// Copy constructor for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes::H5PartRandomSampleAttributes(const H5PartRandomSampleAttributes &obj) : AttributeSubject("f")
{
factor = obj.factor;
SelectAll();
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::~H5PartRandomSampleAttributes
//
// Purpose:
// Destructor for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes::~H5PartRandomSampleAttributes()
{
// nothing here
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::operator =
//
// Purpose:
// Assignment operator for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes&
H5PartRandomSampleAttributes::operator = (const H5PartRandomSampleAttributes &obj)
{
if (this == &obj) return *this;
factor = obj.factor;
SelectAll();
return *this;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::operator ==
//
// Purpose:
// Comparison operator == for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::operator == (const H5PartRandomSampleAttributes &obj) const
{
// Create the return value
return ((factor == obj.factor));
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::operator !=
//
// Purpose:
// Comparison operator != for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::operator != (const H5PartRandomSampleAttributes &obj) const
{
return !(this->operator == (obj));
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::TypeName
//
// Purpose:
// Type name method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
const std::string
H5PartRandomSampleAttributes::TypeName() const
{
return "H5PartRandomSampleAttributes";
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::CopyAttributes
//
// Purpose:
// CopyAttributes method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::CopyAttributes(const AttributeGroup *atts)
{
if(TypeName() != atts->TypeName())
return false;
// Call assignment operator.
const H5PartRandomSampleAttributes *tmp = (const H5PartRandomSampleAttributes *)atts;
*this = *tmp;
return true;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::CreateCompatible
//
// Purpose:
// CreateCompatible method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleAttributes::CreateCompatible(const std::string &tname) const
{
AttributeSubject *retval = 0;
if(TypeName() == tname)
retval = new H5PartRandomSampleAttributes(*this);
// Other cases could go here too.
return retval;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::NewInstance
//
// Purpose:
// NewInstance method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleAttributes::NewInstance(bool copy) const
{
AttributeSubject *retval = 0;
if(copy)
retval = new H5PartRandomSampleAttributes(*this);
else
retval = new H5PartRandomSampleAttributes;
return retval;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::SelectAll
//
// Purpose:
// Selects all attributes.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleAttributes::SelectAll()
{
Select(0, (void *)&factor);
}
///////////////////////////////////////////////////////////////////////////////
// Persistence methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::CreateNode
//
// Purpose:
// This method creates a DataNode representation of the object so it can be saved to a config file.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool forceAdd)
{
if(parentNode == 0)
return false;
H5PartRandomSampleAttributes defaultObject;
bool addToParent = false;
// Create a node for H5PartRandomSampleAttributes.
DataNode *node = new DataNode("H5PartRandomSampleAttributes");
if(completeSave || !FieldsEqual(0, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("factor", factor));
}
// Add the node to the parent node.
if(addToParent || forceAdd)
parentNode->AddNode(node);
else
delete node;
return (addToParent || forceAdd);
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::SetFromNode
//
// Purpose:
// This method sets attributes in this object from values in a DataNode representation of the object.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleAttributes::SetFromNode(DataNode *parentNode)
{
int i;
if(parentNode == 0)
return;
DataNode *searchNode = parentNode->GetNode("H5PartRandomSampleAttributes");
if(searchNode == 0)
return;
DataNode *node;
if((node = searchNode->GetNode("factor")) != 0)
SetFactor(node->AsFloat());
}
///////////////////////////////////////////////////////////////////////////////
// Set property methods
///////////////////////////////////////////////////////////////////////////////
void
H5PartRandomSampleAttributes::SetFactor(float factor_)
{
factor = factor_;
Select(0, (void *)&factor);
}
///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////
float
H5PartRandomSampleAttributes::GetFactor() const
{
return factor;
}
///////////////////////////////////////////////////////////////////////////////
// Keyframing methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::GetFieldName
//
// Purpose:
// This method returns the name of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
H5PartRandomSampleAttributes::GetFieldName(int index) const
{
switch (index)
{
case 0: return "factor";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::GetFieldType
//
// Purpose:
// This method returns the type of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeGroup::FieldType
H5PartRandomSampleAttributes::GetFieldType(int index) const
{
switch (index)
{
case 0: return FieldType_float;
default: return FieldType_unknown;
}
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::GetFieldTypeName
//
// Purpose:
// This method returns the name of a field type given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
H5PartRandomSampleAttributes::GetFieldTypeName(int index) const
{
switch (index)
{
case 0: return "float";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::FieldsEqual
//
// Purpose:
// This method compares two fields and return true if they are equal.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::FieldsEqual(int index_, const AttributeGroup *rhs) const
{
const H5PartRandomSampleAttributes &obj = *((const H5PartRandomSampleAttributes*)rhs);
bool retval = false;
switch (index_)
{
case 0:
{ // new scope
retval = (factor == obj.factor);
}
break;
default: retval = false;
}
return retval;
}
///////////////////////////////////////////////////////////////////////////////
// User-defined methods.
///////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,60 @@
#ifndef H5PARTRANDOMSAMPLEATTRIBUTES_H
#define H5PARTRANDOMSAMPLEATTRIBUTES_H
#include <AttributeSubject.h>
// ****************************************************************************
// Class: H5PartRandomSampleAttributes
//
// Purpose:
// Randomly reduce an H5Part point mesh
//
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class H5PartRandomSampleAttributes : public AttributeSubject
{
public:
H5PartRandomSampleAttributes();
H5PartRandomSampleAttributes(const H5PartRandomSampleAttributes &obj);
virtual ~H5PartRandomSampleAttributes();
virtual H5PartRandomSampleAttributes& operator = (const H5PartRandomSampleAttributes &obj);
virtual bool operator == (const H5PartRandomSampleAttributes &obj) const;
virtual bool operator != (const H5PartRandomSampleAttributes &obj) const;
virtual const std::string TypeName() const;
virtual bool CopyAttributes(const AttributeGroup *);
virtual AttributeSubject *CreateCompatible(const std::string &) const;
virtual AttributeSubject *NewInstance(bool) const;
// Property selection methods
virtual void SelectAll();
// Property setting methods
void SetFactor(float factor_);
// Property getting methods
float GetFactor() const;
// Persistence methods
virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd);
virtual void SetFromNode(DataNode *node);
// Keyframing methods
virtual std::string GetFieldName(int index) const;
virtual AttributeGroup::FieldType GetFieldType(int index) const;
virtual std::string GetFieldTypeName(int index) const;
virtual bool FieldsEqual(int index, const AttributeGroup *rhs) const;
private:
float factor;
};
#endif
@@ -0,0 +1,76 @@
package llnl.visit.operators;
import llnl.visit.AttributeSubject;
import llnl.visit.CommunicationBuffer;
import llnl.visit.Plugin;
// ****************************************************************************
// Class: H5PartRandomSampleAttributes
//
// Purpose:
// Randomly reduce an H5Part point mesh
//
// Notes: Autogenerated by xml2java.
//
// Programmer: xml2java
// Creation: Thu Mar 16 10:26:56 PDT 2006
//
// Modifications:
//
// ****************************************************************************
public class H5PartRandomSampleAttributes extends AttributeSubject implements Plugin
{
public H5PartRandomSampleAttributes()
{
super(1);
factor = 1f;
}
public H5PartRandomSampleAttributes(H5PartRandomSampleAttributes obj)
{
super(1);
factor = obj.factor;
SelectAll();
}
public boolean equals(H5PartRandomSampleAttributes obj)
{
// Create the return value
return ((factor == obj.factor));
}
public String GetName() { return "H5PartRandomSample"; }
public String GetVersion() { return "1.0"; }
// Property setting methods
public void SetFactor(float factor_)
{
factor = factor_;
Select(0);
}
// Property getting methods
public float GetFactor() { return factor; }
// Write and read methods.
public void WriteAtts(CommunicationBuffer buf)
{
if(WriteSelect(0, buf))
buf.WriteFloat(factor);
}
public void ReadAtts(int n, CommunicationBuffer buf)
{
buf.ReadByte();
SetFactor(buf.ReadFloat());
}
// Attributes
private float factor;
}
@@ -0,0 +1,47 @@
// ************************************************************************* //
// File: H5PartRandomSampleCommonPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
// ****************************************************************************
// Method: H5PartRandomSampleCommonPluginInfo::AllocAttributes
//
// Purpose:
// Return a pointer to a newly allocated attribute subject.
//
// Returns: A pointer to the newly allocated attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleCommonPluginInfo::AllocAttributes()
{
return new H5PartRandomSampleAttributes;
}
// ****************************************************************************
// Method: H5PartRandomSampleCommonPluginInfo::CopyAttributes
//
// Purpose:
// Copy a H5PartRandomSample attribute subject.
//
// Arguments:
// to The destination attribute subject.
// from The source attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleCommonPluginInfo::CopyAttributes(AttributeSubject *to,
AttributeSubject *from)
{
*((H5PartRandomSampleAttributes *) to) = *((H5PartRandomSampleAttributes *) from);
}
@@ -0,0 +1,44 @@
// ************************************************************************* //
// File: H5PartRandomSampleEnginePluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <avtH5PartRandomSampleFilter.h>
#if defined(__APPLE__)
#define GetEngineInfo H5PartRandomSample_GetEngineInfo
#endif
// ****************************************************************************
// Function: GetEngineInfo
//
// Purpose:
// Return a new EnginePluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" EngineOperatorPluginInfo* GetEngineInfo()
{
return new H5PartRandomSampleEnginePluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleEnginePluginInfo::AllocAvtPluginFilter
//
// Purpose:
// Return a pointer to a newly allocated avtPluginFilter.
//
// Returns: A pointer to the newly allocated avtPluginFilter.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
avtPluginFilter *
H5PartRandomSampleEnginePluginInfo::AllocAvtPluginFilter()
{
return new avtH5PartRandomSampleFilter;
}
@@ -0,0 +1,92 @@
// ************************************************************************* //
// File: H5PartRandomSampleGUIPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
#include <QvisH5PartRandomSampleWindow.h>
#if defined(__APPLE__)
#define GetGUIInfo H5PartRandomSample_GetGUIInfo
#endif
// ****************************************************************************
// Function: GetGUIInfo
//
// Purpose:
// Return a new GUIPluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
extern "C" GUIOperatorPluginInfo* GetGUIInfo()
{
return new H5PartRandomSampleGUIPluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleGUIPluginInfo::GetMenuName
//
// Purpose:
// Return a pointer to the name to use in the GUI menu.
//
// Returns: A pointer to the name to use in the GUI menu.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
const char *
H5PartRandomSampleGUIPluginInfo::GetMenuName() const
{
return "H5PartRandomSample";
}
// ****************************************************************************
// Method: H5PartRandomSampleGUIPluginInfo::CreatePluginWindow
//
// Purpose:
// Return a pointer to an operator's attribute window.
//
// Arguments:
// type The type of the operator.
// attr The attribute subject for the operator.
// notepad The notepad to use for posting the window.
//
// Returns: A pointer to the operator's attribute window.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
QvisPostableWindowObserver *
H5PartRandomSampleGUIPluginInfo::CreatePluginWindow(int type, AttributeSubject *attr,
QvisNotepadArea *notepad)
{
return new QvisH5PartRandomSampleWindow(type, (H5PartRandomSampleAttributes *)attr,
"H5PartRandomSample operator attributes", "H5PartRandomSample operator", notepad);
}
// ****************************************************************************
// Method: H5PartRandomSampleGUIPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
H5PartRandomSampleGUIPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1,107 @@
// ************************************************************************* //
// File: H5PartRandomSamplePluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
#include <visit-config.h>
#if defined(__APPLE__)
extern "C" const char *H5PartRandomSampleVisItPluginVersion = VERSION;
#else
extern "C" const char *VisItPluginVersion = VERSION;
#endif
#if defined(__APPLE__)
#define GetGeneralInfo H5PartRandomSample_GetGeneralInfo
#endif
// ****************************************************************************
// Function: GetGeneralInfo
//
// Purpose:
// Return a new GeneralPluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" GeneralOperatorPluginInfo* GetGeneralInfo()
{
return new H5PartRandomSampleGeneralPluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::GetName
//
// Purpose:
// Return the name of the operator plugin.
//
// Returns: A pointer to the name of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
char *
H5PartRandomSampleGeneralPluginInfo::GetName() const
{
return "H5PartRandomSample";
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::GetVersion
//
// Purpose:
// Return the version of the operator plugin.
//
// Returns: A pointer to the version of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
char *
H5PartRandomSampleGeneralPluginInfo::GetVersion() const
{
return "1.0";
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::GetID
//
// Purpose:
// Return the id of the operator plugin.
//
// Returns: A pointer to the id of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
char *
H5PartRandomSampleGeneralPluginInfo::GetID() const
{
return "H5PartRandomSample_1.0";
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::EnabledByDefault
//
// Purpose:
// Return true if this plugin should be enabled by default; false otherwise.
//
// Returns: true/false
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
bool
H5PartRandomSampleGeneralPluginInfo::EnabledByDefault() const
{
return true;
}
@@ -0,0 +1,85 @@
// ************************************************************************* //
// File: H5PartRandomSamplePluginInfo.h
// ************************************************************************* //
#ifndef H5PARTRANDOMSAMPLE_PLUGIN_INFO_H
#define H5PARTRANDOMSAMPLE_PLUGIN_INFO_H
#include <OperatorPluginInfo.h>
#include <operator_plugin_exports.h>
class H5PartRandomSampleAttributes;
// ****************************************************************************
// Class: H5PartRandomSamplePluginInfo
//
// Purpose:
// Five classes that provide all the information about an H5PartRandomSample operator
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class H5PartRandomSampleGeneralPluginInfo : public virtual GeneralOperatorPluginInfo
{
public:
virtual char *GetName() const;
virtual char *GetVersion() const;
virtual char *GetID() const;
virtual bool EnabledByDefault() const;
};
class H5PartRandomSampleCommonPluginInfo : public virtual CommonOperatorPluginInfo, public virtual H5PartRandomSampleGeneralPluginInfo
{
public:
virtual AttributeSubject *AllocAttributes();
virtual void CopyAttributes(AttributeSubject *to, AttributeSubject *from);
};
class H5PartRandomSampleGUIPluginInfo : public virtual GUIOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual const char *GetMenuName() const;
virtual QvisPostableWindowObserver *CreatePluginWindow(int type,
AttributeSubject *attr, QvisNotepadArea *notepad);
virtual const char **XPMIconData() const;
};
class H5PartRandomSampleViewerPluginInfo : public virtual ViewerOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual AttributeSubject *GetClientAtts();
virtual AttributeSubject *GetDefaultAtts();
virtual void SetClientAtts(AttributeSubject *atts);
virtual void GetClientAtts(AttributeSubject *atts);
virtual void InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault);
virtual const char **XPMIconData() const;
static void InitializeGlobalObjects();
private:
static H5PartRandomSampleAttributes *defaultAtts;
static H5PartRandomSampleAttributes *clientAtts;
};
class H5PartRandomSampleEnginePluginInfo : public virtual EngineOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual avtPluginFilter *AllocAvtPluginFilter();
};
class H5PartRandomSampleScriptingPluginInfo : public virtual ScriptingOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual void InitializePlugin(AttributeSubject *subj, void *data);
virtual void *GetMethodTable(int *nMethods);
virtual bool TypesMatch(void *pyobject);
virtual char *GetLogString();
virtual void SetDefaults(const AttributeSubject *atts);
};
#endif
@@ -0,0 +1,142 @@
// ************************************************************************* //
// H5PartRandomSampleScriptingPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <PyH5PartRandomSampleAttributes.h>
#if defined(__APPLE__)
#define GetScriptingInfo H5PartRandomSample_GetScriptingInfo
#endif
// ****************************************************************************
// Function: GetScriptingInfo
//
// Purpose:
// Return a new ScriptingPluginInfo for the H5PartRandomSample plot.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" ScriptingOperatorPluginInfo* GetScriptingInfo()
{
return new H5PartRandomSampleScriptingPluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::InitializePlugin
//
// Purpose:
// Calls the initialization function for the plugin.
//
// Arguments:
// subj : A pointer to the plugin's state object.
// data : A pointer to data to be used by the observer function.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleScriptingPluginInfo::InitializePlugin(AttributeSubject *subj,
void *data)
{
PyH5PartRandomSampleAttributes_StartUp((H5PartRandomSampleAttributes *)subj, data);
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::GetMethodTable
//
// Purpose:
// Returns a pointer to the plugin's Python method table. These methods are
// added to the top-level visit module's methods.
//
// Arguments:
// nMethods : Returns the number of methods in the method table.
//
// Returns: A pointer to the method table.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void *
H5PartRandomSampleScriptingPluginInfo::GetMethodTable(int *nMethods)
{
return PyH5PartRandomSampleAttributes_GetMethodTable(nMethods);
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::TypesMatch
//
// Purpose:
// Returns whether or not the input PyObject is H5PartRandomSample plot attributes.
//
// Arguments:
// pyobject : A PyObject cast to void*.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleScriptingPluginInfo::TypesMatch(void *pyobject)
{
return PyH5PartRandomSampleAttributes_Check((PyObject *)pyobject);
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::GetLogString
//
// Purpose:
// Gets a string representation of the current attributes.
//
// Arguments:
// val : Whether or not to log state information.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
char *
H5PartRandomSampleScriptingPluginInfo::GetLogString()
{
std::string s(PyH5PartRandomSampleAttributes_GetLogString());
char *v = new char[s.size() + 1];
strcpy(v, s.c_str());
return v;
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::SetDefaults
//
// Purpose:
// Used to set the default values for a plugin's state object.
//
// Arguments:
// atts : The new state.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleScriptingPluginInfo::SetDefaults(const AttributeSubject *atts)
{
PyH5PartRandomSampleAttributes_SetDefaults((const H5PartRandomSampleAttributes *)atts);
}
@@ -0,0 +1,175 @@
// ************************************************************************* //
// File: H5PartRandomSampleViewerPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
#if defined(__APPLE__)
#define GetViewerInfo H5PartRandomSample_GetViewerInfo
#endif
// ****************************************************************************
// Function: GetViewerInfo
//
// Purpose:
// Return a new ViewerPluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" ViewerOperatorPluginInfo* GetViewerInfo()
{
H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects();
return new H5PartRandomSampleViewerPluginInfo;
}
//
// Storage for static data elements.
//
H5PartRandomSampleAttributes *H5PartRandomSampleViewerPluginInfo::clientAtts = NULL;
H5PartRandomSampleAttributes *H5PartRandomSampleViewerPluginInfo::defaultAtts = NULL;
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects
//
// Purpose:
// Initialize the operator atts.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects()
{
H5PartRandomSampleViewerPluginInfo::clientAtts = new H5PartRandomSampleAttributes;
H5PartRandomSampleViewerPluginInfo::defaultAtts = new H5PartRandomSampleAttributes;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::GetClientAtts
//
// Purpose:
// Return a pointer to the viewer client attributes.
//
// Returns: A pointer to the viewer client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleViewerPluginInfo::GetClientAtts()
{
return clientAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::GetDefaultAtts
//
// Purpose:
// Return a pointer to the viewer default attributes.
//
// Returns: A pointer to the viewer default attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleViewerPluginInfo::GetDefaultAtts()
{
return defaultAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::SetClientAtts
//
// Purpose:
// Set the viewer client attributes.
//
// Arguments:
// atts A pointer to the new client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::SetClientAtts(AttributeSubject *atts)
{
*clientAtts = *(H5PartRandomSampleAttributes *)atts;
clientAtts->Notify();
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::GetClientAtts
//
// Purpose:
// Get the viewer client attributes.
//
// Arguments:
// atts A pointer to return the client default attributes in.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::GetClientAtts(AttributeSubject *atts)
{
*(H5PartRandomSampleAttributes *)atts = *clientAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::InitializeOperatorAtts
//
// Purpose:
// Initialize the operator attributes to the default attributes.
//
// Arguments:
// atts The attribute subject to initialize.
// md The metadata used to initialize.
// atts The variable name used to initialize.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault)
{
if (fromDefault)
*(H5PartRandomSampleAttributes*)atts = *defaultAtts;
else
*(H5PartRandomSampleAttributes*)atts = *clientAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
H5PartRandomSampleViewerPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1,113 @@
##
## Programs and options...
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-variables
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
##
## Libraries and includes...
##
VTK_INCLUDE= \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Filtering \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Graphics \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Hybrid \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/IO \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Imaging \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Rendering
MOC=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/bin/moc
CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS)
CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit
LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L/d/visusers/cristina/.visit/linux-x86_64/plugins/operators
##
## Files...
##
PLUGINDIR=operators
PLUGINNAME=H5PartRandomSampleOperator
WIDGETS=QvisH5PartRandomSampleWindow.h
ISRC=H5PartRandomSamplePluginInfo.C
COMMONSRC=H5PartRandomSamplePluginInfo.C H5PartRandomSampleCommonPluginInfo.C H5PartRandomSampleAttributes.C
GSRC=H5PartRandomSampleGUIPluginInfo.C QvisH5PartRandomSampleWindow.C
VSRC=H5PartRandomSampleViewerPluginInfo.C
ESRC=H5PartRandomSampleEnginePluginInfo.C avtH5PartRandomSampleFilter.C
SSRC=H5PartRandomSampleScriptingPluginInfo.C PyH5PartRandomSampleAttributes.C
SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC)
JAVASRC=H5PartRandomSampleAttributes.java
JAVAOBJ=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java/llnl/visit/operators/H5PartRandomSampleAttributes.class
JAVAPLUGINFLAGS=-d /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java -classpath /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java
SHLIB_FORCED=
ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
ILIBS=
GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS)
SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME)
VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS)
ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS)
IDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libIH5PartRandomSampleOperator.so
GDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libGH5PartRandomSampleOperator.so
SDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libSH5PartRandomSampleOperator.so
VDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libVH5PartRandomSampleOperator.so
ESERDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEH5PartRandomSampleOperator_ser.so
EPARDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEH5PartRandomSampleOperator_par.so
DISTRIB=
##
## Derived objects
##
IOBJ=$(ISRC:.C=.o)
GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o)
SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o)
VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o)
MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o)
ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o)
EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o)
MOCSRC = $(WIDGETS:.h=_moc.C)
MOCOBJ = $(MOCSRC:.C=.o)
##
## Standard targets...
##
all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS)
clean:
$(RM) $(IOBJ) $(COMMONOBJ)
$(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ)
$(RM) $(MOCSRC) $(MOCOBJ)
$(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO)
$(RM) $(JAVAOBJ)
##
## Other targets...
##
message:
@echo
@echo "****************************************************************************"
@echo "*** Building H5PartRandomSample Operator Plugin"
@echo "****************************************************************************"
##
## moc
##
$(MOCSRC) or_no_widgets: $(WIDGETS)
@rm -f $@
$(MOC) $(@:_moc.C=.h) > $@
##
## Automatic dependency stuff
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-targets
@@ -0,0 +1,358 @@
#include <PyH5PartRandomSampleAttributes.h>
#include <ObserverToCallback.h>
#include <ColorAttribute.h>
#include <snprintf.h>
// ****************************************************************************
// Module: PyH5PartRandomSampleAttributes
//
// Purpose:
// Randomly reduce an H5Part point mesh
//
// Note: Autogenerated by xml2python. Do not modify by hand!
//
// Programmer: xml2python
// Creation: Thu Mar 16 10:26:56 PDT 2006
//
// ****************************************************************************
//
// This struct contains the Python type information and a H5PartRandomSampleAttributes.
//
struct H5PartRandomSampleAttributesObject
{
PyObject_HEAD
H5PartRandomSampleAttributes *data;
bool owns;
};
//
// Internal prototypes
//
static PyObject *NewH5PartRandomSampleAttributes(int);
std::string
PyH5PartRandomSampleAttributes_ToString(const H5PartRandomSampleAttributes *atts, const char *prefix)
{
std::string str;
char tmpStr[1000];
SNPRINTF(tmpStr, 1000, "%sfactor = %g\n", prefix, atts->GetFactor());
str += tmpStr;
return str;
}
static PyObject *
H5PartRandomSampleAttributes_Notify(PyObject *self, PyObject *args)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self;
obj->data->Notify();
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
H5PartRandomSampleAttributes_SetFactor(PyObject *self, PyObject *args)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self;
float fval;
if(!PyArg_ParseTuple(args, "f", &fval))
return NULL;
// Set the factor in the object.
obj->data->SetFactor(fval);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
H5PartRandomSampleAttributes_GetFactor(PyObject *self, PyObject *args)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self;
PyObject *retval = PyFloat_FromDouble(double(obj->data->GetFactor()));
return retval;
}
static struct PyMethodDef H5PartRandomSampleAttributes_methods[] = {
{"Notify", H5PartRandomSampleAttributes_Notify, METH_VARARGS},
{"SetFactor", H5PartRandomSampleAttributes_SetFactor, METH_VARARGS},
{"GetFactor", H5PartRandomSampleAttributes_GetFactor, METH_VARARGS},
{NULL, NULL}
};
//
// Type functions
//
static void
H5PartRandomSampleAttributes_dealloc(PyObject *v)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v;
if(obj->owns)
delete obj->data;
}
static int
H5PartRandomSampleAttributes_compare(PyObject *v, PyObject *w)
{
H5PartRandomSampleAttributes *a = ((H5PartRandomSampleAttributesObject *)v)->data;
H5PartRandomSampleAttributes *b = ((H5PartRandomSampleAttributesObject *)w)->data;
return (*a == *b) ? 0 : -1;
}
static PyObject *
H5PartRandomSampleAttributes_getattr(PyObject *self, char *name)
{
if(strcmp(name, "factor") == 0)
return H5PartRandomSampleAttributes_GetFactor(self, NULL);
return Py_FindMethod(H5PartRandomSampleAttributes_methods, self, name);
}
static int
H5PartRandomSampleAttributes_setattr(PyObject *self, char *name, PyObject *args)
{
// Create a tuple to contain the arguments since all of the Set
// functions expect a tuple.
PyObject *tuple = PyTuple_New(1);
PyTuple_SET_ITEM(tuple, 0, args);
Py_INCREF(args);
bool retval = false;
if(strcmp(name, "factor") == 0)
retval = (H5PartRandomSampleAttributes_SetFactor(self, tuple) != NULL);
Py_DECREF(tuple);
return retval ? 0 : -1;
}
static int
H5PartRandomSampleAttributes_print(PyObject *v, FILE *fp, int flags)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v;
fprintf(fp, "%s", PyH5PartRandomSampleAttributes_ToString(obj->data, "").c_str());
return 0;
}
PyObject *
H5PartRandomSampleAttributes_str(PyObject *v)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v;
return PyString_FromString(PyH5PartRandomSampleAttributes_ToString(obj->data,"").c_str());
}
//
// The doc string for the class.
//
static char *H5PartRandomSampleAttributes_Purpose = "Randomly reduce an H5Part point mesh";
//
// The type description structure
//
static PyTypeObject H5PartRandomSampleAttributesType =
{
//
// Type header
//
PyObject_HEAD_INIT(&PyType_Type)
0, // ob_size
"H5PartRandomSampleAttributes", // tp_name
sizeof(H5PartRandomSampleAttributesObject), // tp_basicsize
0, // tp_itemsize
//
// Standard methods
//
(destructor)H5PartRandomSampleAttributes_dealloc, // tp_dealloc
(printfunc)H5PartRandomSampleAttributes_print, // tp_print
(getattrfunc)H5PartRandomSampleAttributes_getattr, // tp_getattr
(setattrfunc)H5PartRandomSampleAttributes_setattr, // tp_setattr
(cmpfunc)H5PartRandomSampleAttributes_compare, // tp_compare
(reprfunc)0, // tp_repr
//
// Type categories
//
0, // tp_as_number
0, // tp_as_sequence
0, // tp_as_mapping
//
// More methods
//
0, // tp_hash
0, // tp_call
(reprfunc)H5PartRandomSampleAttributes_str, // tp_str
0, // tp_getattro
0, // tp_setattro
0, // tp_as_buffer
Py_TPFLAGS_CHECKTYPES, // tp_flags
H5PartRandomSampleAttributes_Purpose, // tp_doc
0, // tp_traverse
0, // tp_clear
0, // tp_richcompare
0 // tp_weaklistoffset
};
//
// Helper functions for object allocation.
//
static H5PartRandomSampleAttributes *defaultAtts = 0;
static H5PartRandomSampleAttributes *currentAtts = 0;
static PyObject *
NewH5PartRandomSampleAttributes(int useCurrent)
{
H5PartRandomSampleAttributesObject *newObject;
newObject = PyObject_NEW(H5PartRandomSampleAttributesObject, &H5PartRandomSampleAttributesType);
if(newObject == NULL)
return NULL;
if(useCurrent && currentAtts != 0)
newObject->data = new H5PartRandomSampleAttributes(*currentAtts);
else if(defaultAtts != 0)
newObject->data = new H5PartRandomSampleAttributes(*defaultAtts);
else
newObject->data = new H5PartRandomSampleAttributes;
newObject->owns = true;
return (PyObject *)newObject;
}
static PyObject *
WrapH5PartRandomSampleAttributes(const H5PartRandomSampleAttributes *attr)
{
H5PartRandomSampleAttributesObject *newObject;
newObject = PyObject_NEW(H5PartRandomSampleAttributesObject, &H5PartRandomSampleAttributesType);
if(newObject == NULL)
return NULL;
newObject->data = (H5PartRandomSampleAttributes *)attr;
newObject->owns = false;
return (PyObject *)newObject;
}
///////////////////////////////////////////////////////////////////////////////
//
// Interface that is exposed to the VisIt module.
//
///////////////////////////////////////////////////////////////////////////////
PyObject *
H5PartRandomSampleAttributes_new(PyObject *self, PyObject *args)
{
int useCurrent = 0;
if (!PyArg_ParseTuple(args, "i", &useCurrent))
{
if (!PyArg_ParseTuple(args, ""))
return NULL;
else
PyErr_Clear();
}
return (PyObject *)NewH5PartRandomSampleAttributes(useCurrent);
}
//
// Plugin method table. These methods are added to the visitmodule's methods.
//
static PyMethodDef H5PartRandomSampleAttributesMethods[] = {
{"H5PartRandomSampleAttributes", H5PartRandomSampleAttributes_new, METH_VARARGS},
{NULL, NULL} /* Sentinel */
};
static Observer *H5PartRandomSampleAttributesObserver = 0;
std::string
PyH5PartRandomSampleAttributes_GetLogString()
{
std::string s("H5PartRandomSampleAtts = H5PartRandomSampleAttributes()\n");
if(currentAtts != 0)
s += PyH5PartRandomSampleAttributes_ToString(currentAtts, "H5PartRandomSampleAtts.");
return s;
}
static void
PyH5PartRandomSampleAttributes_CallLogRoutine(Subject *subj, void *data)
{
H5PartRandomSampleAttributes *atts = (H5PartRandomSampleAttributes *)subj;
typedef void (*logCallback)(const std::string &);
logCallback cb = (logCallback)data;
if(cb != 0)
{
std::string s("H5PartRandomSampleAtts = H5PartRandomSampleAttributes()\n");
s += PyH5PartRandomSampleAttributes_ToString(currentAtts, "H5PartRandomSampleAtts.");
cb(s);
}
}
void
PyH5PartRandomSampleAttributes_StartUp(H5PartRandomSampleAttributes *subj, void *data)
{
if(subj == 0)
return;
currentAtts = subj;
PyH5PartRandomSampleAttributes_SetDefaults(subj);
//
// Create the observer that will be notified when the attributes change.
//
if(H5PartRandomSampleAttributesObserver == 0)
{
H5PartRandomSampleAttributesObserver = new ObserverToCallback(subj,
PyH5PartRandomSampleAttributes_CallLogRoutine, (void *)data);
}
}
void
PyH5PartRandomSampleAttributes_CloseDown()
{
delete defaultAtts;
defaultAtts = 0;
delete H5PartRandomSampleAttributesObserver;
H5PartRandomSampleAttributesObserver = 0;
}
PyMethodDef *
PyH5PartRandomSampleAttributes_GetMethodTable(int *nMethods)
{
*nMethods = 1;
return H5PartRandomSampleAttributesMethods;
}
bool
PyH5PartRandomSampleAttributes_Check(PyObject *obj)
{
return (obj->ob_type == &H5PartRandomSampleAttributesType);
}
H5PartRandomSampleAttributes *
PyH5PartRandomSampleAttributes_FromPyObject(PyObject *obj)
{
H5PartRandomSampleAttributesObject *obj2 = (H5PartRandomSampleAttributesObject *)obj;
return obj2->data;
}
PyObject *
PyH5PartRandomSampleAttributes_NewPyObject()
{
return NewH5PartRandomSampleAttributes(0);
}
PyObject *
PyH5PartRandomSampleAttributes_WrapPyObject(const H5PartRandomSampleAttributes *attr)
{
return WrapH5PartRandomSampleAttributes(attr);
}
void
PyH5PartRandomSampleAttributes_SetDefaults(const H5PartRandomSampleAttributes *atts)
{
if(defaultAtts)
delete defaultAtts;
defaultAtts = new H5PartRandomSampleAttributes(*atts);
}
@@ -0,0 +1,21 @@
#ifndef PY_H5PARTRANDOMSAMPLEATTRIBUTES_H
#define PY_H5PARTRANDOMSAMPLEATTRIBUTES_H
#include <Python.h>
#include <H5PartRandomSampleAttributes.h>
//
// Functions exposed to the VisIt module.
//
void PyH5PartRandomSampleAttributes_StartUp(H5PartRandomSampleAttributes *subj, void *data);
void PyH5PartRandomSampleAttributes_CloseDown();
PyMethodDef *PyH5PartRandomSampleAttributes_GetMethodTable(int *nMethods);
bool PyH5PartRandomSampleAttributes_Check(PyObject *obj);
H5PartRandomSampleAttributes *PyH5PartRandomSampleAttributes_FromPyObject(PyObject *obj);
PyObject *PyH5PartRandomSampleAttributes_NewPyObject();
PyObject *PyH5PartRandomSampleAttributes_WrapPyObject(const H5PartRandomSampleAttributes *attr);
void PyH5PartRandomSampleAttributes_SetDefaults(const H5PartRandomSampleAttributes *atts);
std::string PyH5PartRandomSampleAttributes_GetLogString();
std::string PyH5PartRandomSampleAttributes_ToString(const H5PartRandomSampleAttributes *, const char *);
#endif
@@ -0,0 +1,199 @@
#include "QvisH5PartRandomSampleWindow.h"
#include <H5PartRandomSampleAttributes.h>
#include <ViewerProxy.h>
#include <qcheckbox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qvbox.h>
#include <qbuttongroup.h>
#include <qradiobutton.h>
#include <QvisColorTableButton.h>
#include <QvisOpacitySlider.h>
#include <QvisColorButton.h>
#include <QvisLineStyleWidget.h>
#include <QvisLineWidthWidget.h>
#include <QvisVariableButton.h>
#include <stdio.h>
#include <string>
using std::string;
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::QvisH5PartRandomSampleWindow
//
// Purpose:
// Constructor
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisH5PartRandomSampleWindow::QvisH5PartRandomSampleWindow(const int type,
H5PartRandomSampleAttributes *subj,
const char *caption,
const char *shortName,
QvisNotepadArea *notepad)
: QvisOperatorWindow(type,subj, caption, shortName, notepad)
{
atts = subj;
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::~QvisH5PartRandomSampleWindow
//
// Purpose:
// Destructor
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisH5PartRandomSampleWindow::~QvisH5PartRandomSampleWindow()
{
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::CreateWindowContents
//
// Purpose:
// Creates the widgets for the window.
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisH5PartRandomSampleWindow::CreateWindowContents()
{
QGridLayout *mainLayout = new QGridLayout(topLayout, 1,2, 10, "mainLayout");
factorLabel = new QLabel("factor", central, "factorLabel");
mainLayout->addWidget(factorLabel,0,0);
factor = new QLineEdit(central, "factor");
connect(factor, SIGNAL(returnPressed()),
this, SLOT(factorProcessText()));
mainLayout->addWidget(factor, 0,1);
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::UpdateWindow
//
// Purpose:
// Updates the widgets in the window when the subject changes.
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisH5PartRandomSampleWindow::UpdateWindow(bool doAll)
{
QString temp;
double r;
for(int i = 0; i < atts->NumAttributes(); ++i)
{
if(!doAll)
{
if(!atts->IsSelected(i))
{
continue;
}
}
const double *dptr;
const float *fptr;
const int *iptr;
const char *cptr;
const unsigned char *uptr;
const string *sptr;
QColor tempcolor;
switch(i)
{
case 0: //factor
temp.setNum(atts->GetFactor());
factor->setText(temp);
break;
}
}
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::GetCurrentValues
//
// Purpose:
// Gets values from certain widgets and stores them in the subject.
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisH5PartRandomSampleWindow::GetCurrentValues(int which_widget)
{
bool okay, doAll = (which_widget == -1);
QString msg, temp;
// Do factor
if(which_widget == 0 || doAll)
{
temp = factor->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
float val = temp.toFloat(&okay);
atts->SetFactor(val);
}
if(!okay)
{
msg.sprintf("The value of factor was invalid. "
"Resetting to the last good value of %g.",
atts->GetFactor());
Message(msg);
atts->SetFactor(atts->GetFactor());
}
}
}
//
// Qt Slot functions
//
void
QvisH5PartRandomSampleWindow::factorProcessText()
{
GetCurrentValues(0);
Apply();
}
@@ -0,0 +1,61 @@
#ifndef QVISH5PARTRANDOMSAMPLEWINDOW_H
#define QVISH5PARTRANDOMSAMPLEWINDOW_H
#include <QvisOperatorWindow.h>
#include <AttributeSubject.h>
class H5PartRandomSampleAttributes;
class QLabel;
class QCheckBox;
class QLineEdit;
class QSpinBox;
class QVBox;
class QButtonGroup;
class QvisColorTableButton;
class QvisOpacitySlider;
class QvisColorButton;
class QvisLineStyleWidget;
class QvisLineWidthWidget;
class QvisVariableButton;
// ****************************************************************************
// Class: QvisH5PartRandomSampleWindow
//
// Purpose:
// Defines QvisH5PartRandomSampleWindow class.
//
// Notes: This class was automatically generated!
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class QvisH5PartRandomSampleWindow : public QvisOperatorWindow
{
Q_OBJECT
public:
QvisH5PartRandomSampleWindow(const int type,
H5PartRandomSampleAttributes *subj,
const char *caption = 0,
const char *shortName = 0,
QvisNotepadArea *notepad = 0);
virtual ~QvisH5PartRandomSampleWindow();
virtual void CreateWindowContents();
protected:
void UpdateWindow(bool doAll);
virtual void GetCurrentValues(int which_widget);
private slots:
void factorProcessText();
private:
QLineEdit *factor;
QLabel *factorLabel;
H5PartRandomSampleAttributes *atts;
};
#endif
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<Plugin name="H5PartRandomSample" type="operator" label="H5PartRandomSample" version="1.0" enabled="true" mdspecificcode="false" onlyengine="false" noengine="false" iconFile="icon.xpm">
<Attribute name="H5PartRandomSampleAttributes" purpose="Randomly reduce an H5Part point mesh" persistent="true" exportAPI="" exportInclude="">
<Field name="factor" label="factor" type="float">
1.0
</Field>
</Attribute>
</Plugin>
@@ -0,0 +1,177 @@
// ************************************************************************* //
// File: avtH5PartRandomSampleFilter.C
// ************************************************************************* //
#include <avtH5PartRandomSampleFilter.h>
#include <vtkDataSet.h>
#include <vtkPolyData.h>
#include <vtkPointData.h>
#include <vtkVisItUtility.h>
#include <vtkIdTypeArray.h>
#include <vtkCell.h>
#include <vtkCellData.h>
#include <vtkCellLocator.h>
#include <vtkGenericCell.h>
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter constructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
avtH5PartRandomSampleFilter::avtH5PartRandomSampleFilter()
{
idList = vtkIdList::New();
npoints = 0;
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter destructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// Modifications:
//
// ****************************************************************************
avtH5PartRandomSampleFilter::~avtH5PartRandomSampleFilter()
{
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::Create
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
avtFilter *
avtH5PartRandomSampleFilter::Create()
{
return new avtH5PartRandomSampleFilter();
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::SetAtts
//
// Purpose:
// Sets the state of the filter based on the attribute object.
//
// Arguments:
// a The attributes to use.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
void
avtH5PartRandomSampleFilter::SetAtts(const AttributeGroup *a)
{
atts = *(const H5PartRandomSampleAttributes*)a;
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::Equivalent
//
// Purpose:
// Returns true if creating a new avtH5PartRandomSampleFilter with the given
// parameters would result in an equivalent avtH5PartRandomSampleFilter.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
bool
avtH5PartRandomSampleFilter::Equivalent(const AttributeGroup *a)
{
return (atts == *(H5PartRandomSampleAttributes*)a);
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::ExecuteData
//
// Purpose:
// Sends the specified input and output through the H5PartRandomSample filter.
//
// Arguments:
// in_ds The input dataset.
// <unused> The domain number.
// <unused> The label.
//
// Returns: The output dataset.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
vtkDataSet *
avtH5PartRandomSampleFilter::ExecuteData(vtkDataSet *in_ds, int, std::string)
{
float factor = atts.GetFactor();
int nspace = 3;
int update = 0;
if (factor >= 1.0) {
in_ds->Register(NULL);
return in_ds;
} else if (factor < 0){
factor = 0.0;
}
vtkIdType nPoints = in_ds->GetNumberOfPoints();
vtkPointData *inPD = in_ds->GetPointData();
vtkPolyData *out_ds = vtkPolyData::New();
vtkPoints *pts = vtkPoints::New();
pts->SetNumberOfPoints((vtkIdType) (nPoints*factor));
out_ds->SetPoints(pts);
out_ds->Allocate(nspace*((vtkIdType) (nPoints*factor)));
vtkPointData *outPD = out_ds->GetPointData();
outPD->CopyAllocate(inPD, 0, (vtkIdType) (nPoints*factor));
double sfactor = (double) (nPoints-1)/RAND_MAX;
seed=12;
srand(seed);
vtkIdType i, index;
vtkIdType newId = 0;
vtkIdType onevertex[1];
for (vtkIdType i = 0; newId < (vtkIdType)(nPoints*factor); i++) {
index = (vtkIdType) (sfactor * rand());
if (idList->IsId(index) != -1){
continue;
} else {
idList->InsertNextId(index);
}
outPD->CopyData(inPD, index, newId);
float pt[3];
in_ds->GetPoint(index, pt);
pts->SetPoint(newId, pt);
onevertex[0] = newId;
out_ds->InsertNextCell(VTK_VERTEX, 1, onevertex);
newId++;
}
idList->Reset();
idList->Delete();
pts->Delete();
return out_ds;
}
@@ -0,0 +1,54 @@
// ************************************************************************* //
// File: avtH5PartRandomSampleFilter.h
// ************************************************************************* //
#ifndef AVT_H5PartRandomSample_FILTER_H
#define AVT_H5PartRandomSample_FILTER_H
#include <avtPluginStreamer.h>
#include <H5PartRandomSampleAttributes.h>
class vtkDataSet;
class vtkIdList;
// ****************************************************************************
// Class: avtH5PartRandomSampleFilter
//
// Purpose:
// A plugin operator for H5PartRandomSample.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
class avtH5PartRandomSampleFilter : public avtPluginStreamer
{
public:
avtH5PartRandomSampleFilter();
virtual ~avtH5PartRandomSampleFilter();
static avtFilter *Create();
virtual const char *GetType(void) { return "avtH5PartRandomSampleFilter"; };
virtual const char *GetDescription(void)
{ return "H5PartRandomSample"; };
virtual void SetAtts(const AttributeGroup*);
virtual bool Equivalent(const AttributeGroup*);
protected:
H5PartRandomSampleAttributes atts;
virtual vtkDataSet *ExecuteData(vtkDataSet *, int, std::string);
private:
long int npoints;
unsigned int seed;
vtkIdList *idList;
};
#endif
File diff suppressed because it is too large Load Diff