JUCE-4.1.0/000077500000000000000000000000001263452017400122465ustar00rootroot00000000000000JUCE-4.1.0/ChangeList.txt000066400000000000000000000061341263452017400150340ustar00rootroot00000000000000 == Major JUCE features and updates == This file just lists the more notable headline features. For more detailed info about minor changes and bugfixes, please see the git log. Version 4.1 - Added multi-bus support for audio plug-in clients - Added support for MIDI effect plug-ins (AU and AAX). Version 4.0.3 - Added MPE (Multidimensional Polyphonic Expression) classes - Added full support for generating and parsing Midi RPN/NRPN messages - Made the LinearSmoothedValue class public - Miscellaneous fixes and minor improvements Version 4.0.2 - Miscellaneous fixes and house-keeping Version 4.0.1 - Initial release of the Projucer! - Full OSC support! - Android Studio exporting from the Introjucer - Android-M pro-audio low-latency i/o support - Bluetooth MIDI device support on iOS and Android - AudioSampleBuffer refactored into a templated class AudioBuffer, to allow 32 or 64 bit float support - Audio plugin and hosting now supports 64-bit data - Support for force-touch and pen pressure on iOS and Windows - Added easy sound-file playing methods to AudioDeviceManager - Many updates to Introjucer - Many new tutorials and examples Version 3.3.0 - New functions for Base64 conversion - New command-line options in the introjucer for trimming whitespace and replacing tabs in source files Version 3.2.0 - Major OpenGL performance/stability improvements - Performance improvements to FloatVectorOperations math functions - New FloatVectorOperations: abs, min, max, addWithMultiply, clip - Midi channel pressure support - New example projects ComponentTutorialExample, SimpleFFTExample, PluckedStringsDemo - New class ValueTreeSynchroniser, for remote-syncing multiple ValueTrees - HTTPS/SSL support on Linux - Added methods for degrees to radians conversions - Added Neon instruction set support for Android targets - JUCE ValueTree performance improvements - Linux and Android multi-monitor HiDPI support - Support the “display=none” attribute in SVG files - Support for text elements in SVG files - Added Whirlpool hash class to the cryptography module - Various improvements for parameter automation in VST, VST-3, AudioUnits and AAX - Various improvements to JUCE Synthesiser - Linux Code::Blocks project support - Multicast support - Add support to generate project version numbers from project git tags - Various updates to example projects - Stability improvements to re-order and resize code of plug-in windows - Support for external third-party native libraries on Android - Introjucer’s auto-update now displays release notes - Various Introjucer usability improvements - Support for in-memory fonts on Android - New FFT class - WASAPI exclusive mode support - More C++11 feature support macros - Performance improvements to XML parsing - Add compatibility for AAX SDK 2.2.0 - Added parameters to the ValueTree::Listener::valueTreeChildRemoved() and valueTreeChildOrderChanged() methods to include more info about exactly what changed - Over 400 minor changes, bug-fixes, documentation improvements, etc. JUCE-4.1.0/README.txt000066400000000000000000000012411263452017400137420ustar00rootroot00000000000000# The JUCE Library JUCE (Jules' Utility Class Extensions) is an all-encompassing C++ framework for developing cross-platform software. It contains pretty much everything you're likely to need to create most applications, and is particularly well-suited for building highly-customised GUIs, and for handling graphics and sound. Most JUCE modules are shared under the GNU Public Licence (GPLv2, v3, and the AGPLv3). This means that the code can be freely copied and distributed, and costs nothing to use in other GPL applications. One module (the juce_core module) is permissively licensed under the ISC. For more information, visit the website: http://www.juce.comJUCE-4.1.0/doxygen/000077500000000000000000000000001263452017400137235ustar00rootroot00000000000000JUCE-4.1.0/doxygen/Doxyfile000066400000000000000000003230131263452017400154330ustar00rootroot00000000000000# Doxyfile 1.8.9.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = JUCE # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = YES # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. ####################################################################################################################### # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: # Fortran. In the later case the parser tries to guess whether the code is fixed # or free formatted code, this is the default for Fortran type files), VHDL. For # instance to make doxygen treat .inc files as Fortran files (default is PHP), # and .f files as C (default is Fortran), use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = YES # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = NO # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = YES # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # (class|struct|union) declarations. If set to NO, these declarations will be # included in the documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = YES # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = YES # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = YES # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES, upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = NO # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = NO # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = NO # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = NO # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = NO # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = NO # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 32 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = YES # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong or incomplete # parameter documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. # Note: If this tag is empty the current directory is searched. INPUT = ../modules # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank the # following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, # *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, # *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.qsf, *.as and *.js. FILE_PATTERNS = juce_*.h \ juce_*.dox # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = ../modules/juce_graphics/image_formats \ ../modules/juce_core/zip/zlib \ ../modules/juce_audio_formats/codecs/flac \ ../modules/juce_audio_formats/codecs/oggvorbis \ ../modules/juce_audio_basics/juce_audio_basics.h \ ../modules/juce_audio_basics/juce_audio_basics.cpp \ ../modules/juce_audio_devices/juce_audio_devices.h \ ../modules/juce_audio_devices/juce_audio_devices.cpp \ ../modules/juce_audio_devices/native \ ../modules/juce_audio_formats/juce_audio_formats.h \ ../modules/juce_audio_formats/juce_audio_formats.cpp \ ../modules/juce_audio_plugin_client/juce_audio_plugin_client.h \ ../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses \ ../modules/juce_audio_processors/juce_audio_processors.h \ ../modules/juce_audio_processors/juce_audio_processors.cpp \ ../modules/juce_audio_utils/juce_audio_utils.h \ ../modules/juce_audio_utils/juce_audio_utils.cpp \ ../modules/juce_browser_plugin_client/juce_browser_plugin.h \ ../modules/juce_browser_plugin_client/juce_browser_plugin.cpp \ ../modules/juce_core/juce_core.h \ ../modules/juce_core/juce_core.cpp \ ../modules/juce_core/native \ ../modules/juce_cryptography/juce_cryptography.h \ ../modules/juce_cryptography/juce_cryptography.cpp \ ../modules/juce_data_structures/juce_data_structures.h \ ../modules/juce_data_structures/juce_data_structures.cpp \ ../modules/juce_events/juce_events.h \ ../modules/juce_events/juce_events.cpp \ ../modules/juce_events/native \ ../modules/juce_graphics/juce_graphics.h \ ../modules/juce_graphics/juce_graphics.cpp \ ../modules/juce_graphics/native \ ../modules/juce_gui_basics/juce_gui_basics.h \ ../modules/juce_gui_basics/juce_gui_basics.cpp \ ../modules/juce_gui_basics/native \ ../modules/juce_gui_extra/juce_gui_extra.h \ ../modules/juce_gui_extra/juce_gui_extra.cpp \ ../modules/juce_gui_extra/native \ ../modules/juce_opengl/juce_opengl.h \ ../modules/juce_opengl/juce_opengl.cpp \ ../modules/juce_opengl/native \ ../modules/juce_tracktion_marketplace/juce_tracktion_marketplace.h \ ../modules/juce_video/juce_video.h \ ../modules/juce_video/juce_video.cpp \ ../modules/juce_video/native # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = YES # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = juce_GIFLoader* \ juce_JPEGLoader* \ juce_PNGLoader* \ juce_FlacHeader.h # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = YES # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see http://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = NO # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was # compiled with the --with-libclang option. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = YES # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 3 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = doc # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to NO can help when comparing the output of multiple runs. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = YES # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = juce.chm # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the master .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 320 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://www.mathjax.org/mathjax # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , />stream HTKeEwg7I;scĀIKEE4B*#ogQrg(<ݏ?k}+: }ÔxrE;쵞/_=J|j~r}<2v>YZϗ;Vim?l2yv:LwO9Jd-'إL"? CfY}>-ʈY36lӷ59磹<a,GG>=crcJ^j۔us$&-O*V*a/WGr bT>$7b{qzqygQk9+0ɦֹ&YOۥ IO#U<ѿ*ZЙCoM<ӝ|3=Vɗ*ʎ꘾zS?LK!񔰖sAHZJH-IA*?b=W %D"]p<>stream HLWK$7 )mX[1r E IUASɖ%=a#?_cz" s5r^95<|O1`xw='N/NC=I:gbע#}یkp^;=*G22)Asz@>v-8iY>jcBZT`ݍ}="%Vhy=BPG+DA I/i,z)&\GD+h8*G +0,  胁|)Սt%,)!  ``d#IH /P,C|2cP*͙2Ҟ͜,c.mCo6j?߉;^X1<]50H Vl8Ww2vXƒرTXωbG01=h7'@bKA}WlIùN&P0y[hi])6Pou#\`6(ԴUTf6b6`&}k C\CjKI"ʈJ!o*\A| `Z;utˡ= JͅGAE Crf"7Չ~1Ձy6)*dTC[.}yXXzY{4dElຖSa+Z1oZR9֍)h^,SůoE4o"V: r| P~Dp{9>liIJUC7l&QY4ld-z9Ʀ sdQ&wIiY2q"#+]})J u|e<$knJ!;n )R2;RMbMt?Q^޼Q[; ٤z۲{tHD ҆Bt,)Q6 ifn5۰pTY?7$e@'זFDaPUlI@XIh=٭رBV-h>|M2MmšKջu-ո@+tU}TC$6(%"+r4obӥ]14Sη&.&&Y2@!Jvv:2^Hf~($ՕK],ߨ|QfG=*{F1(q9jQ/샗H̉p Ƶ!!b/0R}um2߲hIq*/{ O9]mdbg7u07 ?Z9h:aJ?wu`f (v*)$fB$4;pbH|[W3/g:;*,= I2:Oa.ָE/>t`e2o& e}$6UC=dF5ֵZH)WO_#w|y endstream endobj 561 0 obj <>stream HVn7 OXY(AM"FhZ4E߿3gٺc-E =zQ>o]iZ_?=7),XՆW4M ?V][]c"zFjRZiI08~E͋1Ur-6i9ҼV\?2h]Vadds{9gI ɧPj۷Ұa5R,^ р'A FfV&Q6@Om 0D5 kfs fc9909Ftz-ALTd!['`F3C;->tlf]TdaPh2>|m$ f@-Ĉ{K=ѡHٶ0 rUk)Lea}3d~Tx:g srڦhdA=MJ{~S{*vD2ʳ\i&: B-(O\XYuT$E."_CP"PLJ@N=#kp>%{8)v^3ۅw'ǎ?^00XJPa|cx苉guPXր989r.!ـ iOEzV)' 4>g%Z(tDCTJGb%p&BvR:52PB:O0a_Ng .*O{~YT8Tt}Q1@d1WvU0[m EvhY+z@2F"Jͬu }kSd {4v)£qؙՀHXfIq&KQ/jco5"pY9(!LB3_zuͻ߼}S8/8 !}LeDanӇOw|c/w]$0-ϋba7b i58'!e\g{V}z2/ʧ^@:^ 1LG7ƚ@/Zgs%ߜ톧voo6!pdq? Rsh*55քmsoCu ʗo^dMO&@K8Ϭ)wg^\OgAzf5}ւ$i+S @ay_\ ?9?Y_lǧ PGGG endstream endobj 562 0 obj <>stream Hܖ=r0 {N dY?2I]{)L@~=,rN9}9e>Q*wAeswrz]~tjʽֈ}x^irT,~$bu&81BVr &"L{Z_e˂`^%WX , \"/Z%P:-Ł9["(-[Z[[uC0N= `gfDd^uЃm"u KDmv=O2Up r> %>xν:Rl <}:T/rX*q|;ghcɴ-AK ƈƙ$$9EK 7 endstream endobj 563 0 obj <>stream Hܒ1r sh vY}*O A4C=H};es۾Dž|Yy5vc{67#{U e ^䯵>?w{PeL'g]!dd(>Giw,}GgH󘞦|S^ YJcɚiM#&1:I:dQH:b 5q5< P dQ I:d0e i 0q` endstream endobj 564 0 obj <> endobj 565 0 obj <> endobj 566 0 obj <> endobj 567 0 obj <>stream H\n@~9&D 8쏖0@,2+Jk =Z vwc_Nm׌:c<],\^_!:˾;YYWxƻ{41>fc۝ß0|K&pk)}%|^ov?5}+%e꾉סXu瘕t]ux߫1+ ܼXgo[_o3#/KpA.||LLLLa G#O`! 8X fGAGaGAGG# ܄n}܂-2STd*3LE2S9ݕݕsPA1sPA1 s0o7o7U,~_ y7o_?GkշqLn~Nko0K 0 endstream endobj 568 0 obj <>stream Hܓq ﮂA? TFjؙCf.~ ngP&|)u;Mv>D{4 "Ws~] 4ۓw}m]O7GHq4aJeE~j =N33rmf|Ir!IAx5x4tȐA$& I:d>OdutȦO C3Pu A'Ml$diܯ\9Z endstream endobj 569 0 obj <>stream HUn6}G(X,M,-EAKt\Q~}|C-s9gg|BA{~ 4HC iW98498ٝ[6?<^=ٽM:P\# BBzG7' qwC0GXoYCDw'x|pS-!]=3z7ߢlCrt y٤X~e؊jU]TX`pwa,7?+ XęZ6kP=pM9ؙZZDu&sZji9"7_?*Yieg^1 GtH endstream endobj 570 0 obj <>stream HVjG}ﯨGaZ}q@b# 6yG#Ȼk\h8TOUjv ˫ bg5xqvu@/_IO?ܴ#k$wkwtMfݭ??SPU@EDžW-7fyò7v[mfZ~v[Vtodmmn8%d" GNRvfXIwd(i|<ӈ_\@+f^aX+r؊e+q%8|5h-;\Fb dłSbΨ!h-;\Y+q2d,ق5+莝I gEN#}awv?l!h˨l\yGb!WECcWqmK<KDB#9,z:* P-"%px%DˊY,U-0c)c-3tE˃8E> ȵM4Za; 4”`-2IaDbyA'I'E%Y9 2ڠx |ҿz5y?cPIT)a7iqsG?BP=3Rg QQ3j<7cI0du"Z%!7G`0wJ 0 $,0p3@:U8@gou¤夥RS(h)Y-B迺OT/e5d7;/tr/zCB$y;xIpRӀ(Be_%VEukIba(>z#(6-i uR@hϕS![8&4\4R>Q|rŞ4@gTʐ6 $3С xN#itqYpJZ5υͦpc%F}!4bѫ)WLe&bB\Wߗ}K&Wf\:ָhqaj|Cr{+qa_  endstream endobj 571 0 obj <>stream HdU PgMAJLp7P(UOZA@PH@F{hsSDǣ⿈"^iSPEyn|}Aͷ}}KS*EӴv51q̲e3}ATD` y9o Xso(5f+gfU|Xa^iL)/;2Ks6F͚e$ѰFmeG& 3 $$Em9E jK(j"EI4Pa 5ޟ@R"XRJjE S$z7AP+r_)9eJ٦ VU{UWLS2lnbrZ.;i]~l~'7|̅o؇M@Sqqqkx^8I=&2n\\xnt7pg FC` &dLHT҃_B SM@I6fP@=1N3TLG>!h s@ɆnZDƝPAFᐽn/,:TSs< I0o~q㺓k{v7\v+}0(TA Fh Ѭõ I;a-yεL((P'T/-?}+^A{ĭ퓧GuMd% L#mK4k^Azi²`>$^oڮ>(oPg)( juu55u"w]r OoA(fpa;ɭ}&зR7Vx[+*bHd`Y`$ -B7-"ynϪEXQ9"A,p]BG^_)?Vw29+ A5!o io̺(`VWk2Rp"0,}UtI<TnyB#f<,@*a( R % P"-(wLJy S^ x񟒾v7xL|:\P$>=y"X9w$­+0A'A /4{ra˖D۪EJf%.L /!9_F3O~aQ@w';(ap9RDaxHt6Jo?:e-?zr0/Y\}?joLfvJiac$fwګ7'ݝw w;Rx\ƫ7*swWÞ #jXB*C37e(E`0:IL 2KF:4nqH,v*cFZ`-} [#z떌MK޻}ܞs~;RI%fɧ7C*ϿEZJ<1Nc] La:4,rsNgpsͳ4IώnS9ꆭυi {蟺,0 774TCMWUH$e 5H摶y20jZ;+hz}c˞?kUJ;zğV$e1 >q/xHƒ&<N{g~=nq8W,#漁 \eՋSWTl@$;esl:Ksx~l.~D^{6ZePFC2+?C(ƯNM7lַ*T]DLaL$487WUVʸ ?WMUz6O_-M[br[QWvun_9&:6DѠ,qw#5 ~dkmnMMt~meϥ}V׻RAǕ -"ecjyD:nt{tF[$G,Ty^ZG'Tqa7H$L x{{B?$w{{3c!OB- 0.N Cρ"-G2݂~:Hx!(ٍ(e#x1~T0B]rԌ-dJ9/ء' :M4Z=]4t3ŒF֊%3g"ɘnς3A>%N.STQO5b]SC+w{<ެzN 2| endstream endobj 572 0 obj <> endobj 573 0 obj <> endobj 574 0 obj <> endobj 575 0 obj <> endobj 576 0 obj <> endobj 577 0 obj <>>>/Subtype/Form>>stream H2P0BCl.}`b.3S=#CSKS=#s3CSS= 3 T4. endstream endobj 578 0 obj <>stream Adobed          H>     g1!A2Q"qRSUa#$TV%&3BCDEbe '()*456789:FGHIJWXYZcdfghijrstuvwxyz!1AQaq"236Rr #$%&'()*45789:BCDEFGHIJSTUVWXYZbcdefghijstuvwxyz ?Jj+h?@oA7Py@o( 7Py@o( 7Py@o( 7Py@o( 7Py@o( 7Py@o( 7Py@o( 7Pcgo٠h3@PпrԬ>gJR3$Uw3r 7#Pc#^:?} uoTޠ[BzxUPo W@uO*^?Ыޠ:?{[BzxUPo W@uO*^?Ыޠ:?{[BzxUPo W@uO*^?Ыޠ:?{[BzxUPo W@uO*^?Ыޠ:?{[BzxUPo W@uO*^?Ыޠ:?{[BzxUPo W@uO*^?Ыޠ:?{[BzxUPo W@uO*^?Ыޠ\A #z^SUPg#z䏽A&A- ͧ*+Z?ѿ*u͐N|h5 G7un}[yq@T(8v}5nBKM/ŸRPa;)#-|7ބiMyՋ|3NWte;⩦۩6 {3x19n6k}tx6@u:ә%[@y\8uɝhmҞtWBSl`x~+7Krh 5nT\S7h8ůx՝aApz8g./; SD׃ O:Kobk)E9"m8^!ϭJ5 Y@uY@uY@uY@uY@uY@uY@uY@uY@uY@u4<;2-9- %+y N)TU3rDFڥF ^DUoYٍ~K7<lNE&ݩ43ӻMCݶm.G}@~K~6 wd5l6MW3" ws4ܐ Xd1svHcm%'ak:bgٝڍw3-9!G`',5fV4b+v[ʮ 6ELb+QOYɔ\%s*e#7gumvxcGEhn0lۯ-%ԽeӼdK/;E .6-iqOZݪ eǭm?6cm+Iv܋ք7b̌³^X"_9ǡőeMbKMfaxL}Ks?%3Dcba}KǷŎqJq)6PS%2SN [}2K!5I!* 0c6RN*JR[$+# EYQY@uY@uY@uY@uY@uY@uY@uY@uY@uY@uYAȊAPYr*8-Bn“) WI&GeBҿ7T,A(9n|s ƓsS*3SSmƔS(fh\`մtwSƓLJTӚ_jx69;VFG[t%6\8Қb"Lq~cѥҢVɃ([na"gWy*ln=fy*>ηKߕZX~FK&>mձo|XKq{DliׁOK]蘧u4S3k-dg\p};Z2ycǙ>ŞqxS?+Z2yc:;ˈ}=%~WieǿtwzK hO.!,?_ gv N_,{xGyqg\p<X4bI~)x-ds& rV \RN@9XLs}>sF0aַAHAxҢS0n Kz*>S0n Kz*x}0i`}/EGFzi`}/EOFzi`}/EGF5-,%O_U-,<^Dt9cNmyĠO$R2N~~2^4[2>?~ْTqga[2^5['3:0jK_GKRr`svّTq}ZXc*x0h3d=:юYia%O_U-,2=>?Os_d=Fnّ֖T|ta^uZXcz*~kuZX~fOSцuZz)A?~%5r^:XplHT]*2t#d8g"!Hҳ}i<(?Ӿ@ ^O7\J#^X#4|uF<4aAa 6-²/KhY <^ Us k'1b` n3gF_&5[âLD0D6f4c|q )BP xN)Dwcô&gu<3=0Ka ~ n>jl[BԓZYieIJS)N8v}\Z1Ly熟L*etцg+匿GN<+ƫڏ >Ѯ\g.ۚJz^pdJy%,UVox6׉~* S2%[+q.8Ʉ$6 $H )jz[5a֞Ѽ{m7 CmFpn$NO\%m)%JS<2VUFewE>{fѼ[iOl5Lȑ8q>.9 р`a{7Y5=Oў'L{8\#߯*G>z-h?מѺ֭&>g;wɸߢ&\i.mR@k%p@Esu1;&\' 2۝i ! G^.m$ypd76m|L}G,He։Qv j`6NTsСFm/7qt7[,;f$E]֥̗-H"!91X ^))Oy]7#V:n E@=CqP^C.VGAYs"RA2ʔaRD/^2ڗ%R/im.Le!d E &&{Ʀcp8fL KIZxGy[kP@)1l/H B1Cqn)jD'F){fHPDf C%H̕9$e6^0lf!ԺJ):mLlEyFYpΥQxl#zi>Xn^ƓT?9 !@dt&ẝ_mۿ{tfe]z\sb) Wh이vBR# O7S|f;.ݹIwu8U%TTsKjq2P@v l]cn6w5G@u>w5G@u5GPcn6:B?͑X۽pߠ:m}Y6jl:}=YM@uz>w~G@0'MAn,o;$_on,<J6-=}Bi(2 -!-ԆNg2N몙!{vG ƶζÔ7v)!M_ Q ))V(}cVm̃`ۤye&(;r"wNRh<\}zÍZJQsRcڒN(.#zրBA"2W Eէos&ޱz>Q u>J!-׼VK_hn1q#a1c䪦QMs-"^k.v*ZCF!e6w+X3ND+9IwTs1;kA83y\A˺oA:ʄm#&$J jTŷmV!N`1X -KZZ)pd8FYԎnn;G;nqsУ2\emLOdT TdF•^m巤,|jу/!k -撜(RUjAYymLmvm;'pLkC8nN6y'RRNf/Lp|m [v9x;0cQ n6$Rh'?'2I-g4qTZvR^cjɐ+ m(R:#k=H6;W?vlGb(qE3# ehIS 2kd&n~N^n|2&ƏsM>2e6*-!kA(' s9 1_UGEo_~ ƾ6;)*GǼA"ۭO7X4xPԾϒh4۪B8ч!ƽ}-8dR25 e砠G*Š[% +#iI*W^.&zF+ ) JWS 巳,E|k)#nmkGEK7#aj[ކ9KO|W'rSeŊp']<wNrzzm,wjwNr[:r>o&qt7,u>*ۯwi]:@Œbئs Z].!*H :d^'MrŮ;tvSx}]*wS*7yWՃ?bJ|g7x%]&*wcZSz WIξe7صҧ~<w}X;o#X㤈vWZLdTi<2uk#5L{heeb"Qqug7~?{NnX >?{Nn_ʺ8쏵t.Fa+^l9n5'.Vv3))REt"&#2Uw}-iG]n>:}=EK@uu h0m .9Q2O n:~sTvB%gԕJ]r"\l6Fi2-\)U "U3 s[{ +9g1mQ13g8YeZzC[m[ǣ4T:Ծ6G9w~g 1$[CmvV^PSIJ)3εآ5Ű9GW[a(Zz_QGHtmb3Ʋ})԰ʝt gY=2:hDzX}x4pw(0Sm%@g)LQ]iEˤZȵء0THCԴNi:mRb_;mf~?roXy1S0 mhVm6Iq~HԌ߷iΑ89-5mƳڬ$y!Դ| ;@q'@'1RD<)UV;_I&|=Lϔ&!,otn+V/^nlD-,GUP4\v0rJDI|lEݘO#h6@YK8&@ıJ@fiIe^iGbվA]] z2G\ȃzAEc.a(Rݖ#mY<:@}c;$gZ^CMQ·.*5vWĂJaodAHd=tg#'zf) g\p]Nzmr]1bsSo!PrbJ`S!hR7dG1';4N6^{.i-9OH]pӀ!Z#Z\Ό˩ښ'\uA@Ü샖YZ/ak$mEޕ0#э;Yތ IܰG VW;Uq3m|Ű}H6 baą6B\8CI@J 3&^ZoM"co d;-8@|%- ZIm|Ym^n!\>*ȇR̍^ȇK|תOL=XU:za \~*ȇKzr_L=XU?~N{7z4ߥ^kQ`oT釿K|ת_L=X+yQߥrnt.,΄䭓C#.e%7hsa%H0DMQA ,}nE_q>Wn0 < {Z9 8$."Ϧ2V s=Ql5N7h/n0D( 0Nn sv6g4>[IE#h[YH-<ݐ)$?8)KWBbG(*rcNVf⋴O }keK̨i+ݟF܉|_`OJtm+'2 u'_9ΊJjl%'K-0Y+V̓',n#-FC/&Cp4߁]|:|׿@xçȭ]Zu< p׿@x~W_"w~ukߠ< V~Ekߠ< p׿@xçȭ{]|:|߿@x~+_Z6k a^nˑWVH$H ǍYߔ/HA彖ړ!%HNT$4AT |wKĖqqf"Ѝˉ!Nҝt9RF z"%Pv#!KB[J;'5YSN懺a^8~Eoߠ< Vkm}B'*\vN;5,) !#Uf2:aG'+ߍtYDm!BaJZs1Iϛn&8LK(4*$o kܟ9'Kv=Cj}dbx>6i*V`GCvs ^M-Mo j)\I#>HYӰ˥fB\REW Ux'/(9~kBqF dDu }wzJ @x\3c ŘZĖ}iCiNchƖJb֦Y^hĥ p~P Vx-!**b"%G[^͗D;; yAV2lzƃïȭo48qKo\N$A;G9REX($hz5Ƞ־A]] 2?FBt-)Ky.)5ag~'Д/W]UW*jwV3_];W6+̻n62L8لJnq &Ru7\[-{cgJ.H1rl5!.IxvFT꘧mz/6FT!wjS2-soKoAdT%K)(2ky~x)E76Q@$w`gʊxyZ!<<΀OP TxZa>k@l'9 ( A>@@l h A'!tG t {x*lfdxÍAd/b[o\i!n2à n,({չ{-*Cum\ņڌ|ܭEH*Q'i<,1EVyCaЖx}2RbK)[TG E17S{oU%ј0.VˣvA5oi؋aM\(t%k@@;Ni94<(vF>쐰Z.>T IBBPIȫUҘmrz`<RP}0.;_@uq?\ksE#}tYpELIC;J|Rt+JYaKD`&U *$Rb>mE³5( | sBk|Rp>3j[)L$DaWam*'F[I#2IG1c_o;SkFm2ʹqmƖڂ ' 8ebmTNߝoƾۙ'u/:s6҅Xgv:ٙí;V8A1Z*o 0EnntJ>V,6VhW6ȝJ-D,WuYqR*FMS Q߅JO)33M%^͎2Tٖ.CMgeHm#Q6ts JU23w9-ٸa+ɶ_>c Fq-[g`p8)e Mi4y9pH6mm&"cqPRHϝkw7U{QDeخ2!⛊Ha1m,%h((d3Z:ͻ F^[x 45 ! [rLYݾKZJNʇED C#,8LJ I! RDude SI;_r FKr5>w#ayo0O+ۍȎӄ8*hl*ͳA^U9dv߻k 96ӍO!mn崆PiNc.z}z6CVÃec33g#Icڨ$xz5Ƞ׾A]] 2?FBt{Cac<̖Z~;uJB#:SDĵגEtͦ&&'T1-H-by&O}mHe҇d(d+ëE7"ɋ9i#-Q5UM0j:z2 6'psAŚDWrTbTe 86IIu:s#%3x֝;+{^?J+ܥtS9f*0fZmԣ|S0Z?*x4˰>Fy(@dx}{ MkNGog/ 3JI%0I5|Q%<9ҘMF/e}c(X>ي$$ mNpqWN~2XEaC/_TF]B@E\mwG"d6x3bq N}*)E3m"91vӗ[\xUpk%93~gIb=.h7!-(ksv\+Tm J2ND ܘgj+5nvt0M*q.M%ņ@J9j_ M>QFtJdSRx&>@lI6O4JdM})ր>@lI@lJt6O:P'ҞTJ9'#> iL%e1K-|/\qE/64b'%9.bc,pȔ˓"3d:㶩I-2@pg3\ѫOZ>mn7%ޔB~T51K-ZS"JTR MLo;kRN)PTerF^ZFg;FB#FK/"{"؇"ҷm8FYZr;9쇔`Nc:z>'S2-GPHjQ=AоA]] 2?FBthkP}0dS<^HM9PVÉG2n蘾w^莸є[i6 Ct1&p(f2 [h.99RM5컉Ƙ|>./ӭlcv,:8VHܴ\DDgrtn>׈~IuK mT- `%\O η.-rar˵IqqO%/<BHRVXW *Zg9PxgO@xgi}=9~?9/Y|b>h/YA4s =Qϧ<^|ϧ<^5G>zz?Gz?#OTs =Qϧ<^>h`0#!G>kf0G[=1Dqx Ikud*]q/v!-dU0<;[o=!#d $$(IH51i۞p K,^SVk fYe g78*B2ӁRmk_4эGkLuNqQkpQYՌfiY/t#=xgk}=чDll0ˈ6~Zd Z6TIPs\etc/:n@n*qj inBJuNQi“vu"];}b/:\.ˁfvH*-Ԧj2_"(y41Fi͞0.Mr#8Iuc'3%Y<5#<۴Jo6k_v_' ȰlďJwrKiFJ!/gY tgi b7>iMHe (f2:g"mڑ7ze "~@;&FSl͊3!n@RHYm.LۏZƐ`*XNѝ.^ihT@*ZĽY}%)q;>VM6|˞) ngnϙUh&1r+)➘}VVTY;̀8vSLu8):vhm0WS˴ږA;@8iM/Xa6c9w53=총Đґ9fd39H eA#y=DEѾA]] 2?FBt梴u= A.֣9L7 22kuq;e!JNY̊[uunslzY9(̔f"7LůF3I8&<W*ۈ":!.[zJwW% *05IU]\zm'T:GNtѕ&0&kOsU1E"oUg@-XyX|A du9o+v#-Ac;w=rJ;/G9=*m"al}r mVFʟ6"mT΋alMٚ[mWџFffzWml7c%sr8yC-y s~x [i۴V$0L(aYNF_P3_t]TK ;pX [n+d~. mՍ?[f PNW'vJU'5yD(yeouOi}17|Hd3/a~ .޺F颰IwM&ngTOgmi滒n/ŕpI 62$:hE[T[oh;) Υ7Zf|ETwgPwiǹ@wʨ>Zh?h;<=wbloz=rˏAc)ؖ610dFT5>)St䓚R}U[ԯ6iSYZRc:REN3^h',MnF qI!Iøi%!% e> %)8V̵yz7c%r;/، =Ԍ񯌗ՊS fLJ@RRHYQQ qQQ'3M/!-ʰ- = )pyu#ʴ̹֜0; ">ʐd-i%9p<@AE'C-XH 8d%/8rGmIVEZ{ aYdn[uT@; sQ>r{|"3<plۇ٧i@}x}@}{Pn-Pngۇ٧k@}{Pn-Zp[4~>=?_^@}{Pb v>$nt9 9I)2_h/hm%ģi<6άVHvn3)/LSQÎ MA.8KV 0sJp _l:LX[[(4 Pȧ6ЀyRZCͶY!%- D$'*^o}gkAabx'Txggv[9 թ`OXU!K2l8jBL(lYP-6vsBJtJ,+VH(ySSJaIZ2 sUڊfxMjk@wi΃AiPr3ϖv*iΠ9q uA-w(rr 's[`]n'13և"+FMvyyG)OXý7f\f|AuTҖBBҼOjX"% "s`YK[/#J!A"VACi !-_ S}2 & [117/K uK н@ ]7ǷUC;'KaEIkId$>T)*$'dXQm:` Y^yHSyrR璕6 -)#ӅJ; 6߉7]e0y sv6ӎd.@KhVԄQ$q'5Szmι:找.yxLyp)+ov ye@ƵebӶ_KQiuBeqv-)RWRHHR2*RsݒӄGf0Qr'/eY! QIY V|9);pCq/7~=M߃:z47~7/7~/:_>?G:'n_ѧt_x~t_~OFe=@u@uin_ѧt_~OG: :#>a~7 žE˸bkҥGǎZYu#tNY$ YKŬh qڤQyHH[+$JO SΌ;Nnf}{^~- Cn+&t^rcsVӨ"tW'kh8Զ1~'1{eyhd'k-ӛ9)VG3jvais%, t uknяKqllPl]Qߊ߰MYBλ'1[e7{$)=~wtY6˜X,my嫲yyrR&?ާ`68޿䕟)J$$H%\/xe$;H2v[;I*I“8ţw"VnRJ)+yE3qH$K;^Q ҩvp-.]8x)Q+Y$R7+` d#lmr 㦼uɞF~րN#@ @gʨ3xE5Tx#Ak(C`[_B1 2 Y0܄$![s-\'7[xU`t!wkFfDʖ(Nus'8E)yben0BXSm)qJRԢRB(*HyW|k}W GQ5I][cWwiSQmKBV\RO󦝳-6Če^pAQޗH*! T\I9I( ֢#qyi78gbKq)ȐSQm FjQo8MRѺfسp_--.2T/ J#3䤨j٥sr=IسF]M)h~+d9 ֽ#33=$r{R/vt;΂;m1&(yNl! $l垛Y&d^cmp6:ʍÏ}{PGx6:h@f{ ʀ=GPzԾA]] 2?FBt<*3kzTm[pn66څ%nVI˂g+DDbw)~*5DDfm7LfКB튴Ʒ"|E1pĆwz̈Cwe )J$9$j}gKzеo18Niig:w˝΅2{*bfE[kmEVLDg{DD!fp[e"e~ZTe)בZ22ke{άݖρFRbϳ%TE 2e0)=.*;YeAMSNRk޵0Fݧ-VZÍVlKhs GaSߏ^M=q%g!E6!eA+D]$ڢH!I[I']G]oo~*nx9Z?gZPǐz\*yi*N<* g, \ǵr6瞔ʏi*;} a4o vrRs}#4FY˜볌:&2ܧ |-;e%!9θ(U8F߀B[d9xۡJm4ڤ 3J#YpκьEKV ұ<.̧1Yf&ϫ!<ݕp.!o^;aSd [mQ9c&(sJ:Y׳ZҠ#qM39#ř)F:BPC:9gxqL񙪢iHV+›k\d){uaM'2teυZbUy~b\(#%*Cp2C ^ ͢w,+akl)?QJ?T^nz|~6qY~zshWT^n<~[@uRyOU+hW7=~HzshW?ďhW7=>HzsU+כ/ă6&sq?_h$E~1:ǍwwͦXm\7,#hYWNs%%&,Kl^x9A RVm@7FD9\3g`2Mк #8lsugH^kkv)k^N&-TL[ gd `{dV"B[uŖҤUcdgrӹ_H)"E:ގ:._:;NJ`~ 58RBAPeg ϊ;u[ 131h|x/\.ۏG>.in9PZrcR, 8*IdS8F$#-z~l^#\:bzhF*n iul,%M8G&fb6ӟZ*ףW[7FMFUۍ=n3KOӂ,t-g; Mw6kD*;::P3Ӊ~Ҡ;U|u:=8h?$q=Tt7M J3 ;3<t1s^w+mc2Ρl#iR琮U43}Z%_[7+m Ym19}JlVoF((Zr9C.h*|–%#8aƑΔ{ʔ]5 8d [A/SWR,LD3e! m#!J+!yQ.M౦jj-;KRPvR3) (t.ov]V0JP*miI J%@)( PϊsI #tm|f_KE )bJKiq.lmišo<(Sk-.3AĄ)P rP p+kb41^,a֚-)-B6V6{9fs:şloڬU1^{n[YHChqSԔ%*@H*8Ufvh[l?xuׇ]}b:|cî>Kkh2g]x_m}-_XN%]x}Z xu#m}-|:䶾#-<:䶾믬G_Zî>Џ?Ķ믬GOZ xu#m}-|:Kkh0g]N`I{\g:݅0!8,ve yP+P C!kܷڈHrNRLF Z`G][ûK!p5$+4k,CL!KJJ\.t.!ĝc94};;8JBZN BmJm)TiX9 d9m+RnJh--m-) )(qIP%$0m v8Snݦa!Wi9 HG $<0e J^SJsq` 6U䌸Wu7ڮ܏MKQz n Ogev;(H:̥!`VTw JnIH۴] ['a%+%-JYOTS–ۉ364UrN%jSg @ hc[_KAzDzor$2Ns3C˾-GPHjQ=A־A]] 2?FBt+@u?h*Tђ[TR[e +PHR BUnio!V"b/1#39: ;}/vf;"h_h:I`؎n8r5舢oLӚ^bowN9\U5Qnu];N7Nh__m۽yVˍ\L%1삍/l8)Zρ&owf"cNv|.,-;FL(ndgu K4 |-;LE{ $才3hҹ+w (`s7)q.,J ׈\Mx89W'Lכl.c͈͒,,¼[o Lab6]Zېێ%HQCEH$hIG]TMcW$ - C6$V`g7[~ٟ(リN #@#4̩7YKJ !-R ¶Fr3mU=o7v^=Ÿܖn㴿vy;$mi'f,#NjwjN\8fr6Mc(n^1Vc @xɇ>Xmz|P2a?n_/>|1Xmz|P2aϖ^&1sۊ1xt"NYc҃͋3 #lIt [.w1!&5TvdmBZ*JbpDmծ3n,ÖǡJ}nQ.ۉ7-g5)E%dր|qVᶧ|HSt44sLG-8JCaFiI!' 78h<\}^%=(<;oIE4 G39j;'Ϙs1dq&Lc*$0 _J*N胥 7/s3Dp#K[ G;A+Z\2QNAFF_~7Dp[~wkDiኡc+ feCS%L FI̵C#ORO U6K6KlĀKW$4oxa\R+o%l8 sIN~1mL bo[l" lpǐ1.ʸG6%6u+t>P┠(5?Z׶xЭ7hHFĊʛpRB (,!J8[;EMϡ8tiuzAuG%'s@QfEHELݲۀ()[.oaM x'xnxyUqÇkIm;p$<3rkqb-W8nH}t%f !TZ!4Qck>}8Gè}q$5j BL̊T Icڨ$xz5Ƞ׾A]] 2?FBtUZ}0H̉>"r< + q$)'"4 4iu^t6^jDxp/&T=e2.lF-|8)MHW\s5t.Gz)4Q1xZl/O:g֧= GDE5F6QޭLZFΞ:C$ n%`C`~5; MQV{g\yNo;ank͢6~Ac—{qZ*Y"4$8@T2a7g;tMdW\G&dfʶGwmy™N3ic_; =)xvwD()<%A$VA &b*U;Nw'&cPpmT[K* !$ dm]^gpv{FÑq#B&Xm;HKq Vy +PY &E3\$gIV[R0k,> q.LQp ;!rKV q5ͯkjOΐ팭({]}+ PM6@hWn{O[x>K$CXܔ˭ѐFy_QGQG>]o>:}=EKA?QW[@h_QG]o~QW[@h1#(Z~0>U"-> `1vsESxKenx2H[JW\4xLJ$0-7)ċSHn+ӎ%,8US7h)AY )q/10╪&/x?؇!&M#HACn$Ee;* $&PQ'<#٩y_s&uvω}%`Gm1ۏ+irB[줐SgZQ~b݆gm۫ G}-BW[@h$:9 cxxnv.Ƒ#8avYiNs$$CuZf2:vB~QT7!ƢBe&Nbm*A# #9Zb4ij3;_B{jöFiݽRBv]I\ݰ|m+1j/Δ;mfӉ10o^1Xp<N˜_TIQQR;9#3b㇅$(QtJge98%3f*cifmwiwć l0HtJU$ uezIF%i{nXop/.KoHO1)78~gH s0$(r/ c{\Q\vZHPF6$/^.6GSņZHm $l[%I vI'h1)|[([GQVJQ(BBK%)ʒ-GPHjQ=AоA]] 2?FBth֠2#źS[/+تa_kF"b3nWH=߱\m;Z}7dyvw% % (W5k[VWfo1:&8GK$pcF/En KvYeNr@wtnsj&# d7g dl:;{; 3wG!B􉮸+|ķ7)[R U꽵qsM1L[>3?E~ vuOGmf'99-[)oL- Ch^[MA[Afof𹛖J~ u{U; P{Tʨ9uwΠz;Cc*O*;BJJRӒT N]eAb+V$L˻o+y7l4BRyur<8^{LƴLF-q4oe.#R+I)+gCt֋$ ?b8!;vӀgwj $w*pԶqwµDKlPi%jZb2G}7ퟛb3=ΒLTT6#4(C:i/|I(|jگ%%YPs>4jHK(Bw`c,nzEyH2\(٩% :UH!+" "L)]'7 \B^em-RJ m/#JRR⁙PF}eIcڨ$xz5ȠѾA]] 2?FBt~$Y4٦3 d.ZŖ1ix!/p-)tfxY7kUՁ"'<܅\ H&d3GM/v-]wzىrƮƞ_azZFq̐H?N#&IfTٽ_@.7N"eN¯\|v@;(fyfE=޷ݮ8zVR#y%(݁w=Ϗus5Nn. Ⱥ6+f`7,e8jB N+e;*VהҶ 3TDBsx*Y QcbJi5nP8ls̗H'@(mޘ==jr"Ǹa-;x:g8J@ڷG[ xʭOP]|c{VUP`'H [$EاY0E \X)q1!ICI)9JM"$7#1ڱFl3RFB.[mV!fo1~#UA^GIa—g&6˱Ը8˭;VBH dQ7at~=-]f]Ov|yb;e@6mJꚪXD9B#0〖\VW PN`<-¢Uǂ3M̑6ۍm/rK`ő-0#B 9yn8@q Uπ))Vdݗ43ߝ\,5-[`p #rl yƗΓLZ7K: #-%% (`J^[οnUѶva]Q&a;滔H%2'4t̩Ycsq莣F6e.BjuݽNv!|PʆI6#߳&9¶rLdC`imSgBY)yڭȻ۳~p͚|CobA|G[ؑi.fBh#@WRxZRt-l &Į'fIuАZy>H9I$Ռ{jߵUoKeG e#33XIPsȚH+eA#y=DEҾA]] 2?FBt ?t)2gvղJA3ß>:. er;wsϵϿh }Ap;l} D ɼMUsfM6ؔ[#t8$sS4n*W.EM,i*B4*98-;ōGHNpͦku&*$IJ%>^Aoi;UqpOWGec߳lR0o&CWhq]M,!6wJ)idZm鍴O-}+a/R .G6t·ey H LO\mz[j#LXJW&#:bVf)BUi3m;ݻh1vhn÷ {PֶBdu0B) gr-Nk3yF-v?Wk*7k5kh MZvWh MZwvSVƀݯvSVƀݯvSWh MZwv?Wh MZ4~{_4~;_N@nj ۙ(+/}N015E l/dWvՒ; bwmDyK3Vc8H}ˆKmPUƝW Qۍ0(TxZ[6qМjx)}5Kc<\}r#dLa&imEt|,{C9eѫOgn5Zx~p#0ݯկq ސVDw<"20ܕ++H;*Ȑr7"Ēx%ZAhsyeȉedK[9VrӛlۙJlbǟE"8YV|5Mx* $qK;9IzўݺS6vF nw,TۋJqI%;{=;s"מn߳)>k+͹̞r$t4))Fa=WS`d{D*v]\N1"x=8^QJ6Hݻ#,a/Ƒ}9f6f8( 8[ZqOS栲RA)q1sxqxt m{ך[qYR:\KIi3LN<*QBIȧ,E9.7:ZirZuaVzwk޲VvJOҰNn|8a۳ퟜ=-3Lę*M;r!he>/&@Zcqft7|MP8rVZᝒR#hND89<Ke 15k^Le}`?Icڨ$xz5ȠӾA]] 2?FBt&le2`>  vH3n;ϹO~lůk|R0I9 * e6zA"sVkh.\x;֣{q҃P$ 3kc6ldʖXC-Tp;ia ?yyNXic_4i-DwJ:ɹ@[U1oeE9k[Y#2 !Ds5&/ۨk6X.'묇!GqdfX9ZƬ0#ng>Ԡ66-XJ gNhSY|&3:,D^*a_!b2 ʸBɳ".AKIJ2]pK$xӼ^ڤ1:~}gT.Fl搝ِN_KבJ}N79ѩlKrwoWTDb+Li1G 2%m) [xO!T=ڨ 9ihjPkú95Zp* 2HynPIRK)'0A V tۡ" "a1ⷨܕJbW!8N t[iJP^ւā#4ʷDV"Eb.#*.Su8Hu a-m;쉢bf7ٿGynhLQWx4;ZxRNJPφyJͷz4+%moҖT2A=ĕ2<+]jx$^fp{3`^xJo Z Njxorէl|N|~ۖ:ż7j&>o nZscݫ6>o Z <[|~ۖ:ż7j6>o -Z-mW?6>o Z Njxorէl||[+v_l|`p!kXq BX"&UanyCS))JBJA9 ՒIv 7nyI݄b&$xhKRvHu6rejr&7zYdžݯ3c` R`/a1ZDŽף[&J2ʑ3{isDήߙ C.Ej:#ۣ)O-I!GgtijLNmΗ[|~ۖ: o ڵ 0rV+g nc=-+2; 4{J%Cs]&lzna,;gɴ\#-7^[JJX QO(l:Jw+zfu"$+r b``޹+i"jg &/S=۵Y`:-4b!m3ZBچ`բA7lzSU9|+Xyk1a8Gg5ʔ[1!yӍLqMQo~ClO>#:Iy)V@.!Cc<##Rw&ܢ`jLY$B rl$)%ANDTZ͟U|,a䴥;Zdn7oH\ғ#$ӴzkWMòotx&#r@FuZu;+WmO rP6;p_۳~bջmBnˑ9)/8I{?u̫0k^Rts#}EQZ;C2 Cqe!*)* Ox 3D^xo1۵kAiqe-bHiCm% H32 H;$[j<{"ԾA]] 2?FBt Q`_$*9\ 8K}mtr]-:>\q%jm-+YOe8qq1;ףxvm5нRݓa 7xR' Lv]B;; ;F1lÚzkغE>ٛZَU2\Nl(,m2*I(۲){*ckޭ 6"ވ##lyC[%eAIU4_<Y.xjqgCyV;C+ $aԉ"4מB yԂ`5u-h}q4XOFc,ͶmY$&+%նt"Yd ;%mx!ޙ1&Ÿ{vmDi 0Z.KDtSvH'<1۪csO=YE܏2Ǵ5;u9prgPփVPlH8L26RVr*HR P  OfG`F3nmhFi* =1NI9gܮUչg ZzhCau.Iiͦ 5b,^_¥$)0J7[$XHp>DPr C]Tu.VmܨR\m)m94E! S1N2۲QjRs5<X7|NT$- k;FԶʜ@ˬ3VEe@gk,5M,IV`V;qe-mo!o8m:Զ3Q=){8t/>[9~+d~T3ซ;nPcqׯ?*T_}+_P=m@n/ʕK?j_*qׯTڭ5ʕ7j=n@n/ʕUVR뭯_[_P}mAڭʕk*T뭯O[_P[_/s*qׯT>nVrcHl Mb[Tq-UVflc-)$:9s#?! r ͋>vpim31_mZ}@- %l+ H< S1, 1pRd*X=DsWw܇.*FdR̆0[MGQvVK,;Sϐ -.E yO:Z u]"y}AcVׯT6@ppcDyhq!%Jfe(+Y*>sIcڨ$xz5ȠվA]] 2?FBtV+{wkݢ뛦3RVTLWa~L|Gn6 XA9yPJpfoBJjNMU%7a1R([hC= Nk5-pַc 0# qIqJVoJJ᳗XgՊzZ)Sx1Եlj3d Ia1"RKXa/m@e-UM33iٺR>8oqy1x8Kcتݍr6fyCss xVf&"4xfzpb&gE-՛г`c \˥= I-V VPJڂPB"ݦtoŷkb?C\&^XK™cӏ1nVZ(fejc;['ipfrNiIq֙gҠ=4Z {s=(sJNTZh?h4ArZ J[QBVA)GMI 䮫LMm欄y-+j*khmo/;H.u G /i6i9RrPQl-<|=kU1!Y,Dz-\C^!pPoi+HRϝ*uQMV!o[̶&rosX[]51mL).Qf^R*V3Lƴ#V%FԜOq { IZ%-|Ueqo$&fi7S2F}l1 mgkT,e}-37{䰷&1ynn86,d箕q΂#C1mݯú\c"܎(!@+٩9Q_B8f2%o DT܃G8D{{ԑRppqM/6;=h6V;t!NĚҙy`)\r "af&W~ =kP=h9cҨ=*NUFyրZZ 9F4`[͞B12ㅨiDa`EI W9uM2刧ڬv7㴫cYrdChJPā*aX&%c<>y=Zwl:HX*+%  6FJ'hټGe=TLaھ ]xi7XBiy@k4JѺu[E$氕')UjLD_\u[X>䦘[W@kJgod`eUsNj:n"'u#Iw*,)%BW#Fj©gSlm~)~qH,Iy' HqPp1C<҇[PsiDCvG( 33v4m}b|y*pљط>kd-[$MUæN"jΘfCI*E89ĝ) HJ”$(rNM%f-3C3Ψ3<8TgIƃ9t@f{ *3Ǎ@f{h *3ʀ#Y񽓢]F6`&)iex\b%qJrQF.bLm Y7 :I)pw%3ɕ$ T\hܹx3fV,nq㥲KMkZ["6lN%'<ƕ1F9DyWTdxr0ږSv,Aͅ-Զ\{0NdfN{9֢;FKvRr f{I۰E:% JRRx咆g!UQ5v$]z߯vJ66+n= V\24|*N(/KBlkPfi|nz'wE )^Q09!!"S% ve'bi sߵk6^1F#8S4̪;*5dR]@lʬuxH:6T'Dm/!f3sJRLRRNhJ35'7'hjk[\znW|KewKUs)y{L*SjD:RkvPR"#um1m3{oMWNKLL5(\qP Ao$}ǚUc ߵJbnݣFoq ޶cjZQqkuJ%K NΊZO Lӈprcre莔%N(R3W EQksw<AD tCR;$r<*LE(f|,m)ij.7f y'/ Fk}gG+ldxBDm>O$ P\F^PWa_Sͽ|ɗevv}.$m.7$lfI9os`6߽&A%k]-H9{I>AYvGXYm4w{?!؍) ÎB2|% I*X)桑ោ۪\pLxPWJٸ]NAgdCJ  $ub&FԐ^p:-}u}U@u$.}>:/[TRB{>:._zEVUԐHk!ppH_$\UԐ^姮/[T"~nUPjvV4̷a>=J^ۑ`ky(!M%J,jQ7:m|K+KlIuynӖeN"rhp6?&qFxlɑxƅn\na-2l#7A'3F@"m<ŦG:CH\~8VUԐHkc9x -w[u y5)Zd8`I5#YڣKK(2CwXG4Pw7۵)͞L|w%DÍJy` h#Nr1_n0q3!WJ2W$]&/y=KI?!0awCr}_ q̚RXP99ۆݪ;o_}RMEiLX<50 [ka&S! IJ)2#<.]xRgnϺoYU(S S!H ;d3xՌfK~5}/"s m!d.mViq;N)N%c4GɢM3p>G1^jOޯ%Q_~EmF(jlBȊjr[[v2.RZ)؎hy)<ƚ.=1d寮6@sikz$AR$V8ZʔM$[j<{"оA]] 2?FBtV'`5{;u)6LeRJKcyNd9ƨq35WbXAy'hmx>Zsl.T2o }7i3'Di~Ц#Ƅ,Fq.@( yK: V2!VO^tmy/nT jJ[{jo,ӯGS{Vŋĩ3 ]茟 J"ܰ:H3c]kYz&4h_^z"JK,N;a=[(Z5mhSTpKKDoBُM3v2R3p \Ri ۙ+q JʖIs0w\ea[N:֛(Y|UY9dяt0Z%(CwIjBk+Fh0Js Q 埳Vjc˜pu $vFGT"~U"{ m̵U5Mѕq3{9ޅ~yp/2߇ȖHw ~6ZiHMBqjuJP)5S'<"R{N+,U0"5lKnT$u9yBstd. ZJ́lwYٷa܋?i_)o[5mL}M2b6;=q@og/ŋٯ/Sh fM7i)zl)[-z6;g/ŋ?fM+SV@rj=Щ F0ZV'gjkhj֗yJvTu?e {eEd>)5; ffeNq[\v"66e͐ H8xb&o;f;;[vvvJHj9!h@:9uvhm lPAe_\_}2\_,hZֵřu k+8%Dզp=Y-V۴_-2OnHT8g bf!\6#ɊpU1-:ăG(I9h.Q̺kT nQik0u@P9+14R3faCy 6Ï32 vA0NYg4/9i~K2!Сwn S $0j=U{QkbnK7T WmG8M,SmiVeZWI 40`}8hRژn&?-PG`Hemo [`Yf#y5 #廆GHV6^Ų2&ee*dnS(%%eN@Y @ bP?}[5m.z#Coxm Vs3 YJ HREX( A'(?ѾA]] 2?FBt[[-vsި'kg1Yևp} ^e~C1C̈́`6'yPHS0Nz&o]K[Yl`.TPP2^o[]ni䥤sfKȶm B[BO9Q11nϚpguΫߵ>DtҳeFo}VԶR̩C/ϫ9C.F&sW<5^giWqڱ6pduH]C읒%I+vHe/L^5u9qoS=\xo/fbᨈaY}ؒ4h-,(pH mxWs7U[:7,Oudgݙdq fzDIlv<)uZq ke@ׁxD^#iv>-\CEOKr mKp)A9$y#<򫓼Dpm DDپ5yշpiĆB [>R* iIu/SL؃m{Y#gm>PJ %a>ҒTYTtX}2Nkm7*mfmd#wH.'a m@BI9sy-yeς[)tcJ$%8B[g=y@;6O"afQ%i%OHrken5א Kj38'3]zk[u unL,d:;ky×',\r9|m8ÛM(4Kf;ʺ%Ŵ 6 Ѕm$$NJ:5ŖGebG!c%D6KiV;9 MX1[vi6!)iD?ZsjF|mRs t;c8z1~>8&Z!dы|Y4/8&Z!dы|Y5/c!d @x8}1~|Y4/8Z!d@b-B8Cɯ1~F諦 3]w0rnpE)jI-8xJ0zgx3˽d|[c6݋|7|C%K;YsQ3gz#Gcz!/nHY}j.zHX+A@:lu6_6޷nlS8t!azR[Yq3u֥vB㉋7&1mÁ ~Ij;v2ma!8}EAT J5c?gϥ\Rϰٸn2Zvy.(4R@Buǟ qze)ɽR LB]^nmlvI(S%m-_,6n-\zC]|*]Ʌ-]Ȇg#YM}qV }X"3Ɍ#iAm 3RA-GPHjQ=AҾA]] 2?FBt7#uyo s66xg\j .N[o? xd0mxe8J%IeMֵ<~*Y༓4 -4_-f,C-{RJF)qa mmy ݒZ&cΒcfjq)CR5--.XB%jIs.'0Nkm-.zerŝJ%ʛ V<.JXZkXN5:DcbyLT907s"d]6g>Yc Aۅ'bG^۸ƋլLEJ_n t:`b}7=pqJ;ull $3I<j.{k+]yr_ZRVԥfr-L̾#ATguw@wk΀c~:(>νʴ>(s`Rh>qPp<=Mu< 5 qTPq<Pe{ y Z; Nx\ z{ SʀpCʀwuP8* qQʀwuPd8kϕt<!˺x\ qwTZkuP8pUy N^\ zuyPZ?ptYˤQT<=OdPӾA]] 2?FBtkT^-w]ҟlml<ʨ.-H?l KLGNT@I#eA!LrLV(Iiv?"=%49OK}&dq統; te¶yk D v! [_eSRPMMZ[~gBa8yp;I;!Qˋۖx8$\p#wQnn,51%`ؽۥJzK12!"@xRH %fTƗD%.={S-l)L!3[Mn-h[! QARjq&W5v8W4Ÿ1xV=GPzԾA]] 2?FBth֠.P{P=hC@{GJ]y:=y=*T:փVP|Q?kԚ:P*uuPwk=@w콏p<9 9k9{v2ӁZp:/crׁΨ2xG:/`@eϝ@eNT^N$k-9\t@eTiy^j: P{-8t^Tdx\ wp:p4ZpAk}ruAϾ;s \;{χw: 4Ͼ΀˾{3s/c*toAIr9w]Ͽh }wA/c}@wAk{N.Ah }@wpA ]@yPg>29wtw˾=;{k`r:/c}{r;~N29wgc./c}rׇw:4^>2Ӈ?ǵ˾>.w:/c9 aK?H+eA#y=DE׾A]] 2?FBtsT* {CJ'ʨ=ڨST`r444; O>QPP΀45F=@w<5U9>(}Rh>hvh4< E9p1hjT9PZΠ9h4QπP O:4<U:yQP֨. * {CJ'ʀTkT1{ P|Tjjwp CPʀx EPwp>u9iʀ42yz@\2~kgREX( A'(?оA]] 2?FBthkP`r9ҀҀ9Ujh09pPǴ5;u9prgPփVP|q?pI =փ=:=@wgUwsPP@y3A@wpu *45 jwphiPҨ>}@wpt4GUj(3 j \;  *9Pg5F=sPPʃ>ր5<]'qV9u$]j<{"ѾA]] 2?FBtAk@wi΃ߧ*>ݦӝi@zh(3ߦ5;@{P~3ϖ:*i΃;v&4=4~cփ=svU@wʃv`rҀ4;ҀҀ5v1ݦߧ* v1i@{PgNTݦO-YˤQT<=OdPҾA]] 2?FBth֠.#P{PҀ#Q@{c\ThhliPG*Pk@wq-(4NT=F9i#CPAߦxEhNt@{Ur=u9qs=@w #A@g PwqliPҨ;T~֠3F@9q @r @gjr55AhhliPʀ^#QT#Z=8ui@ri@gʀ#Z׿0]]IEcڨ$xz5ȠԾA]] 2?FBtǝh<8 U˺ʨ=}yU@yTPdx ϺϺN= 3ywPǻPg^}zqP*<TcwRh>ouI׏!ʀ^<= ʃǑTg?gu@gT|uT<=83ywPǗuN{P< Ψ3ӏ#ʠ=]@N{ Ϻ8tʀT~.^=ܨ=8ӏ#ʃ. CNyU}{UN<* ʀώ*@gU3yPg=x ׏w*TzqyUO-rH+eA#y=DEվA]] 2?FBt'Uzq: UAyP3NN2~ogRE( A'(?־A]] 2?FBt>ݮם@z(3AwZ^t@wʃ<@{JփV^toװ?4wy{h1Ayc]*Ҡ;A|=hycҀt@wk;ҀtyTZ֨vwJt;AwZփ߮~{At=(yPgրu;AwJ҃==hu2~o_՟]$]j<{"оA]] 2?FBt{GZuA@{P*:w΀#uu;tt4@w'J~4XPgt%_\Zҧ-Z׽Aү-<-{dSKNPe^?Zt Nxijt%_\Z1Y:U񥧟ůz,*|i,ZүȖ=qkޠN?Zy~,ZүȖ}qkޠ>'J}-:׽A!}"&[C6Btfh$}bO>8w&=s3ϾNS΃iy{N9kTq9{^-8| eC}FHׁΠ2׾N^N:{N#^A΃9k9^׾2Ӂ΃{N:w} 3D\nZ^%ݻ4p*qipR݄ .=m>fuFz4ņ J8Fys(QdFu<8pa~+;ax>k]n6wde64DŽȔhјJVݨbSchn᫏l8<}-y)W&Ԩ ܆.rHݤ{'*;EQ}W3m0Ƶ,um<۱###RP6AHG#c4Z o-7UHFz~]CwcZOϾh}7>G!4hDQNsoAI]×}{s^> pA/c}@wAzs=}wtw. |?'@es;sw]^.Π}Ͼwt˾=]t9`r:@w@wswt˾@wAk}s;wǵ˾wgw:/c}ß}aK?H+eA#y=DEӾA]] 2?FBtq~L#ioJe+[P dhtR:6IPY%W4 Pdto[?@o[Ɵ, }]@}OUh?MWPdo[/@o[ƿ, }]@>+x偏0:7JpCh x偏ѿSo|1u%8VWPg6Jg-_>o[?@o[Ɵ, }]@}OUi)ⷎ_3%=VWPc7Jp_>ﲠc6dK 8Xx- #* 2/?4w49ATd55QC@{CJ=*5Ak@wp-42yhkP}Pwp40t<9 <=PwphiPcUrϴ5ˀ֨s=@w ' jr55F; }@wgUwsPc@ww<U hSTZ?ptY˩"}{UAԾA]] z2:^\jcɼB>Ȫ- WS+ǝ:<j}7.U{vҦ@xh"Tc+=d$DR JdDxM{zA QEn)Zؐ+x2$$(Qף$y&-qwE[,>";nmWLH^RR%"v_'9Eq|bΓv[X{u8V+JVo,;J`8ԋLmy#Ix6?4݀ iIPm! Ve+<g'G+`׮VZ`RB46)#5f@dxne"f3m\ėkoަd߄if1RdgHHO6υ& V i\a(*Ɯ1԰ P RJFyptۏ_/Iً7)֒ ^mq9{]c߳]\Atk2$a%G϶ u lTAaFJH#|_ijqg2|'% R)V@ӟrm4<_lZYSŵgZ~!M%HVvU1`6֑[IRO]h}7>Ͼ}/xGHlr9"'NsQúv&;4 9k;TZiZi2vj 宜.'MEZ-4PiAJ$k*Z-4isT`tPg-tTPesCPc/6FHNTڨ4ZM9cˁATk;UZi=A5A@e騪 i:Pg-tҀ#]9PZi-{ qv9u$]j<{"վǒh4۪Nɠ/EfbnzSX-]o7ȉJ'IsZ88~"X2g!HRN`EQOH*e˷&>fQkcGOTZ|:z*w=nTC|tWP(b?m;/tw_@xT:z+1w:WP(b?m;ξJ* ]y_@x}<Ҿ (b;ΞJ* ]y_A1wWP(b;ξJ* ]y_@ !}?yҾ (b;ΞJ* T:z+1w:WP(b;ξJ* ]yΕTCpitWPg ]y_@x<Ҿ C|uW(b;ξJ ]yTNҾ C|tWP'XJ+h?18>x?40;^[m3  _Ã7i*6܈&ȫzPBR\H,IeFIGUd־i"U5PEWAtإh#Yey }͉tQ.%D@u]K:tQ.%D@u]K:tQ@u]K:tQ.%D@u]K:tQ.%D@u]K:tQ.%D@u]K:tQ.%D@u]K:tQ.%D@u?TXz, (7=IRMa(%K;!4d@h(?׿7~1Ph8{^MwryܠaТ~&}-xhz(?/GpPcőg#ϸ(GpP,S>0|LD Ikl4!<(6FHPпuh>')AɄҸyA9ne\)1Auk?X:PZ(gVYլb~@uk?X:PZ(gVYլb~@uk?X:PZ(gVYլb~@uk?X:PZ(gVYլb~@uk?X:PZ(gVYլb~@uk?X:PZ(gVYլb~@uk?X:PZ(gVYլb~@uk?X:PZ(2-}bEAGa * ;`{T4 endstream endobj 579 0 obj <> endobj 1 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 1/TrimBox[0.0 0.0 595.276 841.89]/Type/Page>> endobj 2 0 obj [11 0 R] endobj 3 0 obj <>stream HWko.`|ZPELσIMv-t?DEA#1MzIʪ;çljna$):{~ݧ ty;xZ`[hW-W_j "#LY% +\5ڄBQVJ (*J*UbU1nT}eO(VU ff1JZaT !I0C*S"ve(Kw!l`VOGRuj2<7f`žoՔ!W9L&UPuH(ic̫l 5m1]6Q9?< v*|NVPt-=*"lJgN7PQWiTH>PSS$de;a;h,Bij% Ԫܛ萵Qv4($>A^'\u^/c|AJ-Kٱ1YEbyJvD/Z7oe#n@0YZLmkIexr05+hEAK:XIUߣz~݂C^=DQefkN8C= exNR{@Vzh_E64S4U͖Ml Y$8 2t aa9PnG7O# $u),=n[Fed6atL<(rFM=&R4:bejq--(9vvGEg[>j3LPzZuv#gH2] 澀<}l!3P:v0 ?7ȟ7Ml c*IZ.DA.̈́GDx(%t*C`@cZfb7@2J,WggxW N0@yX͵Y7+ww647AUd##}/|Ϝ+KwfK0ЂLbic[ "%5Q@ ԺT$izh8\(`C* endstream endobj 4 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 3/TrimBox[0.0 0.0 595.276 841.89]/Type/Page>> endobj 5 0 obj <>stream HWn}'0ЏRNrX``p]+kTdF"5$eE"5rk3, d:uT5#QN>7c4Z(" QqHDM&'ۛwߓ8&};]-͒ݭ,7!J84! ÈyHޕ}Yآ!?:]X%yY1 > glΡpQÍtf̒IEk|s(܌Mݖ5IHm?lZ}j6YzӐ{倅̗x4Tl4 I*)mp]%piw(k%,IXh [%Mѐ}U`ㅈ!قf9)+$6@*ذ;RHu/Fw*`k6eG(x?˒5Ο,xl<^$w@u5IBİ@ [k Auq>4.zủLE6&=G.(;{yJ8$b|jC~=$'o)~d: T*LicV\4fb J~7iiϘhv'b8DԘY!PIgnXs! hE(ݵo߅3&.1ܮXS)3+% 3 T i%*JT_MgXB@ (i] QkLHASda=H=Zb ֆ7ڄW !/Bhc(`~a$CLP;Y$^1G3c#plc/@j3Ly_F u0#Bb٭v ţ^]͜:}ٯͩ``FqGq&#~Q uTc8-//c/uW,Y>ա%RRB[85 -Y endstream endobj 6 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 4/TrimBox[0.0 0.0 595.276 841.89]/Type/Page>> endobj 7 0 obj <>stream HW[~0} $rf87Y ]'v[caeDI)R!:E{"q$+6s?gaJ^xGB\_xK7O%_W|*W3Y(2%QJx\I&oQ !Y_+YV߼pൎLI&qa˷Yъ209w:*Waǔ Ӟ4XȯOBԷ`IUݳGJHyU-x.@^3oOޥd r ?ر:By7G;p Aj_aP -YN<5*DCwWqO 1J)|OĪ'tQ FLyk 5!+OBv.5o=HКf:zkT҂8 ??RVRD)GO0)"4$$~t"b15_a_'uk٬zQ<]`S)L#W%#}m 1a>]b>>;DV mᐽ4>22+/lD%.y}da 3Ilfs 0]&:a"}I!8GS|^b"kvq`&!oy2q2M+6('a$*2Imfii,n̲,"B 4.vOS~x̨E1u"#l5d Ug'ֈs՞7jlhm7{jwd!N]+ 'jDպ(Mw@lorx#H\S:ARS; Jf< %rY7?,@~g݀C /`vK+}+Zp"Ҧ {voH̃O~!&?+kPj ;X =-jo*$LkpHCc4E;@AKWB烱s2vx/A>C` t \Bq~N2 Hs7W-ksوTrD}c|7vƭ-DG9os.hjmA%{tϡls)a IB~{O[#qns7DOP`8LbT^n"Ɗb;a-, % ]Q7l`L cDyXQpqJ]+zX:~'G/k- d,SDG'?=I,{>kgէ̠,*MJq$ZgʪɃUDet-P#x ̀{|fGLC!WGO/@!1ƋX㲎`eh×RTR`>@R!̝aBR|9 -"K\ Wc,աVuL!ɮ&w{%i,Ng^ J>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 5/TrimBox[0.0 0.0 595.276 841.89]/Type/Page>> endobj 9 0 obj <>stream HW[o~_3r ] Uy<'dL}:]ܓ,%7C"#1]lZt6!,>r4orлXjFGYiMpx?%?d+2]%$/QL[=YJ&syBf%;b3ue4 sNcA}85RP;c;Y  Yhm vqjbm[D).M߀0L(p p' ou;tPnt'>(rT&w(a4 pjz$> dsnomX}7Fɇؾz>:ωpe;07 x&y^/C*JࣀRlJQbZy8kFW=OIdeһۼ"_H Sdb$0I!("֣tlQ0[D%U`f̖.- fKuOJM-"[ĖN0AI"t4P0%'7hvI\v%"[ zCx s+HH+)R %J;HD+ "5~jG1 %R-]"׽󾣃:kS:J=Fa&N;e-nE -q<=6ma$:'׸W^@ZvwJXu1O׎wQ#S¿18MS~Gyؤ(j [8Ls\Qb0Zt 5.ZSkzSIx)UmrKyG)RbTbz# ȄT* 2XRc`*m1fG̀[(G=8px/tt0C jmMT 8#rc.^cc4:dUൡqGP{^1DO| ;bp]vHQ|JUڢT ؐIYA.Z-'yfY`41?޽kP(EWt_aL< a*FH$,}u3QP#T¦v)C^HD!_ab 0K; q$q~r@9"x@9ϕ#Iժƺ~_mm|F}4}@K(X;gS.谀'A`HvzHNEj^EAȋLTXBf鋾^~M+:8x3;9?%>ȧo=(&;0`bbj1EP6AVO\sA@'C 炪Y^G;'R Gxfk1 qi_8!'K(5 endstream endobj 10 0 obj <>stream H\j0Fl/ؚiI 6pl%kFq.;҅5:F#h4*>+;ٝاpo C,+ݥ9\4Mʟy=l{C=]yMӟp qv ^>lWaOdcEߧVInujxEg7{ErnSѬXXc,d?/o[+F6cW_!^eƸ"W\=ك`YczGށ9O zs]u=X3yefk/ ⅞OS)SOa> _/W+> GQ(|RKpS(|8_)Nf zP^v gvlUJbM89+[" endstream endobj 11 0 obj <>/Border[0 0 0]/H/N/Rect[276.657 68.0048 346.518 52.7689]/StructParent 2/Subtype/Link/Type/Annot>> endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <>stream H[ǿsf\@ rgqqנ*.Q#*uDA&6jFIDi <*(KѶKI4Tai9{f=̼lyb=xDO-}&q )-* x +=qr꼔ݧ EN|=@'F#4`>khɪ)+[h ,nђx;iLOL_ٺ&VSZ~_$-E)˒Z7+mr6׶y,H&m޼("PhV%~|JDPעǟ˱puq 捳my!„gIc o2Վq \#8E&"J*H!H=yG3x~97!M- e[&-K"I,)IZ)6I%[/'.y+9\!'cgHJ2QTf)+eJ0G#ak6L3Ŝg2(s9fF}>ff6{=a) "ES\[ u5Wk+kk]ŵo=YWc!5\ 'ߟ2!=MǪvپm2Z\G./U-+]"#^e7~hȲN:!A.n CaР#!rZD/8aGDE? H 0 _a$F! 1c1`<&`"$Dc2`*bkLtLY9CSfl^GqP?ka1E!p'q8E)XeHDJ" No rWfeyȰ6{%a=  Xl/bH:񯘋 X&+oū8-"7%@F|'GU5xY&߀m;ϰYp'+SLV`)YFH:V r:wvEZK=.L:3B`^:g/\f0iL/{R&fK,v:X|ϰgZ/q!ܛ˅YXpc._7s*s"%Lr/CO3IJ"C3(ќ;5 ުVD*1zG| LVvHg$$j2ITMjHru&oe_mPwS7yXI_@t^iYiePUwͯ_ 4综|Cj.OVMCŽ9a]^w*QlW>'%e\U88_ =~{\f}."93*SD/hUȒgB̭˞%ɹu >?џП\Թ9nڇ^?Kߩ/ǃi:=E w}mJyoȴY1vɁ]@I;cLP,K2M?Ʉ$!{#S"w4#OE"O=txPrׯ/?_| (w]!W arȭqddG|::%o ٗpu8gEױv S;|H DQ}RӸF$ :tOS e3#Mj dQm ϭQSB)Awr{k|*?uq ]qm`w[^{&ŗ MRGU\$^2 q|ԓ( ] 6\Kr )FT'E_ﶩŬ { %9Y @-&}';|v 6̤HWLZ(4%jS(IL4P5sۧ? _ɣDȰCTA l5B`&YȆz`}9qito܁ 8˒D*1Ɉ!)1#+ aAM\N: Juwr(y/~_ozq鱘{c扅YjI͞#]fbwk$(i5Uʸ*+氇%Zm̬ P|=׮ aā~g+Pxum·^~yv(S>|gZXXH>'o7E3w[*a39YJ9:J=3ʎ #wmVwT<X2d!ʋa|`_q1n[ħ&|jQE$vbLv+ճI a$("jn.r Q0ԮF,Qh)8hXNg b~-W@#+g ݖ!Bh5嚦ݟ\C&-g߇wm7mr]# :Mΰɱ[ݚm1m/ZF~Y<121ZB.ةհTO$5\Z*C T>tb^y Ul_Oh`:s$Ót\]v]D2[0th"!DFa+^Ic*\VM&Z$/+x+sy:="cw5Qҝ!V7ƍ>& 20 xSb3j}d7;BLhZL-~!"!a9+J e6i o%x^7yj#fY50H19yQճ < c\C;пf ,y ]MP ohKTߟnZ`hhU R63ClYZ* p _Óh 4O\0Nw;12Lѳ0ҿ&3|;;DZC $1+ !Em$d$ f,$6k`*EV`Vzj7)*1X(6&$˖{}y>c3>BvpiiLFKb(&D1B4bv ?o{8!8&.=P44p͏`uL. *7˜?w߲e?Eo6+^TQWS ^su QZ0AJET o,.,-xxQVJJdFIYJO#JȆ|T0̓lG4ѿ~ !=Mk'5[|/u\u'I7lܸF.Jeh Ь]^iЪ؜WyF=&Hҁb($J[@>Ca|7(-}<(8fP^c!2=66۟mNvFQv=+h <` LOQT, ;x>])m!|BCA{.K ; Z~@ ؅8W$}3%e3r4+zIۯ FuMZd! U ښ\/'xs1V'1;){&KFVnG[&!Xv#dNaQtcHG̨l"BUninـٽ՟]x_E9çN/([;H utf!::L"-eAG3EWfIVLa;悒<4Y!LY)G5V| _FߡS\R߮-6 MGdA m Զm{+[_ܬL (VteX`FJw] pN07 2I`KyYeh ޶"OW'PfP|^ߚ̍CrA_=t}p"}A;-ES]٫A" `f)1[F %](J۞d+L X%@Gϖ.#7˩0yCۙXShz/C)q^!{4E\%Ǣ 8Iyr!0A:~V7?y`λ5XWxY/FË3⊸#)GVp ]RQaqYL䟜є/3yOaMwhh4xRf…-~nrj rxʪ m哜3,2ҤiҌJz5ּ)ִּtQ4rVND'DcK%?ΉyķƷ9-=022)q)*ْvfTV)b*G]}剥d%iDuy(uᎮVFq4H=/}d Ǭ+rR <0}Lr(bҬ4e6zGaגxOОBmE/nhNMеmr9݀Y!HL# Z[ÒjqXnk]4#_;î; {s}9!nieZ9{7,O ,"YR(bTDIw)5)J#H}8*fK>[Cqi51qhF LۦNƨ?uI9`Kh-0EF8LX\U]7o-r}o٬ v#l҉j|Iˇl;xi ?+ӓ-Ry,= ,pPt=goOl;A{)!Сq{^WfG4eVoNV= ecA YhѣTdPd42E2jiظi3K[B]Q{`MCm_]svњk{[|vLX5YEH'9}M}Wve;_l+ù}MU?We+@?X? O2/=~ X (X$s\Sk§+oQcӀ~{5f@= mī2~^]Ǐ,Ϛ,o  查}c`OHXw8!}HY5:0%{#{O#QR9_E&/D\ /̰-6!O  VYŒ2Y(UFwR0J֯kI(ypX} 2G_7dF# ?xFNi6~~04%g/U5N7-vcL"?+_|䖐 ,6V(2~"V3`3R'XX-S]B4릃3h_ūM?,̤g*vn ׋Gs ,zx4lAZ_QSis @E+X.J؜@H2OJsJ+-2H$PϨ9"W+b;$:Bȴv0@6@!6^zԷh-Ul!c[Rz%X3b a鹍q5p\|R(1AՀ*;_'рHpfw2WG| xFȼ@<JvF>GG\E?Ls|&a;w=W 3$ Szb@BO@' 3#Q`背zc6[Prτ7:9# ?|9qK(?>fm!f(_QC4Ks aJzovO*{VC;#0UGQ#Ћ!w"Pc99˞g))/ҜcNŦƽu=c=4b2@.uݴR꣒EPͦ&`Wʡ~Ị\Q5t@۸UQVɠjv3VC;NQDcJ2t= L[KȠ7z8?dz~Nlw2["}^!ޓOZ7 7:zNKOE4ޓHd/:DO՞j/u>/:b$>7i&lWzm)}7ewkB@a}K9iP\wlCQC"rP.)!gHDGCD{&%'i,,k{_A6 b2lhF]60j/{ˤ`Q:zc䍁:Ώ]Ak.ɍ+(v&c_}ˋBn쥞 *7c#]?iHD"JǍ'2RXv![GϳS{ߢwM<ՑxR9*黤Y>!rkw1߱~A"'ibF:6q[("[1i7}Xm^d-|GνRL(̕N3vM=kDg{,z?NV>ƻқt6;.Ֆw{ⲄI}Hv'?㤋CΏKv']<z*#R{tql3%.Oq{㲻}vs/҃t߭~!Nk;~m!j$AcH3oIlVl:S`e8 s0bl-GktdK ~,l'"8m}@oU'^겞 ? ̳XkHDNN7w55otop_nwRU58٬;mڶ|ۗ1y~cn^b?.qAz/8,+{]ygنS4oyND8iblh eϒIi]5:[@o|w{;c?LُzӷysMg2?$~b ojԴ=tiCՎ3[8 mo#zF{mͶzmOkŘ 6Ļ +{Ճ7"}'}; ȹu%k>=vj3(՗/._:s ߾\/vpou{8kygRg3VRΦvps,˰L/a2,a[&~p=Sg w߂R_ xq/\o`MC.xo= V,ޫ`Z>M*,^%9,du~R;{~HJT{{F1pŃԮ]6ce 00wÃM.9Kl}7:p`s;xןa]Rx|E!w7Yy/wp?o̻+֦gPv龞s9R]zg7줯1-6p%X3U.B׼yWc%fUd=|}ߏqo“{s11}O;7?<R}_ZȴkT{6'ڂt?Cfڗ!u@y(?@ǿri+yy`]fz2=[gz,NeNӫ򍇛jk 3Eƺ\aOYʊ`:{~ao2s-Vֶ44vuuAir͹M|]IZ,,Ԕ,HsTf)ѳ9Mٚ\}@0kf[Zrͫ=/+VZ4aCR/PR/lRfل HQZ| Ѳ5HJ#jj}( d Jr~Դb=AӮ&`Fv5bݘɣ}NcFv/u%Y3ԠFm(cb#t=f܃JjTCeV5-k2__C:yn*T {2ӳm^0u fMFg:~#yQӲԕ]y=]  } )7w n#n[Z-#VQr12Vx eLa )*N.3#2S)YXl)2OK,Y"KWƭX#k売AVl8Up4e8,-Z$vm۶m۶m۶m۶m;3Uٵv`լRj[@P?pj[dm܆Xes=Z Hil}O6Ʀp;dw͵| ;fkSvڋKv.غ6e؈[f?mm~@I+930^'PY@Gk{k;a/B"B#!,!<H(hXm .!> !!1 )!9R %R!kHHȀȄȂȆȁer#"  X%P2P (((򨀊~c{*jZ:zhFh&hfhhi m=C;GtD'tFtE7tGD/FE?[񘀉ɘ阁٘XXXXXXXX؀؄؂؆؁؅؃؇88888888󸀋˸븁۸xxxxxxxxx ):0(18C0$C140,1<#0"#120*1:c0&c160.1>0!110)19S0%S150-1=30#3130+1;s0's170/1? 0(8K$K4˰,˱<+"+2*:k&k6.>!1)9[%[5۰-۱=;#;3+;{'{7/?p q0p(q8Gp$Gq4p,q<'p]ɜ©v+c<."..2. *:n&nn6n.>!1 )9^%^^5^ -=>#>>3> +;~'~~7~/? JrQPSpPHRhQXSxEPDH(hX8xJDJ$JdJnB)JFiNAIEYMٕC9KGyOU@UHUDEULUB%UJUFeUNUAUIUEUUMUC5UKUGuUO@ HDMLB-JFmNAIE]MC=KG}O5@5H5DC5L5B#5J5Fc5N5A5I5ES5M5C35K5Gs5O@ HDKL˵B+JFkNAIE[M۵C;KG{Ou@uHuDGuLuB'uJuFguNuAuIuEWuMuC7uKuGwuO@HDOLB/JFoNAIE_MC?KGt{<C{|>G|O>?޽e۶m۶mj-۶m۶m;&$lSlM6f,mslͳ"[lKl-V*[mkl6&l[lmv.m{lv!;lGvN);mg쬝v.%lW]vn-mwݳ#{lO=^+{mo쭽>'l_}~/m B" !8B# "#"""# "#b"b#"#"# "#R"R# "#2"2# "#r"r#"  JJ ʢʣ** jj ZZ ڢڣ:: zz/ @ ` P 0#/F?8L$LL4L ,<,",,2, *:l&ll6l.>!1 )9\%\\5\ -=<#<<3< +;|'||7|/ E#H ð Ȍ¨،øLLL¤LLLLôL¬ü,,,¢,,,,ò,ʬªڬúlll¦llllöl®þ88C87HQ9c9999S99399s9 K˹+k빁[۹;{yyyGyy'yygyyyyWyy7yywy>`s%8g`Spσ`8_+28W|7|w|`?? PH $WhQXSxEPDERdEQTEStPLRlQ\S|%PB%R()R(R)()2(2)()r(r)() TPTXETTT\%TRTZeTVT^TQTYUTUT]5TST[uTWT_ PXMT\-RZmV^QY]U]=S[}W_ijkjp5Jihi&h&ihifhfihihihiVhVihi6h6ihivhvihi0UtP:#:c::LotJuFgu.X󺠋x]e]U]`nn鱞詞K\/RZoV^QY_U]?S[<x顂$7=p#xD=GhcxL=xxBO='dSxJO=t3xF=glsxN=| xA/䅽b^KxI/好r^+xE䕽Wj^kxM嵽z^xCo䍽7f[xKo孽v;xG䝽wn㛬0P{ CDJ[JY2B@`eR({#V2 sݛSzI>WI e !2Tp!#e12Vx eL)2Ut!3e̖92Wd̗PbY"_RFe\VJY%eu^6F$;"V&e][^'?ȏ_A9$cr\NI9%匜sr^.EI~KrYU&"orS~?ܖ;rWܗPcy"OoGsW^Ky%!=2 at[ Ȍ,ȊlȎȉ\ȍ<ȋ|ȏxQ0(>D1G G(((򨀊ʨꨁcBm|:uzG"QQhh4D#Ġ1bM -Vh6hv =:#:p Nt p+!I>$Ïz'z!}111C1 1#1 1c111 1S1 131 1s%<,",|bcVbVc bc6b6;l؊m؎؉]؍=؋}?b? 0(8N$N4,<."~ϸ˸븁_+~M?p qw'=<#<<^^3czf`3B+ Pfffe6fgd.fe>gς,XEXK#biaYcyV`EVbeVaUVcu`M1k6?a~ʺ c=3(6`4cؘl¦llc+fe;~ٞؑhgg:O'ٕݘ$zew~Ag=ؓþ¡ñɜ©ٜù2ݮtq>p!q1k.7˸+k븞q VnvNn^yyyGyy'yygyy%^^5^ _ow[;?>!1)?|/Z{^3hfTZUJUͤYhVͦ5\[h^ͧ~ZR?RZZhY-嵂VJZYhUյT~~uSaZO5B#FiֆHcjmʹЖѶN?ϵvЎIYN.MPvnIQv/ԧ׀ОKSѾOtѡ:Ltѱ:NtNѩ:M tvHl\L R'8=ְ$X-a}N=0qv js$:{#-fxow8?BKe7~k)4# Ag*.Fc8 Z"ThTPzޅޤ$m'!-i IxXxŝ km:6E3 nUitM35 $=n%Td ]bPb17C;b#=b#=b#={'{Ÿ'ɺɺɺu;vѽ{G;wtѽ~ofy;ߟ_ZCkh 56ͺu5j}=ӛzJ]Ejjnԭ::;K_e_k5;?J֔)YSdMIPR rA.:/:/:/xW*^ū::GT*J@%a}X߹sGpGpg}g}uXGoGoGoGoםyv&~'~'~'~'~'~'~'~=~=~=~=~ "`,"`,"`,"`,"_@YdE@YdE@Yde?B"$,B"$,B"$,? "(,"(," ," ,L3Y/(`," ,"Њ@+4}}D\qEyyѡ߽9EӧӵzUޜFgک櫛/W NNmLةb*vةbbQ*¦ *l¦ Z]~) T%P@UU T%P@UU T%P@UU T%P@UU T%P_UTP@UUTP@5pCe앑VFZepOןoO߾>O?oPq.~}:-_~|vo?\_n?V'af8aG{㥋#o'/Ow?__5/ab:ϔ|/=m_۾=?.]:OM~{ؿ>tfO-ݝZZ8?K_oZNŧc_:w:<=yyxz|:Zd^db~u/Ӻ5Au"NՉ:TY* |i1W|5י3}=a}l6Xm`a}0`d &L6l0`d &L6l0`d &L6l_ 5k_ 5k_ 5k_ 0G0????!?!!!!B80C80C80C80= a l`c{N6 a l`04 1k f0À0`3F`Ø?D1zz&|c3vy>? 3g?4 a h@0Fo P_~:u_ǿ:%M|7niw%K>|.\s%K>|.\s%K>|.\s%J+W_ɿ%JqW_+W_ɿ%J+WL̳֥ui]Zt'Iwҝ}N;6?go9{{{{{7oпc 77s`@~|.G&·{ަ69﷟6mnnmk:slɏ&?hrɍ&7vR4uy.skɗ6 7M49L󜛜irə&gڨ6c?GQrMOtɝ6;[_-skU SSՍUuT'kԆ~o 7~o 7ƟgƟgƟg地-n2kS׋KZ[rXq8VWt-9p[MI 0ZA,"~E_ѯ_ZגO'%K'~ (8Pp@ (8Pp@W=Ń <(xPA <(s\b?ey}_K/տTZK--------####c~53_spa;tz5ߚ_k~o[̯3:̯3~GO~*8ɗMQ=_UU?US?US7M S?)Nw S~7)Mo ?SϔgOef R@@@@@@@@@zͷb/b[>::::::G_2?tttttttttttttttttttttt4444,Ƃ n,@@@@@@X^; ,jk;;;;;;;;;;;;;;;;h7@@hZz-hhhhhhhU|<<<<<<<<<<<:\qpW\qpW\qpW\q{W\q&W\qpš˄.L2WN:W=ݞnOխBnOW +tнt݁@O /tB׋@G ]0tC ]0 BWW ]1tgK.A/ttN :񦓾}t,.ĥX؊c%oU>^e0O/~NcbI}?ov4FgEfEfEf}psux8̓Ė^^OS$\L)t]>^ߝͳw㽸_-_?>~Sq7=:uJ֙"؋֧[+enS>jEiP+ERT>Sx*O֋/v8|9ZZbm-X+c2X+c^2zeEo-z=~O{}k9˸\^>_/߾^?7_ɜgPנA]u 5kPנRK.źR~_~_~A?~A? Ofp3w~oOq}8>Lx.68k:f9nOa+vZ^=7zn܍~n\w߿nsUJJJJT38y?DSZ,n&wx] >iIcO [hqU(8EKKqK.'|Oiٍ]ӮiմjZ5ZZڜԤFF^&'19ILNbr$&'19ILNbrR[}[ӗr8ry3o|q}G2'?I ؝.oew9yT=_v4Ť)&M1iISLbp8~ H@4i H& M@4i켐V8;-dje씐SB{qsLiUI^Qg2e .WT}DwjI66/F=G~DzerW eGi2!XvDH,#XFX2ReȔ)#SFL2"eG\ˏB(Q(RFJ2 e(Q(PFB2dɎRQ*;JeX"cEv{vv3fv7+q@ʜnt39fN78ױeܶuN/X[wӝFuv.Ew& )I$8I(m;cFLb_IjӿпSxQ6:.^=Wl,^iJWZc~%(1Fc1|*t7*]2p!p ܀A_Wcng+>YGq SPyǠ81(G5!9{(nDq#Q2ŝ(Dq';Q܉Nd$ŭ(IH{Qҽ |ҽ5Qҿw$ %iSOV:ҡthC+Zy>\⊔Y=y- UFM)5@ѐ"C )2Ȑ"C )2Ȑ"C )2Ȑ"C )2Ȑ"C )2Ȑ"C )2Ȑ C 2$Ȑ C \:b4cHf4c#e藵'0C 340C 340C 24,C m24$C M24$C 2z#RdHLᑆ 1tyC 1C... l8g#߫0Άq6a lg#)H1F1| ls] le/~˖fp3e/~6\a +bS,Y%|w////~9E~~grLN/Nu£fԜZPʺֺUztգ]G7=Mnzt[}%W¼d6zʬΫڢPǕjԄR=5Ԃe]uڤW _+|W _+|o 7|o 7|O'Od 'O2?S?S?e~|<xQ g`=Xz1u c`X:1u cH&p*~?>!}C`؇>!})~ ?OSc`{{^ދ{x/g3 ~?g3 ~?s9~ 9~?s9~_/ ~_/ ~~>y;~~_/K%~ _/KN@gJ+9伒ʲ8wmO;#;F;hmԾ=F~F9joLzq=zr\h`Y ;>(joxm;>$GVfGN;z{0B=d4}:v}K۸ٞg\6{v=ͥް7y2t;=N+|]~2᜵r4޼\//0Owuou;8p>p:t[sb׎˾-ɢxy>p!}==Gm<||{xу݃Ϻ?Mco֢Sw[q}[s{޻qޖ{7vLݯ~u_p_LϧgSN|Mg9}9vV~zֽy zsnߺ>p޸ݺn6޸^oמv?w?WW{eh~Ͻ\]ؽTR^nTq/L][FSwmTGwn n88S7_n.FKrg̚(ᛛ 3If b@2BKP!lrG_K|H/<6ŏ~S{骾Q߂?\;!W B.դKˆ/#>u!ܑs>g9ӎmɱ!' r #y2 e^V-]vl^yE-[;ludBuG/)"ԑ1Q-# FJ/R){*$-)d)yjpj<|_}2S: 6CiÒa1d"-I}„JHK㒒 %XP. T#CiZ^8{  endstream endobj 16 0 obj <> endobj 17 0 obj <>stream H_?;>QAAVj&VR%(Fh4j<"AFAK(f'1@D̈Qw|bJBZ(|9z@&MNrY<}^򾻩̀{#~JR¤g\:sSB~ 1ANNOMLs9.%anC MyHHIji 4mVRЈ5 !.͵/ ϒ˾D`8Ku5 oBw^Ɂ5fwpϹHl"q~r@ ZQ$#kpV *$D HJMRN*D|C Ɖ lqZ\+W R'mI's7酫K V*D*}J2WY,W*_Վ05QT7yjO-T jzW3)Zjk"vS=Ԟj5S=LC L}Q?!'ʣx O'L0MFTco7JJ!imI= ~t Ji hDuoZ{VkXYV5kYQcuZHnuY֢ajB&ߏyzyxGxýüoy{yzükxxſUW{ʼn{ߗg(|I;֝뉿$>I\82 C/HKRU"%:_x~ Mhhh*4nP-L^ڣD'tFtE7 ;z'z7~>~xW ` 01Ca86F `$F!hA{qx1+؎/#`7b`?pE8c8S8(c&! So1H4ws|HwW_a22݅bi徎Xp!3%B})X$(\*#_q8#E;X.o`|I*Ǽ/çX,dc=!;܈-=$9Ift$&^.ݻ|Lǰ,}Y. | ռ_ǂxAg6N,2K1[<|f Dn+܄GǽoKgy@,MHa?LbG2{.nRNm%g|^2]Ng "TrEtKx>5m!{MdW½mfaʐ.A?H8Zwa̕[{|,s=OE>&)EN ]۸ V'o %*e"@d)da_w-ɔݨ>'Ϲm(+|ܙ];c!;,~c 5+0bHH "dTФ6mTb45PZ4@t1 5iq;k[T͞3wfޓ+K&i$67ǼH2?';%cgfoe;āfJ;@|k6T{SDKV^mbӔ!F7Sw~쓪MD,JMe!{VQuc !٧JVQ9^ϫocL]W!h^J ;qoczBh-jVkؑ׶Din0ۀ@G7EuMm]`c$\܍=Eđ80"lيcxəW e_&3 m!0Ҧ⺳%s p܉(j_#]D|c>zi hCDCYy6FGO4`lg}{њYyAeOdJ*FگɮdVw9^ܗE4;TJ:bVxƗCWG"LnÝ( g;hRizM9YyYEe+JK242Tp.-\@R7껯,]ѳOȾsv s+V?2{u/.w4Ԝ\] 9/;Nd's9\՝2u>Ҷ ہq?]vsuQ9lrdQ`8J-ggaWaƅ Ljj ŊcmRzW̐˼|emG;maλuӜ{k>5[VW΃dZKa18`UŰ0 ; 낝}s \$ oz*e0:۶9us~ttV"acS.Oa۴!K2uC%bL5! hȓk)/isNy 蜤=O5~怹>0c/tidKf]~~a'HN` *jh@ `bi@tsE~ì2ktƺ-1]jA7z?M;_3nxJ=4/SsQTy~+)P!juQ:hn4HpY,dΤ\ 6WD୿rfd/I*D_1x`|5dXab\V޹wɼs!\;΅s!\;΅s!\;΅s!z6-=t >hLtLtLtLtLtLtL<)MKYȖqqc ך6Uh7.b:X`LLM'O!X`F 3W78~E^WٙРk[ QUdl~v\%͔sThJ~!S9ɭ'kgc?c^nYanm/*NćAF]Ү.6$(١,HL"0[PQdG'aLI,}IW;)_s(j0)WI1h;QXV)U

`_,,"..U(IXSS'`XpeHU;džZ <4wvO{M ;s {yٿ!QQIwJL7=V߽}i1>:|;eיd<] +_>[DUfN$A{R:X5U\nP赳e k{MILXBg-%2NYX7~^sSSsɡ@f&:l-6z dQ@AXR4 "2V"t1U,1 :(WyOGrCr>1VA:6N~7i7mAȬK]2&޷e \`rZgVho#Չwko-#ղarhn~]!tlL9ب!$ȓ'v)OGIFZ9i !4{ngپpYYx_٧bGa; NE[qJز/q:Mw:$5QiSS#ǖj#n@*cxCMMVUPp pgD jTHUSTopH2]C3Vlw%~'k~pk㾘(]Waj-_uh-LK4^ {`>`ThH0^T+s}:aGxǞ%:[R\F֯\mW,PwbʎrD9s|{.@%"wHޠݦSs!:d kMSl:QON|>[A^,Ge^ SWU^wwǾYo{ZVGG"sVǵNyN ]m?w't I쓐'hUĝ7!R7261րw>Ã3$?̡Qz c~E{#Ncq1„/Zogl:LPAE@ P|BH 7#L1S.ȟ?;E\Yp "-=w>^KK+*JK˹v2I﮹q>`#~i>^qseȓ&|H*aE'Od! 8-e'8.2TWҹ%׾vi!v{./="+csOV،u8H?cMsNf4P2`tR!T/^ &kk92L ) ?+u gmYĄWWF=\{QenЩS$#٭LDuȑsP#IHMM&T hSir:X}q V@9Lk-(V^e;eN??(wmӝ;Mk<zFkNYF$=E8-ح/YodЦŐQWDDqdkg2*(| *""'cd{Ą؟-pmGдwR*PLM^mSfKԓdT(4c6e_>鷸8|kmJn<) 559'Yﳂ*#Uy+8r!]D5QxNTcQ~Tz}4=ZT,$%`d#M&&«>(늿{eٷ+ Hd C QDZJEÐEhKVk-`bLR4,X5R"&Ʊi$fH?6uďx}<;{E's.!N!Ya6 b)*Ja#ekZ5B   "A'PKh0mF#X1.jS} }gՏ s[# 8qOM0Ifm/ٗs&Vk[VUj[M !{r\PJA4D{':I%mzmَų{ J ^}5mo:z5}Zpۍg }}x"k쫤o+Gk+sy>hcf$[SĖ4ǡ==pw(dI ^ vvuu^ϯ߾M^?t@}_' h,;7.c{)NSq*lهH U}o24LOޭهn|Gg/TV?>WnCj1)"`"B~n KAyFYG(`BChyVƊ$fx/ʵz?G߳bغXB:;>XyM1;]`.onIEb~M+ dTR bw%r6ҢdR*):< -@lv' 8Ga6ˢ%[Ws%}~ҦzG؂?A " "Yߕ9ȳ$ __ZJ֠aG 3R@,ɀY , bEgG팹HP DL$K"І t̐i-j'a9<^MkJeRH RdeJ5g2(gr|k.\_ 䊅X*R\kI [m֙6&qiZĩ$MSx*7 rrfB"1!O@ }^(f\ ;ݸ&_P˗&.0g8aD*d'e$#L2TWCmdE{+\*% F pq#gA*:PjMQI yL!G {%jP/jFYlU sC݈깮ژn nGDŽ%3e<جx+Cb-"kBc€b$(8ЦMZ T|jyZ+(}ct6h"kdŢ"ڜfg\%3~R*d7P,XTGoNɚ+=D]4棒'.ܿz]Cs}V\O!D;>NnJ> J'6E,OfR&V:Al M*!-< ۊۣo^'^#Z_?Ɋ|dS\ޥ\+tfz7x39: PSfk@(&"7vhs[SSgѯg#]ܮ=W m߆+C/7{7_xr']{X4d\;x@34# Iwg6(D`yW`1V . nOnE+BmC^Erˁ2~q3a7ܼ$Cc!8dQ^K%IDWy}0zQ6}2w׎kg$rg%',r3[g:z~|$I> =Vϫm`,L=޵bREz?qR?槮;1ąr*j{PugrvYYoa0XX[ k{ø2kkVﳛ```Gk&%56n=~-?'׈}ٍXk6l>%؟njҲ*: b X*",u\Mf0"iED@in% %̈hB 35;{ws;ϥSj>!8ſżj"{_˻mn ]El#ދ5[f FqwA~r-R`)u7u;U=~o&Ν޷Ե|E>CJ ^/q]w(8w>gkF#+O?\7;榚Ib\yF޼MH5#iT0s‹H;a3@}BK9?OPGFЯi0@w2;YL9lgyy'>wB#}דͬcS_Fjw%tϦx k)ZNbtɁ8G앢3Jo3BaSeOi.QƥI0_LZnc8u%Fe!N<[=3QW)vro \eCL}jma-<爃3+H؃ujv}>Wدgv ~qgvj]T'S_'Ev +{5=ᅮҟyk\1rj͝Ig>|4gy=Yw,7}- o7Fh{h1Yucgt5MۺVDW4ΧM}@zoϣKu0-8Dzrc:6,VPkGnO_j5""{(&);ۖܜf@{6j>=EV)yPB~36gD0my349L(607?ZtpDetrzk(c*WF܊e(7r'[7&7gn`1kn܃)<{՚Li"jIVr_l=霓k+G/S%(~3*bg&}6{u܇YjkA܂ <8jT7&}-`$c4Yu_\Lts7 wu<9t"|T\uu<w[9Y,?A@QVEf-* ߀OJ.3Euǐ/sS'P+ltml|  ~i|0F9csGHQ-@(P߇:q|4zlq@S>w86ۨwu*@+s/Z^n'Nk@"s"W 9 +dddP^$j<ޢxxAQ/V/]4 7Ct31+]ezOwq3ɟ_uI>v\-׎.3 Ek]{6}ߙG OQ-gʼY+?G|W*I2f^uHIIbN|a)yMlR:{R'cR%?P"|%sFI_j~ITs  rGv)g/owR>{c|R~#ϔZմcWq-zg P#$PswyH@yC q;#{ i}/{Oxxp*=|-g{ #K pNy$ljP'7<)lo ocyV-[ s kmcH3& wFj~)$ڒ:}5|4 ?Qw?.xq?g}#62jmk}|#:;{s&. d+trz-cʓϭ67^䝧U3/H#꾻 ͻW4x+a1ׇ:?W2+9^h;{S:g1pW9[_|$E[Z;cyn*λ;:?A`n~5j~VN@4ԭǤ_>-SK`.b-#p">uY<,R虊EzMI [m |]pf pCRI~gY9'u:>7rVWzn  ʧ}jq oB/Н}G]Fn"Y"&pm In%%`=+ý=:mVS?x7ΜĻ*gn9*VЪJjWRe-k5"wu6^G:syWpsX /|Ob,>\ $?g*J=@l`~#߂~D~Q8`ͽA\l{a<'@̢. F߅8:Y}!*|Eo=n}~$h72wBx[aߗ¾N!2ILEъZ[bAiUP[KA-Z*q)*2=#L􏾙w9w{S^TN@Z݀{DfPs+so_快5/g(_Ծ?%>`v9l[ܫwl+om#f+9Kv~_y{d]acƼO9ZìqlgwwHԹ j5i̓Z/S?3hp\̅:)7&w"I.Hv rN=LRU\qS1$cJyT%2A9JjIQ *2i6{KR^ :N TbM@uG9@O9U_u/{ĪF5CCj+^⁁d,D1RsTUkҴeZ3T.@e59ݲ϶T*۫ *yU6uy#MR?j{j9%|Զs'hK`$.Ӓ5_.rC.CZiC6f@<4nF9Qh"o=iȭru\*T/ɴ2oo=62Ӫ˱kr ,j1 L[{t>>eRσ>(*Dwvpݙ uEꎮ" 5{@MBmA # 4hu7E34G D+F=qh 耎肮衁胾Hԉ bc s "Ef*rIciY:x.6kqv!`Nk%6n!y~<؃)JmcʣxoUq^& N3\z]Y ͐`N|ku|:-E Hb,լ v`9aVs\2VJHV`UVc,ɚڬe=g,[6`C6l¦llllöwxL`vd'vfve7vgd/|؛}ؗ؟L 8{$G0#99cqL3999S9939.1ts639Ylz|zO X".B.b.R.rJ-\\õ븞wp]?={y/;C|;.>_r7q>|W53|xy|!y/(_+Gd}o~Oe  !8B"B# "#"""#J Q 1 q I ɑ)*HHȀȄȂȆȁȅȃȇ((((((((򨀊ʨꨁڨhhhhhhhh耎肮聞胾00S00300A`,",,2, *:l&ll6l.>!1 )9\%\\5\ -=<#<<3< +;|'||7|/?F!aQ1q Iə)i陁Yٙ9yYYYEYY%YYeYYYYUYY5YYuYـ ولMٌق-ينmَفىم]ٍك=ًه}ُ999C99#99c9'p"'q2p*q:gp&gq68s9\E\%\e\\U\5\u\ M-m]=}؇P?A݋m۶mnc ضm۶mvdm a6FHemq6&DdmMi6fLem͵y6B[dm-eVJ[emu6FdmmmvNem}A;dcvNI;e팝sv.Ed]kvnMeݵ{vC{d{bO= 6C<؋` +{mo쭽!챏>j~@Ȉ舁؈HH$AR$Cr@JBjAZCzd@FdBfdAVdCv@NBnA^C~F 0(8J$J4ʠ,ʡ<*"*2*:j&j6.>!1)9hhhh耎肮聞胾0? ` P pHhXxLDLdLTLtLl\|,B,b,R,rJjZzlFlflVlvNn^`* KqGpp'p2L N \q˸LMm]}#>3+;~'~700C2T01 C#Hΰ Ȍ¨،øLLL¤LLLLôL¬ü,,,¢,,,,ò,ʬªڬúlll¦l[[ ۲۳;; {{c@89C99#99c9999S99399s9 K˹+k빁[۹;{yyyGyy'yygyyyyWyy7yywyO/o_?GB(B)Q+)"(")()b(b)()()()R(R)()2(2)()r(r)() JJʨʩ**jjꨮꩾjjjjꠎꢮꡞꣾG_4P? ` P piFihi&h&ihifhfihihihiVhVihi6h6ihivhvihi鰎討NN..鲮誮nn鱞詞^^>>鳾諾~~x!<t{X=GH٣xT=Xx\='DؓxRO=TxZO=gLٳxV=\x^B^؋xQ/ŽR^xY/彂WJ^٫xUսZ^x]7F؛xSo*: ڄ>a.#R Ƨ!4&,swwwwѻr )He̒ HY*2[vԤ. #se7'ewCdoGd9@`9Dp9Bh9Fx9ANd9ENt9CΔl9GΕ|@.bD.rBjFzAnfEnvCnY WyPyT yRyVyQ^yU^ ySޒyWޓP>T> RVQ~U~#FbZЊ6,%$Xb9,"VXX0b!VXkb-u.b#lM)6E q$X%b;lidC:1] A/vNI>)vT¿CӐt1PF+`.v<{b/}/8 Cp(8G(cp,8'$Sp*N8g,sp."\Kp).W*\kp-7&܌[p+nw.܍X{p/x!_+|o-?'_+~]LG(mV iXGkBU⺄.KҺ.򺂮+ʺ꺆kںnƺn溅kDMӸ&4c5[Vnv:֌iv8:Au^Qw҉:I'kSZzj3fag Vᬟ!gZ5?'6#T r~V8'2b5QZ2+l./%hrs١#=z>0 /Z=@gT!Ps¢v*Y^8x2nZ?Kb3]IIb碟#Ə,cZ'[EϗKb.ԝ5P\)poP-݃ӷ_B='/7]ի?Q^0*_.{9|W1Q.dRQS ^&~`~]f`R6qrz1uLzG?҆H8USS5W- 1} 7h;7%7Mg :g<ѲT)jFΌ0eƘqfde30]3E~)rSM"7En)rSMuWЫÙl 3Ӝ7Mv4idN&;Mv4iӜ;ΐ!?C~2ܗ>\s>]veo]veo]]]===hvwIHHHHHHH SupN;Rak~ټ[+ek2n~ۙ13L0̱a\!?B~#Gȏ$uRױ'$&6IM"lblblb$Fqrɍ<#3<#/J^('r(Qу|6o@,e( DY Q@bq|p8oX7,ξqo}c8&O ?A~ 'O ?A~ 'O$?I~$I'O$?I~$ISF1hQF1hQF1hQF1hQF1Z| (H 4 (H 4 (H QFI%iQFI%iQFI%ii)J(4(J(4(J 4 (H 4 2<'s2OQhQF1EhQlFfyq>y<9TQqFYGPBOkkghh5x'ƌ3̿6# ÀeI (./w"(mc&b%%m})aB.w|3Kw/?n_~~jgq#ފ)i3vӌf4c;i*Q\ f4æ6ͰiM3lbqs/kj&P3 Lf5@j&P3 Lf5@j&Pk}@jP3 fc04`o@ڀe[ݗoOwϷ?wwM~?{>t͇|'͇CI^a{4Ž[WG?=?=<ó_ٷ;\uK\}n9}{I%_yrp{~i׏M}l\SKɮ<̛g?=<էwwM קpuc_?ׇ~]eZOïֹW/NeyKrAs"hN͉94'͉hƳ\_^ozJ=ROSz>xjjjj>@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@6@65555555555555555555555555555`#n0GA?C80C80C80C80     l0r_= l0 l0C i01] 3`0 3̘c1 06x~\֫gCq 1θa$??????????? 4`@ 4`@#'HxxxxxxxxxxĿ%-k_KZWߎw;vxxq\ǹs:u8q\ǹs:u8q\ǹs:u8q\ǯ_:~uWǯ_=.y_:~uWǯ_:>n?ۻuݺn]_򪻫+羲~e+G?TQf|?Y?,Y]o|Cݾmo}^o}w;q'H#͏4?Hs#͍\oK%4_|ɉ$yM3iΤL3iΤ9>9c3֏y>̙ܸQsWsRJŵ8/z)9&~OI?'~OI?_~/E_0ܞ1۳?.[1s /?ρcDz9pts5zM]M]9pH]tn A7ݠtn A7~Yɳntz>XcǤDw;;c?џ1c?џO'3L?ӟg3ݙLw;ӝg|JąbW(Iōx+H?״_~ͅ /_o[___ǃăāāāāāāāāāāāāāl=AAAAAAAAAAAAAi?si?z/տTR]]w].˿%J+J+W?^rox?^߿>wrt^7??oߨQ#HZkZk'?6$NeǨ\jii7I'I~'wI~'oI&gI~&kx?¿Os3ɽ$Rh\h\h\h\h\h\h\h\h\.&q7⭘BBBBj΅΅΅΅΅΅ƅƅƅƅƅƅƅƅƅƅƅƅƵo?t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.4.4.4.4.Ɗ+nBBBBBBZ^ ;+]~.................VWBBFz#Yh^h^h^h^h^h^h^EOh^h^h^h^h^h^h^e\Ɓ c˱-ǒ>/%Z -j(*HTE !T 憛nnTlb 7HF*6RTlb#HF*6Q=TlbHF*6RQe*cTHF1Tl55555T+ZY o /˨^F2666665QgT?UxxF4Q*hTAkm*UѨFUuS%*iG]4>R 1xױtL@S0sˈy{~mNtv oqIgvgq_?%.x` R)lBO_$"aY JXŸ`Θ'cy2ɘ'c{AteKooooo~ݎxݼ ie؝(QV,K{FzTdO*UhVB[Gڭl8sw)X>Fժ;fvO}j5^8H!S~[a@H\)~1SG_N9lнϏ|2,܍ĭ;) H+V `DA` 7ȀKd@Jщ%"JDpxqxqxqx\|~4'BK^TE 2*dTȨQ!FF52jf/jkkkkkkkkk{ r2ui^m.$ӠAW] t5jՠAWþK˾K˾K           ooooSC=^TMT~~;/y>Oin>>BMO68fU5lԟ~3 4ifxqi>l{} nEs^|)ˏ!a} fYaƀ ‹{^W~_WwnSSSRRRRL3eMOfKOOOOOO񹻞pRn^_0Z_}~3zy2'xQ@_m?m8Otcyn()))CQ܍H=F1R,#H=F1Rzc#H=)d>3X-!j  [+5 ΁Nݳ."/LdL&xi:LN&8` %8TS $8L3 $8H•HRDž$eޔRÕW\Ip%\Hp!\Hp!uRUJJ ^!xWHo⃊*>JSҘJK; G|'{s-츨Þ4|캇 ֎kwIcJSҘيg+xz۽ݲ٘30mŴVL[?.=pb pm-W+8Of> *TP|Uwl@-;S.Ƹ#OպnfyϪXXl~Η=%YIJbVĬ$f%1+YIJbVõIbf%4k -Z$H \!`H0$m07 ~7 ~"5kzPT030 +wRAJO ) %~J8H  @J6H܂8&fc֪.eŒ}_7O{t^|%dg6݋zyتJMJPz`_P ^@ ހ$`goSt9Q(R(RJiJiJi:@ @ v6gZͩdssX_H{qSѮL_dž >ĺJ+ĺJ+ĺ:4tP:q@D@D@DӉx?u{rzq/d^aUm-`Zlb^ٷ渱wS魤Jz+魤(Jz+魤Jz+魤Jz+魤|%VMJzk .Ho%.H3qgܟVZIh%VZIhV{R'%5c۱#(:*jhfhPu4Ȱ"Ê +2Ȱ"Ê +2Ȱ"Ê +2Ȱ"Ê +2Ȱ"Ê +2Ȱ"Ê +2,Ȱ  2,Ȱ ÂhNHjKob&FobXћe&Fkb&Fkbxafxafx]gexY7dxI'dxI r?e+Ȱ"Sx O???c?j{i{iFlTΖ}5Wp6 gp6 gp6 gp6w|fn6f[.Q/Q/Q/[7R/QQ=%Qf~XF)xr|%Wr|%Wr|%Wr|%Wr|*x }.ș)ȗ|)ȕ\p|:RhʨO~S:?u/~K_:KWʼRK;ו](:)-tW _+|W |o 7|o 7?O>z'O>3ϸ>cϘ3ϸs<MƺR)~ }g<>x}g<3 ~?gG>zw|w|<\xs9~?s9~?/ >> ~_/ |=|=|s{=|=|_/K%~ _/ϔWr^y%empj7 G2e,xbQ(Y%RDࣔI#/4K#/4K#/4K#/4"/,"/,"/,"/,s"E(%EqQ(EZؘ~d}~nvcUo7ۭv&ZӍfsfOњ\n~4).;5_\hͶ1:<<4Yo7`AvPK䗱/gՃ;ˣL}zZ?XPc3{=fG`3DSCSzlk`hqZ. mH. WWS}ۇ{b5J?o>pk{N<սn[Wڵo|X9}՝\۵T6w VFϞ6vW}^9^9'ww7WtY7+H/\ȿCɅ Nw?+9H>5ɹ]rnk׮K^(]' o-jg=ouS^y,/7A^z /^% ȟqE^x~{Ey~aY~wA{v y.ȳey@L37nJ oWAz'y*ȓ=D_yٲ2-''W[AY] WEFu|!6k}խ _oʗ|1r`rddO߲"7j1;7m7ɡC 9X-A_>ܒRQr@M∆A"&gJ8ZjPЍ[Eظ|*3UYYdEY|V,MI+Ay_6RY\eajE߱I^3d~J28'S\P_FPTߗͱ_ɛg2kniz)Y#n'F7vt7нAw5.]Jl#:(JN٫qhO}#;Qa{Y9)FVJK3YI+MB(@RE}W|4I3{E\p7s8ΦvZI$67Ro5Sj$J> endobj 19 0 obj <>stream H\ˎ@E|E/g#]eKȒǞCqR &Rlualp .vZk3eyZ||p= 1kH7os|m7s]p1Ovg'\0l6 6`eˡK{c ZKʴcnSӆ E:6~O& C}ӹĬpQS\,y^-y ~%w~''ڲE][+03-2-3-2-3-2ힼO,ق8%+nɤgGwdfGx?ΞBOS) ZZB/= (Ň}E_~}QETz*< OSTz*< OSkE gsUQI4cL23~=I 0/E endstream endobj 20 0 obj <> endobj 21 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <>stream H +|~;` 2 endstream endobj 24 0 obj <>stream HtV{pTsνwwCIeY@IM2e`0<*- IT"!fdeRGD 2Y[8<Sƶ#mJ,"$wԱ=;;=]Ҩ$Mxrn~!~%R]J$ kW/]Y_L} }Caֺշ~94H &a ~vUb EDYd1OǿE?b S󯦡 \xyDppVZGؑK Ј] cﯨ- ѳlaϫTi$蔃6~m3x@I g]OfnzQodH7mf% }S$ rm)0zGP72y}؀3Wg9WQޠݴ l#Vq~E36źcжvF+/i"Zi֩@۩ 0=g!Xam1.`͓ 3nR!J͂d-?hz65!jk^U9O2Jۋ\)o"BY7Y>]Z'z_}VKyVU`I>=Q _o n1YszTP~duXG=7Ps/:Nv 'ʩtBA|!eqr5)HS=Cc\&dMQ#ȏX X #8/XsdL k)wXz\=Ca|H$˟5НoI]ĉH_&q+8 fGH'EGƐ̕%y05(iBAmMY*e8$2$:z<έgi;JMV9z2j\bYkcޥ:i0 CKgW:_>DL5LlU)4|'Exr ݤzMv~hUE-.^ +:8vLCKkpE"ރF S'mD3"Y$ctB:hw)WCa՟)d>^1lpM;v?U3SXeݺ=#^;h$_+24.-KfRtJe8X^9TSb5JiՄ,EdYr!+<4d k*XD_fR\I|ֳA_[f) jKÒ]MHv{Va^UPHbeÏZ y":/!t Y&XR^8XGm,Mg}^La)Ͷw)cɰqe!fBz} M4rZ!4фDh>23}S ns%U2<d?s䆝b1*蛩U{!>6u2hdF-vn8,Xh;zGm hq+Qft{PH/CVqd* ݇wn?dr~"y|u gྶj6k>ה QqăNRr2X(mJi:*h{wpNB1S#XFo_f;w/7|k5šnpw/EfCe~A2Uңi-LE*5$!,IWz0׎eVoE<8W7~oy,RTEPjಉA$Y:1Y؏ZM":ɺ*ȸ$x?%on 7ɜr/\{%x-Gd:Yh@(V9luY,L~a:&+~PJ*Y\eh^AhPFi\4hM*n, /Ӱgo|t.~K ׅb)}uȓCe\mߊ J4 V@Q# UbUL4GwϰEu"ӘyT<BAL&MI>Xkay q6ahx'˱dz4hfm3RM|Fv$H86}Gf>d\K OhG XBB5jI_ٗf?W|ޖ֐Do;H !1vjr Fgwb;W>a+ԬLW%{Gߓw.w.W' {lCyt8922m}^kLC0  :P jv,#ӑݑc4ŌLNp *an?ǎ/>[|Lm~g7ٰ0_kg%_ :\6ԩKR!l{;ў{s(+>̰ˇAZ\!4hTQ5&1&AT֬XEmjmj1IqIrV]6=؃Dl--b 0ai9-߹3~]L @dD@80q<œI+w҅Hi|ONrs&M\i1mCfK0P!tv2T %T>&.&v6H|uX!9˃U޽bUWPWndzݷl _w޼9§ >Yj@f <|T 9Kpξ=\ڇ߬ZMղ6ljOOAHUgtELF4Ũq5Ag&$~ttb@G' ppId7Zţ1|U%~3u]IƦ3rKszkJtQ~rkx ŋ>=O,SU--s+yhn9Gn1UMjjAnZQIU~I0ʶ'i13N-ZY)K#r߻o/yz1SJr} 놔"X,_h YQ+NzYVR5335 =e3mt cB;4{u;YWw"+ʖ(S*T..A;:TN5=--Np 5F:tx=V3UwW]"ҩiI' k'Kd5L瀀*{I>&]V6E ci]^u壂s޽>=t.uD,2N08Ii1& Y X{_˻ln ]Il%ދ5fFqwA~gs-S`1u7-;YC~o"Ν޷=Ե|E>0CL ^/q]w(w>kkF#+O?\YjsSM$1MP댼O#~o&$?!b*I _9ňoPFް>=#(["uT7BxQEf~Q3瑋v&1ۨԯG"]5OҜ:gS|CEsFp-~Կi'c@uUJiY7y)ײx~ڨ ~q/&~ 7Qgmϲfq{'qNtzk_lᙨ n j ;_ur8!>e]ZϖkvssȕSfp:5> O(ٽOKدgv~qgvj]T'R_'Dv +{5#ᅮjҗy~`\1rjIG>|4gy=w,7}- o7FH{ h1Yubg t5M۲VDW4ΧM}@z_G`~kpeħtl~-X4PkGnO_j5$f"{(&(;ܜfL{6j>=ITIyPB~26gD0my5349L(V0;?upXetrzk(c*WF܂킗e(7rg[7&wgn`!k.܃Yn<{՚Lyi"jIVr_L=霓k G/S%~3*bg$}6{9܇YjkA܂ <8jT7}c$c4Yu_\LyTs7 wu9t<|R\uuw[L9SY,?A@PVEf * ߀/J.3EuG/sS%P+mtMl?+ ̦~il0F9msGHQ)@(P߇:q|4zla@Sm>w(6٨wu*@+s/Z^n'Nk[A"s"[ 9 +dddP|N j<ޢxAA/To]/7]t3Q]ezOw]q3ȟ_uI>vL5Վhx"o=>̣kjotFҧ[e^n%z+w~$3/ɺRäV1'T6ǰ<&6*M=D}l+oߍ]_]pRs#/q5t!y=Q3뷋)=1r])gJjт=uy~\=%~EV6YWK5|Q6Ac<-ۄYյV[1$_B>퇑tH?䬧Fk =M;Eԝ)i6z)Y̯Z[bjo߈8<;Ξ\J#G^˹s8Gy gI%!?.B/!n{U. 3J=w # W(Zk|[xUmUo^j9gkϷݞ ۚhm]q{y,k_1cqMEyW~G4 oFMj ?\YMUw ~Rֻ֥eYPħcǒl7r=~=s9?g\%bH쐞ofSKPiLG3Ӵ9&S7F|4.S.77b/߱qۨeoK8bĘrg|y1Nf<2c,6f;or32.yIq8kz&0jڌ亴AxR3ͼ&59KK`HnRl2B%Bf3uIn!:cX&A4FZ70MBXBd3+n1 Cpd^ \drnK<笛xL.!oVN_g}Bk6ߛ9P( BP( BP( BP( BP( BPRJP(oЄXE'RE8jB*!\&ť$t7[ ]gSX_kD7Kjz*n6q! tSYc)ORWaάMލ^xCQ3JyFf?qU jW;c()NTSV]44z+C`ʊ *BuЬU W7sUq UPMU ^GqN.v'OL'd~$w{{q'FxRƱ0rFb1xHPƑ $z|zB8<&)CCx- ^=葯zJ/ȗ l^z1MDx1 { //Y0/ hn vɐv~F)a׷ÍX}[Tn'l:Unb[5[bk@ 0"S'Y<َs][ďlx…~@3x.|qMn,]b<엏4a?K!º9r]ktȵ9xЁo5XD&*}}aWFe(Vm+|m*$Qa9;cyƲt,儥AZ}ۉoN%Nya_%,&,wW-_Eh./%mMV9ߎM^ћhڡ7_ jʺ0jk eX0s sJ1I t PEy´r Se71ō=э rR#%T>׌u3 /+c]GecòHF1Q PNCʝr C"@ U//r'#VY&(h; ʀ `klOq§ 10< {G?->9}{ʾчEB),%޹蕋FIj,_)n#bSgnX/E\YO*a֎kvٍp/n׏F[. t%o y<+y9% ].Ñˬrx@&t߻Nn#;*veI2wi`mѭkNH㑤RفN: pe 4p@h%˴G;o>]?`w1| endstream endobj 25 0 obj <> endobj 26 0 obj <>stream H\n0F<kJR~)d8)R!8>QG$}f7Y 2^C!+v~PzfycXW\ᦞxY#t>I=YUNӧ?aVkc<[3}o^iˮ|{{6yȴc/S '-xjWojG&^Wh Ah muS wZ7'אָ N2 h;$"r*H B(Q0(<5S4x D[l,-OiPam6X[zzBJ\e's9 OH‘% G$IXf$*$QųYiM'r->qZ׌xNsu~_S?wWa endstream endobj 27 0 obj [20 0 R] endobj 28 0 obj <>stream hYMo] +Z>LZ$3xM"/T"+Pd(WRˠ.BP &ecsP@!Q@)BIYaly  R@48->_,G(|Ik&%[E\_3ᲜTck3ICr3\k 3l4Ƨ4/ǎ{w{{vY^x<^}9{'~fjx'}9yNt^NSx O?OO`|qf>67=;>>go1|7׻rw>c~o/~hK퇵 ~"ۏr$~|"zwۻk,xqwq/%%l/H<)<7+&/H+|Î~;?ީbܾ/$= QJ.(Ǹz,3y2yR/''gJ/_8Ў D#?\7>Hۏs .' 툜/vrH"G\3p@ޱ~"nl]L?Wnlal$pgB5DDkB~&RijXx؂7~e"U&VeU&be"V&bB9 \N<㬌2u'8#1\ʸx~>stream h޴j7_EO`kF I7-//L0i@%N [VhJ)')#f&ry+}Բ3K]5u޶GivۙffG(dǪ5RhTKL=pQ|bl7b33Nyƿs4^{-`I%*W]3}rפ} [+-;l;_6b#0l8Æ#0l8H:W Gj*9/βRmR|\LŤǹRRqz'2K*-왖J_/C?}iٳy'v;ug1.qql0ۙVhmo78ê 38C 3\̵s g(p g(p g(p g(p g(p g(p٪pU) bV+ x#0&c&mgoSܦ>rP!e̝} *Xb*XV*llgЎC΁Ε;\å ܅.$w! ]H0@t $y~:eZ]Ȏ,G#P ՙP ՙP ՙZtA}B'zm}*SeMħ&^}u(W)hoZ+mʋe#MH_ endstream endobj 30 0 obj <>stream h޴W7 II$À@pȕF+p&"V=VCj8-Xb/ƅ[-46^U<†"0jZ,[1zc 6Tp\KсފU^lGq WV0;: a$$P c=#9@1Af$Td6X`0 7`T' rulxղ7R$Re]![(c " 0QEЂA$H{E ;`E*!oBEvRcv"x $ "A ( eiRo RqA礃v.UH, RXV RX>Ia2Ia9tX6)8 z/(I)_U[osqQp~;5GY$[(KԮi@ WZw.q]Z;dgrj7W+|soPqB-m#iG[֜ lJ*q$Љ)QfƩ9Bp;4NIP; f)HtҮj~鐚Gk?kRӏ(B.rΘwۙz0/^ܺ.ywZҼ᙭ ]X.p=8oyw4^# 񪺮mwc]:|k?ֺ = 쵎5pV} :j[ggTk5pG6#85Pw M] yX.v ]`M^+c8 0A endstream endobj 31 0 obj <>stream h޼Xˎ[7 Ň.(хEH`MltD_]$RCrI I4'bHbĹ`Z1j0wV c ltjI |%"÷W8UmT lj+%5D"JC8+= b2jNX߬r Ih4Z0i"'im4֞hI:0J!KPǀzp Mὁ{\ }٠ &L.``d̐\̈cbn0;&)Bw|gi ]䯨O[㻍D7\];[JGLF@e K4Z%j}1:D'Yŗɂ@[ 8i8wl&Q+l:EߴVeYB>}^]cFQ=bT6:kY-_-K>2/˳/l';dYmGr,G1%uJ*\x , endstream endobj 32 0 obj <>stream hXˎ7 `0r ,Džs\bcv8iKK|TH]TԱ*I*WMZRJI8O,p ,\{p2R!sr\*qn%yj!=!=*i4Y5I`$8!0*jbb%0:$ ,  0;l`Ui` -<`nsGyd070.tTTatU0{W!` ;&fE̕<Jf$0J Āyy_Ƿ'ԫx]}K)%o5նLwF8tW6b ̟+^oYB^V5mz Bn%&yV*yepõ?˥y!Ew_!fby&ړPۡ~!-v]kT^ƜB t Ck/)/gozOБ~q#x'#]G*xl|,$[ޟ N- endstream endobj 33 0 obj <>stream h޼TAj0ʾJZɆ`К:=D*kB Cb`͢]v tF3AcT,Ә1a4],"P#Ü4RE$I !Cd I VV^, }wbe'd37W+ʫKC\+*@͂9M*֫ˢ[|8+:ߜ$@ ʀʙUGriu3۟k> *[H$6~l? _]صَ]/{kdY׸O5[%/ endstream endobj 34 0 obj <> endobj 35 0 obj <>stream 2015-02-16T09:16:54Z 2015-02-16T09:16:54Z 2015-02-16T09:16:54Z Adobe InDesign CC 2014 (Macintosh) uuid:e755e501-7257-274b-abbb-62649798139e xmp.did:4b43f4ee-198f-44d6-85fb-e2078503325f xmp.id:f25398bc-c898-4d07-91ef-3c3d1bd94e16 proof:pdf converted from application/x-indesign to application/pdf Adobe InDesign CC 2014 (Macintosh) / 2015-02-16T09:16:54Z xmp.iid:797db384-68c7-48dc-9324-ab85fbb555eb xmp.did:4b43f4ee-198f-44d6-85fb-e2078503325f xmp.did:4b43f4ee-198f-44d6-85fb-e2078503325f default application/pdf Adobe PDF Library 11.0 False endstream endobj 36 0 obj <> endobj xref 0 555 0000000000 65535 f 0000078410 00000 n 0000078772 00000 n 0000078796 00000 n 0000081192 00000 n 0000081541 00000 n 0000083747 00000 n 0000084108 00000 n 0000087245 00000 n 0000087617 00000 n 0000091091 00000 n 0000091604 00000 n 0000091756 00000 n 0000091845 00000 n 0000092300 00000 n 0000092532 00000 n 0000117138 00000 n 0000117372 00000 n 0000144514 00000 n 0000145040 00000 n 0000145598 00000 n 0000145923 00000 n 0000146170 00000 n 0000146305 00000 n 0000146402 00000 n 0000158528 00000 n 0000158597 00000 n 0000159130 00000 n 0000159155 00000 n 0000161214 00000 n 0000162949 00000 n 0000164119 00000 n 0000165336 00000 n 0000166397 00000 n 0000166821 00000 n 0000166899 00000 n 0000169444 00000 n 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f 0000000000 65535 f trailer <<38F0B263B72646A78893DF63993F12E5>]>> startxref 116 %%EOF JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/000077500000000000000000000000001263452017400240745ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/AppConfig.h000066400000000000000000000056261263452017400261240ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! There's a section below where you can add your own custom code safely, and the Introjucer will preserve the contents of that block, but the best way to change any of these definitions is by using the Introjucer's project settings. Any commented-out settings will assume their default values. */ #ifndef __JUCE_APPCONFIG_ONVA5C__ #define __JUCE_APPCONFIG_ONVA5C__ //============================================================================== // [BEGIN_USER_CODE_SECTION] // (You can add your own code in this section, and the Introjucer will not overwrite it) // [END_USER_CODE_SECTION] //============================================================================== #define JUCE_MODULE_AVAILABLE_juce_core 1 #define JUCE_MODULE_AVAILABLE_juce_data_structures 1 #define JUCE_MODULE_AVAILABLE_juce_events 1 #define JUCE_MODULE_AVAILABLE_juce_graphics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_basics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_extra 1 //============================================================================== #ifndef JUCE_STANDALONE_APPLICATION #define JUCE_STANDALONE_APPLICATION 1 #endif //============================================================================== // juce_core flags: #ifndef JUCE_FORCE_DEBUG //#define JUCE_FORCE_DEBUG #endif #ifndef JUCE_LOG_ASSERTIONS //#define JUCE_LOG_ASSERTIONS #endif #ifndef JUCE_CHECK_MEMORY_LEAKS //#define JUCE_CHECK_MEMORY_LEAKS #endif #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES #endif #ifndef JUCE_INCLUDE_ZLIB_CODE //#define JUCE_INCLUDE_ZLIB_CODE #endif #ifndef JUCE_USE_CURL //#define JUCE_USE_CURL #endif //============================================================================== // juce_graphics flags: #ifndef JUCE_USE_COREIMAGE_LOADER //#define JUCE_USE_COREIMAGE_LOADER #endif #ifndef JUCE_USE_DIRECTWRITE //#define JUCE_USE_DIRECTWRITE #endif //============================================================================== // juce_gui_basics flags: #ifndef JUCE_ENABLE_REPAINT_DEBUGGING //#define JUCE_ENABLE_REPAINT_DEBUGGING #endif #ifndef JUCE_USE_XSHM //#define JUCE_USE_XSHM #endif #ifndef JUCE_USE_XRENDER //#define JUCE_USE_XRENDER #endif #ifndef JUCE_USE_XCURSOR //#define JUCE_USE_XCURSOR #endif //============================================================================== // juce_gui_extra flags: #ifndef JUCE_WEB_BROWSER //#define JUCE_WEB_BROWSER #endif #ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR //#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR #endif #endif // __JUCE_APPCONFIG_ONVA5C__ JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/JuceHeader.h000066400000000000000000000025171263452017400262510ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! This is the header file that your files should include in order to get all the JUCE library headers. You should avoid including the JUCE headers directly in your own source files, because that wouldn't pick up the correct configuration options for your app. */ #ifndef __APPHEADERFILE_ONVA5C__ #define __APPHEADERFILE_ONVA5C__ #include "AppConfig.h" #include "modules/juce_core/juce_core.h" #include "modules/juce_data_structures/juce_data_structures.h" #include "modules/juce_events/juce_events.h" #include "modules/juce_graphics/juce_graphics.h" #include "modules/juce_gui_basics/juce_gui_basics.h" #include "modules/juce_gui_extra/juce_gui_extra.h" #if ! DONT_SET_USING_JUCE_NAMESPACE // If your code uses a lot of JUCE classes, then this will obviously save you // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. using namespace juce; #endif #if ! JUCE_DONT_DECLARE_PROJECTINFO namespace ProjectInfo { const char* const projectName = "ComponentTutorialExample"; const char* const versionString = "1.0.0"; const int versionNumber = 0x10000; } #endif #endif // __APPHEADERFILE_ONVA5C__ JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/ReadMe.txt000066400000000000000000000011231263452017400257670ustar00rootroot00000000000000 Important Note!! ================ The purpose of this folder is to contain files that are auto-generated by the Introjucer, and ALL files in this folder will be mercilessly DELETED and completely re-written whenever the Introjucer saves your project. Therefore, it's a bad idea to make any manual changes to the files in here, or to put any of your own files in here if you don't want to lose them. (Of course you may choose to add the folder's contents to your version-control system so that you can re-merge your own modifications after the Introjucer has saved its changes). JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/000077500000000000000000000000001263452017400255445ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_core/000077500000000000000000000000001263452017400275025ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_core/juce_core.h000066400000000000000000000002521263452017400316100ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_core/juce_core.h" JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_data_structures/000077500000000000000000000000001263452017400317665ustar00rootroot00000000000000juce_data_structures.h000066400000000000000000000003001263452017400362730ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_data_structures// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_data_structures/juce_data_structures.h" JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_events/000077500000000000000000000000001263452017400300565ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_events/juce_events.h000066400000000000000000000002561263452017400325440ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_events/juce_events.h" JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_graphics/000077500000000000000000000000001263452017400303525ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_graphics/juce_graphics.h000066400000000000000000000002621263452017400333310ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_graphics/juce_graphics.h" JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_gui_basics/000077500000000000000000000000001263452017400306625ustar00rootroot00000000000000juce_gui_basics.h000066400000000000000000000002661263452017400340760ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_gui_basics// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_basics/juce_gui_basics.h" JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_gui_extra/000077500000000000000000000000001263452017400305415ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h000066400000000000000000000002641263452017400337110ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_extra/juce_gui_extra.h" JUCE-4.1.0/examples/ComponentTutorialExample/Source/000077500000000000000000000000001263452017400223265ustar00rootroot00000000000000JUCE-4.1.0/examples/ComponentTutorialExample/Source/Main.cpp000066400000000000000000000074671263452017400237340ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic startup code for a Juce application. ============================================================================== */ #include "../JuceLibraryCode/JuceHeader.h" #include "MainComponent.h" //============================================================================== class ComponentTutorialExampleApplication : public JUCEApplication { public: //============================================================================== ComponentTutorialExampleApplication() {} const String getApplicationName() override { return ProjectInfo::projectName; } const String getApplicationVersion() override { return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return true; } //============================================================================== void initialise (const String& commandLine) override { // This method is where you should put your application's initialisation code.. mainWindow = new MainWindow (getApplicationName()); } void shutdown() override { // Add your application's shutdown code here.. mainWindow = nullptr; // (deletes our window) } //============================================================================== void systemRequestedQuit() override { // This is called when the app is being asked to quit: you can ignore this // request and let the app carry on running, or call quit() to allow the app to close. quit(); } void anotherInstanceStarted (const String& commandLine) override { // When another instance of the app is launched while this one is running, // this method is invoked, and the commandLine parameter tells you what // the other instance's command-line arguments were. } //============================================================================== /* This class implements the desktop window that contains an instance of our MainContentComponent class. */ class MainWindow : public DocumentWindow { public: MainWindow (String name) : DocumentWindow (name, Colours::lightgrey, DocumentWindow::allButtons) { setUsingNativeTitleBar (true); setContentOwned (new MainContentComponent(), true); centreWithSize (getWidth(), getHeight()); setVisible (true); } void closeButtonPressed() override { // This is called when the user tries to close this window. Here, we'll just // ask the app to quit when this happens, but you can change this to do // whatever you need. JUCEApplication::getInstance()->systemRequestedQuit(); } /* Note: Be careful if you override any DocumentWindow methods - the base class uses a lot of them, so by overriding you might break its functionality. It's best to do all your work in your content component instead, but if you really have to override any DocumentWindow methods, make sure your subclass also calls the superclass's method. */ private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) }; private: ScopedPointer mainWindow; }; //============================================================================== // This macro generates the main() routine that launches the app. START_JUCE_APPLICATION (ComponentTutorialExampleApplication) JUCE-4.1.0/examples/ComponentTutorialExample/Source/MainComponent.cpp000066400000000000000000000015471263452017400256100ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! ============================================================================== */ #include "MainComponent.h" //============================================================================== MainContentComponent::MainContentComponent() : lightGrid ("lightGrid") //initialise the ToggleLightGridComponent object { setSize (600, 600); // add the light grid to out main component. addAndMakeVisible (lightGrid); } MainContentComponent::~MainContentComponent() { } void MainContentComponent::paint (Graphics& g) { g.fillAll (Colour (0xff001F36)); } void MainContentComponent::resized() { // set the size of the grid to fill the whole window. lightGrid.setBounds (getLocalBounds()); } JUCE-4.1.0/examples/ComponentTutorialExample/Source/MainComponent.h000066400000000000000000000021711263452017400252470ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! ============================================================================== */ #ifndef MAINCOMPONENT_H_INCLUDED #define MAINCOMPONENT_H_INCLUDED #include "../JuceLibraryCode/JuceHeader.h" // include our component classes #include "ToggleLightGridComponent.h" //============================================================================== /* This component lives inside our window, and this is where you should put all your controls and content. */ class MainContentComponent : public Component { public: //============================================================================== MainContentComponent(); ~MainContentComponent(); void paint (Graphics&) override; void resized() override; private: //============================================================================== ToggleLightGridComponent lightGrid; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent) }; #endif // MAINCOMPONENT_H_INCLUDED JUCE-4.1.0/examples/ComponentTutorialExample/Source/ToggleLightComponent.h000066400000000000000000000023521263452017400265750ustar00rootroot00000000000000/* ============================================================================== ToggleLightComponent.h Created: 11 Feb 2015 9:56:51am Author: Felix Faire ============================================================================== */ #ifndef TOGGLELIGHTCOMPONENT_H_INCLUDED #define TOGGLELIGHTCOMPONENT_H_INCLUDED /** This class represents one of the individual lights in our grid. */ class ToggleLightComponent : public Component { public: ToggleLightComponent (String name = "light") : Component (name), isOn (false) { } void paint (Graphics& g) override { g.fillAll (Colours::black); // Only shows the red ellipse when the button is on. if (isOn) { g.setColour (Colours::red); g.fillEllipse (getLocalBounds().toFloat()); } } void mouseEnter (const MouseEvent&) override { // button toggles state on mouse over. isOn = ! isOn; repaint(); } private: // member variables for the Component bool isOn; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ToggleLightComponent) }; #endif // TOGGLELIGHTCOMPONENT_H_INCLUDED JUCE-4.1.0/examples/ComponentTutorialExample/Source/ToggleLightGridComponent.h000066400000000000000000000040201263452017400273750ustar00rootroot00000000000000/* ============================================================================== ToggleLightGridComponent.h Created: 11 Feb 2015 9:57:34am Author: Felix Faire ============================================================================== */ #ifndef TOGGLELIGHTGRIDCOMPONENT_H_INCLUDED #define TOGGLELIGHTGRIDCOMPONENT_H_INCLUDED #include "ToggleLightComponent.h" /** This is the parent class that holds multiple ToggleLightComponents in a grid. */ class ToggleLightGridComponent : public Component { public: ToggleLightGridComponent (String name = "grid") : Component (name) { // Adds the child light components and makes them visible // within this component. // (they currently rely on having a default constructor // so they dont have to be individually initialised) for (int i = 0; i < numX * numY; ++i) addAndMakeVisible (toggleLights[i]); } void resized() override { // This creates a grid of rectangles to use as the bounds // for all of our lights. The grid is defined with the // width and height of this component. int stepX = getWidth() / numX; int stepY = getHeight() / numY; for (int x = 0; x < numX; ++x) { for (int y = 0; y < numY; ++y) { // creates the rectangle (x, y, width, height) Rectangle elementBounds (x * stepX, y * stepY, stepX, stepY); // set the size and position of the Toggle light to this rectangle. toggleLights[x + numX * y].setBounds (elementBounds); } } } private: // member variables for the Component static const int numX = 20; static const int numY = 20; ToggleLightComponent toggleLights [numX * numY]; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ToggleLightGridComponent) }; #endif // TOGGLELIGHTGRIDCOMPONENT_H_INCLUDED JUCE-4.1.0/examples/Demo/000077500000000000000000000000001263452017400147505ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/000077500000000000000000000000001263452017400161725ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/000077500000000000000000000000001263452017400175525ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/AndroidManifest.xml000066400000000000000000000020671263452017400233500ustar00rootroot00000000000000 JUCE-4.1.0/examples/Demo/Builds/Android/build.xml000066400000000000000000000025271263452017400214010ustar00rootroot00000000000000 JUCE-4.1.0/examples/Demo/Builds/Android/jni/000077500000000000000000000000001263452017400203325ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/jni/Android.mk000066400000000000000000000120471263452017400222470ustar00rootroot00000000000000# Automatically generated makefile, created by the Introjucer # Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project! LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) ifeq ($(TARGET_ARCH_ABI), armeabi-v7a) LOCAL_ARM_MODE := arm endif LOCAL_MODULE := juce_jni LOCAL_SRC_FILES := \ ../../../Source/Main.cpp\ ../../../Source/MainWindow.cpp\ ../../../Source/IntroScreen.cpp\ ../../../Source/Demos/AnimationDemo.cpp\ ../../../Source/Demos/AudioLatencyDemo.cpp\ ../../../Source/Demos/AudioPlaybackDemo.cpp\ ../../../Source/Demos/AudioRecordingDemo.cpp\ ../../../Source/Demos/AudioSettingsDemo.cpp\ ../../../Source/Demos/AudioSynthesiserDemo.cpp\ ../../../Source/Demos/Box2DDemo.cpp\ ../../../Source/Demos/CameraDemo.cpp\ ../../../Source/Demos/ChildProcessDemo.cpp\ ../../../Source/Demos/CodeEditorDemo.cpp\ ../../../Source/Demos/ComponentTransformsDemo.cpp\ ../../../Source/Demos/CryptographyDemo.cpp\ ../../../Source/Demos/DialogsDemo.cpp\ ../../../Source/Demos/FontsDemo.cpp\ ../../../Source/Demos/GraphicsDemo.cpp\ ../../../Source/Demos/ImagesDemo.cpp\ ../../../Source/Demos/JavaScript.cpp\ ../../../Source/Demos/KeyMappingsDemo.cpp\ ../../../Source/Demos/LiveConstantDemo.cpp\ ../../../Source/Demos/LookAndFeelDemo.cpp\ ../../../Source/Demos/MDIDemo.cpp\ ../../../Source/Demos/MidiDemo.cpp\ ../../../Source/Demos/MultithreadingDemo.cpp\ ../../../Source/Demos/MultiTouch.cpp\ ../../../Source/Demos/NetworkingDemo.cpp\ ../../../Source/Demos/OpenGLDemo.cpp\ ../../../Source/Demos/OpenGLDemo2D.cpp\ ../../../Source/Demos/PropertiesDemo.cpp\ ../../../Source/Demos/SystemInfoDemo.cpp\ ../../../Source/Demos/TimersAndEventsDemo.cpp\ ../../../Source/Demos/UnitTestsDemo.cpp\ ../../../Source/Demos/ValueTreesDemo.cpp\ ../../../Source/Demos/VideoDemo.cpp\ ../../../Source/Demos/WebBrowserDemo.cpp\ ../../../Source/Demos/WidgetsDemo.cpp\ ../../../Source/Demos/WindowsDemo.cpp\ ../../../Source/Demos/XMLandJSONDemo.cpp\ ../../../JuceLibraryCode/BinaryData.cpp\ ../../../../../modules/juce_audio_basics/juce_audio_basics.cpp\ ../../../../../modules/juce_audio_devices/juce_audio_devices.cpp\ ../../../../../modules/juce_audio_formats/juce_audio_formats.cpp\ ../../../../../modules/juce_audio_processors/juce_audio_processors.cpp\ ../../../../../modules/juce_audio_utils/juce_audio_utils.cpp\ ../../../../../modules/juce_box2d/juce_box2d.cpp\ ../../../../../modules/juce_core/juce_core.cpp\ ../../../../../modules/juce_cryptography/juce_cryptography.cpp\ ../../../../../modules/juce_data_structures/juce_data_structures.cpp\ ../../../../../modules/juce_events/juce_events.cpp\ ../../../../../modules/juce_graphics/juce_graphics.cpp\ ../../../../../modules/juce_gui_basics/juce_gui_basics.cpp\ ../../../../../modules/juce_gui_extra/juce_gui_extra.cpp\ ../../../../../modules/juce_opengl/juce_opengl.cpp\ ../../../../../modules/juce_video/juce_video.cpp\ ifeq ($(NDK_DEBUG),1) LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++11 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=10" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -I "../../../../modules" -O0 -std=c++11 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=10" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL else LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=c++11 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=10" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -I "../../../../modules" -O3 -std=c++11 -std=gnu++11 -D "JUCE_ANDROID=1" -D "JUCE_ANDROID_API_VERSION=10" -D "JUCE_ANDROID_ACTIVITY_CLASSNAME=com_juce_jucedemo_JuceDemo" -D JUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/juce/jucedemo/JuceDemo\" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" LOCAL_LDLIBS := -llog -lGLESv2 -landroid -lEGL endif include $(BUILD_SHARED_LIBRARY) JUCE-4.1.0/examples/Demo/Builds/Android/jni/Application.mk000066400000000000000000000006401263452017400231260ustar00rootroot00000000000000# Automatically generated makefile, created by the Introjucer # Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project! APP_STL := gnustl_static APP_CPPFLAGS += -fsigned-char -fexceptions -frtti -Wno-psabi APP_PLATFORM := android-10 NDK_TOOLCHAIN_VERSION := 4.8 ifeq ($(NDK_DEBUG),1) APP_ABI := armeabi x86 else APP_ABI := armeabi armeabi-v7a x86 endif JUCE-4.1.0/examples/Demo/Builds/Android/local.properties000066400000000000000000000006271263452017400227670ustar00rootroot00000000000000# This file is used to override default values used by the Ant build system. # It is automatically generated by the Introjucer - DO NOT EDIT IT or your changes will be lost!. sdk.dir=${user.home}/Library/Android/sdk ndk.dir=${user.home}/Library/Android/sdk/ndk-bundle key.store=${user.home}/.android/debug.keystore key.alias=androiddebugkey key.store.password=android key.alias.password=android JUCE-4.1.0/examples/Demo/Builds/Android/project.properties000066400000000000000000000002661263452017400233420ustar00rootroot00000000000000# This file is used to override default values used by the Ant build system. # It is automatically generated - DO NOT EDIT IT or your changes will be lost!. target=android-10 JUCE-4.1.0/examples/Demo/Builds/Android/res/000077500000000000000000000000001263452017400203435ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/res/drawable-mdpi/000077500000000000000000000000001263452017400230535ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/res/drawable-mdpi/icon.png000066400000000000000000001274241263452017400245230ustar00rootroot00000000000000PNG  IHDRxsBIT|d IDATxwř7_uM9,rI$$L0Ɓ68ml;ǝu6H"sZm?fA|?YՏVz B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!$ kxϾ @`1!A !Y`ҥQwA#_So;].B\JAis^,_2 rڝKdPd0y& ̌X&c<8V ) > GǠ`7*>jĞ={B%d"9%֪MyRԀT ]vҫT@J|RHkbc)1)$L@1N ~lHhhX? 7F}1؊!$M( $U.)/ŭy5w1]9 WPQjSHI]"6K !$S2H 0H.MC扱#Qcо}Ȯw2P@fWyQe~hrWçkvթ =sS6Ȩ=@єX V!xdDOF6|(yhcqtNH.5* ::|E 3 kH.'U{F+z)%iDCرЎ ocZBD !gguqKɴƂf Op򠜚c?$8 A(Z앂Fh$zpXx-v?wdtKHW讜V4haaוoSm !hO=)"c#}upC;VB2%rNAG%=Eˊj\E)2~FLaP5۱7FG7>W8-!*0$JȔW䪪Yzze] =EV͡2n>>`L?>g#/ >zuG^ކX#B$JT- t [9hUagg:M40+ >v4ȣ7K G7c"1J޲|N\UsWT6U:7-lCds#զ ;3}0ؑtHHQ@r}e܆%礼Vxp]KNQ'WTh߉m#Op <6q|b  S7tnj\-qv@fӻ|rF 9&h߉#;xMw|X*+/]= fdO o {n{ï0hv`/|v>v{=T@Hd[W^rNuEue6\ޗ,&> S&TAa c]a^ ! X\]SBJψ7y쵟cEe*$C{{=cw;6B[P2%4.)ߺ򺚹% &W!=i8Un 6STp'lASlP ~}V)% ũd:䈊 CD0<0!dN h!l_!È0Laƒ)_K b2iC)P }lG~v|ݡ!9S+z0`D9d-K) %RJ(LMqy#G#GEEȷc˃Kz&'( lN dN`Lƨ>#'1HtB8t)b+LT(LU6=6ʼn;6BN|ȔT 0ª q9*ϊ%SO\מUESug/D%J+pU,E^[~MV7F0@8Nd"'0!lLJ UѠ0, nUʠ9UpCDo-}y3"S6W`*LR˿/{;<9KQAz\(pT911±DƢCd{2{bPj #G›v=vGЯi;!4 "SQ~m~AW7,/7f;7%P  zz[PkB yxzT!sc8:&v^ Ÿ> CPUAUES`s* nMT4H2B}bȔS]TռƖsnj3q_Hsr y"{jQkE}^;;K05ݡ1}Cqpl'm=#0TaDx֑?l}2Bv_oi\Rn7Bfۗ0 SP<{*h@SAMȷ;L 8:۱kU߅I< [$fSRyim=D I]=ai61<#zsa B m^kTЍ^Q(Nw Db&~'bLlP- (;+M8@z"S %$e̸ᶪ^FM:€) 0((p> E3R0 Z0 0ѭ6vnQ\ؠ)']fW0gW~T$]lbFѵ1Noa) Bh*R0 ]hF0y'vcFlzG1CP 6ŞdT"пwW[d$M3q5h\RzPFizҌV4^4ӊ1MQbFl| l';'/%*_z,-G \]6]m7,*_H]D *G/@s~7+vdb/^؀M^Dy6ŞL!:}jwo]Z~_u%tvWL~◐0x\r8V8Jn͛XHv7/Ǧgp"tB GZv\*fz~g!bJجw7]7]9}4a( yY ӊHi$Dy;_ƓkmEF6 3g "JHB-]𦶻|K0O>SO%Jav鹨,2u Fl[;arv5LaTCtOo) JH\Jڹ!uC8T' l%z?I ]#iUl=e1(*R1??~$e'9rvZ㣝~TR:La@o`旯DC^GʮO F|Z<7:Rz@+Pm <{{][$'P@XE{݅5^=h2@ WbNnd]Dy? v CDaWPRH֠Ж?'}wDSra( ov_"%HH<h’K[vՙk4qDpb$dp2:09|P|ePP-jc;b?Gi.0Y Y ly7nƺ+O#h:N) vOnѵI(j4[g^EͥI):sr5:f'&ȱG ƎC BF $ׁSGuLCɯa+)`(̾0>>Ҙ@U^k P`<0{W)W%Q .c`cZD`WP6C|`_/J%M- L[o7Kr"VاXs*/CC~gR*241z| AQ@J7 (* >&$סJU)ѭw}|U c1UR3j%wo=To## #}pA<}HY"`wk ^OݿNI֡OvٵLan3"?)"< ͋YeX^uj|If2I# 1z bp/'$70ѫO7 {p-GGt< XMQ2HiRƾ?6/G o=fV(:,>yL†caݱ>ꀖD@Q G^}HIV~qnNqo>a&> (z0d9έUƤ]/Ydtb 0O:[7#4@|OMBF'`kX ;'6+v O%F,)Pl`B(ymP Z%ɍ# ?d"ptF OK'_=]?JH֠mٝ]vYgHSlî80d ί^lju'<|p콽LS5 _גY:y1D6 Poܟ,+€`(ZPCk!#x}Xw~ EN¡T"/ {A)vA`ҏu|)oquc zaUhˎwrf6^1~҈}WTdGIB!}-Q!X_&&4 Q h&Pud, G?`0X9p⅟Ixr"i^UUyo\h- jEnҮe 1tWa}|`Dx@l)'3 0w}̙p-w< ;-Jsr@i(ZhEPBkf!yBC'ETDTH-ZQln ֟{bb+0e]$KyGa;;.$'qiBQTypA[v^Rl"nG^yzP03N9}pL[8b|BߊlX2 0] Z`n NfmÃg`WWiwk{oIHL16\>pd񕐈!88 Su9;)J FiDT[l;סj*'̷'c pU@τVjAwƮ ܿv$u렢1;=~ջI8Y|#gy3ֺv#bByya^z;˓rD0> 3{ PnL#P- ! 61?V+ ɣ`] xԒP :iD]D`8N9 pxl8gɵ_zӱ̓;4$Esnk>o~t"9iF&:z摗`}V(=&דzE㢸^#M0ș9me@u@@+] d "`990Ik9Tplޏn 5u_"K2Ʀdo]#l}+S?.omJ˯/>?"쏠 V_̗(a@ͯV=3/ ؃Uo)0L%2sY'1PP\ey1x!>(L!% K(nORM~Wz{M7)\8Qɱ|9tNgoEa7 O}W0mxLsĖsy?0WV7?/om'cbɀ0!&v<fHsKw(vc^ x4@ht1W\m>|!.@2%9'} i/@Qm mwbU5pg@;}}<; 1~"?\˾*~K}.'Ŷ>N%ŒEanyQA0[^lU 1 1!)vֶW~1w2Bu9yi S1B֯ܝ:wE;O`5ێ苿@daz0ñ\_;&`Nt^}rEo/)*We5Rxmy]*߁Q}bHPƼ K8}Olpv䐥km?PukcO!⊋`Kge0=ȳ?D_6#$LQ CG`|i@Tw& ]AswBJaj@X*ϩ8yh4bHН2y|kugZºO$E~c<_7/A19\7J !a=Pܕ`'-Q9U7zPZuZogG{` UtV<:n? D]^+y,, %瘿i,FƮ~  %X9<̾!PUi+avr88{eoj7s+!ݖ NR,Vt%ߘg_WY:8z n JUD| @0Ӝi}5(H x|e}k!%NՍ*wl &Qh .hS0pk>lF')E @ym=S2  [u73 "0v>lɓ N%BL(ڴ67c82*S, 3Y \_*!v`"t7BKc?tngK]D0\}j}qM0CxwoN4LJ?ZxS^,0\8Tvn!tK_QyuKz;HQ'IGw\oOEyvՁnŚ[rxy%#ğ(Jҋ)5a%SzR -=80)6X<yڥO}dxdԒI5K³{Q蘕~a3fufX8{yK>B @f80|Oi~g)f,Ǹ1cjYNaxƅv=:a$.J=}}K/'+#""XTq!>o!D_>Ldc%J2dS!8V( (Β`W ,V#/CQ^ S [WV\_>ut% Uk\WXQh l.o@j}C?m_U)-F @fb aלB6Lѭ/E0ek"m#[-$%rz1AjFfjE*Yfٸg<*Omˆm}A @f0cԼ֔[Q,eǡ]͒AR-,Rm|1hI2P:.^=ZUEKL;HDd}ǐ'ly@O*Q!ٿbU(ʔ8P] ScHXFXJn^Şb{xO%<(%窺GEe~Q7ݙ Ŀ<2TPR1uP<(1 5-EZ [C/"bZKAƶ V9m6M|Pb%J2̴5-xo)}´b{}ZoZVvA}M8-%gr/?C֥:tgaf F, 03xՒA%( ӯ__ S:E ~<"g)nzX. IDAT-mI}}?m`67-%i4F`=> 5=%Ev?fDO@!S(.WUXG TbJ2Dsnͪ?lXЉ|5fK|;|p3Vii<2x 1PT0O(mHe J!b{tYr @sެ9U[?g B%  t;:,tZ1*]7w݅|߂(BdwG٩/(EW :ܩSa sT6$%M];@ @uOtXRQpC۝ |kCoAz?FOT@&W6@qB&](`sM2.PPQ7j L'J'&.MpibM͸FKގ1X'?;(c,v1~RCc~7 =o(̨S\M+C @L~;:TX7XVڂߚ#y`ZWY 71`jl PZ8zI95 $@agFLնJ@P^_ CZP<님YԒ ۆУ_b7$y(a;"}0PۓzEE?}#l@ao7(ڷ$mL1sXUu+7lc0 ~s7 {-@b ) 9̓!CGMOj ƌ%8܏{-Kzs=~sY&9CPՋLϟ.L!ឯjI!nP7l@ 0Em|.J ' ;z19c;,Į@U0?ނ0 E*{ zV~EaEVtM𴯡<B~ ї*L)a%Zaz`!alI S?wзѢP[ g5^sjhVឯؙCCbU߄ L.A ԣh4CЊf'FGa z ƒ55I!P9ЈofB%%IV)Yql-V6h.G}6;^*:LML ~b|/d\ ]0vlI LEã }FX*y$Qi)<~mfĊ'g/ LgDal{BM%SS!Ba+]Ww$?x;JXmXTzɝckGZ'y='{Yڞ A4wC=ɟ?-0U-~ٌ)]`ԢIV[a/ %%H 1g'=.Rr Us%ɪ{YgzLxMN0?C@p L@??[~ 7A!X0\ywuo^U^E!P>񉮋?7+CɿOkwُ@ݛ˭njA &o9"YMiWkd,ɟVZ[Gh?!Eu1;%f3$9: W\9iMtJ,T?lҏDpɤL/}Ov -?>|5!$(<]aYեNJhX\>i B#(HQr=&apkWPX}; (/!1 |t[J۱|BDc.꯴ 4JQ E_kV'Ķ"{1n J<3|*BOق{8PwW7u)[5Nh_U7\kQxS%bϽ[+Kh߰Ċ꫰jBh%)L(yHwO 7 B&P7%3±]ǺJpWzߘL/l1t94bQdQ-P|eH}1!$0BMw#0P@%|}EEEy8%Pp漷UU[0OAɐ憭nd/BHQ(yP ;,|V^@ xήewPD Yo2#fBrYt~.c]u\]; 0`Y(Nc^y 'zDݼڒ˩Y3\) +H&l]g [Ǵ5F8ݡB, 4\he;1׷݁f^30Qp.Ju9f4N0pMG\5+wVRO7!$ᇣ=ۥyϣQ 3&ERRµS?0ĜE κVH beXX~E% SZrVZ $[ Ppv:ѼRw)0@.+uu-0)a)jvUŒx{"N(,.9U? bF„ꯇnA|_>u` ga /B+hHU +On0t+[2dLf+?3N-SpoFYZ $[{-_.U_%\hL̽:k"MEu|"#E<vŎvѥL@I!uO5ruGА5Y%lOw|(v|gP"Mq$tM)˲RJB+d',{?SuퟂזS5ӊ_, /Psno/ _e,M7/B2QLTxpmmLS`t\ǴYmax9777/"VF^j4962t9Ϋ"z)j7Ȟ[# 59pmp:vlB(8 .Wrxm8ĬFG}ǻk8j}E6I^3B/Yd ZQ%]{ԢJb8U|l;^)j haD'+~0K @L^r(u)vKA,=h`ڕut`l fٝj\Rv@_ bn鹸f #و_}T[fy7 `Ğ 'Z <oDGpˈ?l1 AWL氶g/@/? U)ꗀ)ZIG^Ϧ9r%v-^3,BGU jSq_cw_sT'sE9=u0y.ݚؘ[l( H$Nџ#4->cMLcvQ!ð1T0myyjO;L3Ũ0F9``.){Rږ!^helx'c`6j`."[?>r²ؘv2IC 4}`, 40ŋhLRZ{?{ja$p^4sE+- -kQ`>h-K?lqnϵ02 C{?n@Il|0ln4 P<ů5 $$I0ŋD`Ahv^[>m8WP[X\*rCEV3qWv 3D“)L8Aqzvdz;R2{`U<05W"b٨-ӰjuBaޫίɷKr @E󊯋ݯ5lNmY\J{@Z m`WƘ<X:%uAza oe(>Ґq#f VȺ>xfC>0@?g1>eczl>\AɁ8_as?\SbY`Y`J%3o!og)M9KF#b|0czbw%Lʅj;B߇0X6̒X"P omeAe)3/ Euף,ӿAtz0Dz1ƚ@HRL?F}Vwy&WΞ6Q9EUK, *M[<~g0["Z aqEd؃G-g-Z;"S\m;[aEd-]5W!*@l[dUd7- DP)麢F$$4E,j+8FWx V~juM DwDx'GLWKo@g֦pbzquyAݵ(teaK?gYP&gEeNǬ4eLß?C *B#?X`/ƹWB瑸^Wm֛- (l0]b )!0 Y- gy Tv\ߏد,rYjTx`#7&VVT<˂ 9UǷ$#)^MH#Itv!o7"c nd͒x& -|$K&`v) 4t 5Ŏ5׀%%ږ[$ s ?bw.)忔NՃ5W[?>o?MJH{mU'AEd'27U]XxGhBN=TP.o\VxEDsJAђx{ǜ*{kI$ӟZ:tnU!fFt>KS5WHp _uzomNS @u{lq`xŋД*込vм3*>ho1t9=uݻ-3dȔpz^ >D~ch Sq~u\4͞viyr&hoU%x!8ʢ)0؏)rnHjcC7=*7Z/͒`2@$Ze2#qV!,dZ{_̪#W~^HbxTR#2KKFSs`(* N_ v  )%`S E_X2ذRqT3.$4j~iWEE RWԾے`( +ާZ<_k(ZkI,y|W\;d%O3)Mj /m Ѻ}@v7 &n^ɵf4R`ij0 >tRchw*Ts= 3Œ旯D<@%|%Ζ˫WXLduд$p^?S6`E< VG->EvPo aZ ^%ˡ sSmUM&ٜwTs! ,(6%iF|H07iw<^1zft%-./"7eUN/n$4~^x(tcn5 "[8LAi O HJHO$tDoh:tg#O-4h]Y~%A&mUܠ(ًf,A(@GѾ$0d.g4Nj1'>K[\~8,%ס Y-+Wij/!PXX~%Dw= &0Ӓd&@UgR%D9@K䕺z֜kI0) @˲ET/3x=OY2IFșj' %K@82# KJ.GӥC6%%s쯐bL+/MߺlwZ$@$./-~LP,Gkt; S|~̄IZWT-(ڋf"O8._⿔Kb0$siO@dY%!24-)ϚY4,-,?Y%,#_ !;IR.c=6眠.le<5uwȊْ+]bQϥm !A>NiFY?1;L}/+ |(_k`SWjo>rF@V$KJfJ\.w#YT61o 'd%PX|[jg]jI I @%񮸫LCoBKWg @˜FyH>X=*{ -@7Ɇ@Ќ S(uU1? |8/i9N9Y @Ti@*=t#9T gBg5ʹ% d4+(tq#?:ڋf&^uHo/ }VjЃOX2BJ|[56/*$|V Uo ӋYDxZ@͚S̩7 b+ Y6.Id7?1f nJxn\0E|{.L8$zF8S*јߑp Ɖ=0l E'; $?MY@0ɡV SƱ{gUtV'HetP\./ΉgZ á#mdte$ sZ1 Fisg.%`%De{(9z}FdYW٘-b N|C_H!ɗ$%Bmƀ e,KdK֮-3}z_k?F2#ɋVwu999o}y߮o D}u62a(_D79破a>^œZ_ m0􆅕W7q.iw t.u\>qD/WgE)P,>ۿZaV4@Xb]ŶE Կpބ%,KjKW^U&DzE(oձ("x'sDEpΟU cݐq pqf1ִ]X~EEfmpQ5΋_TW,d6a>>66\/ %0c rлg߮T^"2oU0 Ϳ9} J-N,a>h-t\Eg+av:Cv(ȓp-e:e,}CͿaL"66\F?Kи*|Uݲ:];[{;M"X6.O52#Ye:\x%TTOe eE$IǓ PS?g 65:h%#M~:u;,O?xuod`XvEW5y0Qkª P<+=O'5Yr,'ͣ8^#F6|nz=Iyi[l :"k59''BBxEߗr۟(foqCe6…!д2|i3xOt!ؼ*;ebm (0t4^Nr/Xb_ (PXqQXܺUU89? FjD@D#OHA"+- BS(= ,zEHs`kKUY05aEd! op1PrDfNY6z_20#O `Ed!д.BhzFKBDzjPphX6R;R:<͟ cLœsֺa8t -k Jkk^_wiXq">qDehy6%ˌ(9^iut|][68.B"+Ѷa#0kנOJN .ڐ۟pa(vLgx@ (+!O ka-R`KXiu芬s\Cq0^=(.d ,3'܆)0 ݎ u )жJ;0@q P.ޗKsʺ `0Y@ vW97呵ٱ(`L_. D7'8Œ:KeX6֯wTҸ2|.XU[aLLpn:@vӳ֭i'ʀ:Q, AP C4|uNm"$м1i3HS|Xq.cEY4;rE@n0x2́v4[l R5Z/ЭNum뵰@m.5!Q,N%<'* SD:# #Ci к>r1m MviNUtO.X*@7'2f`ꊬh]W|`$#6]j ᕶLR0Ǩ?Cd`IroYEFӹ=#`]Gp="$_h+*!8~cvV&N-7tĎfZnΟ(!L_ ڛ X-oX xcBݿF6:r«`LAECxc" ZpVԏR`ʂ!M6K @'mJmk'Oęp EG!j́v[ImtT$%Pz@4:.!^ayhi䌣5q0`. D)$=>Dՠ2RkFX+= ` #jC}|rH@3"Jwz" q?K0fퟐ/'!yhQE0(lWX"k*#M+_; o 4J$Aq fl ,J%7-JyOn Ƽeo-cDjGH:тEX:~QLΐ $nopa`ӎWjÎMkwsH@ۺhqz`Y&}PL V&fIo/OjlPYn peRqSm݃Xoufr8=h7] U%o=aEL]v !hsfb ¤S@7HY8hZqX+@ T~ ΎRq ɧQB `3> XNq>W"gQ밽. vAN+)OT7pTk_ @ׄ(ည v WQHLS(ةtyI.JEV02`zO D:aA5 0!RQt{E 'PN䒠Q>L4AiiE=c0ԎK #_Bk$-&Gn"0Q:^%R0AljSaưN ZPi,y )~D4g@nEhPJ/эP&}9*3aV;`ŧ+怊 })Y@ TCk`(P At@5@wDe`4uZf@ Q6T z!wq!,Jq jˊ{KxJ#`s~JVkMD큥+: \@HsHt! w"Z=l4 ]!j%RQPj+g A5"[j*%Fvp/%/ A ^'e5'^4Σl0tɉSCwC9-ܛOx! P}A9Q[%jVThgC kJrt %ԢΓ۟ - gKXZ@tyQ ;J)Np#~/ " @TZJP{_K+_ЂofP3a PT? ń KI] JG6E|Ox!rP57_+ˣ%+6fdTGϦKV6 [N󇡏C(V`r"1m'VځH;_TjG[h f6,˖+rOi~4#߁(f! D"(Cq@9D`,bAX)} F7hw4͚OkuTTDÖY6_qg4?>Y4~KP;!򩅄pW *AJPCԵ E[ʷiݞ4:?jRQ `ç3 ^7#wI'! s@o6D9F7Jr0?r#[aдM Wm󁫝Bo?W2 M`@E0Ecи&<ECM1uc0a 4.i9oS*@f?B( շoé+(QMAQ 5D+=)pJ|0c=ԎNjyo !WaAaA&٤bBeL+] ~䇰3U1ERͬ"&l pSw.AQp!XVlkY  00P "ږH% +pơAR~`1A`E)  j^8:ǧ+ Kz  XTԛ  lSI`Ȗ!2[4 b ˨`0+AY+qg 0u BΥސJ_R>AD1 tAzAIEO@1€n+" B& @TM1gw+S91+UԆX*urhmt%Hfea AÀ )4ԅ|Px~,a°`~˅n ^yR~]U F~^cd V*t@!AՔT [ #_4i'c >#ƺejq; X E'z*3c̉){rOoH j`h4(!Cp}9/,K`I&|tF,ALK .`.G<5q6t'Lˀa})E3*N67Ϊk9JXP4;5o݁w+pE!EU# B` g+{csiLgpٚ\܅ĝnav<%iv>'`!os}+0c Q9D/t)獦)hoA7YQY43}}a.NVa D8C.Y,y* isB`C ny LS|4m,B>'Z*]yehkA7H1)كE32P@>^sjWl !gH^~+_[8v%J`/#o\jJ&kW>@"~Mn,:\0S^1`EH&aJ&kH7n* +u6 "` Z$O Na>%=of` {iΑbU]E@nSc!Ց I8Ϳz7$ Hp dt{La>a?x.B 'GTSo 5h tɬec WR"lR].ĄUc\0GơGc⌓Da  My\sRIE`&LQ!k.>+bOC" 1LyL6̂9+TtAK2 0Ƒ32(J` Cz. Η#(@x"gJj8F1`$8a JuS15UJXӎ p@EwOzd)G`K7(@6B 'Y[eX6%({zz+7XW2*:7P`{(&\kQ^3'qEg_ zZ{z<>QLa.ci07"D%g[`FO!gdJBjV^FN„'Vę lp_n{=wnG 58i|COk jx/2!@$|[8m ˚PI@v.?b?..s/,[Ѻ"']tQAbRиL:.!1b~sƑ(Bك75G.B6nѳe/|ATD@T;fJ.Pr.6p9sqg&,,ygI=, PZ!L] ~xi^pIK,p0$a71T\T1k<3BJwd Jg;@}ܹ[:tI> pKP` i|a Sl}H'/fһre: (Bogsp#p-37sHK 0 3} `$dz#F1p\Sۿ”'@"e DC>dqi#i P1gfr 99^v0s>r8`jD8c܎_M 4wO`dQ68C1OW 00ӟ6p`:\D)m`: J. IDATaף~{?c <(tn \aHMF'@z&kg,'aXM P[) @m_8QJDU8$̰qLa O@zK}9S(#4 9ԕQ"{lMuaK*zLFJ7c?uqH F }+%vSb Y=-n%p=7řf/w*b.7i+(@|$K40+Q (b2m*@l8mf\xyC%uH>pu#"I7@UO20,1!=Cqs03q䌌TڕQTbqʹ\hDu@ЧJIP8ӹH3`/v\%*9S,c&?m ^׏83@@X@CďCVz+a09*@"H!c>`1&m4Hnws". @R9%,!0{"AO)6f@ N8.A] JS#@wijlθxDy`!x02zc zRON&z! s\3[YHyc%XuuL/jDH0zmʐύ&! O پ>;BΎ!נ]DK8sv[W&8<^r_HO Pt8&2〾/@Kr v X@k}Жs1UX /`/$)0`z0\zC *b0yq uX#(@vLn i[ `hr"$)6q $:.@]rM,)?DoƙHCF ,XČ3Do&% LcTILG/ɀK _qhvhQr?ms\eHMd'ҳıKv,+L|aZ` ՗EU=E"z0-Ɛ??KLu*|Ra ˢif:X Ln[vivJ%cufr΍2w:.B2\l${Xq Gox} 7 wmsF:J,B~ 2Sǐ5R%n190ݝxN]#xkLG9 EMu/;c+͂@iYh ~'l})  O^'a0)e2Hh.@?%qD XB`yCOj_M7JO ٣}T1mV'נ^4p]4EAWs0:uY0q.I03drXQ͙ q(;W8OǴhsD?̢Y>0QSGkI!Yw\khG3=#I]`6;/g y%5lXvF(+Qq>rsgP:xuΰ-x`8T^ !1 ZgTOz_>O]=k`?|\Q,:^eq_N bLK !xd7b(dc q\KxV$.W]S|8?rqzMJ_?;` j@Uoqs{`OrB /9.%<+`tV` ΍b(uq +/cC}ׂ35Ώ x4;PvOf*3|yCl YDs% |%]T4o@l,K>Cé^LeGlU4/q.i0xb,ݭJ艽 K8 ̀P(۟6OQtVApd%B?05wiEkXigG0xyBb 4_#OE k;c G@ULq4@;O@JI1-5QF84V?Nnzq.y)dfNڹиé^Ldmdeh𣏕ۿ8#JD^D: a.[3b2vN=U{9#3/8/s~ѝU1KӴ$}é>S[gfv\T|)-/0:*p`v4@oojWx9@n58m t(9[\e>B\*@b(IlSm40,)uWA=HOntK:XB.aMs`Xfc/ vDžп}Aٻ(y응39w &M;Z펁0VG:l=M@!T?dO|kb8s\H0Riٝ(Z^u2V{ۿv)B gYV?SOJ!ej@b8?04+@Qwq yOPD$dsF^OYrũm_8.LTqÁS[_oj$3` ?!3S:&p&)G^Ln +=LM<6??PJY*0mܘH=2Yu(m:PoB2,0GF_xi{0J)LTAz_у31g~`>:n_”#@c5gc`LeGp"~/ ɩ|'&v8.T_LXzh+\_H "n}_⸝"\Bo3IpfgW0oX/Ƈ3Ga0y 'GBx\m7S PU覅UQԇKc?UmӰ̞-#?v\H:~; UΉ'xP7((r͟XAnpKV7KY{n&2Pmd#>3򬄘YyFOݧ<+% E@nBP:0L ]-)cmV+8 cgLU ɩ3O)3Rj Wtu r sn:@tKVHYk,3c)b (cJ)TcOݡt~j\îɧ[Ώy|DgOT3D)h ce[^x9#c+dHfJJ1ejCOr\gKKRj 7[Ӕޒ fKGwCo#,KW7KɒxyY[)=}y%j&1c-hscH)6#wB*Rqumi" K>urzsI[#>>tSW8]f*yc yTJ-Hnh'px%\%pp UC>[WO@Z=1~(HYԢt!_SDpF:'tycZ-/pv}lI='UlZ@oۙ >%3c:7*)rؿDJ:1p,\|6Z@2SiT=>QlL #'mlZ6nz۟R>J進cXm !lX e8?hgy[SA^O<=~g+4✔b~(m-AgjorStbm+ό0E f{vRLC[&ŋv"fCV" y/,z9֠%J'1L Mat?:s/o0CߔRL NvMeH )~&(+-.q۟6|~"gs6p;_nm+Gb,}'SajB ܪ̜T&c1):D>ALnF)M +JR׿I}~%hj@ѧoPow5#{ݱ5@?ۂROwA۴aO8gJG \.mG@z*Cj*?~cwK+Ԍ?Yw*S1G~D>K3HnbXP:@.E†ho3o,ӏ{*=bPS}{lz4%p 9o"^5 O,1ʑh^b@KAk6I[ɡ{7`6= =~ۤjJm~y m'9$n^i5-= f 3CI)y}&=ڦ|Ny)h_MfYq[,ti 4pVik>1t7xg 9xH+#Ԝ ||`!0֑S߇Ѷp7^<ՏDpt@XB`<=!ׂ =u"1 QφM=<+A3q)&D>{p{tOT}ԅB(VG5!La˲< 5)|Yq U㉡K+(d쀏QB~MuvH[NtP0{fOH+CԪ8u ~ޮA84R S0M%?A.n7 :=JVD@Ѵp43ꝍ!t<6C0fsc`פAjV)`(Zy<2}iimZX۽O D `X/OMU?7uW-pgCO̝L>kW88 vI)gu bu۟D-q1W`n"gKI<9t4^qblRGi/EMc'tKΆͣu~OZ&\_D zDE@0q&hӹQLy-CAiEyݏmyyQ-hsR c yǶH|ϯBd7#}?Q3J؅t@qFy360ŒŴw߉K+ʣԼw}`C>%'A0#ۿzK3nVWU:7\ԉ_CH4B*zyXvBZQeIO3c-hLa*b<2pxK1U@%(.jNY 7<6c\aHG_7a7Q2ij;'ĉ!i5~mN^۟ a}~S5 f?7{_XÑ-#JĥaK}v|!@K`yO| eEo]۟ ܥ^eI<}NAc?yx総!(d3sqTJ6*iZ ܈j9Wc8Xū=*m~>`޻?:36XR 9?/6SxlG!  (۟vp:0Z냸~v}"gdgP0v đXYRv~Pfq SۤU ҍ@ ",u)Pi p_j%l^x v9zCq'AZQU’=fPB;L?+( > )m,i't@Envc;:_Xa?{G4n @c9s/d߀0?9yŘM@'oP逢aaMG=X'?mOC xq|Ƿ$*aI usFn,Pfۥ\Δe$?Ax"Ff@4/].1w98TOI,jX`h|CC_^xfvH _A]7O.%N~._Dq} Sl>`T?'[d7cCv xty}#x} X.\=߁O9P}0qXOnLn*)*8w}*KZ('܇̺]O9D ?nyx/ BuG 5 mR3,vM>H'Gyr>UK]ScwNU@P aS=ʀnDwoHe-/D\Ol^8 (Ji._\ښ0߂U}p#3_(*d x=v[0Z[SۯH% ErDRt@k}E Wi!WD'/?/LC-cGRbiU ?8wNNT!^'n#{"Zhlɂ7֣%?AT!g ~PI[:tc09 Vb!~A%l{ -`t=~:Ҫy혪C#+m~yheWt?j/V|[˂~DNW@BW%,n2,4jљ <1B ^¯p& 9;׵N@MX%0A7-pڴ S`e[zné^|`W:\a0#"b';/xs*`8?MMW/_w%|W_ k.sl "L ,Bc| "?' Aml?m^@rh&8cXZt\E<&/K6-@S]_؉.D'w[)9z_1towNe֩˫jH,"5O2̭ysoE{G1fnln'4Zن qSB(uxQ_ MoЯ߳m~)RO.an.9cP8p} # xӦN5]yxxy9G-b@᧿x$Vuh8~7ܴ쒆s 1>ŏT>%Wvhm|T\` kՠQyN˰,*98u 9ԁ>L IDATgџ"ڿg 3~H,& i*pѿTTxa <7Ebe 2l;Oᜈt(!S)e'ø7pv?T쾳S}˫ H cGwo5ÂMo?#JcD%*EG?}!csW˫H{Sw;*LA*\Po.n6 ݂!5ʑF}J, :<K1Cjri= 7;vt,d__Ng%VsxR㩹ȟ)l|A5=Sc?W\87>g6 :*; K}߂4t?6r=.p~>U(ˠ#wavIϞ;wPo2?aLg.鼈fqgW[pfdf>u$΃'?s3'/ qb4}Rbup'{S*] A D| O&-=Ȼ8WUG쨣)3"+ɫ6!p~?1<6#@ Þ}ؓpOW1$$0w #ri㼠Ɓٝѯ=W W1@k؇p{|l?>p@Gn~I*oIC@zb R#xqi;rv0~%M ו5{j+~|p 9{hAG'%=%=s䑑G+q_$Tv~^ЎHk,!tue}3c_cF?„lp0ʹk y?5q$әuχ}iX0 zY 7,lj M+}Gv{=_%,(ٳP8 }`b()jU X?_pl8[ :S 5wH*l 2 jicW ?2ue@u3U~?'D$\`n~Es#^!l~YD@k:Q &~m} >pqudn7n;yfq_ŶoIϣ#K*X l=sNfD`yD/Ǻ]bkDdu+.4~-?CC8p#^.2;~𹛻k$pb{7syBBnsiN+ o\,BӪ~3Q4HLlj \K:\}3q{7]y~RBy@ LĻU?ZEg k8ۏe-;nZpUC h82 ˰i3H,=,!* ߾L;^ڊ;,aBer?_-(#{}+(8s؟}ØOl_ e}zƐOdhkS X:0鷮ſ\;>~x?@R1q8>CHxA 'y1B)-mFѹиgqY˛uXy:& ΂t%uH,R] o^]=5|/;P8,lsOM!#D< PfE%yi?ó;b4[%Tu4` e0wr1 %^@hࢶ./nw}OH;=_®ɧR#RǪ_A.V~8vh~LBD GlYeEÊU2TCH`vtW#BBаMn`8 <xG[tr|}amSOR#RT rBa{'LJ,J =+̑-#qeDIT<:%T4mC5kL ><4 t ~F𗡯P8u1EP KYS ( }g',J؂8eU剀c[ljڵ^ DX 1s|lN* ڠhZ(MN<>90'oy, B[Kʺ chЁ!!64!@} c!obS[_Be{/#KS[&?&y\e'{Ω%N:&!$!$`@APA.><^uWQQ !b $IZ]UݵWTw$˩;$O䜷S省~@ }9^iVyV  w"ZnuߊeEVU B2*B`RI]߈o_߆61Et~x+Mrfȕ})/G (1 r%]UqrCgT&6jH^0ދ͋!0p$BܐUud5Z*q K@AF]2mh%Q˄юc|u2A$ 01 }qi]C2"0&$=Ӈнef_Hf +PHCapӴ@P(mpK_߶wnY0Z{ Ɲ%ro{&{3~)]J#٘|pƜigZEx~:rsa8мy1L!9c0ҤϬ/pۆF|6 3&Gׂ g L8{ǃ[(Ǣc/6m4u՘gJL ^ BRM`g!'{z/nii`h HBUܰ-ϙ^#;z7&RC3Ac#rQWH+De+nsQ!@`"AĉCvV)$4ml@JR .ґVt:օ^|6|jm<}6Y-=?oN4 Ih;}죯w.LNu =V6 OŨm|N VC}v jW7~m3Ԍ QrQ(#XSׯiQ[f-x;w fCPȎo1$(1r\Ny|Rw^MM (z'_F(3專hX+!'2LCU":_'H+:WOW-WnAke`7J& - nHGCOC74~Ȱ 07i0gV{spL$Hvph:\<8N4mZ@{- S H#@eTUGω;,]״by8R ]Oy/{)w_YU:w~g<{y;`gaB{_|4љ zRTÑHuk}UFN ƀS8\r: y,0·@24!UMhXad\@91uljWފkZ+Qa/י=xxn\[h H,=F7 EG` ^eEƻҨgͮ H(QD/ 2w icpUxy /ol,TdfT@`Z]P/ߏƲ]LH9Q5d5Ì۫[+?~.?!!vkz(}~Ieބ]to8t':x=Xxtr,;[+]b8F@JM*ڐl˄H|u`TO9rA.d}b&WZÑҰ6lh @u§9؏C S2(@4sr̀X+/:ǎ1瀬5fQ@dž \;jQu/ >`jіy~ Wdw׿1PUKd#-|+_s]6Y4 :בX|&l{/R )X F 7L, A4%pC\]{qG;+`3fy&MϽk:,a׎M\J>| u bSOD 'ge蚞iY.l)>9CtHf UXr*4^RDo;OI+$ܩx lg`3p[$\ԹXXaG׎ ;ʬ%QgH9[ 귂!S],?ɞ|w>ސU[[?_͍rJ5L724ވMaCյ(TE"L ő!!1XjV Z$8Nx[Y[dH "?t @<63jVԖYXnEM6Ӽ-/2^܍]O{rXHA^}`t*7%s<}ѪZunꂭ5E5k oF( ՇT}ꝅ}-6MV$A,H:8`s5IDAT8DJ~Ͻbr{'vg1%Z . }y)(𪚍nmޢdTjh\e`XZWT_v:Jgq 8$zQ^Wrdȅ`>+niciTZw !kY0&يUoVTX?! k +!$̢T`ewON|c7,ɼ@\0grgZXxû# PuJ,^U۰|%9d?w`pF8̢% H'?S/,ɼB\UK˵+>5\tAֳzW md~Jq pr0J䆺/EJ8AȝD2&gҊ5XQaEi) :1EG xZ`$ 0+5vߑwPB; $^n9ߺ[F*TM j|{ף|9M\"]`G{q,#>d$A$LVH<+n+]ƐKRn]:}b`& 2TX}h.[XT Z@8i:q,'c"5 YM$鑃e; rɠ@ ,KnsjLנ288 f,*_ŞUhpa*+vyPu~tG;p1#~:~R@HQTTC?~Cm.m*k }\h I0cՊhq/C Vf3\G0=q:Xd&:!3jgCmdg" a]}+ole{PZ 33 t"ZQa ι h.kCN z'D8@bx? 0D'RC{&?#=tD/)y:%o-\ (•>WB*t$6{Qmo@MŨq4k ,Zyc*; HL-Iߣ hgGrчi;)HYj?]~TUZiY:fB I[*գ޵Pa.&YDa#Ib8ы B1$8T]L*731di> OP6BfCu-۪?;v]%6=pvиvz@`, .s9:TgFNd;|Ȩ)Ĕ)̌b,9™qD0j1D$@4 Ĕ>9|K.B!sW ,+W7^ںO]kV%ٜ)ts0V8L.+4i*E"2{bcB!0 c:B(=HvLl %^&Rc0=QҸEBeZEFM"&TbH*qĕ(r %GZM"rlG @` sc;/T#cY׳;XLB.|P M4o |fZV4U/)s987:dJē0&BbR xI0 fBOa6!kYA2sU +3;"mclSi̟ 1H䞓Ϗ#ݑb5Lrɪ^ihE۪޾A4 ѡQW sB.:5\Gulf_] Y0{쉡C6B.ƥKF:ߪ+7/ֱPe$ cD)yt3'0/ab#P ښlzwJϻ\~20@y5M@D۳/2}';bt0:Ub4 R`Z|mͺ5jVUޱJ4 LSt>grey% =3ݑpHH>Q qCMkjWzit]fvH]ѡ)ZHXnIxb29vd='~907Fm$P(KZ`q}啵Z6+,L`K19O3Dsn_:*G^ =77c`QjIH1P dFu5ߪ zef/M@P(@41U2ёdı#G/H #PVeK6yV *uN J%SPwÑƏ v 9 #GY^QsyefToJCia :|Ad:fCLd_b+G>P,#-Q |p|--ek< Uum3#smp  Lg:lB%BPh;v x"vp+ѕOLɄE1PY]YEy9RƱrUmk8Mfdc"F rpO9TYӲ1u"9OB''LuGӣ{B A|k5`uW9k͕6ocZ^kolbaf1k|f W 7r0͡no00  r()5MDz83%wzcӃ㱉DoE&(R?CnU5X*rĄ&O?JG1鉄dgF1BJepZPa)**]>MN[VkqWZ:\\U9+tn &p`b Y7I` |A`eƘlLr x*"(XHXX̔IG85(@ )E'o.&IlK& T!ef% :M/  9 d\,sjfjVgJ6L?-zJ-B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!Rݐ VRn8IENDB`JUCE-4.1.0/examples/Demo/Builds/Android/res/values/000077500000000000000000000000001263452017400216425ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/res/values/strings.xml000066400000000000000000000001621263452017400240540ustar00rootroot00000000000000 JuceDemo JUCE-4.1.0/examples/Demo/Builds/Android/src/000077500000000000000000000000001263452017400203415ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/src/com/000077500000000000000000000000001263452017400211175ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/src/com/juce/000077500000000000000000000000001263452017400220455ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/src/com/juce/jucedemo/000077500000000000000000000000001263452017400236405ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Android/src/com/juce/jucedemo/JuceDemo.java000066400000000000000000001147561263452017400262140ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ package com.juce.jucedemo; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.os.Looper; import android.os.Handler; import android.os.Build; import android.os.Process; import android.os.ParcelUuid; import android.view.*; import android.view.inputmethod.BaseInputConnection; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.graphics.*; import android.text.ClipboardManager; import android.text.InputType; import android.util.DisplayMetrics; import android.util.Log; import java.lang.Runnable; import java.util.List; import java.util.Arrays; import java.util.ArrayList; import java.util.HashSet; import java.util.Hashtable; import java.util.TimerTask; import java.io.*; import java.net.URL; import java.net.HttpURLConnection; import android.media.AudioManager; import android.media.MediaScannerConnection; import android.media.MediaScannerConnection.MediaScannerConnectionClient; //============================================================================== public class JuceDemo extends Activity { //============================================================================== static { System.loadLibrary ("juce_jni"); } //============================================================================== public static class MidiPortID extends Object { public MidiPortID (int index, boolean direction) { androidIndex = index; isInput = direction; } public int androidIndex; public boolean isInput; @Override public int hashCode() { Integer i = new Integer (androidIndex); return i.hashCode() * (isInput ? -1 : 1); } @Override public boolean equals (Object obj) { if (obj == null) return false; if (getClass() != obj.getClass()) return false; MidiPortID other = (MidiPortID) obj; return (androidIndex == other.androidIndex && isInput == other.isInput); } } public interface JuceMidiPort { boolean isInputPort(); // start, stop does nothing on an output port void start(); void stop(); void close(); MidiPortID getPortId(); // send will do nothing on an input port void sendMidi (byte[] msg, int offset, int count); } //============================================================================== //============================================================================== public class BluetoothManager { BluetoothManager() { } public String[] getMidiBluetoothAddresses() { String[] bluetoothAddresses = new String[0]; return bluetoothAddresses; } public String getHumanReadableStringForBluetoothAddress (String address) { return address; } public boolean isBluetoothDevicePaired (String address) { return false; } public boolean pairBluetoothMidiDevice(String address) { return false; } public void unpairBluetoothMidiDevice (String address) { } } //============================================================================== public class MidiDeviceManager { public MidiDeviceManager() { } public String[] getJuceAndroidMidiInputDevices() { return new String[0]; } public String[] getJuceAndroidMidiOutputDevices() { return new String[0]; } public JuceMidiPort openMidiInputPortWithJuceIndex (int index, long host) { return null; } public JuceMidiPort openMidiOutputPortWithJuceIndex (int index) { return null; } public String getInputPortNameForJuceIndex (int index) { return ""; } public String getOutputPortNameForJuceIndex (int index) { return ""; } } public MidiDeviceManager getAndroidMidiDeviceManager() { return null; } public BluetoothManager getAndroidBluetoothManager() { return null; } //============================================================================== @Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); isScreenSaverEnabled = true; viewHolder = new ViewHolder (this); setContentView (viewHolder); setVolumeControlStream (AudioManager.STREAM_MUSIC); } @Override protected void onDestroy() { quitApp(); super.onDestroy(); clearDataCache(); } @Override protected void onPause() { suspendApp(); super.onPause(); } @Override protected void onResume() { super.onResume(); resumeApp(); } @Override public void onConfigurationChanged (Configuration cfg) { super.onConfigurationChanged (cfg); setContentView (viewHolder); } private void callAppLauncher() { launchApp (getApplicationInfo().publicSourceDir, getApplicationInfo().dataDir); } //============================================================================== private native void launchApp (String appFile, String appDataDir); private native void quitApp(); private native void suspendApp(); private native void resumeApp(); private native void setScreenSize (int screenWidth, int screenHeight, int dpi); //============================================================================== public native void deliverMessage (long value); private android.os.Handler messageHandler = new android.os.Handler(); public final void postMessage (long value) { messageHandler.post (new MessageCallback (value)); } private final class MessageCallback implements Runnable { public MessageCallback (long value_) { value = value_; } public final void run() { deliverMessage (value); } private long value; } //============================================================================== private ViewHolder viewHolder; private MidiDeviceManager midiDeviceManager = null; private BluetoothManager bluetoothManager = null; private boolean isScreenSaverEnabled; private java.util.Timer keepAliveTimer; public final ComponentPeerView createNewView (boolean opaque, long host) { ComponentPeerView v = new ComponentPeerView (this, opaque, host); viewHolder.addView (v); return v; } public final void deleteView (ComponentPeerView view) { ViewGroup group = (ViewGroup) (view.getParent()); if (group != null) group.removeView (view); } public final void deleteNativeSurfaceView (NativeSurfaceView view) { ViewGroup group = (ViewGroup) (view.getParent()); if (group != null) group.removeView (view); } final class ViewHolder extends ViewGroup { public ViewHolder (Context context) { super (context); setDescendantFocusability (ViewGroup.FOCUS_AFTER_DESCENDANTS); setFocusable (false); } protected final void onLayout (boolean changed, int left, int top, int right, int bottom) { setScreenSize (getWidth(), getHeight(), getDPI()); if (isFirstResize) { isFirstResize = false; callAppLauncher(); } } private final int getDPI() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics (metrics); return metrics.densityDpi; } private boolean isFirstResize = true; } public final void excludeClipRegion (android.graphics.Canvas canvas, float left, float top, float right, float bottom) { canvas.clipRect (left, top, right, bottom, android.graphics.Region.Op.DIFFERENCE); } //============================================================================== public final void setScreenSaver (boolean enabled) { if (isScreenSaverEnabled != enabled) { isScreenSaverEnabled = enabled; if (keepAliveTimer != null) { keepAliveTimer.cancel(); keepAliveTimer = null; } if (enabled) { getWindow().clearFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } else { getWindow().addFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // If no user input is received after about 3 seconds, the OS will lower the // task's priority, so this timer forces it to be kept active. keepAliveTimer = new java.util.Timer(); keepAliveTimer.scheduleAtFixedRate (new TimerTask() { @Override public void run() { android.app.Instrumentation instrumentation = new android.app.Instrumentation(); try { instrumentation.sendKeyDownUpSync (KeyEvent.KEYCODE_UNKNOWN); } catch (Exception e) { } } }, 2000, 2000); } } } public final boolean getScreenSaver() { return isScreenSaverEnabled; } //============================================================================== public final String getClipboardContent() { ClipboardManager clipboard = (ClipboardManager) getSystemService (CLIPBOARD_SERVICE); return clipboard.getText().toString(); } public final void setClipboardContent (String newText) { ClipboardManager clipboard = (ClipboardManager) getSystemService (CLIPBOARD_SERVICE); clipboard.setText (newText); } //============================================================================== public final void showMessageBox (String title, String message, final long callback) { AlertDialog.Builder builder = new AlertDialog.Builder (this); builder.setTitle (title) .setMessage (message) .setCancelable (true) .setPositiveButton ("OK", new DialogInterface.OnClickListener() { public void onClick (DialogInterface dialog, int id) { dialog.cancel(); JuceDemo.this.alertDismissed (callback, 0); } }); builder.create().show(); } public final void showOkCancelBox (String title, String message, final long callback) { AlertDialog.Builder builder = new AlertDialog.Builder (this); builder.setTitle (title) .setMessage (message) .setCancelable (true) .setPositiveButton ("OK", new DialogInterface.OnClickListener() { public void onClick (DialogInterface dialog, int id) { dialog.cancel(); JuceDemo.this.alertDismissed (callback, 1); } }) .setNegativeButton ("Cancel", new DialogInterface.OnClickListener() { public void onClick (DialogInterface dialog, int id) { dialog.cancel(); JuceDemo.this.alertDismissed (callback, 0); } }); builder.create().show(); } public final void showYesNoCancelBox (String title, String message, final long callback) { AlertDialog.Builder builder = new AlertDialog.Builder (this); builder.setTitle (title) .setMessage (message) .setCancelable (true) .setPositiveButton ("Yes", new DialogInterface.OnClickListener() { public void onClick (DialogInterface dialog, int id) { dialog.cancel(); JuceDemo.this.alertDismissed (callback, 1); } }) .setNegativeButton ("No", new DialogInterface.OnClickListener() { public void onClick (DialogInterface dialog, int id) { dialog.cancel(); JuceDemo.this.alertDismissed (callback, 2); } }) .setNeutralButton ("Cancel", new DialogInterface.OnClickListener() { public void onClick (DialogInterface dialog, int id) { dialog.cancel(); JuceDemo.this.alertDismissed (callback, 0); } }); builder.create().show(); } public native void alertDismissed (long callback, int id); //============================================================================== public final class ComponentPeerView extends ViewGroup implements View.OnFocusChangeListener { public ComponentPeerView (Context context, boolean opaque_, long host) { super (context); this.host = host; setWillNotDraw (false); opaque = opaque_; setFocusable (true); setFocusableInTouchMode (true); setOnFocusChangeListener (this); requestFocus(); // swap red and blue colours to match internal opengl texture format ColorMatrix colorMatrix = new ColorMatrix(); float[] colorTransform = { 0, 0, 1.0f, 0, 0, 0, 1.0f, 0, 0, 0, 1.0f, 0, 0, 0, 0, 0, 0, 0, 1.0f, 0 }; colorMatrix.set (colorTransform); paint.setColorFilter (new ColorMatrixColorFilter (colorMatrix)); } //============================================================================== private native void handlePaint (long host, Canvas canvas, Paint paint); @Override public void onDraw (Canvas canvas) { handlePaint (host, canvas, paint); } @Override public boolean isOpaque() { return opaque; } private boolean opaque; private long host; private Paint paint = new Paint(); //============================================================================== private native void handleMouseDown (long host, int index, float x, float y, long time); private native void handleMouseDrag (long host, int index, float x, float y, long time); private native void handleMouseUp (long host, int index, float x, float y, long time); @Override public boolean onTouchEvent (MotionEvent event) { int action = event.getAction(); long time = event.getEventTime(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: handleMouseDown (host, event.getPointerId(0), event.getX(), event.getY(), time); return true; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: handleMouseUp (host, event.getPointerId(0), event.getX(), event.getY(), time); return true; case MotionEvent.ACTION_MOVE: { int n = event.getPointerCount(); for (int i = 0; i < n; ++i) handleMouseDrag (host, event.getPointerId(i), event.getX(i), event.getY(i), time); return true; } case MotionEvent.ACTION_POINTER_UP: { int i = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; handleMouseUp (host, event.getPointerId(i), event.getX(i), event.getY(i), time); return true; } case MotionEvent.ACTION_POINTER_DOWN: { int i = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; handleMouseDown (host, event.getPointerId(i), event.getX(i), event.getY(i), time); return true; } default: break; } return false; } //============================================================================== private native void handleKeyDown (long host, int keycode, int textchar); private native void handleKeyUp (long host, int keycode, int textchar); public void showKeyboard (String type) { InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); if (imm != null) { if (type.length() > 0) { imm.showSoftInput (this, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT); imm.setInputMethod (getWindowToken(), type); } else { imm.hideSoftInputFromWindow (getWindowToken(), 0); } } } @Override public boolean onKeyDown (int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: case KeyEvent.KEYCODE_VOLUME_DOWN: return super.onKeyDown (keyCode, event); default: break; } handleKeyDown (host, keyCode, event.getUnicodeChar()); return true; } @Override public boolean onKeyUp (int keyCode, KeyEvent event) { handleKeyUp (host, keyCode, event.getUnicodeChar()); return true; } @Override public boolean onKeyMultiple (int keyCode, int count, KeyEvent event) { if (keyCode != KeyEvent.KEYCODE_UNKNOWN || event.getAction() != KeyEvent.ACTION_MULTIPLE) return super.onKeyMultiple (keyCode, count, event); if (event.getCharacters() != null) { int utf8Char = event.getCharacters().codePointAt (0); handleKeyDown (host, utf8Char, utf8Char); return true; } return false; } // this is here to make keyboard entry work on a Galaxy Tab2 10.1 @Override public InputConnection onCreateInputConnection (EditorInfo outAttrs) { outAttrs.actionLabel = ""; outAttrs.hintText = ""; outAttrs.initialCapsMode = 0; outAttrs.initialSelEnd = outAttrs.initialSelStart = -1; outAttrs.label = ""; outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI; outAttrs.inputType = InputType.TYPE_NULL; return new BaseInputConnection (this, false); } //============================================================================== @Override protected void onSizeChanged (int w, int h, int oldw, int oldh) { super.onSizeChanged (w, h, oldw, oldh); viewSizeChanged (host); } @Override protected void onLayout (boolean changed, int left, int top, int right, int bottom) { for (int i = getChildCount(); --i >= 0;) requestTransparentRegion (getChildAt (i)); } private native void viewSizeChanged (long host); @Override public void onFocusChange (View v, boolean hasFocus) { if (v == this) focusChanged (host, hasFocus); } private native void focusChanged (long host, boolean hasFocus); public void setViewName (String newName) {} public boolean isVisible() { return getVisibility() == VISIBLE; } public void setVisible (boolean b) { setVisibility (b ? VISIBLE : INVISIBLE); } public boolean containsPoint (int x, int y) { return true; //xxx needs to check overlapping views } } //============================================================================== public static class NativeSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private long nativeContext = 0; NativeSurfaceView (Context context, long nativeContextPtr) { super (context); nativeContext = nativeContextPtr; } public Surface getNativeSurface() { Surface retval = null; SurfaceHolder holder = getHolder(); if (holder != null) retval = holder.getSurface(); return retval; } //============================================================================== @Override public void surfaceChanged (SurfaceHolder holder, int format, int width, int height) { surfaceChangedNative (nativeContext, holder, format, width, height); } @Override public void surfaceCreated (SurfaceHolder holder) { surfaceCreatedNative (nativeContext, holder); } @Override public void surfaceDestroyed (SurfaceHolder holder) { surfaceDestroyedNative (nativeContext, holder); } @Override protected void dispatchDraw (Canvas canvas) { super.dispatchDraw (canvas); dispatchDrawNative (nativeContext, canvas); } //============================================================================== @Override protected void onAttachedToWindow () { super.onAttachedToWindow(); getHolder().addCallback (this); } @Override protected void onDetachedFromWindow () { super.onDetachedFromWindow(); getHolder().removeCallback (this); } //============================================================================== private native void dispatchDrawNative (long nativeContextPtr, Canvas canvas); private native void surfaceCreatedNative (long nativeContextptr, SurfaceHolder holder); private native void surfaceDestroyedNative (long nativeContextptr, SurfaceHolder holder); private native void surfaceChangedNative (long nativeContextptr, SurfaceHolder holder, int format, int width, int height); } public NativeSurfaceView createNativeSurfaceView(long nativeSurfacePtr) { return new NativeSurfaceView (this, nativeSurfacePtr); } //============================================================================== public final int[] renderGlyph (char glyph, Paint paint, android.graphics.Matrix matrix, Rect bounds) { Path p = new Path(); paint.getTextPath (String.valueOf (glyph), 0, 1, 0.0f, 0.0f, p); RectF boundsF = new RectF(); p.computeBounds (boundsF, true); matrix.mapRect (boundsF); boundsF.roundOut (bounds); bounds.left--; bounds.right++; final int w = bounds.width(); final int h = Math.max (1, bounds.height()); Bitmap bm = Bitmap.createBitmap (w, h, Bitmap.Config.ARGB_8888); Canvas c = new Canvas (bm); matrix.postTranslate (-bounds.left, -bounds.top); c.setMatrix (matrix); c.drawPath (p, paint); final int sizeNeeded = w * h; if (cachedRenderArray.length < sizeNeeded) cachedRenderArray = new int [sizeNeeded]; bm.getPixels (cachedRenderArray, 0, w, 0, 0, w, h); bm.recycle(); return cachedRenderArray; } private int[] cachedRenderArray = new int [256]; //============================================================================== public static class HTTPStream { public HTTPStream (HttpURLConnection connection_, int[] statusCode, StringBuffer responseHeaders) throws IOException { connection = connection_; try { inputStream = new BufferedInputStream (connection.getInputStream()); } catch (IOException e) { if (connection.getResponseCode() < 400) throw e; } finally { statusCode[0] = connection.getResponseCode(); } if (statusCode[0] >= 400) inputStream = connection.getErrorStream(); else inputStream = connection.getInputStream(); for (java.util.Map.Entry> entry : connection.getHeaderFields().entrySet()) if (entry.getKey() != null && entry.getValue() != null) responseHeaders.append (entry.getKey() + ": " + android.text.TextUtils.join (",", entry.getValue()) + "\n"); } public final void release() { try { inputStream.close(); } catch (IOException e) {} connection.disconnect(); } public final int read (byte[] buffer, int numBytes) { int num = 0; try { num = inputStream.read (buffer, 0, numBytes); } catch (IOException e) {} if (num > 0) position += num; return num; } public final long getPosition() { return position; } public final long getTotalLength() { return -1; } public final boolean isExhausted() { return false; } public final boolean setPosition (long newPos) { return false; } private HttpURLConnection connection; private InputStream inputStream; private long position; } public static final HTTPStream createHTTPStream (String address, boolean isPost, byte[] postData, String headers, int timeOutMs, int[] statusCode, StringBuffer responseHeaders, int numRedirectsToFollow, String httpRequestCmd) { // timeout parameter of zero for HttpUrlConnection is a blocking connect (negative value for juce::URL) if (timeOutMs < 0) timeOutMs = 0; else if (timeOutMs == 0) timeOutMs = 30000; // headers - if not empty, this string is appended onto the headers that are used for the request. It must therefore be a valid set of HTML header directives, separated by newlines. // So convert headers string to an array, with an element for each line String headerLines[] = headers.split("\\n"); for (;;) { try { HttpURLConnection connection = (HttpURLConnection) (new URL(address).openConnection()); if (connection != null) { try { connection.setInstanceFollowRedirects (false); connection.setConnectTimeout (timeOutMs); connection.setReadTimeout (timeOutMs); // Set request headers for (int i = 0; i < headerLines.length; ++i) { int pos = headerLines[i].indexOf (":"); if (pos > 0 && pos < headerLines[i].length()) { String field = headerLines[i].substring (0, pos); String value = headerLines[i].substring (pos + 1); if (value.length() > 0) connection.setRequestProperty (field, value); } } connection.setRequestMethod (httpRequestCmd); if (isPost) { connection.setDoOutput (true); if (postData != null) { OutputStream out = connection.getOutputStream(); out.write(postData); out.flush(); } } HTTPStream httpStream = new HTTPStream (connection, statusCode, responseHeaders); // Process redirect & continue as necessary int status = statusCode[0]; if (--numRedirectsToFollow >= 0 && (status == 301 || status == 302 || status == 303 || status == 307)) { // Assumes only one occurrence of "Location" int pos1 = responseHeaders.indexOf ("Location:") + 10; int pos2 = responseHeaders.indexOf ("\n", pos1); if (pos2 > pos1) { String newLocation = responseHeaders.substring(pos1, pos2); // Handle newLocation whether it's absolute or relative URL baseUrl = new URL (address); URL newUrl = new URL (baseUrl, newLocation); String transformedNewLocation = newUrl.toString(); if (transformedNewLocation != address) { address = transformedNewLocation; // Clear responseHeaders before next iteration responseHeaders.delete (0, responseHeaders.length()); continue; } } } return httpStream; } catch (Throwable e) { connection.disconnect(); } } } catch (Throwable e) {} return null; } } public final void launchURL (String url) { startActivity (new Intent (Intent.ACTION_VIEW, Uri.parse (url))); } public static final String getLocaleValue (boolean isRegion) { java.util.Locale locale = java.util.Locale.getDefault(); return isRegion ? locale.getDisplayCountry (java.util.Locale.US) : locale.getDisplayLanguage (java.util.Locale.US); } //============================================================================== private final class SingleMediaScanner implements MediaScannerConnectionClient { public SingleMediaScanner (Context context, String filename) { file = filename; msc = new MediaScannerConnection (context, this); msc.connect(); } @Override public void onMediaScannerConnected() { msc.scanFile (file, null); } @Override public void onScanCompleted (String path, Uri uri) { msc.disconnect(); } private MediaScannerConnection msc; private String file; } public final void scanFile (String filename) { new SingleMediaScanner (this, filename); } public final Typeface getTypeFaceFromAsset (String assetName) { try { return Typeface.createFromAsset (this.getResources().getAssets(), assetName); } catch (Throwable e) {} return null; } final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static String bytesToHex (byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for (int j = 0; j < bytes.length; ++j) { int v = bytes[j] & 0xff; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0f]; } return new String (hexChars); } final private java.util.Map dataCache = new java.util.HashMap(); synchronized private final File getDataCacheFile (byte[] data) { try { java.security.MessageDigest digest = java.security.MessageDigest.getInstance ("MD5"); digest.update (data); String key = bytesToHex (digest.digest()); if (dataCache.containsKey (key)) return (File) dataCache.get (key); File f = new File (this.getCacheDir(), "bindata_" + key); f.delete(); FileOutputStream os = new FileOutputStream (f); os.write (data, 0, data.length); dataCache.put (key, f); return f; } catch (Throwable e) {} return null; } private final void clearDataCache() { java.util.Iterator it = dataCache.values().iterator(); while (it.hasNext()) { File f = (File) it.next(); f.delete(); } } public final Typeface getTypeFaceFromByteArray (byte[] data) { try { File f = getDataCacheFile (data); if (f != null) return Typeface.createFromFile (f); } catch (Exception e) { Log.e ("JUCE", e.toString()); } return null; } public final int getAndroidSDKVersion() { return android.os.Build.VERSION.SDK_INT; } public final String audioManagerGetProperty (String property) { Object obj = getSystemService (AUDIO_SERVICE); if (obj == null) return null; java.lang.reflect.Method method; try { method = obj.getClass().getMethod ("getProperty", String.class); } catch (SecurityException e) { return null; } catch (NoSuchMethodException e) { return null; } if (method == null) return null; try { return (String) method.invoke (obj, property); } catch (java.lang.IllegalArgumentException e) { } catch (java.lang.IllegalAccessException e) { } catch (java.lang.reflect.InvocationTargetException e) { } return null; } public final int setCurrentThreadPriority (int priority) { android.os.Process.setThreadPriority (android.os.Process.myTid(), priority); return android.os.Process.getThreadPriority (android.os.Process.myTid()); } public final boolean hasSystemFeature (String property) { return getPackageManager().hasSystemFeature (property); } private static class JuceThread extends Thread { public JuceThread (long host) { _this = host; } public void run() { runThread(_this); } private native void runThread (long host); private long _this; } public final Thread createNewThread(long host) { return new JuceThread(host); } } JUCE-4.1.0/examples/Demo/Builds/Linux/000077500000000000000000000000001263452017400172715ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/Linux/Makefile000066400000000000000000000347251263452017400207440ustar00rootroot00000000000000# Automatically generated makefile, created by the Introjucer # Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project! # (this disables dependency generation if multiple architectures are set) DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) ifndef CONFIG CONFIG=Debug endif ifeq ($(CONFIG),Debug) BINDIR := build LIBDIR := build OBJDIR := build/intermediate/Debug OUTDIR := build ifeq ($(TARGET_ARCH),) TARGET_ARCH := -march=native endif CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 CXXFLAGS += $(CFLAGS) -std=c++11 LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt TARGET := JuceDemo BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif ifeq ($(CONFIG),Release) BINDIR := build LIBDIR := build OBJDIR := build/intermediate/Release OUTDIR := build ifeq ($(TARGET_ARCH),) TARGET_ARCH := -march=native endif CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.0.0" -D "JUCE_APP_VERSION_HEX=0x30000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 CXXFLAGS += $(CFLAGS) -std=c++11 LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt TARGET := JuceDemo BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif OBJECTS := \ $(OBJDIR)/Main_90ebc5c2.o \ $(OBJDIR)/MainWindow_499ac812.o \ $(OBJDIR)/IntroScreen_73347059.o \ $(OBJDIR)/AnimationDemo_9fc7e4e9.o \ $(OBJDIR)/AudioLatencyDemo_78d49233.o \ $(OBJDIR)/AudioPlaybackDemo_ea12adf6.o \ $(OBJDIR)/AudioRecordingDemo_435914e6.o \ $(OBJDIR)/AudioSettingsDemo_6d710bfe.o \ $(OBJDIR)/AudioSynthesiserDemo_1b3666f6.o \ $(OBJDIR)/Box2DDemo_51053c42.o \ $(OBJDIR)/CameraDemo_a10f7e50.o \ $(OBJDIR)/ChildProcessDemo_2c2b949e.o \ $(OBJDIR)/CodeEditorDemo_d5c17a65.o \ $(OBJDIR)/ComponentTransformsDemo_377f7889.o \ $(OBJDIR)/CryptographyDemo_232d46d7.o \ $(OBJDIR)/DialogsDemo_19d585d0.o \ $(OBJDIR)/FontsDemo_6da1e5e9.o \ $(OBJDIR)/GraphicsDemo_85142ef6.o \ $(OBJDIR)/ImagesDemo_ecf13aa3.o \ $(OBJDIR)/JavaScript_d6e42eb5.o \ $(OBJDIR)/KeyMappingsDemo_cf05c709.o \ $(OBJDIR)/LiveConstantDemo_e3b18a9b.o \ $(OBJDIR)/LookAndFeelDemo_25c558a3.o \ $(OBJDIR)/MDIDemo_c476c2d7.o \ $(OBJDIR)/MidiDemo_75ebc30c.o \ $(OBJDIR)/MultithreadingDemo_ff566eaa.o \ $(OBJDIR)/MultiTouch_595f3a2e.o \ $(OBJDIR)/NetworkingDemo_fbd1b19f.o \ $(OBJDIR)/OpenGLDemo_fdac55da.o \ $(OBJDIR)/OpenGLDemo2D_48eeadec.o \ $(OBJDIR)/PropertiesDemo_8ff1a8de.o \ $(OBJDIR)/SystemInfoDemo_984acd28.o \ $(OBJDIR)/TimersAndEventsDemo_f2656547.o \ $(OBJDIR)/UnitTestsDemo_5c21762.o \ $(OBJDIR)/ValueTreesDemo_9657d84f.o \ $(OBJDIR)/VideoDemo_b55a1560.o \ $(OBJDIR)/WebBrowserDemo_3df2dbdf.o \ $(OBJDIR)/WidgetsDemo_fb0454.o \ $(OBJDIR)/WindowsDemo_e8cfa428.o \ $(OBJDIR)/XMLandJSONDemo_5bc88df3.o \ $(OBJDIR)/BinaryData_ce4232d4.o \ $(OBJDIR)/juce_audio_basics_399a455e.o \ $(OBJDIR)/juce_audio_devices_c1c9ba9c.o \ $(OBJDIR)/juce_audio_formats_f04b043c.o \ $(OBJDIR)/juce_audio_processors_eb9ae116.o \ $(OBJDIR)/juce_audio_utils_cf18005c.o \ $(OBJDIR)/juce_box2d_7c8de7fc.o \ $(OBJDIR)/juce_core_1ee54a40.o \ $(OBJDIR)/juce_cryptography_3b1f489a.o \ $(OBJDIR)/juce_data_structures_84790dfc.o \ $(OBJDIR)/juce_events_584896b4.o \ $(OBJDIR)/juce_graphics_f9afc18.o \ $(OBJDIR)/juce_gui_basics_90929794.o \ $(OBJDIR)/juce_gui_extra_b81d9e1c.o \ $(OBJDIR)/juce_opengl_1890bee0.o \ $(OBJDIR)/juce_video_86a19d3c.o \ .PHONY: clean $(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES) @echo Linking JuceDemo -@mkdir -p $(BINDIR) -@mkdir -p $(LIBDIR) -@mkdir -p $(OUTDIR) @$(BLDCMD) clean: @echo Cleaning JuceDemo @$(CLEANCMD) strip: @echo Stripping JuceDemo -@strip --strip-unneeded $(OUTDIR)/$(TARGET) $(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Main.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/MainWindow_499ac812.o: ../../Source/MainWindow.cpp -@mkdir -p $(OBJDIR) @echo "Compiling MainWindow.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/IntroScreen_73347059.o: ../../Source/IntroScreen.cpp -@mkdir -p $(OBJDIR) @echo "Compiling IntroScreen.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/AnimationDemo_9fc7e4e9.o: ../../Source/Demos/AnimationDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling AnimationDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/AudioLatencyDemo_78d49233.o: ../../Source/Demos/AudioLatencyDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling AudioLatencyDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/AudioPlaybackDemo_ea12adf6.o: ../../Source/Demos/AudioPlaybackDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling AudioPlaybackDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/AudioRecordingDemo_435914e6.o: ../../Source/Demos/AudioRecordingDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling AudioRecordingDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/AudioSettingsDemo_6d710bfe.o: ../../Source/Demos/AudioSettingsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling AudioSettingsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/AudioSynthesiserDemo_1b3666f6.o: ../../Source/Demos/AudioSynthesiserDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling AudioSynthesiserDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/Box2DDemo_51053c42.o: ../../Source/Demos/Box2DDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Box2DDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/CameraDemo_a10f7e50.o: ../../Source/Demos/CameraDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling CameraDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/ChildProcessDemo_2c2b949e.o: ../../Source/Demos/ChildProcessDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling ChildProcessDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/CodeEditorDemo_d5c17a65.o: ../../Source/Demos/CodeEditorDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling CodeEditorDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/ComponentTransformsDemo_377f7889.o: ../../Source/Demos/ComponentTransformsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling ComponentTransformsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/CryptographyDemo_232d46d7.o: ../../Source/Demos/CryptographyDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling CryptographyDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/DialogsDemo_19d585d0.o: ../../Source/Demos/DialogsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling DialogsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/FontsDemo_6da1e5e9.o: ../../Source/Demos/FontsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling FontsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/GraphicsDemo_85142ef6.o: ../../Source/Demos/GraphicsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling GraphicsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/ImagesDemo_ecf13aa3.o: ../../Source/Demos/ImagesDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling ImagesDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/JavaScript_d6e42eb5.o: ../../Source/Demos/JavaScript.cpp -@mkdir -p $(OBJDIR) @echo "Compiling JavaScript.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/KeyMappingsDemo_cf05c709.o: ../../Source/Demos/KeyMappingsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling KeyMappingsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/LiveConstantDemo_e3b18a9b.o: ../../Source/Demos/LiveConstantDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling LiveConstantDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/LookAndFeelDemo_25c558a3.o: ../../Source/Demos/LookAndFeelDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling LookAndFeelDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/MDIDemo_c476c2d7.o: ../../Source/Demos/MDIDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling MDIDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/MidiDemo_75ebc30c.o: ../../Source/Demos/MidiDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling MidiDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/MultithreadingDemo_ff566eaa.o: ../../Source/Demos/MultithreadingDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling MultithreadingDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/MultiTouch_595f3a2e.o: ../../Source/Demos/MultiTouch.cpp -@mkdir -p $(OBJDIR) @echo "Compiling MultiTouch.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/NetworkingDemo_fbd1b19f.o: ../../Source/Demos/NetworkingDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling NetworkingDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/OpenGLDemo_fdac55da.o: ../../Source/Demos/OpenGLDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling OpenGLDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/OpenGLDemo2D_48eeadec.o: ../../Source/Demos/OpenGLDemo2D.cpp -@mkdir -p $(OBJDIR) @echo "Compiling OpenGLDemo2D.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/PropertiesDemo_8ff1a8de.o: ../../Source/Demos/PropertiesDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling PropertiesDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/SystemInfoDemo_984acd28.o: ../../Source/Demos/SystemInfoDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling SystemInfoDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/TimersAndEventsDemo_f2656547.o: ../../Source/Demos/TimersAndEventsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling TimersAndEventsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/UnitTestsDemo_5c21762.o: ../../Source/Demos/UnitTestsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling UnitTestsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/ValueTreesDemo_9657d84f.o: ../../Source/Demos/ValueTreesDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling ValueTreesDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/VideoDemo_b55a1560.o: ../../Source/Demos/VideoDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling VideoDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/WebBrowserDemo_3df2dbdf.o: ../../Source/Demos/WebBrowserDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling WebBrowserDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/WidgetsDemo_fb0454.o: ../../Source/Demos/WidgetsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling WidgetsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/WindowsDemo_e8cfa428.o: ../../Source/Demos/WindowsDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling WindowsDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/XMLandJSONDemo_5bc88df3.o: ../../Source/Demos/XMLandJSONDemo.cpp -@mkdir -p $(OBJDIR) @echo "Compiling XMLandJSONDemo.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp -@mkdir -p $(OBJDIR) @echo "Compiling BinaryData.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_basics_399a455e.o: ../../../../modules/juce_audio_basics/juce_audio_basics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_basics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_devices_c1c9ba9c.o: ../../../../modules/juce_audio_devices/juce_audio_devices.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_devices.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_formats_f04b043c.o: ../../../../modules/juce_audio_formats/juce_audio_formats.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_formats.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_processors_eb9ae116.o: ../../../../modules/juce_audio_processors/juce_audio_processors.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_processors.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_utils_cf18005c.o: ../../../../modules/juce_audio_utils/juce_audio_utils.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_utils.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_box2d_7c8de7fc.o: ../../../../modules/juce_box2d/juce_box2d.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_box2d.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_core_1ee54a40.o: ../../../../modules/juce_core/juce_core.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_core.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_cryptography_3b1f489a.o: ../../../../modules/juce_cryptography/juce_cryptography.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_cryptography.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_data_structures_84790dfc.o: ../../../../modules/juce_data_structures/juce_data_structures.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_data_structures.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_events_584896b4.o: ../../../../modules/juce_events/juce_events.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_events.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_graphics_f9afc18.o: ../../../../modules/juce_graphics/juce_graphics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_graphics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_gui_basics_90929794.o: ../../../../modules/juce_gui_basics/juce_gui_basics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_gui_basics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_gui_extra_b81d9e1c.o: ../../../../modules/juce_gui_extra/juce_gui_extra.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_gui_extra.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_opengl_1890bee0.o: ../../../../modules/juce_opengl/juce_opengl.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_opengl.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_video_86a19d3c.o: ../../../../modules/juce_video/juce_video.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_video.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -include $(OBJECTS:%.o=%.d) JUCE-4.1.0/examples/Demo/Builds/MacOSX/000077500000000000000000000000001263452017400172645ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/MacOSX/Icon.icns000066400000000000000000001274441263452017400210460ustar00rootroot00000000000000icns$ic09PNG  IHDRxsBIT|d IDATxwř7_uM9,rI$$L0Ɓ68ml;ǝu6H"sZm?fA|?YՏVz B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!$ kxϾ @`1!A !Y`ҥQwA#_So;].B\JAis^,_2 rڝKdPd0y& ̌X&c<8V ) > GǠ`7*>jĞ={B%d"9%֪MyRԀT ]vҫT@J|RHkbc)1)$L@1N ~lHhhX? 7F}1؊!$M( $U.)/ŭy5w1]9 WPQjSHI]"6K !$S2H 0H.MC扱#Qcо}Ȯw2P@fWyQe~hrWçkvթ =sS6Ȩ=@єX V!xdDOF6|(yhcqtNH.5* ::|E 3 kH.'U{F+z)%iDCرЎ ocZBD !gguqKɴƂf Op򠜚c?$8 A(Z앂Fh$zpXx-v?wdtKHW讜V4haaוoSm !hO=)"c#}upC;VB2%rNAG%=Eˊj\E)2~FLaP5۱7FG7>W8-!*0$JȔW䪪Yzze] =EV͡2n>>`L?>g#/ >zuG^ކX#B$JT- t [9hUagg:M40+ >v4ȣ7K G7c"1J޲|N\UsWT6U:7-lCds#զ ;3}0ؑtHHQ@r}e܆%礼Vxp]KNQ'WTh߉m#Op <6q|b  S7tnj\-qv@fӻ|rF 9&h߉#;xMw|X*+/]= fdO o {n{ï0hv`/|v>v{=T@Hd[W^rNuEue6\ޗ,&> S&TAa c]a^ ! X\]SBJψ7y쵟cEe*$C{{=cw;6B[P2%4.)ߺ򺚹% &W!=i8Un 6STp'lASlP ~}V)% ũd:䈊 CD0<0!dN h!l_!È0Laƒ)_K b2iC)P }lG~v|ݡ!9S+z0`D9d-K) %RJ(LMqy#G#GEEȷc˃Kz&'( lN dN`Lƨ>#'1HtB8t)b+LT(LU6=6ʼn;6BN|ȔT 0ª q9*ϊ%SO\מUESug/D%J+pU,E^[~MV7F0@8Nd"'0!lLJ UѠ0, nUʠ9UpCDo-}y3"S6W`*LR˿/{;<9KQAz\(pT911±DƢCd{2{bPj #G›v=vGЯi;!4 "SQ~m~AW7,/7f;7%P  zz[PkB yxzT!sc8:&v^ Ÿ> CPUAUES`s* nMT4H2B}bȔS]TռƖsnj3q_Hsr y"{jQkE}^;;K05ݡ1}Cqpl'm=#0TaDx֑?l}2Bv_oi\Rn7Bfۗ0 SP<{*h@SAMȷ;L 8:۱kU߅I< [$fSRyim=D I]=ai61<#zsa B m^kTЍ^Q(Nw Db&~'bLlP- (;+M8@z"S %$e̸ᶪ^FM:€) 0((p> E3R0 Z0 0ѭ6vnQ\ؠ)']fW0gW~T$]lbFѵ1Noa) Bh*R0 ]hF0y'vcFlzG1CP 6ŞdT"пwW[d$M3q5h\RzPFizҌV4^4ӊ1MQbFl| l';'/%*_z,-G \]6]m7,*_H]D *G/@s~7+vdb/^؀M^Dy6ŞL!:}jwo]Z~_u%tvWL~◐0x\r8V8Jn͛XHv7/Ǧgp"tB GZv\*fz~g!bJجw7]7]9}4a( yY ӊHi$Dy;_ƓkmEF6 3g "JHB-]𦶻|K0O>SO%Jav鹨,2u Fl[;arv5LaTCtOo) JH\Jڹ!uC8T' l%z?I ]#iUl=e1(*R1??~$e'9rvZ㣝~TR:La@o`旯DC^GʮO F|Z<7:Rz@+Pm <{{][$'P@XE{݅5^=h2@ WbNnd]Dy? v CDaWPRH֠Ж?'}wDSra( ov_"%HH<h’K[vՙk4qDpb$dp2:09|P|ePP-jc;b?Gi.0Y Y ly7nƺ+O#h:N) vOnѵI(j4[g^EͥI):sr5:f'&ȱG ƎC BF $ׁSGuLCɯa+)`(̾0>>Ҙ@U^k P`<0{W)W%Q .c`cZD`WP6C|`_/J%M- L[o7Kr"VاXs*/CC~gR*241z| AQ@J7 (* >&$סJU)ѭw}|U c1UR3j%wo=To## #}pA<}HY"`wk ^OݿNI֡OvٵLan3"?)"< ͋YeX^uj|If2I# 1z bp/'$70ѫO7 {p-GGt< XMQ2HiRƾ?6/G o=fV(:,>yL†caݱ>ꀖD@Q G^}HIV~qnNqo>a&> (z0d9έUƤ]/Ydtb 0O:[7#4@|OMBF'`kX ;'6+v O%F,)Pl`B(ymP Z%ɍ# ?d"ptF OK'_=]?JH֠mٝ]vYgHSlî80d ί^lju'<|p콽LS5 _גY:y1D6 Poܟ,+€`(ZPCk!#x}Xw~ EN¡T"/ {A)vA`ҏu|)oquc zaUhˎwrf6^1~҈}WTdGIB!}-Q!X_&&4 Q h&Pud, G?`0X9p⅟Ixr"i^UUyo\h- jEnҮe 1tWa}|`Dx@l)'3 0w}̙p-w< ;-Jsr@i(ZhEPBkf!yBC'ETDTH-ZQln ֟{bb+0e]$KyGa;;.$'qiBQTypA[v^Rl"nG^yzP03N9}pL[8b|BߊlX2 0] Z`n NfmÃg`WWiwk{oIHL16\>pd񕐈!88 Su9;)J FiDT[l;סj*'̷'c pU@τVjAwƮ ܿv$u렢1;=~ջI8Y|#gy3ֺv#bByya^z;˓rD0> 3{ PnL#P- ! 61?V+ ɣ`] xԒP :iD]D`8N9 pxl8gɵ_zӱ̓;4$Esnk>o~t"9iF&:z摗`}V(=&דzE㢸^#M0ș9me@u@@+] d "`990Ik9Tplޏn 5u_"K2Ʀdo]#l}+S?.omJ˯/>?"쏠 V_̗(a@ͯV=3/ ؃Uo)0L%2sY'1PP\ey1x!>(L!% K(nORM~Wz{M7)\8Qɱ|9tNgoEa7 O}W0mxLsĖsy?0WV7?/om'cbɀ0!&v<fHsKw(vc^ x4@ht1W\m>|!.@2%9'} i/@Qm mwbU5pg@;}}<; 1~"?\˾*~K}.'Ŷ>N%ŒEanyQA0[^lU 1 1!)vֶW~1w2Bu9yi S1B֯ܝ:wE;O`5ێ苿@daz0ñ\_;&`Nt^}rEo/)*We5Rxmy]*߁Q}bHPƼ K8}Olpv䐥km?PukcO!⊋`Kge0=ȳ?D_6#$LQ CG`|i@Tw& ]AswBJaj@X*ϩ8yh4bHН2y|kugZºO$E~c<_7/A19\7J !a=Pܕ`'-Q9U7zPZuZogG{` UtV<:n? D]^+y,, %瘿i,FƮ~  %X9<̾!PUi+avr88{eoj7s+!ݖ NR,Vt%ߘg_WY:8z n JUD| @0Ӝi}5(H x|e}k!%NՍ*wl &Qh .hS0pk>lF')E @ym=S2  [u73 "0v>lɓ N%BL(ڴ67c82*S, 3Y \_*!v`"t7BKc?tngK]D0\}j}qM0CxwoN4LJ?ZxS^,0\8Tvn!tK_QyuKz;HQ'IGw\oOEyvՁnŚ[rxy%#ğ(Jҋ)5a%SzR -=80)6X<yڥO}dxdԒI5K³{Q蘕~a3fufX8{yK>B @f80|Oi~g)f,Ǹ1cjYNaxƅv=:a$.J=}}K/'+#""XTq!>o!D_>Ldc%J2dS!8V( (Β`W ,V#/CQ^ S [WV\_>ut% Uk\WXQh l.o@j}C?m_U)-F @fb aלB6Lѭ/E0ek"m#[-$%rz1AjFfjE*Yfٸg<*Omˆm}A @f0cԼ֔[Q,eǡ]͒AR-,Rm|1hI2P:.^=ZUEKL;HDd}ǐ'ly@O*Q!ٿbU(ʔ8P] ScHXFXJn^Şb{xO%<(%窺GEe~Q7ݙ Ŀ<2TPR1uP<(1 5-EZ [C/"bZKAƶ V9m6M|Pb%J2̴5-xo)}´b{}ZoZVvA}M8-%gr/?C֥:tgaf F, 03xՒA%( ӯ__ S:E ~<"g)nzX. IDAT-mI}}?m`67-%i4F`=> 5=%Ev?fDO@!S(.WUXG TbJ2Dsnͪ?lXЉ|5fK|;|p3Vii<2x 1PT0O(mHe J!b{tYr @sެ9U[?g B%  t;:,tZ1*]7w݅|߂(BdwG٩/(EW :ܩSa sT6$%M];@ @uOtXRQpC۝ |kCoAz?FOT@&W6@qB&](`sM2.PPQ7j L'J'&.MpibM͸FKގ1X'?;(c,v1~RCc~7 =o(̨S\M+C @L~;:TX7XVڂߚ#y`ZWY 71`jl PZ8zI95 $@agFLնJ@P^_ CZP<님YԒ ۆУ_b7$y(a;"}0PۓzEE?}#l@ao7(ڷ$mL1sXUu+7lc0 ~s7 {-@b ) 9̓!CGMOj ƌ%8܏{-Kzs=~sY&9CPՋLϟ.L!ឯjI!nP7l@ 0Em|.J ' ;z19c;,Į@U0?ނ0 E*{ zV~EaEVtM𴯡<B~ ї*L)a%Zaz`!alI S?wзѢP[ g5^sjhVឯؙCCbU߄ L.A ԣh4CЊf'FGa z ƒ55I!P9ЈofB%%IV)Yql-V6h.G}6;^*:LML ~b|/d\ ]0vlI LEã }FX*y$Qi)<~mfĊ'g/ LgDal{BM%SS!Ba+]Ww$?x;JXmXTzɝckGZ'y='{Yڞ A4wC=ɟ?-0U-~ٌ)]`ԢIV[a/ %%H 1g'=.Rr Us%ɪ{YgzLxMN0?C@p L@??[~ 7A!X0\ywuo^U^E!P>񉮋?7+CɿOkwُ@ݛ˭njA &o9"YMiWkd,ɟVZ[Gh?!Eu1;%f3$9: W\9iMtJ,T?lҏDpɤL/}Ov -?>|5!$(<]aYեNJhX\>i B#(HQr=&apkWPX}; (/!1 |t[J۱|BDc.꯴ 4JQ E_kV'Ķ"{1n J<3|*BOق{8PwW7u)[5Nh_U7\kQxS%bϽ[+Kh߰Ċ꫰jBh%)L(yHwO 7 B&P7%3±]ǺJpWzߘL/l1t94bQdQ-P|eH}1!$0BMw#0P@%|}EEEy8%Pp漷UU[0OAɐ憭nd/BHQ(yP ;,|V^@ xήewPD Yo2#fBrYt~.c]u\]; 0`Y(Nc^y 'zDݼڒ˩Y3\) +H&l]g [Ǵ5F8ݡB, 4\he;1׷݁f^30Qp.Ju9f4N0pMG\5+wVRO7!$ᇣ=ۥyϣQ 3&ERRµS?0ĜE κVH beXX~E% SZrVZ $[ Ppv:ѼRw)0@.+uu-0)a)jvUŒx{"N(,.9U? bF„ꯇnA|_>u` ga /B+hHU +On0t+[2dLf+?3N-SpoFYZ $[{-_.U_%\hL̽:k"MEu|"#E<vŎvѥL@I!uO5ruGА5Y%lOw|(v|gP"Mq$tM)˲RJB+d',{?SuퟂזS5ӊ_, /Psno/ _e,M7/B2QLTxpmmLS`t\ǴYmax9777/"VF^j4962t9Ϋ"z)j7Ȟ[# 59pmp:vlB(8 .Wrxm8ĬFG}ǻk8j}E6I^3B/Yd ZQ%]{ԢJb8U|l;^)j haD'+~0K @L^r(u)vKA,=h`ڕut`l fٝj\Rv@_ bn鹸f #و_}T[fy7 `Ğ 'Z <oDGpˈ?l1 AWL氶g/@/? U)ꗀ)ZIG^Ϧ9r%v-^3,BGU jSq_cw_sT'sE9=u0y.ݚؘ[l( H$Nџ#4->cMLcvQ!ð1T0myyjO;L3Ũ0F9``.){Rږ!^helx'c`6j`."[?>r²ؘv2IC 4}`, 40ŋhLRZ{?{ja$p^4sE+- -kQ`>h-K?lqnϵ02 C{?n@Il|0ln4 P<ů5 $$I0ŋD`Ahv^[>m8WP[X\*rCEV3qWv 3D“)L8Aqzvdz;R2{`U<05W"b٨-ӰjuBaޫίɷKr @E󊯋ݯ5lNmY\J{@Z m`WƘ<X:%uAza oe(>Ґq#f VȺ>xfC>0@?g1>eczl>\AɁ8_as?\SbY`Y`J%3o!og)M9KF#b|0czbw%Lʅj;B߇0X6̒X"P omeAe)3/ Euף,ӿAtz0Dz1ƚ@HRL?F}Vwy&WΞ6Q9EUK, *M[<~g0["Z aqEd؃G-g-Z;"S\m;[aEd-]5W!*@l[dUd7- DP)麢F$$4E,j+8FWx V~juM DwDx'GLWKo@g֦pbzquyAݵ(teaK?gYP&gEeNǬ4eLß?C *B#?X`/ƹWB瑸^Wm֛- (l0]b )!0 Y- gy Tv\ߏد,rYjTx`#7&VVT<˂ 9UǷ$#)^MH#Itv!o7"c nd͒x& -|$K&`v) 4t 5Ŏ5׀%%ږ[$ s ?bw.)忔NՃ5W[?>o?MJH{mU'AEd'27U]XxGhBN=TP.o\VxEDsJAђx{ǜ*{kI$ӟZ:tnU!fFt>KS5WHp _uzomNS @u{lq`xŋД*込vм3*>ho1t9=uݻ-3dȔpz^ >D~ch Sq~u\4͞viyr&hoU%x!8ʢ)0؏)rnHjcC7=*7Z/͒`2@$Ze2#qV!,dZ{_̪#W~^HbxTR#2KKFSs`(* N_ v  )%`S E_X2ذRqT3.$4j~iWEE RWԾے`( +ާZ<_k(ZkI,y|W\;d%O3)Mj /m Ѻ}@v7 &n^ɵf4R`ij0 >tRchw*Ts= 3Œ旯D<@%|%Ζ˫WXLduд$p^?S6`E< VG->EvPo aZ ^%ˡ sSmUM&ٜwTs! ,(6%iF|H07iw<^1zft%-./"7eUN/n$4~^x(tcn5 "[8LAi O HJHO$tDoh:tg#O-4h]Y~%A&mUܠ(ًf,A(@GѾ$0d.g4Nj1'>K[\~8,%ס Y-+Wij/!PXX~%Dw= &0Ӓd&@UgR%D9@K䕺z֜kI0) @˲ET/3x=OY2IFșj' %K@82# KJ.GӥC6%%s쯐bL+/MߺlwZ$@$./-~LP,Gkt; S|~̄IZWT-(ڋf"O8._⿔Kb0$siO@dY%!24-)ϚY4,-,?Y%,#_ !;IR.c=6眠.le<5uwȊْ+]bQϥm !A>NiFY?1;L}/+ |(_k`SWjo>rF@V$KJfJ\.w#YT61o 'd%PX|[jg]jI I @%񮸫LCoBKWg @˜FyH>X=*{ -@7Ɇ@Ќ S(uU1? |8/i9N9Y @Ti@*=t#9T gBg5ʹ% d4+(tq#?:ڋf&^uHo/ }VjЃOX2BJ|[56/*$|V Uo ӋYDxZ@͚S̩7 b+ Y6.Id7?1f nJxn\0E|{.L8$zF8S*јߑp Ɖ=0l E'; $?MY@0ɡV SƱ{gUtV'HetP\./ΉgZ á#mdte$ sZ1 Fisg.%`%De{(9z}FdYW٘-b N|C_H!ɗ$%Bmƀ e,KdK֮-3}z_k?F2#ɋVwu999o}y߮o D}u62a(_D79破a>^œZ_ m0􆅕W7q.iw t.u\>qD/WgE)P,>ۿZaV4@Xb]ŶE Կpބ%,KjKW^U&DzE(oձ("x'sDEpΟU cݐq pqf1ִ]X~EEfmpQ5΋_TW,d6a>>66\/ %0c rлg߮T^"2oU0 Ϳ9} J-N,a>h-t\Eg+av:Cv(ȓp-e:e,}CͿaL"66\F?Kи*|Uݲ:];[{;M"X6.O52#Ye:\x%TTOe eE$IǓ PS?g 65:h%#M~:u;,O?xuod`XvEW5y0Qkª P<+=O'5Yr,'ͣ8^#F6|nz=Iyi[l :"k59''BBxEߗr۟(foqCe6…!д2|i3xOt!ؼ*;ebm (0t4^Nr/Xb_ (PXqQXܺUU89? FjD@D#OHA"+- BS(= ,zEHs`kKUY05aEd! op1PrDfNY6z_20#O `Ed!д.BhzFKBDzjPphX6R;R:<͟ cLœsֺa8t -k Jkk^_wiXq">qDehy6%ˌ(9^iut|][68.B"+Ѷa#0kנOJN .ڐ۟pa(vLgx@ (+!O ka-R`KXiu芬s\Cq0^=(.d ,3'܆)0 ݎ u )жJ;0@q P.ޗKsʺ `0Y@ vW97呵ٱ(`L_. D7'8Œ:KeX6֯wTҸ2|.XU[aLLpn:@vӳ֭i'ʀ:Q, AP C4|uNm"$м1i3HS|Xq.cEY4;rE@n0x2́v4[l R5Z/ЭNum뵰@m.5!Q,N%<'* SD:# #Ci к>r1m MviNUtO.X*@7'2f`ꊬh]W|`$#6]j ᕶLR0Ǩ?Cd`IroYEFӹ=#`]Gp="$_h+*!8~cvV&N-7tĎfZnΟ(!L_ ڛ X-oX xcBݿF6:r«`LAECxc" ZpVԏR`ʂ!M6K @'mJmk'Oęp EG!j́v[ImtT$%Pz@4:.!^ayhi䌣5q0`. D)$=>Dՠ2RkFX+= ` #jC}|rH@3"Jwz" q?K0fퟐ/'!yhQE0(lWX"k*#M+_; o 4J$Aq fl ,J%7-JyOn Ƽeo-cDjGH:тEX:~QLΐ $nopa`ӎWjÎMkwsH@ۺhqz`Y&}PL V&fIo/OjlPYn peRqSm݃Xoufr8=h7] U%o=aEL]v !hsfb ¤S@7HY8hZqX+@ T~ ΎRq ɧQB `3> XNq>W"gQ밽. vAN+)OT7pTk_ @ׄ(ည v WQHLS(ةtyI.JEV02`zO D:aA5 0!RQt{E 'PN䒠Q>L4AiiE=c0ԎK #_Bk$-&Gn"0Q:^%R0AljSaưN ZPi,y )~D4g@nEhPJ/эP&}9*3aV;`ŧ+怊 })Y@ TCk`(P At@5@wDe`4uZf@ Q6T z!wq!,Jq jˊ{KxJ#`s~JVkMD큥+: \@HsHt! w"Z=l4 ]!j%RQPj+g A5"[j*%Fvp/%/ A ^'e5'^4Σl0tɉSCwC9-ܛOx! P}A9Q[%jVThgC kJrt %ԢΓ۟ - gKXZ@tyQ ;J)Np#~/ " @TZJP{_K+_ЂofP3a PT? ń KI] JG6E|Ox!rP57_+ˣ%+6fdTGϦKV6 [N󇡏C(V`r"1m'VځH;_TjG[h f6,˖+rOi~4#߁(f! D"(Cq@9D`,bAX)} F7hw4͚OkuTTDÖY6_qg4?>Y4~KP;!򩅄pW *AJPCԵ E[ʷiݞ4:?jRQ `ç3 ^7#wI'! s@o6D9F7Jr0?r#[aдM Wm󁫝Bo?W2 M`@E0Ecи&<ECM1uc0a 4.i9oS*@f?B( շoé+(QMAQ 5D+=)pJ|0c=ԎNjyo !WaAaA&٤bBeL+] ~䇰3U1ERͬ"&l pSw.AQp!XVlkY  00P "ږH% +pơAR~`1A`E)  j^8:ǧ+ Kz  XTԛ  lSI`Ȗ!2[4 b ˨`0+AY+qg 0u BΥސJ_R>AD1 tAzAIEO@1€n+" B& @TM1gw+S91+UԆX*urhmt%Hfea AÀ )4ԅ|Px~,a°`~˅n ^yR~]U F~^cd V*t@!AՔT [ #_4i'c >#ƺejq; X E'z*3c̉){rOoH j`h4(!Cp}9/,K`I&|tF,ALK .`.G<5q6t'Lˀa})E3*N67Ϊk9JXP4;5o݁w+pE!EU# B` g+{csiLgpٚ\܅ĝnav<%iv>'`!os}+0c Q9D/t)獦)hoA7YQY43}}a.NVa D8C.Y,y* isB`C ny LS|4m,B>'Z*]yehkA7H1)كE32P@>^sjWl !gH^~+_[8v%J`/#o\jJ&kW>@"~Mn,:\0S^1`EH&aJ&kH7n* +u6 "` Z$O Na>%=of` {iΑbU]E@nSc!Ց I8Ϳz7$ Hp dt{La>a?x.B 'GTSo 5h tɬec WR"lR].ĄUc\0GơGc⌓Da  My\sRIE`&LQ!k.>+bOC" 1LyL6̂9+TtAK2 0Ƒ32(J` Cz. Η#(@x"gJj8F1`$8a JuS15UJXӎ p@EwOzd)G`K7(@6B 'Y[eX6%({zz+7XW2*:7P`{(&\kQ^3'qEg_ zZ{z<>QLa.ci07"D%g[`FO!gdJBjV^FN„'Vę lp_n{=wnG 58i|COk jx/2!@$|[8m ˚PI@v.?b?..s/,[Ѻ"']tQAbRиL:.!1b~sƑ(Bك75G.B6nѳe/|ATD@T;fJ.Pr.6p9sqg&,,ygI=, PZ!L] ~xi^pIK,p0$a71T\T1k<3BJwd Jg;@}ܹ[:tI> pKP` i|a Sl}H'/fһre: (Bogsp#p-37sHK 0 3} `$dz#F1p\Sۿ”'@"e DC>dqi#i P1gfr 99^v0s>r8`jD8c܎_M 4wO`dQ68C1OW 00ӟ6p`:\D)m`: J. IDATaף~{?c <(tn \aHMF'@z&kg,'aXM P[) @m_8QJDU8$̰qLa O@zK}9S(#4 9ԕQ"{lMuaK*zLFJ7c?uqH F }+%vSb Y=-n%p=7řf/w*b.7i+(@|$K40+Q (b2m*@l8mf\xyC%uH>pu#"I7@UO20,1!=Cqs03q䌌TڕQTbqʹ\hDu@ЧJIP8ӹH3`/v\%*9S,c&?m ^׏83@@X@CďCVz+a09*@"H!c>`1&m4Hnws". @R9%,!0{"AO)6f@ N8.A] JS#@wijlθxDy`!x02zc zRON&z! s\3[YHyc%XuuL/jDH0zmʐύ&! O پ>;BΎ!נ]DK8sv[W&8<^r_HO Pt8&2〾/@Kr v X@k}Жs1UX /`/$)0`z0\zC *b0yq uX#(@vLn i[ `hr"$)6q $:.@]rM,)?DoƙHCF ,XČ3Do&% LcTILG/ɀK _qhvhQr?ms\eHMd'ҳıKv,+L|aZ` ՗EU=E"z0-Ɛ??KLu*|Ra ˢif:X Ln[vivJ%cufr΍2w:.B2\l${Xq Gox} 7 wmsF:J,B~ 2Sǐ5R%n190ݝxN]#xkLG9 EMu/;c+͂@iYh ~'l})  O^'a0)e2Hh.@?%qD XB`yCOj_M7JO ٣}T1mV'נ^4p]4EAWs0:uY0q.I03drXQ͙ q(;W8OǴhsD?̢Y>0QSGkI!Yw\khG3=#I]`6;/g y%5lXvF(+Qq>rsgP:xuΰ-x`8T^ !1 ZgTOz_>O]=k`?|\Q,:^eq_N bLK !xd7b(dc q\KxV$.W]S|8?rqzMJ_?;` j@Uoqs{`OrB /9.%<+`tV` ΍b(uq +/cC}ׂ35Ώ x4;PvOf*3|yCl YDs% |%]T4o@l,K>Cé^LeGlU4/q.i0xb,ݭJ艽 K8 ̀P(۟6OQtVApd%B?05wiEkXigG0xyBb 4_#OE k;c G@ULq4@;O@JI1-5QF84V?Nnzq.y)dfNڹиé^Ldmdeh𣏕ۿ8#JD^D: a.[3b2vN=U{9#3/8/s~ѝU1KӴ$}é>S[gfv\T|)-/0:*p`v4@oojWx9@n58m t(9[\e>B\*@b(IlSm40,)uWA=HOntK:XB.aMs`Xfc/ vDžп}Aٻ(y응39w &M;Z펁0VG:l=M@!T?dO|kb8s\H0Riٝ(Z^u2V{ۿv)B gYV?SOJ!ej@b8?04+@Qwq yOPD$dsF^OYrũm_8.LTqÁS[_oj$3` ?!3S:&p&)G^Ln +=LM<6??PJY*0mܘH=2Yu(m:PoB2,0GF_xi{0J)LTAz_у31g~`>:n_”#@c5gc`LeGp"~/ ɩ|'&v8.T_LXzh+\_H "n}_⸝"\Bo3IpfgW0oX/Ƈ3Ga0y 'GBx\m7S PU覅UQԇKc?UmӰ̞-#?v\H:~; UΉ'xP7((r͟XAnpKV7KY{n&2Pmd#>3򬄘YyFOݧ<+% E@nBP:0L ]-)cmV+8 cgLU ɩ3O)3Rj Wtu r sn:@tKVHYk,3c)b (cJ)TcOݡt~j\îɧ[Ώy|DgOT3D)h ce[^x9#c+dHfJJ1ejCOr\gKKRj 7[Ӕޒ fKGwCo#,KW7KɒxyY[)=}y%j&1c-hscH)6#wB*Rqumi" K>urzsI[#>>tSW8]f*yc yTJ-Hnh'px%\%pp UC>[WO@Z=1~(HYԢt!_SDpF:'tycZ-/pv}lI='UlZ@oۙ >%3c:7*)rؿDJ:1p,\|6Z@2SiT=>QlL #'mlZ6nz۟R>J進cXm !lX e8?hgy[SA^O<=~g+4✔b~(m-AgjorStbm+ό0E f{vRLC[&ŋv"fCV" y/,z9֠%J'1L Mat?:s/o0CߔRL NvMeH )~&(+-.q۟6|~"gs6p;_nm+Gb,}'SajB ܪ̜T&c1):D>ALnF)M +JR׿I}~%hj@ѧoPow5#{ݱ5@?ۂROwA۴aO8gJG \.mG@z*Cj*?~cwK+Ԍ?Yw*S1G~D>K3HnbXP:@.E†ho3o,ӏ{*=bPS}{lz4%p 9o"^5 O,1ʑh^b@KAk6I[ɡ{7`6= =~ۤjJm~y m'9$n^i5-= f 3CI)y}&=ڦ|Ny)h_MfYq[,ti 4pVik>1t7xg 9xH+#Ԝ ||`!0֑S߇Ѷp7^<ՏDpt@XB`<=!ׂ =u"1 QφM=<+A3q)&D>{p{tOT}ԅB(VG5!La˲< 5)|Yq U㉡K+(d쀏QB~MuvH[NtP0{fOH+CԪ8u ~ޮA84R S0M%?A.n7 :=JVD@Ѵp43ꝍ!t<6C0fsc`פAjV)`(Zy<2}iimZX۽O D `X/OMU?7uW-pgCO̝L>kW88 vI)gu bu۟D-q1W`n"gKI<9t4^qblRGi/EMc'tKΆͣu~OZ&\_D zDE@0q&hӹQLy-CAiEyݏmyyQ-hsR c yǶH|ϯBd7#}?Q3J؅t@qFy360ŒŴw߉K+ʣԼw}`C>%'A0#ۿzK3nVWU:7\ԉ_CH4B*zyXvBZQeIO3c-hLa*b<2pxK1U@%(.jNY 7<6c\aHG_7a7Q2ij;'ĉ!i5~mN^۟ a}~S5 f?7{_XÑ-#JĥaK}v|!@K`yO| eEo]۟ ܥ^eI<}NAc?yx総!(d3sqTJ6*iZ ܈j9Wc8Xū=*m~>`޻?:36XR 9?/6SxlG!  (۟vp:0Z냸~v}"gdgP0v đXYRv~Pfq SۤU ҍ@ ",u)Pi p_j%l^x v9zCq'AZQU’=fPB;L?+( > )m,i't@Envc;:_Xa?{G4n @c9s/d߀0?9yŘM@'oP逢aaMG=X'?mOC xq|Ƿ$*aI usFn,Pfۥ\Δe$?Ax"Ff@4/].1w98TOI,jX`h|CC_^xfvH _A]7O.%N~._Dq} Sl>`T?'[d7cCv xty}#x} X.\=߁O9P}0qXOnLn*)*8w}*KZ('܇̺]O9D ?nyx/ BuG 5 mR3,vM>H'Gyr>UK]ScwNU@P aS=ʀnDwoHe-/D\Ol^8 (Ji._\ښ0߂U}p#3_(*d x=v[0Z[SۯH% ErDRt@k}E Wi!WD'/?/LC-cGRbiU ?8wNNT!^'n#{"Zhlɂ7֣%?AT!g ~PI[:tc09 Vb!~A%l{ -`t=~:Ҫy혪C#+m~yheWt?j/V|[˂~DNW@BW%,n2,4jљ <1B ^¯p& 9;׵N@MX%0A7-pڴ S`e[zné^|`W:\a0#"b';/xs*`8?MMW/_w%|W_ k.sl "L ,Bc| "?' Aml?m^@rh&8cXZt\E<&/K6-@S]_؉.D'w[)9z_1towNe֩˫jH,"5O2̭ysoE{G1fnln'4Zن qSB(uxQ_ MoЯ߳m~)RO.an.9cP8p} # xӦN5]yxxy9G-b@᧿x$Vuh8~7ܴ쒆s 1>ŏT>%Wvhm|T\` kՠQyN˰,*98u 9ԁ>L IDATgџ"ڿg 3~H,& i*pѿTTxa <7Ebe 2l;Oᜈt(!S)e'ø7pv?T쾳S}˫ H cGwo5ÂMo?#JcD%*EG?}!csW˫H{Sw;*LA*\Po.n6 ݂!5ʑF}J, :<K1Cjri= 7;vt,d__Ng%VsxR㩹ȟ)l|A5=Sc?W\87>g6 :*; K}߂4t?6r=.p~>U(ˠ#wavIϞ;wPo2?aLg.鼈fqgW[pfdf>u$΃'?s3'/ qb4}Rbup'{S*] A D| O&-=Ȼ8WUG쨣)3"+ɫ6!p~?1<6#@ Þ}ؓpOW1$$0w #ri㼠Ɓٝѯ=W W1@k؇p{|l?>p@Gn~I*oIC@zb R#xqi;rv0~%M ו5{j+~|p 9{hAG'%=%=s䑑G+q_$Tv~^ЎHk,!tue}3c_cF?„lp0ʹk y?5q$әuχ}iX0 zY 7,lj M+}Gv{=_%,(ٳP8 }`b()jU X?_pl8[ :S 5wH*l 2 jicW ?2ue@u3U~?'D$\`n~Es#^!l~YD@k:Q &~m} >pqudn7n;yfq_ŶoIϣ#K*X l=sNfD`yD/Ǻ]bkDdu+.4~-?CC8p#^.2;~𹛻k$pb{7syBBnsiN+ o\,BӪ~3Q4HLlj \K:\}3q{7]y~RBy@ LĻU?ZEg k8ۏe-;nZpUC h82 ˰i3H,=,!* ߾L;^ڊ;,aBer?_-(#{}+(8s؟}ØOl_ e}zƐOdhkS X:0鷮ſ\;>~x?@R1q8>CHxA 'y1B)-mFѹиgqY˛uXy:& ΂t%uH,R] o^]=5|/;P8,lsOM!#D< PfE%yi?ó;b4[%Tu4` e0wr1 %^@hࢶ./nw}OH;=_®ɧR#RǪ_A.V~8vh~LBD GlYeEÊU2TCH`vtW#BBаMn`8 <xG[tr|}amSOR#RT rBa{'LJ,J =+̑-#qeDIT<:%T4mC5kL ><4 t ~F𗡯P8u1EP KYS ( }g',J؂8eU剀c[ljڵ^ DX 1s|lN* ڠhZ(MN<>90'oy, B[Kʺ chЁ!!64!@} c!obS[_Be{/#KS[&?&y\e'{Ω%N:&!$!$`@APA.><^uWQQ !b $IZ]UݵWTw$˩;$O䜷S省~@ }9^iVyV  w"ZnuߊeEVU B2*B`RI]߈o_߆61Et~x+Mrfȕ})/G (1 r%]UqrCgT&6jH^0ދ͋!0p$BܐUud5Z*q K@AF]2mh%Q˄юc|u2A$ 01 }qi]C2"0&$=Ӈнef_Hf +PHCapӴ@P(mpK_߶wnY0Z{ Ɲ%ro{&{3~)]J#٘|pƜigZEx~:rsa8мy1L!9c0ҤϬ/pۆF|6 3&Gׂ g L8{ǃ[(Ǣc/6m4u՘gJL ^ BRM`g!'{z/nii`h HBUܰ-ϙ^#;z7&RC3Ac#rQWH+De+nsQ!@`"AĉCvV)$4ml@JR .ґVt:օ^|6|jm<}6Y-=?oN4 Ih;}죯w.LNu =V6 OŨm|N VC}v jW7~m3Ԍ QrQ(#XSׯiQ[f-x;w fCPȎo1$(1r\Ny|Rw^MM (z'_F(3專hX+!'2LCU":_'H+:WOW-WnAke`7J& - nHGCOC74~Ȱ 07i0gV{spL$Hvph:\<8N4mZ@{- S H#@eTUGω;,]״by8R ]Oy/{)w_YU:w~g<{y;`gaB{_|4љ zRTÑHuk}UFN ƀS8\r: y,0·@24!UMhXad\@91uljWފkZ+Qa/י=xxn\[h H,=F7 EG` ^eEƻҨgͮ H(QD/ 2w icpUxy /ol,TdfT@`Z]P/ߏƲ]LH9Q5d5Ì۫[+?~.?!!vkz(}~Ieބ]to8t':x=Xxtr,;[+]b8F@JM*ڐl˄H|u`TO9rA.d}b&WZÑҰ6lh @u§9؏C S2(@4sr̀X+/:ǎ1瀬5fQ@dž \;jQu/ >`jіy~ Wdw׿1PUKd#-|+_s]6Y4 :בX|&l{/R )X F 7L, A4%pC\]{qG;+`3fy&MϽk:,a׎M\J>| u bSOD 'ge蚞iY.l)>9CtHf UXr*4^RDo;OI+$ܩx lg`3p[$\ԹXXaG׎ ;ʬ%QgH9[ 귂!S],?ɞ|w>ސU[[?_͍rJ5L724ވMaCյ(TE"L ő!!1XjV Z$8Nx[Y[dH "?t @<63jVԖYXnEM6Ӽ-/2^܍]O{rXHA^}`t*7%s<}ѪZunꂭ5E5k oF( ՇT}ꝅ}-6MV$A,H:8`s5IDAT8DJ~Ͻbr{'vg1%Z . }y)(𪚍nmޢdTjh\e`XZWT_v:Jgq 8$zQ^Wrdȅ`>+niciTZw !kY0&يUoVTX?! k +!$̢T`ewON|c7,ɼ@\0grgZXxû# PuJ,^U۰|%9d?w`pF8̢% H'?S/,ɼB\UK˵+>5\tAֳzW md~Jq pr0J䆺/EJ8AȝD2&gҊ5XQaEi) :1EG xZ`$ 0+5vߑwPB; $^n9ߺ[F*TM j|{ף|9M\"]`G{q,#>d$A$LVH<+n+]ƐKRn]:}b`& 2TX}h.[XT Z@8i:q,'c"5 YM$鑃e; rɠ@ ,KnsjLנ288 f,*_ŞUhpa*+vyPu~tG;p1#~:~R@HQTTC?~Cm.m*k }\h I0cՊhq/C Vf3\G0=q:Xd&:!3jgCmdg" a]}+ole{PZ 33 t"ZQa ι h.kCN z'D8@bx? 0D'RC{&?#=tD/)y:%o-\ (•>WB*t$6{Qmo@MŨq4k ,Zyc*; HL-Iߣ hgGrчi;)HYj?]~TUZiY:fB I[*գ޵Pa.&YDa#Ib8ы B1$8T]L*731di> OP6BfCu-۪?;v]%6=pvиvz@`, .s9:TgFNd;|Ȩ)Ĕ)̌b,9™qD0j1D$@4 Ĕ>9|K.B!sW ,+W7^ںO]kV%ٜ)ts0V8L.+4i*E"2{bcB!0 c:B(=HvLl %^&Rc0=QҸEBeZEFM"&TbH*qĕ(r %GZM"rlG @` sc;/T#cY׳;XLB.|P M4o |fZV4U/)s987:dJē0&BbR xI0 fBOa6!kYA2sU +3;"mclSi̟ 1H䞓Ϗ#ݑb5Lrɪ^ihE۪޾A4 ѡQW sB.:5\Gulf_] Y0{쉡C6B.ƥKF:ߪ+7/ֱPe$ cD)yt3'0/ab#P ښlzwJϻ\~20@y5M@D۳/2}';bt0:Ub4 R`Z|mͺ5jVUޱJ4 LSt>grey% =3ݑpHH>Q qCMkjWzit]fvH]ѡ)ZHXnIxb29vd='~907Fm$P(KZ`q}啵Z6+,L`K19O3Dsn_:*G^ =77c`QjIH1P dFu5ߪ zef/M@P(@41U2ёdı#G/H #PVeK6yV *uN J%SPwÑƏ v 9 #GY^QsyefToJCia :|Ad:fCLd_b+G>P,#-Q |p|--ek< Uum3#smp  Lg:lB%BPh;v x"vp+ѕOLɄE1PY]YEy9RƱrUmk8Mfdc"F rpO9TYӲ1u"9OB''LuGӣ{B A|k5`uW9k͕6ocZ^kolbaf1k|f W 7r0͡no00  r()5MDz83%wzcӃ㱉DoE&(R?CnU5X*rĄ&O?JG1鉄dgF1BJepZPa)**]>MN[VkqWZ:\\U9+tn &p`b Y7I` |A`eƘlLr x*"(XHXX̔IG85(@ )E'o.&IlK& T!ef% :M/  9 d\,sjfjVgJ6L?-zJ-B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!Rݐ VRn8IENDB`JUCE-4.1.0/examples/Demo/Builds/MacOSX/Info.plist000066400000000000000000000015111263452017400212320ustar00rootroot00000000000000 CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile Icon.icns CFBundleIdentifier com.yourcompany.JuceDemo CFBundleName JuceDemo CFBundlePackageType APPL CFBundleSignature ???? CFBundleShortVersionString 3.0.0 CFBundleVersion 3.0.0 NSHumanReadableCopyright NSHighResolutionCapable JUCE-4.1.0/examples/Demo/Builds/MacOSX/JuceDemo.xcodeproj/000077500000000000000000000000001263452017400227535ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/MacOSX/JuceDemo.xcodeproj/project.pbxproj000066400000000000000000010701121263452017400260310ustar00rootroot00000000000000// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { E16EA7E816B50766F3AE4F88 = {isa = PBXBuildFile; fileRef = 8D7BDA5CDDCCD2F7BE67037A; }; BB7001D6FD448E6C0AAE4F30 = {isa = PBXBuildFile; fileRef = 8452076B5EAE822DD445458F; }; 11F44DE2908CA14F827EB448 = {isa = PBXBuildFile; fileRef = 4621682C1A4E85A088F7CEE0; }; EB6CEE01521D160E50EABCAA = {isa = PBXBuildFile; fileRef = 7EC42C604603E1ED621E635B; }; 3A285384585A5F664BB4C652 = {isa = PBXBuildFile; fileRef = A078E4C69AFA4FAE8DCC66BD; }; 4E306BFA283851066E0DA96E = {isa = PBXBuildFile; fileRef = EACCBFA17F4D07ECE058EEBB; }; 546020C416AB5CF9FA039205 = {isa = PBXBuildFile; fileRef = 8F5B02778218DDD357C40D7D; }; 52C5EAAFD0842CD9E9D9E710 = {isa = PBXBuildFile; fileRef = 89F0B6B952BC68FD271A652E; }; AD1FFF7F33A7581679FA1638 = {isa = PBXBuildFile; fileRef = 75B60B919D8CB88C6E0E0566; }; 7B3B359BCD73C20D0BFCDEA6 = {isa = PBXBuildFile; fileRef = 0374860044AB7A23CED0D26C; }; 9855E6AE1E9125FC6C3673D4 = {isa = PBXBuildFile; fileRef = 033BE48C56ED09055876AFB9; }; C6619BC35B1F4CDC30CED302 = {isa = PBXBuildFile; fileRef = AAA2590D363C6DE624D320A6; }; A54E039753B2DDC2D8E5F1CC = {isa = PBXBuildFile; fileRef = 1796A99F33AD5998FE4A6035; }; 295CBC656A90E90280D86BC0 = {isa = PBXBuildFile; fileRef = E80CA3836329ED0EEC74BAE6; }; 0C2591D2A41D00D364570D9B = {isa = PBXBuildFile; fileRef = AEF26EF11BEBA847F152A1D5; }; 9E8944195DB3FCA7AC031CE5 = {isa = PBXBuildFile; fileRef = 034AA69C5B2B4882EEFAD046; }; E036E92901E0B69FCDF451DC = {isa = PBXBuildFile; fileRef = 556EFB307E14C15D5EA0242D; }; E95494B76EDE178B2969C527 = {isa = PBXBuildFile; fileRef = 0F2AFC09338BE08479886B0B; }; 06ACE6F5252696569D99CDE5 = {isa = PBXBuildFile; fileRef = 9617B3B5FA9439D342F23ADC; }; 7FBBD57A4D5BF1101490D3E8 = {isa = PBXBuildFile; fileRef = 01C6528C4A0646873D4C3429; }; 3E91F110826EDA152862B57D = {isa = PBXBuildFile; fileRef = 146EA869EC587DBE94B39198; }; FA318C2AC336BAB1713BE5A7 = {isa = PBXBuildFile; fileRef = 8413B0A6941430B8CEE7A573; }; 5FA25CA10C3E028E4E48B32E = {isa = PBXBuildFile; fileRef = FCA788F92D5BB1640CD2AC35; }; 68A852C810EC2084A62E277C = {isa = PBXBuildFile; fileRef = AC70FAD27248857B6D16BD33; }; DBC8796D834FEE0F1BF81BB4 = {isa = PBXBuildFile; fileRef = C993FAEDCEE0A33CAB42F995; }; 0FFFF4C3E1E3731E7EE281AD = {isa = PBXBuildFile; fileRef = 014BF4937EAC7618FB1BCC69; }; EA7A6F1BBC7EB6740841C7B0 = {isa = PBXBuildFile; fileRef = 9297F74907620178A1EB41DE; }; AEAFB0AE4BB38EF3EAC34EBA = {isa = PBXBuildFile; fileRef = 56416BD4B5AE294F24289057; }; 587D594CCB99791F4D724DB4 = {isa = PBXBuildFile; fileRef = 64E7D43C4F4037CFC2C5E2AC; }; 40D223F10936E34918B48639 = {isa = PBXBuildFile; fileRef = 49412C044B88516D9AF59FDD; }; F739D6D21483E3498985C7AF = {isa = PBXBuildFile; fileRef = 55D08920D4992CD0721AA3E3; }; E4A67DD76D4D063F547F0844 = {isa = PBXBuildFile; fileRef = 4DB00B418C4F068BC5FC7314; }; 257CBA785DEDAF53F4E9BF60 = {isa = PBXBuildFile; fileRef = 4D569839066D92C393F58EB4; }; 9C30D9613D76EEFDB1653F34 = {isa = PBXBuildFile; fileRef = 7DBF83B26277D13CB3FC1479; }; B810E94ECBCA231F60EBEA5F = {isa = PBXBuildFile; fileRef = CCEC8F9385AE939B24D27954; }; 15B2A7314D1E347D65EC664D = {isa = PBXBuildFile; fileRef = F1E995A1E00C6545A4C3297B; }; 7F933AA1FB06796E6D67C6E2 = {isa = PBXBuildFile; fileRef = 92D3CD3845968E4FAB93576D; }; 251D94E4E171A4A2B67104E6 = {isa = PBXBuildFile; fileRef = DEE5EFE8148FD2DC743A7DD7; }; 52B925A3C2C3D9B8CB7E42C0 = {isa = PBXBuildFile; fileRef = 52E4BE1BCD56D3676C84BEB0; }; B65EF8DC596033D841E653C4 = {isa = PBXBuildFile; fileRef = 28CB3F1A8BFCE1F01FD630A6; }; B402A461C4EE2203251F9BF1 = {isa = PBXBuildFile; fileRef = 9F75FFB61C74FEECE61A7138; }; 2346D126B3690390A0925F06 = {isa = PBXBuildFile; fileRef = 24B00BED20980D12119C228F; }; C54286354BE46CB39B4C5225 = {isa = PBXBuildFile; fileRef = FD46383E356A5DDC1AD53380; }; FE559832F5E168F0FF04CB6E = {isa = PBXBuildFile; fileRef = 2DA02BCCDBFD5BF2DA2D2FA9; }; E635FA4F49200CDAE3E4E6F0 = {isa = PBXBuildFile; fileRef = 39A06D3252DDA6F97FB09495; }; CDC1A7E9F07FBFDD5DA92031 = {isa = PBXBuildFile; fileRef = 5AB15A508A07934A89398A6B; }; 5B96583E8DAA4EA4EA1ACF18 = {isa = PBXBuildFile; fileRef = 84BAF97675BE522B63DC9A4B; }; 372B92C7E54D51285649FDD1 = {isa = PBXBuildFile; fileRef = B731664FB9EEEBC618BAB5A0; }; 79B3AB44DF87025EBA9917E3 = {isa = PBXBuildFile; fileRef = A83639AF2210589E5367ABCF; }; DEB871CA78557347FA3E9ECF = {isa = PBXBuildFile; fileRef = C0C8D6D7D14DFAFB169FFDCF; }; F95DB56FBBDFA7F55D265B22 = {isa = PBXBuildFile; fileRef = 9B37E4C205A31B36B559E613; }; 6624011B8E83912B5D05BA77 = {isa = PBXBuildFile; fileRef = 0AF54289591CEBFBC19EDB40; }; 4EDD1F01620725E627247B74 = {isa = PBXBuildFile; fileRef = 3482A5FDDEE5E5D405047999; }; A1F184ABE297300A9E58BE94 = {isa = PBXBuildFile; fileRef = AD55906C5D8552E842C98EDC; }; 41F9A5936E54187528B817E9 = {isa = PBXBuildFile; fileRef = DD24BAA1E8104B6D3554A222; }; 7BEA73E4BB71CE05E542A6E8 = {isa = PBXBuildFile; fileRef = 8D70A7277DDD7B7974E9F178; }; F11E1D83596BC7786FC69405 = {isa = PBXBuildFile; fileRef = 0349FEE5DA18067918536934; }; 67EB8B44CAD18BA4AF577528 = {isa = PBXBuildFile; fileRef = 1E0453D8A9741695357567E3; }; 445DE2471E5D168763AF149B = {isa = PBXBuildFile; fileRef = 40D267701C8FF75121454D79; }; 795A76FB056FA340861A8C51 = {isa = PBXBuildFile; fileRef = 66C5D2F0D9B9ABA7F4A386E8; }; E96BBEAA081BFD7B244B120C = {isa = PBXBuildFile; fileRef = 5B466272F3B821BE88BAC205; }; FEDF1AA6CC2486AE0C1267C1 = {isa = PBXBuildFile; fileRef = ED6224ABC715AAB68661F4D4; }; 47F2181361C8EB7D67C89169 = {isa = PBXBuildFile; fileRef = 4E49D12CA5C42721F532DCD6; }; 7CA1524D7DE0C18C1F070C97 = {isa = PBXBuildFile; fileRef = B9D26C6C4CED62E6708B6865; }; 64A5DA788C3DAC2F02BBDA0F = {isa = PBXBuildFile; fileRef = 63AC834818EFF45708101F9A; }; 633491D8F37C87F3D426F0FE = {isa = PBXBuildFile; fileRef = 9079FD325609A4E67E44F3ED; }; AC074F24DB676919ABF06188 = {isa = PBXBuildFile; fileRef = B27A7B237782F9E15E4BF8D5; }; BFEF0063952A3A4DD92CB068 = {isa = PBXBuildFile; fileRef = 09D51FD6DE5DF526BB36B4D3; }; D39B2783DD6DB671D8BAC0EE = {isa = PBXBuildFile; fileRef = 141036E097DAC47FB6F9CA80; }; 7FDB32957337BE65186DA1A2 = {isa = PBXBuildFile; fileRef = 786CF1CA66289DB77845F8E9; }; 52637F000CB62E13F2D98026 = {isa = PBXBuildFile; fileRef = 9895036432E9AE55EE16323F; }; 005027EA86FFAEC19D634730 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorParameters.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp"; sourceTree = "SOURCE_ROOT"; }; 00869109FF554F8DB553761D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemTrayIconComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 00CC1BBABB9EEEBABF0D34ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; }; 00DE0C93FE719DC72E20A63B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; 014BF4937EAC7618FB1BCC69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/Demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 016565008F3FF4F39192ACA6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = "SOURCE_ROOT"; }; 019352D78DBBEE2AC10ED6BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AiffAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 01AD7BA1E1B20309DC969EE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandManager.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h"; sourceTree = "SOURCE_ROOT"; }; 01C6528C4A0646873D4C3429 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioLatencyDemo.cpp; path = ../../Source/Demos/AudioLatencyDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 01F2CB80C1B14450528F0FA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; 01F49D3FD943424005FB512F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 02659911BD886D2E8431B912 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LocalisedStrings.h"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.h"; sourceTree = "SOURCE_ROOT"; }; 02ABF8C447E1A47845F6027D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; 02F0BF69062E8D9583F13C83 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; 033BE48C56ED09055876AFB9 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 0349FEE5DA18067918536934 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 034AA69C5B2B4882EEFAD046 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = "SOURCE_ROOT"; }; 03707F35E5DB4BC6F1FAC8D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; 0374860044AB7A23CED0D26C = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; 03CB1183519203936C33025A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 03E5796BC74758EBDBD49081 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserVoice.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp"; sourceTree = "SOURCE_ROOT"; }; 03EC0E5A647E50B369E50BBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../../modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; 0443FA799896F7D084DED278 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WavefrontObjParser.h; path = ../../Source/Demos/WavefrontObjParser.h; sourceTree = "SOURCE_ROOT"; }; 0453D6FB24F82E92A6BEDA49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; 047E385F21CC5AD6238B120E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadower.h"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.h"; sourceTree = "SOURCE_ROOT"; }; 04C5FED8AEA4109C4ED07111 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 057A64839BFE9AD0864752C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterFloat.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h"; sourceTree = "SOURCE_ROOT"; }; 05AFEDB1F65A8C2C8E9620E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_formats.h"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.h"; sourceTree = "SOURCE_ROOT"; }; 063357A85BA244642BE1274A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_basics.h"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.h"; sourceTree = "SOURCE_ROOT"; }; 0638493DAFCB6148E77159B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; }; 06496C804633EAB2003E5B19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 068183416EF5422C7AD0F238 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; 06903FD63E508771C576431D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; 06AE69217982DB82E0F47554 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; }; 06B6D19CE5691310DEF50DBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniserFunctions.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 06BD2631BF3C52F26B9981E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_cryptography.h"; path = "../../../../modules/juce_cryptography/juce_cryptography.h"; sourceTree = "SOURCE_ROOT"; }; 06DE336A39A9FEC47A8C2F06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; }; 06FACF171E0DE0AC6318AE4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; }; 0732CB9291291C9854197B28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Box2D.h; path = "../../../../modules/juce_box2d/box2d/Box2D.h"; sourceTree = "SOURCE_ROOT"; }; 07425F710A1C4AC479BE56C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEZone.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZone.cpp"; sourceTree = "SOURCE_ROOT"; }; 07553F86ADDF3CE278CBDE66 = {isa = PBXFileReference; lastKnownFileType = file.xml; name = "demo table data.xml"; path = "../../Resources/demo table data.xml"; sourceTree = "SOURCE_ROOT"; }; 08085F4282FC26BA8D377921 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableBorderComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 081472DAF6208CF7FDD4466B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceSelectorComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 0876934F047839205147DB99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AnimatedAppComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 088687334FC51A5136881578 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 088BC49A72D9304769B2CBFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_AudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 09D51FD6DE5DF526BB36B4D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 09EB2AA32041290412E00D8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; }; 0A25E42359372E51ADB0123C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 0AC78EC782815C8325A3AC8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 0AF54289591CEBFBC19EDB40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WebBrowserDemo.cpp; path = ../../Source/Demos/WebBrowserDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 0B08631AE709ADF41AB3B780 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorListener.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h"; sourceTree = "SOURCE_ROOT"; }; 0B3662D1FFE3102476FD60D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeTime.h"; path = "../../../../modules/juce_core/time/juce_RelativeTime.h"; sourceTree = "SOURCE_ROOT"; }; 0B53DC9C735B3B307C65836A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_ClangBugWorkaround.h"; path = "../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h"; sourceTree = "SOURCE_ROOT"; }; 0B54F1B0CB17ABD0C3E40658 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; }; 0B5B86BA8E4C60B999A45034 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterInt.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h"; sourceTree = "SOURCE_ROOT"; }; 0B82DF796E577809EB03B874 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LAMEEncoderAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 0B9867D5674933AF753A2CF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; }; 0BD502F6196E1FE7D9888A1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; 0C6B7C49C4630C18F995C738 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; 0C73944DB76DB5DA61210A33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; }; 0D17B181C82CDA7A6282A0C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; }; 0D979051139C2AC633BB4B9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; 0E11770AD343D8A0780C54BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../../modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; }; 0E1D85B025D93DAFA8404824 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; }; 0E1F414FCC996E155B4DB5DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; }; 0E26995340F6E559281691DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 0E2F5CD3AB59E19A1ADFF875 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; }; 0E39FF2E9AD2BDC94CC015E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiOutput.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp"; sourceTree = "SOURCE_ROOT"; }; 0EA8F0AB668E3B77E8088139 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MD5.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.cpp"; sourceTree = "SOURCE_ROOT"; }; 0EAB2E0BB8C3BE2725FA093A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; }; 0F0B65D33F71F27C1E366CF0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEZoneLayout.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 0F2AFC09338BE08479886B0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IntroScreen.cpp; path = ../../Source/IntroScreen.cpp; sourceTree = "SOURCE_ROOT"; }; 0F3360D13458198A3A88B1A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; }; 0F517EA07DBFE31E5C9367F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; 0F518E75055A9D954B52DAC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; }; 0F82F90D72AD536CC3DFE217 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioChannelSet.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioChannelSet.h"; sourceTree = "SOURCE_ROOT"; }; 0F88F061C51BE43F53B27094 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 0FF2403BC335E710BE391DEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 104B96755BED457D7CEA42EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; 1065FE461C00EABD9485BB93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 106F27CF32C79FAEE768ABA3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 10932841EA586B6969446549 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 10B6D087BD60ECFE08F157AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; 10DF2A823B97BBC0BD840B9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarComponent.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 11005DEC79FC6A6057FCFA7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; }; 11A95002F7CE796B7C27EAA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 11CB66B1CBA64B205FDF2767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; 11F6937FC766E1E9568311C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; 1225AF360A43D61516016CF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLImage.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h"; sourceTree = "SOURCE_ROOT"; }; 12E4EED0370A1733C6629D86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; 1339BD00EBF554E995968B6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; }; 133BC5B880C7575FF3209D88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 139D5B8276448B8BFDBA3F7F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 141036E097DAC47FB6F9CA80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; 146EA869EC587DBE94B39198 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioPlaybackDemo.cpp; path = ../../Source/Demos/AudioPlaybackDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 146FF5324D969925F258D045 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; 14933D0F3C598C38A113CE8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; 14A37C392DF6CF1CDB64612D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_opengl.h"; path = "../../../../modules/juce_opengl/juce_opengl.h"; sourceTree = "SOURCE_ROOT"; }; 14A6170C094E7786C521A4DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioVisualiserComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 14EAA74C473506EC4920A160 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DemoUtilities.h; path = ../../Source/DemoUtilities.h; sourceTree = "SOURCE_ROOT"; }; 151ADDBE74B99337BC2C2586 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; 15348CE8667592D8F3841601 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; }; 155D25867B048DB7685E6F11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LagrangeInterpolator.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp"; sourceTree = "SOURCE_ROOT"; }; 155EF3FCA61BEF035E1D7C8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RenderingHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_RenderingHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 1676147A3FADD6D79FF42CDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPosition.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h"; sourceTree = "SOURCE_ROOT"; }; 1697DAEA5B5B105AE1C48E12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1698E86A0E0E93DF1487E9FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Base64.h"; path = "../../../../modules/juce_core/text/juce_Base64.h"; sourceTree = "SOURCE_ROOT"; }; 169C561B93262F8B46BEB768 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../../modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; }; 16DC590DCFE57F583E99F9C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; }; 1713D0650DCFA516EBF595DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 171E2FEB6097B9D059BCD196 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; 178D5499D90E6C10AA778456 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_video/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 1796A99F33AD5998FE4A6035 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 17ADC8ECFA616CF392783757 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 17C0612B5BA94849EA9768CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; 17D0D2AD3243F65FADB94446 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; 17FDEA6209B7444B117E63C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 182223C68F452171BE479C01 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ArrowButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 184C5CCD9457D17375F9AE1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 1890C5F569F315E5F8EBB1F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseEvent.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1913719A1E4E1803CD54D11F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; 192EE3C990E80213984A44C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImagePreviewComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 193F42507FBE4E7A62D81E2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A1C23D2F16F880FCD3B565E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A3DE76CA275CEE7DAD501A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; 1AD3E125B61DD653C03FAC05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_box2d.h"; path = "../../../../modules/juce_box2d/juce_box2d.h"; sourceTree = "SOURCE_ROOT"; }; 1B9B4E12F53F8350757CD4D2 = {isa = PBXFileReference; lastKnownFileType = text.txt; name = README.txt; path = "../../../../modules/juce_box2d/box2d/README.txt"; sourceTree = "SOURCE_ROOT"; }; 1BBECE3C619C157F072748D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; 1BE105DE7C738CCF8D6F2A54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OggVorbisAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 1BE21633CDF618F8D993F3BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; 1CD8799B8784A91FC13E6641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnection.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h"; sourceTree = "SOURCE_ROOT"; }; 1D4E674C38566E14B4B73F49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; 1D62103CFAB9245F2CF523EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 1DB91DA41FDDC9D2F628C7E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLHelpers.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 1DDAEBB24E58353761798ABE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Line.h"; path = "../../../../modules/juce_graphics/geometry/juce_Line.h"; sourceTree = "SOURCE_ROOT"; }; 1E00488AE073FB510E4BE10D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; 1E0453D8A9741695357567E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; }; 1F25BC80413668F43F5D7864 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessage.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp"; sourceTree = "SOURCE_ROOT"; }; 1F2CB36A86AA1A4FFF89CD88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReaderSource.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h"; sourceTree = "SOURCE_ROOT"; }; 1F2FF9F4A1F8325AD3F19EA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; 200A1B6B96E1089110CEAD48 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MissingGLDefinitions.h"; path = "../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h"; sourceTree = "SOURCE_ROOT"; }; 201E7DB01624212F01B85F5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 2060347D582A8E45F58AE1C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; 20A4427A1F9CCC5FC58AA159 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2108383000B0A3564DFF340D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; }; 215D455CD5A3BD7537F88630 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 2174CAEE6D8EB215ACD4A256 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; 217D243937EB2507494A4D34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_JackAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; 218E36147FA4309F072C1949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PlatformDefs.h"; path = "../../../../modules/juce_core/system/juce_PlatformDefs.h"; sourceTree = "SOURCE_ROOT"; }; 21CE480826B56F0B5C8C4A43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BigInteger.h"; path = "../../../../modules/juce_core/maths/juce_BigInteger.h"; sourceTree = "SOURCE_ROOT"; }; 220344E43675A2A7D64D3A44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; }; 2274B9A5BC921FE3B877D0C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 22CF0BEE62FB551A68223B3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioThumbnailCache.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 234392598E5388F29CFD6B50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiser.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.h"; sourceTree = "SOURCE_ROOT"; }; 239F942F45950F5EDCB65A17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 23A853ADC54A69406C7A49C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Time.h"; path = "../../../../modules/juce_core/time/juce_Time.h"; sourceTree = "SOURCE_ROOT"; }; 241100DC52A0F56D071C8C4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; 2432B5DFCDB8D39150029E01 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../../modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; }; 249A454A7EF1C3A07A66F453 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_basics.h"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.h"; sourceTree = "SOURCE_ROOT"; }; 24B00BED20980D12119C228F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MultiTouch.cpp; path = ../../Source/Demos/MultiTouch.cpp; sourceTree = "SOURCE_ROOT"; }; 24B56E58A88C5BA553F1C3F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; }; 24E2AF695F11B9BAEB8FBE3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; 24FC5DD7F88DBB1E3A46AB54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 25412CD3F6855849D8B7FE98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPlayHead.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPlayHead.h"; sourceTree = "SOURCE_ROOT"; }; 2551FA5B61BFBEB5E0310B66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 25615385230E47D7E70A2745 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardState.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h"; sourceTree = "SOURCE_ROOT"; }; 263BE0BDE184A7184A118B46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; }; 2699A70E9610104CB8D30EC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDataConverters.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h"; sourceTree = "SOURCE_ROOT"; }; 26A65E5DA320A85F90F1F58F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDataConverters.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp"; sourceTree = "SOURCE_ROOT"; }; 277ADB563604EE1FB51FDAE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2781E458566701273B805E8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MixerAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 2859FDF0CCD1ED788910E9D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WavAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 28A254DF535233A82D5D79BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailCache.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h"; sourceTree = "SOURCE_ROOT"; }; 28A7CFB0B6DF367A9830817C = {isa = PBXFileReference; lastKnownFileType = file.xml; name = treedemo.xml; path = ../../Resources/treedemo.xml; sourceTree = "SOURCE_ROOT"; }; 28CB3F1A8BFCE1F01FD630A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MidiDemo.cpp; path = ../../Source/Demos/MidiDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 28E65398C8CF95EB12A5734D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; 293678404D17012C6E402AA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 29919F82CA5311BEA61649D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 29930414E0C7FD5EFC7F2095 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectShowComponent.h"; path = "../../../../modules/juce_video/playback/juce_DirectShowComponent.h"; sourceTree = "SOURCE_ROOT"; }; 29AA7E6AE1C062B740F4D80C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FFT.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.cpp"; sourceTree = "SOURCE_ROOT"; }; 29C7AE377B006C00D4293C59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CameraDevice.h"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.h"; sourceTree = "SOURCE_ROOT"; }; 2A155BD926FEB91142E6A638 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; }; 2A1FF908BB6FEBAD912CDE8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScrollBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h"; sourceTree = "SOURCE_ROOT"; }; 2A5FA90E69311FB8A18EC3B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; 2A8F6894339DCE6003B702F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; 2B4F1477BB90BF7F62005BEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; }; 2B702EF83CBD217F8F9195F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 2B8FF1E4F8D48AEDE05224D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 2BC7AB69474D7E280098B893 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 2BFAB8AE52821D3786BD7ECA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiFile.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 2C26D37BEDBDC3B1DF19388D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PositionableAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 2CD4306102317989E6321924 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; 2D13D48857E2530BF41F70CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SelectedItemSet.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h"; sourceTree = "SOURCE_ROOT"; }; 2DA02BCCDBFD5BF2DA2D2FA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGLDemo.cpp; path = ../../Source/Demos/OpenGLDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 2DAD09E643C29B6DE7F26EDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 2DDE8684F3C5CB4A781D72A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; 2DE7C6A69CC0096EF56E4049 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; 2E093A5506319EC68DA184F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2E29C6A0CF15C32A35119DCA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; 2E524CE76F1B735AE8072E03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 2EB37CCC4FF8C40B015C0555 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableImage.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h"; sourceTree = "SOURCE_ROOT"; }; 2EE8E77D21471265869C9B4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F1324CBA29604BD3E2003B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; 2F19C814598FC304CA841242 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F66B42AF6C0B5ED381937C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; 2F7F13C84464F8409BBDBEB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F8041ECBF70D78604686D6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; }; 2F8D57F15D63118E33CB0639 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 3008922C531303C24B8791AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 3009F5CB4D15119D2C680F98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_android_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 30212C3F1731BD8F19412A38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; 30CA850D191ECD5F1F7B6A70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 30D828B153772EC3FBADF543 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Whirlpool.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp"; sourceTree = "SOURCE_ROOT"; }; 30DA52AA554A0249429AC3FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; }; 31D74E7CF149EF5B569417A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 3240A232A5C82A812A837A2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; 324452D7F5B5EA3B393FF4FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatWriter.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h"; sourceTree = "SOURCE_ROOT"; }; 326FF20ABED3923B1418BB3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ios_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; 32F1D9C9FD2C0796E2E66C6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RSAKey.h"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.h"; sourceTree = "SOURCE_ROOT"; }; 3371D4F2A1E0AB784460E6D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../../modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; }; 338AEA7AC3EF4CE113FC7303 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserBase.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp"; sourceTree = "SOURCE_ROOT"; }; 33B829EE652FAA7EFB9E7460 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FillType.h"; path = "../../../../modules/juce_graphics/colour/juce_FillType.h"; sourceTree = "SOURCE_ROOT"; }; 33F3182598E9A84AD25A9184 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; 3411D087E2F8C3962E73F64F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DeletedAtShutdown.h"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h"; sourceTree = "SOURCE_ROOT"; }; 34176F324CF7EBCDE741B2DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; }; 346CEC10C4A7DF779A799311 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnail.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h"; sourceTree = "SOURCE_ROOT"; }; 3482A5FDDEE5E5D405047999 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WidgetsDemo.cpp; path = ../../Source/Demos/WidgetsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 355DBB46C4283779C367E97B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 358C6A8FDD14AF0BADFC200E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 359FD60323CE3BA7B25008DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeEditorComponent.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 35E35B099E2A7906A7AA2EDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AiffAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 35F5E95BA127E63BA136DACC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToneGeneratorAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 360291D0346F776DDD3F43E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Uuid.h"; path = "../../../../modules/juce_core/misc/juce_Uuid.h"; sourceTree = "SOURCE_ROOT"; }; 3649E7CD2BD6A37FCF7D72F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameter.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h"; sourceTree = "SOURCE_ROOT"; }; 366C0E8D559D37FF92B64F47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; 36711C0D24EB22FABF8E7BCB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; 36A65D869B23D9987C676BCD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 36C9E79611229727DF5E5836 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeMovieComponent.h"; path = "../../../../modules/juce_video/playback/juce_QuickTimeMovieComponent.h"; sourceTree = "SOURCE_ROOT"; }; 36DA578E707673F6B174A016 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; 37355CCC05D407D665AA6604 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; 3741E4C0CE5C7C0828D09BA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringRef.h"; path = "../../../../modules/juce_core/text/juce_StringRef.h"; sourceTree = "SOURCE_ROOT"; }; 376F6150287E759E77B824BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; }; 37C7B4ECD40F15EFB12D58AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; 37E835EA1318A5D504282D90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 384887ECD58A0B42E3669617 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReverbAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 3855013A39E97B76B46E055E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; 38B737F6F0007F752EE380B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 38FB6ABB883ECAD52027CE19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; 3924287A67ED97279455625B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChannelRemappingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 393A46D91FB481557E4DF792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreMidi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp"; sourceTree = "SOURCE_ROOT"; }; 39A06D3252DDA6F97FB09495 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGLDemo2D.cpp; path = ../../Source/Demos/OpenGLDemo2D.cpp; sourceTree = "SOURCE_ROOT"; }; 39E23931E56560C294237428 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_curl_Network.cpp"; path = "../../../../modules/juce_core/native/juce_curl_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 39E4404D57A8B66DF520B66F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../../modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; }; 3A42694A047942A44E8216F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 3AB9E51994CD35A10F87EFF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; 3ADE61DBFBB6901CE2F1DB17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceManager.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h"; sourceTree = "SOURCE_ROOT"; }; 3B4CB5DCC28B60C4129F024E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 3B61B715F29A0AEAEF73CCBA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; 3BCC9E4DFC3910F668DA3FF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 3BFEBBE9B8185F65D69A1721 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 3C18AC0F75E68A8601DD8F08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MountedVolumeListChangeDetector.h"; path = "../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h"; sourceTree = "SOURCE_ROOT"; }; 3C1E6F7FBCCAFD6CCDBBB70C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessageCollector.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h"; sourceTree = "SOURCE_ROOT"; }; 3C776A3FADACB361BD4B3D9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorEditor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h"; sourceTree = "SOURCE_ROOT"; }; 3CF67E6BCC6B52EFD6E6A458 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_android_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D0EA5C831C347728313FDFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D2B216A758EEC9EF2D9C7A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D2D6313C0A3397C4839B29B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D2FFA1F349A15621962C064 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D8A83C53BAF22EEEA014D90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 3DA95E7AE1D0DC64AF09EB66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; 3E27B6E7641EFD605545DF18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 3EC73BE7C098A631E5D5107D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CameraDevice.cpp"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 3ED5A2B64359FED05CF309C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; }; 3EF890CB40C6FFCAE055B7B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; 3F2BBE4509B19BFAC929D8DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; }; 3F58D27B17343BF1030AF92A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; 3F8C313EC9C1E6E234108098 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 3FBF109F3AD6DE221EFB1BA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 402BC49CAFCFFF067A88F96A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AudioCDReader.mm"; path = "../../../../modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm"; sourceTree = "SOURCE_ROOT"; }; 408C5E78F7DE038844E18D31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedAppComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 40B485A7CCC441C90EA92FBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; }; 40D267701C8FF75121454D79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; }; 41107A3608BE0848BE2A34FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterChoice.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h"; sourceTree = "SOURCE_ROOT"; }; 4120CBF145DA500C140BC666 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; }; 4140669501152D9FB9A244B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorPlayer.cpp"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp"; sourceTree = "SOURCE_ROOT"; }; 4151602FFED0B1AE7B36CEF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_BluetoothMidiDevicePairingDialogue.mm"; path = "../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm"; sourceTree = "SOURCE_ROOT"; }; 4198EE3311A171C884A5FA9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 4212EA9CE0B9AA4986108D9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; }; 42386AD366F1AD43B6B29364 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; }; 428FA66F7D6FB46A64B438E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; 4290825CEF87C19A113CA9F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 429974B1B4C361F218093A41 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 42DC5D8CEC7445468A96C227 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; }; 436BAE91A167BB6107F261B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; 437B4DC39531BF8DE5A12E02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextDiff.cpp"; path = "../../../../modules/juce_core/text/juce_TextDiff.cpp"; sourceTree = "SOURCE_ROOT"; }; 43B80E11AC5121A2F4B8DD78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 4407A352B303B27AA0B7D579 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 447B5BEAEF972DECD5F5A949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 44879946DE89AF141BE428B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; 44BB5D71E35E65F5209292B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiser.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp"; sourceTree = "SOURCE_ROOT"; }; 44F4A9351C2B03F98A0D23E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; 456837CE387595EFF549939B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; }; 46118CBA9C3CD3B354D93B30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; 4621682C1A4E85A088F7CEE0 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 462F10FC0057AA53CC71472E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_QuickTimeAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 46C5401358EA7CF2D22FFC26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLPixelFormat.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 47091E4F83A415C063855A74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; 475B1787F548E4FB11C63CD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 47817D36A37758981DEDCAAE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; }; 4825D1B0C0AC0FD325F55C29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; 4895DA77962B46806EB0147F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDirectoryScanner.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h"; sourceTree = "SOURCE_ROOT"; }; 48A0FC60EFF6334C161519FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_win32_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 49412C044B88516D9AF59FDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CryptographyDemo.cpp; path = ../../Source/Demos/CryptographyDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 4975DB849F14413317E94609 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; 4983B8B7E3666DCAC1A1644B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FFT.h"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.h"; sourceTree = "SOURCE_ROOT"; }; 49BFC515C915A4AB53EC15C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessageSequence.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h"; sourceTree = "SOURCE_ROOT"; }; 49C275C319B36AC86512E34F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; 49D1B40749401475B52A6F85 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputSource.h"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.h"; sourceTree = "SOURCE_ROOT"; }; 49FCD3BBF372EE7F6F143EA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentMovementWatcher.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp"; sourceTree = "SOURCE_ROOT"; }; 4A2C25FD55809F1489963FC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../../modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; }; 4A4D3CCCDD2C972CA6715014 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; }; 4ABF4B55F979F2A88EB1B331 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToggleButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 4AEA921081036DD4C259B45F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; }; 4AF5BD29C935D0EB7CB0F6AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; }; 4B310AA3DF4F6188B2E6FAF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; 4C13F19ECFF6CA7AB9C801AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BooleanPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 4C66D04A6A5FA514A10AA406 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 4C9033415E05CD39408389AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyPanel.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 4D569839066D92C393F58EB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphicsDemo.cpp; path = ../../Source/Demos/GraphicsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 4DB00B418C4F068BC5FC7314 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FontsDemo.cpp; path = ../../Source/Demos/FontsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 4DBE443E8F807D9366309A44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceDemoHeader.h; path = ../../Source/JuceDemoHeader.h; sourceTree = "SOURCE_ROOT"; }; 4E0A9537FFDE89E4B46710CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BlowFish.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp"; sourceTree = "SOURCE_ROOT"; }; 4E49D12CA5C42721F532DCD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; 4E892CB7335853F8FE91B26F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPress.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h"; sourceTree = "SOURCE_ROOT"; }; 4F56EAB8D09665602226930F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; 4F6768F8EF9CB4A34A501966 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 4F9F102E3BEDFE30542BD479 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; 4FE6B5F0E1AC94CFA6BCC19A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 50677353DB2766A800988656 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; }; 50AB15E26F6E4A55B0BE8AE6 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_formats/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 50C099C6D8CA6DBF95B0828D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Viewport.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp"; sourceTree = "SOURCE_ROOT"; }; 50C625257E68C3B8FDAE45A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooserDialogBox.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h"; sourceTree = "SOURCE_ROOT"; }; 50D167857CCBE08F692604BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 5125E77EBA8500EAA778F51F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 512D5182047E0B46E971A13D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; }; 519F11BE9C786A7F9B221BA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NormalisableRange.h"; path = "../../../../modules/juce_core/maths/juce_NormalisableRange.h"; sourceTree = "SOURCE_ROOT"; }; 51DD2ECC1AED271892E87814 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; }; 5232B9F7E62CD5C41C3ABFED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_BluetoothMidiDevicePairingDialogue.mm"; path = "../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm"; sourceTree = "SOURCE_ROOT"; }; 52A95B5754438C999343869A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_VSTPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 52D7400A47B19848EFCB5B51 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WASAPI.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp"; sourceTree = "SOURCE_ROOT"; }; 52E4BE1BCD56D3676C84BEB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MDIDemo.cpp; path = ../../Source/Demos/MDIDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 531D198DE52845A4B641B6B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; 533B6E74A9F84B4D319E2F16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; }; 534098C590927D6768E57ACF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 53AA2F507FD9DE263E43B277 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 541E0CB92DCF5EDA093EDC7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LagrangeInterpolator.h"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h"; sourceTree = "SOURCE_ROOT"; }; 541E4974C73E294DBA415BA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; }; 5434953F55BD35F74D59D980 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; }; 5496F73539DA26FD9C899223 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TimeSliceThread.cpp"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp"; sourceTree = "SOURCE_ROOT"; }; 55273A59F96B3C775EB71FAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../../modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; 554678AFD58E3E3A2B0BE43D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; 556EFB307E14C15D5EA0242D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainWindow.cpp; path = ../../Source/MainWindow.cpp; sourceTree = "SOURCE_ROOT"; }; 5595C04B0C1D8D8EBA119C8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; 55D08920D4992CD0721AA3E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DialogsDemo.cpp; path = ../../Source/Demos/DialogsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 55F9178934DDF31583323625 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 55FBB9F8900F753766A22BE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KnownPluginList.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h"; sourceTree = "SOURCE_ROOT"; }; 560B074FDFF6F94477083076 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; 563167A7234166BE714F2DC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 56416BD4B5AE294F24289057 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CodeEditorDemo.cpp; path = ../../Source/Demos/CodeEditorDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 569187442B514D114A483D29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; 56BCAE594E40E21699F9337E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 56C55F22CADABBA171D41BFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../../modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; 577378064273DA54B9BED3F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 5784E19E01D5B23BDDFFA5AE = {isa = PBXFileReference; lastKnownFileType = file.obj; name = teapot.obj; path = ../../Resources/teapot.obj; sourceTree = "SOURCE_ROOT"; }; 57B7A9C37305D4D7F876344C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; }; 57D6E8A8E8D871EB1DEF6A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 581E68F4E33DBA5837FB7F9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MP3AudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 586A4398FE1B9F7D6104BB70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiRPN.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiRPN.h"; sourceTree = "SOURCE_ROOT"; }; 5897A924018C9D26438796A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../../modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; 58E53BE69281E3105C66FF07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; }; 58EE7977BC7FBB3523A910D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; }; 58F81EC0B3505F092DEBAA30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLGraphicsContext.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 58FB0C4FE674CC5BB7B1DCA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; }; 59810BDD671438F997D32061 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZone.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZone.h"; sourceTree = "SOURCE_ROOT"; }; 599036DC07DB54E446ECA054 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 59E2B82491E344257F84FC40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; 5A3C2298934C0F77CC60D336 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioAppComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 5A73A448137344953ED2BD32 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; 5AB15A508A07934A89398A6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PropertiesDemo.cpp; path = ../../Source/Demos/PropertiesDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 5AB81EDAFED264951169F1B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; 5B0A45CD67D62B0BF9FC22F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B466272F3B821BE88BAC205 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_utils.mm"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; 5C2DE230E3197CF04660851E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; }; 5C5F8713DA326B5C6C559767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 5CAED9BFE11E46C835DC9417 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLFrameBuffer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h"; sourceTree = "SOURCE_ROOT"; }; 5CBB1DA4ECE2611DDA81A18C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; }; 5D40332D94747C3190D4CC16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 5D475A368AC24E639B8A3797 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 5D4FE2C580EFC84212CFBFB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; }; 5DA9EA3E74C2AB870EC9CACB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; }; 5E69510D460EEB7754976CC8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLAppComponent.h"; path = "../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5E9F335E274427A81514A20C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 5F3E8B08EE74B0023DA176B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FB5AE3F2ECCD8AC1A49CA18 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 5FC58B5FBBBB09878E3F2230 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPDecompressorInputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FCCFCEE3F6C4C51BB581572 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FD5503AB0E161315DD5CD70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UndoManager.cpp"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 607FA0800596585429F6C22B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Primes.h"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.h"; sourceTree = "SOURCE_ROOT"; }; 60849B046145D3BACDFA6A84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WindowsMediaAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 60B755F5684959E78C556810 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Misc.cpp"; path = "../../../../modules/juce_core/native/juce_android_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; 60BCBC74A3C12630E82631DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6141692AC9282411091C8157 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../../modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; 6163B3DFD893F55523113A40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; 61F28F9E82D39EFF702793D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDReader.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h"; sourceTree = "SOURCE_ROOT"; }; 6209255CD43AA4EDC1C955DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; 6257CEA3C6EADCB94E25010F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLFrameBuffer.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; 62D20AFF94117B99556BF56C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 62F9B202D524E33A2843ED84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; 6308DABB4145FBD330B7DA5A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Quaternion.h"; path = "../../../../modules/juce_opengl/geometry/juce_Quaternion.h"; sourceTree = "SOURCE_ROOT"; }; 631FD2CAE69A3D5DD8C2E1B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorValueTreeState.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp"; sourceTree = "SOURCE_ROOT"; }; 63AC834818EFF45708101F9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; 63BB4EB9347AF60049BEEC1E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTree.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.cpp"; sourceTree = "SOURCE_ROOT"; }; 63D09BD18653F6A0134C8195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatManager.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 64E7D43C4F4037CFC2C5E2AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ComponentTransformsDemo.cpp; path = ../../Source/Demos/ComponentTransformsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 64F04FAD3BAAEE3D0BA279B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceManager.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 651D48BCCD81AC8B5BC3AAA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CharacterFunctions.cpp"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.cpp"; sourceTree = "SOURCE_ROOT"; }; 65DA0DAA8BDCE57A54C1CF26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserBase.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h"; sourceTree = "SOURCE_ROOT"; }; 6645C09E7FCFF0E498C3C400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioChannelSet.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioChannelSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 66C5D2F0D9B9ABA7F4A386E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; }; 66D5FD22DF1550A6CC9ABDA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; }; 66F8C7EB6520AB9439433DF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEInstrument.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp"; sourceTree = "SOURCE_ROOT"; }; 67541565521633071C03BD35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; 6808473BBCC2E4D8E2CA0E71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 68AD6A94C88A46A483B823E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiBuffer.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h"; sourceTree = "SOURCE_ROOT"; }; 69249A7E30512BBF13CB8A09 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; 6940E5FE7BC1ED1BB2258886 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 6976B92D19F4FA1BA89A8922 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; }; 69CC80F5871F1AA06689E3BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; 6A299D9BED7D078CB2F1C007 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; }; 6A3315B465362CD3AF66D306 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; 6A4AE0C59C1210D28A8C8AF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6A643B44198DCE6FFE057E9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBoundsConstrainer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp"; sourceTree = "SOURCE_ROOT"; }; 6A6A22EF81805BE907DB5DA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 6ACBD7C68EE20A8E8C5CC1AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_graphics.h"; path = "../../../../modules/juce_graphics/juce_graphics.h"; sourceTree = "SOURCE_ROOT"; }; 6B1FEA349A6C8F51AB27E23C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../../modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; }; 6B3772278F9398D0AC7CE250 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Javascript.cpp"; path = "../../../../modules/juce_core/javascript/juce_Javascript.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B4AF4E4BE36B99E00BFE839 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LuaCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B67DE0FF4487B060DCF31E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; }; 6B83E4AE241F0EAC9574923D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; }; 6BA2D0C9FB49A5C3E0554000 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLTexture.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp"; sourceTree = "SOURCE_ROOT"; }; 6BD1D463E40A463C69C065C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_processors.h"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.h"; sourceTree = "SOURCE_ROOT"; }; 6BDAB94A88B565A734534368 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; 6BEA46E3C64DD2FD8946CD35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlElement.h"; path = "../../../../modules/juce_core/xml/juce_XmlElement.h"; sourceTree = "SOURCE_ROOT"; }; 6C52D68EDEA2D7ECA4CCC2BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 6C57333FC4ACEBC7C451A414 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsMediaAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 6CF95925EA874CFABAF7C284 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 6DDDB822BBF3D557CA7AB427 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; }; 6E125672C42D84CCD54F9B0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KnownPluginList.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp"; sourceTree = "SOURCE_ROOT"; }; 6E176584A871F8C956918182 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseEvent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h"; sourceTree = "SOURCE_ROOT"; }; 6E386DC2F80B9C90264AB60E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEMessages.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.cpp"; sourceTree = "SOURCE_ROOT"; }; 6E522E47999DB582BA4DA5B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; 6E98E22310F8BBEAC48EE55A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 6E9BFA2B6260E09B2B3948E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageManager.h"; path = "../../../../modules/juce_events/messages/juce_MessageManager.h"; sourceTree = "SOURCE_ROOT"; }; 6EA8B0940C4486B9F03BA19C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../../modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; }; 6EBA81213324106593EF5DF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; }; 6F2A90834846C810CCD39DF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"; sourceTree = "SOURCE_ROOT"; }; 6F5B9777B802707C4A747E46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 70276A64A50E5B56492853DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; 703C1FBF6632A8078BBE05AC = {isa = PBXFileReference; lastKnownFileType = file.wav; name = cello.wav; path = ../../Resources/cello.wav; sourceTree = "SOURCE_ROOT"; }; 70A5CABA464ECFC6A8449A87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioIODeviceType.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp"; sourceTree = "SOURCE_ROOT"; }; 70F33D8D2F48D64188861C6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemClipboard.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h"; sourceTree = "SOURCE_ROOT"; }; 71E5E55D76D83B711B6263C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CoreAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 720C3CA9E28181C76434D465 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; }; 7286D6380C74734603D098EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; }; 728E67FDBD3660742A33C7B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7319ADBC735F957219774263 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; }; 73267FE8DDE50FD1E6E31ED4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; 7338D006521EDC5C10EEF974 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 734C43C3F7918061F2DDD214 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; }; 73CF65298983B8CDC1CD84AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; 73E0383F94E38E30C2CE0F5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../../modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 73E670E23A2523F7A1B14775 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../../modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; }; 73EC10FBCA420227E5A145F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; 73F0F1FA09AE9F7308AFCC3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CaretComponent.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7416BF201FBFE7F978FD774A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; }; 74BE52ADFCAEFACF704E1269 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; 74CEBA45E0A8ECA5CFA9BEF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; }; 74D283E02B3A2A293678FF9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectSound.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp"; sourceTree = "SOURCE_ROOT"; }; 753D9A91CFBFAA027F828C02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 754710498EE8C41F085A2B11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathIterator.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; 75B60B919D8CB88C6E0E0566 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; 764F36E2597540348F960404 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; }; 76B8E770835968F565292D1E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 77179735C0CB2D89D9C61466 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../Resources/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 7761FFBFAC88B7157D65EE1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinkedListPointer.h"; path = "../../../../modules/juce_core/containers/juce_LinkedListPointer.h"; sourceTree = "SOURCE_ROOT"; }; 77BD025036C8B02426E61C79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; }; 77D7DE86E82C779B3DAA8678 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLPixelFormat.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h"; sourceTree = "SOURCE_ROOT"; }; 7828AF42E3C857F520EABDD7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageSequence.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp"; sourceTree = "SOURCE_ROOT"; }; 786CF1CA66289DB77845F8E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_opengl.mm"; path = "../../../../modules/juce_opengl/juce_opengl.mm"; sourceTree = "SOURCE_ROOT"; }; 7890AB8CBF31F9788E10DBD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentAnimator.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp"; sourceTree = "SOURCE_ROOT"; }; 78979AFF44F164451516C986 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; 78B172DD2AAFE3535D0460C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResamplingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 78DAC3299488E0CC70EDB206 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedXLock.h"; path = "../../../../modules/juce_events/native/juce_ScopedXLock.h"; sourceTree = "SOURCE_ROOT"; }; 791B204F13E056DA2644175D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; }; 79C8D0C6D1444EAB781C46F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7AD412430D3AEB0468089AF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; 7AF9EF500482C84F02849647 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPENote.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.h"; sourceTree = "SOURCE_ROOT"; }; 7B5560AEA0CB3E507C16140C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7B81083FC4CCD2D096D93162 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; }; 7B83011366B95CC61212E5D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7BBD4B2D9A9EF13CE4357979 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 7BD4AC17C70E6771254B962A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; }; 7BE8C42578F5E2E59D63F615 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; }; 7C70EC5AB0A3B9B14C0C0F05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C7FF651870B180BABD63D9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C8C5464933F6E34CF33578B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 7CDA22D66C8FEDF1B644D041 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; 7D2013E3BCFFD5A65D970BBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7D7A6251E976BF292861510F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToneGeneratorAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 7DA062415E40E3BEC0B847FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; 7DA9D4E06E9B9875EC3880AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7DB8F4BB2B4884803207417F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiFile.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.h"; sourceTree = "SOURCE_ROOT"; }; 7DBF83B26277D13CB3FC1479 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ImagesDemo.cpp; path = ../../Source/Demos/ImagesDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 7DD8FCFA80D230B432ECD149 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 7DE074DF0D3074275DBBF9B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; }; 7E847EBFB83896EA08975F8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReverbAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 7EC42C604603E1ED621E635B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 7F2A233FFE5CDB2681F0DC28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiBuffer.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7F7EAF366320BA71741B68C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; 7FC3D3D142D1B4398D07FFC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 80202384D81020DAE2072A1A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; }; 806A7A3BFC684B4D9E25ABDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_devices.h"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.h"; sourceTree = "SOURCE_ROOT"; }; 807F5EE489018BC1956AAD5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Sampler.cpp"; path = "../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp"; sourceTree = "SOURCE_ROOT"; }; 80A57920E6EA9C2E881BC3E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MACAddress.cpp"; path = "../../../../modules/juce_core/network/juce_MACAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; 80E5245755DC2ECC4C6BABD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; 810292CC81EC98F57F64D79B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLImage.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp"; sourceTree = "SOURCE_ROOT"; }; 8139DFF71A397BB4FC1C4413 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; }; 81516145E8F737D290135758 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; 818729A3311F3A7B8DB03764 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPressMappingSet.h"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h"; sourceTree = "SOURCE_ROOT"; }; 81D03597CE85238988E0F45D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; }; 824822F2A6A539B2D797DE23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_core.h"; path = "../../../../modules/juce_core/juce_core.h"; sourceTree = "SOURCE_ROOT"; }; 825690E8512078D4F8595CCD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 82AABF91CB005E5463F1D522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeRectangle.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 82CDD7D8E38202F102788090 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 830A4891F6838B2A60C54C8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 8329E2A86DF3E781B790F128 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedButtonBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h"; sourceTree = "SOURCE_ROOT"; }; 8366D5DB3CBA57E06C1D896C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLGraphicsContext.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 8396EA11DD261260F1A96DF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LADSPAPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 8413B0A6941430B8CEE7A573 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioRecordingDemo.cpp; path = ../../Source/Demos/AudioRecordingDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 842FE973E11AAEF49D77AFE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; 8430FB57248237DDAD4CE4AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 8452076B5EAE822DD445458F = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 84BAF97675BE522B63DC9A4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SystemInfoDemo.cpp; path = ../../Source/Demos/SystemInfoDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 851BE5F4B476FCC76DF56FEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlacAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 857CE7D1DC614FCDD19F617D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 85D328C928A4CD6A1AEAB644 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 869FEB02E31658BD16664F1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Whirlpool.h"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h"; sourceTree = "SOURCE_ROOT"; }; 86BFE5D66623DB207CEA3F9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 8717F2B47F51F0473C041760 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; 872C4AF5B81B1664032594A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginDescription.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp"; sourceTree = "SOURCE_ROOT"; }; 877B42968286AAD56527516A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooser.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h"; sourceTree = "SOURCE_ROOT"; }; 8838FC2F76E6D775B2E75F23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 885A0F1B41FFAF32ADC70925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colour.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colour.cpp"; sourceTree = "SOURCE_ROOT"; }; 88A8F1D957ED293712DE0E23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; 88D689399C7F69D687208673 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../../modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; }; 88E9F6A65110F4753E115FF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; }; 891BBF2E19D80372FA886E62 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_File.h"; path = "../../../../modules/juce_core/files/juce_File.h"; sourceTree = "SOURCE_ROOT"; }; 89C47678AF8B46702EC0EE66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_utils.h"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.h"; sourceTree = "SOURCE_ROOT"; }; 89F0B6B952BC68FD271A652E = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; 89FD2460344D6B0FF04F70D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorGraph.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h"; sourceTree = "SOURCE_ROOT"; }; 8A89A7C0DEC85C7773251B15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 8A8CA6C781EFD5F0997E7507 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; }; 8AE56D2F4E33B015C3D73EB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTMidiEventList.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"; sourceTree = "SOURCE_ROOT"; }; 8AF04828A59F79DF2FD31E9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; }; 8BB3867A9236FF57B46581A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BDC3161654344162ECDCB32 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemStats.cpp"; path = "../../../../modules/juce_core/system/juce_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BFDB525631BDAD3A71CB307 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; 8C4D0CE8E6E62BDD83F4432E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEValue.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp"; sourceTree = "SOURCE_ROOT"; }; 8D121C4BCB6A36684EC59FB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MD5.h"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.h"; sourceTree = "SOURCE_ROOT"; }; 8D3B18C8A23499AB88F6B700 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; 8D437AEAA6F7E3F0DCA43E8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPool.cpp"; path = "../../../../modules/juce_core/text/juce_StringPool.cpp"; sourceTree = "SOURCE_ROOT"; }; 8D70A7277DDD7B7974E9F178 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; 8D7BDA5CDDCCD2F7BE67037A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 8DA438AAAFBC64C11DE329B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; 8DDCA7803625CF8DA817326A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; 8DDE64B4A0EF76038498B47D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; 8E1CA5F01D04FA8F6CCFF91B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; }; 8EF11A0D1370915CA7AF4F64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Vector3D.h"; path = "../../../../modules/juce_opengl/geometry/juce_Vector3D.h"; sourceTree = "SOURCE_ROOT"; }; 8F5B02778218DDD357C40D7D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; }; 8F61AE043AEF6DCD47A36787 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MP3AudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 8F7D5E59BEB35E858363B752 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 8F8DD95844D647749BA662B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Primes.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.cpp"; sourceTree = "SOURCE_ROOT"; }; 8FA3BF005120A8BF8DD1BB80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 8FDA4FBF31997AEBF3AE10E4 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 9053A4532020825D924EFB35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 905A87EA32A249ABFD0A90AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; 9079FD325609A4E67E44F3ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_events.mm"; path = "../../../../modules/juce_events/juce_events.mm"; sourceTree = "SOURCE_ROOT"; }; 912E1A63093C3FA3BD2AFE61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; }; 91F4E52A1B31FB5998FEF665 = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = "SOURCE_ROOT"; }; 9200669E9DB4FE676A07CD77 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 9297F74907620178A1EB41DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChildProcessDemo.cpp; path = ../../Source/Demos/ChildProcessDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 92D3CD3845968E4FAB93576D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LiveConstantDemo.cpp; path = ../../Source/Demos/LiveConstantDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 9327D6AA8805BE7AD971D68C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; }; 937A2E7B951F5D527DF54245 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; 93B3667FE4186CD75426EA53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertiesFile.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h"; sourceTree = "SOURCE_ROOT"; }; 945E090A8DE2E776F7033143 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 9461C1D2300CC3A91EC2D169 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; }; 94D8CEE59AC2644453705A74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 94EC001CF772AFBA6D95F922 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLHelpers.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; 94F15602279A81777504F22C = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 95227EEF8BCCAD5E1840DB48 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameterWithID.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h"; sourceTree = "SOURCE_ROOT"; }; 95568D274244E02150C7F417 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V1.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h"; sourceTree = "SOURCE_ROOT"; }; 9617B3B5FA9439D342F23ADC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationDemo.cpp; path = ../../Source/Demos/AnimationDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 96F43E8EB364D3E40689D368 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormatManager.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; 9750423DB3DB6570382DA3C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Headers.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h"; sourceTree = "SOURCE_ROOT"; }; 97C3A2B9575153E4CA0537B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectShowComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_DirectShowComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 9895036432E9AE55EE16323F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_video.mm"; path = "../../../../modules/juce_video/juce_video.mm"; sourceTree = "SOURCE_ROOT"; }; 989CD2B68A4EF90456E19ED9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarComponent.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h"; sourceTree = "SOURCE_ROOT"; }; 98D55DE4706A31BCD28458C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 9918F60F5CC834C782543712 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; 991F4C3B42036B549C321789 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; }; 99E8C71CC462DDDBC52D360C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; }; 9A4190B5B7E788B732637F2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 9A60BF3F27FD10A058F4E956 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; 9A895B323AC3DDD249D99CB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; 9ADA045A14202C9CF4F8CD40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BorderSize.h"; path = "../../../../modules/juce_graphics/geometry/juce_BorderSize.h"; sourceTree = "SOURCE_ROOT"; }; 9B089D1649E4B5BC8AF63EC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WavAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B37E4C205A31B36B559E613 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDemo.cpp; path = ../../Source/Demos/VideoDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 9B9E034C5761096ACB8A76C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_VST3PluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B9F578EC77AA988C919AC6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputSource.cpp"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 9BAE20FD7E2CBA120DDA82B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 9C734938D5FF5DA7827C74C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseCursor.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp"; sourceTree = "SOURCE_ROOT"; }; 9CA3071EC654EB7FFEC70736 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainWindow.h; path = ../../Source/MainWindow.h; sourceTree = "SOURCE_ROOT"; }; 9CC0810F5BAF70D00033FD22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadPool.cpp"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.cpp"; sourceTree = "SOURCE_ROOT"; }; 9CDE3A30398FB033E5AE8498 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; 9CED8F32B3718A90481EEDE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferedInputStream.h"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 9D0B40C4BF8FD939C33E3D59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; 9D17E29319340B927D1BC51D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AudioCDBurner.mm"; path = "../../../../modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm"; sourceTree = "SOURCE_ROOT"; }; 9E14C2C627D2F7B3C817468E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 9EB2AE5A72227301C365568F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 9EB305226A801CB7012884F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_freetype_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 9F75FFB61C74FEECE61A7138 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MultithreadingDemo.cpp; path = ../../Source/Demos/MultithreadingDemo.cpp; sourceTree = "SOURCE_ROOT"; }; A04410519258755461444678 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; }; A078E4C69AFA4FAE8DCC66BD = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; A1244D54910A10100ECF8EE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A166FEC488A2EE5290FF0722 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HyperlinkButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h"; sourceTree = "SOURCE_ROOT"; }; A169179FE554C215416FCD7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; A1A8D19C2E587194909B2913 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; A1EFF3DBE5F7B0C07AE59D7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; A1F10BB1A2745DC95DDDE0D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLContext.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp"; sourceTree = "SOURCE_ROOT"; }; A22726A53515D845743DFF84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; }; A235B5113FB4E5DA6267975F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; A2EBD42F94D37FFF10F25985 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyListener.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h"; sourceTree = "SOURCE_ROOT"; }; A2F0B85560090CFAC7D95132 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; A2F403F649AC0AA7CA47EF65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; A3BDCE78A0AE63BEA0DDE600 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; A3D5134838BA1CEAF4284E9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; }; A464874D0B8C63AA78C937B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; }; A4A64EF73E28AFFBD826AD60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; A4A7D4C4EF2A24F743D107B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioThumbnail.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp"; sourceTree = "SOURCE_ROOT"; }; A507AD139DCC0A43765C1FE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; A539F7B46DD001B3BF03B16F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageCollector.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp"; sourceTree = "SOURCE_ROOT"; }; A6285ED9A26A9DA0A2931910 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A62BF9AB6EB0496F5BCE78B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; A631CD93C2809211DD926938 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePoint.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp"; sourceTree = "SOURCE_ROOT"; }; A687283C2BEC2595A10EEE1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; A6BC854E7C5B932911B2AFF2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; A6EE2D5A258294BAC600F75B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; A6FADD9A009BA1F1D36239FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LADSPAPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; A73DB3E8639A4D39F9F9C50E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; }; A74BFBD7C3C18103B51F6342 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; A763B4ADDB7BDD941FFE51CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; A8243EDBF34E3E3D4338D6F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; A83559E2258B5856CFD68EAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; A83639AF2210589E5367ABCF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = UnitTestsDemo.cpp; path = ../../Source/Demos/UnitTestsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; A8878B1B86367E161868E49E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlacAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; A88B3DDBD1939456E225E36E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; A90C7FF8F98D21494524B726 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioAppComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; A90EA62A0A4A1B5E62CF0BE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; A966B620E1FB219BD4A4F3D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A99853D3CB536CFDB6C91F98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; A9BA8E7E434AC82F4604C773 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODeviceType.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"; sourceTree = "SOURCE_ROOT"; }; AA920A77D326B0F5E53F567F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; }; AA967AC6E8FDCD7502272DA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; AAA2590D363C6DE624D320A6 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = System/Library/Frameworks/QuickTime.framework; sourceTree = SDKROOT; }; AAC68E522F44DA7AD25574C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioTransportSource.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h"; sourceTree = "SOURCE_ROOT"; }; AAEBF0976E57F4756E4AE31E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; AB3C484314062E809AC41132 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLAppComponent.cpp"; path = "../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; AB589E1E7EC83EA620B7F780 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileLogger.cpp"; path = "../../../../modules/juce_core/logging/juce_FileLogger.cpp"; sourceTree = "SOURCE_ROOT"; }; AB92BC8961EE90E0F23FD6C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceSelectorComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h"; sourceTree = "SOURCE_ROOT"; }; ABDFE5D85E6ED3CBB8AE1F50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; }; AC043128E8D43D6EA4E29824 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; AC25983CE9B938D1DB002A98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLTexture.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h"; sourceTree = "SOURCE_ROOT"; }; AC3132AD4826E77E807ACD3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; AC3600881A53014EFC1CB8D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditorKeyMapper.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h"; sourceTree = "SOURCE_ROOT"; }; AC70FAD27248857B6D16BD33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioSynthesiserDemo.cpp; path = ../../Source/Demos/AudioSynthesiserDemo.cpp; sourceTree = "SOURCE_ROOT"; }; AC7A214BA7B1A172F5B31735 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPairArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringPairArray.cpp"; sourceTree = "SOURCE_ROOT"; }; ACDD5519D82FDB831085B8B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; AD33778491D50853BFFED9E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; AD55906C5D8552E842C98EDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WindowsDemo.cpp; path = ../../Source/Demos/WindowsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; AD593F766DC27414A94FABEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; }; ADDA92448B0EC5EC1C6D5A2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ElementComparator.h"; path = "../../../../modules/juce_core/containers/juce_ElementComparator.h"; sourceTree = "SOURCE_ROOT"; }; AE68B9AA74EE6F138B3E0B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; }; AEF26EF11BEBA847F152A1D5 = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = "SOURCE_ROOT"; }; AF396B7AE1BE00099A19D191 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; }; AF98F62B0DD92F26D0018A98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; }; B0287B0EE6C4EE20EBF95FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEValue.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.h"; sourceTree = "SOURCE_ROOT"; }; B033B7729D2D204BBD71BDD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; }; B0DA13336DA07392C689323C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; B10A9A3B4A4C2507F514D5F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; B13A8EA6840489EB88D77800 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OggVorbisAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; B17EF578E9B736B1C5A5E8BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; B1C05A8D59655916054612D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LiveConstantEditor.h"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h"; sourceTree = "SOURCE_ROOT"; }; B27A7B237782F9E15E4BF8D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; B2BD3F284DBA9EDFFF80ECE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; }; B2C11FB8D4762ABB6CB9B934 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Common.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h"; sourceTree = "SOURCE_ROOT"; }; B305C104F5A573E8AFEFA763 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormat.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; B341BC1AD30CCDDAD967EB0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Synthesiser.h"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"; sourceTree = "SOURCE_ROOT"; }; B3569FEFF39695CCD1E060AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; B36D9787DD79D0DED8D791F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B37E6323D9D3C3CA68672D6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; B3976635944EC69837499F9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; B3BF13E52ED6443A85AF0230 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEMessages.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h"; sourceTree = "SOURCE_ROOT"; }; B3E2A6A5C59E1462DF544A06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B44CC152D6454AF6F16E9EF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; B51567633F44A10D4543B219 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Reverb.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Reverb.h"; sourceTree = "SOURCE_ROOT"; }; B56F4C53187D40137670DB1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableObjectResizer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h"; sourceTree = "SOURCE_ROOT"; }; B589CF5248A17A319E5EC80D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B59B0121C46D4A2B9EC3BBFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPool.h"; path = "../../../../modules/juce_core/text/juce_StringPool.h"; sourceTree = "SOURCE_ROOT"; }; B63933880C456903722F46A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; B66D06DC55FFC2B99D43F4E2 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_utils/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; B680E1C22A5885A8336D8DA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; B6874BAE87F275944C07B498 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_video.h"; path = "../../../../modules/juce_video/juce_video.h"; sourceTree = "SOURCE_ROOT"; }; B688441D29BB51A9C4E83CFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp"; sourceTree = "SOURCE_ROOT"; }; B6B6519216FF4413B698C889 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTreeSynchroniser.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp"; sourceTree = "SOURCE_ROOT"; }; B6EFD8D461F7BC1CA4954B69 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_extra/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; B731664FB9EEEBC618BAB5A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TimersAndEventsDemo.cpp; path = ../../Source/Demos/TimersAndEventsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; B745680D019FDB64D3A65508 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; B7AE6C1C50421EE6E02045DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; }; B84A6E341207FA1F60EB5AF1 = {isa = PBXFileReference; lastKnownFileType = image.png; name = "juce_icon.png"; path = "../../Resources/juce_icon.png"; sourceTree = "SOURCE_ROOT"; }; B8BDAFE861AD60BEC44D7ED5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; B8D4B6843E55CC07167085AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; }; B8F25B3AB59A577E53304AC0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; B97B2C0C6A4322FFAACE1C39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; B9A524CB6B0598E4D7F7DD93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailBase.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h"; sourceTree = "SOURCE_ROOT"; }; B9D26C6C4CED62E6708B6865 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; BA008864E9E4F195E61A21F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinearSmoothedValue.h"; path = "../../../../modules/juce_audio_basics/effects/juce_LinearSmoothedValue.h"; sourceTree = "SOURCE_ROOT"; }; BA5A007216A3E496509D5CE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; }; BAC70BABB531B634736585A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; BADD02151C3951E4853DA06D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BigInteger.cpp"; path = "../../../../modules/juce_core/maths/juce_BigInteger.cpp"; sourceTree = "SOURCE_ROOT"; }; BB29289B196047505CF5EE6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; BBC3C77A4D771DFCCB08B874 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileFilter.h"; path = "../../../../modules/juce_core/files/juce_FileFilter.h"; sourceTree = "SOURCE_ROOT"; }; BC2E34C0883EB362398AC448 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; BC30642EEF908E1C7757690B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; BCACFA5E8370800EB6487CC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; }; BD14CA532122022C26920DF8 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_devices/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; BDDD1C149C23BCA4F501BEF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; BE260594789CF43E1A4EF4E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; BE9B3F83B6037C848596286B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"; sourceTree = "SOURCE_ROOT"; }; BF2CAEB6EC641789133B627E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageFileFormat.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; BF3AF2E3B0D2184B766E1B26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ASIO.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp"; sourceTree = "SOURCE_ROOT"; }; BF6E19C2CA2032242B7A2556 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; BF7EE64D6E337BED36814439 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPENote.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp"; sourceTree = "SOURCE_ROOT"; }; BFC3C3EBCDDABF1529A317FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; }; BFCAF7A5D017D3BC4CD51D60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; }; BFE7C09CA4AFAC973C267D11 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_core/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; BFEEC370F9DAD159E5789EB9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../../modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; }; C006CE2DED5AB537B5C3FD5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; C054B94424A80B5DCA6CC52F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GenericAudioProcessorEditor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h"; sourceTree = "SOURCE_ROOT"; }; C06F64DF6D95D5C9C8B2D5F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; C0918662F3E28570DF17B041 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; C09840AD421A11A244964AB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; C0A9EF3D27D21B307649111B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Box2DRenderer.cpp"; path = "../../../../modules/juce_box2d/utils/juce_Box2DRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; C0C8D6D7D14DFAFB169FFDCF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ValueTreesDemo.cpp; path = ../../Source/Demos/ValueTreesDemo.cpp; sourceTree = "SOURCE_ROOT"; }; C0F898298ABF2458D6C5AF17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; }; C1CBC5B338453DA492698C3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; C20FD8D605E6714D473D5C9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; C2FFDDA61218A94403D5FE56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; C411A91DC3B306E2C417F1BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; }; C416D60EFF7F25E0080A94D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C43CFE8A48F03CCBCAE08D24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Box2DRenderer.h"; path = "../../../../modules/juce_box2d/utils/juce_Box2DRenderer.h"; sourceTree = "SOURCE_ROOT"; }; C47BAAAD3DF91B17A7787941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; }; C4B8D5FC3E906DA9F6A4379E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Network.mm"; path = "../../../../modules/juce_core/native/juce_mac_Network.mm"; sourceTree = "SOURCE_ROOT"; }; C4CE4565F5D41303888F6A59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_QuickTimeMovieComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C4E873C0CD6E9C76EA2997C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; }; C509F69A37C9A9053D6E9546 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; C549EFF977C210EB398C9A33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../../modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; }; C5A932A82042E2DAEBE1C302 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; C60CE259EE4CFE6AC61044FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; }; C6D9D6E03D4B740DDF9B3C57 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; C7026BE1C751908FEA9E5AAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; C7089BDB2F572546643160C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AlertWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; C77F148F8E8E9F805D730386 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; C784392363846286D29F207F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationBase.h"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.h"; sourceTree = "SOURCE_ROOT"; }; C7A943716B2FD728EFAC84D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; C7C8C7D58A08D1583E0C2E6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; }; C812CDED0B089FD1B76FC9EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioLiveScrollingDisplay.h; path = ../../Source/Demos/AudioLiveScrollingDisplay.h; sourceTree = "SOURCE_ROOT"; }; C8A42EE493A1DF2E283C245E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; C8CABD53634D53E64132CAAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CameraDevice.mm"; path = "../../../../modules/juce_video/native/juce_mac_CameraDevice.mm"; sourceTree = "SOURCE_ROOT"; }; C8E3220EC4F4E4242CD3026D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; C92A35B9676A81157B54284A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; C993FAEDCEE0A33CAB42F995 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Box2DDemo.cpp; path = ../../Source/Demos/Box2DDemo.cpp; sourceTree = "SOURCE_ROOT"; }; C9C1FC1B4628557AE5C7E7ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; C9DA15073F3BF252BAFF9D69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LAMEEncoderAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; C9DAF05F2DAF78159647512B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; }; CA0E3166C77EB91555893286 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; }; CAD3749B6A5BDB2BB00D3498 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandTarget.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp"; sourceTree = "SOURCE_ROOT"; }; CAD598C03B7C93B4AF912E66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; }; CBDC7CC5CE4132A5D63B583F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FloatVectorOperations.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp"; sourceTree = "SOURCE_ROOT"; }; CC5F6FD5F339E1811037EABE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; CC79B254C68555B4FFEBC692 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Random.cpp"; path = "../../../../modules/juce_core/maths/juce_Random.cpp"; sourceTree = "SOURCE_ROOT"; }; CCD2ED6F6F3ABCC172DC4957 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; }; CCEC8F9385AE939B24D27954 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = JavaScript.cpp; path = ../../Source/Demos/JavaScript.cpp; sourceTree = "SOURCE_ROOT"; }; CD8B9E60EFE0A0ED368EE3D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; }; CD9B8C96642C7F691FCB3EC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; CDB41763FDE907C3C0E75374 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; CE045161909A4EADCE49629F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; }; CE276E0CAE722EA80F7985BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; }; CE7D4E7030BF4BB4B1093B5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; }; CE89334A964AFF33758CBDEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_QuickTimeMovieComponent.mm"; path = "../../../../modules/juce_video/native/juce_mac_QuickTimeMovieComponent.mm"; sourceTree = "SOURCE_ROOT"; }; CF1DA3CB41AA43B349D3A6B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterBool.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h"; sourceTree = "SOURCE_ROOT"; }; CF626DE27EB763C9BCFD4F15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; }; CF7CEC8C260AC623C222264C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; D04960564D2860B19FA5D1CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Sampler.h"; path = "../../../../modules/juce_audio_formats/sampler/juce_Sampler.h"; sourceTree = "SOURCE_ROOT"; }; D057633F8F7684AB7B4B28AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; }; D0736DBF1DA74CBA695DE54C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZoneLayout.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h"; sourceTree = "SOURCE_ROOT"; }; D0A84ED14FC2F7A143679258 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; }; D0ADA33F00B3BD83C1D5AE37 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; }; D100B2EDF88F2C019E4D2311 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; D1D8A53A7614F106942DADED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; }; D1E31AC47CCAB97418EB646D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioUnitPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; D3A84810AE56991562B6F252 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDiff.h"; path = "../../../../modules/juce_core/text/juce_TextDiff.h"; sourceTree = "SOURCE_ROOT"; }; D3D86F3CDD057C174A16E382 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Font.h"; path = "../../../../modules/juce_graphics/fonts/juce_Font.h"; sourceTree = "SOURCE_ROOT"; }; D400C8DFE9DA635FDDBF57BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../../modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; }; D45AD25E5AC67424EAE5A85F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D574F24273E747525891B11C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; D5942A1C95986841CA286736 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; D5C59D717CF1C0F15164AD43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; }; D61BA88D3AC9556266FE4368 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; }; D6238E383F396236E3A4C054 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; D65129253734C1917354C08E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPCompressorOutputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; D6AB846628BE74C5349C95CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLContext.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h"; sourceTree = "SOURCE_ROOT"; }; D6B8E586D30632EA07C48D6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LocalisedStrings.cpp"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.cpp"; sourceTree = "SOURCE_ROOT"; }; D74B19291F4B0370A2742A63 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; D767A88B0BC208DECCC1AA3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; D7A951371F530DA0A350AF44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; }; D7B1BBA8FE789A80E86CEA03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; D7D048CFDB58B67E9BAB7448 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserVoice.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h"; sourceTree = "SOURCE_ROOT"; }; D80487E6482EB12BF2C6BD22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; D807B4138306397F8A93FA16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioVisualiserComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h"; sourceTree = "SOURCE_ROOT"; }; D8AE63002C7273F98226394B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; D8DFE1C66668C30215288BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInactivityDetector.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp"; sourceTree = "SOURCE_ROOT"; }; D8EB3FEADD047C7AEFF9C8C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LuaCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; D93CE990D75211F4A5EBB4F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; D94C07E10FC25EE303D64992 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; D999C4C8DE51CDFB861B863D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; D99C0F89D572BBF219A7B991 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; }; D9AAC6516BAD4F5BAE9CF297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; D9DFC1CE9A4EF9230B49D697 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDescription.h"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h"; sourceTree = "SOURCE_ROOT"; }; DA78B13D87626C49A2140FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; }; DAACF5AFA6B6994384BA4984 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; DADF2C478777BA8EEBB55CDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; }; DAF2C8E641253779B6DFF139 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; }; DAFB19E49A6221854341BE2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; DB748B0D9227F5345683CF7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; DB8FAF091C9E78AE5F64701F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; DC0AE99EFE4F88987CA2F705 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; }; DC6930EE56EEA5221CFECAB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatManager.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; DD24BAA1E8104B6D3554A222 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = XMLandJSONDemo.cpp; path = ../../Source/Demos/XMLandJSONDemo.cpp; sourceTree = "SOURCE_ROOT"; }; DD4A812225F47E590FCF2E29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; DD5F4BFEA497212883A869A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; DDDB707A59DB489D195BF99D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; }; DDF02BD16454102C353FCD18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; DE3BEA732CBC57AE71E94159 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; }; DE534A5A2D3B48BFBCE598B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; DEB0E2F28130100B1EFD250E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; DEFD6AD8B2BBA57017DB4A13 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_box2d/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; DF9B26660FAF5ECF2EF620B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; }; E04EC9F05219CEEB4469A437 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiOutput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h"; sourceTree = "SOURCE_ROOT"; }; E0565A19E2589729259C7116 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLRenderer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h"; sourceTree = "SOURCE_ROOT"; }; E0B8277ABF9DDAC8C12DE26D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MixerAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; E0DB91A472A77866258D12B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; }; E1107017C2BF7ECC847DF01A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorPlayer.h"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h"; sourceTree = "SOURCE_ROOT"; }; E199DDD8F06741F21D8F9CFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; }; E2127416236840EE3AF32D5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormatManager.cpp"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; E23EDF80FD5320232483D80F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; }; E243FC2BD3446D9518049538 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_events/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; E2C5C95247FDECA4C39F1415 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; E30009C6743474CD6195F5F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; }; E31FB2C8B34A146D28A4C611 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedAudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; E32D1C481161F063918F76AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; E3415348D45BF63A7CE8CF6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginInstance.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"; sourceTree = "SOURCE_ROOT"; }; E34DFFF51D0F7C34FB826C4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FloatVectorOperations.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h"; sourceTree = "SOURCE_ROOT"; }; E3DC9C2BBC81EC0B035AA32C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BluetoothMidiDevicePairingDialogue.h"; path = "../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h"; sourceTree = "SOURCE_ROOT"; }; E3E3CD4660C20BE120E8BB1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilenameComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h"; sourceTree = "SOURCE_ROOT"; }; E41A387D233A436131D7910E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; }; E4369FFC0E1A6547580D671F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../../modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; E489FF0264C957A8F71F346A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessage.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h"; sourceTree = "SOURCE_ROOT"; }; E4981056661C3F251FECEC32 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; E4BD5632ADD38CF8BAD38A76 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; E5058DD199CEC42ECE922239 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Justification.h"; path = "../../../../modules/juce_graphics/placement/juce_Justification.h"; sourceTree = "SOURCE_ROOT"; }; E52756E1DB553ED02D829F61 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; E6333272C33612B6A7D6073E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDBurner.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp"; sourceTree = "SOURCE_ROOT"; }; E6E0ADA4E3632540A8ADC7D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; E6E0FE3CBDBE2554B527CF60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSourcePlayer.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp"; sourceTree = "SOURCE_ROOT"; }; E70A283A87989F5A1CEDE6A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResamplingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; E7113B21A18CD89165BAFD4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_android_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; E7A5AF3EBCFEEF8787F2D14F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E7EA99CD84E1EC598F4984DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; E7EE6BDC0E3A0739529AED91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSubsectionReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp"; sourceTree = "SOURCE_ROOT"; }; E80CA3836329ED0EEC74BAE6 = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; }; EACCBFA17F4D07ECE058EEBB = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; 229D2DAADACF15540C3BBD15 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JuceDemo.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; DEE5EFE8148FD2DC743A7DD7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LookAndFeelDemo.cpp; path = ../../Source/Demos/LookAndFeelDemo.cpp; sourceTree = "SOURCE_ROOT"; }; E5E02A3C4E942105FEDCA885 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChannelRemappingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; E682A3A52BD15D5CA4933C12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; }; E7B21011F93915ADD2CC5DD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; E8128A35828C860977FEC54C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatWriter.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp"; sourceTree = "SOURCE_ROOT"; }; E8B785D8DD9C49BC7FF5EA75 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; }; E8D96BDC76CD02DF3E238A88 = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tile_background.png"; path = "../../Resources/tile_background.png"; sourceTree = "SOURCE_ROOT"; }; E8DBB02B17A6E144D08E4CC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Matrix3D.h"; path = "../../../../modules/juce_opengl/geometry/juce_Matrix3D.h"; sourceTree = "SOURCE_ROOT"; }; E98EA1189613978EA4E78D85 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; }; E9A3E96E32C301EE817059C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E9B8B3FAECC80B66257B14F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BlowFish.h"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.h"; sourceTree = "SOURCE_ROOT"; }; E9BBEE1B3986E0829AA44133 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; EA082125C757D1FD63BA38C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; EA3436079F0D78BB76CD15F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInactivityDetector.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h"; sourceTree = "SOURCE_ROOT"; }; EA7D346CAE6A07C0B395816B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; }; EA9FE6D1E0A072E73312916C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; }; EB369EA30D31CD710A09B7FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; EB6F5F8F57F0117C10735583 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODevice.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h"; sourceTree = "SOURCE_ROOT"; }; EC8A992EA9CFA558DB9F950E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; ECAB8BD2816B0BEFCD9F6961 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; }; ED3DE86815324354C48631D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; ED6224ABC715AAB68661F4D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_box2d.cpp"; path = "../../../../modules/juce_box2d/juce_box2d.cpp"; sourceTree = "SOURCE_ROOT"; }; ED80E9909586DD64BDE03A70 = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = portmeirion.jpg; path = ../../Resources/portmeirion.jpg; sourceTree = "SOURCE_ROOT"; }; EE7001BD5206A8D8EA2D125B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; EEA020419EF58E90C10AAE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; EEAA1BB6254EDE07A7ABAD65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilterAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; EF8055850F3DEA173761E3B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; }; EFD1BD42000EE640A17EE1ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReaderSource.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp"; sourceTree = "SOURCE_ROOT"; }; F037091D4A3012EBBA1E808F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; F043752E829829CE2A364F39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTreeSynchroniser.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h"; sourceTree = "SOURCE_ROOT"; }; F0ACCF70936A0BBA2A2AB289 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; }; F1A30E40F7388D16BA35B0DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SHA256.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp"; sourceTree = "SOURCE_ROOT"; }; F1A9F544E889DDA995415F6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSourcePlayer.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h"; sourceTree = "SOURCE_ROOT"; }; F1E995A1E00C6545A4C3297B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = KeyMappingsDemo.cpp; path = ../../Source/Demos/KeyMappingsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; F26339EFC03BD8D22016EEB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HeapBlock.h"; path = "../../../../modules/juce_core/memory/juce_HeapBlock.h"; sourceTree = "SOURCE_ROOT"; }; F29F6395C4935C1A663A1D15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; F2A15E99B15FBE0CC5F3712E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEInstrument.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.h"; sourceTree = "SOURCE_ROOT"; }; F380FE12E78619086BA33CDB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnection.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp"; sourceTree = "SOURCE_ROOT"; }; F3A9E0AE5ED05CA1AD6F56E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemAudioVolume.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"; sourceTree = "SOURCE_ROOT"; }; F3AF542BB3A9E6CC1D6E37DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginListComponent.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; F3B746DC92EFE7A9B8EA9E43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoableAction.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; F42FE65C750920656EA22BF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; }; F43CED7548EE5C9F841CB1FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; F4676BB721F96DC5DDDAE746 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CoreAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; F48E6A27D809C49D42D3202C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; F4AD24F8DDD10C938759CEB9 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_opengl/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; F4BBD7DEBE0F1DD2CE45C411 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; }; F53D12880F3354B4FFA480E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioIODevice.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp"; sourceTree = "SOURCE_ROOT"; }; F584FC21C26C72A81D840840 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; F58760A8EE18630F97C7B646 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; F5B288379859F5C9F4FB83BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_ios.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_ios.h"; sourceTree = "SOURCE_ROOT"; }; F667601C17DC912B73B817DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Clipboard.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Clipboard.cpp"; sourceTree = "SOURCE_ROOT"; }; F696BA0801B1A34571346EDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiRPN.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp"; sourceTree = "SOURCE_ROOT"; }; F6DB1C1E0D9315245E87CBC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_events/messages/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; F704F70F80BA62A48F3651BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; F746F30147C6BE88F60E92CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; }; F753A7C2031832BB628CBB2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_ALSA.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp"; sourceTree = "SOURCE_ROOT"; }; F779C79AC37C83A60B997641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; F843FC09B4C2A10C76D8D35C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginDirectoryScanner.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp"; sourceTree = "SOURCE_ROOT"; }; F881704607DB79F9A3CF7491 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; F89584972F16A8EC49E5E74D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; F91A3C07D81BE2D4A191C9A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; F965E478C21D19EF32760A9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; F97F775EDCD2D1C497625D4F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; F98BEA2FEE66A3DEAD9D43B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; F99F73DEBB0EB724142FA930 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; F9F4D5D9783B88F2DE889023 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SubregionStream.h"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.h"; sourceTree = "SOURCE_ROOT"; }; FA5777F9FFCC6BE9D9F98874 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; FA8B6B0F6D43146BAAE04D4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../../modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; }; FAC5DDBFB00254C35D8987F2 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; FAFF7B60A09FE1BFD468163B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorGraph.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp"; sourceTree = "SOURCE_ROOT"; }; FB2CB5482F056ACD6AFE12A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; FB8BE0538AD9420DD4D1E9C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; }; FC14A2D9F860584459B762F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorValueTreeState.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h"; sourceTree = "SOURCE_ROOT"; }; FC1BA0654179A585DF5B9DC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; }; FC63A33CA2E025F5C4C22CD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; }; FCA788F92D5BB1640CD2AC35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioSettingsDemo.cpp; path = ../../Source/Demos/AudioSettingsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; FCAC296E92A219D70EB96AD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; }; FD2A08CE74C6EBC90CD44A49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; }; FD46383E356A5DDC1AD53380 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkingDemo.cpp; path = ../../Source/Demos/NetworkingDemo.cpp; sourceTree = "SOURCE_ROOT"; }; FDB35D95490B931CC376A943 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GenericAudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; FDBFCE2A24F32AEEB896819F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_ComSmartPtr.h"; path = "../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h"; sourceTree = "SOURCE_ROOT"; }; FDD9DA21786D445DCD01912A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; FE22C972B67EC59701E1CC3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; }; FE4C496CFA9A1E786253B005 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; FE613A570CE31071FD22DC06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; FEB688750213D0C64F18AA37 = {isa = PBXFileReference; lastKnownFileType = file.zip; name = icons.zip; path = ../../Resources/icons.zip; sourceTree = "SOURCE_ROOT"; }; FF34F4ED0C44B2BA4FBF22AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Draggable3DOrientation.h"; path = "../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h"; sourceTree = "SOURCE_ROOT"; }; 5D279CE438F706BB32D767C7 = {isa = PBXGroup; children = ( 9617B3B5FA9439D342F23ADC, 01C6528C4A0646873D4C3429, C812CDED0B089FD1B76FC9EF, 146EA869EC587DBE94B39198, 8413B0A6941430B8CEE7A573, FCA788F92D5BB1640CD2AC35, AC70FAD27248857B6D16BD33, C993FAEDCEE0A33CAB42F995, 014BF4937EAC7618FB1BCC69, 9297F74907620178A1EB41DE, 56416BD4B5AE294F24289057, 64E7D43C4F4037CFC2C5E2AC, 49412C044B88516D9AF59FDD, 55D08920D4992CD0721AA3E3, 4DB00B418C4F068BC5FC7314, 4D569839066D92C393F58EB4, 7DBF83B26277D13CB3FC1479, CCEC8F9385AE939B24D27954, F1E995A1E00C6545A4C3297B, 92D3CD3845968E4FAB93576D, DEE5EFE8148FD2DC743A7DD7, 52E4BE1BCD56D3676C84BEB0, 28CB3F1A8BFCE1F01FD630A6, 9F75FFB61C74FEECE61A7138, 24B00BED20980D12119C228F, FD46383E356A5DDC1AD53380, 2DA02BCCDBFD5BF2DA2D2FA9, 39A06D3252DDA6F97FB09495, 5AB15A508A07934A89398A6B, 84BAF97675BE522B63DC9A4B, B731664FB9EEEBC618BAB5A0, A83639AF2210589E5367ABCF, C0C8D6D7D14DFAFB169FFDCF, 9B37E4C205A31B36B559E613, 0443FA799896F7D084DED278, 0AF54289591CEBFBC19EDB40, 3482A5FDDEE5E5D405047999, AD55906C5D8552E842C98EDC, DD24BAA1E8104B6D3554A222, ); name = Demos; sourceTree = ""; }; 0BC17C2D6DC6B34C6F308432 = {isa = PBXGroup; children = ( E8D96BDC76CD02DF3E238A88, 703C1FBF6632A8078BBE05AC, 07553F86ADDF3CE278CBDE66, FEB688750213D0C64F18AA37, B84A6E341207FA1F60EB5AF1, 77179735C0CB2D89D9C61466, ED80E9909586DD64BDE03A70, 5784E19E01D5B23BDDFFA5AE, 28A7CFB0B6DF367A9830817C, ); name = Resources; sourceTree = ""; }; 41B2F9FB15FB255A0DEDCA00 = {isa = PBXGroup; children = ( 034AA69C5B2B4882EEFAD046, 556EFB307E14C15D5EA0242D, 9CA3071EC654EB7FFEC70736, 14EAA74C473506EC4920A160, 0F2AFC09338BE08479886B0B, 4DBE443E8F807D9366309A44, 5D279CE438F706BB32D767C7, 0BC17C2D6DC6B34C6F308432, ); name = Source; sourceTree = ""; }; DAD5A945FFB6D6920BF0D1F6 = {isa = PBXGroup; children = ( 41B2F9FB15FB255A0DEDCA00, ); name = JuceDemo; sourceTree = ""; }; 40D617E4CBC4C51B6B0DBBF3 = {isa = PBXGroup; children = ( 26A65E5DA320A85F90F1F58F, 2699A70E9610104CB8D30EC4, C0F898298ABF2458D6C5AF17, CBDC7CC5CE4132A5D63B583F, E34DFFF51D0F7C34FB826C4C, ); name = buffers; sourceTree = ""; }; A4AEAF285B0FCDC5B0E621A5 = {isa = PBXGroup; children = ( EA7D346CAE6A07C0B395816B, 29AA7E6AE1C062B740F4D80C, 4983B8B7E3666DCAC1A1644B, 753D9A91CFBFAA027F828C02, A3D5134838BA1CEAF4284E9A, 155D25867B048DB7685E6F11, 541E0CB92DCF5EDA093EDC7D, BA008864E9E4F195E61A21F8, B51567633F44A10D4543B219, ); name = effects; sourceTree = ""; }; 6FF3AFF30E2CFC40F54FE711 = {isa = PBXGroup; children = ( 7F2A233FFE5CDB2681F0DC28, 68AD6A94C88A46A483B823E0, 2BFAB8AE52821D3786BD7ECA, 7DB8F4BB2B4884803207417F, FB8BE0538AD9420DD4D1E9C8, 25615385230E47D7E70A2745, 1F25BC80413668F43F5D7864, E489FF0264C957A8F71F346A, 7828AF42E3C857F520EABDD7, 49BFC515C915A4AB53EC15C4, F696BA0801B1A34571346EDC, 586A4398FE1B9F7D6104BB70, ); name = midi; sourceTree = ""; }; 7C828ECEE88D9245ACDC4E6F = {isa = PBXGroup; children = ( 66F8C7EB6520AB9439433DF3, F2A15E99B15FBE0CC5F3712E, 6E386DC2F80B9C90264AB60E, B3BF13E52ED6443A85AF0230, BF7EE64D6E337BED36814439, 7AF9EF500482C84F02849647, 44BB5D71E35E65F5209292B8, 234392598E5388F29CFD6B50, 338AEA7AC3EF4CE113FC7303, 65DA0DAA8BDCE57A54C1CF26, 03E5796BC74758EBDBD49081, D7D048CFDB58B67E9BAB7448, 8C4D0CE8E6E62BDD83F4432E, B0287B0EE6C4EE20EBF95FDC, 07425F710A1C4AC479BE56C6, 59810BDD671438F997D32061, 0F0B65D33F71F27C1E366CF0, D0736DBF1DA74CBA695DE54C, ); name = mpe; sourceTree = ""; }; 9EF5C5A4E05F24140BA571CC = {isa = PBXGroup; children = ( 088BC49A72D9304769B2CBFE, D767A88B0BC208DECCC1AA3F, 0AC78EC782815C8325A3AC8B, 3924287A67ED97279455625B, E5E02A3C4E942105FEDCA885, D574F24273E747525891B11C, EEAA1BB6254EDE07A7ABAD65, E0B8277ABF9DDAC8C12DE26D, 2781E458566701273B805E8A, 2C26D37BEDBDC3B1DF19388D, E70A283A87989F5A1CEDE6A4, 78B172DD2AAFE3535D0460C5, 7E847EBFB83896EA08975F8F, 384887ECD58A0B42E3669617, 35F5E95BA127E63BA136DACC, 7D7A6251E976BF292861510F, ); name = sources; sourceTree = ""; }; 3C7D76B7DB18A3929B2EBE2F = {isa = PBXGroup; children = ( 42386AD366F1AD43B6B29364, B341BC1AD30CCDDAD967EB0E, ); name = synthesisers; sourceTree = ""; }; EAD085E39B98D2F88E2854DA = {isa = PBXGroup; children = ( 40D617E4CBC4C51B6B0DBBF3, A4AEAF285B0FCDC5B0E621A5, 6FF3AFF30E2CFC40F54FE711, 7C828ECEE88D9245ACDC4E6F, 9EF5C5A4E05F24140BA571CC, 3C7D76B7DB18A3929B2EBE2F, 7DD8FCFA80D230B432ECD149, 249A454A7EF1C3A07A66F453, ); name = "juce_audio_basics"; sourceTree = ""; }; 2C5B1CB88811CFEAD0B763E7 = {isa = PBXGroup; children = ( 64F04FAD3BAAEE3D0BA279B8, 3ADE61DBFBB6901CE2F1DB17, F53D12880F3354B4FFA480E5, EB6F5F8F57F0117C10735583, 70A5CABA464ECFC6A8449A87, A9BA8E7E434AC82F4604C773, F3A9E0AE5ED05CA1AD6F56E5, ); name = "audio_io"; sourceTree = ""; }; ACE42B83631F91D837D30DBF = {isa = PBXGroup; children = ( 8A8CA6C781EFD5F0997E7507, A539F7B46DD001B3BF03B16F, 3C1E6F7FBCCAFD6CCDBBB70C, 0E39FF2E9AD2BDC94CC015E3, E04EC9F05219CEEB4469A437, ); name = "midi_io"; sourceTree = ""; }; 06540B00B960F62D8C50A952 = {isa = PBXGroup; children = ( E6E0FE3CBDBE2554B527CF60, F1A9F544E889DDA995415F6D, DDDB707A59DB489D195BF99D, AAC68E522F44DA7AD25574C7, ); name = sources; sourceTree = ""; }; 5E43CCDE66C0FD9A873CF9A1 = {isa = PBXGroup; children = ( C9DAF05F2DAF78159647512B, AAEBF0976E57F4756E4AE31E, 61F28F9E82D39EFF702793D9, ); name = "audio_cd"; sourceTree = ""; }; FD6512AC0A0ECDCA3416F735 = {isa = PBXGroup; children = ( F881704607DB79F9A3CF7491, 088687334FC51A5136881578, 7416BF201FBFE7F978FD774A, 326FF20ABED3923B1418BB3F, F753A7C2031832BB628CBB2B, B745680D019FDB64D3A65508, 217D243937EB2507494A4D34, 3BFEBBE9B8185F65D69A1721, 9D17E29319340B927D1BC51D, 402BC49CAFCFFF067A88F96A, BAC70BABB531B634736585A9, 393A46D91FB481557E4DF792, 3ED5A2B64359FED05CF309C2, BF3AF2E3B0D2184B766E1B26, E6333272C33612B6A7D6073E, B3569FEFF39695CCD1E060AC, 74D283E02B3A2A293678FF9C, 5FCCFCEE3F6C4C51BB581572, 52D7400A47B19848EFCB5B51, ); name = native; sourceTree = ""; }; B5BC400B03F73362F263D1FC = {isa = PBXGroup; children = ( 2C5B1CB88811CFEAD0B763E7, ACE42B83631F91D837D30DBF, 06540B00B960F62D8C50A952, 5E43CCDE66C0FD9A873CF9A1, FD6512AC0A0ECDCA3416F735, BD14CA532122022C26920DF8, 806A7A3BFC684B4D9E25ABDF, ); name = "juce_audio_devices"; sourceTree = ""; }; 22448345537DACFE2F258ACF = {isa = PBXGroup; children = ( D999C4C8DE51CDFB861B863D, B305C104F5A573E8AFEFA763, 63D09BD18653F6A0134C8195, DC6930EE56EEA5221CFECAB7, 991F4C3B42036B549C321789, 7F7EAF366320BA71741B68C3, EFD1BD42000EE640A17EE1ED, 1F2CB36A86AA1A4FFF89CD88, E8128A35828C860977FEC54C, 324452D7F5B5EA3B393FF4FF, E7EE6BDC0E3A0739529AED91, 0E1D85B025D93DAFA8404824, CA0E3166C77EB91555893286, 00DE0C93FE719DC72E20A63B, E31FB2C8B34A146D28A4C611, ); name = format; sourceTree = ""; }; 892E3C641B2CBBE66606A2C6 = {isa = PBXGroup; children = ( 35E35B099E2A7906A7AA2EDE, 019352D78DBBEE2AC10ED6BC, F4676BB721F96DC5DDDAE746, 71E5E55D76D83B711B6263C2, 851BE5F4B476FCC76DF56FEA, A8878B1B86367E161868E49E, 0B82DF796E577809EB03B874, C9DA15073F3BF252BAFF9D69, 8F61AE043AEF6DCD47A36787, 581E68F4E33DBA5837FB7F9B, 1BE105DE7C738CCF8D6F2A54, B13A8EA6840489EB88D77800, 462F10FC0057AA53CC71472E, A687283C2BEC2595A10EEE1F, 9B089D1649E4B5BC8AF63EC6, 2859FDF0CCD1ED788910E9D3, 60849B046145D3BACDFA6A84, 6C57333FC4ACEBC7C451A414, ); name = codecs; sourceTree = ""; }; CB4068ADFA9C76E778DD19AF = {isa = PBXGroup; children = ( 807F5EE489018BC1956AAD5C, D04960564D2860B19FA5D1CE, ); name = sampler; sourceTree = ""; }; 43D650FDDBAA28AE94A8942B = {isa = PBXGroup; children = ( 22448345537DACFE2F258ACF, 892E3C641B2CBBE66606A2C6, CB4068ADFA9C76E778DD19AF, 50AB15E26F6E4A55B0BE8AE6, 05AFEDB1F65A8C2C8E9620E0, ); name = "juce_audio_formats"; sourceTree = ""; }; F5E14DC1BD0B02032813E53F = {isa = PBXGroup; children = ( 6645C09E7FCFF0E498C3C400, 0F82F90D72AD536CC3DFE217, 25412CD3F6855849D8B7FE98, E3415348D45BF63A7CE8CF6F, BE9B3F83B6037C848596286B, 6F2A90834846C810CCD39DF9, 36DA578E707673F6B174A016, 3C776A3FADACB361BD4B3D9F, FAFF7B60A09FE1BFD468163B, 89FD2460344D6B0FF04F70D0, 0B08631AE709ADF41AB3B780, 3649E7CD2BD6A37FCF7D72F7, FDB35D95490B931CC376A943, C054B94424A80B5DCA6CC52F, 872C4AF5B81B1664032594A1, D9DFC1CE9A4EF9230B49D697, ); name = processors; sourceTree = ""; }; 44B5DCFCAB48CED4E27F0F7C = {isa = PBXGroup; children = ( 7BBD4B2D9A9EF13CE4357979, 4B310AA3DF4F6188B2E6FAF1, E2127416236840EE3AF32D5C, 96F43E8EB364D3E40689D368, ); name = format; sourceTree = ""; }; 961C00EDB46D39EFDB238950 = {isa = PBXGroup; children = ( D1E31AC47CCAB97418EB646D, 58FB0C4FE674CC5BB7B1DCA7, 8396EA11DD261260F1A96DF9, A6FADD9A009BA1F1D36239FD, B2C11FB8D4762ABB6CB9B934, 9750423DB3DB6570382DA3C1, 9B9E034C5761096ACB8A76C3, 73267FE8DDE50FD1E6E31ED4, 8AE56D2F4E33B015C3D73EB8, 52A95B5754438C999343869A, C8A42EE493A1DF2E283C245E, ); name = "format_types"; sourceTree = ""; }; 1766FC3A6258C18585F98105 = {isa = PBXGroup; children = ( 6E125672C42D84CCD54F9B0D, 55FBB9F8900F753766A22BE6, F843FC09B4C2A10C76D8D35C, 4895DA77962B46806EB0147F, F3AF542BB3A9E6CC1D6E37DD, FB2CB5482F056ACD6AFE12A1, ); name = scanning; sourceTree = ""; }; 453BF0685F30EA92520392E4 = {isa = PBXGroup; children = ( CF1DA3CB41AA43B349D3A6B9, 41107A3608BE0848BE2A34FC, 057A64839BFE9AD0864752C3, 0B5B86BA8E4C60B999A45034, 005027EA86FFAEC19D634730, 95227EEF8BCCAD5E1840DB48, 631FD2CAE69A3D5DD8C2E1B6, FC14A2D9F860584459B762F7, ); name = utilities; sourceTree = ""; }; 326CA890D2481B82367C6F3A = {isa = PBXGroup; children = ( F5E14DC1BD0B02032813E53F, 44B5DCFCAB48CED4E27F0F7C, 961C00EDB46D39EFDB238950, 1766FC3A6258C18585F98105, 453BF0685F30EA92520392E4, 5FB5AE3F2ECCD8AC1A49CA18, 6BD1D463E40A463C69C065C7, ); name = "juce_audio_processors"; sourceTree = ""; }; EE85F21BD60AE1C7926DA310 = {isa = PBXGroup; children = ( 5A3C2298934C0F77CC60D336, A90C7FF8F98D21494524B726, 081472DAF6208CF7FDD4466B, AB92BC8961EE90E0F23FD6C5, A4A7D4C4EF2A24F743D107B5, 346CEC10C4A7DF779A799311, B9A524CB6B0598E4D7F7DD93, 22CF0BEE62FB551A68223B3A, 28A254DF535233A82D5D79BC, 14A6170C094E7786C521A4DD, D807B4138306397F8A93FA16, E3DC9C2BBC81EC0B035AA32C, E7A5AF3EBCFEEF8787F2D14F, D057633F8F7684AB7B4B28AD, ); name = gui; sourceTree = ""; }; D7A76D9B15CE0C2AA2F1831B = {isa = PBXGroup; children = ( 4140669501152D9FB9A244B9, E1107017C2BF7ECC847DF01A, ); name = players; sourceTree = ""; }; 729ED0EF005668B4140C1996 = {isa = PBXGroup; children = ( DDF02BD16454102C353FCD18, 5232B9F7E62CD5C41C3ABFED, 8DA438AAAFBC64C11DE329B4, 4151602FFED0B1AE7B36CEF4, 37355CCC05D407D665AA6604, ); name = native; sourceTree = ""; }; BE68248271118CC1AB328F34 = {isa = PBXGroup; children = ( EE85F21BD60AE1C7926DA310, D7A76D9B15CE0C2AA2F1831B, 729ED0EF005668B4140C1996, B66D06DC55FFC2B99D43F4E2, 89C47678AF8B46702EC0EE66, ); name = "juce_audio_utils"; sourceTree = ""; }; 7AF3E75ABE7FFA5936475F7E = {isa = PBXGroup; children = ( 0732CB9291291C9854197B28, 1B9B4E12F53F8350757CD4D2, ); name = box2d; sourceTree = ""; }; F025DD9DC1A82BB3FC45DE34 = {isa = PBXGroup; children = ( C0A9EF3D27D21B307649111B, C43CFE8A48F03CCBCAE08D24, ); name = utils; sourceTree = ""; }; B92F6CB95B8D46F185B51F43 = {isa = PBXGroup; children = ( 7AF3E75ABE7FFA5936475F7E, F025DD9DC1A82BB3FC45DE34, DEFD6AD8B2BBA57017DB4A13, 1AD3E125B61DD653C03FAC05, ); name = "juce_box2d"; sourceTree = ""; }; 9F8E4C02B09E172A04638A04 = {isa = PBXGroup; children = ( 7BD4AC17C70E6771254B962A, 1698E86A0E0E93DF1487E9FA, 651D48BCCD81AC8B5BC3AAA4, EC8A992EA9CFA558DB9F950E, 58E53BE69281E3105C66FF07, C411A91DC3B306E2C417F1BF, 03707F35E5DB4BC6F1FAC8D6, 569187442B514D114A483D29, 01F2CB80C1B14450528F0FA8, 49C275C319B36AC86512E34F, D6B8E586D30632EA07C48D6F, 02659911BD886D2E8431B912, 2A8F6894339DCE6003B702F0, C9C1FC1B4628557AE5C7E7ED, E4369FFC0E1A6547580D671F, 7286D6380C74734603D098EB, 3AB9E51994CD35A10F87EFF1, AC7A214BA7B1A172F5B31735, 3F58D27B17343BF1030AF92A, 8D437AEAA6F7E3F0DCA43E8C, B59B0121C46D4A2B9EC3BBFE, 3741E4C0CE5C7C0828D09BA8, 437B4DC39531BF8DE5A12E02, D3A84810AE56991562B6F252, ); name = text; sourceTree = ""; }; F06CAD4E176B4B5D59F3D92A = {isa = PBXGroup; children = ( BADD02151C3951E4853DA06D, 21CE480826B56F0B5C8C4A43, A763B4ADDB7BDD941FFE51CF, D7A951371F530DA0A350AF44, 5125E77EBA8500EAA778F51F, 519F11BE9C786A7F9B221BA5, CC79B254C68555B4FFEBC692, 220344E43675A2A7D64D3A44, 2432B5DFCDB8D39150029E01, ); name = maths; sourceTree = ""; }; B800FC93901BFB2AAB84B357 = {isa = PBXGroup; children = ( 0EAB2E0BB8C3BE2725FA093A, 4AF5BD29C935D0EB7CB0F6AE, DE3BEA732CBC57AE71E94159, F26339EFC03BD8D22016EEB6, A235B5113FB4E5DA6267975F, 14933D0F3C598C38A113CE8D, C60CE259EE4CFE6AC61044FB, DF9B26660FAF5ECF2EF620B8, A2F0B85560090CFAC7D95132, 734C43C3F7918061F2DDD214, AA967AC6E8FDCD7502272DA7, 7319ADBC735F957219774263, D1D8A53A7614F106942DADED, 6B1FEA349A6C8F51AB27E23C, ); name = memory; sourceTree = ""; }; 29FD491D882C7A35353517C8 = {isa = PBXGroup; children = ( 1A3DE76CA275CEE7DAD501A4, D100B2EDF88F2C019E4D2311, E7EA99CD84E1EC598F4984DD, DAF2C8E641253779B6DFF139, 0D17B181C82CDA7A6282A0C1, C0918662F3E28570DF17B041, ADDA92448B0EC5EC1C6D5A2C, 69249A7E30512BBF13CB8A09, 7761FFBFAC88B7157D65EE1F, C92A35B9676A81157B54284A, 9A4190B5B7E788B732637F2E, D0A84ED14FC2F7A143679258, 0F517EA07DBFE31E5C9367F5, D9AAC6516BAD4F5BAE9CF297, B44CC152D6454AF6F16E9EF6, A22726A53515D845743DFF84, 5CBB1DA4ECE2611DDA81A18C, B10A9A3B4A4C2507F514D5F2, 66D5FD22DF1550A6CC9ABDA4, 8BB3867A9236FF57B46581A4, CE7D4E7030BF4BB4B1093B5F, ); name = containers; sourceTree = ""; }; F6C37A1A9BE55FD210811ED5 = {isa = PBXGroup; children = ( 38FB6ABB883ECAD52027CE19, 76B8E770835968F565292D1E, 720C3CA9E28181C76434D465, 57B7A9C37305D4D7F876344C, 3D8A83C53BAF22EEEA014D90, 6A299D9BED7D078CB2F1C007, 47817D36A37758981DEDCAAE, 2CD4306102317989E6321924, 0453D6FB24F82E92A6BEDA49, 0FF2403BC335E710BE391DEE, 7BE8C42578F5E2E59D63F615, 764F36E2597540348F960404, 133BC5B880C7575FF3209D88, D8AE63002C7273F98226394B, 8E1CA5F01D04FA8F6CCFF91B, D5942A1C95986841CA286736, 068183416EF5422C7AD0F238, 9CC0810F5BAF70D00033FD22, 2B4F1477BB90BF7F62005BEC, 5496F73539DA26FD9C899223, D0ADA33F00B3BD83C1D5AE37, 81D03597CE85238988E0F45D, ); name = threads; sourceTree = ""; }; 18CBD980606B9896AE7EDB66 = {isa = PBXGroup; children = ( CCD2ED6F6F3ABCC172DC4957, 2060347D582A8E45F58AE1C2, 3D2D6313C0A3397C4839B29B, 0B3662D1FFE3102476FD60D7, 78979AFF44F164451516C986, 23A853ADC54A69406C7A49C6, ); name = time; sourceTree = ""; }; 15BAE5B68F98DAF50032DA20 = {isa = PBXGroup; children = ( CF7CEC8C260AC623C222264C, 366C0E8D559D37FF92B64F47, 6B83E4AE241F0EAC9574923D, 891BBF2E19D80372FA886E62, 3D2B216A758EEC9EF2D9C7A9, BBC3C77A4D771DFCCB08B874, 85D328C928A4CD6A1AEAB644, 830A4891F6838B2A60C54C8B, 9E14C2C627D2F7B3C817468E, C8E3220EC4F4E4242CD3026D, A6EE2D5A258294BAC600F75B, 0F518E75055A9D954B52DAC4, 44879946DE89AF141BE428B6, 5D40332D94747C3190D4CC16, 2174CAEE6D8EB215ACD4A256, 4198EE3311A171C884A5FA9F, A90EA62A0A4A1B5E62CF0BE8, ); name = files; sourceTree = ""; }; 23F9726B9A73EF92F1209DC4 = {isa = PBXGroup; children = ( 9D0B40C4BF8FD939C33E3D59, 0E11770AD343D8A0780C54BE, 80A57920E6EA9C2E881BC3E5, 39E4404D57A8B66DF520B66F, 2274B9A5BC921FE3B877D0C1, A1EFF3DBE5F7B0C07AE59D7C, CD9B8C96642C7F691FCB3EC4, 6EA8B0940C4486B9F03BA19C, D61BA88D3AC9556266FE4368, 24E2AF695F11B9BAEB8FBE3D, ); name = network; sourceTree = ""; }; E6D63506374A755883B95CD0 = {isa = PBXGroup; children = ( 945E090A8DE2E776F7033143, 9CED8F32B3718A90481EEDE6, 9B9F578EC77AA988C919AC6F, 49D1B40749401475B52A6F85, BFC3C3EBCDDABF1529A317FF, 62D20AFF94117B99556BF56C, AD593F766DC27414A94FABEE, 429974B1B4C361F218093A41, B7AE6C1C50421EE6E02045DC, CC5F6FD5F339E1811037EABE, 03CB1183519203936C33025A, 86BFE5D66623DB207CEA3F9F, 3FBF109F3AD6DE221EFB1BA2, DC0AE99EFE4F88987CA2F705, F9F4D5D9783B88F2DE889023, ); name = streams; sourceTree = ""; }; 1CAC2BF524350D8F0B5FD356 = {isa = PBXGroup; children = ( AB589E1E7EC83EA620B7F780, 88D689399C7F69D687208673, DD4A812225F47E590FCF2E29, 6141692AC9282411091C8157, ); name = logging; sourceTree = ""; }; C8E2FB2013388FB97CB0E404 = {isa = PBXGroup; children = ( 80202384D81020DAE2072A1A, 218E36147FA4309F072C1949, 33F3182598E9A84AD25A9184, 8BDC3161654344162ECDCB32, 6BDAB94A88B565A734534368, 12E4EED0370A1733C6629D86, ); name = system; sourceTree = ""; }; 9E69FDED50CC01056C1E3A3F = {isa = PBXGroup; children = ( 8A89A7C0DEC85C7773251B15, 2E29C6A0CF15C32A35119DCA, 16DC590DCFE57F583E99F9C9, 6BEA46E3C64DD2FD8946CD35, ); name = xml; sourceTree = ""; }; 649BC7DF20650B1753E12AF4 = {isa = PBXGroup; children = ( 6B3772278F9398D0AC7CE250, C4E873C0CD6E9C76EA2997C2, F746F30147C6BE88F60E92CF, 0B54F1B0CB17ABD0C3E40658, ); name = javascript; sourceTree = ""; }; 2D8DDEA5DED7302CBA238934 = {isa = PBXGroup; children = ( 50D167857CCBE08F692604BB, D65129253734C1917354C08E, 5FC58B5FBBBB09878E3F2230, F29F6395C4935C1A663A1D15, 55F9178934DDF31583323625, 2F66B42AF6C0B5ED381937C3, ); name = zip; sourceTree = ""; }; 94F54CCBAAF1F7BECBE15D38 = {isa = PBXGroup; children = ( 46118CBA9C3CD3B354D93B30, 3EF890CB40C6FFCAE055B7B1, ); name = "unit_tests"; sourceTree = ""; }; 6C6F5F4F0570E2CE9AA515B7 = {isa = PBXGroup; children = ( 55273A59F96B3C775EB71FAB, 44F4A9351C2B03F98A0D23E4, 4A2C25FD55809F1489963FC3, 360291D0346F776DDD3F43E8, 28E65398C8CF95EB12A5734D, ); name = misc; sourceTree = ""; }; BD98C1BE7812F052CB13F901 = {isa = PBXGroup; children = ( 599036DC07DB54E446ECA054, B63933880C456903722F46A4, 60B755F5684959E78C556810, B97B2C0C6A4322FFAACE1C39, 4290825CEF87C19A113CA9F9, 3CF67E6BCC6B52EFD6E6A458, FA8B6B0F6D43146BAAE04D4D, 39E23931E56560C294237428, 73E0383F94E38E30C2CE0F5D, A83559E2258B5856CFD68EAC, 447B5BEAEF972DECD5F5A949, 9BAE20FD7E2CBA120DDA82B0, 5E9F335E274427A81514A20C, 0B53DC9C735B3B307C65836A, 5897A924018C9D26438796A3, C4B8D5FC3E906DA9F6A4379E, BA5A007216A3E496509D5CE3, 56C55F22CADABBA171D41BFC, 104B96755BED457D7CEA42EA, 8F7D5E59BEB35E858363B752, B0DA13336DA07392C689323C, A1A8D19C2E587194909B2913, FDBFCE2A24F32AEEB896819F, C006CE2DED5AB537B5C3FD5E, 3F8C313EC9C1E6E234108098, 50677353DB2766A800988656, 48A0FC60EFF6334C161519FD, 6F5B9777B802707C4A747E46, ); name = native; sourceTree = ""; }; 7AB76D65BF8ACD7C0CCB6169 = {isa = PBXGroup; children = ( 9F8E4C02B09E172A04638A04, F06CAD4E176B4B5D59F3D92A, B800FC93901BFB2AAB84B357, 29FD491D882C7A35353517C8, F6C37A1A9BE55FD210811ED5, 18CBD980606B9896AE7EDB66, 15BAE5B68F98DAF50032DA20, 23F9726B9A73EF92F1209DC4, E6D63506374A755883B95CD0, 1CAC2BF524350D8F0B5FD356, C8E2FB2013388FB97CB0E404, 9E69FDED50CC01056C1E3A3F, 649BC7DF20650B1753E12AF4, 2D8DDEA5DED7302CBA238934, 94F54CCBAAF1F7BECBE15D38, 6C6F5F4F0570E2CE9AA515B7, BD98C1BE7812F052CB13F901, BFE7C09CA4AFAC973C267D11, 824822F2A6A539B2D797DE23, ); name = "juce_core"; sourceTree = ""; }; D819E535B50B941C9A6E8FAB = {isa = PBXGroup; children = ( 4E0A9537FFDE89E4B46710CB, E9B8B3FAECC80B66257B14F9, 8F8DD95844D647749BA662B7, 607FA0800596585429F6C22B, 15348CE8667592D8F3841601, 32F1D9C9FD2C0796E2E66C6A, ); name = encryption; sourceTree = ""; }; 3C9C844C356DB55BB284218A = {isa = PBXGroup; children = ( 0EA8F0AB668E3B77E8088139, 8D121C4BCB6A36684EC59FB7, F1A30E40F7388D16BA35B0DB, 9A895B323AC3DDD249D99CB7, 30D828B153772EC3FBADF543, 869FEB02E31658BD16664F1C, ); name = hashing; sourceTree = ""; }; AED3AAA07A81C88CC540827D = {isa = PBXGroup; children = ( D819E535B50B941C9A6E8FAB, 3C9C844C356DB55BB284218A, E52756E1DB553ED02D829F61, 06BD2631BF3C52F26B9981E8, ); name = "juce_cryptography"; sourceTree = ""; }; D4863F7EB960C2709BB3076B = {isa = PBXGroup; children = ( F0ACCF70936A0BBA2A2AB289, 3371D4F2A1E0AB784460E6D4, 63BB4EB9347AF60049BEEC1E, 24B56E58A88C5BA553F1C3F9, B6B6519216FF4413B698C889, F043752E829829CE2A364F39, ); name = values; sourceTree = ""; }; E635F16A3A42F4C92EB0E043 = {isa = PBXGroup; children = ( F3B746DC92EFE7A9B8EA9E43, 5FD5503AB0E161315DD5CD70, 171E2FEB6097B9D059BCD196, ); name = undomanager; sourceTree = ""; }; 4E83EFA92EA783E37B892C4B = {isa = PBXGroup; children = ( 5B0A45CD67D62B0BF9FC22F9, 9327D6AA8805BE7AD971D68C, ABDFE5D85E6ED3CBB8AE1F50, 93B3667FE4186CD75426EA53, ); name = "app_properties"; sourceTree = ""; }; 0B9FFA8B31858A3B3DFC06C3 = {isa = PBXGroup; children = ( D4863F7EB960C2709BB3076B, E635F16A3A42F4C92EB0E043, 4E83EFA92EA783E37B892C4B, 8FDA4FBF31997AEBF3AE10E4, 11005DEC79FC6A6057FCFA7A, ); name = "juce_data_structures"; sourceTree = ""; }; A34FC16C72F52B0B801CEF25 = {isa = PBXGroup; children = ( C20FD8D605E6714D473D5C9B, C784392363846286D29F207F, 9CDE3A30398FB033E5AE8498, 6DDDB822BBF3D557CA7AB427, 3411D087E2F8C3962E73F64F, F6DB1C1E0D9315245E87CBC2, 06FACF171E0DE0AC6318AE4A, 2F7F13C84464F8409BBDBEB0, C5A932A82042E2DAEBE1C302, EF8055850F3DEA173761E3B5, 6E9BFA2B6260E09B2B3948E9, 3C18AC0F75E68A8601DD8F08, 3F2BBE4509B19BFAC929D8DF, ); name = messages; sourceTree = ""; }; F46AC40E7CD6D4DBE5062442 = {isa = PBXGroup; children = ( 5F3E8B08EE74B0023DA176B1, F42FE65C750920656EA22BF8, DB8FAF091C9E78AE5F64701F, F91A3C07D81BE2D4A191C9A2, ); name = timers; sourceTree = ""; }; EDB1CEFD978D97AA80C44D11 = {isa = PBXGroup; children = ( 9A60BF3F27FD10A058F4E956, 5AB81EDAFED264951169F1B3, 0F3360D13458198A3A88B1A1, BE260594789CF43E1A4EF4E6, ECAB8BD2816B0BEFCD9F6961, E2C5C95247FDECA4C39F1415, AD33778491D50853BFFED9E9, 4825D1B0C0AC0FD325F55C29, ); name = broadcasters; sourceTree = ""; }; 7F49B97D06C9CA8E7C5888A7 = {isa = PBXGroup; children = ( E6E0ADA4E3632540A8ADC7D8, 6E98E22310F8BBEAC48EE55A, F380FE12E78619086BA33CDB, 1CD8799B8784A91FC13E6641, 17C0612B5BA94849EA9768CC, E30009C6743474CD6195F5F8, ); name = interprocess; sourceTree = ""; }; 604E5DA5952F5D6A87D74C8A = {isa = PBXGroup; children = ( E7113B21A18CD89165BAFD4B, EB369EA30D31CD710A09B7FD, 82CDD7D8E38202F102788090, 239F942F45950F5EDCB65A17, 00CC1BBABB9EEEBABF0D34ED, 78DAC3299488E0CC70EDB206, C77F148F8E8E9F805D730386, 4407A352B303B27AA0B7D579, ); name = native; sourceTree = ""; }; C217E6D7051F0944FFE75A52 = {isa = PBXGroup; children = ( A34FC16C72F52B0B801CEF25, F46AC40E7CD6D4DBE5062442, EDB1CEFD978D97AA80C44D11, 7F49B97D06C9CA8E7C5888A7, 604E5DA5952F5D6A87D74C8A, E243FC2BD3446D9518049538, B17EF578E9B736B1C5A5E8BF, ); name = "juce_events"; sourceTree = ""; }; 509EE811D5F7C5DCF8D66EC5 = {isa = PBXGroup; children = ( 885A0F1B41FFAF32ADC70925, D400C8DFE9DA635FDDBF57BB, AF396B7AE1BE00099A19D191, 6E522E47999DB582BA4DA5B6, AF98F62B0DD92F26D0018A98, 169C561B93262F8B46BEB768, 11F6937FC766E1E9568311C2, 33B829EE652FAA7EFB9E7460, 73E670E23A2523F7A1B14775, ); name = colour; sourceTree = ""; }; ACB6D23DBA7C941FEC62F935 = {isa = PBXGroup; children = ( 6808473BBCC2E4D8E2CA0E71, A8243EDBF34E3E3D4338D6F7, 04C5FED8AEA4109C4ED07111, 563167A7234166BE714F2DC9, D5C59D717CF1C0F15164AD43, 3E27B6E7641EFD605545DF18, 3B4CB5DCC28B60C4129F024E, ); name = contexts; sourceTree = ""; }; 5F88ECDF0F4610C51B00F5BE = {isa = PBXGroup; children = ( 3DA95E7AE1D0DC64AF09EB66, 8DDCA7803625CF8DA817326A, 29919F82CA5311BEA61649D9, 0638493DAFCB6148E77159B1, 0C73944DB76DB5DA61210A33, 62F9B202D524E33A2843ED84, BF2CAEB6EC641789133B627E, B8D4B6843E55CC07167085AB, ); name = images; sourceTree = ""; }; EEE338C2B3F2C4EE365FF019 = {isa = PBXGroup; children = ( F584FC21C26C72A81D840840, 3A42694A047942A44E8216F5, 0F88F061C51BE43F53B27094, ); name = "image_formats"; sourceTree = ""; }; 54810F7DAE8AD92E99472AAB = {isa = PBXGroup; children = ( E199DDD8F06741F21D8F9CFD, E41A387D233A436131D7910E, 9ADA045A14202C9CF4F8CD40, 42DC5D8CEC7445468A96C227, 36711C0D24EB22FABF8E7BCB, 1DDAEBB24E58353761798ABE, 7C70EC5AB0A3B9B14C0C0F05, BFEEC370F9DAD159E5789EB9, 754710498EE8C41F085A2B11, 8BFDB525631BDAD3A71CB307, 7C7FF651870B180BABD63D9F, 47091E4F83A415C063855A74, 03EC0E5A647E50B369E50BBF, 533B6E74A9F84B4D319E2F16, EE7001BD5206A8D8EA2D125B, ); name = geometry; sourceTree = ""; }; E92E581D7C45CBF3D826649F = {isa = PBXGroup; children = ( E5058DD199CEC42ECE922239, D74B19291F4B0370A2742A63, 88E9F6A65110F4753E115FF5, ); name = placement; sourceTree = ""; }; 006806660141E87655AADFBF = {isa = PBXGroup; children = ( 06AE69217982DB82E0F47554, 0E2F5CD3AB59E19A1ADFF875, C7026BE1C751908FEA9E5AAA, 6209255CD43AA4EDC1C955DA, 30212C3F1731BD8F19412A38, D3D86F3CDD057C174A16E382, E7B21011F93915ADD2CC5DD9, ACDD5519D82FDB831085B8B2, 17FDEA6209B7444B117E63C7, 34176F324CF7EBCDE741B2DF, BFCAF7A5D017D3BC4CD51D60, A169179FE554C215416FCD7C, ); name = fonts; sourceTree = ""; }; 4557FCCC2DAA4803E4145C52 = {isa = PBXGroup; children = ( B680E1C22A5885A8336D8DA9, 8DDE64B4A0EF76038498B47D, 4F9F102E3BEDFE30542BD479, A73DB3E8639A4D39F9F9C50E, 6976B92D19F4FA1BA89A8922, ); name = effects; sourceTree = ""; }; 3F44D4EFF1ABC95BADCF6424 = {isa = PBXGroup; children = ( 3D0EA5C831C347728313FDFE, 31D74E7CF149EF5B569417A7, 9EB305226A801CB7012884F0, DE534A5A2D3B48BFBCE598B4, A507AD139DCC0A43765C1FE6, 1D4E674C38566E14B4B73F49, 8FA3BF005120A8BF8DD1BB80, F97F775EDCD2D1C497625D4F, 155EF3FCA61BEF035E1D7C8D, 9053A4532020825D924EFB35, F43CED7548EE5C9F841CB1FA, 6A6A22EF81805BE907DB5DA2, 3008922C531303C24B8791AA, ); name = native; sourceTree = ""; }; A3212051A49A69AC9D00F91B = {isa = PBXGroup; children = ( 509EE811D5F7C5DCF8D66EC5, ACB6D23DBA7C941FEC62F935, 5F88ECDF0F4610C51B00F5BE, EEE338C2B3F2C4EE365FF019, 54810F7DAE8AD92E99472AAB, E92E581D7C45CBF3D826649F, 006806660141E87655AADFBF, 4557FCCC2DAA4803E4145C52, 3F44D4EFF1ABC95BADCF6424, 94F15602279A81777504F22C, 6ACBD7C68EE20A8E8C5CC1AB, ); name = "juce_graphics"; sourceTree = ""; }; F1DA02E10E12854B9398E8C0 = {isa = PBXGroup; children = ( 2F1324CBA29604BD3E2003B5, 2108383000B0A3564DFF340D, C549EFF977C210EB398C9A33, 7FC3D3D142D1B4398D07FFC7, E98EA1189613978EA4E78D85, 73CF65298983B8CDC1CD84AC, FA5777F9FFCC6BE9D9F98874, FE613A570CE31071FD22DC06, 2A155BD926FEB91142E6A638, ); name = components; sourceTree = ""; }; 3750E06D980F78DF6C18B6D2 = {isa = PBXGroup; children = ( 3D2FFA1F349A15621962C064, EA9FE6D1E0A072E73312916C, AA920A77D326B0F5E53F567F, 905A87EA32A249ABFD0A90AA, 24FC5DD7F88DBB1E3A46AB54, BC2E34C0883EB362398AC448, 80E5245755DC2ECC4C6BABD5, 9C734938D5FF5DA7827C74C6, 7AD412430D3AEB0468089AF5, 1890C5F569F315E5F8EBB1F9, 6E176584A871F8C956918182, D8DFE1C66668C30215288BBE, EA3436079F0D78BB76CD15F7, 7C8C5464933F6E34CF33578B, CAD598C03B7C93B4AF912E66, 184C5CCD9457D17375F9AE1C, 1913719A1E4E1803CD54D11F, 2D13D48857E2530BF41F70CB, 9200669E9DB4FE676A07CD77, D99C0F89D572BBF219A7B991, ); name = mouse; sourceTree = ""; }; BC7D6E54D9E9A3C9FB3E1C0A = {isa = PBXGroup; children = ( 73F0F1FA09AE9F7308AFCC3B, C6D9D6E03D4B740DDF9B3C57, F037091D4A3012EBBA1E808F, 0C6B7C49C4630C18F995C738, 10932841EA586B6969446549, A2EBD42F94D37FFF10F25985, B2BD3F284DBA9EDFFF80ECE1, 4E892CB7335853F8FE91B26F, 5DA9EA3E74C2AB870EC9CACB, 17D0D2AD3243F65FADB94446, 70F33D8D2F48D64188861C6C, AC3600881A53014EFC1CB8D2, 0E1F414FCC996E155B4DB5DF, ); name = keyboard; sourceTree = ""; }; 601A0E1AB8094CEDE18197C4 = {isa = PBXGroup; children = ( 358C6A8FDD14AF0BADFC200E, 1BBECE3C619C157F072748D9, 79C8D0C6D1444EAB781C46F3, 0E26995340F6E559281691DB, 74BE52ADFCAEFACF704E1269, 4120CBF145DA500C140BC666, 2B8FF1E4F8D48AEDE05224D5, A62BF9AB6EB0496F5BCE78B7, 3BCC9E4DFC3910F668DA3FF7, 241100DC52A0F56D071C8C4E, FCAC296E92A219D70EB96AD5, B8F25B3AB59A577E53304AC0, B36D9787DD79D0DED8D791F0, E0DB91A472A77866258D12B2, A88B3DDBD1939456E225E36E, 2DE7C6A69CC0096EF56E4049, BDDD1C149C23BCA4F501BEF7, 512D5182047E0B46E971A13D, 1A1C23D2F16F880FCD3B565E, 40B485A7CCC441C90EA92FBD, A6285ED9A26A9DA0A2931910, 277ADB563604EE1FB51FDAE7, 6B67DE0FF4487B060DCF31E1, A3BDCE78A0AE63BEA0DDE600, 69CC80F5871F1AA06689E3BA, A74BFBD7C3C18103B51F6342, 456837CE387595EFF549939B, ); name = widgets; sourceTree = ""; }; 1ADDC51A4430600E4AAAA5DB = {isa = PBXGroup; children = ( C7089BDB2F572546643160C1, A04410519258755461444678, E4BD5632ADD38CF8BAD38A76, 0BD502F6196E1FE7D9888A1C, 30DA52AA554A0249429AC3FC, D6238E383F396236E3A4C054, 30CA850D191ECD5F1F7B6A70, DA78B13D87626C49A2140FDC, 2EE8E77D21471265869C9B4A, 5A73A448137344953ED2BD32, A6BC854E7C5B932911B2AFF2, 43B80E11AC5121A2F4B8DD78, EEA020419EF58E90C10AAE26, 9EB2AE5A72227301C365568F, CDB41763FDE907C3C0E75374, 4C66D04A6A5FA514A10AA406, 263BE0BDE184A7184A118B46, 2B702EF83CBD217F8F9195F2, 67541565521633071C03BD35, ); name = windows; sourceTree = ""; }; BBA5875791623330D6DC95AB = {isa = PBXGroup; children = ( 10DF2A823B97BBC0BD840B9F, 989CD2B68A4EF90456E19ED9, E32D1C481161F063918F76AA, C06F64DF6D95D5C9C8B2D5F8, D94C07E10FC25EE303D64992, 937A2E7B951F5D527DF54245, ); name = menus; sourceTree = ""; }; 5D340809199E2AA65DF46FC0 = {isa = PBXGroup; children = ( 1676147A3FADD6D79FF42CDF, CD8B9E60EFE0A0ED368EE3D9, 7890AB8CBF31F9788E10DBD5, EA082125C757D1FD63BA38C5, 6A643B44198DCE6FFE057E9B, 428FA66F7D6FB46A64B438E1, 88A8F1D957ED293712DE0E23, C47BAAAD3DF91B17A7787941, 49FCD3BBF372EE7F6F143EA9, 2DDE8684F3C5CB4A781D72A5, F58760A8EE18630F97C7B646, 1D62103CFAB9245F2CF523EC, 1065FE461C00EABD9485BB93, 2E093A5506319EC68DA184F4, 53AA2F507FD9DE263E43B277, 8717F2B47F51F0473C041760, 08085F4282FC26BA8D377921, B8BDAFE861AD60BEC44D7ED5, 8838FC2F76E6D775B2E75F23, C09840AD421A11A244964AB5, 36A65D869B23D9987C676BCD, 560B074FDFF6F94477083076, CE045161909A4EADCE49629F, 2A1FF908BB6FEBAD912CDE8B, 11A95002F7CE796B7C27EAA7, C7A943716B2FD728EFAC84D1, 139D5B8276448B8BFDBA3F7F, E23EDF80FD5320232483D80F, 7B83011366B95CC61212E5D2, B56F4C53187D40137670DB1B, C7C8C7D58A08D1583E0C2E6B, 8329E2A86DF3E781B790F128, 6C52D68EDEA2D7ECA4CCC2BF, 58EE7977BC7FBB3523A910D9, 50C099C6D8CA6DBF95B0828D, 5D4FE2C580EFC84212CFBFB5, ); name = layout; sourceTree = ""; }; AC9C1779409BE4B43780B4C2 = {isa = PBXGroup; children = ( 182223C68F452171BE479C01, 3240A232A5C82A812A837A2F, 912E1A63093C3FA3BD2AFE61, AE68B9AA74EE6F138B3E0B94, 7338D006521EDC5C10EEF974, 791B204F13E056DA2644175D, 6CF95925EA874CFABAF7C284, A166FEC488A2EE5290FF0722, 215D455CD5A3BD7537F88630, 5595C04B0C1D8D8EBA119C8A, 38B737F6F0007F752EE380B6, 74CEBA45E0A8ECA5CFA9BEF7, B688441D29BB51A9C4E83CFC, 1339BD00EBF554E995968B6D, 4ABF4B55F979F2A88EB1B331, C2FFDDA61218A94403D5FE56, 355DBB46C4283779C367E97B, 09EB2AA32041290412E00D8B, ); name = buttons; sourceTree = ""; }; 5ED6933CBDAFE300C2ABD720 = {isa = PBXGroup; children = ( BB29289B196047505CF5EE6B, 541E4974C73E294DBA415BA0, F4BBD7DEBE0F1DD2CE45C411, 1BE21633CDF618F8D993F3BE, 193F42507FBE4E7A62D81E2C, F89584972F16A8EC49E5E74D, 531D198DE52845A4B641B6B3, E682A3A52BD15D5CA4933C12, A631CD93C2809211DD926938, 7CDA22D66C8FEDF1B644D041, 0B9867D5674933AF753A2CF6, 2F8041ECBF70D78604686D6B, 82AABF91CB005E5463F1D522, 2551FA5B61BFBEB5E0310B66, ); name = positioning; sourceTree = ""; }; C8A05D0DDC15576400097A2B = {isa = PBXGroup; children = ( 02F0BF69062E8D9583F13C83, A99853D3CB536CFDB6C91F98, FE4C496CFA9A1E786253B005, B3976635944EC69837499F9F, B033B7729D2D204BBD71BDD3, 2EB37CCC4FF8C40B015C0555, 77BD025036C8B02426E61C79, 7DE074DF0D3074275DBBF9B1, 6940E5FE7BC1ED1BB2258886, 2DAD09E643C29B6DE7F26EDF, 3855013A39E97B76B46E055E, 11CB66B1CBA64B205FDF2767, 02ABF8C447E1A47845F6027D, 842FE973E11AAEF49D77AFE3, 9461C1D2300CC3A91EC2D169, ); name = drawables; sourceTree = ""; }; 976CE92C0E6CA7669AF1C0CB = {isa = PBXGroup; children = ( 4F6768F8EF9CB4A34A501966, 4C13F19ECFF6CA7AB9C801AC, 8430FB57248237DDAD4CE4AD, 7B5560AEA0CB3E507C16140C, 5C5F8713DA326B5C6C559767, 98D55DE4706A31BCD28458C3, A966B620E1FB219BD4A4F3D9, F99F73DEBB0EB724142FA930, 4C9033415E05CD39408389AC, 99E8C71CC462DDDBC52D360C, E9A3E96E32C301EE817059C1, BC30642EEF908E1C7757690B, D45AD25E5AC67424EAE5A85F, 825690E8512078D4F8595CCD, ); name = properties; sourceTree = ""; }; 528B62250FF5AFE3DF0EB3C5 = {isa = PBXGroup; children = ( 4F56EAB8D09665602226930F, 73EC10FBCA420227E5A145F9, 4AEA921081036DD4C259B45F, 95568D274244E02150C7F417, 06DE336A39A9FEC47A8C2F06, 5C2DE230E3197CF04660851E, FD2A08CE74C6EBC90CD44A49, CE276E0CAE722EA80F7985BB, ); name = lookandfeel; sourceTree = ""; }; 1B6365C0EB9F304B264DC487 = {isa = PBXGroup; children = ( A1244D54910A10100ECF8EE2, FE22C972B67EC59701E1CC3C, 0D979051139C2AC633BB4B9C, DAFB19E49A6221854341BE2C, BF6E19C2CA2032242B7A2556, FDD9DA21786D445DCD01912A, 8AF04828A59F79DF2FD31E9C, 60BCBC74A3C12630E82631DE, 877B42968286AAD56527516A, 06496C804633EAB2003E5B19, 50C625257E68C3B8FDAE45A9, F48E6A27D809C49D42D3202C, 7DA9D4E06E9B9875EC3880AF, 7D2013E3BCFFD5A65D970BBD, E3E3CD4660C20BE120E8BB1B, F965E478C21D19EF32760A9C, 534098C590927D6768E57ACF, 857CE7D1DC614FCDD19F617D, C416D60EFF7F25E0080A94D1, DAACF5AFA6B6994384BA4984, 192EE3C990E80213984A44C2, E9BBEE1B3986E0829AA44133, ); name = filebrowser; sourceTree = ""; }; 2761E2946DEDCB0AA51DE683 = {isa = PBXGroup; children = ( 06903FD63E508771C576431D, F779C79AC37C83A60B997641, 151ADDBE74B99337BC2C2586, CF626DE27EB763C9BCFD4F15, 01AD7BA1E1B20309DC969EE2, CAD3749B6A5BDB2BB00D3498, 3B61B715F29A0AEAEF73CCBA, 2BC7AB69474D7E280098B893, 818729A3311F3A7B8DB03764, ); name = commands; sourceTree = ""; }; 9E82D25138749954193F1450 = {isa = PBXGroup; children = ( B3E2A6A5C59E1462DF544A06, 81516145E8F737D290135758, BCACFA5E8370800EB6487CC4, 047E385F21CC5AD6238B120E, ); name = misc; sourceTree = ""; }; 0D77CC5C0E81446BEBBFA067 = {isa = PBXGroup; children = ( 5434953F55BD35F74D59D980, 6A3315B465362CD3AF66D306, ); name = application; sourceTree = ""; }; 23D479C4AE179B8DDF9FE026 = {isa = PBXGroup; children = ( 01F49D3FD943424005FB512F, DD5F4BFEA497212883A869A9, 7DA062415E40E3BEC0B847FE, DEB0E2F28130100B1EFD250E, F667601C17DC912B73B817DE, C509F69A37C9A9053D6E9546, 146FF5324D969925F258D045, 37C7B4ECD40F15EFB12D58AD, 554678AFD58E3E3A2B0BE43D, 4A4D3CCCDD2C972CA6715014, B37E6323D9D3C3CA68672D6B, A2F403F649AC0AA7CA47EF65, 9918F60F5CC834C782543712, 70276A64A50E5B56492853DD, 6A4AE0C59C1210D28A8C8AF7, 2F19C814598FC304CA841242, ); name = native; sourceTree = ""; }; 9C4033FFA3C21A4CEDF67C73 = {isa = PBXGroup; children = ( F1DA02E10E12854B9398E8C0, 3750E06D980F78DF6C18B6D2, BC7D6E54D9E9A3C9FB3E1C0A, 601A0E1AB8094CEDE18197C4, 1ADDC51A4430600E4AAAA5DB, BBA5875791623330D6DC95AB, 5D340809199E2AA65DF46FC0, AC9C1779409BE4B43780B4C2, 5ED6933CBDAFE300C2ABD720, C8A05D0DDC15576400097A2B, 976CE92C0E6CA7669AF1C0CB, 528B62250FF5AFE3DF0EB3C5, 1B6365C0EB9F304B264DC487, 2761E2946DEDCB0AA51DE683, 9E82D25138749954193F1450, 0D77CC5C0E81446BEBBFA067, 23D479C4AE179B8DDF9FE026, FAC5DDBFB00254C35D8987F2, 063357A85BA244642BE1274A, ); name = "juce_gui_basics"; sourceTree = ""; }; DF114C5936833878A46997BB = {isa = PBXGroup; children = ( DB748B0D9227F5345683CF7A, 436BAE91A167BB6107F261B4, 728E67FDBD3660742A33C7B6, 359FD60323CE3BA7B25008DD, C1CBC5B338453DA492698C3F, 577378064273DA54B9BED3F5, 56BCAE594E40E21699F9337E, 06B6D19CE5691310DEF50DBC, 6B4AF4E4BE36B99E00BFE839, D8EB3FEADD047C7AEFF9C8C8, D7B1BBA8FE789A80E86CEA03, ED3DE86815324354C48631D0, ); name = "code_editor"; sourceTree = ""; }; DB2F1179FFAFF392444F4FDE = {isa = PBXGroup; children = ( E4981056661C3F251FECEC32, F704F70F80BA62A48F3651BF, ); name = documents; sourceTree = ""; }; 1562C9D9FEDD7C31F674E2BB = {isa = PBXGroup; children = ( 20A4427A1F9CCC5FC58AA159, 57D6E8A8E8D871EB1DEF6A5F, 17ADC8ECFA616CF392783757, ); name = embedding; sourceTree = ""; }; 488105705659833F97300471 = {isa = PBXGroup; children = ( 0876934F047839205147DB99, 408C5E78F7DE038844E18D31, 6EBA81213324106593EF5DF8, 475B1787F548E4FB11C63CD3, 0A25E42359372E51ADB0123C, 376F6150287E759E77B824BC, DADF2C478777BA8EEBB55CDD, 201E7DB01624212F01B85F5E, 94D8CEE59AC2644453705A74, AC3132AD4826E77E807ACD3D, B1C05A8D59655916054612D8, 293678404D17012C6E402AA4, AC043128E8D43D6EA4E29824, A464874D0B8C63AA78C937B7, 10B6D087BD60ECFE08F157AC, 2A5FA90E69311FB8A18EC3B2, 1E00488AE073FB510E4BE10D, 00869109FF554F8DB553761D, 6163B3DFD893F55523113A40, D80487E6482EB12BF2C6BD22, ); name = misc; sourceTree = ""; }; D9F37F228663829FCEC732D3 = {isa = PBXGroup; children = ( 106F27CF32C79FAEE768ABA3, D93CE990D75211F4A5EBB4F7, 4FE6B5F0E1AC94CFA6BCC19A, 2F8D57F15D63118E33CB0639, A4A64EF73E28AFFBD826AD60, 8D3B18C8A23499AB88F6B700, 1713D0650DCFA516EBF595DF, F98BEA2FEE66A3DEAD9D43B1, 2E524CE76F1B735AE8072E03, 1697DAEA5B5B105AE1C48E12, 37E835EA1318A5D504282D90, B589CF5248A17A319E5EC80D, ); name = native; sourceTree = ""; }; 7FE4C9E90512F2CE899CFC51 = {isa = PBXGroup; children = ( DF114C5936833878A46997BB, DB2F1179FFAFF392444F4FDE, 1562C9D9FEDD7C31F674E2BB, 488105705659833F97300471, D9F37F228663829FCEC732D3, B6EFD8D461F7BC1CA4954B69, 1F2FF9F4A1F8325AD3F19EA7, ); name = "juce_gui_extra"; sourceTree = ""; }; C351D1801F7000CF7EB16A39 = {isa = PBXGroup; children = ( A1F10BB1A2745DC95DDDE0D6, D6AB846628BE74C5349C95CA, 6257CEA3C6EADCB94E25010F, 5CAED9BFE11E46C835DC9417, 8366D5DB3CBA57E06C1D896C, 58F81EC0B3505F092DEBAA30, 94EC001CF772AFBA6D95F922, 1DB91DA41FDDC9D2F628C7E8, 810292CC81EC98F57F64D79B, 1225AF360A43D61516016CF9, 46C5401358EA7CF2D22FFC26, 77D7DE86E82C779B3DAA8678, E0565A19E2589729259C7116, 4212EA9CE0B9AA4986108D9D, FC1BA0654179A585DF5B9DC5, 6BA2D0C9FB49A5C3E0554000, AC25983CE9B938D1DB002A98, ); name = opengl; sourceTree = ""; }; F873F1C35B16AE04A75E99A0 = {isa = PBXGroup; children = ( FF34F4ED0C44B2BA4FBF22AA, E8DBB02B17A6E144D08E4CC7, 6308DABB4145FBD330B7DA5A, 8EF11A0D1370915CA7AF4F64, ); name = geometry; sourceTree = ""; }; 8EEE76AA4EC057A4D2507E39 = {isa = PBXGroup; children = ( AB3C484314062E809AC41132, 5E69510D460EEB7754976CC8, ); name = utils; sourceTree = ""; }; DFBBD0DCA08C2A6E552B7643 = {isa = PBXGroup; children = ( 200A1B6B96E1089110CEAD48, 7B81083FC4CCD2D096D93162, F5B288379859F5C9F4FB83BB, E8B785D8DD9C49BC7FF5EA75, 51DD2ECC1AED271892E87814, FC63A33CA2E025F5C4C22CD3, 8139DFF71A397BB4FC1C4413, ); name = native; sourceTree = ""; }; C47DD018E100D8FA5BDEBB7E = {isa = PBXGroup; children = ( C351D1801F7000CF7EB16A39, F873F1C35B16AE04A75E99A0, 8EEE76AA4EC057A4D2507E39, DFBBD0DCA08C2A6E552B7643, F4AD24F8DDD10C938759CEB9, 14A37C392DF6CF1CDB64612D, ); name = "juce_opengl"; sourceTree = ""; }; D0F919BD5E25E00651040936 = {isa = PBXGroup; children = ( 29930414E0C7FD5EFC7F2095, 36C9E79611229727DF5E5836, ); name = playback; sourceTree = ""; }; DBDA6BAA1B84CA0C6F838008 = {isa = PBXGroup; children = ( 3EC73BE7C098A631E5D5107D, 29C7AE377B006C00D4293C59, ); name = capture; sourceTree = ""; }; 75E1163D29EDCDF203433D84 = {isa = PBXGroup; children = ( 3009F5CB4D15119D2C680F98, C8CABD53634D53E64132CAAD, CE89334A964AFF33758CBDEB, 5D475A368AC24E639B8A3797, 97C3A2B9575153E4CA0537B7, C4CE4565F5D41303888F6A59, ); name = native; sourceTree = ""; }; D3C805B4AB4B31DFB20936B9 = {isa = PBXGroup; children = ( D0F919BD5E25E00651040936, DBDA6BAA1B84CA0C6F838008, 75E1163D29EDCDF203433D84, 178D5499D90E6C10AA778456, B6874BAE87F275944C07B498, ); name = "juce_video"; sourceTree = ""; }; 713498D20048E6A3D46E2D0B = {isa = PBXGroup; children = ( EAD085E39B98D2F88E2854DA, B5BC400B03F73362F263D1FC, 43D650FDDBAA28AE94A8942B, 326CA890D2481B82367C6F3A, BE68248271118CC1AB328F34, B92F6CB95B8D46F185B51F43, 7AB76D65BF8ACD7C0CCB6169, AED3AAA07A81C88CC540827D, 0B9FFA8B31858A3B3DFC06C3, C217E6D7051F0944FFE75A52, A3212051A49A69AC9D00F91B, 9C4033FFA3C21A4CEDF67C73, 7FE4C9E90512F2CE899CFC51, C47DD018E100D8FA5BDEBB7E, D3C805B4AB4B31DFB20936B9, ); name = "Juce Modules"; sourceTree = ""; }; AC3B3E6535CA727AC6C8B1F7 = {isa = PBXGroup; children = ( 4975DB849F14413317E94609, 8D70A7277DDD7B7974E9F178, 016565008F3FF4F39192ACA6, 0349FEE5DA18067918536934, 1E0453D8A9741695357567E3, 40D267701C8FF75121454D79, 66C5D2F0D9B9ABA7F4A386E8, 5B466272F3B821BE88BAC205, ED6224ABC715AAB68661F4D4, 4E49D12CA5C42721F532DCD6, B9D26C6C4CED62E6708B6865, 63AC834818EFF45708101F9A, 9079FD325609A4E67E44F3ED, B27A7B237782F9E15E4BF8D5, 09D51FD6DE5DF526BB36B4D3, 141036E097DAC47FB6F9CA80, 786CF1CA66289DB77845F8E9, 9895036432E9AE55EE16323F, 59E2B82491E344257F84FC40, ); name = "Juce Library Code"; sourceTree = ""; }; 821D88BA60F316F96BC8A86D = {isa = PBXGroup; children = ( 91F4E52A1B31FB5998FEF665, E80CA3836329ED0EEC74BAE6, AEF26EF11BEBA847F152A1D5, ); name = Resources; sourceTree = ""; }; 9439CB46EE08D16AAA26A203 = {isa = PBXGroup; children = ( 8D7BDA5CDDCCD2F7BE67037A, 8452076B5EAE822DD445458F, 4621682C1A4E85A088F7CEE0, 7EC42C604603E1ED621E635B, A078E4C69AFA4FAE8DCC66BD, EACCBFA17F4D07ECE058EEBB, 8F5B02778218DDD357C40D7D, 89F0B6B952BC68FD271A652E, 75B60B919D8CB88C6E0E0566, 0374860044AB7A23CED0D26C, 033BE48C56ED09055876AFB9, AAA2590D363C6DE624D320A6, 1796A99F33AD5998FE4A6035, ); name = Frameworks; sourceTree = ""; }; 9EB09FCC1FD3F263F24203C5 = {isa = PBXGroup; children = ( 229D2DAADACF15540C3BBD15, ); name = Products; sourceTree = ""; }; 605D88E415A9989447F78548 = {isa = PBXGroup; children = ( DAD5A945FFB6D6920BF0D1F6, 713498D20048E6A3D46E2D0B, AC3B3E6535CA727AC6C8B1F7, 821D88BA60F316F96BC8A86D, 9439CB46EE08D16AAA26A203, 9EB09FCC1FD3F263F24203C5, ); name = Source; sourceTree = ""; }; D0259E85380471FB442A4B44 = {isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "_DEBUG=1", "DEBUG=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_MAC_F6D2F4CF=1", "JUCE_APP_VERSION=3.0.0", "JUCE_APP_VERSION_HEX=0x30000", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.10; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter"; SDKROOT_ppc = macosx10.5; }; name = Debug; }; 80E4DBEBE0CE7D218C89F78C = {isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; DEAD_CODE_STRIPPING = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 3; GCC_PREPROCESSOR_DEFINITIONS = ( "_NDEBUG=1", "NDEBUG=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_MAC_F6D2F4CF=1", "JUCE_APP_VERSION=3.0.0", "JUCE_APP_VERSION_HEX=0x30000", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.6; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter"; SDKROOT_ppc = macosx10.5; }; name = Release; }; A16C0416417EF9DF7B09973F = {isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "JuceDemo"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Debug; }; 5D9A258B559C20D1603B9B9F = {isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "JuceDemo"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Release; }; E3E8152B5B6326971AA2F802 = {isa = XCConfigurationList; buildConfigurations = ( A16C0416417EF9DF7B09973F, 5D9A258B559C20D1603B9B9F, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 3E10D74DDAF399AFE44EAE00 = {isa = XCConfigurationList; buildConfigurations = ( D0259E85380471FB442A4B44, 80E4DBEBE0CE7D218C89F78C, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 8FEB5329109B581E7C40CEBC = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 295CBC656A90E90280D86BC0, 0C2591D2A41D00D364570D9B, ); runOnlyForDeploymentPostprocessing = 0; }; A1B40A40EED2EBD970739FBF = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 9E8944195DB3FCA7AC031CE5, E036E92901E0B69FCDF451DC, E95494B76EDE178B2969C527, 06ACE6F5252696569D99CDE5, 7FBBD57A4D5BF1101490D3E8, 3E91F110826EDA152862B57D, FA318C2AC336BAB1713BE5A7, 5FA25CA10C3E028E4E48B32E, 68A852C810EC2084A62E277C, DBC8796D834FEE0F1BF81BB4, 0FFFF4C3E1E3731E7EE281AD, EA7A6F1BBC7EB6740841C7B0, AEAFB0AE4BB38EF3EAC34EBA, 587D594CCB99791F4D724DB4, 40D223F10936E34918B48639, F739D6D21483E3498985C7AF, E4A67DD76D4D063F547F0844, 257CBA785DEDAF53F4E9BF60, 9C30D9613D76EEFDB1653F34, B810E94ECBCA231F60EBEA5F, 15B2A7314D1E347D65EC664D, 7F933AA1FB06796E6D67C6E2, 251D94E4E171A4A2B67104E6, 52B925A3C2C3D9B8CB7E42C0, B65EF8DC596033D841E653C4, B402A461C4EE2203251F9BF1, 2346D126B3690390A0925F06, C54286354BE46CB39B4C5225, FE559832F5E168F0FF04CB6E, E635FA4F49200CDAE3E4E6F0, CDC1A7E9F07FBFDD5DA92031, 5B96583E8DAA4EA4EA1ACF18, 372B92C7E54D51285649FDD1, 79B3AB44DF87025EBA9917E3, DEB871CA78557347FA3E9ECF, F95DB56FBBDFA7F55D265B22, 6624011B8E83912B5D05BA77, 4EDD1F01620725E627247B74, A1F184ABE297300A9E58BE94, 41F9A5936E54187528B817E9, 7BEA73E4BB71CE05E542A6E8, F11E1D83596BC7786FC69405, 67EB8B44CAD18BA4AF577528, 445DE2471E5D168763AF149B, 795A76FB056FA340861A8C51, E96BBEAA081BFD7B244B120C, FEDF1AA6CC2486AE0C1267C1, 47F2181361C8EB7D67C89169, 7CA1524D7DE0C18C1F070C97, 64A5DA788C3DAC2F02BBDA0F, 633491D8F37C87F3D426F0FE, AC074F24DB676919ABF06188, BFEF0063952A3A4DD92CB068, D39B2783DD6DB671D8BAC0EE, 7FDB32957337BE65186DA1A2, 52637F000CB62E13F2D98026, ); runOnlyForDeploymentPostprocessing = 0; }; 62864F0322651D6B1B57BBA6 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E16EA7E816B50766F3AE4F88, BB7001D6FD448E6C0AAE4F30, 11F44DE2908CA14F827EB448, EB6CEE01521D160E50EABCAA, 3A285384585A5F664BB4C652, 4E306BFA283851066E0DA96E, 546020C416AB5CF9FA039205, 52C5EAAFD0842CD9E9D9E710, AD1FFF7F33A7581679FA1638, 7B3B359BCD73C20D0BFCDEA6, 9855E6AE1E9125FC6C3673D4, C6619BC35B1F4CDC30CED302, A54E039753B2DDC2D8E5F1CC, ); runOnlyForDeploymentPostprocessing = 0; }; 5EA17FD285246351AFA8AF1E = {isa = PBXNativeTarget; buildConfigurationList = 3E10D74DDAF399AFE44EAE00; buildPhases = ( 8FEB5329109B581E7C40CEBC, A1B40A40EED2EBD970739FBF, 62864F0322651D6B1B57BBA6, ); buildRules = ( ); dependencies = ( ); name = JuceDemo; productName = JuceDemo; productReference = 229D2DAADACF15540C3BBD15; productInstallPath = "$(HOME)/Applications"; productType = "com.apple.product-type.application"; }; A97F75347E57A9C1AF731F1D = {isa = PBXProject; buildConfigurationList = E3E8152B5B6326971AA2F802; attributes = { LastUpgradeCheck = 0440; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 605D88E415A9989447F78548; projectDirPath = ""; projectRoot = ""; targets = ( 5EA17FD285246351AFA8AF1E ); }; }; rootObject = A97F75347E57A9C1AF731F1D; } JUCE-4.1.0/examples/Demo/Builds/MacOSX/RecentFilesMenuTemplate.nib000066400000000000000000000054321263452017400245060ustar00rootroot00000000000000bplist0056X$versionX$objectsY$archiverT$topJ#$*.259JMNVWapqrwxy|  !"#$%&'()*+,/2U$null _NSVisibleWindows]NSObjectsKeysVNSRoot\NSOidsValuesV$classZNSOidsKeys]NSConnections_NSObjectsValues_NSAccessibilityConnectors_NSAccessibilityOidsKeys_NSAccessibilityOidsValues 7I65GHH !"[NSClassName]NSApplication%&'(Z$classnameX$classes^NSCustomObject')XNSObject +,-ZNS.objects%&/0\NSMutableSet/1)UNSSet +34%&67^NSMutableArray68)WNSArray +:;4<=>?@ABCDEFGHI -'!#+)/2 !L ]NSApplicationO PQRSTU[NSMenuItemsVNSNameWNSTitle&1 YAMainMenu +3Y?A@GF>H')+-/bcd efgQh=jklmno_NSKeyEquivModMaskVNSMenuYNSOnImageZNSKeyEquiv]NSMnemonicLoc\NSMixedImage [delmeAppKitP s tuv^NSResourceNameWNSImage_NSMenuCheckmark%&z{_NSCustomResourcez) s t~v_NSMenuMixedState%&ZNSMenuItem)bcd efgQhB=jklmnXNSActionYNSSubmenu TFile^submenuAction:O QS& +3Cbcd efgQhDBjklmn ![Open Recent^submenuAction:O PQS"&% +3E#bcd efgQhDjklmn!$ZClear Menu__NSRecentDocumentsMenu%&VNSMenu)bcd efgQh=jklmn (TEditcd efgQ=jklmnǀ *VFormatbcd efgQh=jklmnπ ,TViewbcd efgQh=jklmn׀ .VWindowcd efgQ=jklmn߀ 0THelp[_NSMainMenu !3]NSFontManager%&88) +:4====ABCD=== !  +:4<=>?@ABCDEFGHI -'!#+)/2 +: 489:;<=>?@ABCDEF !"#$ +3. +:14%&34^NSIBObjectData3)_NSKeyedArchiver78]IB.objectdata"+5:? *1>EP^p+09BMOPYfms|~")13579CLN]_acegik$6?RWdfhj} BDFHJLNPR^m~!#%').KMOQSUW^  "'02OQSUWY[]_acegiktv  #&),578ACDM\asx9JUCE-4.1.0/examples/Demo/Builds/VisualStudio2010/000077500000000000000000000000001263452017400211305ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/VisualStudio2010/JuceDemo.sln000066400000000000000000000015551263452017400233470ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{91BB874D-440B-A2C5-C57C-5104BA5F5EDC}") = "JuceDemo", "JuceDemo.vcxproj", "{9C58F305-06EC-8076-ACCD-88CCC530EFB5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.ActiveCfg = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.Build.0 = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.ActiveCfg = Release|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal JUCE-4.1.0/examples/Demo/Builds/VisualStudio2010/JuceDemo.vcxproj000066400000000000000000003562271263452017400242570ustar00rootroot00000000000000 Debug Win32 Release Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5} Application false Application false true <_ProjectFileVersion>10.0.30319.1 JuceDemo true JuceDemo true _DEBUG;%(PreprocessorDefinitions) true true Win32 Disabled EditAndContinue ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2010_78A501D=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true _DEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries) true $(IntDir)\JuceDemo.pdb Windows MachineX86 false true true $(IntDir)\JuceDemo.bsc NDEBUG;%(PreprocessorDefinitions) true true Win32 Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2010_78A501D=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreaded true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true NDEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true %(IgnoreSpecificDefaultLibraries) false $(IntDir)\JuceDemo.pdb Windows MachineX86 true true true true $(IntDir)\JuceDemo.bsc true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true JUCE-4.1.0/examples/Demo/Builds/VisualStudio2010/JuceDemo.vcxproj.filters000066400000000000000000005453731263452017400257300ustar00rootroot00000000000000 {A38F6232-6AA4-A38B-3C65-8C6E976AFD25} {321CEB4F-D9F3-CA5E-D47A-006E0C218781} {AAAA6351-2E10-4704-1B68-B9B514A75764} {4780C7BB-5928-04EF-9CB1-95D9D77E9FA5} {422C46B7-0467-2DB0-BF3C-16DFCAFD69AC} {3247ED97-A75A-F50B-8CCC-46155E895806} {A33A1E1D-AC2C-6382-8681-48B0FC374C60} {11A75801-B027-40BD-4993-023023ACCBF7} {3FD908F5-98C8-9A61-FC03-0BAF8913CBB0} {8C868E51-156D-A916-047C-0D9EA1393675} {EF2CAB40-0432-429B-C517-86ADF136BB8A} {8F7EC212-3168-AD81-5064-C45BA838C408} {CACD7B50-4DB3-76AF-A6E8-90DF94F8F594} {9D270B31-2425-8FDB-84A4-6A2288FF5B2F} {0F766DD4-A277-CB86-5647-42498C8B41E1} {D64942B4-6984-3623-3347-45D472AE1C61} {45C2CE26-EC4B-BA52-58F3-297C408E1483} {01603E05-423B-5FC3-1BEE-E15ED33B5688} {65CB28F8-0422-A8F3-9A17-959E12A1F8E2} {2FE25F4C-E9DF-04A5-CAED-6E4B7CF28C59} {0CD9E281-DDD0-91EC-6F77-EA9D9D5E0E1A} {40C5CA7C-AEBB-05B1-11CE-AE41D87B5CCB} {0B0E7392-324B-088C-FBEB-5FE999D61782} {77E2C34E-A4D6-EDB5-A107-7CB3CEF0E8EF} {20254EFE-6CBD-31A7-2119-92B1E0E0E311} {70796D73-6D30-8A1B-4732-7C021E47C05A} {EB8DD942-E2CB-869F-D381-E02A65BA790B} {8F91DFC0-7A71-1BA8-D8D9-6B4CF49151A4} {B63F69FD-8A40-8E1E-E7ED-419B8DC1C12B} {8167E753-09C7-5D1C-EF2B-32D297557443} {AEDCB7F7-7A36-5392-8E9A-715F5BDE35CB} {B48C883A-8483-AF6D-808C-1D9A749048D8} {B2912FF0-8ED6-7123-C74F-BA4CF0F436AB} {141B1452-6821-88F4-FFF8-F13BC738929D} {E3D8F4B4-33E2-B3AA-1F4F-CD78351C6C37} {95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88} {244D11B0-2D68-3C08-A0B7-0D12469BC3AA} {476C69CE-0B67-6B85-E888-45D91E37A29E} {7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6} {0608ADE9-66EF-1A19-6D57-12D07F76EB53} {05F3DB8A-499C-6ACA-282F-5BF8455A0DE1} {C9F6D785-BF78-5AA1-B479-111C65397864} {C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D} {DA0DC4AC-B511-A2D4-199A-C93454D6F114} {91929C6F-7902-B87D-5260-2F6CBF8ACD93} {C294408A-2005-2E9E-7AC0-8D3ABE8AC175} {4634FFAE-9586-A970-364C-4FDDA635F99F} {F2B2F310-F30F-7166-42A9-9BF9C230DA78} {1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B} {F03654BC-34D8-F975-BEA3-750CC2783D23} {4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F} {FA891A58-9FDA-9651-43C4-714A19B5D08D} {C79A4D23-7866-8F3E-AC39-BD68C52A9259} {3C7C8F35-6C08-9866-6663-6FEFE2EFC9FC} {7703D2CE-C32A-936A-0EEF-949FE6E52EB5} {8D283B6C-13BA-9EF6-1B18-B1C393786943} {928D8FCC-5E00-174B-6538-93E8D75AB396} {1988E68A-A964-64CA-0E0C-26FF9BC5176C} {3DF036EA-3B80-553B-2494-3AAC835CAE75} {358AEA11-3F96-36AE-7B32-71373B5C5396} {F2A38F45-6E55-E147-2E52-64A89FDD9D59} {6172822C-01A5-E824-12DA-FA43FA934D35} {41DC3BE3-D629-8A17-C32B-F5B4008B5FAD} {B098BC87-3298-7E6B-12DC-D26C09CDCAED} {6322B88F-984A-C3CD-6263-38D7AA49B6EC} {73C1E759-AD90-59A3-942E-2D10FAA29107} {EE1AE8C3-0908-8F53-A4E5-D930C7C97C26} {4926B3FF-E797-F586-857A-69D9703FA2D1} {EBC65085-3AD5-280C-1A29-2B1683643AA1} {413F481F-075C-2958-115C-D8268682FCB7} {69E1179D-76EC-26DC-C3E6-6602ED26D783} {C1A1A236-AB01-173E-96C3-0706BFF93B1E} {1182303F-ECA3-166D-AC0C-92C5E762CB93} {26ECA2AF-7368-C6CC-58EF-017ECD1862D0} {E37D25CD-4350-4614-055B-7ABC55E67895} {FFC6E1CC-C772-75E6-5087-FB5D4E016799} {8E43579F-C185-266D-DD67-F8B95BD80F2F} {2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D} {796B7886-44A7-34CC-9B95-BF4FB2C7B6F4} {A92719C7-70BE-57C4-CE9E-A9BC9DFEB757} {75F1F352-251A-75E0-D941-8431588F5C1E} {DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC} {7BCEAB87-62FD-0327-EB5D-679E54EDB9B1} {E980FADB-6E3F-B93C-DE02-CE4271C9BA93} {C3B2EB8A-1A2F-306F-AA78-3E9D1593788B} {7A53E6F1-1343-33B8-4CA8-1D7B714A0E76} {5A0AA36E-3957-E413-14C6-31CBE15271DF} {D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB} {F408DCA2-D5E2-0A3A-A064-A1D045889BC1} {5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4} {46535B56-3737-2BE8-E3A0-571BCBEB2DA4} {C2B9505B-27B4-F650-12BD-F477D4BBCBAA} {61712B09-5783-ADFA-2001-5A0C3D7764EB} {8A80BA78-D3A8-C0F8-7FFD-61AA028CE852} {8EC9572F-3CCA-E930-74B6-CB6139DE0E17} {C60A6FCA-9462-922E-AD8D-69F10C9049AF} {D56498EE-E354-1F00-5EEE-8CF7944BEAFB} {61B2920C-494D-D8CB-C0C7-5DBF3D76D164} {66C9B809-8739-A217-C78D-A15D6089B8E3} {C413328B-5D81-89EE-F4F3-75752E700DE4} {639E16C5-DA8B-ADBA-6E24-7B596378EAB2} {2D8D0E19-E676-83EB-38D9-F73500DD6B79} {B3141847-8F13-F67D-45B2-E3ECF6E09088} {9E586194-C056-101C-5311-F2AF5191AC80} {151B49D8-6102-F802-1C07-D59931BC0574} {72A923E2-C729-DB92-D7BF-A9D4AFAE5896} {0E43EA8A-95EE-4253-E1B7-160F38ACBB00} {7F11E7D2-54C0-2A36-5F15-BEC0A5374A08} {EE985DEA-CD83-8132-7219-542BB1DAD560} {8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61} JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_box2d\utils Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\utils Juce Modules\juce_video\capture Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d\utils Juce Modules\juce_box2d Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\utils Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl Juce Modules\juce_video\playback Juce Modules\juce_video\playback Juce Modules\juce_video\capture Juce Modules\juce_video Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d Juce Modules\juce_core Juce Modules\juce_cryptography Juce Modules\juce_data_structures Juce Modules\juce_events Juce Modules\juce_graphics Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra Juce Modules\juce_opengl Juce Modules\juce_video Juce Library Code Juce Library Code JUCE-4.1.0/examples/Demo/Builds/VisualStudio2010/icon.ico000066400000000000000000001014161263452017400225570ustar00rootroot00000000000000 hF  00 %V H:(  @El!eȁ۬ޫ۬dɂKi"Tud۹ǭtӮe˟HƑݳUufTudZZЩ[''ϧXUufGg ڼxidZЩ['œ3շDZKi"cɁPǔӘGjGh]GjVKnע\ZZZZZZZZ''''''''Ž)԰i٤KnGh]GkNGjסǧZZZZZZZZZZ''''''''''ܿ٤GjFhSFiHj{Ҕ^ZZZZZZZZZ'''''''''+ԭӘGjEl!Hjdʂ̮`ZZZZZZZZ''''''''Ñ.Đg˄HiUUHiUPq|PPԸӶӶӶӶӶӶӶӶӶӶӶӶӶDzNq-Ka…OpPrJja…OpPrLnUq Lnl<}<}<}<}<}<}<}<}<}<}<}<}<}?LGGGGGGGGGGGGGoNq/OGiQ<}<}<}<}<}<}<}<}<}<}<}<}@LGGGGGGGGGGGGTIkFiÒ٧t<}<}<}<}<}<}<}<}<}<}<}CVHNGGGGGGGGGGGu۪GiGiyѓ<}<}<}<}<}<}<}<}<}<}@VSFILGGGGGGGGGG|ҕFhDhGYxC<}<}<}<}<}<}<}<}@YSSFFLLGGGGGGGGL\{FfPJjGi޻m<}<}<}<}<}<}<}CVSSSFFFINGGGGGGGqFiEl!Es Gjo͋A<}<}<}<}<}@VSSSSFFFFILGGGGGKuϏHiNb Hj[IlT<}<}<}<}@YSSSSSFFFFFLLGGGG\JlGj`C]Hin͊?<}<}CVSSSSSSFFFFFFINGGIsώGkEhEgQOq=}@VSSSSSSSFFFFFFFILGPrHhXGjbɀYSSSSSSSSFFFFFFFFLeʂGj?mFjvϑVSSSSSSSSSFFFFFFFFFI|ҕGjJbGiKHj֞TSSSSSSSSSFFFFFFFFFFעGkGjOFfPJl֞USSSSSSSSFFFFFFFFHסKnGjVFfPHjwϑhWSSSSSSFFFFFFJ\{ҔGjGjVGiKFjbɀ~YSSSSGFFFLsdʂHjGhN?mGiOqn͊e}vYzqΌPqHjFiEgQHiIlo͊r΍JlGkEiUC]Fj[GjGiYxyѓ٧ڨyѓZyHjGjFi^Ã3z|=}4 :3sLsWE}nD8k*0́<@bTaPx܇<_mCwh. _5z~amK)F'_y,!JV$JI%i+@8k:jypT'”7iB0h 9I 2O(X8(~JK GVwlaݝClNfTvM?w̬±fq2@šQa? zQ=\omwpۧ% 30U}oy[lvf1I"](cb7RA.;m\{Ë.@UY?(_Sn=`B!Сw 1$yC}U_kX6m Q;+yߵo1,"g"n'`@ z#/m鵝oinF0 \a58Pc``rp (9Ϧ'@OSl|uS?7f.+ V&0Zhg`Lc c\BEp 4` v+L OxFa R~}DOa7|"4 xƒ-bP yyuݩMF8h3;bq FLI=eI8rM(BejYʑg.7wfq{-p:B,'k=&D4| @֚RUi98CnA} NEs<*lc0j`uhAw?nGwzCnHNECoΧK. R|Zԋk)dYЋ",u7 cs'^Z=PFh TI'aJLhlqz!zaGzlZv!tp^w@ Fazۼ+; f%4D&!\1pF9k6WDZ|Gk >omFpO3 k ޿LĂ.1pcsqU5: ulILEaj<-Y19i06೶c@H=w'BetPLYx%Ǹ ށ?rÂ^8fޚ"K c{#>n'n']7-3`)˟s_ي0B(<ߪ8Se戠߄OZ}q{N.NM!Eff,| si^x+g2 VKcOQXiAva=\NY $FpYJY+Y+A oMDֶ' if]<{7)348 ~:zUs KңL¢pJwal)}#Bj PW$|4b>&?Xl4G cFcx(p99Ƃ]IAal4@s\Bp|ZygUoݲySJ 0tEOλ.CIXRu!旝 uزRPO3<>5Oyu154.1R5|L@yD|: q HUMêe#Z0bOrg/<*σO{ 6mBqhaHyh3Q7P3_] js!>VqkZƊg {bR%ێ~q;wnٮ1Ȉhτ#&`SKG_Fo4ӀѵY t<=5qsT+bg)?@F΃[u|ߠ{/aW!11]‘H/? {R̈ӊm߹b5%&bL$\8Ǩ&m9)">ӐAoPs[1u)ߧP1,eJP*cWtCbk皘p?P5kc<Dӟa8B\3&㞞MxahmLb-{/z y1b.xlyU'qdT,ef&ߍ? <7A G/c0T[9P"za uA)j *a^w B9K,,|q]B70Fpp]c1 եz(rLyj/|ySB7e~7^A`?gQ' @7AԳ Q!0OԹcJۉ[=q o+0-jLn{v_Vgs -WS%&avv](J螬"aHmb=xEgP|Әg8٩1 q-)ud}7/d&VNv`歸&L/89@/BȾ>lPSoP=gp@ ClX,0 S`\ GPH GĚ:zϷ&t4' ^{{)5>nZ[$əuqߋEXAt@fy߀ Dvwցzq 1d mhV qڊm?>pMiI:IqsM)RkKU "C'6MӁ?@F chrSl6pF(1{6ԲznQ7mN$9OsO} q‚qg;w Hd @&Aroر m8Ki\=rYѽA)6xGye$k} tL\L}ILq\߇n"gq/VJC80b뻠f1dAwMe`3.Ը0ɠ_Zeͻg&1Ca5um iSN6 ز}t5f*^oGyV9t=-LN2w󜟖M#S擘g ‘F!{:hbǠ p0f٤6.̙tNUΖAe;lj(+Ӟ~p!1%(59Qj]|-E c ?K'܂K?m?-Xțo2R@Al}!1xmNULm7 cvV%K9J&IL&3 7x-{#JCz@?1ybL? :WA";7|CE>1gQɤSQy'睛[aS$S#TrZ!F{t?Ggd!tcr&G?|RY,e?LFC@ 9e\XSJ|ӫ.L^|~ X/ Q Iu1`sbG౓'uP::+ y'ت(ANU'bpZp䋶~,,?GY$l 43` -eQqWgf]rLy&T3 /y~X#i?gS <D@dq ~Fxp{`gu6,k񪉦qAu8مNG28J-?>gwҘts%Up5Kn)ۆ?]篁I@0`"k:x ‡75 f ITlF_y E_ޫڗ7?&ީR+zbvElE ''^lr]gSr:S틅pg<sxB )ME_,m7JnƂTR?1ZnҚ#?nMcT, S]zE^^>Uc>^SS[(z5f3?c_^/tQvQ{Sgnzm'z5c Ċ2 ~ëX R>Wm@@ @1ՖpYݭkVLb1 0;:^d a]r&f%gŃfTn=L'A? UmYd)Y/S S/|b  $3ɎXyרv"!_Iӧΐ x&U[Zq*5 PF9~W:4l3,OO94..1^ 1y4iis^Ox\*H_1ӁgX<=J]-ϩL?!$g+u0OnR_r sJ>FnĨ@z),AvvC[} c 5sJ S{m6X Έ/WGl?5/x;B C$\K/ETCzdxȞҙV[V&ߏ2*it)w<bTH3n ~[Ω$&z1[銡i]xC핂?E 5M/D>VvԍEv ^+߀Xw44M!yRa)3,ݗ2 K.W e<C{10O4Q8^[]s L/|\U#)teZ3UyW}5Ӂa"# 'TM;JIIuE5kgrA kDzPdBV@Lp`qB):=u9(o580L`%—ӁD@J1{6aϼ--?S n"2oP,(;Ku/yHa% 1\{QzTbL?FhJ;xJ[,|j?<PUӁE@@(^8.tfqwy}>'^8J`*p.6; ֧oOE nڭ؆'V-[YHPOQ?{@0ZJL·*QƷhn4EhD"o~)=U[-YXn2=mYI I<묙2;r׫Q <}r$2H4dM" ES 9Q8r G̓7)0@ 6r?8%[~MK ) ] I f2- %O`<5 gUOF_a=X(NzAͣu(ɇ[]'\Y7Ik k&8t> )СcNӁ ¾UZ-=Cv1L=BK Lʝ9eт>Pa (<R~vkG_DYbpgF>ʨ?%=JB#vA8[M? gc #Q:MzMv^3a޿qbA-vFt`D(LB *{C.j̹6[OYYSfmL _yU?Έ;(D@jEec՟WyfiU.XBeD*bJ>;?J6ܸ,\X!ɚ BT,%*0 ]M:4N^iOsm.| d?xDT[͝*`veϩT~ƈ&O}vu v2qk2P}ǍȄP(+d3mǃ&OPݩkIT* ZdQb}' E*r/ N% GehX\~xjH|q8E@CH Pe.CP.@&'yrd#|rpr?iȜ}>}' S݀2kuU ƯO g urR n pi0M#vw@a@cB&T/(N֎0hu*Rlje?wwjЃ|4`Lyۻ>R IDATZ6MnұڑR=(PjV< u&kFJO@w5hYMr5Lb(;P9Q#C\I_Taاۯ=@K`/B)nzJO.4F䛕)bױdM[X3 v  c$'R:ZUpj~qJ!?J)@ ǾL U.@I {x9ǘXjH !rz/?Hbj|K5/C“]sk=ɚ0w:`;N@8KK@L?0 5A.4n f.yPvUH͂ 4 CB/eHtc`:`U ˦q_B@L lyLdR;~*6ëa,=@E$PxSĜO=}ڐ2u:3b!7$%`#xT_[c}m7?agTN: `2 D!pIOJr8 NcjSΐ#O<~m6rdg 1UWk;@a}Xg9kA<ɢZ!8[(*sb(65 b>S.d>FLf8.n1[DL`7xIMgR+tн>ްm VGu3]խ!GlUDG A!=!_')fdgAבbh@Eo *mO^RaI*Al@LIe1mg_7>@['$R}t4@rpS uɶD*zu'eC2)De;T?ϗ&td_ oWOPUw,g"lbP4b MrznՏUzO<9r}YD1v<&ڀ2T@B8-Gs"~ڊApb'ix P"խ@aT9 釆b"7/#ԟx8u<"OȵO ^ԋ |N&'B )O2 ũMn8m}:193CR4;I @玾C[:͊+|i$$kp{}:9v);؎L8=iOv$-͛:2:$'@؁ C<1]lQ8 _:Uy~R쒻v &;_%M~9tHJs^ Ž4fRHa|-`O/.CP/FR?6-lDGx4xeg6Zr"&|XA425N kR^an14xp8л]IuGq/-G( "?y3=s pöMZآtx;7x2E>qVNdߗ> SuƀBEX ݟ8eaur!nՀ z8pb?^t T _l& >?^9١lH^. 52'3P_]Ա(/6G@ !ȧZ٣]~t ]ݟaȉH`/~9tP43" >Z= ]AOD6gb~s0;F$V_"081.q|ط& AD?[{qo jiiRen|Pv_>z6mZߤN8F4wxa.yN *p02'{$03CeY%OfHl=!6i*_n^-A+lZڇyɀa g@(1-Umd#VK @v_]h7կP?|Ef ?#CbH `|o/3qyB`_u`BvVeɷg7 S}:#]* w7ʗ#@$$ e5/66xڇ包Z5<$۟AB"@)C]K݆d״MsؽoPMWE#3!vv6~{zwHkm[JjrENnh@yܳۯH102OĠ*VABkau4$p+PwcbLL_ݺB84lxQkۀ 7{B+{nr+g&F,ɬ@폋x(ENʇZ} ArȁީD)+w,W^URobڑ&w(cRSnu #gd 9R&=V$(V׻U0yɂ TӁb ŹV6!) +e=  @@/I/>OCRkBM(c1FƎ^lQ=vL`ʶ'@u]ֶ+p~T9 |گ)4wXPU|æ劋};Ra)5ڳ >m}GO?WSB6L(c9VTf4+dWZ} 5;!{*X>")%ӧN c8n d#n﫤\^yq!_uwc_u1?rܫqoe Jb|=+1ǵ\ bW!!<v` ֳOR oDD(˷R%V}VvOwN.V^l|dSbv]4ccG ^~bQ2tX$` 3AMwb 9M!}kCD&"OyUrrدhdB&0S~LOu~d&y0#w+ӎmY*5M7x';л]'zlkZڦĐ [aE/ୣGPRwhڡIۯSE"0TG)f/Ũ꡿ _o۪r 땻 ƗU1ΜKCu?-IǣE9W\b\N ҡ4UTvk A wC/ǍWXO|tH);a)z{wWՐ!졝Ha&w]b"qQ~\'^}Ґx?,t1`FmTJ}/7%߀С~y11omלQa-gj_E'yMyn1Ӂ|c8h{^]'3w+KC.ß>eDGA:o\zإ*۟ tSUL!ЍJ̽}w'mT `"nd@W o7<DnJ`ܫO'Z(c=.zPgb{ "(JGvÆripx%4+Ix4.97Vn 0NLQ ݷJ}+E wZn"@RjUapK`)bXþlGxzKqyp &rCJs,%n8:żSViQmSv[U;K1.؄HNp paIjJ!TW"e}npcQge 101H!n95)Um=BH;/p:χi \8Kw2Q,^+'<>ŃG޾a~ ccJ,۟Eo~*Rr:i̠tp_7 0%48B0ozqC $hQcA@YqYqN YYE۴Iw/SY2uB8|1L3cSP[-_ˢ?Rb`݆@ѱ%t0S'0K?՗=3HO {{'i#Ν[w)& DeȦH_O} Fè #.Dlx;yNxᇫzJ.O؍wS|@}!ub(c8ңs"N^<0Ғ7izc H;vp &1ٺazhv/o-D$_]^Śַ_KGgwlh9Ӗ7?_$ơU @'X؋[j^ xox֍;a HKoܰvX~ql${t"#Mɭ!5Q\#AG~nBVW?f=Ū=(:3$p۟x`+vT$ c?MFC@Z k5$FѝG}'`5O1ÔX'܍ުxeM;pڵL{h?vٌ&v[oCG@vPхU2d(WlM9~OA6-#1?pU@TNPd3LǷǫg}[nR';w(QOml_ްfR54_i^lh[pbh5fA¾0eUp "b*6]>HNSOAUzoMpەA?K?@ixOwN 4ކ]kb788o`6ꋃ G~qj-;grͱ4o7OJ#~h\fhH`-/yo9U9&0GyaSǰ vN 5Gnf70R<2/˦1{ʎxdS?_{,xXD`3D/&f(*珇%׆]`M!m1\30|Ոy*@VD!?(V#;ݧEQoP7sޠ _?+nגر9Emb2Y (L$SrjMtlf6{K&aNU.8xV<6t[ OlՍ~9J`6UpmwX뀁akj:15J1/(T'탧ɝ@@2̪K'iePPFY<~4@΃[$cw:u{V4﫜zVh=( C vFmd8h3aZOoힴ]tH uEv(@O%ַ‘]_ui{?R`--99*,x+VjK_bM8qͭy6ԜR/ S BpipjQR3w|Gv?mW]QB7VVPs lDlͨ͝ !c`+t`̂:NDo'b$`O)u7 kQoM(o7ҋnxQUpbHZ} ›_8SJPGB8i[9κ_Va1 }=iXLǽgOVct^b>k 4w]GW|P /C^\0.Y‘X{)Pn qDF?#ÁisCOE on4 ㌧?`aKpR93@G/#lQB|݇~kJĈSN~R)  %Kpv͕pbй ?ڍc ' ͑ *R#rp/$bΟA`1p_ 'b(Wx%P&!GpbXsl4{oqpߔ00x ;bR.#"hv ?݇M)ˆx4/nŖ3rpv}#W ;>k@oK5oNxlÃ;oٽ?iC2*s9tj3I(4+1hbZxj±u{~hf@%/?Ϙӣn\0hu_ R|*rd\!Whxe6,?4x'r0פ[dD /(pä{$=u$&^5W`R,Mm{PyIDATbm;в#y  |(Cɤ zǙ {<B" QxݺB;W0ʅ%v]}{#Oco>}^m_,c K?ɮDž8 *Uq82L̟ŔT{̍C׊ÝuA F-P1{ݢsRpLJ&߈1@b 18܉NL(bHtpn8,v7ѷ>Pߍ/ǺSb\ W(Yj=q?)L%{D>K*/"xoC1,B0 ȯ)¸%Q6*{lk⯛oH'(PcƘ|P`t5ǽ 4;b_?zzMozar^.p/WTi< ʗb^rRd0@E N4;% #CH `cGi9Z} q@_'no??Ͼ 㷂Y7I(e N)gasBJJ(ִ += G@%k|HX?*O)-cOe[ H.$Fan,Z)̴# X6!\IB={tw_]bdڲiVVhDJ R&#DHz!p~w}Z_}="@#wẍ́KkNd)MڸA х2[5cQaAaBRvw hEo "p_l\_;ܡI#]=3Lt^mqr$|$0`Mr2"\K Epra7fp`M0p&p=$,DP?܋P'm7܋0 1{'#!b)罏[oi.)dj,4\fqf0チ1 h39?ʤ_DEHLBdh?B^ v,o~v#]ٗ\vمE80L+p|Ї#MaZ˖޽{dQtE̽~EF,8 ӄtpO!c_[ ؄()0L={TeU 6;fdM(bypA$$uηŹ/0<~J’[`'2 #cI48x]+l$`6ntL/M*Fr2 M5XzU(x1R6|@x" Ů_$lE>;A˖{ẼfvɸɹcaMxn— f.x= {MolF|eϞ},[HU F“#b9Iہ=5Su4ECœs.ptn2;N˖c2[l/˗y #pᐷam4}u^GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG'1_)IENDB`JUCE-4.1.0/examples/Demo/Builds/VisualStudio2010/resources.rc000066400000000000000000000012051263452017400234660ustar00rootroot00000000000000#ifdef JUCE_USER_DEFINED_RC_FILE #include JUCE_USER_DEFINED_RC_FILE #else #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include VS_VERSION_INFO VERSIONINFO FILEVERSION 3,0,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "FileDescription", "JuceDemo\0" VALUE "FileVersion", "3.0.0\0" VALUE "ProductName", "JuceDemo\0" VALUE "ProductVersion", "3.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif IDI_ICON1 ICON DISCARDABLE "icon.ico" IDI_ICON2 ICON DISCARDABLE "icon.ico"JUCE-4.1.0/examples/Demo/Builds/VisualStudio2012/000077500000000000000000000000001263452017400211325ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/VisualStudio2012/JuceDemo.sln000066400000000000000000000015551263452017400233510ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2012 Project("{91BB874D-440B-A2C5-C57C-5104BA5F5EDC}") = "JuceDemo", "JuceDemo.vcxproj", "{9C58F305-06EC-8076-ACCD-88CCC530EFB5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.ActiveCfg = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.Build.0 = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.ActiveCfg = Release|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal JUCE-4.1.0/examples/Demo/Builds/VisualStudio2012/JuceDemo.vcxproj000066400000000000000000003566131263452017400242600ustar00rootroot00000000000000 Debug Win32 Release Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5} v110 Application false v110 Application false true v110 v110 <_ProjectFileVersion>10.0.30319.1 JuceDemo true JuceDemo true v110 _DEBUG;%(PreprocessorDefinitions) true true Win32 Disabled EditAndContinue ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true _DEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries) true $(IntDir)\JuceDemo.pdb Windows MachineX86 false true true $(IntDir)\JuceDemo.bsc NDEBUG;%(PreprocessorDefinitions) true true Win32 Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreaded true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true NDEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true %(IgnoreSpecificDefaultLibraries) false $(IntDir)\JuceDemo.pdb Windows MachineX86 true true true true $(IntDir)\JuceDemo.bsc true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true JUCE-4.1.0/examples/Demo/Builds/VisualStudio2012/JuceDemo.vcxproj.filters000066400000000000000000005453731263452017400257320ustar00rootroot00000000000000 {A38F6232-6AA4-A38B-3C65-8C6E976AFD25} {321CEB4F-D9F3-CA5E-D47A-006E0C218781} {AAAA6351-2E10-4704-1B68-B9B514A75764} {4780C7BB-5928-04EF-9CB1-95D9D77E9FA5} {422C46B7-0467-2DB0-BF3C-16DFCAFD69AC} {3247ED97-A75A-F50B-8CCC-46155E895806} {A33A1E1D-AC2C-6382-8681-48B0FC374C60} {11A75801-B027-40BD-4993-023023ACCBF7} {3FD908F5-98C8-9A61-FC03-0BAF8913CBB0} {8C868E51-156D-A916-047C-0D9EA1393675} {EF2CAB40-0432-429B-C517-86ADF136BB8A} {8F7EC212-3168-AD81-5064-C45BA838C408} {CACD7B50-4DB3-76AF-A6E8-90DF94F8F594} {9D270B31-2425-8FDB-84A4-6A2288FF5B2F} {0F766DD4-A277-CB86-5647-42498C8B41E1} {D64942B4-6984-3623-3347-45D472AE1C61} {45C2CE26-EC4B-BA52-58F3-297C408E1483} {01603E05-423B-5FC3-1BEE-E15ED33B5688} {65CB28F8-0422-A8F3-9A17-959E12A1F8E2} {2FE25F4C-E9DF-04A5-CAED-6E4B7CF28C59} {0CD9E281-DDD0-91EC-6F77-EA9D9D5E0E1A} {40C5CA7C-AEBB-05B1-11CE-AE41D87B5CCB} {0B0E7392-324B-088C-FBEB-5FE999D61782} {77E2C34E-A4D6-EDB5-A107-7CB3CEF0E8EF} {20254EFE-6CBD-31A7-2119-92B1E0E0E311} {70796D73-6D30-8A1B-4732-7C021E47C05A} {EB8DD942-E2CB-869F-D381-E02A65BA790B} {8F91DFC0-7A71-1BA8-D8D9-6B4CF49151A4} {B63F69FD-8A40-8E1E-E7ED-419B8DC1C12B} {8167E753-09C7-5D1C-EF2B-32D297557443} {AEDCB7F7-7A36-5392-8E9A-715F5BDE35CB} {B48C883A-8483-AF6D-808C-1D9A749048D8} {B2912FF0-8ED6-7123-C74F-BA4CF0F436AB} {141B1452-6821-88F4-FFF8-F13BC738929D} {E3D8F4B4-33E2-B3AA-1F4F-CD78351C6C37} {95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88} {244D11B0-2D68-3C08-A0B7-0D12469BC3AA} {476C69CE-0B67-6B85-E888-45D91E37A29E} {7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6} {0608ADE9-66EF-1A19-6D57-12D07F76EB53} {05F3DB8A-499C-6ACA-282F-5BF8455A0DE1} {C9F6D785-BF78-5AA1-B479-111C65397864} {C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D} {DA0DC4AC-B511-A2D4-199A-C93454D6F114} {91929C6F-7902-B87D-5260-2F6CBF8ACD93} {C294408A-2005-2E9E-7AC0-8D3ABE8AC175} {4634FFAE-9586-A970-364C-4FDDA635F99F} {F2B2F310-F30F-7166-42A9-9BF9C230DA78} {1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B} {F03654BC-34D8-F975-BEA3-750CC2783D23} {4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F} {FA891A58-9FDA-9651-43C4-714A19B5D08D} {C79A4D23-7866-8F3E-AC39-BD68C52A9259} {3C7C8F35-6C08-9866-6663-6FEFE2EFC9FC} {7703D2CE-C32A-936A-0EEF-949FE6E52EB5} {8D283B6C-13BA-9EF6-1B18-B1C393786943} {928D8FCC-5E00-174B-6538-93E8D75AB396} {1988E68A-A964-64CA-0E0C-26FF9BC5176C} {3DF036EA-3B80-553B-2494-3AAC835CAE75} {358AEA11-3F96-36AE-7B32-71373B5C5396} {F2A38F45-6E55-E147-2E52-64A89FDD9D59} {6172822C-01A5-E824-12DA-FA43FA934D35} {41DC3BE3-D629-8A17-C32B-F5B4008B5FAD} {B098BC87-3298-7E6B-12DC-D26C09CDCAED} {6322B88F-984A-C3CD-6263-38D7AA49B6EC} {73C1E759-AD90-59A3-942E-2D10FAA29107} {EE1AE8C3-0908-8F53-A4E5-D930C7C97C26} {4926B3FF-E797-F586-857A-69D9703FA2D1} {EBC65085-3AD5-280C-1A29-2B1683643AA1} {413F481F-075C-2958-115C-D8268682FCB7} {69E1179D-76EC-26DC-C3E6-6602ED26D783} {C1A1A236-AB01-173E-96C3-0706BFF93B1E} {1182303F-ECA3-166D-AC0C-92C5E762CB93} {26ECA2AF-7368-C6CC-58EF-017ECD1862D0} {E37D25CD-4350-4614-055B-7ABC55E67895} {FFC6E1CC-C772-75E6-5087-FB5D4E016799} {8E43579F-C185-266D-DD67-F8B95BD80F2F} {2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D} {796B7886-44A7-34CC-9B95-BF4FB2C7B6F4} {A92719C7-70BE-57C4-CE9E-A9BC9DFEB757} {75F1F352-251A-75E0-D941-8431588F5C1E} {DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC} {7BCEAB87-62FD-0327-EB5D-679E54EDB9B1} {E980FADB-6E3F-B93C-DE02-CE4271C9BA93} {C3B2EB8A-1A2F-306F-AA78-3E9D1593788B} {7A53E6F1-1343-33B8-4CA8-1D7B714A0E76} {5A0AA36E-3957-E413-14C6-31CBE15271DF} {D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB} {F408DCA2-D5E2-0A3A-A064-A1D045889BC1} {5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4} {46535B56-3737-2BE8-E3A0-571BCBEB2DA4} {C2B9505B-27B4-F650-12BD-F477D4BBCBAA} {61712B09-5783-ADFA-2001-5A0C3D7764EB} {8A80BA78-D3A8-C0F8-7FFD-61AA028CE852} {8EC9572F-3CCA-E930-74B6-CB6139DE0E17} {C60A6FCA-9462-922E-AD8D-69F10C9049AF} {D56498EE-E354-1F00-5EEE-8CF7944BEAFB} {61B2920C-494D-D8CB-C0C7-5DBF3D76D164} {66C9B809-8739-A217-C78D-A15D6089B8E3} {C413328B-5D81-89EE-F4F3-75752E700DE4} {639E16C5-DA8B-ADBA-6E24-7B596378EAB2} {2D8D0E19-E676-83EB-38D9-F73500DD6B79} {B3141847-8F13-F67D-45B2-E3ECF6E09088} {9E586194-C056-101C-5311-F2AF5191AC80} {151B49D8-6102-F802-1C07-D59931BC0574} {72A923E2-C729-DB92-D7BF-A9D4AFAE5896} {0E43EA8A-95EE-4253-E1B7-160F38ACBB00} {7F11E7D2-54C0-2A36-5F15-BEC0A5374A08} {EE985DEA-CD83-8132-7219-542BB1DAD560} {8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61} JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_box2d\utils Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\utils Juce Modules\juce_video\capture Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d\utils Juce Modules\juce_box2d Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\utils Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl Juce Modules\juce_video\playback Juce Modules\juce_video\playback Juce Modules\juce_video\capture Juce Modules\juce_video Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d Juce Modules\juce_core Juce Modules\juce_cryptography Juce Modules\juce_data_structures Juce Modules\juce_events Juce Modules\juce_graphics Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra Juce Modules\juce_opengl Juce Modules\juce_video Juce Library Code Juce Library Code JUCE-4.1.0/examples/Demo/Builds/VisualStudio2012/icon.ico000066400000000000000000001014161263452017400225610ustar00rootroot00000000000000 hF  00 %V H:(  @El!eȁ۬ޫ۬dɂKi"Tud۹ǭtӮe˟HƑݳUufTudZZЩ[''ϧXUufGg ڼxidZЩ['œ3շDZKi"cɁPǔӘGjGh]GjVKnע\ZZZZZZZZ''''''''Ž)԰i٤KnGh]GkNGjסǧZZZZZZZZZZ''''''''''ܿ٤GjFhSFiHj{Ҕ^ZZZZZZZZZ'''''''''+ԭӘGjEl!Hjdʂ̮`ZZZZZZZZ''''''''Ñ.Đg˄HiUUHiUPq|PPԸӶӶӶӶӶӶӶӶӶӶӶӶӶDzNq-Ka…OpPrJja…OpPrLnUq Lnl<}<}<}<}<}<}<}<}<}<}<}<}<}?LGGGGGGGGGGGGGoNq/OGiQ<}<}<}<}<}<}<}<}<}<}<}<}@LGGGGGGGGGGGGTIkFiÒ٧t<}<}<}<}<}<}<}<}<}<}<}CVHNGGGGGGGGGGGu۪GiGiyѓ<}<}<}<}<}<}<}<}<}<}@VSFILGGGGGGGGGG|ҕFhDhGYxC<}<}<}<}<}<}<}<}@YSSFFLLGGGGGGGGL\{FfPJjGi޻m<}<}<}<}<}<}<}CVSSSFFFINGGGGGGGqFiEl!Es Gjo͋A<}<}<}<}<}@VSSSSFFFFILGGGGGKuϏHiNb Hj[IlT<}<}<}<}@YSSSSSFFFFFLLGGGG\JlGj`C]Hin͊?<}<}CVSSSSSSFFFFFFINGGIsώGkEhEgQOq=}@VSSSSSSSFFFFFFFILGPrHhXGjbɀYSSSSSSSSFFFFFFFFLeʂGj?mFjvϑVSSSSSSSSSFFFFFFFFFI|ҕGjJbGiKHj֞TSSSSSSSSSFFFFFFFFFFעGkGjOFfPJl֞USSSSSSSSFFFFFFFFHסKnGjVFfPHjwϑhWSSSSSSFFFFFFJ\{ҔGjGjVGiKFjbɀ~YSSSSGFFFLsdʂHjGhN?mGiOqn͊e}vYzqΌPqHjFiEgQHiIlo͊r΍JlGkEiUC]Fj[GjGiYxyѓ٧ڨyѓZyHjGjFi^Ã3z|=}4 :3sLsWE}nD8k*0́<@bTaPx܇<_mCwh. _5z~amK)F'_y,!JV$JI%i+@8k:jypT'”7iB0h 9I 2O(X8(~JK GVwlaݝClNfTvM?w̬±fq2@šQa? zQ=\omwpۧ% 30U}oy[lvf1I"](cb7RA.;m\{Ë.@UY?(_Sn=`B!Сw 1$yC}U_kX6m Q;+yߵo1,"g"n'`@ z#/m鵝oinF0 \a58Pc``rp (9Ϧ'@OSl|uS?7f.+ V&0Zhg`Lc c\BEp 4` v+L OxFa R~}DOa7|"4 xƒ-bP yyuݩMF8h3;bq FLI=eI8rM(BejYʑg.7wfq{-p:B,'k=&D4| @֚RUi98CnA} NEs<*lc0j`uhAw?nGwzCnHNECoΧK. R|Zԋk)dYЋ",u7 cs'^Z=PFh TI'aJLhlqz!zaGzlZv!tp^w@ Fazۼ+; f%4D&!\1pF9k6WDZ|Gk >omFpO3 k ޿LĂ.1pcsqU5: ulILEaj<-Y19i06೶c@H=w'BetPLYx%Ǹ ށ?rÂ^8fޚ"K c{#>n'n']7-3`)˟s_ي0B(<ߪ8Se戠߄OZ}q{N.NM!Eff,| si^x+g2 VKcOQXiAva=\NY $FpYJY+Y+A oMDֶ' if]<{7)348 ~:zUs KңL¢pJwal)}#Bj PW$|4b>&?Xl4G cFcx(p99Ƃ]IAal4@s\Bp|ZygUoݲySJ 0tEOλ.CIXRu!旝 uزRPO3<>5Oyu154.1R5|L@yD|: q HUMêe#Z0bOrg/<*σO{ 6mBqhaHyh3Q7P3_] js!>VqkZƊg {bR%ێ~q;wnٮ1Ȉhτ#&`SKG_Fo4ӀѵY t<=5qsT+bg)?@F΃[u|ߠ{/aW!11]‘H/? {R̈ӊm߹b5%&bL$\8Ǩ&m9)">ӐAoPs[1u)ߧP1,eJP*cWtCbk皘p?P5kc<Dӟa8B\3&㞞MxahmLb-{/z y1b.xlyU'qdT,ef&ߍ? <7A G/c0T[9P"za uA)j *a^w B9K,,|q]B70Fpp]c1 եz(rLyj/|ySB7e~7^A`?gQ' @7AԳ Q!0OԹcJۉ[=q o+0-jLn{v_Vgs -WS%&avv](J螬"aHmb=xEgP|Әg8٩1 q-)ud}7/d&VNv`歸&L/89@/BȾ>lPSoP=gp@ ClX,0 S`\ GPH GĚ:zϷ&t4' ^{{)5>nZ[$əuqߋEXAt@fy߀ Dvwցzq 1d mhV qڊm?>pMiI:IqsM)RkKU "C'6MӁ?@F chrSl6pF(1{6ԲznQ7mN$9OsO} q‚qg;w Hd @&Aroر m8Ki\=rYѽA)6xGye$k} tL\L}ILq\߇n"gq/VJC80b뻠f1dAwMe`3.Ը0ɠ_Zeͻg&1Ca5um iSN6 ز}t5f*^oGyV9t=-LN2w󜟖M#S擘g ‘F!{:hbǠ p0f٤6.̙tNUΖAe;lj(+Ӟ~p!1%(59Qj]|-E c ?K'܂K?m?-Xțo2R@Al}!1xmNULm7 cvV%K9J&IL&3 7x-{#JCz@?1ybL? :WA";7|CE>1gQɤSQy'睛[aS$S#TrZ!F{t?Ggd!tcr&G?|RY,e?LFC@ 9e\XSJ|ӫ.L^|~ X/ Q Iu1`sbG౓'uP::+ y'ت(ANU'bpZp䋶~,,?GY$l 43` -eQqWgf]rLy&T3 /y~X#i?gS <D@dq ~Fxp{`gu6,k񪉦qAu8مNG28J-?>gwҘts%Up5Kn)ۆ?]篁I@0`"k:x ‡75 f ITlF_y E_ޫڗ7?&ީR+zbvElE ''^lr]gSr:S틅pg<sxB )ME_,m7JnƂTR?1ZnҚ#?nMcT, S]zE^^>Uc>^SS[(z5f3?c_^/tQvQ{Sgnzm'z5c Ċ2 ~ëX R>Wm@@ @1ՖpYݭkVLb1 0;:^d a]r&f%gŃfTn=L'A? UmYd)Y/S S/|b  $3ɎXyרv"!_Iӧΐ x&U[Zq*5 PF9~W:4l3,OO94..1^ 1y4iis^Ox\*H_1ӁgX<=J]-ϩL?!$g+u0OnR_r sJ>FnĨ@z),AvvC[} c 5sJ S{m6X Έ/WGl?5/x;B C$\K/ETCzdxȞҙV[V&ߏ2*it)w<bTH3n ~[Ω$&z1[銡i]xC핂?E 5M/D>VvԍEv ^+߀Xw44M!yRa)3,ݗ2 K.W e<C{10O4Q8^[]s L/|\U#)teZ3UyW}5Ӂa"# 'TM;JIIuE5kgrA kDzPdBV@Lp`qB):=u9(o580L`%—ӁD@J1{6aϼ--?S n"2oP,(;Ku/yHa% 1\{QzTbL?FhJ;xJ[,|j?<PUӁE@@(^8.tfqwy}>'^8J`*p.6; ֧oOE nڭ؆'V-[YHPOQ?{@0ZJL·*QƷhn4EhD"o~)=U[-YXn2=mYI I<묙2;r׫Q <}r$2H4dM" ES 9Q8r G̓7)0@ 6r?8%[~MK ) ] I f2- %O`<5 gUOF_a=X(NzAͣu(ɇ[]'\Y7Ik k&8t> )СcNӁ ¾UZ-=Cv1L=BK Lʝ9eт>Pa (<R~vkG_DYbpgF>ʨ?%=JB#vA8[M? gc #Q:MzMv^3a޿qbA-vFt`D(LB *{C.j̹6[OYYSfmL _yU?Έ;(D@jEec՟WyfiU.XBeD*bJ>;?J6ܸ,\X!ɚ BT,%*0 ]M:4N^iOsm.| d?xDT[͝*`veϩT~ƈ&O}vu v2qk2P}ǍȄP(+d3mǃ&OPݩkIT* ZdQb}' E*r/ N% GehX\~xjH|q8E@CH Pe.CP.@&'yrd#|rpr?iȜ}>}' S݀2kuU ƯO g urR n pi0M#vw@a@cB&T/(N֎0hu*Rlje?wwjЃ|4`Lyۻ>R IDATZ6MnұڑR=(PjV< u&kFJO@w5hYMr5Lb(;P9Q#C\I_Taاۯ=@K`/B)nzJO.4F䛕)bױdM[X3 v  c$'R:ZUpj~qJ!?J)@ ǾL U.@I {x9ǘXjH !rz/?Hbj|K5/C“]sk=ɚ0w:`;N@8KK@L?0 5A.4n f.yPvUH͂ 4 CB/eHtc`:`U ˦q_B@L lyLdR;~*6ëa,=@E$PxSĜO=}ڐ2u:3b!7$%`#xT_[c}m7?agTN: `2 D!pIOJr8 NcjSΐ#O<~m6rdg 1UWk;@a}Xg9kA<ɢZ!8[(*sb(65 b>S.d>FLf8.n1[DL`7xIMgR+tн>ްm VGu3]խ!GlUDG A!=!_')fdgAבbh@Eo *mO^RaI*Al@LIe1mg_7>@['$R}t4@rpS uɶD*zu'eC2)De;T?ϗ&td_ oWOPUw,g"lbP4b MrznՏUzO<9r}YD1v<&ڀ2T@B8-Gs"~ڊApb'ix P"խ@aT9 釆b"7/#ԟx8u<"OȵO ^ԋ |N&'B )O2 ũMn8m}:193CR4;I @玾C[:͊+|i$$kp{}:9v);؎L8=iOv$-͛:2:$'@؁ C<1]lQ8 _:Uy~R쒻v &;_%M~9tHJs^ Ž4fRHa|-`O/.CP/FR?6-lDGx4xeg6Zr"&|XA425N kR^an14xp8л]IuGq/-G( "?y3=s pöMZآtx;7x2E>qVNdߗ> SuƀBEX ݟ8eaur!nՀ z8pb?^t T _l& >?^9١lH^. 52'3P_]Ա(/6G@ !ȧZ٣]~t ]ݟaȉH`/~9tP43" >Z= ]AOD6gb~s0;F$V_"081.q|ط& AD?[{qo jiiRen|Pv_>z6mZߤN8F4wxa.yN *p02'{$03CeY%OfHl=!6i*_n^-A+lZڇyɀa g@(1-Umd#VK @v_]h7կP?|Ef ?#CbH `|o/3qyB`_u`BvVeɷg7 S}:#]* w7ʗ#@$$ e5/66xڇ包Z5<$۟AB"@)C]K݆d״MsؽoPMWE#3!vv6~{zwHkm[JjrENnh@yܳۯH102OĠ*VABkau4$p+PwcbLL_ݺB84lxQkۀ 7{B+{nr+g&F,ɬ@폋x(ENʇZ} ArȁީD)+w,W^URobڑ&w(cRSnu #gd 9R&=V$(V׻U0yɂ TӁb ŹV6!) +e=  @@/I/>OCRkBM(c1FƎ^lQ=vL`ʶ'@u]ֶ+p~T9 |گ)4wXPU|æ劋};Ra)5ڳ >m}GO?WSB6L(c9VTf4+dWZ} 5;!{*X>")%ӧN c8n d#n﫤\^yq!_uwc_u1?rܫqoe Jb|=+1ǵ\ bW!!<v` ֳOR oDD(˷R%V}VvOwN.V^l|dSbv]4ccG ^~bQ2tX$` 3AMwb 9M!}kCD&"OyUrrدhdB&0S~LOu~d&y0#w+ӎmY*5M7x';л]'zlkZڦĐ [aE/ୣGPRwhڡIۯSE"0TG)f/Ũ꡿ _o۪r 땻 ƗU1ΜKCu?-IǣE9W\b\N ҡ4UTvk A wC/ǍWXO|tH);a)z{wWՐ!졝Ha&w]b"qQ~\'^}Ґx?,t1`FmTJ}/7%߀С~y11omלQa-gj_E'yMyn1Ӂ|c8h{^]'3w+KC.ß>eDGA:o\zإ*۟ tSUL!ЍJ̽}w'mT `"nd@W o7<DnJ`ܫO'Z(c=.zPgb{ "(JGvÆripx%4+Ix4.97Vn 0NLQ ݷJ}+E wZn"@RjUapK`)bXþlGxzKqyp &rCJs,%n8:żSViQmSv[U;K1.؄HNp paIjJ!TW"e}npcQge 101H!n95)Um=BH;/p:χi \8Kw2Q,^+'<>ŃG޾a~ ccJ,۟Eo~*Rr:i̠tp_7 0%48B0ozqC $hQcA@YqYqN YYE۴Iw/SY2uB8|1L3cSP[-_ˢ?Rb`݆@ѱ%t0S'0K?՗=3HO {{'i#Ν[w)& DeȦH_O} Fè #.Dlx;yNxᇫzJ.O؍wS|@}!ub(c8ңs"N^<0Ғ7izc H;vp &1ٺazhv/o-D$_]^Śַ_KGgwlh9Ӗ7?_$ơU @'X؋[j^ xox֍;a HKoܰvX~ql${t"#Mɭ!5Q\#AG~nBVW?f=Ū=(:3$p۟x`+vT$ c?MFC@Z k5$FѝG}'`5O1ÔX'܍ުxeM;pڵL{h?vٌ&v[oCG@vPхU2d(WlM9~OA6-#1?pU@TNPd3LǷǫg}[nR';w(QOml_ްfR54_i^lh[pbh5fA¾0eUp "b*6]>HNSOAUzoMpەA?K?@ixOwN 4ކ]kb788o`6ꋃ G~qj-;grͱ4o7OJ#~h\fhH`-/yo9U9&0GyaSǰ vN 5Gnf70R<2/˦1{ʎxdS?_{,xXD`3D/&f(*珇%׆]`M!m1\30|Ոy*@VD!?(V#;ݧEQoP7sޠ _?+nגر9Emb2Y (L$SrjMtlf6{K&aNU.8xV<6t[ OlՍ~9J`6UpmwX뀁akj:15J1/(T'탧ɝ@@2̪K'iePPFY<~4@΃[$cw:u{V4﫜zVh=( C vFmd8h3aZOoힴ]tH uEv(@O%ַ‘]_ui{?R`--99*,x+VjK_bM8qͭy6ԜR/ S BpipjQR3w|Gv?mW]QB7VVPs lDlͨ͝ !c`+t`̂:NDo'b$`O)u7 kQoM(o7ҋnxQUpbHZ} ›_8SJPGB8i[9κ_Va1 }=iXLǽgOVct^b>k 4w]GW|P /C^\0.Y‘X{)Pn qDF?#ÁisCOE on4 ㌧?`aKpR93@G/#lQB|݇~kJĈSN~R)  %Kpv͕pbй ?ڍc ' ͑ *R#rp/$bΟA`1p_ 'b(Wx%P&!GpbXsl4{oqpߔ00x ;bR.#"hv ?݇M)ˆx4/nŖ3rpv}#W ;>k@oK5oNxlÃ;oٽ?iC2*s9tj3I(4+1hbZxj±u{~hf@%/?Ϙӣn\0hu_ R|*rd\!Whxe6,?4x'r0פ[dD /(pä{$=u$&^5W`R,Mm{PyIDATbm;в#y  |(Cɤ zǙ {<B" QxݺB;W0ʅ%v]}{#Oco>}^m_,c K?ɮDž8 *Uq82L̟ŔT{̍C׊ÝuA F-P1{ݢsRpLJ&߈1@b 18܉NL(bHtpn8,v7ѷ>Pߍ/ǺSb\ W(Yj=q?)L%{D>K*/"xoC1,B0 ȯ)¸%Q6*{lk⯛oH'(PcƘ|P`t5ǽ 4;b_?zzMozar^.p/WTi< ʗb^rRd0@E N4;% #CH `cGi9Z} q@_'no??Ͼ 㷂Y7I(e N)gasBJJ(ִ += G@%k|HX?*O)-cOe[ H.$Fan,Z)̴# X6!\IB={tw_]bdڲiVVhDJ R&#DHz!p~w}Z_}="@#wẍ́KkNd)MڸA х2[5cQaAaBRvw hEo "p_l\_;ܡI#]=3Lt^mqr$|$0`Mr2"\K Epra7fp`M0p&p=$,DP?܋P'm7܋0 1{'#!b)罏[oi.)dj,4\fqf0チ1 h39?ʤ_DEHLBdh?B^ v,o~v#]ٗ\vمE80L+p|Ї#MaZ˖޽{dQtE̽~EF,8 ӄtpO!c_[ ؄()0L={TeU 6;fdM(bypA$$uηŹ/0<~J’[`'2 #cI48x]+l$`6ntL/M*Fr2 M5XzU(x1R6|@x" Ů_$lE>;A˖{ẼfvɸɹcaMxn— f.x= {MolF|eϞ},[HU F“#b9Iہ=5Su4ECœs.ptn2;N˖c2[l/˗y #pᐷam4}u^GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG'1_)IENDB`JUCE-4.1.0/examples/Demo/Builds/VisualStudio2012/resources.rc000066400000000000000000000012051263452017400234700ustar00rootroot00000000000000#ifdef JUCE_USER_DEFINED_RC_FILE #include JUCE_USER_DEFINED_RC_FILE #else #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include VS_VERSION_INFO VERSIONINFO FILEVERSION 3,0,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "FileDescription", "JuceDemo\0" VALUE "FileVersion", "3.0.0\0" VALUE "ProductName", "JuceDemo\0" VALUE "ProductVersion", "3.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif IDI_ICON1 ICON DISCARDABLE "icon.ico" IDI_ICON2 ICON DISCARDABLE "icon.ico"JUCE-4.1.0/examples/Demo/Builds/VisualStudio2013/000077500000000000000000000000001263452017400211335ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/VisualStudio2013/JuceDemo.sln000066400000000000000000000015551263452017400233520ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2013 Project("{91BB874D-440B-A2C5-C57C-5104BA5F5EDC}") = "JuceDemo", "JuceDemo.vcxproj", "{9C58F305-06EC-8076-ACCD-88CCC530EFB5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.ActiveCfg = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.Build.0 = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.ActiveCfg = Release|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal JUCE-4.1.0/examples/Demo/Builds/VisualStudio2013/JuceDemo.vcxproj000066400000000000000000003566141263452017400242620ustar00rootroot00000000000000 Debug Win32 Release Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5} v120 Application false v120 Application false true v120 v120 <_ProjectFileVersion>10.0.30319.1 JuceDemo true JuceDemo true v120 _DEBUG;%(PreprocessorDefinitions) true true Win32 Disabled EditAndContinue ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true _DEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries) true $(IntDir)\JuceDemo.pdb Windows MachineX86 false true true $(IntDir)\JuceDemo.bsc NDEBUG;%(PreprocessorDefinitions) true true Win32 Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreaded true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true NDEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true %(IgnoreSpecificDefaultLibraries) false $(IntDir)\JuceDemo.pdb Windows MachineX86 true true true true $(IntDir)\JuceDemo.bsc true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true JUCE-4.1.0/examples/Demo/Builds/VisualStudio2013/JuceDemo.vcxproj.filters000066400000000000000000005453741263452017400257340ustar00rootroot00000000000000 {A38F6232-6AA4-A38B-3C65-8C6E976AFD25} {321CEB4F-D9F3-CA5E-D47A-006E0C218781} {AAAA6351-2E10-4704-1B68-B9B514A75764} {4780C7BB-5928-04EF-9CB1-95D9D77E9FA5} {422C46B7-0467-2DB0-BF3C-16DFCAFD69AC} {3247ED97-A75A-F50B-8CCC-46155E895806} {A33A1E1D-AC2C-6382-8681-48B0FC374C60} {11A75801-B027-40BD-4993-023023ACCBF7} {3FD908F5-98C8-9A61-FC03-0BAF8913CBB0} {8C868E51-156D-A916-047C-0D9EA1393675} {EF2CAB40-0432-429B-C517-86ADF136BB8A} {8F7EC212-3168-AD81-5064-C45BA838C408} {CACD7B50-4DB3-76AF-A6E8-90DF94F8F594} {9D270B31-2425-8FDB-84A4-6A2288FF5B2F} {0F766DD4-A277-CB86-5647-42498C8B41E1} {D64942B4-6984-3623-3347-45D472AE1C61} {45C2CE26-EC4B-BA52-58F3-297C408E1483} {01603E05-423B-5FC3-1BEE-E15ED33B5688} {65CB28F8-0422-A8F3-9A17-959E12A1F8E2} {2FE25F4C-E9DF-04A5-CAED-6E4B7CF28C59} {0CD9E281-DDD0-91EC-6F77-EA9D9D5E0E1A} {40C5CA7C-AEBB-05B1-11CE-AE41D87B5CCB} {0B0E7392-324B-088C-FBEB-5FE999D61782} {77E2C34E-A4D6-EDB5-A107-7CB3CEF0E8EF} {20254EFE-6CBD-31A7-2119-92B1E0E0E311} {70796D73-6D30-8A1B-4732-7C021E47C05A} {EB8DD942-E2CB-869F-D381-E02A65BA790B} {8F91DFC0-7A71-1BA8-D8D9-6B4CF49151A4} {B63F69FD-8A40-8E1E-E7ED-419B8DC1C12B} {8167E753-09C7-5D1C-EF2B-32D297557443} {AEDCB7F7-7A36-5392-8E9A-715F5BDE35CB} {B48C883A-8483-AF6D-808C-1D9A749048D8} {B2912FF0-8ED6-7123-C74F-BA4CF0F436AB} {141B1452-6821-88F4-FFF8-F13BC738929D} {E3D8F4B4-33E2-B3AA-1F4F-CD78351C6C37} {95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88} {244D11B0-2D68-3C08-A0B7-0D12469BC3AA} {476C69CE-0B67-6B85-E888-45D91E37A29E} {7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6} {0608ADE9-66EF-1A19-6D57-12D07F76EB53} {05F3DB8A-499C-6ACA-282F-5BF8455A0DE1} {C9F6D785-BF78-5AA1-B479-111C65397864} {C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D} {DA0DC4AC-B511-A2D4-199A-C93454D6F114} {91929C6F-7902-B87D-5260-2F6CBF8ACD93} {C294408A-2005-2E9E-7AC0-8D3ABE8AC175} {4634FFAE-9586-A970-364C-4FDDA635F99F} {F2B2F310-F30F-7166-42A9-9BF9C230DA78} {1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B} {F03654BC-34D8-F975-BEA3-750CC2783D23} {4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F} {FA891A58-9FDA-9651-43C4-714A19B5D08D} {C79A4D23-7866-8F3E-AC39-BD68C52A9259} {3C7C8F35-6C08-9866-6663-6FEFE2EFC9FC} {7703D2CE-C32A-936A-0EEF-949FE6E52EB5} {8D283B6C-13BA-9EF6-1B18-B1C393786943} {928D8FCC-5E00-174B-6538-93E8D75AB396} {1988E68A-A964-64CA-0E0C-26FF9BC5176C} {3DF036EA-3B80-553B-2494-3AAC835CAE75} {358AEA11-3F96-36AE-7B32-71373B5C5396} {F2A38F45-6E55-E147-2E52-64A89FDD9D59} {6172822C-01A5-E824-12DA-FA43FA934D35} {41DC3BE3-D629-8A17-C32B-F5B4008B5FAD} {B098BC87-3298-7E6B-12DC-D26C09CDCAED} {6322B88F-984A-C3CD-6263-38D7AA49B6EC} {73C1E759-AD90-59A3-942E-2D10FAA29107} {EE1AE8C3-0908-8F53-A4E5-D930C7C97C26} {4926B3FF-E797-F586-857A-69D9703FA2D1} {EBC65085-3AD5-280C-1A29-2B1683643AA1} {413F481F-075C-2958-115C-D8268682FCB7} {69E1179D-76EC-26DC-C3E6-6602ED26D783} {C1A1A236-AB01-173E-96C3-0706BFF93B1E} {1182303F-ECA3-166D-AC0C-92C5E762CB93} {26ECA2AF-7368-C6CC-58EF-017ECD1862D0} {E37D25CD-4350-4614-055B-7ABC55E67895} {FFC6E1CC-C772-75E6-5087-FB5D4E016799} {8E43579F-C185-266D-DD67-F8B95BD80F2F} {2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D} {796B7886-44A7-34CC-9B95-BF4FB2C7B6F4} {A92719C7-70BE-57C4-CE9E-A9BC9DFEB757} {75F1F352-251A-75E0-D941-8431588F5C1E} {DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC} {7BCEAB87-62FD-0327-EB5D-679E54EDB9B1} {E980FADB-6E3F-B93C-DE02-CE4271C9BA93} {C3B2EB8A-1A2F-306F-AA78-3E9D1593788B} {7A53E6F1-1343-33B8-4CA8-1D7B714A0E76} {5A0AA36E-3957-E413-14C6-31CBE15271DF} {D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB} {F408DCA2-D5E2-0A3A-A064-A1D045889BC1} {5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4} {46535B56-3737-2BE8-E3A0-571BCBEB2DA4} {C2B9505B-27B4-F650-12BD-F477D4BBCBAA} {61712B09-5783-ADFA-2001-5A0C3D7764EB} {8A80BA78-D3A8-C0F8-7FFD-61AA028CE852} {8EC9572F-3CCA-E930-74B6-CB6139DE0E17} {C60A6FCA-9462-922E-AD8D-69F10C9049AF} {D56498EE-E354-1F00-5EEE-8CF7944BEAFB} {61B2920C-494D-D8CB-C0C7-5DBF3D76D164} {66C9B809-8739-A217-C78D-A15D6089B8E3} {C413328B-5D81-89EE-F4F3-75752E700DE4} {639E16C5-DA8B-ADBA-6E24-7B596378EAB2} {2D8D0E19-E676-83EB-38D9-F73500DD6B79} {B3141847-8F13-F67D-45B2-E3ECF6E09088} {9E586194-C056-101C-5311-F2AF5191AC80} {151B49D8-6102-F802-1C07-D59931BC0574} {72A923E2-C729-DB92-D7BF-A9D4AFAE5896} {0E43EA8A-95EE-4253-E1B7-160F38ACBB00} {7F11E7D2-54C0-2A36-5F15-BEC0A5374A08} {EE985DEA-CD83-8132-7219-542BB1DAD560} {8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61} JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_box2d\utils Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\utils Juce Modules\juce_video\capture Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d\utils Juce Modules\juce_box2d Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\utils Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl Juce Modules\juce_video\playback Juce Modules\juce_video\playback Juce Modules\juce_video\capture Juce Modules\juce_video Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d Juce Modules\juce_core Juce Modules\juce_cryptography Juce Modules\juce_data_structures Juce Modules\juce_events Juce Modules\juce_graphics Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra Juce Modules\juce_opengl Juce Modules\juce_video Juce Library Code Juce Library Code JUCE-4.1.0/examples/Demo/Builds/VisualStudio2013/icon.ico000066400000000000000000001014161263452017400225620ustar00rootroot00000000000000 hF  00 %V H:(  @El!eȁ۬ޫ۬dɂKi"Tud۹ǭtӮe˟HƑݳUufTudZZЩ[''ϧXUufGg ڼxidZЩ['œ3շDZKi"cɁPǔӘGjGh]GjVKnע\ZZZZZZZZ''''''''Ž)԰i٤KnGh]GkNGjסǧZZZZZZZZZZ''''''''''ܿ٤GjFhSFiHj{Ҕ^ZZZZZZZZZ'''''''''+ԭӘGjEl!Hjdʂ̮`ZZZZZZZZ''''''''Ñ.Đg˄HiUUHiUPq|PPԸӶӶӶӶӶӶӶӶӶӶӶӶӶDzNq-Ka…OpPrJja…OpPrLnUq Lnl<}<}<}<}<}<}<}<}<}<}<}<}<}?LGGGGGGGGGGGGGoNq/OGiQ<}<}<}<}<}<}<}<}<}<}<}<}@LGGGGGGGGGGGGTIkFiÒ٧t<}<}<}<}<}<}<}<}<}<}<}CVHNGGGGGGGGGGGu۪GiGiyѓ<}<}<}<}<}<}<}<}<}<}@VSFILGGGGGGGGGG|ҕFhDhGYxC<}<}<}<}<}<}<}<}@YSSFFLLGGGGGGGGL\{FfPJjGi޻m<}<}<}<}<}<}<}CVSSSFFFINGGGGGGGqFiEl!Es Gjo͋A<}<}<}<}<}@VSSSSFFFFILGGGGGKuϏHiNb Hj[IlT<}<}<}<}@YSSSSSFFFFFLLGGGG\JlGj`C]Hin͊?<}<}CVSSSSSSFFFFFFINGGIsώGkEhEgQOq=}@VSSSSSSSFFFFFFFILGPrHhXGjbɀYSSSSSSSSFFFFFFFFLeʂGj?mFjvϑVSSSSSSSSSFFFFFFFFFI|ҕGjJbGiKHj֞TSSSSSSSSSFFFFFFFFFFעGkGjOFfPJl֞USSSSSSSSFFFFFFFFHסKnGjVFfPHjwϑhWSSSSSSFFFFFFJ\{ҔGjGjVGiKFjbɀ~YSSSSGFFFLsdʂHjGhN?mGiOqn͊e}vYzqΌPqHjFiEgQHiIlo͊r΍JlGkEiUC]Fj[GjGiYxyѓ٧ڨyѓZyHjGjFi^Ã3z|=}4 :3sLsWE}nD8k*0́<@bTaPx܇<_mCwh. _5z~amK)F'_y,!JV$JI%i+@8k:jypT'”7iB0h 9I 2O(X8(~JK GVwlaݝClNfTvM?w̬±fq2@šQa? zQ=\omwpۧ% 30U}oy[lvf1I"](cb7RA.;m\{Ë.@UY?(_Sn=`B!Сw 1$yC}U_kX6m Q;+yߵo1,"g"n'`@ z#/m鵝oinF0 \a58Pc``rp (9Ϧ'@OSl|uS?7f.+ V&0Zhg`Lc c\BEp 4` v+L OxFa R~}DOa7|"4 xƒ-bP yyuݩMF8h3;bq FLI=eI8rM(BejYʑg.7wfq{-p:B,'k=&D4| @֚RUi98CnA} NEs<*lc0j`uhAw?nGwzCnHNECoΧK. R|Zԋk)dYЋ",u7 cs'^Z=PFh TI'aJLhlqz!zaGzlZv!tp^w@ Fazۼ+; f%4D&!\1pF9k6WDZ|Gk >omFpO3 k ޿LĂ.1pcsqU5: ulILEaj<-Y19i06೶c@H=w'BetPLYx%Ǹ ށ?rÂ^8fޚ"K c{#>n'n']7-3`)˟s_ي0B(<ߪ8Se戠߄OZ}q{N.NM!Eff,| si^x+g2 VKcOQXiAva=\NY $FpYJY+Y+A oMDֶ' if]<{7)348 ~:zUs KңL¢pJwal)}#Bj PW$|4b>&?Xl4G cFcx(p99Ƃ]IAal4@s\Bp|ZygUoݲySJ 0tEOλ.CIXRu!旝 uزRPO3<>5Oyu154.1R5|L@yD|: q HUMêe#Z0bOrg/<*σO{ 6mBqhaHyh3Q7P3_] js!>VqkZƊg {bR%ێ~q;wnٮ1Ȉhτ#&`SKG_Fo4ӀѵY t<=5qsT+bg)?@F΃[u|ߠ{/aW!11]‘H/? {R̈ӊm߹b5%&bL$\8Ǩ&m9)">ӐAoPs[1u)ߧP1,eJP*cWtCbk皘p?P5kc<Dӟa8B\3&㞞MxahmLb-{/z y1b.xlyU'qdT,ef&ߍ? <7A G/c0T[9P"za uA)j *a^w B9K,,|q]B70Fpp]c1 եz(rLyj/|ySB7e~7^A`?gQ' @7AԳ Q!0OԹcJۉ[=q o+0-jLn{v_Vgs -WS%&avv](J螬"aHmb=xEgP|Әg8٩1 q-)ud}7/d&VNv`歸&L/89@/BȾ>lPSoP=gp@ ClX,0 S`\ GPH GĚ:zϷ&t4' ^{{)5>nZ[$əuqߋEXAt@fy߀ Dvwցzq 1d mhV qڊm?>pMiI:IqsM)RkKU "C'6MӁ?@F chrSl6pF(1{6ԲznQ7mN$9OsO} q‚qg;w Hd @&Aroر m8Ki\=rYѽA)6xGye$k} tL\L}ILq\߇n"gq/VJC80b뻠f1dAwMe`3.Ը0ɠ_Zeͻg&1Ca5um iSN6 ز}t5f*^oGyV9t=-LN2w󜟖M#S擘g ‘F!{:hbǠ p0f٤6.̙tNUΖAe;lj(+Ӟ~p!1%(59Qj]|-E c ?K'܂K?m?-Xțo2R@Al}!1xmNULm7 cvV%K9J&IL&3 7x-{#JCz@?1ybL? :WA";7|CE>1gQɤSQy'睛[aS$S#TrZ!F{t?Ggd!tcr&G?|RY,e?LFC@ 9e\XSJ|ӫ.L^|~ X/ Q Iu1`sbG౓'uP::+ y'ت(ANU'bpZp䋶~,,?GY$l 43` -eQqWgf]rLy&T3 /y~X#i?gS <D@dq ~Fxp{`gu6,k񪉦qAu8مNG28J-?>gwҘts%Up5Kn)ۆ?]篁I@0`"k:x ‡75 f ITlF_y E_ޫڗ7?&ީR+zbvElE ''^lr]gSr:S틅pg<sxB )ME_,m7JnƂTR?1ZnҚ#?nMcT, S]zE^^>Uc>^SS[(z5f3?c_^/tQvQ{Sgnzm'z5c Ċ2 ~ëX R>Wm@@ @1ՖpYݭkVLb1 0;:^d a]r&f%gŃfTn=L'A? UmYd)Y/S S/|b  $3ɎXyרv"!_Iӧΐ x&U[Zq*5 PF9~W:4l3,OO94..1^ 1y4iis^Ox\*H_1ӁgX<=J]-ϩL?!$g+u0OnR_r sJ>FnĨ@z),AvvC[} c 5sJ S{m6X Έ/WGl?5/x;B C$\K/ETCzdxȞҙV[V&ߏ2*it)w<bTH3n ~[Ω$&z1[銡i]xC핂?E 5M/D>VvԍEv ^+߀Xw44M!yRa)3,ݗ2 K.W e<C{10O4Q8^[]s L/|\U#)teZ3UyW}5Ӂa"# 'TM;JIIuE5kgrA kDzPdBV@Lp`qB):=u9(o580L`%—ӁD@J1{6aϼ--?S n"2oP,(;Ku/yHa% 1\{QzTbL?FhJ;xJ[,|j?<PUӁE@@(^8.tfqwy}>'^8J`*p.6; ֧oOE nڭ؆'V-[YHPOQ?{@0ZJL·*QƷhn4EhD"o~)=U[-YXn2=mYI I<묙2;r׫Q <}r$2H4dM" ES 9Q8r G̓7)0@ 6r?8%[~MK ) ] I f2- %O`<5 gUOF_a=X(NzAͣu(ɇ[]'\Y7Ik k&8t> )СcNӁ ¾UZ-=Cv1L=BK Lʝ9eт>Pa (<R~vkG_DYbpgF>ʨ?%=JB#vA8[M? gc #Q:MzMv^3a޿qbA-vFt`D(LB *{C.j̹6[OYYSfmL _yU?Έ;(D@jEec՟WyfiU.XBeD*bJ>;?J6ܸ,\X!ɚ BT,%*0 ]M:4N^iOsm.| d?xDT[͝*`veϩT~ƈ&O}vu v2qk2P}ǍȄP(+d3mǃ&OPݩkIT* ZdQb}' E*r/ N% GehX\~xjH|q8E@CH Pe.CP.@&'yrd#|rpr?iȜ}>}' S݀2kuU ƯO g urR n pi0M#vw@a@cB&T/(N֎0hu*Rlje?wwjЃ|4`Lyۻ>R IDATZ6MnұڑR=(PjV< u&kFJO@w5hYMr5Lb(;P9Q#C\I_Taاۯ=@K`/B)nzJO.4F䛕)bױdM[X3 v  c$'R:ZUpj~qJ!?J)@ ǾL U.@I {x9ǘXjH !rz/?Hbj|K5/C“]sk=ɚ0w:`;N@8KK@L?0 5A.4n f.yPvUH͂ 4 CB/eHtc`:`U ˦q_B@L lyLdR;~*6ëa,=@E$PxSĜO=}ڐ2u:3b!7$%`#xT_[c}m7?agTN: `2 D!pIOJr8 NcjSΐ#O<~m6rdg 1UWk;@a}Xg9kA<ɢZ!8[(*sb(65 b>S.d>FLf8.n1[DL`7xIMgR+tн>ްm VGu3]խ!GlUDG A!=!_')fdgAבbh@Eo *mO^RaI*Al@LIe1mg_7>@['$R}t4@rpS uɶD*zu'eC2)De;T?ϗ&td_ oWOPUw,g"lbP4b MrznՏUzO<9r}YD1v<&ڀ2T@B8-Gs"~ڊApb'ix P"խ@aT9 釆b"7/#ԟx8u<"OȵO ^ԋ |N&'B )O2 ũMn8m}:193CR4;I @玾C[:͊+|i$$kp{}:9v);؎L8=iOv$-͛:2:$'@؁ C<1]lQ8 _:Uy~R쒻v &;_%M~9tHJs^ Ž4fRHa|-`O/.CP/FR?6-lDGx4xeg6Zr"&|XA425N kR^an14xp8л]IuGq/-G( "?y3=s pöMZآtx;7x2E>qVNdߗ> SuƀBEX ݟ8eaur!nՀ z8pb?^t T _l& >?^9١lH^. 52'3P_]Ա(/6G@ !ȧZ٣]~t ]ݟaȉH`/~9tP43" >Z= ]AOD6gb~s0;F$V_"081.q|ط& AD?[{qo jiiRen|Pv_>z6mZߤN8F4wxa.yN *p02'{$03CeY%OfHl=!6i*_n^-A+lZڇyɀa g@(1-Umd#VK @v_]h7կP?|Ef ?#CbH `|o/3qyB`_u`BvVeɷg7 S}:#]* w7ʗ#@$$ e5/66xڇ包Z5<$۟AB"@)C]K݆d״MsؽoPMWE#3!vv6~{zwHkm[JjrENnh@yܳۯH102OĠ*VABkau4$p+PwcbLL_ݺB84lxQkۀ 7{B+{nr+g&F,ɬ@폋x(ENʇZ} ArȁީD)+w,W^URobڑ&w(cRSnu #gd 9R&=V$(V׻U0yɂ TӁb ŹV6!) +e=  @@/I/>OCRkBM(c1FƎ^lQ=vL`ʶ'@u]ֶ+p~T9 |گ)4wXPU|æ劋};Ra)5ڳ >m}GO?WSB6L(c9VTf4+dWZ} 5;!{*X>")%ӧN c8n d#n﫤\^yq!_uwc_u1?rܫqoe Jb|=+1ǵ\ bW!!<v` ֳOR oDD(˷R%V}VvOwN.V^l|dSbv]4ccG ^~bQ2tX$` 3AMwb 9M!}kCD&"OyUrrدhdB&0S~LOu~d&y0#w+ӎmY*5M7x';л]'zlkZڦĐ [aE/ୣGPRwhڡIۯSE"0TG)f/Ũ꡿ _o۪r 땻 ƗU1ΜKCu?-IǣE9W\b\N ҡ4UTvk A wC/ǍWXO|tH);a)z{wWՐ!졝Ha&w]b"qQ~\'^}Ґx?,t1`FmTJ}/7%߀С~y11omלQa-gj_E'yMyn1Ӂ|c8h{^]'3w+KC.ß>eDGA:o\zإ*۟ tSUL!ЍJ̽}w'mT `"nd@W o7<DnJ`ܫO'Z(c=.zPgb{ "(JGvÆripx%4+Ix4.97Vn 0NLQ ݷJ}+E wZn"@RjUapK`)bXþlGxzKqyp &rCJs,%n8:żSViQmSv[U;K1.؄HNp paIjJ!TW"e}npcQge 101H!n95)Um=BH;/p:χi \8Kw2Q,^+'<>ŃG޾a~ ccJ,۟Eo~*Rr:i̠tp_7 0%48B0ozqC $hQcA@YqYqN YYE۴Iw/SY2uB8|1L3cSP[-_ˢ?Rb`݆@ѱ%t0S'0K?՗=3HO {{'i#Ν[w)& DeȦH_O} Fè #.Dlx;yNxᇫzJ.O؍wS|@}!ub(c8ңs"N^<0Ғ7izc H;vp &1ٺazhv/o-D$_]^Śַ_KGgwlh9Ӗ7?_$ơU @'X؋[j^ xox֍;a HKoܰvX~ql${t"#Mɭ!5Q\#AG~nBVW?f=Ū=(:3$p۟x`+vT$ c?MFC@Z k5$FѝG}'`5O1ÔX'܍ުxeM;pڵL{h?vٌ&v[oCG@vPхU2d(WlM9~OA6-#1?pU@TNPd3LǷǫg}[nR';w(QOml_ްfR54_i^lh[pbh5fA¾0eUp "b*6]>HNSOAUzoMpەA?K?@ixOwN 4ކ]kb788o`6ꋃ G~qj-;grͱ4o7OJ#~h\fhH`-/yo9U9&0GyaSǰ vN 5Gnf70R<2/˦1{ʎxdS?_{,xXD`3D/&f(*珇%׆]`M!m1\30|Ոy*@VD!?(V#;ݧEQoP7sޠ _?+nגر9Emb2Y (L$SrjMtlf6{K&aNU.8xV<6t[ OlՍ~9J`6UpmwX뀁akj:15J1/(T'탧ɝ@@2̪K'iePPFY<~4@΃[$cw:u{V4﫜zVh=( C vFmd8h3aZOoힴ]tH uEv(@O%ַ‘]_ui{?R`--99*,x+VjK_bM8qͭy6ԜR/ S BpipjQR3w|Gv?mW]QB7VVPs lDlͨ͝ !c`+t`̂:NDo'b$`O)u7 kQoM(o7ҋnxQUpbHZ} ›_8SJPGB8i[9κ_Va1 }=iXLǽgOVct^b>k 4w]GW|P /C^\0.Y‘X{)Pn qDF?#ÁisCOE on4 ㌧?`aKpR93@G/#lQB|݇~kJĈSN~R)  %Kpv͕pbй ?ڍc ' ͑ *R#rp/$bΟA`1p_ 'b(Wx%P&!GpbXsl4{oqpߔ00x ;bR.#"hv ?݇M)ˆx4/nŖ3rpv}#W ;>k@oK5oNxlÃ;oٽ?iC2*s9tj3I(4+1hbZxj±u{~hf@%/?Ϙӣn\0hu_ R|*rd\!Whxe6,?4x'r0פ[dD /(pä{$=u$&^5W`R,Mm{PyIDATbm;в#y  |(Cɤ zǙ {<B" QxݺB;W0ʅ%v]}{#Oco>}^m_,c K?ɮDž8 *Uq82L̟ŔT{̍C׊ÝuA F-P1{ݢsRpLJ&߈1@b 18܉NL(bHtpn8,v7ѷ>Pߍ/ǺSb\ W(Yj=q?)L%{D>K*/"xoC1,B0 ȯ)¸%Q6*{lk⯛oH'(PcƘ|P`t5ǽ 4;b_?zzMozar^.p/WTi< ʗb^rRd0@E N4;% #CH `cGi9Z} q@_'no??Ͼ 㷂Y7I(e N)gasBJJ(ִ += G@%k|HX?*O)-cOe[ H.$Fan,Z)̴# X6!\IB={tw_]bdڲiVVhDJ R&#DHz!p~w}Z_}="@#wẍ́KkNd)MڸA х2[5cQaAaBRvw hEo "p_l\_;ܡI#]=3Lt^mqr$|$0`Mr2"\K Epra7fp`M0p&p=$,DP?܋P'm7܋0 1{'#!b)罏[oi.)dj,4\fqf0チ1 h39?ʤ_DEHLBdh?B^ v,o~v#]ٗ\vمE80L+p|Ї#MaZ˖޽{dQtE̽~EF,8 ӄtpO!c_[ ؄()0L={TeU 6;fdM(bypA$$uηŹ/0<~J’[`'2 #cI48x]+l$`6ntL/M*Fr2 M5XzU(x1R6|@x" Ů_$lE>;A˖{ẼfvɸɹcaMxn— f.x= {MolF|eϞ},[HU F“#b9Iہ=5Su4ECœs.ptn2;N˖c2[l/˗y #pᐷam4}u^GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG'1_)IENDB`JUCE-4.1.0/examples/Demo/Builds/VisualStudio2013/resources.rc000066400000000000000000000012051263452017400234710ustar00rootroot00000000000000#ifdef JUCE_USER_DEFINED_RC_FILE #include JUCE_USER_DEFINED_RC_FILE #else #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include VS_VERSION_INFO VERSIONINFO FILEVERSION 3,0,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "FileDescription", "JuceDemo\0" VALUE "FileVersion", "3.0.0\0" VALUE "ProductName", "JuceDemo\0" VALUE "ProductVersion", "3.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif IDI_ICON1 ICON DISCARDABLE "icon.ico" IDI_ICON2 ICON DISCARDABLE "icon.ico"JUCE-4.1.0/examples/Demo/Builds/VisualStudio2015/000077500000000000000000000000001263452017400211355ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/VisualStudio2015/JuceDemo.sln000066400000000000000000000015551263452017400233540ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2015 Project("{91BB874D-440B-A2C5-C57C-5104BA5F5EDC}") = "JuceDemo", "JuceDemo.vcxproj", "{9C58F305-06EC-8076-ACCD-88CCC530EFB5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.ActiveCfg = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Debug|Win32.Build.0 = Debug|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.ActiveCfg = Release|Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal JUCE-4.1.0/examples/Demo/Builds/VisualStudio2015/JuceDemo.vcxproj000066400000000000000000003566141263452017400242640ustar00rootroot00000000000000 Debug Win32 Release Win32 {9C58F305-06EC-8076-ACCD-88CCC530EFB5} v140 Application false v140 Application false true v140 v140 <_ProjectFileVersion>10.0.30319.1 JuceDemo true JuceDemo true v140 _DEBUG;%(PreprocessorDefinitions) true true Win32 Disabled EditAndContinue ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true _DEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries) true $(IntDir)\JuceDemo.pdb Windows MachineX86 false true true $(IntDir)\JuceDemo.bsc NDEBUG;%(PreprocessorDefinitions) true true Win32 Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=3.0.0;JUCE_APP_VERSION_HEX=0x30000;%(PreprocessorDefinitions) MultiThreaded true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true NDEBUG;%(PreprocessorDefinitions) $(OutDir)\JuceDemo.exe true %(IgnoreSpecificDefaultLibraries) false $(IntDir)\JuceDemo.pdb Windows MachineX86 true true true true $(IntDir)\JuceDemo.bsc true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true JUCE-4.1.0/examples/Demo/Builds/VisualStudio2015/JuceDemo.vcxproj.filters000066400000000000000000005453741263452017400257360ustar00rootroot00000000000000 {A38F6232-6AA4-A38B-3C65-8C6E976AFD25} {321CEB4F-D9F3-CA5E-D47A-006E0C218781} {AAAA6351-2E10-4704-1B68-B9B514A75764} {4780C7BB-5928-04EF-9CB1-95D9D77E9FA5} {422C46B7-0467-2DB0-BF3C-16DFCAFD69AC} {3247ED97-A75A-F50B-8CCC-46155E895806} {A33A1E1D-AC2C-6382-8681-48B0FC374C60} {11A75801-B027-40BD-4993-023023ACCBF7} {3FD908F5-98C8-9A61-FC03-0BAF8913CBB0} {8C868E51-156D-A916-047C-0D9EA1393675} {EF2CAB40-0432-429B-C517-86ADF136BB8A} {8F7EC212-3168-AD81-5064-C45BA838C408} {CACD7B50-4DB3-76AF-A6E8-90DF94F8F594} {9D270B31-2425-8FDB-84A4-6A2288FF5B2F} {0F766DD4-A277-CB86-5647-42498C8B41E1} {D64942B4-6984-3623-3347-45D472AE1C61} {45C2CE26-EC4B-BA52-58F3-297C408E1483} {01603E05-423B-5FC3-1BEE-E15ED33B5688} {65CB28F8-0422-A8F3-9A17-959E12A1F8E2} {2FE25F4C-E9DF-04A5-CAED-6E4B7CF28C59} {0CD9E281-DDD0-91EC-6F77-EA9D9D5E0E1A} {40C5CA7C-AEBB-05B1-11CE-AE41D87B5CCB} {0B0E7392-324B-088C-FBEB-5FE999D61782} {77E2C34E-A4D6-EDB5-A107-7CB3CEF0E8EF} {20254EFE-6CBD-31A7-2119-92B1E0E0E311} {70796D73-6D30-8A1B-4732-7C021E47C05A} {EB8DD942-E2CB-869F-D381-E02A65BA790B} {8F91DFC0-7A71-1BA8-D8D9-6B4CF49151A4} {B63F69FD-8A40-8E1E-E7ED-419B8DC1C12B} {8167E753-09C7-5D1C-EF2B-32D297557443} {AEDCB7F7-7A36-5392-8E9A-715F5BDE35CB} {B48C883A-8483-AF6D-808C-1D9A749048D8} {B2912FF0-8ED6-7123-C74F-BA4CF0F436AB} {141B1452-6821-88F4-FFF8-F13BC738929D} {E3D8F4B4-33E2-B3AA-1F4F-CD78351C6C37} {95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88} {244D11B0-2D68-3C08-A0B7-0D12469BC3AA} {476C69CE-0B67-6B85-E888-45D91E37A29E} {7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6} {0608ADE9-66EF-1A19-6D57-12D07F76EB53} {05F3DB8A-499C-6ACA-282F-5BF8455A0DE1} {C9F6D785-BF78-5AA1-B479-111C65397864} {C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D} {DA0DC4AC-B511-A2D4-199A-C93454D6F114} {91929C6F-7902-B87D-5260-2F6CBF8ACD93} {C294408A-2005-2E9E-7AC0-8D3ABE8AC175} {4634FFAE-9586-A970-364C-4FDDA635F99F} {F2B2F310-F30F-7166-42A9-9BF9C230DA78} {1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B} {F03654BC-34D8-F975-BEA3-750CC2783D23} {4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F} {FA891A58-9FDA-9651-43C4-714A19B5D08D} {C79A4D23-7866-8F3E-AC39-BD68C52A9259} {3C7C8F35-6C08-9866-6663-6FEFE2EFC9FC} {7703D2CE-C32A-936A-0EEF-949FE6E52EB5} {8D283B6C-13BA-9EF6-1B18-B1C393786943} {928D8FCC-5E00-174B-6538-93E8D75AB396} {1988E68A-A964-64CA-0E0C-26FF9BC5176C} {3DF036EA-3B80-553B-2494-3AAC835CAE75} {358AEA11-3F96-36AE-7B32-71373B5C5396} {F2A38F45-6E55-E147-2E52-64A89FDD9D59} {6172822C-01A5-E824-12DA-FA43FA934D35} {41DC3BE3-D629-8A17-C32B-F5B4008B5FAD} {B098BC87-3298-7E6B-12DC-D26C09CDCAED} {6322B88F-984A-C3CD-6263-38D7AA49B6EC} {73C1E759-AD90-59A3-942E-2D10FAA29107} {EE1AE8C3-0908-8F53-A4E5-D930C7C97C26} {4926B3FF-E797-F586-857A-69D9703FA2D1} {EBC65085-3AD5-280C-1A29-2B1683643AA1} {413F481F-075C-2958-115C-D8268682FCB7} {69E1179D-76EC-26DC-C3E6-6602ED26D783} {C1A1A236-AB01-173E-96C3-0706BFF93B1E} {1182303F-ECA3-166D-AC0C-92C5E762CB93} {26ECA2AF-7368-C6CC-58EF-017ECD1862D0} {E37D25CD-4350-4614-055B-7ABC55E67895} {FFC6E1CC-C772-75E6-5087-FB5D4E016799} {8E43579F-C185-266D-DD67-F8B95BD80F2F} {2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D} {796B7886-44A7-34CC-9B95-BF4FB2C7B6F4} {A92719C7-70BE-57C4-CE9E-A9BC9DFEB757} {75F1F352-251A-75E0-D941-8431588F5C1E} {DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC} {7BCEAB87-62FD-0327-EB5D-679E54EDB9B1} {E980FADB-6E3F-B93C-DE02-CE4271C9BA93} {C3B2EB8A-1A2F-306F-AA78-3E9D1593788B} {7A53E6F1-1343-33B8-4CA8-1D7B714A0E76} {5A0AA36E-3957-E413-14C6-31CBE15271DF} {D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB} {F408DCA2-D5E2-0A3A-A064-A1D045889BC1} {5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4} {46535B56-3737-2BE8-E3A0-571BCBEB2DA4} {C2B9505B-27B4-F650-12BD-F477D4BBCBAA} {61712B09-5783-ADFA-2001-5A0C3D7764EB} {8A80BA78-D3A8-C0F8-7FFD-61AA028CE852} {8EC9572F-3CCA-E930-74B6-CB6139DE0E17} {C60A6FCA-9462-922E-AD8D-69F10C9049AF} {D56498EE-E354-1F00-5EEE-8CF7944BEAFB} {61B2920C-494D-D8CB-C0C7-5DBF3D76D164} {66C9B809-8739-A217-C78D-A15D6089B8E3} {C413328B-5D81-89EE-F4F3-75752E700DE4} {639E16C5-DA8B-ADBA-6E24-7B596378EAB2} {2D8D0E19-E676-83EB-38D9-F73500DD6B79} {B3141847-8F13-F67D-45B2-E3ECF6E09088} {9E586194-C056-101C-5311-F2AF5191AC80} {151B49D8-6102-F802-1C07-D59931BC0574} {72A923E2-C729-DB92-D7BF-A9D4AFAE5896} {0E43EA8A-95EE-4253-E1B7-160F38ACBB00} {7F11E7D2-54C0-2A36-5F15-BEC0A5374A08} {EE985DEA-CD83-8132-7219-542BB1DAD560} {8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61} JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_box2d\utils Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\utils Juce Modules\juce_video\capture Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source JuceDemo\Source JuceDemo\Source JuceDemo\Source\Demos JuceDemo\Source\Demos Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d\utils Juce Modules\juce_box2d Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\utils Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl Juce Modules\juce_video\playback Juce Modules\juce_video\playback Juce Modules\juce_video\capture Juce Modules\juce_video Juce Library Code Juce Library Code Juce Library Code JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources JuceDemo\Source\Resources Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils Juce Modules\juce_box2d\box2d Juce Modules\juce_box2d Juce Modules\juce_core Juce Modules\juce_cryptography Juce Modules\juce_data_structures Juce Modules\juce_events Juce Modules\juce_graphics Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra Juce Modules\juce_opengl Juce Modules\juce_video Juce Library Code Juce Library Code JUCE-4.1.0/examples/Demo/Builds/VisualStudio2015/icon.ico000066400000000000000000001014161263452017400225640ustar00rootroot00000000000000 hF  00 %V H:(  @El!eȁ۬ޫ۬dɂKi"Tud۹ǭtӮe˟HƑݳUufTudZZЩ[''ϧXUufGg ڼxidZЩ['œ3շDZKi"cɁPǔӘGjGh]GjVKnע\ZZZZZZZZ''''''''Ž)԰i٤KnGh]GkNGjסǧZZZZZZZZZZ''''''''''ܿ٤GjFhSFiHj{Ҕ^ZZZZZZZZZ'''''''''+ԭӘGjEl!Hjdʂ̮`ZZZZZZZZ''''''''Ñ.Đg˄HiUUHiUPq|PPԸӶӶӶӶӶӶӶӶӶӶӶӶӶDzNq-Ka…OpPrJja…OpPrLnUq Lnl<}<}<}<}<}<}<}<}<}<}<}<}<}?LGGGGGGGGGGGGGoNq/OGiQ<}<}<}<}<}<}<}<}<}<}<}<}@LGGGGGGGGGGGGTIkFiÒ٧t<}<}<}<}<}<}<}<}<}<}<}CVHNGGGGGGGGGGGu۪GiGiyѓ<}<}<}<}<}<}<}<}<}<}@VSFILGGGGGGGGGG|ҕFhDhGYxC<}<}<}<}<}<}<}<}@YSSFFLLGGGGGGGGL\{FfPJjGi޻m<}<}<}<}<}<}<}CVSSSFFFINGGGGGGGqFiEl!Es Gjo͋A<}<}<}<}<}@VSSSSFFFFILGGGGGKuϏHiNb Hj[IlT<}<}<}<}@YSSSSSFFFFFLLGGGG\JlGj`C]Hin͊?<}<}CVSSSSSSFFFFFFINGGIsώGkEhEgQOq=}@VSSSSSSSFFFFFFFILGPrHhXGjbɀYSSSSSSSSFFFFFFFFLeʂGj?mFjvϑVSSSSSSSSSFFFFFFFFFI|ҕGjJbGiKHj֞TSSSSSSSSSFFFFFFFFFFעGkGjOFfPJl֞USSSSSSSSFFFFFFFFHסKnGjVFfPHjwϑhWSSSSSSFFFFFFJ\{ҔGjGjVGiKFjbɀ~YSSSSGFFFLsdʂHjGhN?mGiOqn͊e}vYzqΌPqHjFiEgQHiIlo͊r΍JlGkEiUC]Fj[GjGiYxyѓ٧ڨyѓZyHjGjFi^Ã3z|=}4 :3sLsWE}nD8k*0́<@bTaPx܇<_mCwh. _5z~amK)F'_y,!JV$JI%i+@8k:jypT'”7iB0h 9I 2O(X8(~JK GVwlaݝClNfTvM?w̬±fq2@šQa? zQ=\omwpۧ% 30U}oy[lvf1I"](cb7RA.;m\{Ë.@UY?(_Sn=`B!Сw 1$yC}U_kX6m Q;+yߵo1,"g"n'`@ z#/m鵝oinF0 \a58Pc``rp (9Ϧ'@OSl|uS?7f.+ V&0Zhg`Lc c\BEp 4` v+L OxFa R~}DOa7|"4 xƒ-bP yyuݩMF8h3;bq FLI=eI8rM(BejYʑg.7wfq{-p:B,'k=&D4| @֚RUi98CnA} NEs<*lc0j`uhAw?nGwzCnHNECoΧK. R|Zԋk)dYЋ",u7 cs'^Z=PFh TI'aJLhlqz!zaGzlZv!tp^w@ Fazۼ+; f%4D&!\1pF9k6WDZ|Gk >omFpO3 k ޿LĂ.1pcsqU5: ulILEaj<-Y19i06೶c@H=w'BetPLYx%Ǹ ށ?rÂ^8fޚ"K c{#>n'n']7-3`)˟s_ي0B(<ߪ8Se戠߄OZ}q{N.NM!Eff,| si^x+g2 VKcOQXiAva=\NY $FpYJY+Y+A oMDֶ' if]<{7)348 ~:zUs KңL¢pJwal)}#Bj PW$|4b>&?Xl4G cFcx(p99Ƃ]IAal4@s\Bp|ZygUoݲySJ 0tEOλ.CIXRu!旝 uزRPO3<>5Oyu154.1R5|L@yD|: q HUMêe#Z0bOrg/<*σO{ 6mBqhaHyh3Q7P3_] js!>VqkZƊg {bR%ێ~q;wnٮ1Ȉhτ#&`SKG_Fo4ӀѵY t<=5qsT+bg)?@F΃[u|ߠ{/aW!11]‘H/? {R̈ӊm߹b5%&bL$\8Ǩ&m9)">ӐAoPs[1u)ߧP1,eJP*cWtCbk皘p?P5kc<Dӟa8B\3&㞞MxahmLb-{/z y1b.xlyU'qdT,ef&ߍ? <7A G/c0T[9P"za uA)j *a^w B9K,,|q]B70Fpp]c1 եz(rLyj/|ySB7e~7^A`?gQ' @7AԳ Q!0OԹcJۉ[=q o+0-jLn{v_Vgs -WS%&avv](J螬"aHmb=xEgP|Әg8٩1 q-)ud}7/d&VNv`歸&L/89@/BȾ>lPSoP=gp@ ClX,0 S`\ GPH GĚ:zϷ&t4' ^{{)5>nZ[$əuqߋEXAt@fy߀ Dvwցzq 1d mhV qڊm?>pMiI:IqsM)RkKU "C'6MӁ?@F chrSl6pF(1{6ԲznQ7mN$9OsO} q‚qg;w Hd @&Aroر m8Ki\=rYѽA)6xGye$k} tL\L}ILq\߇n"gq/VJC80b뻠f1dAwMe`3.Ը0ɠ_Zeͻg&1Ca5um iSN6 ز}t5f*^oGyV9t=-LN2w󜟖M#S擘g ‘F!{:hbǠ p0f٤6.̙tNUΖAe;lj(+Ӟ~p!1%(59Qj]|-E c ?K'܂K?m?-Xțo2R@Al}!1xmNULm7 cvV%K9J&IL&3 7x-{#JCz@?1ybL? :WA";7|CE>1gQɤSQy'睛[aS$S#TrZ!F{t?Ggd!tcr&G?|RY,e?LFC@ 9e\XSJ|ӫ.L^|~ X/ Q Iu1`sbG౓'uP::+ y'ت(ANU'bpZp䋶~,,?GY$l 43` -eQqWgf]rLy&T3 /y~X#i?gS <D@dq ~Fxp{`gu6,k񪉦qAu8مNG28J-?>gwҘts%Up5Kn)ۆ?]篁I@0`"k:x ‡75 f ITlF_y E_ޫڗ7?&ީR+zbvElE ''^lr]gSr:S틅pg<sxB )ME_,m7JnƂTR?1ZnҚ#?nMcT, S]zE^^>Uc>^SS[(z5f3?c_^/tQvQ{Sgnzm'z5c Ċ2 ~ëX R>Wm@@ @1ՖpYݭkVLb1 0;:^d a]r&f%gŃfTn=L'A? UmYd)Y/S S/|b  $3ɎXyרv"!_Iӧΐ x&U[Zq*5 PF9~W:4l3,OO94..1^ 1y4iis^Ox\*H_1ӁgX<=J]-ϩL?!$g+u0OnR_r sJ>FnĨ@z),AvvC[} c 5sJ S{m6X Έ/WGl?5/x;B C$\K/ETCzdxȞҙV[V&ߏ2*it)w<bTH3n ~[Ω$&z1[銡i]xC핂?E 5M/D>VvԍEv ^+߀Xw44M!yRa)3,ݗ2 K.W e<C{10O4Q8^[]s L/|\U#)teZ3UyW}5Ӂa"# 'TM;JIIuE5kgrA kDzPdBV@Lp`qB):=u9(o580L`%—ӁD@J1{6aϼ--?S n"2oP,(;Ku/yHa% 1\{QzTbL?FhJ;xJ[,|j?<PUӁE@@(^8.tfqwy}>'^8J`*p.6; ֧oOE nڭ؆'V-[YHPOQ?{@0ZJL·*QƷhn4EhD"o~)=U[-YXn2=mYI I<묙2;r׫Q <}r$2H4dM" ES 9Q8r G̓7)0@ 6r?8%[~MK ) ] I f2- %O`<5 gUOF_a=X(NzAͣu(ɇ[]'\Y7Ik k&8t> )СcNӁ ¾UZ-=Cv1L=BK Lʝ9eт>Pa (<R~vkG_DYbpgF>ʨ?%=JB#vA8[M? gc #Q:MzMv^3a޿qbA-vFt`D(LB *{C.j̹6[OYYSfmL _yU?Έ;(D@jEec՟WyfiU.XBeD*bJ>;?J6ܸ,\X!ɚ BT,%*0 ]M:4N^iOsm.| d?xDT[͝*`veϩT~ƈ&O}vu v2qk2P}ǍȄP(+d3mǃ&OPݩkIT* ZdQb}' E*r/ N% GehX\~xjH|q8E@CH Pe.CP.@&'yrd#|rpr?iȜ}>}' S݀2kuU ƯO g urR n pi0M#vw@a@cB&T/(N֎0hu*Rlje?wwjЃ|4`Lyۻ>R IDATZ6MnұڑR=(PjV< u&kFJO@w5hYMr5Lb(;P9Q#C\I_Taاۯ=@K`/B)nzJO.4F䛕)bױdM[X3 v  c$'R:ZUpj~qJ!?J)@ ǾL U.@I {x9ǘXjH !rz/?Hbj|K5/C“]sk=ɚ0w:`;N@8KK@L?0 5A.4n f.yPvUH͂ 4 CB/eHtc`:`U ˦q_B@L lyLdR;~*6ëa,=@E$PxSĜO=}ڐ2u:3b!7$%`#xT_[c}m7?agTN: `2 D!pIOJr8 NcjSΐ#O<~m6rdg 1UWk;@a}Xg9kA<ɢZ!8[(*sb(65 b>S.d>FLf8.n1[DL`7xIMgR+tн>ްm VGu3]խ!GlUDG A!=!_')fdgAבbh@Eo *mO^RaI*Al@LIe1mg_7>@['$R}t4@rpS uɶD*zu'eC2)De;T?ϗ&td_ oWOPUw,g"lbP4b MrznՏUzO<9r}YD1v<&ڀ2T@B8-Gs"~ڊApb'ix P"խ@aT9 釆b"7/#ԟx8u<"OȵO ^ԋ |N&'B )O2 ũMn8m}:193CR4;I @玾C[:͊+|i$$kp{}:9v);؎L8=iOv$-͛:2:$'@؁ C<1]lQ8 _:Uy~R쒻v &;_%M~9tHJs^ Ž4fRHa|-`O/.CP/FR?6-lDGx4xeg6Zr"&|XA425N kR^an14xp8л]IuGq/-G( "?y3=s pöMZآtx;7x2E>qVNdߗ> SuƀBEX ݟ8eaur!nՀ z8pb?^t T _l& >?^9١lH^. 52'3P_]Ա(/6G@ !ȧZ٣]~t ]ݟaȉH`/~9tP43" >Z= ]AOD6gb~s0;F$V_"081.q|ط& AD?[{qo jiiRen|Pv_>z6mZߤN8F4wxa.yN *p02'{$03CeY%OfHl=!6i*_n^-A+lZڇyɀa g@(1-Umd#VK @v_]h7կP?|Ef ?#CbH `|o/3qyB`_u`BvVeɷg7 S}:#]* w7ʗ#@$$ e5/66xڇ包Z5<$۟AB"@)C]K݆d״MsؽoPMWE#3!vv6~{zwHkm[JjrENnh@yܳۯH102OĠ*VABkau4$p+PwcbLL_ݺB84lxQkۀ 7{B+{nr+g&F,ɬ@폋x(ENʇZ} ArȁީD)+w,W^URobڑ&w(cRSnu #gd 9R&=V$(V׻U0yɂ TӁb ŹV6!) +e=  @@/I/>OCRkBM(c1FƎ^lQ=vL`ʶ'@u]ֶ+p~T9 |گ)4wXPU|æ劋};Ra)5ڳ >m}GO?WSB6L(c9VTf4+dWZ} 5;!{*X>")%ӧN c8n d#n﫤\^yq!_uwc_u1?rܫqoe Jb|=+1ǵ\ bW!!<v` ֳOR oDD(˷R%V}VvOwN.V^l|dSbv]4ccG ^~bQ2tX$` 3AMwb 9M!}kCD&"OyUrrدhdB&0S~LOu~d&y0#w+ӎmY*5M7x';л]'zlkZڦĐ [aE/ୣGPRwhڡIۯSE"0TG)f/Ũ꡿ _o۪r 땻 ƗU1ΜKCu?-IǣE9W\b\N ҡ4UTvk A wC/ǍWXO|tH);a)z{wWՐ!졝Ha&w]b"qQ~\'^}Ґx?,t1`FmTJ}/7%߀С~y11omלQa-gj_E'yMyn1Ӂ|c8h{^]'3w+KC.ß>eDGA:o\zإ*۟ tSUL!ЍJ̽}w'mT `"nd@W o7<DnJ`ܫO'Z(c=.zPgb{ "(JGvÆripx%4+Ix4.97Vn 0NLQ ݷJ}+E wZn"@RjUapK`)bXþlGxzKqyp &rCJs,%n8:żSViQmSv[U;K1.؄HNp paIjJ!TW"e}npcQge 101H!n95)Um=BH;/p:χi \8Kw2Q,^+'<>ŃG޾a~ ccJ,۟Eo~*Rr:i̠tp_7 0%48B0ozqC $hQcA@YqYqN YYE۴Iw/SY2uB8|1L3cSP[-_ˢ?Rb`݆@ѱ%t0S'0K?՗=3HO {{'i#Ν[w)& DeȦH_O} Fè #.Dlx;yNxᇫzJ.O؍wS|@}!ub(c8ңs"N^<0Ғ7izc H;vp &1ٺazhv/o-D$_]^Śַ_KGgwlh9Ӗ7?_$ơU @'X؋[j^ xox֍;a HKoܰvX~ql${t"#Mɭ!5Q\#AG~nBVW?f=Ū=(:3$p۟x`+vT$ c?MFC@Z k5$FѝG}'`5O1ÔX'܍ުxeM;pڵL{h?vٌ&v[oCG@vPхU2d(WlM9~OA6-#1?pU@TNPd3LǷǫg}[nR';w(QOml_ްfR54_i^lh[pbh5fA¾0eUp "b*6]>HNSOAUzoMpەA?K?@ixOwN 4ކ]kb788o`6ꋃ G~qj-;grͱ4o7OJ#~h\fhH`-/yo9U9&0GyaSǰ vN 5Gnf70R<2/˦1{ʎxdS?_{,xXD`3D/&f(*珇%׆]`M!m1\30|Ոy*@VD!?(V#;ݧEQoP7sޠ _?+nגر9Emb2Y (L$SrjMtlf6{K&aNU.8xV<6t[ OlՍ~9J`6UpmwX뀁akj:15J1/(T'탧ɝ@@2̪K'iePPFY<~4@΃[$cw:u{V4﫜zVh=( C vFmd8h3aZOoힴ]tH uEv(@O%ַ‘]_ui{?R`--99*,x+VjK_bM8qͭy6ԜR/ S BpipjQR3w|Gv?mW]QB7VVPs lDlͨ͝ !c`+t`̂:NDo'b$`O)u7 kQoM(o7ҋnxQUpbHZ} ›_8SJPGB8i[9κ_Va1 }=iXLǽgOVct^b>k 4w]GW|P /C^\0.Y‘X{)Pn qDF?#ÁisCOE on4 ㌧?`aKpR93@G/#lQB|݇~kJĈSN~R)  %Kpv͕pbй ?ڍc ' ͑ *R#rp/$bΟA`1p_ 'b(Wx%P&!GpbXsl4{oqpߔ00x ;bR.#"hv ?݇M)ˆx4/nŖ3rpv}#W ;>k@oK5oNxlÃ;oٽ?iC2*s9tj3I(4+1hbZxj±u{~hf@%/?Ϙӣn\0hu_ R|*rd\!Whxe6,?4x'r0פ[dD /(pä{$=u$&^5W`R,Mm{PyIDATbm;в#y  |(Cɤ zǙ {<B" QxݺB;W0ʅ%v]}{#Oco>}^m_,c K?ɮDž8 *Uq82L̟ŔT{̍C׊ÝuA F-P1{ݢsRpLJ&߈1@b 18܉NL(bHtpn8,v7ѷ>Pߍ/ǺSb\ W(Yj=q?)L%{D>K*/"xoC1,B0 ȯ)¸%Q6*{lk⯛oH'(PcƘ|P`t5ǽ 4;b_?zzMozar^.p/WTi< ʗb^rRd0@E N4;% #CH `cGi9Z} q@_'no??Ͼ 㷂Y7I(e N)gasBJJ(ִ += G@%k|HX?*O)-cOe[ H.$Fan,Z)̴# X6!\IB={tw_]bdڲiVVhDJ R&#DHz!p~w}Z_}="@#wẍ́KkNd)MڸA х2[5cQaAaBRvw hEo "p_l\_;ܡI#]=3Lt^mqr$|$0`Mr2"\K Epra7fp`M0p&p=$,DP?܋P'm7܋0 1{'#!b)罏[oi.)dj,4\fqf0チ1 h39?ʤ_DEHLBdh?B^ v,o~v#]ٗ\vمE80L+p|Ї#MaZ˖޽{dQtE̽~EF,8 ӄtpO!c_[ ؄()0L={TeU 6;fdM(bypA$$uηŹ/0<~J’[`'2 #cI48x]+l$`6ntL/M*Fr2 M5XzU(x1R6|@x" Ů_$lE>;A˖{ẼfvɸɹcaMxn— f.x= {MolF|eϞ},[HU F“#b9Iہ=5Su4ECœs.ptn2;N˖c2[l/˗y #pᐷam4}u^GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG'1_)IENDB`JUCE-4.1.0/examples/Demo/Builds/VisualStudio2015/resources.rc000066400000000000000000000012051263452017400234730ustar00rootroot00000000000000#ifdef JUCE_USER_DEFINED_RC_FILE #include JUCE_USER_DEFINED_RC_FILE #else #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include VS_VERSION_INFO VERSIONINFO FILEVERSION 3,0,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "FileDescription", "JuceDemo\0" VALUE "FileVersion", "3.0.0\0" VALUE "ProductName", "JuceDemo\0" VALUE "ProductVersion", "3.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif IDI_ICON1 ICON DISCARDABLE "icon.ico" IDI_ICON2 ICON DISCARDABLE "icon.ico"JUCE-4.1.0/examples/Demo/Builds/iOS/000077500000000000000000000000001263452017400166645ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/Icon.icns000066400000000000000000001274441263452017400204460ustar00rootroot00000000000000icns$ic09PNG  IHDRxsBIT|d IDATxwř7_uM9,rI$$L0Ɓ68ml;ǝu6H"sZm?fA|?YՏVz B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!$ kxϾ @`1!A !Y`ҥQwA#_So;].B\JAis^,_2 rڝKdPd0y& ̌X&c<8V ) > GǠ`7*>jĞ={B%d"9%֪MyRԀT ]vҫT@J|RHkbc)1)$L@1N ~lHhhX? 7F}1؊!$M( $U.)/ŭy5w1]9 WPQjSHI]"6K !$S2H 0H.MC扱#Qcо}Ȯw2P@fWyQe~hrWçkvթ =sS6Ȩ=@єX V!xdDOF6|(yhcqtNH.5* ::|E 3 kH.'U{F+z)%iDCرЎ ocZBD !gguqKɴƂf Op򠜚c?$8 A(Z앂Fh$zpXx-v?wdtKHW讜V4haaוoSm !hO=)"c#}upC;VB2%rNAG%=Eˊj\E)2~FLaP5۱7FG7>W8-!*0$JȔW䪪Yzze] =EV͡2n>>`L?>g#/ >zuG^ކX#B$JT- t [9hUagg:M40+ >v4ȣ7K G7c"1J޲|N\UsWT6U:7-lCds#զ ;3}0ؑtHHQ@r}e܆%礼Vxp]KNQ'WTh߉m#Op <6q|b  S7tnj\-qv@fӻ|rF 9&h߉#;xMw|X*+/]= fdO o {n{ï0hv`/|v>v{=T@Hd[W^rNuEue6\ޗ,&> S&TAa c]a^ ! X\]SBJψ7y쵟cEe*$C{{=cw;6B[P2%4.)ߺ򺚹% &W!=i8Un 6STp'lASlP ~}V)% ũd:䈊 CD0<0!dN h!l_!È0Laƒ)_K b2iC)P }lG~v|ݡ!9S+z0`D9d-K) %RJ(LMqy#G#GEEȷc˃Kz&'( lN dN`Lƨ>#'1HtB8t)b+LT(LU6=6ʼn;6BN|ȔT 0ª q9*ϊ%SO\מUESug/D%J+pU,E^[~MV7F0@8Nd"'0!lLJ UѠ0, nUʠ9UpCDo-}y3"S6W`*LR˿/{;<9KQAz\(pT911±DƢCd{2{bPj #G›v=vGЯi;!4 "SQ~m~AW7,/7f;7%P  zz[PkB yxzT!sc8:&v^ Ÿ> CPUAUES`s* nMT4H2B}bȔS]TռƖsnj3q_Hsr y"{jQkE}^;;K05ݡ1}Cqpl'm=#0TaDx֑?l}2Bv_oi\Rn7Bfۗ0 SP<{*h@SAMȷ;L 8:۱kU߅I< [$fSRyim=D I]=ai61<#zsa B m^kTЍ^Q(Nw Db&~'bLlP- (;+M8@z"S %$e̸ᶪ^FM:€) 0((p> E3R0 Z0 0ѭ6vnQ\ؠ)']fW0gW~T$]lbFѵ1Noa) Bh*R0 ]hF0y'vcFlzG1CP 6ŞdT"пwW[d$M3q5h\RzPFizҌV4^4ӊ1MQbFl| l';'/%*_z,-G \]6]m7,*_H]D *G/@s~7+vdb/^؀M^Dy6ŞL!:}jwo]Z~_u%tvWL~◐0x\r8V8Jn͛XHv7/Ǧgp"tB GZv\*fz~g!bJجw7]7]9}4a( yY ӊHi$Dy;_ƓkmEF6 3g "JHB-]𦶻|K0O>SO%Jav鹨,2u Fl[;arv5LaTCtOo) JH\Jڹ!uC8T' l%z?I ]#iUl=e1(*R1??~$e'9rvZ㣝~TR:La@o`旯DC^GʮO F|Z<7:Rz@+Pm <{{][$'P@XE{݅5^=h2@ WbNnd]Dy? v CDaWPRH֠Ж?'}wDSra( ov_"%HH<h’K[vՙk4qDpb$dp2:09|P|ePP-jc;b?Gi.0Y Y ly7nƺ+O#h:N) vOnѵI(j4[g^EͥI):sr5:f'&ȱG ƎC BF $ׁSGuLCɯa+)`(̾0>>Ҙ@U^k P`<0{W)W%Q .c`cZD`WP6C|`_/J%M- L[o7Kr"VاXs*/CC~gR*241z| AQ@J7 (* >&$סJU)ѭw}|U c1UR3j%wo=To## #}pA<}HY"`wk ^OݿNI֡OvٵLan3"?)"< ͋YeX^uj|If2I# 1z bp/'$70ѫO7 {p-GGt< XMQ2HiRƾ?6/G o=fV(:,>yL†caݱ>ꀖD@Q G^}HIV~qnNqo>a&> (z0d9έUƤ]/Ydtb 0O:[7#4@|OMBF'`kX ;'6+v O%F,)Pl`B(ymP Z%ɍ# ?d"ptF OK'_=]?JH֠mٝ]vYgHSlî80d ί^lju'<|p콽LS5 _גY:y1D6 Poܟ,+€`(ZPCk!#x}Xw~ EN¡T"/ {A)vA`ҏu|)oquc zaUhˎwrf6^1~҈}WTdGIB!}-Q!X_&&4 Q h&Pud, G?`0X9p⅟Ixr"i^UUyo\h- jEnҮe 1tWa}|`Dx@l)'3 0w}̙p-w< ;-Jsr@i(ZhEPBkf!yBC'ETDTH-ZQln ֟{bb+0e]$KyGa;;.$'qiBQTypA[v^Rl"nG^yzP03N9}pL[8b|BߊlX2 0] Z`n NfmÃg`WWiwk{oIHL16\>pd񕐈!88 Su9;)J FiDT[l;סj*'̷'c pU@τVjAwƮ ܿv$u렢1;=~ջI8Y|#gy3ֺv#bByya^z;˓rD0> 3{ PnL#P- ! 61?V+ ɣ`] xԒP :iD]D`8N9 pxl8gɵ_zӱ̓;4$Esnk>o~t"9iF&:z摗`}V(=&דzE㢸^#M0ș9me@u@@+] d "`990Ik9Tplޏn 5u_"K2Ʀdo]#l}+S?.omJ˯/>?"쏠 V_̗(a@ͯV=3/ ؃Uo)0L%2sY'1PP\ey1x!>(L!% K(nORM~Wz{M7)\8Qɱ|9tNgoEa7 O}W0mxLsĖsy?0WV7?/om'cbɀ0!&v<fHsKw(vc^ x4@ht1W\m>|!.@2%9'} i/@Qm mwbU5pg@;}}<; 1~"?\˾*~K}.'Ŷ>N%ŒEanyQA0[^lU 1 1!)vֶW~1w2Bu9yi S1B֯ܝ:wE;O`5ێ苿@daz0ñ\_;&`Nt^}rEo/)*We5Rxmy]*߁Q}bHPƼ K8}Olpv䐥km?PukcO!⊋`Kge0=ȳ?D_6#$LQ CG`|i@Tw& ]AswBJaj@X*ϩ8yh4bHН2y|kugZºO$E~c<_7/A19\7J !a=Pܕ`'-Q9U7zPZuZogG{` UtV<:n? D]^+y,, %瘿i,FƮ~  %X9<̾!PUi+avr88{eoj7s+!ݖ NR,Vt%ߘg_WY:8z n JUD| @0Ӝi}5(H x|e}k!%NՍ*wl &Qh .hS0pk>lF')E @ym=S2  [u73 "0v>lɓ N%BL(ڴ67c82*S, 3Y \_*!v`"t7BKc?tngK]D0\}j}qM0CxwoN4LJ?ZxS^,0\8Tvn!tK_QyuKz;HQ'IGw\oOEyvՁnŚ[rxy%#ğ(Jҋ)5a%SzR -=80)6X<yڥO}dxdԒI5K³{Q蘕~a3fufX8{yK>B @f80|Oi~g)f,Ǹ1cjYNaxƅv=:a$.J=}}K/'+#""XTq!>o!D_>Ldc%J2dS!8V( (Β`W ,V#/CQ^ S [WV\_>ut% Uk\WXQh l.o@j}C?m_U)-F @fb aלB6Lѭ/E0ek"m#[-$%rz1AjFfjE*Yfٸg<*Omˆm}A @f0cԼ֔[Q,eǡ]͒AR-,Rm|1hI2P:.^=ZUEKL;HDd}ǐ'ly@O*Q!ٿbU(ʔ8P] ScHXFXJn^Şb{xO%<(%窺GEe~Q7ݙ Ŀ<2TPR1uP<(1 5-EZ [C/"bZKAƶ V9m6M|Pb%J2̴5-xo)}´b{}ZoZVvA}M8-%gr/?C֥:tgaf F, 03xՒA%( ӯ__ S:E ~<"g)nzX. IDAT-mI}}?m`67-%i4F`=> 5=%Ev?fDO@!S(.WUXG TbJ2Dsnͪ?lXЉ|5fK|;|p3Vii<2x 1PT0O(mHe J!b{tYr @sެ9U[?g B%  t;:,tZ1*]7w݅|߂(BdwG٩/(EW :ܩSa sT6$%M];@ @uOtXRQpC۝ |kCoAz?FOT@&W6@qB&](`sM2.PPQ7j L'J'&.MpibM͸FKގ1X'?;(c,v1~RCc~7 =o(̨S\M+C @L~;:TX7XVڂߚ#y`ZWY 71`jl PZ8zI95 $@agFLնJ@P^_ CZP<님YԒ ۆУ_b7$y(a;"}0PۓzEE?}#l@ao7(ڷ$mL1sXUu+7lc0 ~s7 {-@b ) 9̓!CGMOj ƌ%8܏{-Kzs=~sY&9CPՋLϟ.L!ឯjI!nP7l@ 0Em|.J ' ;z19c;,Į@U0?ނ0 E*{ zV~EaEVtM𴯡<B~ ї*L)a%Zaz`!alI S?wзѢP[ g5^sjhVឯؙCCbU߄ L.A ԣh4CЊf'FGa z ƒ55I!P9ЈofB%%IV)Yql-V6h.G}6;^*:LML ~b|/d\ ]0vlI LEã }FX*y$Qi)<~mfĊ'g/ LgDal{BM%SS!Ba+]Ww$?x;JXmXTzɝckGZ'y='{Yڞ A4wC=ɟ?-0U-~ٌ)]`ԢIV[a/ %%H 1g'=.Rr Us%ɪ{YgzLxMN0?C@p L@??[~ 7A!X0\ywuo^U^E!P>񉮋?7+CɿOkwُ@ݛ˭njA &o9"YMiWkd,ɟVZ[Gh?!Eu1;%f3$9: W\9iMtJ,T?lҏDpɤL/}Ov -?>|5!$(<]aYեNJhX\>i B#(HQr=&apkWPX}; (/!1 |t[J۱|BDc.꯴ 4JQ E_kV'Ķ"{1n J<3|*BOق{8PwW7u)[5Nh_U7\kQxS%bϽ[+Kh߰Ċ꫰jBh%)L(yHwO 7 B&P7%3±]ǺJpWzߘL/l1t94bQdQ-P|eH}1!$0BMw#0P@%|}EEEy8%Pp漷UU[0OAɐ憭nd/BHQ(yP ;,|V^@ xήewPD Yo2#fBrYt~.c]u\]; 0`Y(Nc^y 'zDݼڒ˩Y3\) +H&l]g [Ǵ5F8ݡB, 4\he;1׷݁f^30Qp.Ju9f4N0pMG\5+wVRO7!$ᇣ=ۥyϣQ 3&ERRµS?0ĜE κVH beXX~E% SZrVZ $[ Ppv:ѼRw)0@.+uu-0)a)jvUŒx{"N(,.9U? bF„ꯇnA|_>u` ga /B+hHU +On0t+[2dLf+?3N-SpoFYZ $[{-_.U_%\hL̽:k"MEu|"#E<vŎvѥL@I!uO5ruGА5Y%lOw|(v|gP"Mq$tM)˲RJB+d',{?SuퟂזS5ӊ_, /Psno/ _e,M7/B2QLTxpmmLS`t\ǴYmax9777/"VF^j4962t9Ϋ"z)j7Ȟ[# 59pmp:vlB(8 .Wrxm8ĬFG}ǻk8j}E6I^3B/Yd ZQ%]{ԢJb8U|l;^)j haD'+~0K @L^r(u)vKA,=h`ڕut`l fٝj\Rv@_ bn鹸f #و_}T[fy7 `Ğ 'Z <oDGpˈ?l1 AWL氶g/@/? U)ꗀ)ZIG^Ϧ9r%v-^3,BGU jSq_cw_sT'sE9=u0y.ݚؘ[l( H$Nџ#4->cMLcvQ!ð1T0myyjO;L3Ũ0F9``.){Rږ!^helx'c`6j`."[?>r²ؘv2IC 4}`, 40ŋhLRZ{?{ja$p^4sE+- -kQ`>h-K?lqnϵ02 C{?n@Il|0ln4 P<ů5 $$I0ŋD`Ahv^[>m8WP[X\*rCEV3qWv 3D“)L8Aqzvdz;R2{`U<05W"b٨-ӰjuBaޫίɷKr @E󊯋ݯ5lNmY\J{@Z m`WƘ<X:%uAza oe(>Ґq#f VȺ>xfC>0@?g1>eczl>\AɁ8_as?\SbY`Y`J%3o!og)M9KF#b|0czbw%Lʅj;B߇0X6̒X"P omeAe)3/ Euף,ӿAtz0Dz1ƚ@HRL?F}Vwy&WΞ6Q9EUK, *M[<~g0["Z aqEd؃G-g-Z;"S\m;[aEd-]5W!*@l[dUd7- DP)麢F$$4E,j+8FWx V~juM DwDx'GLWKo@g֦pbzquyAݵ(teaK?gYP&gEeNǬ4eLß?C *B#?X`/ƹWB瑸^Wm֛- (l0]b )!0 Y- gy Tv\ߏد,rYjTx`#7&VVT<˂ 9UǷ$#)^MH#Itv!o7"c nd͒x& -|$K&`v) 4t 5Ŏ5׀%%ږ[$ s ?bw.)忔NՃ5W[?>o?MJH{mU'AEd'27U]XxGhBN=TP.o\VxEDsJAђx{ǜ*{kI$ӟZ:tnU!fFt>KS5WHp _uzomNS @u{lq`xŋД*込vм3*>ho1t9=uݻ-3dȔpz^ >D~ch Sq~u\4͞viyr&hoU%x!8ʢ)0؏)rnHjcC7=*7Z/͒`2@$Ze2#qV!,dZ{_̪#W~^HbxTR#2KKFSs`(* N_ v  )%`S E_X2ذRqT3.$4j~iWEE RWԾے`( +ާZ<_k(ZkI,y|W\;d%O3)Mj /m Ѻ}@v7 &n^ɵf4R`ij0 >tRchw*Ts= 3Œ旯D<@%|%Ζ˫WXLduд$p^?S6`E< VG->EvPo aZ ^%ˡ sSmUM&ٜwTs! ,(6%iF|H07iw<^1zft%-./"7eUN/n$4~^x(tcn5 "[8LAi O HJHO$tDoh:tg#O-4h]Y~%A&mUܠ(ًf,A(@GѾ$0d.g4Nj1'>K[\~8,%ס Y-+Wij/!PXX~%Dw= &0Ӓd&@UgR%D9@K䕺z֜kI0) @˲ET/3x=OY2IFșj' %K@82# KJ.GӥC6%%s쯐bL+/MߺlwZ$@$./-~LP,Gkt; S|~̄IZWT-(ڋf"O8._⿔Kb0$siO@dY%!24-)ϚY4,-,?Y%,#_ !;IR.c=6眠.le<5uwȊْ+]bQϥm !A>NiFY?1;L}/+ |(_k`SWjo>rF@V$KJfJ\.w#YT61o 'd%PX|[jg]jI I @%񮸫LCoBKWg @˜FyH>X=*{ -@7Ɇ@Ќ S(uU1? |8/i9N9Y @Ti@*=t#9T gBg5ʹ% d4+(tq#?:ڋf&^uHo/ }VjЃOX2BJ|[56/*$|V Uo ӋYDxZ@͚S̩7 b+ Y6.Id7?1f nJxn\0E|{.L8$zF8S*јߑp Ɖ=0l E'; $?MY@0ɡV SƱ{gUtV'HetP\./ΉgZ á#mdte$ sZ1 Fisg.%`%De{(9z}FdYW٘-b N|C_H!ɗ$%Bmƀ e,KdK֮-3}z_k?F2#ɋVwu999o}y߮o D}u62a(_D79破a>^œZ_ m0􆅕W7q.iw t.u\>qD/WgE)P,>ۿZaV4@Xb]ŶE Կpބ%,KjKW^U&DzE(oձ("x'sDEpΟU cݐq pqf1ִ]X~EEfmpQ5΋_TW,d6a>>66\/ %0c rлg߮T^"2oU0 Ϳ9} J-N,a>h-t\Eg+av:Cv(ȓp-e:e,}CͿaL"66\F?Kи*|Uݲ:];[{;M"X6.O52#Ye:\x%TTOe eE$IǓ PS?g 65:h%#M~:u;,O?xuod`XvEW5y0Qkª P<+=O'5Yr,'ͣ8^#F6|nz=Iyi[l :"k59''BBxEߗr۟(foqCe6…!д2|i3xOt!ؼ*;ebm (0t4^Nr/Xb_ (PXqQXܺUU89? FjD@D#OHA"+- BS(= ,zEHs`kKUY05aEd! op1PrDfNY6z_20#O `Ed!д.BhzFKBDzjPphX6R;R:<͟ cLœsֺa8t -k Jkk^_wiXq">qDehy6%ˌ(9^iut|][68.B"+Ѷa#0kנOJN .ڐ۟pa(vLgx@ (+!O ka-R`KXiu芬s\Cq0^=(.d ,3'܆)0 ݎ u )жJ;0@q P.ޗKsʺ `0Y@ vW97呵ٱ(`L_. D7'8Œ:KeX6֯wTҸ2|.XU[aLLpn:@vӳ֭i'ʀ:Q, AP C4|uNm"$м1i3HS|Xq.cEY4;rE@n0x2́v4[l R5Z/ЭNum뵰@m.5!Q,N%<'* SD:# #Ci к>r1m MviNUtO.X*@7'2f`ꊬh]W|`$#6]j ᕶLR0Ǩ?Cd`IroYEFӹ=#`]Gp="$_h+*!8~cvV&N-7tĎfZnΟ(!L_ ڛ X-oX xcBݿF6:r«`LAECxc" ZpVԏR`ʂ!M6K @'mJmk'Oęp EG!j́v[ImtT$%Pz@4:.!^ayhi䌣5q0`. D)$=>Dՠ2RkFX+= ` #jC}|rH@3"Jwz" q?K0fퟐ/'!yhQE0(lWX"k*#M+_; o 4J$Aq fl ,J%7-JyOn Ƽeo-cDjGH:тEX:~QLΐ $nopa`ӎWjÎMkwsH@ۺhqz`Y&}PL V&fIo/OjlPYn peRqSm݃Xoufr8=h7] U%o=aEL]v !hsfb ¤S@7HY8hZqX+@ T~ ΎRq ɧQB `3> XNq>W"gQ밽. vAN+)OT7pTk_ @ׄ(ည v WQHLS(ةtyI.JEV02`zO D:aA5 0!RQt{E 'PN䒠Q>L4AiiE=c0ԎK #_Bk$-&Gn"0Q:^%R0AljSaưN ZPi,y )~D4g@nEhPJ/эP&}9*3aV;`ŧ+怊 })Y@ TCk`(P At@5@wDe`4uZf@ Q6T z!wq!,Jq jˊ{KxJ#`s~JVkMD큥+: \@HsHt! w"Z=l4 ]!j%RQPj+g A5"[j*%Fvp/%/ A ^'e5'^4Σl0tɉSCwC9-ܛOx! P}A9Q[%jVThgC kJrt %ԢΓ۟ - gKXZ@tyQ ;J)Np#~/ " @TZJP{_K+_ЂofP3a PT? ń KI] JG6E|Ox!rP57_+ˣ%+6fdTGϦKV6 [N󇡏C(V`r"1m'VځH;_TjG[h f6,˖+rOi~4#߁(f! D"(Cq@9D`,bAX)} F7hw4͚OkuTTDÖY6_qg4?>Y4~KP;!򩅄pW *AJPCԵ E[ʷiݞ4:?jRQ `ç3 ^7#wI'! s@o6D9F7Jr0?r#[aдM Wm󁫝Bo?W2 M`@E0Ecи&<ECM1uc0a 4.i9oS*@f?B( շoé+(QMAQ 5D+=)pJ|0c=ԎNjyo !WaAaA&٤bBeL+] ~䇰3U1ERͬ"&l pSw.AQp!XVlkY  00P "ږH% +pơAR~`1A`E)  j^8:ǧ+ Kz  XTԛ  lSI`Ȗ!2[4 b ˨`0+AY+qg 0u BΥސJ_R>AD1 tAzAIEO@1€n+" B& @TM1gw+S91+UԆX*urhmt%Hfea AÀ )4ԅ|Px~,a°`~˅n ^yR~]U F~^cd V*t@!AՔT [ #_4i'c >#ƺejq; X E'z*3c̉){rOoH j`h4(!Cp}9/,K`I&|tF,ALK .`.G<5q6t'Lˀa})E3*N67Ϊk9JXP4;5o݁w+pE!EU# B` g+{csiLgpٚ\܅ĝnav<%iv>'`!os}+0c Q9D/t)獦)hoA7YQY43}}a.NVa D8C.Y,y* isB`C ny LS|4m,B>'Z*]yehkA7H1)كE32P@>^sjWl !gH^~+_[8v%J`/#o\jJ&kW>@"~Mn,:\0S^1`EH&aJ&kH7n* +u6 "` Z$O Na>%=of` {iΑbU]E@nSc!Ց I8Ϳz7$ Hp dt{La>a?x.B 'GTSo 5h tɬec WR"lR].ĄUc\0GơGc⌓Da  My\sRIE`&LQ!k.>+bOC" 1LyL6̂9+TtAK2 0Ƒ32(J` Cz. Η#(@x"gJj8F1`$8a JuS15UJXӎ p@EwOzd)G`K7(@6B 'Y[eX6%({zz+7XW2*:7P`{(&\kQ^3'qEg_ zZ{z<>QLa.ci07"D%g[`FO!gdJBjV^FN„'Vę lp_n{=wnG 58i|COk jx/2!@$|[8m ˚PI@v.?b?..s/,[Ѻ"']tQAbRиL:.!1b~sƑ(Bك75G.B6nѳe/|ATD@T;fJ.Pr.6p9sqg&,,ygI=, PZ!L] ~xi^pIK,p0$a71T\T1k<3BJwd Jg;@}ܹ[:tI> pKP` i|a Sl}H'/fһre: (Bogsp#p-37sHK 0 3} `$dz#F1p\Sۿ”'@"e DC>dqi#i P1gfr 99^v0s>r8`jD8c܎_M 4wO`dQ68C1OW 00ӟ6p`:\D)m`: J. IDATaף~{?c <(tn \aHMF'@z&kg,'aXM P[) @m_8QJDU8$̰qLa O@zK}9S(#4 9ԕQ"{lMuaK*zLFJ7c?uqH F }+%vSb Y=-n%p=7řf/w*b.7i+(@|$K40+Q (b2m*@l8mf\xyC%uH>pu#"I7@UO20,1!=Cqs03q䌌TڕQTbqʹ\hDu@ЧJIP8ӹH3`/v\%*9S,c&?m ^׏83@@X@CďCVz+a09*@"H!c>`1&m4Hnws". @R9%,!0{"AO)6f@ N8.A] JS#@wijlθxDy`!x02zc zRON&z! s\3[YHyc%XuuL/jDH0zmʐύ&! O پ>;BΎ!נ]DK8sv[W&8<^r_HO Pt8&2〾/@Kr v X@k}Жs1UX /`/$)0`z0\zC *b0yq uX#(@vLn i[ `hr"$)6q $:.@]rM,)?DoƙHCF ,XČ3Do&% LcTILG/ɀK _qhvhQr?ms\eHMd'ҳıKv,+L|aZ` ՗EU=E"z0-Ɛ??KLu*|Ra ˢif:X Ln[vivJ%cufr΍2w:.B2\l${Xq Gox} 7 wmsF:J,B~ 2Sǐ5R%n190ݝxN]#xkLG9 EMu/;c+͂@iYh ~'l})  O^'a0)e2Hh.@?%qD XB`yCOj_M7JO ٣}T1mV'נ^4p]4EAWs0:uY0q.I03drXQ͙ q(;W8OǴhsD?̢Y>0QSGkI!Yw\khG3=#I]`6;/g y%5lXvF(+Qq>rsgP:xuΰ-x`8T^ !1 ZgTOz_>O]=k`?|\Q,:^eq_N bLK !xd7b(dc q\KxV$.W]S|8?rqzMJ_?;` j@Uoqs{`OrB /9.%<+`tV` ΍b(uq +/cC}ׂ35Ώ x4;PvOf*3|yCl YDs% |%]T4o@l,K>Cé^LeGlU4/q.i0xb,ݭJ艽 K8 ̀P(۟6OQtVApd%B?05wiEkXigG0xyBb 4_#OE k;c G@ULq4@;O@JI1-5QF84V?Nnzq.y)dfNڹиé^Ldmdeh𣏕ۿ8#JD^D: a.[3b2vN=U{9#3/8/s~ѝU1KӴ$}é>S[gfv\T|)-/0:*p`v4@oojWx9@n58m t(9[\e>B\*@b(IlSm40,)uWA=HOntK:XB.aMs`Xfc/ vDžп}Aٻ(y응39w &M;Z펁0VG:l=M@!T?dO|kb8s\H0Riٝ(Z^u2V{ۿv)B gYV?SOJ!ej@b8?04+@Qwq yOPD$dsF^OYrũm_8.LTqÁS[_oj$3` ?!3S:&p&)G^Ln +=LM<6??PJY*0mܘH=2Yu(m:PoB2,0GF_xi{0J)LTAz_у31g~`>:n_”#@c5gc`LeGp"~/ ɩ|'&v8.T_LXzh+\_H "n}_⸝"\Bo3IpfgW0oX/Ƈ3Ga0y 'GBx\m7S PU覅UQԇKc?UmӰ̞-#?v\H:~; UΉ'xP7((r͟XAnpKV7KY{n&2Pmd#>3򬄘YyFOݧ<+% E@nBP:0L ]-)cmV+8 cgLU ɩ3O)3Rj Wtu r sn:@tKVHYk,3c)b (cJ)TcOݡt~j\îɧ[Ώy|DgOT3D)h ce[^x9#c+dHfJJ1ejCOr\gKKRj 7[Ӕޒ fKGwCo#,KW7KɒxyY[)=}y%j&1c-hscH)6#wB*Rqumi" K>urzsI[#>>tSW8]f*yc yTJ-Hnh'px%\%pp UC>[WO@Z=1~(HYԢt!_SDpF:'tycZ-/pv}lI='UlZ@oۙ >%3c:7*)rؿDJ:1p,\|6Z@2SiT=>QlL #'mlZ6nz۟R>J進cXm !lX e8?hgy[SA^O<=~g+4✔b~(m-AgjorStbm+ό0E f{vRLC[&ŋv"fCV" y/,z9֠%J'1L Mat?:s/o0CߔRL NvMeH )~&(+-.q۟6|~"gs6p;_nm+Gb,}'SajB ܪ̜T&c1):D>ALnF)M +JR׿I}~%hj@ѧoPow5#{ݱ5@?ۂROwA۴aO8gJG \.mG@z*Cj*?~cwK+Ԍ?Yw*S1G~D>K3HnbXP:@.E†ho3o,ӏ{*=bPS}{lz4%p 9o"^5 O,1ʑh^b@KAk6I[ɡ{7`6= =~ۤjJm~y m'9$n^i5-= f 3CI)y}&=ڦ|Ny)h_MfYq[,ti 4pVik>1t7xg 9xH+#Ԝ ||`!0֑S߇Ѷp7^<ՏDpt@XB`<=!ׂ =u"1 QφM=<+A3q)&D>{p{tOT}ԅB(VG5!La˲< 5)|Yq U㉡K+(d쀏QB~MuvH[NtP0{fOH+CԪ8u ~ޮA84R S0M%?A.n7 :=JVD@Ѵp43ꝍ!t<6C0fsc`פAjV)`(Zy<2}iimZX۽O D `X/OMU?7uW-pgCO̝L>kW88 vI)gu bu۟D-q1W`n"gKI<9t4^qblRGi/EMc'tKΆͣu~OZ&\_D zDE@0q&hӹQLy-CAiEyݏmyyQ-hsR c yǶH|ϯBd7#}?Q3J؅t@qFy360ŒŴw߉K+ʣԼw}`C>%'A0#ۿzK3nVWU:7\ԉ_CH4B*zyXvBZQeIO3c-hLa*b<2pxK1U@%(.jNY 7<6c\aHG_7a7Q2ij;'ĉ!i5~mN^۟ a}~S5 f?7{_XÑ-#JĥaK}v|!@K`yO| eEo]۟ ܥ^eI<}NAc?yx総!(d3sqTJ6*iZ ܈j9Wc8Xū=*m~>`޻?:36XR 9?/6SxlG!  (۟vp:0Z냸~v}"gdgP0v đXYRv~Pfq SۤU ҍ@ ",u)Pi p_j%l^x v9zCq'AZQU’=fPB;L?+( > )m,i't@Envc;:_Xa?{G4n @c9s/d߀0?9yŘM@'oP逢aaMG=X'?mOC xq|Ƿ$*aI usFn,Pfۥ\Δe$?Ax"Ff@4/].1w98TOI,jX`h|CC_^xfvH _A]7O.%N~._Dq} Sl>`T?'[d7cCv xty}#x} X.\=߁O9P}0qXOnLn*)*8w}*KZ('܇̺]O9D ?nyx/ BuG 5 mR3,vM>H'Gyr>UK]ScwNU@P aS=ʀnDwoHe-/D\Ol^8 (Ji._\ښ0߂U}p#3_(*d x=v[0Z[SۯH% ErDRt@k}E Wi!WD'/?/LC-cGRbiU ?8wNNT!^'n#{"Zhlɂ7֣%?AT!g ~PI[:tc09 Vb!~A%l{ -`t=~:Ҫy혪C#+m~yheWt?j/V|[˂~DNW@BW%,n2,4jљ <1B ^¯p& 9;׵N@MX%0A7-pڴ S`e[zné^|`W:\a0#"b';/xs*`8?MMW/_w%|W_ k.sl "L ,Bc| "?' Aml?m^@rh&8cXZt\E<&/K6-@S]_؉.D'w[)9z_1towNe֩˫jH,"5O2̭ysoE{G1fnln'4Zن qSB(uxQ_ MoЯ߳m~)RO.an.9cP8p} # xӦN5]yxxy9G-b@᧿x$Vuh8~7ܴ쒆s 1>ŏT>%Wvhm|T\` kՠQyN˰,*98u 9ԁ>L IDATgџ"ڿg 3~H,& i*pѿTTxa <7Ebe 2l;Oᜈt(!S)e'ø7pv?T쾳S}˫ H cGwo5ÂMo?#JcD%*EG?}!csW˫H{Sw;*LA*\Po.n6 ݂!5ʑF}J, :<K1Cjri= 7;vt,d__Ng%VsxR㩹ȟ)l|A5=Sc?W\87>g6 :*; K}߂4t?6r=.p~>U(ˠ#wavIϞ;wPo2?aLg.鼈fqgW[pfdf>u$΃'?s3'/ qb4}Rbup'{S*] A D| O&-=Ȼ8WUG쨣)3"+ɫ6!p~?1<6#@ Þ}ؓpOW1$$0w #ri㼠Ɓٝѯ=W W1@k؇p{|l?>p@Gn~I*oIC@zb R#xqi;rv0~%M ו5{j+~|p 9{hAG'%=%=s䑑G+q_$Tv~^ЎHk,!tue}3c_cF?„lp0ʹk y?5q$әuχ}iX0 zY 7,lj M+}Gv{=_%,(ٳP8 }`b()jU X?_pl8[ :S 5wH*l 2 jicW ?2ue@u3U~?'D$\`n~Es#^!l~YD@k:Q &~m} >pqudn7n;yfq_ŶoIϣ#K*X l=sNfD`yD/Ǻ]bkDdu+.4~-?CC8p#^.2;~𹛻k$pb{7syBBnsiN+ o\,BӪ~3Q4HLlj \K:\}3q{7]y~RBy@ LĻU?ZEg k8ۏe-;nZpUC h82 ˰i3H,=,!* ߾L;^ڊ;,aBer?_-(#{}+(8s؟}ØOl_ e}zƐOdhkS X:0鷮ſ\;>~x?@R1q8>CHxA 'y1B)-mFѹиgqY˛uXy:& ΂t%uH,R] o^]=5|/;P8,lsOM!#D< PfE%yi?ó;b4[%Tu4` e0wr1 %^@hࢶ./nw}OH;=_®ɧR#RǪ_A.V~8vh~LBD GlYeEÊU2TCH`vtW#BBаMn`8 <xG[tr|}amSOR#RT rBa{'LJ,J =+̑-#qeDIT<:%T4mC5kL ><4 t ~F𗡯P8u1EP KYS ( }g',J؂8eU剀c[ljڵ^ DX 1s|lN* ڠhZ(MN<>90'oy, B[Kʺ chЁ!!64!@} c!obS[_Be{/#KS[&?&y\e'{Ω%N:&!$!$`@APA.><^uWQQ !b $IZ]UݵWTw$˩;$O䜷S省~@ }9^iVyV  w"ZnuߊeEVU B2*B`RI]߈o_߆61Et~x+Mrfȕ})/G (1 r%]UqrCgT&6jH^0ދ͋!0p$BܐUud5Z*q K@AF]2mh%Q˄юc|u2A$ 01 }qi]C2"0&$=Ӈнef_Hf +PHCapӴ@P(mpK_߶wnY0Z{ Ɲ%ro{&{3~)]J#٘|pƜigZEx~:rsa8мy1L!9c0ҤϬ/pۆF|6 3&Gׂ g L8{ǃ[(Ǣc/6m4u՘gJL ^ BRM`g!'{z/nii`h HBUܰ-ϙ^#;z7&RC3Ac#rQWH+De+nsQ!@`"AĉCvV)$4ml@JR .ґVt:օ^|6|jm<}6Y-=?oN4 Ih;}죯w.LNu =V6 OŨm|N VC}v jW7~m3Ԍ QrQ(#XSׯiQ[f-x;w fCPȎo1$(1r\Ny|Rw^MM (z'_F(3專hX+!'2LCU":_'H+:WOW-WnAke`7J& - nHGCOC74~Ȱ 07i0gV{spL$Hvph:\<8N4mZ@{- S H#@eTUGω;,]״by8R ]Oy/{)w_YU:w~g<{y;`gaB{_|4љ zRTÑHuk}UFN ƀS8\r: y,0·@24!UMhXad\@91uljWފkZ+Qa/י=xxn\[h H,=F7 EG` ^eEƻҨgͮ H(QD/ 2w icpUxy /ol,TdfT@`Z]P/ߏƲ]LH9Q5d5Ì۫[+?~.?!!vkz(}~Ieބ]to8t':x=Xxtr,;[+]b8F@JM*ڐl˄H|u`TO9rA.d}b&WZÑҰ6lh @u§9؏C S2(@4sr̀X+/:ǎ1瀬5fQ@dž \;jQu/ >`jіy~ Wdw׿1PUKd#-|+_s]6Y4 :בX|&l{/R )X F 7L, A4%pC\]{qG;+`3fy&MϽk:,a׎M\J>| u bSOD 'ge蚞iY.l)>9CtHf UXr*4^RDo;OI+$ܩx lg`3p[$\ԹXXaG׎ ;ʬ%QgH9[ 귂!S],?ɞ|w>ސU[[?_͍rJ5L724ވMaCյ(TE"L ő!!1XjV Z$8Nx[Y[dH "?t @<63jVԖYXnEM6Ӽ-/2^܍]O{rXHA^}`t*7%s<}ѪZunꂭ5E5k oF( ՇT}ꝅ}-6MV$A,H:8`s5IDAT8DJ~Ͻbr{'vg1%Z . }y)(𪚍nmޢdTjh\e`XZWT_v:Jgq 8$zQ^Wrdȅ`>+niciTZw !kY0&يUoVTX?! k +!$̢T`ewON|c7,ɼ@\0grgZXxû# PuJ,^U۰|%9d?w`pF8̢% H'?S/,ɼB\UK˵+>5\tAֳzW md~Jq pr0J䆺/EJ8AȝD2&gҊ5XQaEi) :1EG xZ`$ 0+5vߑwPB; $^n9ߺ[F*TM j|{ף|9M\"]`G{q,#>d$A$LVH<+n+]ƐKRn]:}b`& 2TX}h.[XT Z@8i:q,'c"5 YM$鑃e; rɠ@ ,KnsjLנ288 f,*_ŞUhpa*+vyPu~tG;p1#~:~R@HQTTC?~Cm.m*k }\h I0cՊhq/C Vf3\G0=q:Xd&:!3jgCmdg" a]}+ole{PZ 33 t"ZQa ι h.kCN z'D8@bx? 0D'RC{&?#=tD/)y:%o-\ (•>WB*t$6{Qmo@MŨq4k ,Zyc*; HL-Iߣ hgGrчi;)HYj?]~TUZiY:fB I[*գ޵Pa.&YDa#Ib8ы B1$8T]L*731di> OP6BfCu-۪?;v]%6=pvиvz@`, .s9:TgFNd;|Ȩ)Ĕ)̌b,9™qD0j1D$@4 Ĕ>9|K.B!sW ,+W7^ںO]kV%ٜ)ts0V8L.+4i*E"2{bcB!0 c:B(=HvLl %^&Rc0=QҸEBeZEFM"&TbH*qĕ(r %GZM"rlG @` sc;/T#cY׳;XLB.|P M4o |fZV4U/)s987:dJē0&BbR xI0 fBOa6!kYA2sU +3;"mclSi̟ 1H䞓Ϗ#ݑb5Lrɪ^ihE۪޾A4 ѡQW sB.:5\Gulf_] Y0{쉡C6B.ƥKF:ߪ+7/ֱPe$ cD)yt3'0/ab#P ښlzwJϻ\~20@y5M@D۳/2}';bt0:Ub4 R`Z|mͺ5jVUޱJ4 LSt>grey% =3ݑpHH>Q qCMkjWzit]fvH]ѡ)ZHXnIxb29vd='~907Fm$P(KZ`q}啵Z6+,L`K19O3Dsn_:*G^ =77c`QjIH1P dFu5ߪ zef/M@P(@41U2ёdı#G/H #PVeK6yV *uN J%SPwÑƏ v 9 #GY^QsyefToJCia :|Ad:fCLd_b+G>P,#-Q |p|--ek< Uum3#smp  Lg:lB%BPh;v x"vp+ѕOLɄE1PY]YEy9RƱrUmk8Mfdc"F rpO9TYӲ1u"9OB''LuGӣ{B A|k5`uW9k͕6ocZ^kolbaf1k|f W 7r0͡no00  r()5MDz83%wzcӃ㱉DoE&(R?CnU5X*rĄ&O?JG1鉄dgF1BJepZPa)**]>MN[VkqWZ:\\U9+tn &p`b Y7I` |A`eƘlLr x*"(XHXX̔IG85(@ )E'o.&IlK& T!ef% :M/  9 d\,sjfjVgJ6L?-zJ-B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!Rݐ VRn8IENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/Info.plist000066400000000000000000000023561263452017400206420ustar00rootroot00000000000000 LSRequiresIPhoneOS UIViewControllerBasedStatusBarAppearance CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier com.yourcompany.JuceDemo CFBundleName JuceDemo CFBundlePackageType APPL CFBundleSignature ???? CFBundleShortVersionString 3.0.0 CFBundleVersion 3.0.0 NSHumanReadableCopyright NSHighResolutionCapable UIRequiresFullScreen UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo.xcodeproj/000077500000000000000000000000001263452017400223535ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo.xcodeproj/project.pbxproj000066400000000000000000010660121263452017400254350ustar00rootroot00000000000000// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { E16EA7E816B50766F3AE4F88 = {isa = PBXBuildFile; fileRef = 8D7BDA5CDDCCD2F7BE67037A; }; BB7001D6FD448E6C0AAE4F30 = {isa = PBXBuildFile; fileRef = 8452076B5EAE822DD445458F; }; 213167931DD11DF54592222E = {isa = PBXBuildFile; fileRef = 5FAB9E7F62B84DBAA98A0004; }; D8AC2AB9573F991BFDFB431E = {isa = PBXBuildFile; fileRef = 37CB4A819F38E7AF9C77A8CB; }; 4E306BFA283851066E0DA96E = {isa = PBXBuildFile; fileRef = EACCBFA17F4D07ECE058EEBB; }; 78A2A3F0D3D555397E3C3CF7 = {isa = PBXBuildFile; fileRef = FBCD860CD7113A3136B127C8; }; 21C66018A589DB4DCCA7B48B = {isa = PBXBuildFile; fileRef = 8E87696FD85E6134968D4341; }; 98416DF4B2FD4D550364EBE8 = {isa = PBXBuildFile; fileRef = 5B1433D89E82F55DA4D004B1; }; 9855E6AE1E9125FC6C3673D4 = {isa = PBXBuildFile; fileRef = 033BE48C56ED09055876AFB9; }; 1562996CAD648AAC922C763F = {isa = PBXBuildFile; fileRef = C68A1D6B6EAA0B70553FF6D3; }; 903D7CA9DAB57660179C9816 = {isa = PBXBuildFile; fileRef = F2066125C7C0B19E1065BF1D; }; 0C2591D2A41D00D364570D9B = {isa = PBXBuildFile; fileRef = AEF26EF11BEBA847F152A1D5; }; 9E8944195DB3FCA7AC031CE5 = {isa = PBXBuildFile; fileRef = 034AA69C5B2B4882EEFAD046; }; E036E92901E0B69FCDF451DC = {isa = PBXBuildFile; fileRef = 556EFB307E14C15D5EA0242D; }; E95494B76EDE178B2969C527 = {isa = PBXBuildFile; fileRef = 0F2AFC09338BE08479886B0B; }; 06ACE6F5252696569D99CDE5 = {isa = PBXBuildFile; fileRef = 9617B3B5FA9439D342F23ADC; }; 7FBBD57A4D5BF1101490D3E8 = {isa = PBXBuildFile; fileRef = 01C6528C4A0646873D4C3429; }; 3E91F110826EDA152862B57D = {isa = PBXBuildFile; fileRef = 146EA869EC587DBE94B39198; }; FA318C2AC336BAB1713BE5A7 = {isa = PBXBuildFile; fileRef = 8413B0A6941430B8CEE7A573; }; 5FA25CA10C3E028E4E48B32E = {isa = PBXBuildFile; fileRef = FCA788F92D5BB1640CD2AC35; }; 68A852C810EC2084A62E277C = {isa = PBXBuildFile; fileRef = AC70FAD27248857B6D16BD33; }; DBC8796D834FEE0F1BF81BB4 = {isa = PBXBuildFile; fileRef = C993FAEDCEE0A33CAB42F995; }; 0FFFF4C3E1E3731E7EE281AD = {isa = PBXBuildFile; fileRef = 014BF4937EAC7618FB1BCC69; }; EA7A6F1BBC7EB6740841C7B0 = {isa = PBXBuildFile; fileRef = 9297F74907620178A1EB41DE; }; AEAFB0AE4BB38EF3EAC34EBA = {isa = PBXBuildFile; fileRef = 56416BD4B5AE294F24289057; }; 587D594CCB99791F4D724DB4 = {isa = PBXBuildFile; fileRef = 64E7D43C4F4037CFC2C5E2AC; }; 40D223F10936E34918B48639 = {isa = PBXBuildFile; fileRef = 49412C044B88516D9AF59FDD; }; F739D6D21483E3498985C7AF = {isa = PBXBuildFile; fileRef = 55D08920D4992CD0721AA3E3; }; E4A67DD76D4D063F547F0844 = {isa = PBXBuildFile; fileRef = 4DB00B418C4F068BC5FC7314; }; 257CBA785DEDAF53F4E9BF60 = {isa = PBXBuildFile; fileRef = 4D569839066D92C393F58EB4; }; 9C30D9613D76EEFDB1653F34 = {isa = PBXBuildFile; fileRef = 7DBF83B26277D13CB3FC1479; }; B810E94ECBCA231F60EBEA5F = {isa = PBXBuildFile; fileRef = CCEC8F9385AE939B24D27954; }; 15B2A7314D1E347D65EC664D = {isa = PBXBuildFile; fileRef = F1E995A1E00C6545A4C3297B; }; 7F933AA1FB06796E6D67C6E2 = {isa = PBXBuildFile; fileRef = 92D3CD3845968E4FAB93576D; }; 251D94E4E171A4A2B67104E6 = {isa = PBXBuildFile; fileRef = DEE5EFE8148FD2DC743A7DD7; }; 52B925A3C2C3D9B8CB7E42C0 = {isa = PBXBuildFile; fileRef = 52E4BE1BCD56D3676C84BEB0; }; B65EF8DC596033D841E653C4 = {isa = PBXBuildFile; fileRef = 28CB3F1A8BFCE1F01FD630A6; }; B402A461C4EE2203251F9BF1 = {isa = PBXBuildFile; fileRef = 9F75FFB61C74FEECE61A7138; }; 2346D126B3690390A0925F06 = {isa = PBXBuildFile; fileRef = 24B00BED20980D12119C228F; }; C54286354BE46CB39B4C5225 = {isa = PBXBuildFile; fileRef = FD46383E356A5DDC1AD53380; }; FE559832F5E168F0FF04CB6E = {isa = PBXBuildFile; fileRef = 2DA02BCCDBFD5BF2DA2D2FA9; }; E635FA4F49200CDAE3E4E6F0 = {isa = PBXBuildFile; fileRef = 39A06D3252DDA6F97FB09495; }; CDC1A7E9F07FBFDD5DA92031 = {isa = PBXBuildFile; fileRef = 5AB15A508A07934A89398A6B; }; 5B96583E8DAA4EA4EA1ACF18 = {isa = PBXBuildFile; fileRef = 84BAF97675BE522B63DC9A4B; }; 372B92C7E54D51285649FDD1 = {isa = PBXBuildFile; fileRef = B731664FB9EEEBC618BAB5A0; }; 79B3AB44DF87025EBA9917E3 = {isa = PBXBuildFile; fileRef = A83639AF2210589E5367ABCF; }; DEB871CA78557347FA3E9ECF = {isa = PBXBuildFile; fileRef = C0C8D6D7D14DFAFB169FFDCF; }; F95DB56FBBDFA7F55D265B22 = {isa = PBXBuildFile; fileRef = 9B37E4C205A31B36B559E613; }; 6624011B8E83912B5D05BA77 = {isa = PBXBuildFile; fileRef = 0AF54289591CEBFBC19EDB40; }; 4EDD1F01620725E627247B74 = {isa = PBXBuildFile; fileRef = 3482A5FDDEE5E5D405047999; }; A1F184ABE297300A9E58BE94 = {isa = PBXBuildFile; fileRef = AD55906C5D8552E842C98EDC; }; 41F9A5936E54187528B817E9 = {isa = PBXBuildFile; fileRef = DD24BAA1E8104B6D3554A222; }; 7BEA73E4BB71CE05E542A6E8 = {isa = PBXBuildFile; fileRef = 8D70A7277DDD7B7974E9F178; }; F11E1D83596BC7786FC69405 = {isa = PBXBuildFile; fileRef = 0349FEE5DA18067918536934; }; 67EB8B44CAD18BA4AF577528 = {isa = PBXBuildFile; fileRef = 1E0453D8A9741695357567E3; }; 445DE2471E5D168763AF149B = {isa = PBXBuildFile; fileRef = 40D267701C8FF75121454D79; }; 795A76FB056FA340861A8C51 = {isa = PBXBuildFile; fileRef = 66C5D2F0D9B9ABA7F4A386E8; }; E96BBEAA081BFD7B244B120C = {isa = PBXBuildFile; fileRef = 5B466272F3B821BE88BAC205; }; FEDF1AA6CC2486AE0C1267C1 = {isa = PBXBuildFile; fileRef = ED6224ABC715AAB68661F4D4; }; 47F2181361C8EB7D67C89169 = {isa = PBXBuildFile; fileRef = 4E49D12CA5C42721F532DCD6; }; 7CA1524D7DE0C18C1F070C97 = {isa = PBXBuildFile; fileRef = B9D26C6C4CED62E6708B6865; }; 64A5DA788C3DAC2F02BBDA0F = {isa = PBXBuildFile; fileRef = 63AC834818EFF45708101F9A; }; 633491D8F37C87F3D426F0FE = {isa = PBXBuildFile; fileRef = 9079FD325609A4E67E44F3ED; }; AC074F24DB676919ABF06188 = {isa = PBXBuildFile; fileRef = B27A7B237782F9E15E4BF8D5; }; BFEF0063952A3A4DD92CB068 = {isa = PBXBuildFile; fileRef = 09D51FD6DE5DF526BB36B4D3; }; D39B2783DD6DB671D8BAC0EE = {isa = PBXBuildFile; fileRef = 141036E097DAC47FB6F9CA80; }; 7FDB32957337BE65186DA1A2 = {isa = PBXBuildFile; fileRef = 786CF1CA66289DB77845F8E9; }; 52637F000CB62E13F2D98026 = {isa = PBXBuildFile; fileRef = 9895036432E9AE55EE16323F; }; 005027EA86FFAEC19D634730 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorParameters.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp"; sourceTree = "SOURCE_ROOT"; }; 00869109FF554F8DB553761D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemTrayIconComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 00CC1BBABB9EEEBABF0D34ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; }; 00DE0C93FE719DC72E20A63B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; 014BF4937EAC7618FB1BCC69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/Demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 016565008F3FF4F39192ACA6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BinaryData.h; path = ../../JuceLibraryCode/BinaryData.h; sourceTree = "SOURCE_ROOT"; }; 019352D78DBBEE2AC10ED6BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AiffAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 01AD7BA1E1B20309DC969EE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandManager.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h"; sourceTree = "SOURCE_ROOT"; }; 01C6528C4A0646873D4C3429 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioLatencyDemo.cpp; path = ../../Source/Demos/AudioLatencyDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 01F2CB80C1B14450528F0FA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; 01F49D3FD943424005FB512F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 02659911BD886D2E8431B912 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LocalisedStrings.h"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.h"; sourceTree = "SOURCE_ROOT"; }; 02ABF8C447E1A47845F6027D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; 02F0BF69062E8D9583F13C83 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; 033BE48C56ED09055876AFB9 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 0349FEE5DA18067918536934 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 034AA69C5B2B4882EEFAD046 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = "SOURCE_ROOT"; }; 03707F35E5DB4BC6F1FAC8D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; 03CB1183519203936C33025A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 03E5796BC74758EBDBD49081 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserVoice.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp"; sourceTree = "SOURCE_ROOT"; }; 03EC0E5A647E50B369E50BBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../../modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; 0443FA799896F7D084DED278 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WavefrontObjParser.h; path = ../../Source/Demos/WavefrontObjParser.h; sourceTree = "SOURCE_ROOT"; }; 0453D6FB24F82E92A6BEDA49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; 047E385F21CC5AD6238B120E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadower.h"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.h"; sourceTree = "SOURCE_ROOT"; }; 04C5FED8AEA4109C4ED07111 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 057A64839BFE9AD0864752C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterFloat.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h"; sourceTree = "SOURCE_ROOT"; }; 05AFEDB1F65A8C2C8E9620E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_formats.h"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.h"; sourceTree = "SOURCE_ROOT"; }; 063357A85BA244642BE1274A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_basics.h"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.h"; sourceTree = "SOURCE_ROOT"; }; 0638493DAFCB6148E77159B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; }; 06496C804633EAB2003E5B19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 068183416EF5422C7AD0F238 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; 06903FD63E508771C576431D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; 06AE69217982DB82E0F47554 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; }; 06B6D19CE5691310DEF50DBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniserFunctions.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 06BD2631BF3C52F26B9981E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_cryptography.h"; path = "../../../../modules/juce_cryptography/juce_cryptography.h"; sourceTree = "SOURCE_ROOT"; }; 06DE336A39A9FEC47A8C2F06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; }; 06FACF171E0DE0AC6318AE4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; }; 0732CB9291291C9854197B28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Box2D.h; path = "../../../../modules/juce_box2d/box2d/Box2D.h"; sourceTree = "SOURCE_ROOT"; }; 07425F710A1C4AC479BE56C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEZone.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZone.cpp"; sourceTree = "SOURCE_ROOT"; }; 07553F86ADDF3CE278CBDE66 = {isa = PBXFileReference; lastKnownFileType = file.xml; name = "demo table data.xml"; path = "../../Resources/demo table data.xml"; sourceTree = "SOURCE_ROOT"; }; 08085F4282FC26BA8D377921 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableBorderComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 081472DAF6208CF7FDD4466B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceSelectorComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 0876934F047839205147DB99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AnimatedAppComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 088687334FC51A5136881578 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 088BC49A72D9304769B2CBFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_AudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 09D51FD6DE5DF526BB36B4D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 09EB2AA32041290412E00D8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; }; 0A25E42359372E51ADB0123C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 0AC78EC782815C8325A3AC8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 0AF54289591CEBFBC19EDB40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WebBrowserDemo.cpp; path = ../../Source/Demos/WebBrowserDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 0B08631AE709ADF41AB3B780 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorListener.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h"; sourceTree = "SOURCE_ROOT"; }; 0B3662D1FFE3102476FD60D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeTime.h"; path = "../../../../modules/juce_core/time/juce_RelativeTime.h"; sourceTree = "SOURCE_ROOT"; }; 0B53DC9C735B3B307C65836A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_ClangBugWorkaround.h"; path = "../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h"; sourceTree = "SOURCE_ROOT"; }; 0B54F1B0CB17ABD0C3E40658 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; }; 0B5B86BA8E4C60B999A45034 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterInt.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h"; sourceTree = "SOURCE_ROOT"; }; 0B82DF796E577809EB03B874 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LAMEEncoderAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 0B9867D5674933AF753A2CF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; }; 0BD502F6196E1FE7D9888A1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; 0C6B7C49C4630C18F995C738 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; 0C73944DB76DB5DA61210A33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; }; 0D17B181C82CDA7A6282A0C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; }; 0D979051139C2AC633BB4B9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; 0E11770AD343D8A0780C54BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../../modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; }; 0E1D85B025D93DAFA8404824 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; }; 0E1F414FCC996E155B4DB5DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; }; 0E26995340F6E559281691DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 0E2F5CD3AB59E19A1ADFF875 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; }; 0E39FF2E9AD2BDC94CC015E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiOutput.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp"; sourceTree = "SOURCE_ROOT"; }; 0EA8F0AB668E3B77E8088139 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MD5.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.cpp"; sourceTree = "SOURCE_ROOT"; }; 0EAB2E0BB8C3BE2725FA093A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; }; 0F0B65D33F71F27C1E366CF0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEZoneLayout.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 0F2AFC09338BE08479886B0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IntroScreen.cpp; path = ../../Source/IntroScreen.cpp; sourceTree = "SOURCE_ROOT"; }; 0F3360D13458198A3A88B1A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; }; 0F517EA07DBFE31E5C9367F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; 0F518E75055A9D954B52DAC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; }; 0F82F90D72AD536CC3DFE217 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioChannelSet.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioChannelSet.h"; sourceTree = "SOURCE_ROOT"; }; 0F88F061C51BE43F53B27094 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 0FF2403BC335E710BE391DEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 104B96755BED457D7CEA42EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; 1065FE461C00EABD9485BB93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 106F27CF32C79FAEE768ABA3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 10932841EA586B6969446549 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 10B6D087BD60ECFE08F157AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; 10DF2A823B97BBC0BD840B9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarComponent.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 11005DEC79FC6A6057FCFA7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; }; 11A95002F7CE796B7C27EAA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 11CB66B1CBA64B205FDF2767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; 11F6937FC766E1E9568311C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; 1225AF360A43D61516016CF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLImage.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h"; sourceTree = "SOURCE_ROOT"; }; 12E4EED0370A1733C6629D86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; 1339BD00EBF554E995968B6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; }; 133BC5B880C7575FF3209D88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 139D5B8276448B8BFDBA3F7F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 141036E097DAC47FB6F9CA80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; 146EA869EC587DBE94B39198 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioPlaybackDemo.cpp; path = ../../Source/Demos/AudioPlaybackDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 146FF5324D969925F258D045 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; 14933D0F3C598C38A113CE8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; 14A37C392DF6CF1CDB64612D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_opengl.h"; path = "../../../../modules/juce_opengl/juce_opengl.h"; sourceTree = "SOURCE_ROOT"; }; 14A6170C094E7786C521A4DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioVisualiserComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 14EAA74C473506EC4920A160 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DemoUtilities.h; path = ../../Source/DemoUtilities.h; sourceTree = "SOURCE_ROOT"; }; 151ADDBE74B99337BC2C2586 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; 15348CE8667592D8F3841601 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; }; 155D25867B048DB7685E6F11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LagrangeInterpolator.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp"; sourceTree = "SOURCE_ROOT"; }; 155EF3FCA61BEF035E1D7C8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RenderingHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_RenderingHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 1676147A3FADD6D79FF42CDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPosition.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h"; sourceTree = "SOURCE_ROOT"; }; 1697DAEA5B5B105AE1C48E12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1698E86A0E0E93DF1487E9FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Base64.h"; path = "../../../../modules/juce_core/text/juce_Base64.h"; sourceTree = "SOURCE_ROOT"; }; 169C561B93262F8B46BEB768 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../../modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; }; 16DC590DCFE57F583E99F9C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; }; 1713D0650DCFA516EBF595DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 171E2FEB6097B9D059BCD196 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; 178D5499D90E6C10AA778456 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_video/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 17ADC8ECFA616CF392783757 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 17C0612B5BA94849EA9768CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; 17D0D2AD3243F65FADB94446 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; 17FDEA6209B7444B117E63C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 182223C68F452171BE479C01 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ArrowButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 184C5CCD9457D17375F9AE1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 1890C5F569F315E5F8EBB1F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseEvent.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1913719A1E4E1803CD54D11F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; 192EE3C990E80213984A44C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImagePreviewComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 193F42507FBE4E7A62D81E2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A1C23D2F16F880FCD3B565E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A3DE76CA275CEE7DAD501A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; 1AD3E125B61DD653C03FAC05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_box2d.h"; path = "../../../../modules/juce_box2d/juce_box2d.h"; sourceTree = "SOURCE_ROOT"; }; 1B9B4E12F53F8350757CD4D2 = {isa = PBXFileReference; lastKnownFileType = text.txt; name = README.txt; path = "../../../../modules/juce_box2d/box2d/README.txt"; sourceTree = "SOURCE_ROOT"; }; 1BBECE3C619C157F072748D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; 1BE105DE7C738CCF8D6F2A54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OggVorbisAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 1BE21633CDF618F8D993F3BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; 1CD8799B8784A91FC13E6641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnection.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h"; sourceTree = "SOURCE_ROOT"; }; 1D4E674C38566E14B4B73F49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; 1D62103CFAB9245F2CF523EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 1DB91DA41FDDC9D2F628C7E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLHelpers.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 1DDAEBB24E58353761798ABE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Line.h"; path = "../../../../modules/juce_graphics/geometry/juce_Line.h"; sourceTree = "SOURCE_ROOT"; }; 1E00488AE073FB510E4BE10D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; 1E0453D8A9741695357567E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; }; 1F25BC80413668F43F5D7864 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessage.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp"; sourceTree = "SOURCE_ROOT"; }; 1F2CB36A86AA1A4FFF89CD88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReaderSource.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h"; sourceTree = "SOURCE_ROOT"; }; 1F2FF9F4A1F8325AD3F19EA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; 200A1B6B96E1089110CEAD48 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MissingGLDefinitions.h"; path = "../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h"; sourceTree = "SOURCE_ROOT"; }; 201E7DB01624212F01B85F5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 2060347D582A8E45F58AE1C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; 20A4427A1F9CCC5FC58AA159 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2108383000B0A3564DFF340D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; }; 215D455CD5A3BD7537F88630 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 2174CAEE6D8EB215ACD4A256 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; 217D243937EB2507494A4D34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_JackAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; 218E36147FA4309F072C1949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PlatformDefs.h"; path = "../../../../modules/juce_core/system/juce_PlatformDefs.h"; sourceTree = "SOURCE_ROOT"; }; 21CE480826B56F0B5C8C4A43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BigInteger.h"; path = "../../../../modules/juce_core/maths/juce_BigInteger.h"; sourceTree = "SOURCE_ROOT"; }; 220344E43675A2A7D64D3A44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; }; 2274B9A5BC921FE3B877D0C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 22CF0BEE62FB551A68223B3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioThumbnailCache.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 234392598E5388F29CFD6B50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiser.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.h"; sourceTree = "SOURCE_ROOT"; }; 239F942F45950F5EDCB65A17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 23A853ADC54A69406C7A49C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Time.h"; path = "../../../../modules/juce_core/time/juce_Time.h"; sourceTree = "SOURCE_ROOT"; }; 241100DC52A0F56D071C8C4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; 2432B5DFCDB8D39150029E01 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../../modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; }; 249A454A7EF1C3A07A66F453 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_basics.h"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.h"; sourceTree = "SOURCE_ROOT"; }; 24B00BED20980D12119C228F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MultiTouch.cpp; path = ../../Source/Demos/MultiTouch.cpp; sourceTree = "SOURCE_ROOT"; }; 24B56E58A88C5BA553F1C3F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; }; 24E2AF695F11B9BAEB8FBE3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; 24FC5DD7F88DBB1E3A46AB54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 25412CD3F6855849D8B7FE98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPlayHead.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPlayHead.h"; sourceTree = "SOURCE_ROOT"; }; 2551FA5B61BFBEB5E0310B66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 25615385230E47D7E70A2745 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardState.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h"; sourceTree = "SOURCE_ROOT"; }; 263BE0BDE184A7184A118B46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; }; 2699A70E9610104CB8D30EC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDataConverters.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h"; sourceTree = "SOURCE_ROOT"; }; 26A65E5DA320A85F90F1F58F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDataConverters.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp"; sourceTree = "SOURCE_ROOT"; }; 277ADB563604EE1FB51FDAE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2781E458566701273B805E8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MixerAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 2859FDF0CCD1ED788910E9D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WavAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 28A254DF535233A82D5D79BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailCache.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h"; sourceTree = "SOURCE_ROOT"; }; 28A7CFB0B6DF367A9830817C = {isa = PBXFileReference; lastKnownFileType = file.xml; name = treedemo.xml; path = ../../Resources/treedemo.xml; sourceTree = "SOURCE_ROOT"; }; 28CB3F1A8BFCE1F01FD630A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MidiDemo.cpp; path = ../../Source/Demos/MidiDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 28E65398C8CF95EB12A5734D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; 293678404D17012C6E402AA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 29919F82CA5311BEA61649D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 29930414E0C7FD5EFC7F2095 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectShowComponent.h"; path = "../../../../modules/juce_video/playback/juce_DirectShowComponent.h"; sourceTree = "SOURCE_ROOT"; }; 29AA7E6AE1C062B740F4D80C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FFT.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.cpp"; sourceTree = "SOURCE_ROOT"; }; 29C7AE377B006C00D4293C59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CameraDevice.h"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.h"; sourceTree = "SOURCE_ROOT"; }; 2A155BD926FEB91142E6A638 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; }; 2A1FF908BB6FEBAD912CDE8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScrollBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h"; sourceTree = "SOURCE_ROOT"; }; 2A5FA90E69311FB8A18EC3B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; 2A8F6894339DCE6003B702F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; 2B4F1477BB90BF7F62005BEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; }; 2B702EF83CBD217F8F9195F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 2B8FF1E4F8D48AEDE05224D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 2BC7AB69474D7E280098B893 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 2BFAB8AE52821D3786BD7ECA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiFile.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 2C26D37BEDBDC3B1DF19388D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PositionableAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 2CD4306102317989E6321924 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; 2D13D48857E2530BF41F70CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SelectedItemSet.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h"; sourceTree = "SOURCE_ROOT"; }; 2DA02BCCDBFD5BF2DA2D2FA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGLDemo.cpp; path = ../../Source/Demos/OpenGLDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 2DAD09E643C29B6DE7F26EDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 2DDE8684F3C5CB4A781D72A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; 2DE7C6A69CC0096EF56E4049 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; 2E093A5506319EC68DA184F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2E29C6A0CF15C32A35119DCA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; 2E524CE76F1B735AE8072E03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 2EB37CCC4FF8C40B015C0555 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableImage.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h"; sourceTree = "SOURCE_ROOT"; }; 2EE8E77D21471265869C9B4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F1324CBA29604BD3E2003B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; 2F19C814598FC304CA841242 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F66B42AF6C0B5ED381937C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; 2F7F13C84464F8409BBDBEB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F8041ECBF70D78604686D6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; }; 2F8D57F15D63118E33CB0639 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 3008922C531303C24B8791AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 3009F5CB4D15119D2C680F98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_android_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 30212C3F1731BD8F19412A38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; 30CA850D191ECD5F1F7B6A70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 30D828B153772EC3FBADF543 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Whirlpool.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp"; sourceTree = "SOURCE_ROOT"; }; 30DA52AA554A0249429AC3FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; }; 31D74E7CF149EF5B569417A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 3240A232A5C82A812A837A2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; 324452D7F5B5EA3B393FF4FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatWriter.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h"; sourceTree = "SOURCE_ROOT"; }; 326FF20ABED3923B1418BB3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ios_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; 32F1D9C9FD2C0796E2E66C6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RSAKey.h"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.h"; sourceTree = "SOURCE_ROOT"; }; 3371D4F2A1E0AB784460E6D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../../modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; }; 338AEA7AC3EF4CE113FC7303 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserBase.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp"; sourceTree = "SOURCE_ROOT"; }; 33B829EE652FAA7EFB9E7460 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FillType.h"; path = "../../../../modules/juce_graphics/colour/juce_FillType.h"; sourceTree = "SOURCE_ROOT"; }; 33F3182598E9A84AD25A9184 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; 3411D087E2F8C3962E73F64F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DeletedAtShutdown.h"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h"; sourceTree = "SOURCE_ROOT"; }; 34176F324CF7EBCDE741B2DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; }; 346CEC10C4A7DF779A799311 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnail.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h"; sourceTree = "SOURCE_ROOT"; }; 3482A5FDDEE5E5D405047999 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WidgetsDemo.cpp; path = ../../Source/Demos/WidgetsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 355DBB46C4283779C367E97B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 358C6A8FDD14AF0BADFC200E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 359FD60323CE3BA7B25008DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeEditorComponent.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 35E35B099E2A7906A7AA2EDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AiffAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 35F5E95BA127E63BA136DACC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToneGeneratorAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 360291D0346F776DDD3F43E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Uuid.h"; path = "../../../../modules/juce_core/misc/juce_Uuid.h"; sourceTree = "SOURCE_ROOT"; }; 3649E7CD2BD6A37FCF7D72F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameter.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h"; sourceTree = "SOURCE_ROOT"; }; 366C0E8D559D37FF92B64F47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; 36711C0D24EB22FABF8E7BCB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; 36A65D869B23D9987C676BCD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 36C9E79611229727DF5E5836 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeMovieComponent.h"; path = "../../../../modules/juce_video/playback/juce_QuickTimeMovieComponent.h"; sourceTree = "SOURCE_ROOT"; }; 36DA578E707673F6B174A016 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; 37355CCC05D407D665AA6604 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; 3741E4C0CE5C7C0828D09BA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringRef.h"; path = "../../../../modules/juce_core/text/juce_StringRef.h"; sourceTree = "SOURCE_ROOT"; }; 376F6150287E759E77B824BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; }; 37C7B4ECD40F15EFB12D58AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; 37CB4A819F38E7AF9C77A8CB = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 37E835EA1318A5D504282D90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 384887ECD58A0B42E3669617 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReverbAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 3855013A39E97B76B46E055E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; 38B737F6F0007F752EE380B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 38FB6ABB883ECAD52027CE19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; 3924287A67ED97279455625B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChannelRemappingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 393A46D91FB481557E4DF792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreMidi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp"; sourceTree = "SOURCE_ROOT"; }; 39A06D3252DDA6F97FB09495 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OpenGLDemo2D.cpp; path = ../../Source/Demos/OpenGLDemo2D.cpp; sourceTree = "SOURCE_ROOT"; }; 39E23931E56560C294237428 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_curl_Network.cpp"; path = "../../../../modules/juce_core/native/juce_curl_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 39E4404D57A8B66DF520B66F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../../modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; }; 3A42694A047942A44E8216F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 3AB9E51994CD35A10F87EFF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; 3ADE61DBFBB6901CE2F1DB17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceManager.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h"; sourceTree = "SOURCE_ROOT"; }; 3B4CB5DCC28B60C4129F024E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 3B61B715F29A0AEAEF73CCBA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; 3BCC9E4DFC3910F668DA3FF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 3BFEBBE9B8185F65D69A1721 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 3C18AC0F75E68A8601DD8F08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MountedVolumeListChangeDetector.h"; path = "../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h"; sourceTree = "SOURCE_ROOT"; }; 3C1E6F7FBCCAFD6CCDBBB70C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessageCollector.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h"; sourceTree = "SOURCE_ROOT"; }; 3C776A3FADACB361BD4B3D9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorEditor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h"; sourceTree = "SOURCE_ROOT"; }; 3CF67E6BCC6B52EFD6E6A458 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_android_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D0EA5C831C347728313FDFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D2B216A758EEC9EF2D9C7A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D2D6313C0A3397C4839B29B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D2FFA1F349A15621962C064 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D8A83C53BAF22EEEA014D90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 3DA95E7AE1D0DC64AF09EB66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; 3E27B6E7641EFD605545DF18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 3EC73BE7C098A631E5D5107D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CameraDevice.cpp"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 3ED5A2B64359FED05CF309C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; }; 3EF890CB40C6FFCAE055B7B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; 3F2BBE4509B19BFAC929D8DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; }; 3F58D27B17343BF1030AF92A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; 3F8C313EC9C1E6E234108098 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 3FBF109F3AD6DE221EFB1BA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 402BC49CAFCFFF067A88F96A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AudioCDReader.mm"; path = "../../../../modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm"; sourceTree = "SOURCE_ROOT"; }; 408C5E78F7DE038844E18D31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedAppComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 40B485A7CCC441C90EA92FBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; }; 40D267701C8FF75121454D79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; }; 41107A3608BE0848BE2A34FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterChoice.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h"; sourceTree = "SOURCE_ROOT"; }; 4120CBF145DA500C140BC666 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; }; 4140669501152D9FB9A244B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorPlayer.cpp"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp"; sourceTree = "SOURCE_ROOT"; }; 4151602FFED0B1AE7B36CEF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_BluetoothMidiDevicePairingDialogue.mm"; path = "../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm"; sourceTree = "SOURCE_ROOT"; }; 4198EE3311A171C884A5FA9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 4212EA9CE0B9AA4986108D9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; }; 42386AD366F1AD43B6B29364 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; }; 428FA66F7D6FB46A64B438E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; 4290825CEF87C19A113CA9F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 429974B1B4C361F218093A41 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 42DC5D8CEC7445468A96C227 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; }; 436BAE91A167BB6107F261B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; 437B4DC39531BF8DE5A12E02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextDiff.cpp"; path = "../../../../modules/juce_core/text/juce_TextDiff.cpp"; sourceTree = "SOURCE_ROOT"; }; 43B80E11AC5121A2F4B8DD78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 4407A352B303B27AA0B7D579 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 447B5BEAEF972DECD5F5A949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 44879946DE89AF141BE428B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; 44BB5D71E35E65F5209292B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiser.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiser.cpp"; sourceTree = "SOURCE_ROOT"; }; 44F4A9351C2B03F98A0D23E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; 456837CE387595EFF549939B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; }; 46118CBA9C3CD3B354D93B30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; 462F10FC0057AA53CC71472E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_QuickTimeAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 46C5401358EA7CF2D22FFC26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLPixelFormat.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 47091E4F83A415C063855A74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; 475B1787F548E4FB11C63CD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 47817D36A37758981DEDCAAE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; }; 4825D1B0C0AC0FD325F55C29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; 4895DA77962B46806EB0147F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDirectoryScanner.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h"; sourceTree = "SOURCE_ROOT"; }; 48A0FC60EFF6334C161519FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_win32_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 49412C044B88516D9AF59FDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CryptographyDemo.cpp; path = ../../Source/Demos/CryptographyDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 4975DB849F14413317E94609 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; 4983B8B7E3666DCAC1A1644B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FFT.h"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.h"; sourceTree = "SOURCE_ROOT"; }; 49BFC515C915A4AB53EC15C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessageSequence.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h"; sourceTree = "SOURCE_ROOT"; }; 49C275C319B36AC86512E34F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; 49D1B40749401475B52A6F85 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputSource.h"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.h"; sourceTree = "SOURCE_ROOT"; }; 49FCD3BBF372EE7F6F143EA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentMovementWatcher.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp"; sourceTree = "SOURCE_ROOT"; }; 4A2C25FD55809F1489963FC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../../modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; }; 4A4D3CCCDD2C972CA6715014 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; }; 4ABF4B55F979F2A88EB1B331 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToggleButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 4AEA921081036DD4C259B45F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; }; 4AF5BD29C935D0EB7CB0F6AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; }; 4B310AA3DF4F6188B2E6FAF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; 4C13F19ECFF6CA7AB9C801AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BooleanPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 4C66D04A6A5FA514A10AA406 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 4C9033415E05CD39408389AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyPanel.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 4D569839066D92C393F58EB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GraphicsDemo.cpp; path = ../../Source/Demos/GraphicsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 4DB00B418C4F068BC5FC7314 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FontsDemo.cpp; path = ../../Source/Demos/FontsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 4DBE443E8F807D9366309A44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceDemoHeader.h; path = ../../Source/JuceDemoHeader.h; sourceTree = "SOURCE_ROOT"; }; 4E0A9537FFDE89E4B46710CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BlowFish.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp"; sourceTree = "SOURCE_ROOT"; }; 4E49D12CA5C42721F532DCD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; 4E892CB7335853F8FE91B26F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPress.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h"; sourceTree = "SOURCE_ROOT"; }; 4F56EAB8D09665602226930F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; 4F6768F8EF9CB4A34A501966 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 4F9F102E3BEDFE30542BD479 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; 4FE6B5F0E1AC94CFA6BCC19A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 50677353DB2766A800988656 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; }; 50AB15E26F6E4A55B0BE8AE6 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_formats/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 50C099C6D8CA6DBF95B0828D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Viewport.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp"; sourceTree = "SOURCE_ROOT"; }; 50C625257E68C3B8FDAE45A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooserDialogBox.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h"; sourceTree = "SOURCE_ROOT"; }; 50D167857CCBE08F692604BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 5125E77EBA8500EAA778F51F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 512D5182047E0B46E971A13D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; }; 519F11BE9C786A7F9B221BA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NormalisableRange.h"; path = "../../../../modules/juce_core/maths/juce_NormalisableRange.h"; sourceTree = "SOURCE_ROOT"; }; 51DD2ECC1AED271892E87814 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; }; 5232B9F7E62CD5C41C3ABFED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_BluetoothMidiDevicePairingDialogue.mm"; path = "../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm"; sourceTree = "SOURCE_ROOT"; }; 52A95B5754438C999343869A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_VSTPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 52D7400A47B19848EFCB5B51 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WASAPI.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp"; sourceTree = "SOURCE_ROOT"; }; 52E4BE1BCD56D3676C84BEB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MDIDemo.cpp; path = ../../Source/Demos/MDIDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 531D198DE52845A4B641B6B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; 533B6E74A9F84B4D319E2F16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; }; 534098C590927D6768E57ACF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 53AA2F507FD9DE263E43B277 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 541E0CB92DCF5EDA093EDC7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LagrangeInterpolator.h"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h"; sourceTree = "SOURCE_ROOT"; }; 541E4974C73E294DBA415BA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; }; 5434953F55BD35F74D59D980 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; }; 5496F73539DA26FD9C899223 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TimeSliceThread.cpp"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp"; sourceTree = "SOURCE_ROOT"; }; 55273A59F96B3C775EB71FAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../../modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; 554678AFD58E3E3A2B0BE43D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; 556EFB307E14C15D5EA0242D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainWindow.cpp; path = ../../Source/MainWindow.cpp; sourceTree = "SOURCE_ROOT"; }; 5595C04B0C1D8D8EBA119C8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; 55D08920D4992CD0721AA3E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DialogsDemo.cpp; path = ../../Source/Demos/DialogsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 55F9178934DDF31583323625 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 55FBB9F8900F753766A22BE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KnownPluginList.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h"; sourceTree = "SOURCE_ROOT"; }; 560B074FDFF6F94477083076 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; 563167A7234166BE714F2DC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 56416BD4B5AE294F24289057 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CodeEditorDemo.cpp; path = ../../Source/Demos/CodeEditorDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 569187442B514D114A483D29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; 56BCAE594E40E21699F9337E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 56C55F22CADABBA171D41BFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../../modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; 577378064273DA54B9BED3F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 5784E19E01D5B23BDDFFA5AE = {isa = PBXFileReference; lastKnownFileType = file.obj; name = teapot.obj; path = ../../Resources/teapot.obj; sourceTree = "SOURCE_ROOT"; }; 57B7A9C37305D4D7F876344C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; }; 57D6E8A8E8D871EB1DEF6A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 581E68F4E33DBA5837FB7F9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MP3AudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 586A4398FE1B9F7D6104BB70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiRPN.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiRPN.h"; sourceTree = "SOURCE_ROOT"; }; 5897A924018C9D26438796A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../../modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; 58E53BE69281E3105C66FF07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; }; 58EE7977BC7FBB3523A910D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; }; 58F81EC0B3505F092DEBAA30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLGraphicsContext.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 58FB0C4FE674CC5BB7B1DCA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; }; 59810BDD671438F997D32061 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZone.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZone.h"; sourceTree = "SOURCE_ROOT"; }; 599036DC07DB54E446ECA054 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 59E2B82491E344257F84FC40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; 5A3C2298934C0F77CC60D336 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioAppComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 5A73A448137344953ED2BD32 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; 5AB15A508A07934A89398A6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PropertiesDemo.cpp; path = ../../Source/Demos/PropertiesDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 5AB81EDAFED264951169F1B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; 5B0A45CD67D62B0BF9FC22F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B1433D89E82F55DA4D004B1 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 5B466272F3B821BE88BAC205 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_utils.mm"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; 5C2DE230E3197CF04660851E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; }; 5C5F8713DA326B5C6C559767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 5CAED9BFE11E46C835DC9417 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLFrameBuffer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h"; sourceTree = "SOURCE_ROOT"; }; 5CBB1DA4ECE2611DDA81A18C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; }; 5D40332D94747C3190D4CC16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 5D475A368AC24E639B8A3797 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 5D4FE2C580EFC84212CFBFB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; }; 5DA9EA3E74C2AB870EC9CACB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; }; 5E69510D460EEB7754976CC8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLAppComponent.h"; path = "../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5E9F335E274427A81514A20C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 5F3E8B08EE74B0023DA176B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FAB9E7F62B84DBAA98A0004 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; 5FB5AE3F2ECCD8AC1A49CA18 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 5FC58B5FBBBB09878E3F2230 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPDecompressorInputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FCCFCEE3F6C4C51BB581572 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FD5503AB0E161315DD5CD70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UndoManager.cpp"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 607FA0800596585429F6C22B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Primes.h"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.h"; sourceTree = "SOURCE_ROOT"; }; 60849B046145D3BACDFA6A84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WindowsMediaAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 60B755F5684959E78C556810 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Misc.cpp"; path = "../../../../modules/juce_core/native/juce_android_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; 60BCBC74A3C12630E82631DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6141692AC9282411091C8157 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../../modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; 6163B3DFD893F55523113A40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; 61F28F9E82D39EFF702793D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDReader.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h"; sourceTree = "SOURCE_ROOT"; }; 6209255CD43AA4EDC1C955DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; 6257CEA3C6EADCB94E25010F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLFrameBuffer.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; 62D20AFF94117B99556BF56C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 62F9B202D524E33A2843ED84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; 6308DABB4145FBD330B7DA5A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Quaternion.h"; path = "../../../../modules/juce_opengl/geometry/juce_Quaternion.h"; sourceTree = "SOURCE_ROOT"; }; 631FD2CAE69A3D5DD8C2E1B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorValueTreeState.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp"; sourceTree = "SOURCE_ROOT"; }; 63AC834818EFF45708101F9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; 63BB4EB9347AF60049BEEC1E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTree.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.cpp"; sourceTree = "SOURCE_ROOT"; }; 63D09BD18653F6A0134C8195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatManager.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 64E7D43C4F4037CFC2C5E2AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ComponentTransformsDemo.cpp; path = ../../Source/Demos/ComponentTransformsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 64F04FAD3BAAEE3D0BA279B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceManager.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 651D48BCCD81AC8B5BC3AAA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CharacterFunctions.cpp"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.cpp"; sourceTree = "SOURCE_ROOT"; }; 65DA0DAA8BDCE57A54C1CF26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserBase.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h"; sourceTree = "SOURCE_ROOT"; }; 6645C09E7FCFF0E498C3C400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioChannelSet.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioChannelSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 66C5D2F0D9B9ABA7F4A386E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; }; 66D5FD22DF1550A6CC9ABDA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; }; 66F8C7EB6520AB9439433DF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEInstrument.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp"; sourceTree = "SOURCE_ROOT"; }; 67541565521633071C03BD35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; 6808473BBCC2E4D8E2CA0E71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 68AD6A94C88A46A483B823E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiBuffer.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h"; sourceTree = "SOURCE_ROOT"; }; 69249A7E30512BBF13CB8A09 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; 6940E5FE7BC1ED1BB2258886 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 6976B92D19F4FA1BA89A8922 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; }; 69CC80F5871F1AA06689E3BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; 6A299D9BED7D078CB2F1C007 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; }; 6A3315B465362CD3AF66D306 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; 6A4AE0C59C1210D28A8C8AF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6A643B44198DCE6FFE057E9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBoundsConstrainer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp"; sourceTree = "SOURCE_ROOT"; }; 6A6A22EF81805BE907DB5DA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 6ACBD7C68EE20A8E8C5CC1AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_graphics.h"; path = "../../../../modules/juce_graphics/juce_graphics.h"; sourceTree = "SOURCE_ROOT"; }; 6B1FEA349A6C8F51AB27E23C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../../modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; }; 6B3772278F9398D0AC7CE250 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Javascript.cpp"; path = "../../../../modules/juce_core/javascript/juce_Javascript.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B4AF4E4BE36B99E00BFE839 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LuaCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B67DE0FF4487B060DCF31E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; }; 6B83E4AE241F0EAC9574923D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; }; 6BA2D0C9FB49A5C3E0554000 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLTexture.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp"; sourceTree = "SOURCE_ROOT"; }; 6BD1D463E40A463C69C065C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_processors.h"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.h"; sourceTree = "SOURCE_ROOT"; }; 6BDAB94A88B565A734534368 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; 6BEA46E3C64DD2FD8946CD35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlElement.h"; path = "../../../../modules/juce_core/xml/juce_XmlElement.h"; sourceTree = "SOURCE_ROOT"; }; 6C52D68EDEA2D7ECA4CCC2BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 6C57333FC4ACEBC7C451A414 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsMediaAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 6CF95925EA874CFABAF7C284 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 6DDDB822BBF3D557CA7AB427 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; }; 6E125672C42D84CCD54F9B0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KnownPluginList.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp"; sourceTree = "SOURCE_ROOT"; }; 6E176584A871F8C956918182 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseEvent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h"; sourceTree = "SOURCE_ROOT"; }; 6E386DC2F80B9C90264AB60E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEMessages.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.cpp"; sourceTree = "SOURCE_ROOT"; }; 6E522E47999DB582BA4DA5B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; 6E98E22310F8BBEAC48EE55A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 6E9BFA2B6260E09B2B3948E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageManager.h"; path = "../../../../modules/juce_events/messages/juce_MessageManager.h"; sourceTree = "SOURCE_ROOT"; }; 6EA8B0940C4486B9F03BA19C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../../modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; }; 6EBA81213324106593EF5DF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; }; 6F2A90834846C810CCD39DF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"; sourceTree = "SOURCE_ROOT"; }; 6F5B9777B802707C4A747E46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 70276A64A50E5B56492853DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; 703C1FBF6632A8078BBE05AC = {isa = PBXFileReference; lastKnownFileType = file.wav; name = cello.wav; path = ../../Resources/cello.wav; sourceTree = "SOURCE_ROOT"; }; 70A5CABA464ECFC6A8449A87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioIODeviceType.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp"; sourceTree = "SOURCE_ROOT"; }; 70F33D8D2F48D64188861C6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemClipboard.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h"; sourceTree = "SOURCE_ROOT"; }; 71E5E55D76D83B711B6263C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CoreAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 720C3CA9E28181C76434D465 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; }; 7286D6380C74734603D098EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; }; 728E67FDBD3660742A33C7B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7319ADBC735F957219774263 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; }; 73267FE8DDE50FD1E6E31ED4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; 7338D006521EDC5C10EEF974 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 734C43C3F7918061F2DDD214 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; }; 73CF65298983B8CDC1CD84AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; 73E0383F94E38E30C2CE0F5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../../modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 73E670E23A2523F7A1B14775 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../../modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; }; 73EC10FBCA420227E5A145F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; 73F0F1FA09AE9F7308AFCC3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CaretComponent.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7416BF201FBFE7F978FD774A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; }; 74BE52ADFCAEFACF704E1269 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; 74CEBA45E0A8ECA5CFA9BEF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; }; 74D283E02B3A2A293678FF9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectSound.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp"; sourceTree = "SOURCE_ROOT"; }; 753D9A91CFBFAA027F828C02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 754710498EE8C41F085A2B11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathIterator.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; 764F36E2597540348F960404 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; }; 76B8E770835968F565292D1E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 77179735C0CB2D89D9C61466 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../Resources/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 7761FFBFAC88B7157D65EE1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinkedListPointer.h"; path = "../../../../modules/juce_core/containers/juce_LinkedListPointer.h"; sourceTree = "SOURCE_ROOT"; }; 77BD025036C8B02426E61C79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; }; 77D7DE86E82C779B3DAA8678 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLPixelFormat.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h"; sourceTree = "SOURCE_ROOT"; }; 7828AF42E3C857F520EABDD7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageSequence.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp"; sourceTree = "SOURCE_ROOT"; }; 786CF1CA66289DB77845F8E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_opengl.mm"; path = "../../../../modules/juce_opengl/juce_opengl.mm"; sourceTree = "SOURCE_ROOT"; }; 7890AB8CBF31F9788E10DBD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentAnimator.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp"; sourceTree = "SOURCE_ROOT"; }; 78979AFF44F164451516C986 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; 78B172DD2AAFE3535D0460C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResamplingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 78DAC3299488E0CC70EDB206 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedXLock.h"; path = "../../../../modules/juce_events/native/juce_ScopedXLock.h"; sourceTree = "SOURCE_ROOT"; }; 791B204F13E056DA2644175D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; }; 79C8D0C6D1444EAB781C46F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7AD412430D3AEB0468089AF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; 7AF9EF500482C84F02849647 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPENote.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.h"; sourceTree = "SOURCE_ROOT"; }; 7B5560AEA0CB3E507C16140C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7B81083FC4CCD2D096D93162 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; }; 7B83011366B95CC61212E5D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7BBD4B2D9A9EF13CE4357979 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 7BD4AC17C70E6771254B962A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; }; 7BE8C42578F5E2E59D63F615 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; }; 7C70EC5AB0A3B9B14C0C0F05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C7FF651870B180BABD63D9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C8C5464933F6E34CF33578B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 7CDA22D66C8FEDF1B644D041 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; 7D2013E3BCFFD5A65D970BBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7D7A6251E976BF292861510F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToneGeneratorAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 7DA062415E40E3BEC0B847FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; 7DA9D4E06E9B9875EC3880AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7DB8F4BB2B4884803207417F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiFile.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.h"; sourceTree = "SOURCE_ROOT"; }; 7DBF83B26277D13CB3FC1479 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ImagesDemo.cpp; path = ../../Source/Demos/ImagesDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 7DD8FCFA80D230B432ECD149 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 7DE074DF0D3074275DBBF9B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; }; 7E847EBFB83896EA08975F8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReverbAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 7F2A233FFE5CDB2681F0DC28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiBuffer.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7F7EAF366320BA71741B68C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; 7FC3D3D142D1B4398D07FFC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 80202384D81020DAE2072A1A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; }; 806A7A3BFC684B4D9E25ABDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_devices.h"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.h"; sourceTree = "SOURCE_ROOT"; }; 807F5EE489018BC1956AAD5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Sampler.cpp"; path = "../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp"; sourceTree = "SOURCE_ROOT"; }; 80A57920E6EA9C2E881BC3E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MACAddress.cpp"; path = "../../../../modules/juce_core/network/juce_MACAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; 80E5245755DC2ECC4C6BABD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; 810292CC81EC98F57F64D79B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLImage.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp"; sourceTree = "SOURCE_ROOT"; }; 8139DFF71A397BB4FC1C4413 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; }; 81516145E8F737D290135758 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; 818729A3311F3A7B8DB03764 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPressMappingSet.h"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h"; sourceTree = "SOURCE_ROOT"; }; 81D03597CE85238988E0F45D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; }; 824822F2A6A539B2D797DE23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_core.h"; path = "../../../../modules/juce_core/juce_core.h"; sourceTree = "SOURCE_ROOT"; }; 825690E8512078D4F8595CCD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 82AABF91CB005E5463F1D522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeRectangle.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 82CDD7D8E38202F102788090 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 830A4891F6838B2A60C54C8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 8329E2A86DF3E781B790F128 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedButtonBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h"; sourceTree = "SOURCE_ROOT"; }; 8366D5DB3CBA57E06C1D896C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLGraphicsContext.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 8396EA11DD261260F1A96DF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LADSPAPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 8413B0A6941430B8CEE7A573 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioRecordingDemo.cpp; path = ../../Source/Demos/AudioRecordingDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 842FE973E11AAEF49D77AFE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; 8430FB57248237DDAD4CE4AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 8452076B5EAE822DD445458F = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 84BAF97675BE522B63DC9A4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SystemInfoDemo.cpp; path = ../../Source/Demos/SystemInfoDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 851BE5F4B476FCC76DF56FEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlacAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 857CE7D1DC614FCDD19F617D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 85D328C928A4CD6A1AEAB644 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 869FEB02E31658BD16664F1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Whirlpool.h"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h"; sourceTree = "SOURCE_ROOT"; }; 86BFE5D66623DB207CEA3F9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 8717F2B47F51F0473C041760 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; 872C4AF5B81B1664032594A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginDescription.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp"; sourceTree = "SOURCE_ROOT"; }; 877B42968286AAD56527516A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooser.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h"; sourceTree = "SOURCE_ROOT"; }; 8838FC2F76E6D775B2E75F23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 885A0F1B41FFAF32ADC70925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colour.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colour.cpp"; sourceTree = "SOURCE_ROOT"; }; 88A8F1D957ED293712DE0E23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; 88D689399C7F69D687208673 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../../modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; }; 88E9F6A65110F4753E115FF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; }; 891BBF2E19D80372FA886E62 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_File.h"; path = "../../../../modules/juce_core/files/juce_File.h"; sourceTree = "SOURCE_ROOT"; }; 89C47678AF8B46702EC0EE66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_utils.h"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.h"; sourceTree = "SOURCE_ROOT"; }; 89FD2460344D6B0FF04F70D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorGraph.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h"; sourceTree = "SOURCE_ROOT"; }; 8A89A7C0DEC85C7773251B15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 8A8CA6C781EFD5F0997E7507 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; }; 8AE56D2F4E33B015C3D73EB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTMidiEventList.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"; sourceTree = "SOURCE_ROOT"; }; 8AF04828A59F79DF2FD31E9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; }; 8BB3867A9236FF57B46581A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BDC3161654344162ECDCB32 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemStats.cpp"; path = "../../../../modules/juce_core/system/juce_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BFDB525631BDAD3A71CB307 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; 8C4D0CE8E6E62BDD83F4432E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEValue.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp"; sourceTree = "SOURCE_ROOT"; }; 8D121C4BCB6A36684EC59FB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MD5.h"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.h"; sourceTree = "SOURCE_ROOT"; }; 8D3B18C8A23499AB88F6B700 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; 8D437AEAA6F7E3F0DCA43E8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPool.cpp"; path = "../../../../modules/juce_core/text/juce_StringPool.cpp"; sourceTree = "SOURCE_ROOT"; }; 8D70A7277DDD7B7974E9F178 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; 8D7BDA5CDDCCD2F7BE67037A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 8DA438AAAFBC64C11DE329B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; 8DDCA7803625CF8DA817326A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; 8DDE64B4A0EF76038498B47D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; 8E1CA5F01D04FA8F6CCFF91B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; }; 8E87696FD85E6134968D4341 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 8EF11A0D1370915CA7AF4F64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Vector3D.h"; path = "../../../../modules/juce_opengl/geometry/juce_Vector3D.h"; sourceTree = "SOURCE_ROOT"; }; 8F61AE043AEF6DCD47A36787 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MP3AudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 8F7D5E59BEB35E858363B752 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 8F8DD95844D647749BA662B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Primes.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.cpp"; sourceTree = "SOURCE_ROOT"; }; 8FA3BF005120A8BF8DD1BB80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 8FDA4FBF31997AEBF3AE10E4 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 9053A4532020825D924EFB35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 905A87EA32A249ABFD0A90AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; 9079FD325609A4E67E44F3ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_events.mm"; path = "../../../../modules/juce_events/juce_events.mm"; sourceTree = "SOURCE_ROOT"; }; 912E1A63093C3FA3BD2AFE61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; }; 91F4E52A1B31FB5998FEF665 = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = "SOURCE_ROOT"; }; 9200669E9DB4FE676A07CD77 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 9297F74907620178A1EB41DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ChildProcessDemo.cpp; path = ../../Source/Demos/ChildProcessDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 92D3CD3845968E4FAB93576D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LiveConstantDemo.cpp; path = ../../Source/Demos/LiveConstantDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 9327D6AA8805BE7AD971D68C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; }; 937A2E7B951F5D527DF54245 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; 93B3667FE4186CD75426EA53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertiesFile.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h"; sourceTree = "SOURCE_ROOT"; }; 945E090A8DE2E776F7033143 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 9461C1D2300CC3A91EC2D169 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; }; 94D8CEE59AC2644453705A74 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 94EC001CF772AFBA6D95F922 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLHelpers.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; 94F15602279A81777504F22C = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 95227EEF8BCCAD5E1840DB48 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameterWithID.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h"; sourceTree = "SOURCE_ROOT"; }; 95568D274244E02150C7F417 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V1.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h"; sourceTree = "SOURCE_ROOT"; }; 9617B3B5FA9439D342F23ADC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationDemo.cpp; path = ../../Source/Demos/AnimationDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 96F43E8EB364D3E40689D368 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormatManager.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; 9750423DB3DB6570382DA3C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Headers.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h"; sourceTree = "SOURCE_ROOT"; }; 97C3A2B9575153E4CA0537B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectShowComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_DirectShowComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 9895036432E9AE55EE16323F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_video.mm"; path = "../../../../modules/juce_video/juce_video.mm"; sourceTree = "SOURCE_ROOT"; }; 989CD2B68A4EF90456E19ED9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarComponent.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h"; sourceTree = "SOURCE_ROOT"; }; 98D55DE4706A31BCD28458C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 9918F60F5CC834C782543712 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; 991F4C3B42036B549C321789 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; }; 99E8C71CC462DDDBC52D360C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; }; 9A4190B5B7E788B732637F2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 9A60BF3F27FD10A058F4E956 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; 9A895B323AC3DDD249D99CB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; 9ADA045A14202C9CF4F8CD40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BorderSize.h"; path = "../../../../modules/juce_graphics/geometry/juce_BorderSize.h"; sourceTree = "SOURCE_ROOT"; }; 9B089D1649E4B5BC8AF63EC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WavAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B37E4C205A31B36B559E613 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDemo.cpp; path = ../../Source/Demos/VideoDemo.cpp; sourceTree = "SOURCE_ROOT"; }; 9B9E034C5761096ACB8A76C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_VST3PluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B9F578EC77AA988C919AC6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputSource.cpp"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 9BAE20FD7E2CBA120DDA82B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 9C734938D5FF5DA7827C74C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseCursor.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp"; sourceTree = "SOURCE_ROOT"; }; 9CA3071EC654EB7FFEC70736 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainWindow.h; path = ../../Source/MainWindow.h; sourceTree = "SOURCE_ROOT"; }; 9CC0810F5BAF70D00033FD22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadPool.cpp"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.cpp"; sourceTree = "SOURCE_ROOT"; }; 9CDE3A30398FB033E5AE8498 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; 9CED8F32B3718A90481EEDE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferedInputStream.h"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 9D0B40C4BF8FD939C33E3D59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; 9D17E29319340B927D1BC51D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AudioCDBurner.mm"; path = "../../../../modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm"; sourceTree = "SOURCE_ROOT"; }; 9E14C2C627D2F7B3C817468E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 9EB2AE5A72227301C365568F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 9EB305226A801CB7012884F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_freetype_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 9F75FFB61C74FEECE61A7138 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MultithreadingDemo.cpp; path = ../../Source/Demos/MultithreadingDemo.cpp; sourceTree = "SOURCE_ROOT"; }; A04410519258755461444678 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; }; A1244D54910A10100ECF8EE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A166FEC488A2EE5290FF0722 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HyperlinkButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h"; sourceTree = "SOURCE_ROOT"; }; A169179FE554C215416FCD7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; A1A8D19C2E587194909B2913 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; A1EFF3DBE5F7B0C07AE59D7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; A1F10BB1A2745DC95DDDE0D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLContext.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp"; sourceTree = "SOURCE_ROOT"; }; A22726A53515D845743DFF84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; }; A235B5113FB4E5DA6267975F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; A2EBD42F94D37FFF10F25985 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyListener.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h"; sourceTree = "SOURCE_ROOT"; }; A2F0B85560090CFAC7D95132 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; A2F403F649AC0AA7CA47EF65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; A3BDCE78A0AE63BEA0DDE600 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; A3D5134838BA1CEAF4284E9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; }; A464874D0B8C63AA78C937B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; }; A4A64EF73E28AFFBD826AD60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; A4A7D4C4EF2A24F743D107B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioThumbnail.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp"; sourceTree = "SOURCE_ROOT"; }; A507AD139DCC0A43765C1FE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; A539F7B46DD001B3BF03B16F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageCollector.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp"; sourceTree = "SOURCE_ROOT"; }; A6285ED9A26A9DA0A2931910 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A62BF9AB6EB0496F5BCE78B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; A631CD93C2809211DD926938 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePoint.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp"; sourceTree = "SOURCE_ROOT"; }; A687283C2BEC2595A10EEE1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; A6BC854E7C5B932911B2AFF2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; A6EE2D5A258294BAC600F75B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; A6FADD9A009BA1F1D36239FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LADSPAPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; A73DB3E8639A4D39F9F9C50E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; }; A74BFBD7C3C18103B51F6342 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; A763B4ADDB7BDD941FFE51CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; A8243EDBF34E3E3D4338D6F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; A83559E2258B5856CFD68EAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; A83639AF2210589E5367ABCF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = UnitTestsDemo.cpp; path = ../../Source/Demos/UnitTestsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; A8878B1B86367E161868E49E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlacAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; A88B3DDBD1939456E225E36E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; A90C7FF8F98D21494524B726 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioAppComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; A90EA62A0A4A1B5E62CF0BE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; A966B620E1FB219BD4A4F3D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A99853D3CB536CFDB6C91F98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; A9BA8E7E434AC82F4604C773 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODeviceType.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"; sourceTree = "SOURCE_ROOT"; }; AA920A77D326B0F5E53F567F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; }; AA967AC6E8FDCD7502272DA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; AAC68E522F44DA7AD25574C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioTransportSource.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h"; sourceTree = "SOURCE_ROOT"; }; AAEBF0976E57F4756E4AE31E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; AB3C484314062E809AC41132 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLAppComponent.cpp"; path = "../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; AB589E1E7EC83EA620B7F780 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileLogger.cpp"; path = "../../../../modules/juce_core/logging/juce_FileLogger.cpp"; sourceTree = "SOURCE_ROOT"; }; AB92BC8961EE90E0F23FD6C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceSelectorComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h"; sourceTree = "SOURCE_ROOT"; }; ABDFE5D85E6ED3CBB8AE1F50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; }; AC043128E8D43D6EA4E29824 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; AC25983CE9B938D1DB002A98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLTexture.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h"; sourceTree = "SOURCE_ROOT"; }; AC3132AD4826E77E807ACD3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; AC3600881A53014EFC1CB8D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditorKeyMapper.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h"; sourceTree = "SOURCE_ROOT"; }; AC70FAD27248857B6D16BD33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioSynthesiserDemo.cpp; path = ../../Source/Demos/AudioSynthesiserDemo.cpp; sourceTree = "SOURCE_ROOT"; }; AC7A214BA7B1A172F5B31735 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPairArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringPairArray.cpp"; sourceTree = "SOURCE_ROOT"; }; ACDD5519D82FDB831085B8B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; AD33778491D50853BFFED9E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; AD55906C5D8552E842C98EDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WindowsDemo.cpp; path = ../../Source/Demos/WindowsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; AD593F766DC27414A94FABEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; }; ADDA92448B0EC5EC1C6D5A2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ElementComparator.h"; path = "../../../../modules/juce_core/containers/juce_ElementComparator.h"; sourceTree = "SOURCE_ROOT"; }; AE68B9AA74EE6F138B3E0B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; }; AEF26EF11BEBA847F152A1D5 = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = "SOURCE_ROOT"; }; AF396B7AE1BE00099A19D191 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; }; AF98F62B0DD92F26D0018A98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; }; B0287B0EE6C4EE20EBF95FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEValue.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.h"; sourceTree = "SOURCE_ROOT"; }; B033B7729D2D204BBD71BDD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; }; B0DA13336DA07392C689323C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; B10A9A3B4A4C2507F514D5F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; B13A8EA6840489EB88D77800 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OggVorbisAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; B17EF578E9B736B1C5A5E8BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; B1C05A8D59655916054612D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LiveConstantEditor.h"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h"; sourceTree = "SOURCE_ROOT"; }; B27A7B237782F9E15E4BF8D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; B2BD3F284DBA9EDFFF80ECE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; }; B2C11FB8D4762ABB6CB9B934 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Common.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h"; sourceTree = "SOURCE_ROOT"; }; B305C104F5A573E8AFEFA763 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormat.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; B341BC1AD30CCDDAD967EB0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Synthesiser.h"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"; sourceTree = "SOURCE_ROOT"; }; B3569FEFF39695CCD1E060AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; B36D9787DD79D0DED8D791F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B37E6323D9D3C3CA68672D6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; B3976635944EC69837499F9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; B3BF13E52ED6443A85AF0230 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEMessages.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h"; sourceTree = "SOURCE_ROOT"; }; B3E2A6A5C59E1462DF544A06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B44CC152D6454AF6F16E9EF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; B51567633F44A10D4543B219 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Reverb.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Reverb.h"; sourceTree = "SOURCE_ROOT"; }; B56F4C53187D40137670DB1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableObjectResizer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h"; sourceTree = "SOURCE_ROOT"; }; B589CF5248A17A319E5EC80D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B59B0121C46D4A2B9EC3BBFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPool.h"; path = "../../../../modules/juce_core/text/juce_StringPool.h"; sourceTree = "SOURCE_ROOT"; }; B63933880C456903722F46A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; B66D06DC55FFC2B99D43F4E2 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_utils/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; B680E1C22A5885A8336D8DA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; B6874BAE87F275944C07B498 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_video.h"; path = "../../../../modules/juce_video/juce_video.h"; sourceTree = "SOURCE_ROOT"; }; B688441D29BB51A9C4E83CFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp"; sourceTree = "SOURCE_ROOT"; }; B6B6519216FF4413B698C889 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTreeSynchroniser.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp"; sourceTree = "SOURCE_ROOT"; }; B6EFD8D461F7BC1CA4954B69 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_extra/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; B731664FB9EEEBC618BAB5A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TimersAndEventsDemo.cpp; path = ../../Source/Demos/TimersAndEventsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; B745680D019FDB64D3A65508 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; B7AE6C1C50421EE6E02045DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; }; B84A6E341207FA1F60EB5AF1 = {isa = PBXFileReference; lastKnownFileType = image.png; name = "juce_icon.png"; path = "../../Resources/juce_icon.png"; sourceTree = "SOURCE_ROOT"; }; B8BDAFE861AD60BEC44D7ED5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; B8D4B6843E55CC07167085AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; }; B8F25B3AB59A577E53304AC0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; B97B2C0C6A4322FFAACE1C39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; B9A524CB6B0598E4D7F7DD93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailBase.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h"; sourceTree = "SOURCE_ROOT"; }; B9D26C6C4CED62E6708B6865 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; BA008864E9E4F195E61A21F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinearSmoothedValue.h"; path = "../../../../modules/juce_audio_basics/effects/juce_LinearSmoothedValue.h"; sourceTree = "SOURCE_ROOT"; }; BA5A007216A3E496509D5CE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; }; BAC70BABB531B634736585A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; BADD02151C3951E4853DA06D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BigInteger.cpp"; path = "../../../../modules/juce_core/maths/juce_BigInteger.cpp"; sourceTree = "SOURCE_ROOT"; }; BB29289B196047505CF5EE6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; BBC3C77A4D771DFCCB08B874 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileFilter.h"; path = "../../../../modules/juce_core/files/juce_FileFilter.h"; sourceTree = "SOURCE_ROOT"; }; BC2E34C0883EB362398AC448 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; BC30642EEF908E1C7757690B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; BCACFA5E8370800EB6487CC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; }; BD14CA532122022C26920DF8 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_devices/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; BDDD1C149C23BCA4F501BEF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; BE260594789CF43E1A4EF4E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; BE9B3F83B6037C848596286B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"; sourceTree = "SOURCE_ROOT"; }; BF2CAEB6EC641789133B627E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageFileFormat.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; BF3AF2E3B0D2184B766E1B26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ASIO.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp"; sourceTree = "SOURCE_ROOT"; }; BF6E19C2CA2032242B7A2556 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; BF7EE64D6E337BED36814439 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPENote.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp"; sourceTree = "SOURCE_ROOT"; }; BFC3C3EBCDDABF1529A317FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; }; BFCAF7A5D017D3BC4CD51D60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; }; BFE7C09CA4AFAC973C267D11 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_core/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; BFEEC370F9DAD159E5789EB9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../../modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; }; C006CE2DED5AB537B5C3FD5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; C054B94424A80B5DCA6CC52F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GenericAudioProcessorEditor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h"; sourceTree = "SOURCE_ROOT"; }; C06F64DF6D95D5C9C8B2D5F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; C0918662F3E28570DF17B041 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; C09840AD421A11A244964AB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; C0A9EF3D27D21B307649111B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Box2DRenderer.cpp"; path = "../../../../modules/juce_box2d/utils/juce_Box2DRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; C0C8D6D7D14DFAFB169FFDCF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ValueTreesDemo.cpp; path = ../../Source/Demos/ValueTreesDemo.cpp; sourceTree = "SOURCE_ROOT"; }; C0F898298ABF2458D6C5AF17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; }; C1CBC5B338453DA492698C3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; C20FD8D605E6714D473D5C9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; C2FFDDA61218A94403D5FE56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; C411A91DC3B306E2C417F1BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; }; C416D60EFF7F25E0080A94D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C43CFE8A48F03CCBCAE08D24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Box2DRenderer.h"; path = "../../../../modules/juce_box2d/utils/juce_Box2DRenderer.h"; sourceTree = "SOURCE_ROOT"; }; C47BAAAD3DF91B17A7787941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; }; C4B8D5FC3E906DA9F6A4379E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Network.mm"; path = "../../../../modules/juce_core/native/juce_mac_Network.mm"; sourceTree = "SOURCE_ROOT"; }; C4CE4565F5D41303888F6A59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_QuickTimeMovieComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C4E873C0CD6E9C76EA2997C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; }; C509F69A37C9A9053D6E9546 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; C549EFF977C210EB398C9A33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../../modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; }; C5A932A82042E2DAEBE1C302 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; C60CE259EE4CFE6AC61044FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; }; C68A1D6B6EAA0B70553FF6D3 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; C6D9D6E03D4B740DDF9B3C57 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; C7026BE1C751908FEA9E5AAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; C7089BDB2F572546643160C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AlertWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; C77F148F8E8E9F805D730386 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; C784392363846286D29F207F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationBase.h"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.h"; sourceTree = "SOURCE_ROOT"; }; C7A943716B2FD728EFAC84D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; C7C8C7D58A08D1583E0C2E6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; }; C812CDED0B089FD1B76FC9EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioLiveScrollingDisplay.h; path = ../../Source/Demos/AudioLiveScrollingDisplay.h; sourceTree = "SOURCE_ROOT"; }; C8A42EE493A1DF2E283C245E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; C8CABD53634D53E64132CAAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CameraDevice.mm"; path = "../../../../modules/juce_video/native/juce_mac_CameraDevice.mm"; sourceTree = "SOURCE_ROOT"; }; C8E3220EC4F4E4242CD3026D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; C92A35B9676A81157B54284A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; C993FAEDCEE0A33CAB42F995 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Box2DDemo.cpp; path = ../../Source/Demos/Box2DDemo.cpp; sourceTree = "SOURCE_ROOT"; }; C9C1FC1B4628557AE5C7E7ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; C9DA15073F3BF252BAFF9D69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LAMEEncoderAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; C9DAF05F2DAF78159647512B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; }; CA0E3166C77EB91555893286 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; }; CAD3749B6A5BDB2BB00D3498 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandTarget.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp"; sourceTree = "SOURCE_ROOT"; }; CAD598C03B7C93B4AF912E66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; }; CBDC7CC5CE4132A5D63B583F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FloatVectorOperations.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp"; sourceTree = "SOURCE_ROOT"; }; CC5F6FD5F339E1811037EABE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; CC79B254C68555B4FFEBC692 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Random.cpp"; path = "../../../../modules/juce_core/maths/juce_Random.cpp"; sourceTree = "SOURCE_ROOT"; }; CCD2ED6F6F3ABCC172DC4957 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; }; CCEC8F9385AE939B24D27954 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = JavaScript.cpp; path = ../../Source/Demos/JavaScript.cpp; sourceTree = "SOURCE_ROOT"; }; CD8B9E60EFE0A0ED368EE3D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; }; CD9B8C96642C7F691FCB3EC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; CDB41763FDE907C3C0E75374 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; CE045161909A4EADCE49629F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; }; CE276E0CAE722EA80F7985BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; }; CE7D4E7030BF4BB4B1093B5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; }; CE89334A964AFF33758CBDEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_QuickTimeMovieComponent.mm"; path = "../../../../modules/juce_video/native/juce_mac_QuickTimeMovieComponent.mm"; sourceTree = "SOURCE_ROOT"; }; CF1DA3CB41AA43B349D3A6B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterBool.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h"; sourceTree = "SOURCE_ROOT"; }; CF626DE27EB763C9BCFD4F15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; }; CF7CEC8C260AC623C222264C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; D04960564D2860B19FA5D1CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Sampler.h"; path = "../../../../modules/juce_audio_formats/sampler/juce_Sampler.h"; sourceTree = "SOURCE_ROOT"; }; D057633F8F7684AB7B4B28AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; }; D0736DBF1DA74CBA695DE54C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZoneLayout.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h"; sourceTree = "SOURCE_ROOT"; }; D0A84ED14FC2F7A143679258 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; }; D0ADA33F00B3BD83C1D5AE37 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; }; D100B2EDF88F2C019E4D2311 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; D1D8A53A7614F106942DADED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; }; D1E31AC47CCAB97418EB646D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioUnitPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; D3A84810AE56991562B6F252 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDiff.h"; path = "../../../../modules/juce_core/text/juce_TextDiff.h"; sourceTree = "SOURCE_ROOT"; }; D3D86F3CDD057C174A16E382 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Font.h"; path = "../../../../modules/juce_graphics/fonts/juce_Font.h"; sourceTree = "SOURCE_ROOT"; }; D400C8DFE9DA635FDDBF57BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../../modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; }; D45AD25E5AC67424EAE5A85F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D574F24273E747525891B11C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; D5942A1C95986841CA286736 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; D5C59D717CF1C0F15164AD43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; }; D61BA88D3AC9556266FE4368 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; }; D6238E383F396236E3A4C054 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; D65129253734C1917354C08E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPCompressorOutputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; D6AB846628BE74C5349C95CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLContext.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h"; sourceTree = "SOURCE_ROOT"; }; D6B8E586D30632EA07C48D6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LocalisedStrings.cpp"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.cpp"; sourceTree = "SOURCE_ROOT"; }; D74B19291F4B0370A2742A63 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; D767A88B0BC208DECCC1AA3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; D7A951371F530DA0A350AF44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; }; D7B1BBA8FE789A80E86CEA03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; D7D048CFDB58B67E9BAB7448 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserVoice.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h"; sourceTree = "SOURCE_ROOT"; }; D80487E6482EB12BF2C6BD22 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; D807B4138306397F8A93FA16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioVisualiserComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h"; sourceTree = "SOURCE_ROOT"; }; D8AE63002C7273F98226394B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; D8DFE1C66668C30215288BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInactivityDetector.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp"; sourceTree = "SOURCE_ROOT"; }; D8EB3FEADD047C7AEFF9C8C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LuaCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; D93CE990D75211F4A5EBB4F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; D94C07E10FC25EE303D64992 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; D999C4C8DE51CDFB861B863D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; D99C0F89D572BBF219A7B991 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; }; D9AAC6516BAD4F5BAE9CF297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; D9DFC1CE9A4EF9230B49D697 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDescription.h"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h"; sourceTree = "SOURCE_ROOT"; }; DA78B13D87626C49A2140FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; }; DAACF5AFA6B6994384BA4984 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; DADF2C478777BA8EEBB55CDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; }; DAF2C8E641253779B6DFF139 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; }; DAFB19E49A6221854341BE2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; DB748B0D9227F5345683CF7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; DB8FAF091C9E78AE5F64701F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; DC0AE99EFE4F88987CA2F705 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; }; DC6930EE56EEA5221CFECAB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatManager.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; DD24BAA1E8104B6D3554A222 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = XMLandJSONDemo.cpp; path = ../../Source/Demos/XMLandJSONDemo.cpp; sourceTree = "SOURCE_ROOT"; }; DD4A812225F47E590FCF2E29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; DD5F4BFEA497212883A869A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; DDDB707A59DB489D195BF99D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; }; DDF02BD16454102C353FCD18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; DE3BEA732CBC57AE71E94159 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; }; DE534A5A2D3B48BFBCE598B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; DEB0E2F28130100B1EFD250E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; DEE5EFE8148FD2DC743A7DD7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LookAndFeelDemo.cpp; path = ../../Source/Demos/LookAndFeelDemo.cpp; sourceTree = "SOURCE_ROOT"; }; DEFD6AD8B2BBA57017DB4A13 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_box2d/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; DF9B26660FAF5ECF2EF620B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; }; E04EC9F05219CEEB4469A437 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiOutput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h"; sourceTree = "SOURCE_ROOT"; }; E0565A19E2589729259C7116 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLRenderer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h"; sourceTree = "SOURCE_ROOT"; }; E0B8277ABF9DDAC8C12DE26D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MixerAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; E0DB91A472A77866258D12B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; }; E1107017C2BF7ECC847DF01A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorPlayer.h"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h"; sourceTree = "SOURCE_ROOT"; }; E199DDD8F06741F21D8F9CFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; }; E2127416236840EE3AF32D5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormatManager.cpp"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; E23EDF80FD5320232483D80F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; }; E243FC2BD3446D9518049538 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_events/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; E2C5C95247FDECA4C39F1415 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; E30009C6743474CD6195F5F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; }; E31FB2C8B34A146D28A4C611 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedAudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; E32D1C481161F063918F76AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; E3415348D45BF63A7CE8CF6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginInstance.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"; sourceTree = "SOURCE_ROOT"; }; E34DFFF51D0F7C34FB826C4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FloatVectorOperations.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h"; sourceTree = "SOURCE_ROOT"; }; E3DC9C2BBC81EC0B035AA32C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BluetoothMidiDevicePairingDialogue.h"; path = "../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h"; sourceTree = "SOURCE_ROOT"; }; E3E3CD4660C20BE120E8BB1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilenameComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h"; sourceTree = "SOURCE_ROOT"; }; E41A387D233A436131D7910E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; }; E4369FFC0E1A6547580D671F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../../modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; E489FF0264C957A8F71F346A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessage.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h"; sourceTree = "SOURCE_ROOT"; }; E4981056661C3F251FECEC32 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; E4BD5632ADD38CF8BAD38A76 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; E5058DD199CEC42ECE922239 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Justification.h"; path = "../../../../modules/juce_graphics/placement/juce_Justification.h"; sourceTree = "SOURCE_ROOT"; }; E52756E1DB553ED02D829F61 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; E5E02A3C4E942105FEDCA885 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChannelRemappingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; E6333272C33612B6A7D6073E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDBurner.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp"; sourceTree = "SOURCE_ROOT"; }; E682A3A52BD15D5CA4933C12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; }; E6E0ADA4E3632540A8ADC7D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; E6E0FE3CBDBE2554B527CF60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSourcePlayer.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp"; sourceTree = "SOURCE_ROOT"; }; E70A283A87989F5A1CEDE6A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResamplingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; E7113B21A18CD89165BAFD4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_android_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; E7A5AF3EBCFEEF8787F2D14F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E7B21011F93915ADD2CC5DD9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; E7EA99CD84E1EC598F4984DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; E7EE6BDC0E3A0739529AED91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSubsectionReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp"; sourceTree = "SOURCE_ROOT"; }; E8128A35828C860977FEC54C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatWriter.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp"; sourceTree = "SOURCE_ROOT"; }; E8B785D8DD9C49BC7FF5EA75 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; }; E8D96BDC76CD02DF3E238A88 = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tile_background.png"; path = "../../Resources/tile_background.png"; sourceTree = "SOURCE_ROOT"; }; E8DBB02B17A6E144D08E4CC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Matrix3D.h"; path = "../../../../modules/juce_opengl/geometry/juce_Matrix3D.h"; sourceTree = "SOURCE_ROOT"; }; E98EA1189613978EA4E78D85 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; }; E9A3E96E32C301EE817059C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E9B8B3FAECC80B66257B14F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BlowFish.h"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.h"; sourceTree = "SOURCE_ROOT"; }; E9BBEE1B3986E0829AA44133 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; EA082125C757D1FD63BA38C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; EA3436079F0D78BB76CD15F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInactivityDetector.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h"; sourceTree = "SOURCE_ROOT"; }; EA7D346CAE6A07C0B395816B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; }; EA9FE6D1E0A072E73312916C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; }; EACCBFA17F4D07ECE058EEBB = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; EB369EA30D31CD710A09B7FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; EB6F5F8F57F0117C10735583 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODevice.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h"; sourceTree = "SOURCE_ROOT"; }; EC8A992EA9CFA558DB9F950E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; ECAB8BD2816B0BEFCD9F6961 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; }; ED3DE86815324354C48631D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; ED6224ABC715AAB68661F4D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_box2d.cpp"; path = "../../../../modules/juce_box2d/juce_box2d.cpp"; sourceTree = "SOURCE_ROOT"; }; ED80E9909586DD64BDE03A70 = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = portmeirion.jpg; path = ../../Resources/portmeirion.jpg; sourceTree = "SOURCE_ROOT"; }; EE7001BD5206A8D8EA2D125B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; EEA020419EF58E90C10AAE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; EEAA1BB6254EDE07A7ABAD65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilterAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; EF8055850F3DEA173761E3B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; }; EFD1BD42000EE640A17EE1ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReaderSource.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp"; sourceTree = "SOURCE_ROOT"; }; F037091D4A3012EBBA1E808F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; F043752E829829CE2A364F39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTreeSynchroniser.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h"; sourceTree = "SOURCE_ROOT"; }; F0ACCF70936A0BBA2A2AB289 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; }; F1A30E40F7388D16BA35B0DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SHA256.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp"; sourceTree = "SOURCE_ROOT"; }; F1A9F544E889DDA995415F6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSourcePlayer.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h"; sourceTree = "SOURCE_ROOT"; }; F1E995A1E00C6545A4C3297B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = KeyMappingsDemo.cpp; path = ../../Source/Demos/KeyMappingsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; F2066125C7C0B19E1065BF1D = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = JuceDemo/Images.xcassets; sourceTree = "SOURCE_ROOT"; }; F26339EFC03BD8D22016EEB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HeapBlock.h"; path = "../../../../modules/juce_core/memory/juce_HeapBlock.h"; sourceTree = "SOURCE_ROOT"; }; F29F6395C4935C1A663A1D15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; F2A15E99B15FBE0CC5F3712E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEInstrument.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.h"; sourceTree = "SOURCE_ROOT"; }; F380FE12E78619086BA33CDB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnection.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp"; sourceTree = "SOURCE_ROOT"; }; F3A9E0AE5ED05CA1AD6F56E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemAudioVolume.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"; sourceTree = "SOURCE_ROOT"; }; F3AF542BB3A9E6CC1D6E37DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginListComponent.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; F3B746DC92EFE7A9B8EA9E43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoableAction.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; F42FE65C750920656EA22BF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; }; F43CED7548EE5C9F841CB1FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; F4676BB721F96DC5DDDAE746 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CoreAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; F48E6A27D809C49D42D3202C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; F4AD24F8DDD10C938759CEB9 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_opengl/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; F4BBD7DEBE0F1DD2CE45C411 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; }; F53D12880F3354B4FFA480E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioIODevice.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp"; sourceTree = "SOURCE_ROOT"; }; F584FC21C26C72A81D840840 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; F58760A8EE18630F97C7B646 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; F5B288379859F5C9F4FB83BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_ios.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_ios.h"; sourceTree = "SOURCE_ROOT"; }; F667601C17DC912B73B817DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Clipboard.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Clipboard.cpp"; sourceTree = "SOURCE_ROOT"; }; F696BA0801B1A34571346EDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiRPN.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp"; sourceTree = "SOURCE_ROOT"; }; F6DB1C1E0D9315245E87CBC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_events/messages/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; F704F70F80BA62A48F3651BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; F746F30147C6BE88F60E92CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; }; F753A7C2031832BB628CBB2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_ALSA.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp"; sourceTree = "SOURCE_ROOT"; }; F779C79AC37C83A60B997641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; F843FC09B4C2A10C76D8D35C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginDirectoryScanner.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp"; sourceTree = "SOURCE_ROOT"; }; F881704607DB79F9A3CF7491 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; F89584972F16A8EC49E5E74D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; F91A3C07D81BE2D4A191C9A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; F965E478C21D19EF32760A9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; F98BEA2FEE66A3DEAD9D43B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; F99F73DEBB0EB724142FA930 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; FB2CB5482F056ACD6AFE12A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; FB8BE0538AD9420DD4D1E9C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; }; FBCD860CD7113A3136B127C8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; 229D2DAADACF15540C3BBD15 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JuceDemo.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; F97F775EDCD2D1C497625D4F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; F9F4D5D9783B88F2DE889023 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SubregionStream.h"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.h"; sourceTree = "SOURCE_ROOT"; }; FA5777F9FFCC6BE9D9F98874 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; FA8B6B0F6D43146BAAE04D4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../../modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; }; FAC5DDBFB00254C35D8987F2 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; FAFF7B60A09FE1BFD468163B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorGraph.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp"; sourceTree = "SOURCE_ROOT"; }; FC14A2D9F860584459B762F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorValueTreeState.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h"; sourceTree = "SOURCE_ROOT"; }; FC1BA0654179A585DF5B9DC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; }; FC63A33CA2E025F5C4C22CD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; }; FCA788F92D5BB1640CD2AC35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioSettingsDemo.cpp; path = ../../Source/Demos/AudioSettingsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; FCAC296E92A219D70EB96AD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; }; FD2A08CE74C6EBC90CD44A49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; }; FD46383E356A5DDC1AD53380 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkingDemo.cpp; path = ../../Source/Demos/NetworkingDemo.cpp; sourceTree = "SOURCE_ROOT"; }; FDB35D95490B931CC376A943 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GenericAudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; FDBFCE2A24F32AEEB896819F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_ComSmartPtr.h"; path = "../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h"; sourceTree = "SOURCE_ROOT"; }; FDD9DA21786D445DCD01912A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; FE22C972B67EC59701E1CC3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; }; FE4C496CFA9A1E786253B005 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; FE613A570CE31071FD22DC06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; FEB688750213D0C64F18AA37 = {isa = PBXFileReference; lastKnownFileType = file.zip; name = icons.zip; path = ../../Resources/icons.zip; sourceTree = "SOURCE_ROOT"; }; FF34F4ED0C44B2BA4FBF22AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Draggable3DOrientation.h"; path = "../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h"; sourceTree = "SOURCE_ROOT"; }; 5D279CE438F706BB32D767C7 = {isa = PBXGroup; children = ( 9617B3B5FA9439D342F23ADC, 01C6528C4A0646873D4C3429, C812CDED0B089FD1B76FC9EF, 146EA869EC587DBE94B39198, 8413B0A6941430B8CEE7A573, FCA788F92D5BB1640CD2AC35, AC70FAD27248857B6D16BD33, C993FAEDCEE0A33CAB42F995, 014BF4937EAC7618FB1BCC69, 9297F74907620178A1EB41DE, 56416BD4B5AE294F24289057, 64E7D43C4F4037CFC2C5E2AC, 49412C044B88516D9AF59FDD, 55D08920D4992CD0721AA3E3, 4DB00B418C4F068BC5FC7314, 4D569839066D92C393F58EB4, 7DBF83B26277D13CB3FC1479, CCEC8F9385AE939B24D27954, F1E995A1E00C6545A4C3297B, 92D3CD3845968E4FAB93576D, DEE5EFE8148FD2DC743A7DD7, 52E4BE1BCD56D3676C84BEB0, 28CB3F1A8BFCE1F01FD630A6, 9F75FFB61C74FEECE61A7138, 24B00BED20980D12119C228F, FD46383E356A5DDC1AD53380, 2DA02BCCDBFD5BF2DA2D2FA9, 39A06D3252DDA6F97FB09495, 5AB15A508A07934A89398A6B, 84BAF97675BE522B63DC9A4B, B731664FB9EEEBC618BAB5A0, A83639AF2210589E5367ABCF, C0C8D6D7D14DFAFB169FFDCF, 9B37E4C205A31B36B559E613, 0443FA799896F7D084DED278, 0AF54289591CEBFBC19EDB40, 3482A5FDDEE5E5D405047999, AD55906C5D8552E842C98EDC, DD24BAA1E8104B6D3554A222, ); name = Demos; sourceTree = ""; }; 0BC17C2D6DC6B34C6F308432 = {isa = PBXGroup; children = ( E8D96BDC76CD02DF3E238A88, 703C1FBF6632A8078BBE05AC, 07553F86ADDF3CE278CBDE66, FEB688750213D0C64F18AA37, B84A6E341207FA1F60EB5AF1, 77179735C0CB2D89D9C61466, ED80E9909586DD64BDE03A70, 5784E19E01D5B23BDDFFA5AE, 28A7CFB0B6DF367A9830817C, ); name = Resources; sourceTree = ""; }; 41B2F9FB15FB255A0DEDCA00 = {isa = PBXGroup; children = ( 034AA69C5B2B4882EEFAD046, 556EFB307E14C15D5EA0242D, 9CA3071EC654EB7FFEC70736, 14EAA74C473506EC4920A160, 0F2AFC09338BE08479886B0B, 4DBE443E8F807D9366309A44, 5D279CE438F706BB32D767C7, 0BC17C2D6DC6B34C6F308432, ); name = Source; sourceTree = ""; }; DAD5A945FFB6D6920BF0D1F6 = {isa = PBXGroup; children = ( 41B2F9FB15FB255A0DEDCA00, ); name = JuceDemo; sourceTree = ""; }; 40D617E4CBC4C51B6B0DBBF3 = {isa = PBXGroup; children = ( 26A65E5DA320A85F90F1F58F, 2699A70E9610104CB8D30EC4, C0F898298ABF2458D6C5AF17, CBDC7CC5CE4132A5D63B583F, E34DFFF51D0F7C34FB826C4C, ); name = buffers; sourceTree = ""; }; A4AEAF285B0FCDC5B0E621A5 = {isa = PBXGroup; children = ( EA7D346CAE6A07C0B395816B, 29AA7E6AE1C062B740F4D80C, 4983B8B7E3666DCAC1A1644B, 753D9A91CFBFAA027F828C02, A3D5134838BA1CEAF4284E9A, 155D25867B048DB7685E6F11, 541E0CB92DCF5EDA093EDC7D, BA008864E9E4F195E61A21F8, B51567633F44A10D4543B219, ); name = effects; sourceTree = ""; }; 6FF3AFF30E2CFC40F54FE711 = {isa = PBXGroup; children = ( 7F2A233FFE5CDB2681F0DC28, 68AD6A94C88A46A483B823E0, 2BFAB8AE52821D3786BD7ECA, 7DB8F4BB2B4884803207417F, FB8BE0538AD9420DD4D1E9C8, 25615385230E47D7E70A2745, 1F25BC80413668F43F5D7864, E489FF0264C957A8F71F346A, 7828AF42E3C857F520EABDD7, 49BFC515C915A4AB53EC15C4, F696BA0801B1A34571346EDC, 586A4398FE1B9F7D6104BB70, ); name = midi; sourceTree = ""; }; 7C828ECEE88D9245ACDC4E6F = {isa = PBXGroup; children = ( 66F8C7EB6520AB9439433DF3, F2A15E99B15FBE0CC5F3712E, 6E386DC2F80B9C90264AB60E, B3BF13E52ED6443A85AF0230, BF7EE64D6E337BED36814439, 7AF9EF500482C84F02849647, 44BB5D71E35E65F5209292B8, 234392598E5388F29CFD6B50, 338AEA7AC3EF4CE113FC7303, 65DA0DAA8BDCE57A54C1CF26, 03E5796BC74758EBDBD49081, D7D048CFDB58B67E9BAB7448, 8C4D0CE8E6E62BDD83F4432E, B0287B0EE6C4EE20EBF95FDC, 07425F710A1C4AC479BE56C6, 59810BDD671438F997D32061, 0F0B65D33F71F27C1E366CF0, D0736DBF1DA74CBA695DE54C, ); name = mpe; sourceTree = ""; }; 9EF5C5A4E05F24140BA571CC = {isa = PBXGroup; children = ( 088BC49A72D9304769B2CBFE, D767A88B0BC208DECCC1AA3F, 0AC78EC782815C8325A3AC8B, 3924287A67ED97279455625B, E5E02A3C4E942105FEDCA885, D574F24273E747525891B11C, EEAA1BB6254EDE07A7ABAD65, E0B8277ABF9DDAC8C12DE26D, 2781E458566701273B805E8A, 2C26D37BEDBDC3B1DF19388D, E70A283A87989F5A1CEDE6A4, 78B172DD2AAFE3535D0460C5, 7E847EBFB83896EA08975F8F, 384887ECD58A0B42E3669617, 35F5E95BA127E63BA136DACC, 7D7A6251E976BF292861510F, ); name = sources; sourceTree = ""; }; 3C7D76B7DB18A3929B2EBE2F = {isa = PBXGroup; children = ( 42386AD366F1AD43B6B29364, B341BC1AD30CCDDAD967EB0E, ); name = synthesisers; sourceTree = ""; }; EAD085E39B98D2F88E2854DA = {isa = PBXGroup; children = ( 40D617E4CBC4C51B6B0DBBF3, A4AEAF285B0FCDC5B0E621A5, 6FF3AFF30E2CFC40F54FE711, 7C828ECEE88D9245ACDC4E6F, 9EF5C5A4E05F24140BA571CC, 3C7D76B7DB18A3929B2EBE2F, 7DD8FCFA80D230B432ECD149, 249A454A7EF1C3A07A66F453, ); name = "juce_audio_basics"; sourceTree = ""; }; 2C5B1CB88811CFEAD0B763E7 = {isa = PBXGroup; children = ( 64F04FAD3BAAEE3D0BA279B8, 3ADE61DBFBB6901CE2F1DB17, F53D12880F3354B4FFA480E5, EB6F5F8F57F0117C10735583, 70A5CABA464ECFC6A8449A87, A9BA8E7E434AC82F4604C773, F3A9E0AE5ED05CA1AD6F56E5, ); name = "audio_io"; sourceTree = ""; }; ACE42B83631F91D837D30DBF = {isa = PBXGroup; children = ( 8A8CA6C781EFD5F0997E7507, A539F7B46DD001B3BF03B16F, 3C1E6F7FBCCAFD6CCDBBB70C, 0E39FF2E9AD2BDC94CC015E3, E04EC9F05219CEEB4469A437, ); name = "midi_io"; sourceTree = ""; }; 06540B00B960F62D8C50A952 = {isa = PBXGroup; children = ( E6E0FE3CBDBE2554B527CF60, F1A9F544E889DDA995415F6D, DDDB707A59DB489D195BF99D, AAC68E522F44DA7AD25574C7, ); name = sources; sourceTree = ""; }; 5E43CCDE66C0FD9A873CF9A1 = {isa = PBXGroup; children = ( C9DAF05F2DAF78159647512B, AAEBF0976E57F4756E4AE31E, 61F28F9E82D39EFF702793D9, ); name = "audio_cd"; sourceTree = ""; }; FD6512AC0A0ECDCA3416F735 = {isa = PBXGroup; children = ( F881704607DB79F9A3CF7491, 088687334FC51A5136881578, 7416BF201FBFE7F978FD774A, 326FF20ABED3923B1418BB3F, F753A7C2031832BB628CBB2B, B745680D019FDB64D3A65508, 217D243937EB2507494A4D34, 3BFEBBE9B8185F65D69A1721, 9D17E29319340B927D1BC51D, 402BC49CAFCFFF067A88F96A, BAC70BABB531B634736585A9, 393A46D91FB481557E4DF792, 3ED5A2B64359FED05CF309C2, BF3AF2E3B0D2184B766E1B26, E6333272C33612B6A7D6073E, B3569FEFF39695CCD1E060AC, 74D283E02B3A2A293678FF9C, 5FCCFCEE3F6C4C51BB581572, 52D7400A47B19848EFCB5B51, ); name = native; sourceTree = ""; }; B5BC400B03F73362F263D1FC = {isa = PBXGroup; children = ( 2C5B1CB88811CFEAD0B763E7, ACE42B83631F91D837D30DBF, 06540B00B960F62D8C50A952, 5E43CCDE66C0FD9A873CF9A1, FD6512AC0A0ECDCA3416F735, BD14CA532122022C26920DF8, 806A7A3BFC684B4D9E25ABDF, ); name = "juce_audio_devices"; sourceTree = ""; }; 22448345537DACFE2F258ACF = {isa = PBXGroup; children = ( D999C4C8DE51CDFB861B863D, B305C104F5A573E8AFEFA763, 63D09BD18653F6A0134C8195, DC6930EE56EEA5221CFECAB7, 991F4C3B42036B549C321789, 7F7EAF366320BA71741B68C3, EFD1BD42000EE640A17EE1ED, 1F2CB36A86AA1A4FFF89CD88, E8128A35828C860977FEC54C, 324452D7F5B5EA3B393FF4FF, E7EE6BDC0E3A0739529AED91, 0E1D85B025D93DAFA8404824, CA0E3166C77EB91555893286, 00DE0C93FE719DC72E20A63B, E31FB2C8B34A146D28A4C611, ); name = format; sourceTree = ""; }; 892E3C641B2CBBE66606A2C6 = {isa = PBXGroup; children = ( 35E35B099E2A7906A7AA2EDE, 019352D78DBBEE2AC10ED6BC, F4676BB721F96DC5DDDAE746, 71E5E55D76D83B711B6263C2, 851BE5F4B476FCC76DF56FEA, A8878B1B86367E161868E49E, 0B82DF796E577809EB03B874, C9DA15073F3BF252BAFF9D69, 8F61AE043AEF6DCD47A36787, 581E68F4E33DBA5837FB7F9B, 1BE105DE7C738CCF8D6F2A54, B13A8EA6840489EB88D77800, 462F10FC0057AA53CC71472E, A687283C2BEC2595A10EEE1F, 9B089D1649E4B5BC8AF63EC6, 2859FDF0CCD1ED788910E9D3, 60849B046145D3BACDFA6A84, 6C57333FC4ACEBC7C451A414, ); name = codecs; sourceTree = ""; }; CB4068ADFA9C76E778DD19AF = {isa = PBXGroup; children = ( 807F5EE489018BC1956AAD5C, D04960564D2860B19FA5D1CE, ); name = sampler; sourceTree = ""; }; 43D650FDDBAA28AE94A8942B = {isa = PBXGroup; children = ( 22448345537DACFE2F258ACF, 892E3C641B2CBBE66606A2C6, CB4068ADFA9C76E778DD19AF, 50AB15E26F6E4A55B0BE8AE6, 05AFEDB1F65A8C2C8E9620E0, ); name = "juce_audio_formats"; sourceTree = ""; }; F5E14DC1BD0B02032813E53F = {isa = PBXGroup; children = ( 6645C09E7FCFF0E498C3C400, 0F82F90D72AD536CC3DFE217, 25412CD3F6855849D8B7FE98, E3415348D45BF63A7CE8CF6F, BE9B3F83B6037C848596286B, 6F2A90834846C810CCD39DF9, 36DA578E707673F6B174A016, 3C776A3FADACB361BD4B3D9F, FAFF7B60A09FE1BFD468163B, 89FD2460344D6B0FF04F70D0, 0B08631AE709ADF41AB3B780, 3649E7CD2BD6A37FCF7D72F7, FDB35D95490B931CC376A943, C054B94424A80B5DCA6CC52F, 872C4AF5B81B1664032594A1, D9DFC1CE9A4EF9230B49D697, ); name = processors; sourceTree = ""; }; 44B5DCFCAB48CED4E27F0F7C = {isa = PBXGroup; children = ( 7BBD4B2D9A9EF13CE4357979, 4B310AA3DF4F6188B2E6FAF1, E2127416236840EE3AF32D5C, 96F43E8EB364D3E40689D368, ); name = format; sourceTree = ""; }; 961C00EDB46D39EFDB238950 = {isa = PBXGroup; children = ( D1E31AC47CCAB97418EB646D, 58FB0C4FE674CC5BB7B1DCA7, 8396EA11DD261260F1A96DF9, A6FADD9A009BA1F1D36239FD, B2C11FB8D4762ABB6CB9B934, 9750423DB3DB6570382DA3C1, 9B9E034C5761096ACB8A76C3, 73267FE8DDE50FD1E6E31ED4, 8AE56D2F4E33B015C3D73EB8, 52A95B5754438C999343869A, C8A42EE493A1DF2E283C245E, ); name = "format_types"; sourceTree = ""; }; 1766FC3A6258C18585F98105 = {isa = PBXGroup; children = ( 6E125672C42D84CCD54F9B0D, 55FBB9F8900F753766A22BE6, F843FC09B4C2A10C76D8D35C, 4895DA77962B46806EB0147F, F3AF542BB3A9E6CC1D6E37DD, FB2CB5482F056ACD6AFE12A1, ); name = scanning; sourceTree = ""; }; 453BF0685F30EA92520392E4 = {isa = PBXGroup; children = ( CF1DA3CB41AA43B349D3A6B9, 41107A3608BE0848BE2A34FC, 057A64839BFE9AD0864752C3, 0B5B86BA8E4C60B999A45034, 005027EA86FFAEC19D634730, 95227EEF8BCCAD5E1840DB48, 631FD2CAE69A3D5DD8C2E1B6, FC14A2D9F860584459B762F7, ); name = utilities; sourceTree = ""; }; 326CA890D2481B82367C6F3A = {isa = PBXGroup; children = ( F5E14DC1BD0B02032813E53F, 44B5DCFCAB48CED4E27F0F7C, 961C00EDB46D39EFDB238950, 1766FC3A6258C18585F98105, 453BF0685F30EA92520392E4, 5FB5AE3F2ECCD8AC1A49CA18, 6BD1D463E40A463C69C065C7, ); name = "juce_audio_processors"; sourceTree = ""; }; EE85F21BD60AE1C7926DA310 = {isa = PBXGroup; children = ( 5A3C2298934C0F77CC60D336, A90C7FF8F98D21494524B726, 081472DAF6208CF7FDD4466B, AB92BC8961EE90E0F23FD6C5, A4A7D4C4EF2A24F743D107B5, 346CEC10C4A7DF779A799311, B9A524CB6B0598E4D7F7DD93, 22CF0BEE62FB551A68223B3A, 28A254DF535233A82D5D79BC, 14A6170C094E7786C521A4DD, D807B4138306397F8A93FA16, E3DC9C2BBC81EC0B035AA32C, E7A5AF3EBCFEEF8787F2D14F, D057633F8F7684AB7B4B28AD, ); name = gui; sourceTree = ""; }; D7A76D9B15CE0C2AA2F1831B = {isa = PBXGroup; children = ( 4140669501152D9FB9A244B9, E1107017C2BF7ECC847DF01A, ); name = players; sourceTree = ""; }; 729ED0EF005668B4140C1996 = {isa = PBXGroup; children = ( DDF02BD16454102C353FCD18, 5232B9F7E62CD5C41C3ABFED, 8DA438AAAFBC64C11DE329B4, 4151602FFED0B1AE7B36CEF4, 37355CCC05D407D665AA6604, ); name = native; sourceTree = ""; }; BE68248271118CC1AB328F34 = {isa = PBXGroup; children = ( EE85F21BD60AE1C7926DA310, D7A76D9B15CE0C2AA2F1831B, 729ED0EF005668B4140C1996, B66D06DC55FFC2B99D43F4E2, 89C47678AF8B46702EC0EE66, ); name = "juce_audio_utils"; sourceTree = ""; }; 7AF3E75ABE7FFA5936475F7E = {isa = PBXGroup; children = ( 0732CB9291291C9854197B28, 1B9B4E12F53F8350757CD4D2, ); name = box2d; sourceTree = ""; }; F025DD9DC1A82BB3FC45DE34 = {isa = PBXGroup; children = ( C0A9EF3D27D21B307649111B, C43CFE8A48F03CCBCAE08D24, ); name = utils; sourceTree = ""; }; B92F6CB95B8D46F185B51F43 = {isa = PBXGroup; children = ( 7AF3E75ABE7FFA5936475F7E, F025DD9DC1A82BB3FC45DE34, DEFD6AD8B2BBA57017DB4A13, 1AD3E125B61DD653C03FAC05, ); name = "juce_box2d"; sourceTree = ""; }; 9F8E4C02B09E172A04638A04 = {isa = PBXGroup; children = ( 7BD4AC17C70E6771254B962A, 1698E86A0E0E93DF1487E9FA, 651D48BCCD81AC8B5BC3AAA4, EC8A992EA9CFA558DB9F950E, 58E53BE69281E3105C66FF07, C411A91DC3B306E2C417F1BF, 03707F35E5DB4BC6F1FAC8D6, 569187442B514D114A483D29, 01F2CB80C1B14450528F0FA8, 49C275C319B36AC86512E34F, D6B8E586D30632EA07C48D6F, 02659911BD886D2E8431B912, 2A8F6894339DCE6003B702F0, C9C1FC1B4628557AE5C7E7ED, E4369FFC0E1A6547580D671F, 7286D6380C74734603D098EB, 3AB9E51994CD35A10F87EFF1, AC7A214BA7B1A172F5B31735, 3F58D27B17343BF1030AF92A, 8D437AEAA6F7E3F0DCA43E8C, B59B0121C46D4A2B9EC3BBFE, 3741E4C0CE5C7C0828D09BA8, 437B4DC39531BF8DE5A12E02, D3A84810AE56991562B6F252, ); name = text; sourceTree = ""; }; F06CAD4E176B4B5D59F3D92A = {isa = PBXGroup; children = ( BADD02151C3951E4853DA06D, 21CE480826B56F0B5C8C4A43, A763B4ADDB7BDD941FFE51CF, D7A951371F530DA0A350AF44, 5125E77EBA8500EAA778F51F, 519F11BE9C786A7F9B221BA5, CC79B254C68555B4FFEBC692, 220344E43675A2A7D64D3A44, 2432B5DFCDB8D39150029E01, ); name = maths; sourceTree = ""; }; B800FC93901BFB2AAB84B357 = {isa = PBXGroup; children = ( 0EAB2E0BB8C3BE2725FA093A, 4AF5BD29C935D0EB7CB0F6AE, DE3BEA732CBC57AE71E94159, F26339EFC03BD8D22016EEB6, A235B5113FB4E5DA6267975F, 14933D0F3C598C38A113CE8D, C60CE259EE4CFE6AC61044FB, DF9B26660FAF5ECF2EF620B8, A2F0B85560090CFAC7D95132, 734C43C3F7918061F2DDD214, AA967AC6E8FDCD7502272DA7, 7319ADBC735F957219774263, D1D8A53A7614F106942DADED, 6B1FEA349A6C8F51AB27E23C, ); name = memory; sourceTree = ""; }; 29FD491D882C7A35353517C8 = {isa = PBXGroup; children = ( 1A3DE76CA275CEE7DAD501A4, D100B2EDF88F2C019E4D2311, E7EA99CD84E1EC598F4984DD, DAF2C8E641253779B6DFF139, 0D17B181C82CDA7A6282A0C1, C0918662F3E28570DF17B041, ADDA92448B0EC5EC1C6D5A2C, 69249A7E30512BBF13CB8A09, 7761FFBFAC88B7157D65EE1F, C92A35B9676A81157B54284A, 9A4190B5B7E788B732637F2E, D0A84ED14FC2F7A143679258, 0F517EA07DBFE31E5C9367F5, D9AAC6516BAD4F5BAE9CF297, B44CC152D6454AF6F16E9EF6, A22726A53515D845743DFF84, 5CBB1DA4ECE2611DDA81A18C, B10A9A3B4A4C2507F514D5F2, 66D5FD22DF1550A6CC9ABDA4, 8BB3867A9236FF57B46581A4, CE7D4E7030BF4BB4B1093B5F, ); name = containers; sourceTree = ""; }; F6C37A1A9BE55FD210811ED5 = {isa = PBXGroup; children = ( 38FB6ABB883ECAD52027CE19, 76B8E770835968F565292D1E, 720C3CA9E28181C76434D465, 57B7A9C37305D4D7F876344C, 3D8A83C53BAF22EEEA014D90, 6A299D9BED7D078CB2F1C007, 47817D36A37758981DEDCAAE, 2CD4306102317989E6321924, 0453D6FB24F82E92A6BEDA49, 0FF2403BC335E710BE391DEE, 7BE8C42578F5E2E59D63F615, 764F36E2597540348F960404, 133BC5B880C7575FF3209D88, D8AE63002C7273F98226394B, 8E1CA5F01D04FA8F6CCFF91B, D5942A1C95986841CA286736, 068183416EF5422C7AD0F238, 9CC0810F5BAF70D00033FD22, 2B4F1477BB90BF7F62005BEC, 5496F73539DA26FD9C899223, D0ADA33F00B3BD83C1D5AE37, 81D03597CE85238988E0F45D, ); name = threads; sourceTree = ""; }; 18CBD980606B9896AE7EDB66 = {isa = PBXGroup; children = ( CCD2ED6F6F3ABCC172DC4957, 2060347D582A8E45F58AE1C2, 3D2D6313C0A3397C4839B29B, 0B3662D1FFE3102476FD60D7, 78979AFF44F164451516C986, 23A853ADC54A69406C7A49C6, ); name = time; sourceTree = ""; }; 15BAE5B68F98DAF50032DA20 = {isa = PBXGroup; children = ( CF7CEC8C260AC623C222264C, 366C0E8D559D37FF92B64F47, 6B83E4AE241F0EAC9574923D, 891BBF2E19D80372FA886E62, 3D2B216A758EEC9EF2D9C7A9, BBC3C77A4D771DFCCB08B874, 85D328C928A4CD6A1AEAB644, 830A4891F6838B2A60C54C8B, 9E14C2C627D2F7B3C817468E, C8E3220EC4F4E4242CD3026D, A6EE2D5A258294BAC600F75B, 0F518E75055A9D954B52DAC4, 44879946DE89AF141BE428B6, 5D40332D94747C3190D4CC16, 2174CAEE6D8EB215ACD4A256, 4198EE3311A171C884A5FA9F, A90EA62A0A4A1B5E62CF0BE8, ); name = files; sourceTree = ""; }; 23F9726B9A73EF92F1209DC4 = {isa = PBXGroup; children = ( 9D0B40C4BF8FD939C33E3D59, 0E11770AD343D8A0780C54BE, 80A57920E6EA9C2E881BC3E5, 39E4404D57A8B66DF520B66F, 2274B9A5BC921FE3B877D0C1, A1EFF3DBE5F7B0C07AE59D7C, CD9B8C96642C7F691FCB3EC4, 6EA8B0940C4486B9F03BA19C, D61BA88D3AC9556266FE4368, 24E2AF695F11B9BAEB8FBE3D, ); name = network; sourceTree = ""; }; E6D63506374A755883B95CD0 = {isa = PBXGroup; children = ( 945E090A8DE2E776F7033143, 9CED8F32B3718A90481EEDE6, 9B9F578EC77AA988C919AC6F, 49D1B40749401475B52A6F85, BFC3C3EBCDDABF1529A317FF, 62D20AFF94117B99556BF56C, AD593F766DC27414A94FABEE, 429974B1B4C361F218093A41, B7AE6C1C50421EE6E02045DC, CC5F6FD5F339E1811037EABE, 03CB1183519203936C33025A, 86BFE5D66623DB207CEA3F9F, 3FBF109F3AD6DE221EFB1BA2, DC0AE99EFE4F88987CA2F705, F9F4D5D9783B88F2DE889023, ); name = streams; sourceTree = ""; }; 1CAC2BF524350D8F0B5FD356 = {isa = PBXGroup; children = ( AB589E1E7EC83EA620B7F780, 88D689399C7F69D687208673, DD4A812225F47E590FCF2E29, 6141692AC9282411091C8157, ); name = logging; sourceTree = ""; }; C8E2FB2013388FB97CB0E404 = {isa = PBXGroup; children = ( 80202384D81020DAE2072A1A, 218E36147FA4309F072C1949, 33F3182598E9A84AD25A9184, 8BDC3161654344162ECDCB32, 6BDAB94A88B565A734534368, 12E4EED0370A1733C6629D86, ); name = system; sourceTree = ""; }; 9E69FDED50CC01056C1E3A3F = {isa = PBXGroup; children = ( 8A89A7C0DEC85C7773251B15, 2E29C6A0CF15C32A35119DCA, 16DC590DCFE57F583E99F9C9, 6BEA46E3C64DD2FD8946CD35, ); name = xml; sourceTree = ""; }; 649BC7DF20650B1753E12AF4 = {isa = PBXGroup; children = ( 6B3772278F9398D0AC7CE250, C4E873C0CD6E9C76EA2997C2, F746F30147C6BE88F60E92CF, 0B54F1B0CB17ABD0C3E40658, ); name = javascript; sourceTree = ""; }; 2D8DDEA5DED7302CBA238934 = {isa = PBXGroup; children = ( 50D167857CCBE08F692604BB, D65129253734C1917354C08E, 5FC58B5FBBBB09878E3F2230, F29F6395C4935C1A663A1D15, 55F9178934DDF31583323625, 2F66B42AF6C0B5ED381937C3, ); name = zip; sourceTree = ""; }; 94F54CCBAAF1F7BECBE15D38 = {isa = PBXGroup; children = ( 46118CBA9C3CD3B354D93B30, 3EF890CB40C6FFCAE055B7B1, ); name = "unit_tests"; sourceTree = ""; }; 6C6F5F4F0570E2CE9AA515B7 = {isa = PBXGroup; children = ( 55273A59F96B3C775EB71FAB, 44F4A9351C2B03F98A0D23E4, 4A2C25FD55809F1489963FC3, 360291D0346F776DDD3F43E8, 28E65398C8CF95EB12A5734D, ); name = misc; sourceTree = ""; }; BD98C1BE7812F052CB13F901 = {isa = PBXGroup; children = ( 599036DC07DB54E446ECA054, B63933880C456903722F46A4, 60B755F5684959E78C556810, B97B2C0C6A4322FFAACE1C39, 4290825CEF87C19A113CA9F9, 3CF67E6BCC6B52EFD6E6A458, FA8B6B0F6D43146BAAE04D4D, 39E23931E56560C294237428, 73E0383F94E38E30C2CE0F5D, A83559E2258B5856CFD68EAC, 447B5BEAEF972DECD5F5A949, 9BAE20FD7E2CBA120DDA82B0, 5E9F335E274427A81514A20C, 0B53DC9C735B3B307C65836A, 5897A924018C9D26438796A3, C4B8D5FC3E906DA9F6A4379E, BA5A007216A3E496509D5CE3, 56C55F22CADABBA171D41BFC, 104B96755BED457D7CEA42EA, 8F7D5E59BEB35E858363B752, B0DA13336DA07392C689323C, A1A8D19C2E587194909B2913, FDBFCE2A24F32AEEB896819F, C006CE2DED5AB537B5C3FD5E, 3F8C313EC9C1E6E234108098, 50677353DB2766A800988656, 48A0FC60EFF6334C161519FD, 6F5B9777B802707C4A747E46, ); name = native; sourceTree = ""; }; 7AB76D65BF8ACD7C0CCB6169 = {isa = PBXGroup; children = ( 9F8E4C02B09E172A04638A04, F06CAD4E176B4B5D59F3D92A, B800FC93901BFB2AAB84B357, 29FD491D882C7A35353517C8, F6C37A1A9BE55FD210811ED5, 18CBD980606B9896AE7EDB66, 15BAE5B68F98DAF50032DA20, 23F9726B9A73EF92F1209DC4, E6D63506374A755883B95CD0, 1CAC2BF524350D8F0B5FD356, C8E2FB2013388FB97CB0E404, 9E69FDED50CC01056C1E3A3F, 649BC7DF20650B1753E12AF4, 2D8DDEA5DED7302CBA238934, 94F54CCBAAF1F7BECBE15D38, 6C6F5F4F0570E2CE9AA515B7, BD98C1BE7812F052CB13F901, BFE7C09CA4AFAC973C267D11, 824822F2A6A539B2D797DE23, ); name = "juce_core"; sourceTree = ""; }; D819E535B50B941C9A6E8FAB = {isa = PBXGroup; children = ( 4E0A9537FFDE89E4B46710CB, E9B8B3FAECC80B66257B14F9, 8F8DD95844D647749BA662B7, 607FA0800596585429F6C22B, 15348CE8667592D8F3841601, 32F1D9C9FD2C0796E2E66C6A, ); name = encryption; sourceTree = ""; }; 3C9C844C356DB55BB284218A = {isa = PBXGroup; children = ( 0EA8F0AB668E3B77E8088139, 8D121C4BCB6A36684EC59FB7, F1A30E40F7388D16BA35B0DB, 9A895B323AC3DDD249D99CB7, 30D828B153772EC3FBADF543, 869FEB02E31658BD16664F1C, ); name = hashing; sourceTree = ""; }; AED3AAA07A81C88CC540827D = {isa = PBXGroup; children = ( D819E535B50B941C9A6E8FAB, 3C9C844C356DB55BB284218A, E52756E1DB553ED02D829F61, 06BD2631BF3C52F26B9981E8, ); name = "juce_cryptography"; sourceTree = ""; }; D4863F7EB960C2709BB3076B = {isa = PBXGroup; children = ( F0ACCF70936A0BBA2A2AB289, 3371D4F2A1E0AB784460E6D4, 63BB4EB9347AF60049BEEC1E, 24B56E58A88C5BA553F1C3F9, B6B6519216FF4413B698C889, F043752E829829CE2A364F39, ); name = values; sourceTree = ""; }; E635F16A3A42F4C92EB0E043 = {isa = PBXGroup; children = ( F3B746DC92EFE7A9B8EA9E43, 5FD5503AB0E161315DD5CD70, 171E2FEB6097B9D059BCD196, ); name = undomanager; sourceTree = ""; }; 4E83EFA92EA783E37B892C4B = {isa = PBXGroup; children = ( 5B0A45CD67D62B0BF9FC22F9, 9327D6AA8805BE7AD971D68C, ABDFE5D85E6ED3CBB8AE1F50, 93B3667FE4186CD75426EA53, ); name = "app_properties"; sourceTree = ""; }; 0B9FFA8B31858A3B3DFC06C3 = {isa = PBXGroup; children = ( D4863F7EB960C2709BB3076B, E635F16A3A42F4C92EB0E043, 4E83EFA92EA783E37B892C4B, 8FDA4FBF31997AEBF3AE10E4, 11005DEC79FC6A6057FCFA7A, ); name = "juce_data_structures"; sourceTree = ""; }; A34FC16C72F52B0B801CEF25 = {isa = PBXGroup; children = ( C20FD8D605E6714D473D5C9B, C784392363846286D29F207F, 9CDE3A30398FB033E5AE8498, 6DDDB822BBF3D557CA7AB427, 3411D087E2F8C3962E73F64F, F6DB1C1E0D9315245E87CBC2, 06FACF171E0DE0AC6318AE4A, 2F7F13C84464F8409BBDBEB0, C5A932A82042E2DAEBE1C302, EF8055850F3DEA173761E3B5, 6E9BFA2B6260E09B2B3948E9, 3C18AC0F75E68A8601DD8F08, 3F2BBE4509B19BFAC929D8DF, ); name = messages; sourceTree = ""; }; F46AC40E7CD6D4DBE5062442 = {isa = PBXGroup; children = ( 5F3E8B08EE74B0023DA176B1, F42FE65C750920656EA22BF8, DB8FAF091C9E78AE5F64701F, F91A3C07D81BE2D4A191C9A2, ); name = timers; sourceTree = ""; }; EDB1CEFD978D97AA80C44D11 = {isa = PBXGroup; children = ( 9A60BF3F27FD10A058F4E956, 5AB81EDAFED264951169F1B3, 0F3360D13458198A3A88B1A1, BE260594789CF43E1A4EF4E6, ECAB8BD2816B0BEFCD9F6961, E2C5C95247FDECA4C39F1415, AD33778491D50853BFFED9E9, 4825D1B0C0AC0FD325F55C29, ); name = broadcasters; sourceTree = ""; }; 7F49B97D06C9CA8E7C5888A7 = {isa = PBXGroup; children = ( E6E0ADA4E3632540A8ADC7D8, 6E98E22310F8BBEAC48EE55A, F380FE12E78619086BA33CDB, 1CD8799B8784A91FC13E6641, 17C0612B5BA94849EA9768CC, E30009C6743474CD6195F5F8, ); name = interprocess; sourceTree = ""; }; 604E5DA5952F5D6A87D74C8A = {isa = PBXGroup; children = ( E7113B21A18CD89165BAFD4B, EB369EA30D31CD710A09B7FD, 82CDD7D8E38202F102788090, 239F942F45950F5EDCB65A17, 00CC1BBABB9EEEBABF0D34ED, 78DAC3299488E0CC70EDB206, C77F148F8E8E9F805D730386, 4407A352B303B27AA0B7D579, ); name = native; sourceTree = ""; }; C217E6D7051F0944FFE75A52 = {isa = PBXGroup; children = ( A34FC16C72F52B0B801CEF25, F46AC40E7CD6D4DBE5062442, EDB1CEFD978D97AA80C44D11, 7F49B97D06C9CA8E7C5888A7, 604E5DA5952F5D6A87D74C8A, E243FC2BD3446D9518049538, B17EF578E9B736B1C5A5E8BF, ); name = "juce_events"; sourceTree = ""; }; 509EE811D5F7C5DCF8D66EC5 = {isa = PBXGroup; children = ( 885A0F1B41FFAF32ADC70925, D400C8DFE9DA635FDDBF57BB, AF396B7AE1BE00099A19D191, 6E522E47999DB582BA4DA5B6, AF98F62B0DD92F26D0018A98, 169C561B93262F8B46BEB768, 11F6937FC766E1E9568311C2, 33B829EE652FAA7EFB9E7460, 73E670E23A2523F7A1B14775, ); name = colour; sourceTree = ""; }; ACB6D23DBA7C941FEC62F935 = {isa = PBXGroup; children = ( 6808473BBCC2E4D8E2CA0E71, A8243EDBF34E3E3D4338D6F7, 04C5FED8AEA4109C4ED07111, 563167A7234166BE714F2DC9, D5C59D717CF1C0F15164AD43, 3E27B6E7641EFD605545DF18, 3B4CB5DCC28B60C4129F024E, ); name = contexts; sourceTree = ""; }; 5F88ECDF0F4610C51B00F5BE = {isa = PBXGroup; children = ( 3DA95E7AE1D0DC64AF09EB66, 8DDCA7803625CF8DA817326A, 29919F82CA5311BEA61649D9, 0638493DAFCB6148E77159B1, 0C73944DB76DB5DA61210A33, 62F9B202D524E33A2843ED84, BF2CAEB6EC641789133B627E, B8D4B6843E55CC07167085AB, ); name = images; sourceTree = ""; }; EEE338C2B3F2C4EE365FF019 = {isa = PBXGroup; children = ( F584FC21C26C72A81D840840, 3A42694A047942A44E8216F5, 0F88F061C51BE43F53B27094, ); name = "image_formats"; sourceTree = ""; }; 54810F7DAE8AD92E99472AAB = {isa = PBXGroup; children = ( E199DDD8F06741F21D8F9CFD, E41A387D233A436131D7910E, 9ADA045A14202C9CF4F8CD40, 42DC5D8CEC7445468A96C227, 36711C0D24EB22FABF8E7BCB, 1DDAEBB24E58353761798ABE, 7C70EC5AB0A3B9B14C0C0F05, BFEEC370F9DAD159E5789EB9, 754710498EE8C41F085A2B11, 8BFDB525631BDAD3A71CB307, 7C7FF651870B180BABD63D9F, 47091E4F83A415C063855A74, 03EC0E5A647E50B369E50BBF, 533B6E74A9F84B4D319E2F16, EE7001BD5206A8D8EA2D125B, ); name = geometry; sourceTree = ""; }; E92E581D7C45CBF3D826649F = {isa = PBXGroup; children = ( E5058DD199CEC42ECE922239, D74B19291F4B0370A2742A63, 88E9F6A65110F4753E115FF5, ); name = placement; sourceTree = ""; }; 006806660141E87655AADFBF = {isa = PBXGroup; children = ( 06AE69217982DB82E0F47554, 0E2F5CD3AB59E19A1ADFF875, C7026BE1C751908FEA9E5AAA, 6209255CD43AA4EDC1C955DA, 30212C3F1731BD8F19412A38, D3D86F3CDD057C174A16E382, E7B21011F93915ADD2CC5DD9, ACDD5519D82FDB831085B8B2, 17FDEA6209B7444B117E63C7, 34176F324CF7EBCDE741B2DF, BFCAF7A5D017D3BC4CD51D60, A169179FE554C215416FCD7C, ); name = fonts; sourceTree = ""; }; 4557FCCC2DAA4803E4145C52 = {isa = PBXGroup; children = ( B680E1C22A5885A8336D8DA9, 8DDE64B4A0EF76038498B47D, 4F9F102E3BEDFE30542BD479, A73DB3E8639A4D39F9F9C50E, 6976B92D19F4FA1BA89A8922, ); name = effects; sourceTree = ""; }; 3F44D4EFF1ABC95BADCF6424 = {isa = PBXGroup; children = ( 3D0EA5C831C347728313FDFE, 31D74E7CF149EF5B569417A7, 9EB305226A801CB7012884F0, DE534A5A2D3B48BFBCE598B4, A507AD139DCC0A43765C1FE6, 1D4E674C38566E14B4B73F49, 8FA3BF005120A8BF8DD1BB80, F97F775EDCD2D1C497625D4F, 155EF3FCA61BEF035E1D7C8D, 9053A4532020825D924EFB35, F43CED7548EE5C9F841CB1FA, 6A6A22EF81805BE907DB5DA2, 3008922C531303C24B8791AA, ); name = native; sourceTree = ""; }; A3212051A49A69AC9D00F91B = {isa = PBXGroup; children = ( 509EE811D5F7C5DCF8D66EC5, ACB6D23DBA7C941FEC62F935, 5F88ECDF0F4610C51B00F5BE, EEE338C2B3F2C4EE365FF019, 54810F7DAE8AD92E99472AAB, E92E581D7C45CBF3D826649F, 006806660141E87655AADFBF, 4557FCCC2DAA4803E4145C52, 3F44D4EFF1ABC95BADCF6424, 94F15602279A81777504F22C, 6ACBD7C68EE20A8E8C5CC1AB, ); name = "juce_graphics"; sourceTree = ""; }; F1DA02E10E12854B9398E8C0 = {isa = PBXGroup; children = ( 2F1324CBA29604BD3E2003B5, 2108383000B0A3564DFF340D, C549EFF977C210EB398C9A33, 7FC3D3D142D1B4398D07FFC7, E98EA1189613978EA4E78D85, 73CF65298983B8CDC1CD84AC, FA5777F9FFCC6BE9D9F98874, FE613A570CE31071FD22DC06, 2A155BD926FEB91142E6A638, ); name = components; sourceTree = ""; }; 3750E06D980F78DF6C18B6D2 = {isa = PBXGroup; children = ( 3D2FFA1F349A15621962C064, EA9FE6D1E0A072E73312916C, AA920A77D326B0F5E53F567F, 905A87EA32A249ABFD0A90AA, 24FC5DD7F88DBB1E3A46AB54, BC2E34C0883EB362398AC448, 80E5245755DC2ECC4C6BABD5, 9C734938D5FF5DA7827C74C6, 7AD412430D3AEB0468089AF5, 1890C5F569F315E5F8EBB1F9, 6E176584A871F8C956918182, D8DFE1C66668C30215288BBE, EA3436079F0D78BB76CD15F7, 7C8C5464933F6E34CF33578B, CAD598C03B7C93B4AF912E66, 184C5CCD9457D17375F9AE1C, 1913719A1E4E1803CD54D11F, 2D13D48857E2530BF41F70CB, 9200669E9DB4FE676A07CD77, D99C0F89D572BBF219A7B991, ); name = mouse; sourceTree = ""; }; BC7D6E54D9E9A3C9FB3E1C0A = {isa = PBXGroup; children = ( 73F0F1FA09AE9F7308AFCC3B, C6D9D6E03D4B740DDF9B3C57, F037091D4A3012EBBA1E808F, 0C6B7C49C4630C18F995C738, 10932841EA586B6969446549, A2EBD42F94D37FFF10F25985, B2BD3F284DBA9EDFFF80ECE1, 4E892CB7335853F8FE91B26F, 5DA9EA3E74C2AB870EC9CACB, 17D0D2AD3243F65FADB94446, 70F33D8D2F48D64188861C6C, AC3600881A53014EFC1CB8D2, 0E1F414FCC996E155B4DB5DF, ); name = keyboard; sourceTree = ""; }; 601A0E1AB8094CEDE18197C4 = {isa = PBXGroup; children = ( 358C6A8FDD14AF0BADFC200E, 1BBECE3C619C157F072748D9, 79C8D0C6D1444EAB781C46F3, 0E26995340F6E559281691DB, 74BE52ADFCAEFACF704E1269, 4120CBF145DA500C140BC666, 2B8FF1E4F8D48AEDE05224D5, A62BF9AB6EB0496F5BCE78B7, 3BCC9E4DFC3910F668DA3FF7, 241100DC52A0F56D071C8C4E, FCAC296E92A219D70EB96AD5, B8F25B3AB59A577E53304AC0, B36D9787DD79D0DED8D791F0, E0DB91A472A77866258D12B2, A88B3DDBD1939456E225E36E, 2DE7C6A69CC0096EF56E4049, BDDD1C149C23BCA4F501BEF7, 512D5182047E0B46E971A13D, 1A1C23D2F16F880FCD3B565E, 40B485A7CCC441C90EA92FBD, A6285ED9A26A9DA0A2931910, 277ADB563604EE1FB51FDAE7, 6B67DE0FF4487B060DCF31E1, A3BDCE78A0AE63BEA0DDE600, 69CC80F5871F1AA06689E3BA, A74BFBD7C3C18103B51F6342, 456837CE387595EFF549939B, ); name = widgets; sourceTree = ""; }; 1ADDC51A4430600E4AAAA5DB = {isa = PBXGroup; children = ( C7089BDB2F572546643160C1, A04410519258755461444678, E4BD5632ADD38CF8BAD38A76, 0BD502F6196E1FE7D9888A1C, 30DA52AA554A0249429AC3FC, D6238E383F396236E3A4C054, 30CA850D191ECD5F1F7B6A70, DA78B13D87626C49A2140FDC, 2EE8E77D21471265869C9B4A, 5A73A448137344953ED2BD32, A6BC854E7C5B932911B2AFF2, 43B80E11AC5121A2F4B8DD78, EEA020419EF58E90C10AAE26, 9EB2AE5A72227301C365568F, CDB41763FDE907C3C0E75374, 4C66D04A6A5FA514A10AA406, 263BE0BDE184A7184A118B46, 2B702EF83CBD217F8F9195F2, 67541565521633071C03BD35, ); name = windows; sourceTree = ""; }; BBA5875791623330D6DC95AB = {isa = PBXGroup; children = ( 10DF2A823B97BBC0BD840B9F, 989CD2B68A4EF90456E19ED9, E32D1C481161F063918F76AA, C06F64DF6D95D5C9C8B2D5F8, D94C07E10FC25EE303D64992, 937A2E7B951F5D527DF54245, ); name = menus; sourceTree = ""; }; 5D340809199E2AA65DF46FC0 = {isa = PBXGroup; children = ( 1676147A3FADD6D79FF42CDF, CD8B9E60EFE0A0ED368EE3D9, 7890AB8CBF31F9788E10DBD5, EA082125C757D1FD63BA38C5, 6A643B44198DCE6FFE057E9B, 428FA66F7D6FB46A64B438E1, 88A8F1D957ED293712DE0E23, C47BAAAD3DF91B17A7787941, 49FCD3BBF372EE7F6F143EA9, 2DDE8684F3C5CB4A781D72A5, F58760A8EE18630F97C7B646, 1D62103CFAB9245F2CF523EC, 1065FE461C00EABD9485BB93, 2E093A5506319EC68DA184F4, 53AA2F507FD9DE263E43B277, 8717F2B47F51F0473C041760, 08085F4282FC26BA8D377921, B8BDAFE861AD60BEC44D7ED5, 8838FC2F76E6D775B2E75F23, C09840AD421A11A244964AB5, 36A65D869B23D9987C676BCD, 560B074FDFF6F94477083076, CE045161909A4EADCE49629F, 2A1FF908BB6FEBAD912CDE8B, 11A95002F7CE796B7C27EAA7, C7A943716B2FD728EFAC84D1, 139D5B8276448B8BFDBA3F7F, E23EDF80FD5320232483D80F, 7B83011366B95CC61212E5D2, B56F4C53187D40137670DB1B, C7C8C7D58A08D1583E0C2E6B, 8329E2A86DF3E781B790F128, 6C52D68EDEA2D7ECA4CCC2BF, 58EE7977BC7FBB3523A910D9, 50C099C6D8CA6DBF95B0828D, 5D4FE2C580EFC84212CFBFB5, ); name = layout; sourceTree = ""; }; AC9C1779409BE4B43780B4C2 = {isa = PBXGroup; children = ( 182223C68F452171BE479C01, 3240A232A5C82A812A837A2F, 912E1A63093C3FA3BD2AFE61, AE68B9AA74EE6F138B3E0B94, 7338D006521EDC5C10EEF974, 791B204F13E056DA2644175D, 6CF95925EA874CFABAF7C284, A166FEC488A2EE5290FF0722, 215D455CD5A3BD7537F88630, 5595C04B0C1D8D8EBA119C8A, 38B737F6F0007F752EE380B6, 74CEBA45E0A8ECA5CFA9BEF7, B688441D29BB51A9C4E83CFC, 1339BD00EBF554E995968B6D, 4ABF4B55F979F2A88EB1B331, C2FFDDA61218A94403D5FE56, 355DBB46C4283779C367E97B, 09EB2AA32041290412E00D8B, ); name = buttons; sourceTree = ""; }; 5ED6933CBDAFE300C2ABD720 = {isa = PBXGroup; children = ( BB29289B196047505CF5EE6B, 541E4974C73E294DBA415BA0, F4BBD7DEBE0F1DD2CE45C411, 1BE21633CDF618F8D993F3BE, 193F42507FBE4E7A62D81E2C, F89584972F16A8EC49E5E74D, 531D198DE52845A4B641B6B3, E682A3A52BD15D5CA4933C12, A631CD93C2809211DD926938, 7CDA22D66C8FEDF1B644D041, 0B9867D5674933AF753A2CF6, 2F8041ECBF70D78604686D6B, 82AABF91CB005E5463F1D522, 2551FA5B61BFBEB5E0310B66, ); name = positioning; sourceTree = ""; }; C8A05D0DDC15576400097A2B = {isa = PBXGroup; children = ( 02F0BF69062E8D9583F13C83, A99853D3CB536CFDB6C91F98, FE4C496CFA9A1E786253B005, B3976635944EC69837499F9F, B033B7729D2D204BBD71BDD3, 2EB37CCC4FF8C40B015C0555, 77BD025036C8B02426E61C79, 7DE074DF0D3074275DBBF9B1, 6940E5FE7BC1ED1BB2258886, 2DAD09E643C29B6DE7F26EDF, 3855013A39E97B76B46E055E, 11CB66B1CBA64B205FDF2767, 02ABF8C447E1A47845F6027D, 842FE973E11AAEF49D77AFE3, 9461C1D2300CC3A91EC2D169, ); name = drawables; sourceTree = ""; }; 976CE92C0E6CA7669AF1C0CB = {isa = PBXGroup; children = ( 4F6768F8EF9CB4A34A501966, 4C13F19ECFF6CA7AB9C801AC, 8430FB57248237DDAD4CE4AD, 7B5560AEA0CB3E507C16140C, 5C5F8713DA326B5C6C559767, 98D55DE4706A31BCD28458C3, A966B620E1FB219BD4A4F3D9, F99F73DEBB0EB724142FA930, 4C9033415E05CD39408389AC, 99E8C71CC462DDDBC52D360C, E9A3E96E32C301EE817059C1, BC30642EEF908E1C7757690B, D45AD25E5AC67424EAE5A85F, 825690E8512078D4F8595CCD, ); name = properties; sourceTree = ""; }; 528B62250FF5AFE3DF0EB3C5 = {isa = PBXGroup; children = ( 4F56EAB8D09665602226930F, 73EC10FBCA420227E5A145F9, 4AEA921081036DD4C259B45F, 95568D274244E02150C7F417, 06DE336A39A9FEC47A8C2F06, 5C2DE230E3197CF04660851E, FD2A08CE74C6EBC90CD44A49, CE276E0CAE722EA80F7985BB, ); name = lookandfeel; sourceTree = ""; }; 1B6365C0EB9F304B264DC487 = {isa = PBXGroup; children = ( A1244D54910A10100ECF8EE2, FE22C972B67EC59701E1CC3C, 0D979051139C2AC633BB4B9C, DAFB19E49A6221854341BE2C, BF6E19C2CA2032242B7A2556, FDD9DA21786D445DCD01912A, 8AF04828A59F79DF2FD31E9C, 60BCBC74A3C12630E82631DE, 877B42968286AAD56527516A, 06496C804633EAB2003E5B19, 50C625257E68C3B8FDAE45A9, F48E6A27D809C49D42D3202C, 7DA9D4E06E9B9875EC3880AF, 7D2013E3BCFFD5A65D970BBD, E3E3CD4660C20BE120E8BB1B, F965E478C21D19EF32760A9C, 534098C590927D6768E57ACF, 857CE7D1DC614FCDD19F617D, C416D60EFF7F25E0080A94D1, DAACF5AFA6B6994384BA4984, 192EE3C990E80213984A44C2, E9BBEE1B3986E0829AA44133, ); name = filebrowser; sourceTree = ""; }; 2761E2946DEDCB0AA51DE683 = {isa = PBXGroup; children = ( 06903FD63E508771C576431D, F779C79AC37C83A60B997641, 151ADDBE74B99337BC2C2586, CF626DE27EB763C9BCFD4F15, 01AD7BA1E1B20309DC969EE2, CAD3749B6A5BDB2BB00D3498, 3B61B715F29A0AEAEF73CCBA, 2BC7AB69474D7E280098B893, 818729A3311F3A7B8DB03764, ); name = commands; sourceTree = ""; }; 9E82D25138749954193F1450 = {isa = PBXGroup; children = ( B3E2A6A5C59E1462DF544A06, 81516145E8F737D290135758, BCACFA5E8370800EB6487CC4, 047E385F21CC5AD6238B120E, ); name = misc; sourceTree = ""; }; 0D77CC5C0E81446BEBBFA067 = {isa = PBXGroup; children = ( 5434953F55BD35F74D59D980, 6A3315B465362CD3AF66D306, ); name = application; sourceTree = ""; }; 23D479C4AE179B8DDF9FE026 = {isa = PBXGroup; children = ( 01F49D3FD943424005FB512F, DD5F4BFEA497212883A869A9, 7DA062415E40E3BEC0B847FE, DEB0E2F28130100B1EFD250E, F667601C17DC912B73B817DE, C509F69A37C9A9053D6E9546, 146FF5324D969925F258D045, 37C7B4ECD40F15EFB12D58AD, 554678AFD58E3E3A2B0BE43D, 4A4D3CCCDD2C972CA6715014, B37E6323D9D3C3CA68672D6B, A2F403F649AC0AA7CA47EF65, 9918F60F5CC834C782543712, 70276A64A50E5B56492853DD, 6A4AE0C59C1210D28A8C8AF7, 2F19C814598FC304CA841242, ); name = native; sourceTree = ""; }; 9C4033FFA3C21A4CEDF67C73 = {isa = PBXGroup; children = ( F1DA02E10E12854B9398E8C0, 3750E06D980F78DF6C18B6D2, BC7D6E54D9E9A3C9FB3E1C0A, 601A0E1AB8094CEDE18197C4, 1ADDC51A4430600E4AAAA5DB, BBA5875791623330D6DC95AB, 5D340809199E2AA65DF46FC0, AC9C1779409BE4B43780B4C2, 5ED6933CBDAFE300C2ABD720, C8A05D0DDC15576400097A2B, 976CE92C0E6CA7669AF1C0CB, 528B62250FF5AFE3DF0EB3C5, 1B6365C0EB9F304B264DC487, 2761E2946DEDCB0AA51DE683, 9E82D25138749954193F1450, 0D77CC5C0E81446BEBBFA067, 23D479C4AE179B8DDF9FE026, FAC5DDBFB00254C35D8987F2, 063357A85BA244642BE1274A, ); name = "juce_gui_basics"; sourceTree = ""; }; DF114C5936833878A46997BB = {isa = PBXGroup; children = ( DB748B0D9227F5345683CF7A, 436BAE91A167BB6107F261B4, 728E67FDBD3660742A33C7B6, 359FD60323CE3BA7B25008DD, C1CBC5B338453DA492698C3F, 577378064273DA54B9BED3F5, 56BCAE594E40E21699F9337E, 06B6D19CE5691310DEF50DBC, 6B4AF4E4BE36B99E00BFE839, D8EB3FEADD047C7AEFF9C8C8, D7B1BBA8FE789A80E86CEA03, ED3DE86815324354C48631D0, ); name = "code_editor"; sourceTree = ""; }; DB2F1179FFAFF392444F4FDE = {isa = PBXGroup; children = ( E4981056661C3F251FECEC32, F704F70F80BA62A48F3651BF, ); name = documents; sourceTree = ""; }; 1562C9D9FEDD7C31F674E2BB = {isa = PBXGroup; children = ( 20A4427A1F9CCC5FC58AA159, 57D6E8A8E8D871EB1DEF6A5F, 17ADC8ECFA616CF392783757, ); name = embedding; sourceTree = ""; }; 488105705659833F97300471 = {isa = PBXGroup; children = ( 0876934F047839205147DB99, 408C5E78F7DE038844E18D31, 6EBA81213324106593EF5DF8, 475B1787F548E4FB11C63CD3, 0A25E42359372E51ADB0123C, 376F6150287E759E77B824BC, DADF2C478777BA8EEBB55CDD, 201E7DB01624212F01B85F5E, 94D8CEE59AC2644453705A74, AC3132AD4826E77E807ACD3D, B1C05A8D59655916054612D8, 293678404D17012C6E402AA4, AC043128E8D43D6EA4E29824, A464874D0B8C63AA78C937B7, 10B6D087BD60ECFE08F157AC, 2A5FA90E69311FB8A18EC3B2, 1E00488AE073FB510E4BE10D, 00869109FF554F8DB553761D, 6163B3DFD893F55523113A40, D80487E6482EB12BF2C6BD22, ); name = misc; sourceTree = ""; }; D9F37F228663829FCEC732D3 = {isa = PBXGroup; children = ( 106F27CF32C79FAEE768ABA3, D93CE990D75211F4A5EBB4F7, 4FE6B5F0E1AC94CFA6BCC19A, 2F8D57F15D63118E33CB0639, A4A64EF73E28AFFBD826AD60, 8D3B18C8A23499AB88F6B700, 1713D0650DCFA516EBF595DF, F98BEA2FEE66A3DEAD9D43B1, 2E524CE76F1B735AE8072E03, 1697DAEA5B5B105AE1C48E12, 37E835EA1318A5D504282D90, B589CF5248A17A319E5EC80D, ); name = native; sourceTree = ""; }; 7FE4C9E90512F2CE899CFC51 = {isa = PBXGroup; children = ( DF114C5936833878A46997BB, DB2F1179FFAFF392444F4FDE, 1562C9D9FEDD7C31F674E2BB, 488105705659833F97300471, D9F37F228663829FCEC732D3, B6EFD8D461F7BC1CA4954B69, 1F2FF9F4A1F8325AD3F19EA7, ); name = "juce_gui_extra"; sourceTree = ""; }; C351D1801F7000CF7EB16A39 = {isa = PBXGroup; children = ( A1F10BB1A2745DC95DDDE0D6, D6AB846628BE74C5349C95CA, 6257CEA3C6EADCB94E25010F, 5CAED9BFE11E46C835DC9417, 8366D5DB3CBA57E06C1D896C, 58F81EC0B3505F092DEBAA30, 94EC001CF772AFBA6D95F922, 1DB91DA41FDDC9D2F628C7E8, 810292CC81EC98F57F64D79B, 1225AF360A43D61516016CF9, 46C5401358EA7CF2D22FFC26, 77D7DE86E82C779B3DAA8678, E0565A19E2589729259C7116, 4212EA9CE0B9AA4986108D9D, FC1BA0654179A585DF5B9DC5, 6BA2D0C9FB49A5C3E0554000, AC25983CE9B938D1DB002A98, ); name = opengl; sourceTree = ""; }; F873F1C35B16AE04A75E99A0 = {isa = PBXGroup; children = ( FF34F4ED0C44B2BA4FBF22AA, E8DBB02B17A6E144D08E4CC7, 6308DABB4145FBD330B7DA5A, 8EF11A0D1370915CA7AF4F64, ); name = geometry; sourceTree = ""; }; 8EEE76AA4EC057A4D2507E39 = {isa = PBXGroup; children = ( AB3C484314062E809AC41132, 5E69510D460EEB7754976CC8, ); name = utils; sourceTree = ""; }; DFBBD0DCA08C2A6E552B7643 = {isa = PBXGroup; children = ( 200A1B6B96E1089110CEAD48, 7B81083FC4CCD2D096D93162, F5B288379859F5C9F4FB83BB, E8B785D8DD9C49BC7FF5EA75, 51DD2ECC1AED271892E87814, FC63A33CA2E025F5C4C22CD3, 8139DFF71A397BB4FC1C4413, ); name = native; sourceTree = ""; }; C47DD018E100D8FA5BDEBB7E = {isa = PBXGroup; children = ( C351D1801F7000CF7EB16A39, F873F1C35B16AE04A75E99A0, 8EEE76AA4EC057A4D2507E39, DFBBD0DCA08C2A6E552B7643, F4AD24F8DDD10C938759CEB9, 14A37C392DF6CF1CDB64612D, ); name = "juce_opengl"; sourceTree = ""; }; D0F919BD5E25E00651040936 = {isa = PBXGroup; children = ( 29930414E0C7FD5EFC7F2095, 36C9E79611229727DF5E5836, ); name = playback; sourceTree = ""; }; DBDA6BAA1B84CA0C6F838008 = {isa = PBXGroup; children = ( 3EC73BE7C098A631E5D5107D, 29C7AE377B006C00D4293C59, ); name = capture; sourceTree = ""; }; 75E1163D29EDCDF203433D84 = {isa = PBXGroup; children = ( 3009F5CB4D15119D2C680F98, C8CABD53634D53E64132CAAD, CE89334A964AFF33758CBDEB, 5D475A368AC24E639B8A3797, 97C3A2B9575153E4CA0537B7, C4CE4565F5D41303888F6A59, ); name = native; sourceTree = ""; }; D3C805B4AB4B31DFB20936B9 = {isa = PBXGroup; children = ( D0F919BD5E25E00651040936, DBDA6BAA1B84CA0C6F838008, 75E1163D29EDCDF203433D84, 178D5499D90E6C10AA778456, B6874BAE87F275944C07B498, ); name = "juce_video"; sourceTree = ""; }; 713498D20048E6A3D46E2D0B = {isa = PBXGroup; children = ( EAD085E39B98D2F88E2854DA, B5BC400B03F73362F263D1FC, 43D650FDDBAA28AE94A8942B, 326CA890D2481B82367C6F3A, BE68248271118CC1AB328F34, B92F6CB95B8D46F185B51F43, 7AB76D65BF8ACD7C0CCB6169, AED3AAA07A81C88CC540827D, 0B9FFA8B31858A3B3DFC06C3, C217E6D7051F0944FFE75A52, A3212051A49A69AC9D00F91B, 9C4033FFA3C21A4CEDF67C73, 7FE4C9E90512F2CE899CFC51, C47DD018E100D8FA5BDEBB7E, D3C805B4AB4B31DFB20936B9, ); name = "Juce Modules"; sourceTree = ""; }; AC3B3E6535CA727AC6C8B1F7 = {isa = PBXGroup; children = ( 4975DB849F14413317E94609, 8D70A7277DDD7B7974E9F178, 016565008F3FF4F39192ACA6, 0349FEE5DA18067918536934, 1E0453D8A9741695357567E3, 40D267701C8FF75121454D79, 66C5D2F0D9B9ABA7F4A386E8, 5B466272F3B821BE88BAC205, ED6224ABC715AAB68661F4D4, 4E49D12CA5C42721F532DCD6, B9D26C6C4CED62E6708B6865, 63AC834818EFF45708101F9A, 9079FD325609A4E67E44F3ED, B27A7B237782F9E15E4BF8D5, 09D51FD6DE5DF526BB36B4D3, 141036E097DAC47FB6F9CA80, 786CF1CA66289DB77845F8E9, 9895036432E9AE55EE16323F, 59E2B82491E344257F84FC40, ); name = "Juce Library Code"; sourceTree = ""; }; 821D88BA60F316F96BC8A86D = {isa = PBXGroup; children = ( 91F4E52A1B31FB5998FEF665, F2066125C7C0B19E1065BF1D, AEF26EF11BEBA847F152A1D5, ); name = Resources; sourceTree = ""; }; 9439CB46EE08D16AAA26A203 = {isa = PBXGroup; children = ( 8D7BDA5CDDCCD2F7BE67037A, 8452076B5EAE822DD445458F, 5FAB9E7F62B84DBAA98A0004, 37CB4A819F38E7AF9C77A8CB, EACCBFA17F4D07ECE058EEBB, FBCD860CD7113A3136B127C8, 8E87696FD85E6134968D4341, 5B1433D89E82F55DA4D004B1, 033BE48C56ED09055876AFB9, C68A1D6B6EAA0B70553FF6D3, ); name = Frameworks; sourceTree = ""; }; 9EB09FCC1FD3F263F24203C5 = {isa = PBXGroup; children = ( 229D2DAADACF15540C3BBD15, ); name = Products; sourceTree = ""; }; 605D88E415A9989447F78548 = {isa = PBXGroup; children = ( DAD5A945FFB6D6920BF0D1F6, 713498D20048E6A3D46E2D0B, AC3B3E6535CA727AC6C8B1F7, 821D88BA60F316F96BC8A86D, 9439CB46EE08D16AAA26A203, 9EB09FCC1FD3F263F24203C5, ); name = Source; sourceTree = ""; }; D0259E85380471FB442A4B44 = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "_DEBUG=1", "DEBUG=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_IPHONE_5BC26AE3=1", "JUCE_APP_VERSION=3.0.0", "JUCE_APP_VERSION_HEX=0x30000", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; }; name = Debug; }; 80E4DBEBE0CE7D218C89F78C = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; DEAD_CODE_STRIPPING = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 3; GCC_PREPROCESSOR_DEFINITIONS = ( "_NDEBUG=1", "NDEBUG=1", "JUCE_UNIT_TESTS=1", "JUCER_XCODE_IPHONE_5BC26AE3=1", "JUCE_APP_VERSION=3.0.0", "JUCE_APP_VERSION_HEX=0x30000", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; }; name = Release; }; A16C0416417EF9DF7B09973F = {isa = XCBuildConfiguration; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "JuceDemo"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Debug; }; 5D9A258B559C20D1603B9B9F = {isa = XCBuildConfiguration; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "JuceDemo"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Release; }; E3E8152B5B6326971AA2F802 = {isa = XCConfigurationList; buildConfigurations = ( A16C0416417EF9DF7B09973F, 5D9A258B559C20D1603B9B9F, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 3E10D74DDAF399AFE44EAE00 = {isa = XCConfigurationList; buildConfigurations = ( D0259E85380471FB442A4B44, 80E4DBEBE0CE7D218C89F78C, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 8FEB5329109B581E7C40CEBC = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 903D7CA9DAB57660179C9816, 0C2591D2A41D00D364570D9B, ); runOnlyForDeploymentPostprocessing = 0; }; A1B40A40EED2EBD970739FBF = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 9E8944195DB3FCA7AC031CE5, E036E92901E0B69FCDF451DC, E95494B76EDE178B2969C527, 06ACE6F5252696569D99CDE5, 7FBBD57A4D5BF1101490D3E8, 3E91F110826EDA152862B57D, FA318C2AC336BAB1713BE5A7, 5FA25CA10C3E028E4E48B32E, 68A852C810EC2084A62E277C, DBC8796D834FEE0F1BF81BB4, 0FFFF4C3E1E3731E7EE281AD, EA7A6F1BBC7EB6740841C7B0, AEAFB0AE4BB38EF3EAC34EBA, 587D594CCB99791F4D724DB4, 40D223F10936E34918B48639, F739D6D21483E3498985C7AF, E4A67DD76D4D063F547F0844, 257CBA785DEDAF53F4E9BF60, 9C30D9613D76EEFDB1653F34, B810E94ECBCA231F60EBEA5F, 15B2A7314D1E347D65EC664D, 7F933AA1FB06796E6D67C6E2, 251D94E4E171A4A2B67104E6, 52B925A3C2C3D9B8CB7E42C0, B65EF8DC596033D841E653C4, B402A461C4EE2203251F9BF1, 2346D126B3690390A0925F06, C54286354BE46CB39B4C5225, FE559832F5E168F0FF04CB6E, E635FA4F49200CDAE3E4E6F0, CDC1A7E9F07FBFDD5DA92031, 5B96583E8DAA4EA4EA1ACF18, 372B92C7E54D51285649FDD1, 79B3AB44DF87025EBA9917E3, DEB871CA78557347FA3E9ECF, F95DB56FBBDFA7F55D265B22, 6624011B8E83912B5D05BA77, 4EDD1F01620725E627247B74, A1F184ABE297300A9E58BE94, 41F9A5936E54187528B817E9, 7BEA73E4BB71CE05E542A6E8, F11E1D83596BC7786FC69405, 67EB8B44CAD18BA4AF577528, 445DE2471E5D168763AF149B, 795A76FB056FA340861A8C51, E96BBEAA081BFD7B244B120C, FEDF1AA6CC2486AE0C1267C1, 47F2181361C8EB7D67C89169, 7CA1524D7DE0C18C1F070C97, 64A5DA788C3DAC2F02BBDA0F, 633491D8F37C87F3D426F0FE, AC074F24DB676919ABF06188, BFEF0063952A3A4DD92CB068, D39B2783DD6DB671D8BAC0EE, 7FDB32957337BE65186DA1A2, 52637F000CB62E13F2D98026, ); runOnlyForDeploymentPostprocessing = 0; }; 62864F0322651D6B1B57BBA6 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E16EA7E816B50766F3AE4F88, BB7001D6FD448E6C0AAE4F30, 213167931DD11DF54592222E, D8AC2AB9573F991BFDFB431E, 4E306BFA283851066E0DA96E, 78A2A3F0D3D555397E3C3CF7, 21C66018A589DB4DCCA7B48B, 98416DF4B2FD4D550364EBE8, 9855E6AE1E9125FC6C3673D4, 1562996CAD648AAC922C763F, ); runOnlyForDeploymentPostprocessing = 0; }; 5EA17FD285246351AFA8AF1E = {isa = PBXNativeTarget; buildConfigurationList = 3E10D74DDAF399AFE44EAE00; buildPhases = ( 8FEB5329109B581E7C40CEBC, A1B40A40EED2EBD970739FBF, 62864F0322651D6B1B57BBA6, ); buildRules = ( ); dependencies = ( ); name = JuceDemo; productName = JuceDemo; productReference = 229D2DAADACF15540C3BBD15; productInstallPath = "$(HOME)/Applications"; productType = "com.apple.product-type.application"; }; A97F75347E57A9C1AF731F1D = {isa = PBXProject; buildConfigurationList = E3E8152B5B6326971AA2F802; attributes = { LastUpgradeCheck = 0440; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 605D88E415A9989447F78548; projectDirPath = ""; projectRoot = ""; targets = ( 5EA17FD285246351AFA8AF1E ); }; }; rootObject = A97F75347E57A9C1AF731F1D; } JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/000077500000000000000000000000001263452017400203575ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/000077500000000000000000000000001263452017400234205ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/000077500000000000000000000000001263452017400271155ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Contents.json000066400000000000000000000046151263452017400316130ustar00rootroot00000000000000{ "images": [ { "idiom": "iphone", "size": "29x29", "filename": "Icon-Small.png", "scale": "1x" }, { "idiom": "iphone", "size": "29x29", "filename": "Icon-Small@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "29x29", "filename": "Icon-Small@3x.png", "scale": "3x" }, { "idiom": "iphone", "size": "40x40", "filename": "Icon-Spotlight-40@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "40x40", "filename": "Icon-Spotlight-40@3x.png", "scale": "3x" }, { "idiom": "iphone", "size": "57x57", "filename": "Icon.png", "scale": "1x" }, { "idiom": "iphone", "size": "57x57", "filename": "Icon@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "60x60", "filename": "Icon-60@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "60x60", "filename": "Icon-@3x.png", "scale": "3x" }, { "idiom": "ipad", "size": "29x29", "filename": "Icon-Small-1.png", "scale": "1x" }, { "idiom": "ipad", "size": "29x29", "filename": "Icon-Small@2x-1.png", "scale": "2x" }, { "idiom": "ipad", "size": "40x40", "filename": "Icon-Spotlight-40.png", "scale": "1x" }, { "idiom": "ipad", "size": "40x40", "filename": "Icon-Spotlight-40@2x-1.png", "scale": "2x" }, { "idiom": "ipad", "size": "50x50", "filename": "Icon-Small-50.png", "scale": "1x" }, { "idiom": "ipad", "size": "50x50", "filename": "Icon-Small-50@2x.png", "scale": "2x" }, { "idiom": "ipad", "size": "72x72", "filename": "Icon-72.png", "scale": "1x" }, { "idiom": "ipad", "size": "72x72", "filename": "Icon-72@2x.png", "scale": "2x" }, { "idiom": "ipad", "size": "76x76", "filename": "Icon-76.png", "scale": "1x" }, { "idiom": "ipad", "size": "76x76", "filename": "Icon-76@2x.png", "scale": "2x" } ], "info": { "version": 1, "author": "xcode" } }JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png000066400000000000000000000253441263452017400313200ustar00rootroot00000000000000PNG  IHDRxx9d6sBIT|d IDATxyx\y:ލ} HJJD-bي=MyQb9Xwo2w,MO|3gЗ >;wnքk̐YMU!(Z !RȐ2 MaI J;2Z$Z)ň0g|U]t4\Y;Xq#a+s(OIZϼ=O>v'ZkĕCɮo?׺{KFw;Qdyt %7hltj$j 5 Bb-ߺ#ESOuFq=,(F&jDa p+upĥRNG\S;-fW2:O|FJn8J8v3nO+^w+atrx+jU/KaO9#_1Fl-F&M+.sαUCCy1:ƎQi9w92<}`Ww78-;T`S( Tqc/Q]u ;}"FXǡlToA!?ڈULszLi1'",EΣ b|-;v^+f+`~CHq"YŇ>M#`rGktzx-pq T e#3Li[C*a9pf0# +jB\p[o1n07f!x=^y6oǔ9'V.9,P܌Yc @%N3grD IU@5qgT ՂF2:+m>uc JΝ;eg C:N[Ȳϳxk7pڋ,QHKD;2X V)$% *u$1R]6J)"E^[tUCW! WWK&>غ rKf?v.Zt7܊p')C4Fc]/@Haa[{p|B_BC cEtTr=MKo0^Ԕo aiC k?R&L}߽|P=(_{%П7|!C֠4=r! ;X:Py}ن0YmTt%BayZ9ih[vN¼?$- TRq,|~r*b/!cHC*OR=qL_}?\bhZTB f[\Sy E{Eۅ% $*u~dc l^"->\;4U4l-uh;s oN8e-a׳B OH{C3䟃0^kl؎{nR'<85f‡L2 Y`Y[>M،e g}bD(o!0k_}oot _ؚQnɡIBb,5 An4}.jgWwT% n4Wmq{A2mofo47-߈9B%% tzt i,$2Ԉ^99Q.iG(Z4JAĊ3#рĶUz%1΋-f㛆O~z0rJ xIsXR'#R @Kjh7:5R ^ zI+o1|2뺭 1;qO!FЊV\x7oo0|٩2TOK'v2Hh'}6܁vF3VZU00"MV| tK >Jre%@k''C\qj+r`5ӵ9fT]|FmUS^9k#Z靾!qz3_9Zy ̚A01?Y5ңp3H>L˧2 U0rA#jwڽ9\ ` >UOt81DnnL+ğ;7͒\՟Z$ #ڄlfIOj䇸rNv%7nSM,ͺ2RPQvqN낦] mQK'XEh%spOn;4 (}l/'y#?QDܴl- I䶒 n=г TNut+s !n:bi9Dp6aƃҗGײ߽~_Kh:DE?Qrfa`DV`-ԑn%=Aygp{PIJ\5)7FoK'x w +ǿe98]}lٴt$Gm{'7}tŴɋ !eVfٵSGøV_By>Yu͔6ol.>sGY;?fľ򥛯DmRTYڒM QGI~m& u2FI#%NUQz͔57=/E.VIKhL4e#>شeզ8&!B 4wqUnI2ޘmsb|&[(r-뿚sk^@5Q1r3HNnŵxSZT !е_9>;5fBRٰЍ7q2^B T=c<ޚ܌UZK"PH%u(*죤Fa^kt:z&%[(Tg?Qdm_mUl[,+*JȌC8 s'u(ōnE%Y+ \G9߲ACuЃA6VIeF 7 @uc.u&&>L)l抛0rVvm2 P@)6F~mmYȢE#9OnypEb{ U ;7ol !\qߡV\7_;_\e E)ɐ) qO2N9!B c ,5N@Sa2+M*G0@-5H)b)l)P;$xEKƳWlzNv{ S oϏq(m,JHd%?-

-N"{|mbM._E`oa,3d\[0ܬ-“Ie?mJUWOUS%^ މh*<4a"sMso`xg qr -_y.­QqZvN?g2r'MM aPl bA4lg$ҭ!\*8޿;#܁FJ} 'rF !BtLmHp}Ct6,7⛴zC=xcg;}5No[Ƌ Z%ϖS3ЀЕȌ[ V>U [n`wO  $- npe OѢ0dL-HaZBP oEsR(۳k9PNa8.5@[ xMaQBhӂREtR(NXݲ\bdƃ9Ƴɒ_Ya$t/$d]$dvN aEhA،3SjTU](LHDD|EHf=HPiΒ+Yu V-9p_>r . pJH !CJy`]G%eg) #*$;' zR㏈DNj*d( |V܃WLRr_%C.`rM0;:_xΟ/:VA3,zt 0~#FSo*ֱ~BϞ"ϏfVS#݄Qy~51Pjix;1+&~J{drUrJ LѴ7QB'ugrxg\(Ҁ0 DفoFL$(obXOiԔ\IeQ)ZSig§=:~)@ƴi;{V}fm//d5W3ۂ,Ҝ9?Or`" u0ׯwɵea66SYXB$+{!fC' 1v h0F@$12^ze\xȓO~ —%Ht/Ǟ?HLL9j=I^Γ\War*H|S&IGٌ:Q=J1ng\8z0d1{h:l,/X00W rm6Onߡn~sLWi_`ɡ<6,_2uqdI"I9HGbpg=ݏ=8jbZ6W-_ Cb55]r<zzGiZ{۽\WaӪ *Klc&=Ҫ=Oǎplx"_zd42&t^ɫ ]j "5ZdeuDdG^_k[kڽwٶ9k=qjxgQ,|u]aMNL_OwhiH%aKy.ϟz/WG73Z#Z謧m=5Xeè1\ }J~ !5&+cD@o;BI+kbD&w^{hРFRO̵s&G_UNddT:ۤZ7"JoߥJU%a0Kݿ)w߽g:۫֊^z,2` 䌥a!$KJR43'V{+~<9#Sϧo"x]l{`Z /M4\VBSwj9Nï/iy:Gj,/ recp`p/ J˾Ci}&1duks_cr{ IDATz'wРrϓ$s%lZN!@)U)8G×;r ߥ…ƪp6k*ݦ *t//v?NM⥼?юmż ALwk89z;3MfbH|;;qۻAc"e^͙ -6&Kѵ D|FF6) F\Gex納r܌T8r/*|Mt[ʞ's@CXW6cmB);qfW.И,5J1lUeqeLPvWLn[=N\ݻ^6}6脢2e5z _v$^$bPo(igeGi{y)F2rg;7ꖴqYMv~K?N^~íӒI/ô5{=qr0w=JgBؑ9%7^L2ιPi |#Com{>\ol#}iQ^94uZ;hSlS?Ys$h;VMQAaŝQ: \*MpyrEhda$8d\X¯oYW!`Mخgҽ<\wtF+^RVƟyUG84^xOb̀ViN'JhM1eMՕRoX]6g4GMRs%W}U9,6(`3l;'x|6t)4,c6XtWҽrʊ1/w{Z+bk.pN}jƵ=<%?F;~8){ZزmMl-rl/h Zk+"\V8HВMcZ7jRwF#Q_ 34|wN(pRZ+[^!R10(l75vwC'xZX VU"$CJ9`Gg3佌˸˸˸˸˸?!~ZaIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-72.png000066400000000000000000000114001263452017400307350ustar00rootroot00000000000000PNG  IHDRHHUGsBIT|dIDATx{tTս?{3L@ Hx`UVb"}X._.ZޫTZ_qIkQT-z5~$d}$<&j]|ך;}~}qq_WqӒ%n(g:d@JSKaLCl[fBZoٰrO?һ&8s6tRz4egԬh[Ve6۵7/X$y^O6W9At|!$0 ̡?Lg"V zwEi-V_;n#dGOO^",CqŔflmZil+Wi u Y_*cI+Ab3?d\dr܃rh5[6Nj4o=ܢlBP-ؐ.B^w X" P9seR#FTaAnǮ݁ !qĈ?'ůAǐȌH(w ;L~Q_fkf4u׭xŲ2m]י~mHS~ f؛}JGm>9e {;" 2Ivk~Wh>FG}[㧬xh=QqUf7k[D¥S1Q0`sŔ>iEgI.˳$)34\~0}@"^{-k5m7I&fk>Gجɉ/E߱mT j0}su`GG(ZVъs]nc??]}, %\=v<1y t(5$0;EygH5OWϮ&-}ZjNY8 rg'Hclj} :9iTb;WIQ)^fgj7%.5=A[N n @|D>z1k}&ypnnë<=33}&;U)r %v-2dV2I886]U}'o݅Զk B#nmxbMGzRq #9ڜ+</}';Y[q6E!}yx/+$I8x>:ͫעu,W>L9)d6]8i`!Ffh鵇gqO<#syX;FRu\v?G V8N{G4WXm {2Y<4AǝS?^gP`B}RW6s ?nn"T`w&af=u &u$F^"ޚAG\I;!ElH-L`1miz.nѫPF+_"=YnjBrA:eu^kZuC|o!Rϛl氞Dp~+dNb|T| @ j|n2P_ә$ K5%)f,,g̼JH9?I9hC^[[~*J&-ErѪsVm`L扌 NDkTz3 @h+[ >#_E'%R#Gz9_F< N3 .3\t7Y|m!DF3.k ]XJjY#:i $ ;m:xM1[hx< 7ŹuOJteRiRs䰭v `E[Lv@Hud!<:;J4ҲN7)A)K*xՎ~9 Tԏ'OATs`8qD[k;v"b%8Ɩ1IG0G&Y﫴u=PcK;H֙7rUBnVOb[;7l+ZжmZ]x \Xiw&c7ҳFMLYa,m@Z] VXQAkΦĂQRp9\r60oJZU8,&4E8R٘$cyFzU/6DPYݠEs0Gק蜁6O_]։O"X\_lѦ>l޺P֚Z]-,ΣwWt~~7h-m;V~R*[)dE9Z*O~1FL/fœ)_k `̝8H̜%AE'hVL}kRಋm$nӚP9K>9j IWLǛO쀑s8 B:.*>tĎ~kmvtڼ3>|f)W-zncQ; '˝GpX6%N$jPe Bap|=I3By}v'Zv-VT_tҥc Hyo3{| =oqyP+M\N\2`ʐ '˓F6n5u֬5o^q_1IzCBdn5CP+cqd/GkVD6ڬ0ݼ]go:\ Ln{ujѳjшedpk;RĔ&v6ŸJ}C=l݋XBR [Wnl5Eg\t8w1dᐧ|ojx74++_1!J(TJKStXɐzmvkuy}88_TIYIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png000066400000000000000000000241071263452017400313170ustar00rootroot00000000000000PNG  IHDRFsBIT|d IDATxy|TƟs5e2$$@VA (Unֽj}}-[*;nRWV )=d1,sN23dB'33{s~wn馛n馛n馛n馛n ݀Tzz[{auF, -=M6I"v:07ńG/^x0pT"FJQqSsz_?M,ZgnȔeQ0 ,B?*QF#WJE}67}f wg]0(}#=%eDN| L$ -Fq{jK"8+tsf{Po B>:c8 b` ?:ȠUVV~/~H̕]V@33ɿ7 y7p0F:1B8d7͘1z+2 6Xt0 fy#!d&AT|),:F5r4jP%:q1H$y>)}%t9]`͚q!zu,Clҋ1<{7i܊ +py!"f[i'43*RR@׾~=Ew7!uBf ŅWcd΅ ]Ōy-'@5P' ~ pOA,J&0F {gg b98F2}۰Sl5UWǢ{#4s&xӍ/5|Ơ P5" ꮃ\uh5 :Τ~ krT1@ȟ ]  BFvCQ.caZ^}v)bI"t?/[33pxd1\wb|>msGڕϩ{TMuxp\>1(Ë;Qk^g͛SWNC,o(fm\ߞì+8W&\# OE>8XnD8i-1׃)1]8ff$*bK*|zx^X!QJܰ٠cV[`F `h\(HzVB=u-`y>`k 2 h{ˎ]߂|U"H[kX m)ItJ/wtSzހio”^7kELA)y[I#A?n %1 ²#+CI y7+5> /\2Y:nzkY<1Ÿ(=/P0OC9hWxnCTh^ +UOwo;IW'Yr6`D}y}2f?\~dNb ơOKQX]6p- l( p[z82:]퉲﷯yNBïu@:7#LjT u$*9a3ڱaKHa5k_]K&MDIеoM׸Lqc ~ LQyNxɋ@]0(M @и=Fx#ɔa3|,u|3_doZˍxckOb I(ehfJAU 0 9x윗S Ǖ3/o"k2ڙp\2j ܹ 324@m8#FMxW5eZv̜Ss`]$T@%sJ6krw'Ǽ|sw.R?MRPO%|L uO^맼0"a zqӃ;F}i}žD7?Kd$r7`eݸW?8;"3M\>y1]Tp7@@B&ti[Z}9CGG4]\o~nGլ躗gп0Aï):smk\@lά \39*UCm߽y ZzUeq #gB?,dWEȟàL4toZ ך`J-Ͻ goZȿ,Q(D6D\%p7NUiYWq<7.]G!\R3?ʒ#<&hdyE]sp[ 3׵)4K~R w\D@u8^הOY6E=ǴR! t #WR[s||8j ̊)c+_'p7-D:(>UOz_K8bgb@5 ,ydͅ>X} p,| Ln_{b3Cx_wV`( tG3 WsSr='cl3>z "ΰLGа?8Gw {R8Wd= &!߹ަi*WCV:WGw iJݳe}3`@rc&zq6|N2=q0tY$ P8@F?_QÈ뺄N!z_bxo"K޽ ]of ZGxQ}zNGM*Ix۽ +1Kp0OUE0͜wƎdf{p$(ax<ۖ#qib >3m흦}F f̹PL |OUnjspO}1^&a{QJH2`%=6/4[:N zkGu %#kRlI>|N{~4Bx]tӷ<pCINK&`6tON4bE: b,Z c ܠ=brФ9K4PKAI] бg6:lLIBtt.QWΉ~~,j {Ol2c ί_GgrmudΒay!B{yO}Q Q{F- Str@~!I <*sͻp~PTCti#=0YD cfL$B.1qN,ڬj.]8 9rTýi\k젋I 3yț@2[ٰ a92--^  ar ^j ?zR^t[{RM b,9y$EpH38=Nq d[8}f @ fzLͮo1mp  p:`jSD:R ^dY%H}]0%-BuNB;}WnR?! uV Ѯ32!p-`(:U Z.!?܉W_)c?aJ@j~o"*.O> /w`G%^xr#cu>QvքCi Ctw =Q ֫ 򢩪0d22zXU( /㭭U"}TzN?~ 7lUï^|MU?5xe1mS|ܠ|)zyyRa!3MeXGLw0PaN8/PR| \nHN|@9dGZ H= Z@U2x[B_h;s !5q0MMuIIH8طb[5Vk,QQ 9{MLei &c/O@U)ʜ4/g2px>ZTWcTf㠞;UZ5K+ڿot/f(aB2Qenyg-X@La#9QquF{Ù<Ԍ W>sm櫧!{5؅K_| /qnqTy٠R g `ƘemQ hciy!$h=vZL½w`- 󄒪f>6ML%`98NtUVZ@{+z2v8Bp!KD@[&w1"F02m:%)Z:WafA;RW>F*6n$d6Z-IlرM1b~\vPv`b`3qi\D"U!ѷ׮ bUwb7!UVfZDuܑ~pgA&N6ӌ:~ŋ-R"k1 jo\iaOcH0!0]9%֪cU]'<)tܙfVp;9*\/Zw["Umr':E,^i.I/:l8!oO|_]Kti$R:43�=շIgVQrfT#ݠ~jPE d]:'LOOpX]8$6PU䘄$1 s"bu+?h5%u.Y5;ش.$= Y># wRJ2h>Mzr;v+g 8=AYjh,^}bH-)aDfCCwUu Sd2i޽yu?']jOH;G<·/ J"f#!y8"-xo GΩe 1F_A'B>0M8[7 I/m6ε]=D_v>Z}Jka5އBϏ h|F.FtCw7v$gxNF^E 5{!8GYݛ Gw_%Y'BWMxfێ$}Htld.Z pMXx`jSP%EMYPJQcّwBڦ=fe# N#f^VД^N1(ODܱL q |՟XU-6Uiwz]nƋD6.(~m՗2ɫ}oƣq?y$ܙˎ a2L\( P(20 E[FV3œt̚4P3ꢌ/}Ok w|r &~1 O~z^Mkq˵z.)`pü;;6ޯP}uD%sl?]^eN!ݬ]%S  iZM߻v+I\#TTTCZO>/[6-FE7Lӧ L@pev7b|ӛcYP'Lo b^|5(ev>Å m$ mf7Ӵ#<bGa7Eޛ)/7Q _ico0QC:GRp;[JS'p'< liz袘k/Pno@xO! 0ZRJ@5yuFp0:Sz݈~%Hgm ZN4M hh J 1>pn>GAY/SbŶ4Pd5k |}|~hتNSpFɤNqKo1X97(HXx%[G qn,&W=v7l : ,;߽zR` tw?}ӆL i; rX qPDl][]ʂw7&Nr1fɟ4QZ8A0>ӊ~ sV,_MU_T9 C!YZj\13]F@pB4MFn!AS ?a6Ӹ;QBN-6K/@Ntt992zSN,$o BX 9[aeț ~ e2SpN8E:8u@UHN%B|.([xf{]X@ƅ#3 #E1L1 '<N@ED$T:56GGRVnv͛b 8+E8pj0D6N1":~NySN@rmeŐ $))wIRڥDr (IEƋflπ'%(q<1D|\@d٫RƎ20%q+"n}6#6)(knyL{FA0n,~oC]cQiMu]4wM7tM7tM7tM7t䝢H IENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-76.png000066400000000000000000000126661263452017400307600ustar00rootroot00000000000000PNG  IHDRLLǗQ+sBIT|dmIDATxyյ?~5wUWW *B ԀAqOc5L5 qIćxEp@^qekjuUk9{+8c8c|ɺ%Z T'-Z@2Wå)X*:nKR7Ɇ1K__:aKVNZufq(B[Ha鯏2U !:R s2fj붛ſL.dNIau>R,oeqch ۈI"YrRP[ Cmټ-=Q#lJdsJLn~&.!v͉S/`b)L{@yTσm>M$&nDQ@SIN=XUֶ֛ny a{B^XeB4QSg1z11-H%TdX#ۛ6n۫GJ MZ߰|g`fƈd]ȳBōBjRG5u9l.f f 3Ҏ;!a+E]]gw﴾HTIRY%۞Ĉv妳얇.^V/f^e *T,l$ERo^r'}$>+[a͎VR\k,Z 5n &F"ܽn3–oR̩z%3H?at!I否p޶(w3@ȂNY0>< ol9qP?/޺vsasV'n_QŒ pr4$>zT Uf0]'B@Vu,5 g}zeԝ__Q"%+'YKYG'} 2~{ ̀ˤ/$XO@܈ǷAǛiR+W//~kZrwfͳRS+&ހMsyb/ށѹ? KRطOXɦ@Z 'K ~ B5KeޤՏܰ?5TL؜ssX<~9Rhdp#ɡK00:ڃ曎蝊]wI]n%'lܞ!YC[m\!bQ2]DϤR _Yw$:F۫=g\%:N6o!|üEE,{yPu>)ܚXX=4]M Eޠ :<IEʬCЏ,( a-B/})uRZ+sPx]^dJ|/Є ѷ6`;/ D+:nH Hg Ι!l(3H" (3|5Xښk)4z=8 dSwد n_ ,N oA=BX}8߅zAuS"tAl~nv`d=|K|&M >|9൨D q{Wb1wTPO12'coJ[_?,m'V*;ŀ\tW !V/ k!7zYa V]hF/<UHg5 |F>LbG0\VJ[Rl}Nes/ĥA)6ߋJ(f:rf4HBpz7V2#t#TX=Cwo tq~Tv`4ͫӎy5н bmh/?:l Vy 2f^fHF_vC17 /'a>X-7UG:7c0au/, ]ފP!U8OB~B-#{P}]OeoYuW>9*x9BBpj\R֠'70tȱœ ^6C{ 0wu)+!9f/t ꩔*B~ϐ*}2)>܆xz9}@v0XY>ŹKؒH@t_3I`gpH67# G j#_AH5`U#)^|~Oe%3l)E]sRSWJRPjC8q]p[^>M:pC,#@WˍK  )EA~!.p-v~e؊AzyAz*OJqL3C-?S|Jԥ?=$Vo$ߩTTjGǟF*4{tӼ}VP*ٳR'fzsY}* pw ^#y<{s;#dYLD RxI  +S0se!o{(s>Tfԥik1ʌC3&t ,ٷ]afY$8SԜ$d$SIZ'HdvY<)dƳ+p4{}|\3/el"ΜHQ(l,8<_ jYAAqgѿ5Z0\p茋@H;GNi=y ^}% 7)Z.(tlUG ZΣS,-"X#8"Z10FgPtK;475SwrE60Rk1 0/Ï#J|x~teI8ӊk糆5 @Q Ӫd2U2 eξF *|'ژ*b^̤a*~4.}l2t}L $Eem Mp9x q:l#kvaa>RCs]G'lF*e6236 Ze܎V^J"[@Q޺E8m:w̳.Q(v0w?p;YW ~̤z Nca+uv~0Bq%<&]&܍UO׶_vڪL7Y^;v孔VY[Ѫʉb< s(=.]ݸ. f%%E@w+Tehm7mڢ+M~E?6/ J#C 7os{^vF̐vѬi-CvYLeL}|D)*m|W Y!!a.4,lװsɕd|>P!WEBj2+evb6ehe%xKo?O ke(K׾6!le^' 2@)#=ON\Lww ί\{&:lyso?^&JF0iSѼT|ࡋ_g**e@smUj;s&*pa3md0Bq{.9gy ^ly]Ta: aomkU=BDS/rDvߪϤ;[nzbPqp?;I63RpƤ*H'C-@ HM7a6h^)L|o(q<]m8*JL"yb0vwDw3 gLt{FvnPq`ɂ! [5zbgņfф]=W>{H?pޖ{"out6HPO| /6ճҪNK)A 8}l N<\-~ӇRz3x 6%6cY5O[ ;w/jv hfǑNCi{8p!IV- Na0}/ S)v̅ѣK덼lhIsknB2ewp/R|PzR%cf`pk0 V]ȪœY4 Az7\xxCm5 \ߋy;JBԵĮ7t^)."< z9߳+*>O̧RW糲aD͕Zf/c/g^ͥ8ǎ=-B$c_VJ?_i՘zk b\V1v~~N9|a&nD޸{W,E$7nq:1y'Z^[ :n)gTAe*bu3$}|pK^RPwS+Rֳ MefVٿИ\>a vv9gVHnRT1c->՝$IWs?s&fvYi$)wۨ:P'| 'h͛Wu?R>tk|0* ?) 6S)4fU )W`9BIv᏷xzi2X}cEjZͦ_ ġp[Z\z&ZCou ?T$]%M#6d-hؗa^*C'5)ΖRzU IŃ]sdgf#+TR* i♇.ޜR:RCŷvO/,RQx)Y{LBFL :u3ZJs?YIm$kjN h(|pY҈pw'p p pt?*"=lwIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png000066400000000000000000000262031263452017400313220ustar00rootroot00000000000000PNG  IHDR !sBIT|d IDATxy|EcL\\r) "^*"Uw]p=]w_W]Q@ "(WH 1dӝL&TWWW*^z饗^z饗^z饗^z饗^z饗.A;@Tse$d2)Td#`BhY OLLnE ԡPV%y*UxbGJni98Ycb eT^䦘9'"S32 d4VF'Z6UɵڂK{wN2ٜL Č01/ǑF*2SYztm ^Sw?KqCSE1] I ';_*d٫'bOwg+l6yd!!̖`~H0ٌ8p9L"g [RT$(TdH⁤xAAA:j G2wUff˶-:~__BؕϜ7*78j(>Ə@=Q!!:30F@0 &6AQn݆ W)s25G训j[?MYnDn4cۊNDK ƏDnP2lMCld'e(wц(ێJWҰU(.Gw[C6g>'> $^lKǀbdsA䊡U`TJSGa|q|!5^$;jn\  *#ً&Nψ  OLIȾ#j;ƚ g"D8 >>? Ζӆ~TP++-Du9"76]`Yp@Wxm$[4]t{.Fp\ »c1hCyJ@8k,LJ0l:8 ҩ/ Wn-%NT yQt5 u-^=$*~MُetGC lQc lj IiWa v;]m\`g``rF(?1-%%I"(L>s"/pfNTTt[91քEe5 oM~Ic[ypo~rhwW e# >hsq;BԠHk6w[J9 G$įEb8S">eѿ) p`0O%S+|G+,ɸE8X:R'隼o+v|utz|Vy 702i<bL*U.xґoE SS`-0 YYSXYxƥ^ê널>(צݱ8saجG&"&A ұp;ٻ]`-0_ =xW0~oT֍sV(N(e-9 7<>ղqBQ#,`xTzv"‘ !E-:c?LOG6{JA\s'#bRoJ G>C/Y}7q3P]=d\gëPo.{.R" r)nȿOSq"7_NKժ3%X\`{u`/sZy!x7JCz*[>&e:nf\Ox !T`sNhÄ+0m=z۔`Dx\T/f~MK&+!2032iݞ4qCͿp Bq֠yp\_ {pvd [ f\"|() {`T벸8Z IP{ʌKͳ)9f;i9O,P&Pkb/-`!2"knt|$pVi T`Lm 87oQ{g&MIM\mEBap|"< 4BNy,]ԩ_::;ol%ZRpm3ү8(_3縋ٳ[5q}p|T>| _jYca/ΎZ4eh|P`q/٦ zc8nZ4ynVWĜ%zYs 4ouE0Dz:yS΂3բk1$i' *gz>&c[GM8?lD8e +*/gݙ1 _mPdA`ʽd~8kkZC{UeNLwU`te4R6 n{LYs4QM?PC'O½s折=։U1ro)S[-ʞh|:T.ӄ_O3J0?=ΜN=. . į02i.b_ A)?}V LU{4%ڈƪ'Y@-)qjBďqt. doY(&M59"֔ L¯xu?u(AF N ~xǧ{折;Igd aʜ"{YXP CI!<tӀ vI'Ory#pK3om{UPpmT}{`u[̼NXG.Tz(c:C@3gڬItZ3cch@:%ПnUG _30cpX[]Zc.M=?vh oǚ}0&ez@LddؙtJ`!`7 WhjHG:0/{}4WLy:7쒌wLkhz2DjF gtEP_(pvhبQm Th/{jg ?z :YFէ(fjw]-̓E d|E9V3Cؐ&L8_jD=E /}vr% %f^oQro aE!{΄ww9v4 ̖l 3==syӀi^"Cd {`)pV?6q5Aroք<63cD2wJ&7Owh½CC 9?k>Č `js!76XMrG-S2iwH`ÛpᚅҩBHEKh4եحmΒ{K{FJ $U1}e_E6⬛O-Lh⹶-u9.uk6gE: gau~ bIxOR6vA-)ZC!Ju$!ns1c4,a_cs.u\(q1xVYy^fX`LENU)?W:I^u&bZ),mΑ .r(n28TZHo[=7cp,_w~VkB3c0;3+~A'gV0Ɛ: % uKk+_^_"cbTo0^`MZ| Ly]N6dxad_^\ٲ`',ɚEhW#<7Ia98_"umaȍQ7+?_5$Q6kzʐ5GEᏡީmoa:t6pB^cÒ.T>qRgH Axr$0 ^;ަԔI>3AA:6pirc\ʌ2dNLo$=CK̎`'8d5Jm" rh9\P&,ђ2!2 `H`"1n9&D퉲r6s ӿu~Nsx%3< }&+ol{D0Sϔr#Emh{ J31zBC%6E~R¿3oQUC9b$=CșuY8Zߐ6ri. KUbϦ d+. 6G8vԧ7TE2ʫ9έE =^(!9SEdq!w!"jp Cuԕ0e LO*{vwA_>x!sh:"93o~u)1Hp0<۽ "p=L,a=I>b/Q`;@Z{>e>oFVߢB Bp@޸_`)pƬ!S12BϏH<:N;O羐䦗^Z0B0Ϡ=|IƞZEm%o")D`H`4k$S1vcpo656I>`͞ ˤ1TM葍QsZͿLC/ [%!KGC].8~[$0k'~BQY#FiG1,XLOQIeC6Չ &zC!o>W^~qȌ{=:hcR5FE(LNC]saN'1),ў@!`T N)UN Fk$y0; j/^Jz;Ästd!x%QF!L *QCTov-٢3/m:×@\4"\.-f^ӉLѴ Yg ̿{!)^emC0\ Q7Bslo)rP[4 _b~$752.JVa z)IOOpO/Sqߐ12` wA왚jdQ%1aA,ޥ^,A˄h&[4RE8RvHzvå̯N$ 8T]g_,!giŊ?ւoS_aJrӻL>հ Jw7!\m i7哓mG!ޛuvSיd~A(\Kmر[EMޚ*QO0\$D[ES)\`o亇jv/tuϮ0T-B~PIR$0{Ta>K#vH{yF ;wߤ[-)7;V-}a"vfa3'wUꂄFES+)ѲRzJADfD$7c47.*dž5 ?:U51mddvkڊM%OcQ΢¸]8цh ozCsajͪG˂*(/`R@LY%!xMxSSShY)TIobO1e'j^Ϝv76s\[Ok  44rz6(~aN9톶hn[)}V*E+`8  8;` 1 Qs†Wdck ̈"53.ى#*]' /萣wAp|ߗkWf\ҽ'gЌ—p _=iPFs`b7d @~Z&*S!EMHغwTJ҅;4q5抺:Nn?M d kўrnPF<&vc"I \Ȱjz'xdt{6rjz' bUP_Y-: C H%evFnZ,xN`Qj: clBuX`Fiˌz䧚xqlZ XAe`߲}XG;W%c>@lEg"")+;~cߛ$XYX3.f4|HG'^6UD4 ҴǢ9m7Φ SR1K:||KV\Pqz_/5PG$?;؜FkUׄdn)ad&~=qh?MX9K]U f μ eP:(Xv\ôcsAsj5L;7BHvaJG֖,>(9+:9o uPگ3oп-[y|)xrvv UCKƠ| ֩m CFh漾6H%h k'GՉAO@-G\,zL"ﹹCٜ`kV%W __0/̢v߃LU9ݿং.a%oXNZݢ .IDAT|vJs#y'ڎ͹Şݠ7JCu-W^!i"wԗ~@c'k.8X{ڲ9o 9R:f5o Nj:t l W$ÒUXHxq} csFhmΑ^ui5 rtuը0?Fyy:]uU)vnV6 Ѽ-Bl(Dm؜W\ўz<cpح -[C'xCCecsЧYo!gNO2;i3(Pʫd|R"HUcDD\Y8c~x'v5}c kϣ& &N1UOIi䆓Yl Z`7nj߫xξiyR dDZW$rT~-b̈2%7P.=iy {粵(>k֞?CW5.lzi0^[zY#y4 9˚޿yKn,ʰΪbGaa]pKtF5jsCrO즋}}W u]xp4KY-6}5'Ϙb\ޟUMR?9/7O@x1vVo L $|W Eq[wwӡu[(~a*U`x|u7cHöZۺKegf1MW5#.B~Vя(7Nf>YqڡCށQ5Ċnl#8/8XR˛.\J9s8ΪM ?n>$ {|>xڽ%ֆQ>[rzixy`$EmٗxsPV3G|S>.l/2l-v{C&"w9 kkɃҐu56dW)Ki Xm{M+FqUvCHX?~p.o|ǖ*B_GP,¾04BX)qș4:´Z&s3aXJn%5`^lj) +]%.mO~Bbk:EY8ꏬy))vx4Xû@K;Fq!Yꊤv*?5|բ?"0Iom T`{PƐ3|΄l {@Ħǣ2[`qvR45f݅ SKW<|u벤|,^4o-/M WrcBvs_^J8T %"dM{igCz) 0\9C;,=|uC~;0&Q}RqΒH/'s3iV|?Lъ[;0>rM");^-odHC܆ ]1 5ƌbaif {^ վ?C=jH`'ϳX&n,R~0\=91mo Eڣ(v Ǿ=wmSĖ3%pǻD/ 10$ܴZ)Nsyˏ}SVfW;7s%KMBf?tp6D%E~T88QZާѿgĹǪH2 l7#7ťtqjK9zOiˊ-[¹qEtH@f?qbB}=SX_k13vR OG9uTR#:%3$ cwbǩIR2㺡)ax*R๶*z5kN|eZ8mM@:e8Lp+g%Z1mی!֔}o1>gU#Q_R4h5.Cf5^Թ%,~+##""'цIQ' 1dZlwFTuŏT@3x>3-ĩ}mpozz_gD4~6gԝ9^s)'+ !D3Xd#}r ɷWYu~>NDPq#Fp-| Hp۰$i>)RTj|` &gNsy洱ɉ &+2o1][q& (C;K5 Cʫ8|neϥ|ŁX|:W햗C"R8 G-\hRc)$'r<.(bDAY2(ITjbH) &\ftM;N ;4K/K/K/K/K/ ?ImJe_IENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-@3x.png000066400000000000000000000361221263452017400311470ustar00rootroot00000000000000PNG  IHDR=2sBIT|d IDATxwxսlZݲeP%8$@I{ZHqv7@(! LM6rյҶ)C6xwfV~?S]}9v$I$I$I$I$I$I$I$I$I$I-.ۭS\!*2`bq<!i;$۬ګ;k=A:_`$t!ӜqL5UB L8 f.TB@A8 @%L0FQ@e *c"vURk4j>ҹo3_4Ku5l%L J0Up)OMLe`q!4 ⓫5 Iۮ2 &< ߖGIAC|o1 3-|ʑ1c9!Әi LN榽Xehzx&l{{=?ʒim&;WTF=PJXȯ xW-4tbzOA/w.vf'ɴ1B ]v* Bg ` ^UviVo;Ɗ _< 9d 8:?3Y Lej SAAa39) V,K.\tܰ <Q1 BP xjGԌ@-hj)730BԺzߏl G烠M,(+y7~2h,720pCp!UB9dYeC җg"*~R8;`ZhZ0%%beI~g/WTT`D{D /*I|7 az d[ 0-}6ƻ#՜ +o[~}.ST+>K8ھ{ZQc,&q3@#@"t6n #Nw>W&xݶVQӔ"|ar!]>Y\@>00e 6oEcRTH! =}੽뗝 x%%̞m5yݹ$xcbꅘ>qȴĉ8h!4OZbo6`#wQ5U! hrŖ@㶔,/bJ(x*p2V?܁R%h':{[BTw|y\ZK.U|E|gXLKYp36S$0+,1eu3f bN1w^ك-[wA$Dy!%y~߹ [/&&y_C3GNccd15*PNBnZ@~2LUC:4]gsO6cE"k!Oq}7hT?z~XQէa'TX (G&G1; duBSuBm9 J =lB &^AiX_ZO80  1Ě*fT+1h߲‘P;Mc$5+V=t3Fa%%O_4=oBѮ˶ຢo(elBJ̟B^(U!, )RJ홰][!bԎC}\BM &%\@L(>T{+_q>0LewOC dWLfF[؄Z oLB먃|l=cB3p?alW\֤+zpfgVbr"?kH b]Jl:Cm *kGMoHZu -/NPit c2಼/btĘ>W6B>J.h' s0 A(^vX8'1ً/?rP[ALwN7Q^:3!_[ SW+ks6=W&d;~ku~B $ފ['? o܃ 10]#PwZMEmbpÏԽgAi`R T~ȵoNsﲖt005wOÁTbDzK.ۧ>iJؑ:a} _SL_7 处bj%e05 iP[O@>~JNt A(4nuGrz-XTSm3U”"D ܤ9S)ع' g oSΆ*;pmmH5g])L x'/C ȁnC+hM`:pRDIEHPNCW:P .J+?Nm@~puł?"td-rH A8;bmU@-9Q9SRgSnCQlUK_Ӵwe~$.ͽc;VAgTm҃HB~ȇCp3м@q I ,XJF@@cLCy+JfAa2Bli_,.~ƞ+ yFHrXfkF߂E7tSC=ȡzjn."(Ȱd_^@( 4F;k!<=!o|qiŎU Jb^bnF4C= #DυI-Pց 5F!q*ŶuM~z&k^}jʪ]yCTзXЙg{"9'np?fd.z? y'AПG(JJ>_I"s~!O.2d-,%\ZP|mpAܨ35:&< |Lzt>XxaItsfdOcH}˗uߡFs)?݄:2ȇ@i8s\a5OEtM?8REH )+|YC]eϕ ,ǯ TmLt_g0%nF>X"|{1n]pDJɶe򞱱:ƉAϕ "wDr7'e z BT,05h Lt_? sp<[pu?n˂AM4A/XWsmKG߂ 3 g5G NOg9CftDPޥnqW]+nMй${,R d7^@7˞aϙpI 1Ɠ%ey_JE;nFx1"诼pq#Ssd<3ԋp{]4r9$u%ƞO _ì8lKƷQ2 \yXsJAʓ\Q\0 _W=‹,.fs ,K{uB(- qs'E\<^mx0λZDtގLKn;X(-&/Pq֝2'ķ!VAw`,uMT8.6j_su p]2r$LP|\uἙW|ƀpf""X A6@$RxrRS~j5\ $|!ˡ) Lc@4!Ò-۠Dy`ES:`e>x-rK/&:?\i,,.0Y t?*(P=PZ!r_ˤ&>{*C|-z48P8cA[UJ 4 RE ٿu6ջ3hQ ;NIMslTynπ:0P*qM_-Ց',W~&jl}z !mgBh7(@\}yes2)v1?m"[LT8sK6$R۰t`7 zt/†R44~ۋ |OhQh^[ZSa{ܤ' K~jםc,_󓐼Qwc7"t1wL~Ԩw\> t qۙZsae-sad'tL#By|sDL8ۺzI>ڋ`Qd,@ ?y r`qX{NԼMRLc8{BJP]Hey7Â^t}L9܈Chҝ4X/{ButSTIHо'9bq22c+6'?d,f&;|} BSu `,#n~4#n^ɂf^윂ZuG~xN,|Ĝ)\DS#'qiK U#\u4&&U.\s㋳ťiGnУ1 sM[h"sݟ ڈ<@Ԛ˼{u<0l4כ`Ohz^3͜y_ЕB` \Zqc%n:.ڞXL˘k/"hKpe>|0d BӕwΤ e/x@N8Wi79{|.rpi/D."xo_GVԒ%x )rS˱)(pC {>揞YBU{Q/j4jXg 10b>ӎ[gF8 %6荗EwC/鷠yyN ;F(6s]fcB_D1`]#]wլi>۞AѠECt9cZpy7|wퟠ:̿@W2 m|P`EVc8;F Z j/X5Ow |-FȻ3?gx$unRrŇKoq藠o,w*#``.o~+0BYa@1;`/AS<K~؍yȁ_rc(!YY%}]I)AgyUO\5+>};+GP;Ԛ9K`(f ٷư99W.DDH0p&wEٝeWk|߳'s#S/3";KGb()j;0Kl-j |Y$" JHI7A $ޖ]&=oܧ\ dU[ꓠ f|,le$ h ?L,HBΤsEMsJ;5C@f 9XqG8e0hMe]NUhE֨˶N7TO#S}۠h/(UP FD#ToأhvrИzLjnMsiJ`#$Ak 赠SC8a{rфnDp9W,3^(Zݰ^su~b|$4# @*tG%QB ?@r "p ':0{2Ƅt|;ޯ$xƝ=RGfl x09A#3gc.ZȰ%Vʢg]%eg8t('`*[v S d130;娗 J ¥g:c.mTh&g\wu\x5cPZjF僊9{0\ASgKOP>i,ݤ&p5 F&$M@!j"J }*SBBb%6PP8#"bi\9E]9yΧAbY#{Ŗ#fA*Qc`$I#yDUdL+Az؃10Y PG@lyg0$Hm`3 4]0$_0&激CaeZ1\,L!_Bڷ`7Ch (HuTƤ_!3ʲ1 ۬BDw(Hmό#"L . ʟb1rPӜxեc -l$k>FEsr k;T``EgHZS <~31PB8tc &9گ c ;+4<;tSBx;:Ĉn3%|L@.3 oa6'?87DW\XY򑄪1Է ui)rNJ=^ Yk!h ;FW,|Q>}!uXe 'J7Y0$I(IDATYP0 ƺh 6oȾCbOjASN ~NjI%pap"0?_\Տ@~~5^݁} ^Zjq X*Ij!S5S` ;y!eQ:>weΩ!['7\IAGPmۇ9c5?5#oNMl] yj1/zCooA3 wL%\8iQͨ=Qɧ,plz2bm6`J_;x?(J:.\ъMgBs o2Ο>~dpÃ̊͸gCQD`Dnye:Cцh3.^ ؆45t ~X-ӳ˜nÑY|;OKȮdm%h0wJΈ~&V~u[NЇֵ"W^o*:M]@[Yc쳘ϲyN,mύbU""7Ր;po>sh4<5rY4s:0Mw|Q .K7el&To?iF4vyGm.A{c(4>W#2P(G+cp}U$m{°5Iկ腉@eviCr.m9mͽZĦÆ&=pԔ kd@SɎ^Tv1>J+^ݵl0Xw< ̊`˳p|ḍ̑l8ъ Fj)nr_?ڤyBB^޶kASUea풾 ;a.1-2v;Ox?vu5Gl`M.g8%2٩h 6Se޶kAۂ Hҳzab111NfApFH>lݫklһlZ> 3T OpZQzׂ>lySmilm䂺wvZMg25~t-BQ8{[ CMӇN^ r(lAUg%ڂU%Geջ 8#Ӝ?ϭ7uZp[ Mzabҳ6ZR8RH G((^TelѰm -[tA8GEppYsJPƶl@}dd[M;^}px̛&T+L>H]>ꓠ^k(٬6opY bLb!TU[+glj14&OO9<cv4?SvheզӷpP#M:4xxc\=pzu8А̑|tk70OE^Y?V:'ԆΣAVŊƩP=NSh",CjCuf VȽMsw<]XQCQ&&\h[;7(}mςv<mz(|qa_i~(f$͸( ãb3c:ԶSW5@nl> t2lu{[>O7Li~EWl]XN'^gU߁|Pil#cTVQ]h2v4ʶJ{j\)%ˠZSMR -42ݤMy=o82|C&=3]0t&=t5`Mʚ=I1үoTd-,`c9=_K}n*) I/~SGmR6~{i_K B-;89n5x#LP9 c7Ӧm5<4FX4=ssKoC8ԶPbo zde7jLrȚǥ/fc+ٴۑ9uZpM6QAu^nխ2ˡFDTe}'n]|Epmq& !\16{OTr68ˣ8\G1>m8wHע15≾ٞ%.u6IWsK¤0ϿxҦ%p1@賑y,T6;ݘBS˂4SÍiLQ߈Gq}TG Ɓx{zQ4mFc+g㩍FjtQ% jzcsjD퓫;zz(Ο!kW!¨7o1X+%p⇆E`@u#NnUfÉV/MS',elyoF=Vh@,g0>׸F ݼYHa*+oQ*UJu߁@Ww}[2 Lƕ|QR-C v./Gg+]GVh͌'fiW.B@m􃸗]~ۦf:6|Tq'R+j4'1h_Ec-kq&kLz Ӌ3`5oZ^-@BW~ij߻@Իe6U,a 1@_7H8ܨLݹ.FTF#ZyH M|1>egk aM?uLVU_ɍ)̗ ۟ }TK,ۭ?M1hTM8YςHSmxnLz1s1oqANO)}euHζ8\#Ԇ^7=%V7&GOdlyv-mLDeVh&+Z1YIن5a]k&Me'9ܲe$f6nZߤfOqMɱ~mW#Ú\[>jB|1nq\(ĉgf@Ec. _wJӆqCN ڃ8 .(J& (tbai.R (p}Vntf -m;̆:޾f $,KYpW1&eB f3f8!lyvmWQLcE3BuqNÑm(?\;vcf79CS}]r(!owD]w &('Vh{/ёVT>u[8P b7"J9jv$#;4J&ktDU>}J'f+*vڀx[MW{{oxIs hmހ'lvpc-;i\,uTXLcMm5{W~gVmVܹDgmLcaFt4l;O>،(j;w6ƺ`M DX&wv놝Qn+teS~lB(׮B1*q$#U^һtt ^hx@Ơ zŲ“R2r>h28R`SKË́;fG304jGOr㎿-Y`͸W|{6ߌ1)'pۮ V.{Z,))Is JcP~,UGՠ=kvː.֭$ӁO{d硨[Sms0 ~1`LEk 6{3 !Lʿ~u/ d_{bb9beʪӾXXMMt6!$,M\ȵ1PB0jJ܅oGՓ5 XƀѩpA1=|7ӌx~2BN٧k@D}&!LԿV L k VT> iԵ! %$AGhBBߛ[{gS.A|r'>wy/[_3vW}Yjy'L62a%}ȳˬ#={3/3r5$m(n.,ƬBwM:|ٴ!3ҵO3% \홖+TaO;6 ݒLkze3"|)'sOU2F(kLӾ26zw߿Ձ{_H8Aw'^!oPJ "+-MjBV!z ȿFoS'4ez h3OqYq3߹Q ݪXu>Mc|́orw%! {u4uevf:>rPjo%Yg)JaLAx;Q>֐!kKpYZ03{5(#[|oVPUryg腄rW-U FT<v>˵dl^ikT/44}6/iQiߜv?עvI4W6 ty#c r '[&EmSH@L¢T)t#'{o^4T]jƻ^Ey{Q͜gPN *'>VBq[9I "od LK)iYܮjzxk"C,ǍBZD|^A{PMHbFÌ &Eq˱c Vx~S-8 kA|vs@%|n'`\ɹf{8h2>izU@ yW5h],q~}a 3?Ǒ-~rt!!01 v `R ً6d`L'ԊZ jۉM&5GvTmYye"$A/-0L7;kz3TӜ\[.̘2غ>&ѸU#H "!,P7I/<Ԍ8AW^w-tx&Nx4Bc&', &Gĝ&!;P==-[p~ 8>+1B32GBqųx ܍k4c "oA9blȱ"]̆)4xeuW_@Z&O#b~!MɊ፵ݦ/s<˸Ew;lp#hLc 6S 2؋c41 .s: "g@M1 2 !=hZl@ uh+1rӟ@%;O~8:\8}K&/)rhl*`1%z?>Q4Ae*4q7w٠I;Uю2mQ^ixo w1>Kٝe+])zWf7qY:k&y49=WkHGfTQ4P9(p6; ?rw+]"*D*Ri)ӵuS;?[:cdb /wmzuo}[)Sq~m}PBVOQpVf 3 OL,\k1yӉR@ER^u+榦Iž 6`]zˎ «$ܐ15cWʭ =pK?yWk{w=zy89 k.][8f~gf{ʊg|~Q.06k*CȕB udpj#h^k­ট0+NS;zkmn墳9闎NMC!ܥ8՜Ro ĎCK")[0Ϯ\~7]vZ{-#Ps"o³upuHlxyOppU)uߢA880Dv7 5!~:g1fƐ/!m=ZI@DnװQ|`x}5 OM+="^fFWX<;m@:?4B~so6Vh+:%Y D˔Ž #=S|V|KރmHaDTA=ρkP0O6FJꘕ@*CbC)BIHTP28Z \S5sʦ= " \KKjÇrXtyȌJ"(UC ],[ RX4v֬<HNx*KnZ阎s/E '2@ܸfḍ"XdZc;O9l^#b&xn2cNϥ#Tl!RqwBoiG$f#aElRA9]yy Pit`9HʣVGJ|?n!ysZ{xZhAΧȱYɻ \}?]H? C0|RrJpy@Fڹl{=RB>s۽q5VU,;lmWo`U̎%>;L8=բ< V=B~ .iSGzt&toQd: z gpgKQ.U!ϡBa ðU8tGyEyqc8m" p㘛H> \4xLLu]A4 A dpc៱k)dgϺN.\U'KH,'SUAFrȢ!K- 5lB/O\●Ō ?j'偈W,}jN#^ =eRc]|s̿++35/}k(|F"X(H Ă1Ob6lѯ2q]V;=8 v>m2k`k紩ð*/tᗂ9xiQ,1Uy4quܑ,2f?iIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png000066400000000000000000000070541263452017400320110ustar00rootroot00000000000000PNG  IHDR22?sBIT|d IDAThypU?{/シ A ( mFYdU`t .UNUcM3S.=؊[KFJ0İ(kX%#NMMz9~={yE⇔4?@*|SA}_VҚգ.0BC DHyY=Vݮ4W{> s*BNTQԥ~O(įЂJ2;~n U_xjǼX{t7 J9}U3 M 7A1i!J#3Q4PB(9zBdװogDp.~2ehʢQ[71D]&f_I7'j>BWIډd.F*@H(<CϿ+dz\'}T r#XXBQfhrȓ;X^*ɼ{bS0O6&莗UmB+1 4wa/G93DAJd Vr?w Oq愐ru.6ɚ?ۻ}#X}l[#njzCܩU7 r#4sWƏݽ_ Rqd j=yj_I|[$~>nՃKBSsݤ"tnORKQ$S(}Y[9KSe$z& Hu/2"HToC/7 >ޅ Tey1$;_ @1#8"|n'ʢ'Lo$5t77Ml$wc=ƌ蟡,LU3 H +ua<zMS]=F 1rH ^#ySAU5,SMԶḃ/R͌ 'P@=Mܘ.$ ]#7cܿ'Fh^sQa y#Bt;++cc ;JҎZJo%c2Us&K{yh7fs(7&o`:IbV'Rr|./Gij^j+śU8ooo& R<]@ghO] aek$Y-fur!qODa LܿSR~ur\ui4S8"C|2"Ƚ)@kՁv DihӸ ۧ@h*'[8 an`-e1c>C;C<^{r]w˩#ĬŠhAX@u޴tSl; p (PwJ`JS 7}cL qyyo=ojfTnS\fR22BE&ҖYH_ /q.<Z1c*i JkÿJ )%-G[Pפ sBoHL{/ͭhٙ-;M~ژ"Ԝ<c὜$5o6&e<j`X&crtt[ϭǑ>L}cO3#țfccZ;Bc fvƴIhwL|j@11 $>gߕv MCΠdd'\D ig+ k{5Uƶ_|u' )HG[S}9(YdÑf_;$PƮ-7XvU学e>WQYٸGx3}2F@{pçM[Qib{`s_c>ݻ.>j+{ԖV4[1)Rnϐhlqv1B&rtpo/~?ڗ~#{8p[xCvT`MLpX&v"~)kw? "Amaרjޙt\7n֋sT]Z AOx¢G#g>n68Lˑbgs+jܫ`FAS<"Oo`[z"qp)ƕJ.28sBhN c2Iw|œ-D;a15}vbe΂,fT4lpԑrHzyUPȮ9'SU\׌;%cÓȻ2U{8N慮tk<}.r"v*)H_YG|pEwo򀂲$`FLzIГWԧt;1#juOu&]YNKs+W0m(whe 3/%^ѡt]ZuO3 mn~?լE)˝52/k jIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png000066400000000000000000000207651263452017400323670ustar00rootroot00000000000000PNG  IHDRddpTsBIT|d IDATxg]ՕRU sB4 "! Ǧ^5^3/3vH"c9U%ḃ߽UĚZVwϹgg}^KKK/ .ŢXr]iy&%ZؑDr'Mu/Kb9P| Yh9tU^a`0!Җaj !@# -F;qТN++Wokлoh>}MEȊ+cU46)o(g ЮN4\}O%gm)_lղU0] d7laP-57 kt#7&R(JVinGiӠnЮޤuXct}4.*!w={M{HD!h4PNm!Md W98:MMw"4's6vSZNEkQD֠jbڎzBȏ_K:3XJ woY%9e)̟@i.JTqS4n%t4h-t I'>j٦]t?1{2PZ'%<]cJ./مWFT`vY1ZR8*c5uݍ~oͿFFcBYdN[W=aLTNcN(XHU=堢 9thEH c\d.Mu4NP F}Qh;o/PZyB'rS9?W#8!ՏW[/)a +gŘ`97V1ٵrp~sr7Pft*NRbN_"˽.S i7h!m031rcVcϹW$8ܲuoP=ǴBS _luO$F~!+V ̾* ䷽nܭ,ԒAHᵨxs W<=6tI~^I;sMXoCǀ|+Nuoɷq4:6&ҏU\s'P1}`DYyo?B^@SrsR&t4={ 8'wd?G-`IuRG~B.*#<ۥom+>y/wpbJw/Mo=4BʙD斪Y\ql[j5oj5nc ]9f n~ܦw:vq;nApZ2 l1`>yv>'Hq!(B\n=ާ1,UOI[?)sj[M稶3w]C"E'6=9W ! ?9SSt%[іjF+.P+u[Wդ%|76Bpp'?BMi2r?( yFR{$X#衩a!Zӭ87S9ʱ\Vr OB !|F&oґaY !KvU 84~$ W'%9ߐ>q' +!.+ܦ; 6LQ a 4|!ϔ!VΌ§23#(eZkI}Q-':d!Tn^#odB FC-{m"XhK&YUC)C"d d|!_qG _#dP#Inղz%m&gc+C R }nhbu5 uŠS|!|4fbn,:zv3񷱨n,i!?quߊ+}_ K!f,A`2X4ء.:F]}ᦊW|N2δ?a`!ՏW[g.7K${]?X9/aU܇ Vt{V(*{]Q"-;',\s7} H?B؆iӰB2_eT_W~{tfMbzܺJ_7W,e\hI.OC0J]" AN:B~'| |@Us!/.S;Q S~ש(\|B!R(ŕ˽$Q ]9aXW==3DȒh}DKh;vpG1̱VBr&VXB|]+7 B!X0͕ȳ cm~K V][`X=nqE/W$!Ѳ"]jDk(!+[*2|!4݆J_3=C~bҔSkݚL]"k\ktabLi>3Dڞ͘p5o} w۵ :p^!&Oi{>/ut%޶+ VjyDZ[n^dnxAZ܏o2#a(~%nk}դc]~/S2畗G+Gkr\AMK o_}oD{z3o7~5(/qX ;ٌ77?v[>Noyzoh +,"d|YP;i 2h>ii.NU6vR`X3oŞuű)*r73C2Guwk] H7ٙ1_y`Х}m-!L]A[u-gH\@Dؖ7 {FuÏ]~G: xC-f퐎oF9ȳ Sx%a K޶|>}jDWȌj/!AkR{I903Pmk~Cd݋6e}.⹶bOnf$꿚nNb/B2p!a_yc|s:GXB j!06XEUT& 2Hdg/w.ރ0}}`6V}mI4VHk"[֞C5>4R W_h͢^rA)靗.ȣm=GA 'E׉m~˛)=w ).*ȟH f'>xY6W~qc:{%$vZ)/svǶ/Ϫ?.:=k՗0ؕ2mf}smUmK2Nų4MAՙ,tfTg]]E %~ѳ).;-X~ϵZ5AیGk/Z3y!O|bx\>]7sABD?wzk(.q׶]MD+h5ANc8]ե7t4坽ӁE)oA&w$%lau:Aӗmy%wܻ5S. tqmW%;&c0LqҿyGB>T.1.T_znԉ$v\牮m'xak;kMFkpSZ ,ipς3{#!y%d`UJ5=@'D>]IdoD}Ey6VṶohݰޠVsEHƷgljrabt@QceYB$,xa׉m~#2v}Y并K;CϵqsGʲbvOz\)JKn!- Y(E;v _(*{⃙ᒌx}[ųF lbJ+ L_oJ4s_hӇ*moP(9aZ܍   B`LBLykl}xkM ZЪN 3D[6Qv.#閐?Z3L](´357[S ^EX>B.G&֔.QteGOMuae?ҏOi 8ʜk/(.ֆ !&Ӊ'UcW~QN+}Nue]9A`fbX4g]Qڡv:RXeZ)L , ֿ%yd+*8uk!B@݌m11 Liaipkn ̘,l9rN%Uŕa`4B `1<@|*Q..wo@#F֌3-%"=A a I:hʖ í?Mj>Ts(UowƜ2սor$mqA¡["ݖ-tK#\Tn:Ky]?XGlK}<)gժE!5 )v:L pD]us}ViqS[wڱv@QEhٝoVwbwaO*ƐV֜jr\wi7{ pn?Vu/K*G7t*wX Oau##l4PJͼ{,iW#`bM,4.)ۡS*I=MzT~w7?9GB}h}l}~={L)ԯG"MDxNhMYZ,=C}lu6ұiR˻Oemʂ%̟\mY&o@iӱd[bgOz$cQ#$-=F"'%CMq7^Lÿn<ί6w&plJQ?"]p"r}=두lOZpcm==f]`ľ¶=pzS_q/{F*24ܶ:R)* Y0dD⎭S㴦]V=ki^;ϭ~oϟ A!lf\ő9Ύ^mF_H:dL3F%6 足i^݀>QIҺ`֬+l-7 ICsoسj 3")_l' 86/U3#H2!Vַۨ] Q؎] lǮ.!}Y2a7h3B[jU'x΄"a2BfOHr?Բy\vH>[^ iKbZuaۙ1z\н|𮬚:t|؞zEqy~.3eve!s& K< HA&~l=-QFzKUUV‘pU-1N5W#6B`ր]{F:>r˄xfk/O*ab!C & g=xhN׃4I6Fi؍Fi&{L%YBUS_}>Y-K\[:ēKM)30`Z)bo4wu> yϚpZ蔣oBs7uW"a,sm3/Þ7/")_o6wrK!(߰[inZ%<H-'~̺F~c|] ,=dcSQYsCtm /rvuYL(bāYr3 š/9ܲ!89x~lkėYrDV|t gdAܿz_ -k9 {J*:^MrS /'lJI/)M)%'J$kWe71|ګw=Wnjz#@}8]s9o6K;ڦaumÿnᗛj6eb/)Dž<#i{kj/]W54?_9MȪeF'AɷŚ2۾2 wxS>Ͼ+P8Z=7NfmB!SK1NZu꩕lwv,ᤷ~[k7Ň5I{FI F&xm]-ϵ]{oo(6/$sXGi̛T̼I,*DRn J9]ܴzMFe.v[]ߵzNmp.9]J;\ۯ>ˮ7lDzfK]Wx>//Df6&CҊ7q+@~Od>/KS״ޭ*z;Q>}iDމqNaŨ,CX{V[jI^Uex+ZIr6ᐝugSD^r wJLv6W$(Kqqu\m,ǜP,GU]{:+3 `G}+k-=Ug#mcr1 `Ldnĝ(>$h&E^VYDM"I?ڡ_В4z}qQ]"vyvkǛt oyc-~JwU2hZ5Ek]ak蒡ҎhC+n8x!! 7ƚogܤzk vARo+GJk/]>xB!(_ijV׽I:Q~qWO )CYW&.((yC-{0Є̓p-i\{75}$m@ornR1 7Ά䭣~%y<+ˎ!r+sΕwU>#ObhPb|DFiH )ͣTGsKH_Վ73\B!Z6U5M"q"r6H \VHeU4'j#A!w(0+3ߏ>džS4 8woј FW*s8`'hRb|_Ix|Mq!3R0>0Y%A Y5%OaI+-?.2`߰;J>}.BۖjbOF|"XlÇpy!WN84HbP !!Qbɜq[ ؔG pS(Z΄ !RyǪ˹eZ1y3sy׿KK˫ҊCNZ>}|˰G$}f]} 1myQiNGrcVTN^/ObBЮ&rGO 16o nQy*V`|.EA]J$kOOjg6{bMGu+#R 4ExKvUxN aGB)TN榊eLʛI]x;n4gԞ:'INpnAHAԱT: *q\s'ZpgJ$d&3JB\[UU}]xZ+ZԴ}G8%;%Q}V9?v_JUOW[T~KZ)F`W;9<9W2p!C-ti"ڈo#%I Mqs+ȯ(hcǛH] %!y~~r Fs&Vza+[v.=sTZ~pղU#y3e[Z]k4euS;Ko`Z||Ȗ)ug,.Jÿ9/Q_ǂh:@*Ѹ?botjY s^;6;&˷"tˉ{NEno....a0wMUIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-Small.png000066400000000000000000000035501263452017400315640ustar00rootroot00000000000000PNG  IHDRVgsBIT|dIDATH[l|sٙ٫ח]o{UKp+@զڪTJӨDRߢZ~Z/%U恶Q%D$҂dbP|].6^b>k&y49=WkHGfTQ4P9(p6; ?rw+]"*D*Ri)ӵuS;?[:cdb /wmzuo}[)Sq~m}PBVOQpVf 3 OL,\k1yӉR@ER^u+榦Iž 6`]zˎ «$ܐ15cWʭ =pK?yWk{w=zy89 k.][8f~gf{ʊg|~Q.06k*CȕB udpj#h^k­ট0+NS;zkmn墳9闎NMC!ܥ8՜Ro ĎCK")[0Ϯ\~7]vZ{-#Ps"o³upuHlxyOppU)uߢA880Dv7 5!~:g1fƐ/!m=ZI@DnװQ|`x}5 OM+="^fFWX<;m@:?4B~so6Vh+:%Y D˔Ž #=S|V|KރmHaDTA=ρkP0O6FJꘕ@*CbC)BIHTP28Z \S5sʦ= " \KKjÇrXtyȌJ"(UC ],[ RX4v֬<HNx*KnZ阎s/E '2@ܸfḍ"XdZc;O9l^#b&xn2cNϥ#Tl!RqwBoiG$f#aElRA9]yy Pit`9HʣVGJ|?n!ysZ{xZhAΧȱYɻ \}?]H? C0|RrJpy@Fڹl{=RB>s۽q5VU,;lmWo`U̎%>;L8=բ< V=B~ .iSGzt&toQd: z gpgKQ.U!ϡBa ðU8tGyEyqc8m" p㘛H> \4xLLu]A4 A dpc៱k)dgϺN.\U'KH,'SUAFrȢ!K- 5lB/O\●Ō ?j'偈W,}jN#^ =eRc]|s̿++35/}k(|F"X(H Ă1Ob6lѯ2q]V;=8 v>m2k`k紩ð*/tᗂ9xiQ,1Uy4quܑ,2f?iIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png000066400000000000000000000107641263452017400323010ustar00rootroot00000000000000PNG  IHDR::J(sBIT|dIDAThkUՕ{s޾} vl@Zhla4e&8T$IeRSbHMʔ:I25QQb"ڼ&@}yЈ4/@?LeUO}j;{Zke㌵:-κe9XN׮E[X  %bUJ5M^WyG))w'sҷk֭[1WB49_ AP)(7Ы ]خ,6JJ"jR8`J~kl/^U XFB_I1 uXsV}F`űrVteJ <~=xtsMΐHtgh7S-Ju fUϟ -祕+{SkKe超P;*G`!+@M8}o!(20 Fq` îl3f҈Mt՞X|{Rj.󭘶t|z5p UF\ؠ\#aӝ(; B"҃D aT\W3te[ܲyuڮ7/^xS6,b/)FVTKWC8-w?ޱfD-3ojv|)Gf=y?d&:vmj] gUV%./#|w?=oeFcl@f;6Aj*0%tɶSv: ;=mN[M_Ӫ|滋_aN%q5A\dnbh SBU {!K8K?7as]aS|-~[~{?)n& BQpl*vjfO^Ymv"lj"NO.]ï.RëfZfAe#4Cބ z͓78vfgcu5c@c3FJhKf-Gq&xD}EQ)Ľwt±tWo CIM[yӌ;K>-oމ <3jB܁c(kb8٥+EoE/]e5K>{SZ84S ,q]|Fq:szW yZm1[8^@{%^{QT.1!؉3n4wK!kGZ s ݌Tw|el\^\SJ^&zC]H J$<ΜC|S=_M;H/޹4\g30eǧY\ZG*4q͝ Z\j˘ cNYyO#w |K0Y5FY_G+;TQ"g0V |Rk"פ>kVQ@A?}؁VQw Yy'Z]~2./2"TG Zj GdEpŜf41=J~fĦ"wMxk> +2k5/PnzB1AaC#K[)44*VewrF~MW@--GsOUӉ+)hbxR׽ѠF#@^@ʋ3.GuZ1S8' [I>n!|n%d9.iA&wy ե̛^\;rT/aݲG)Y3\v&9l~RmȚyt[qaJ <Ժmɓ3㸩MNg;efjug"<JboOжo ՝@R3+=c;mln,b%gO }NR-"F9+JĘ],L*F}i FݕbHv < e(]ml>OYQEUc&(IteZPJA稠o 88ζ Ęv$r玣l?:ԒLE FI 5bvܽlQ~S.xO)ո`Ϟv&eW}o'3T!-Mq,N0HYax} AfNC^֯cRwn'dQEICDs.so+;ߌԉXyێSQK.9&.tr}T~sӎqAvW}L^1r V#|W^NǞ6vܷ+7Ö]4S rŜP5%JY4@O][ N|&g}mv7fDǖ֍d4ϯ˜se%b`O;o@ 'lEUDN~]TBɲ`~z[Aiߋln{+_߳Q%3o/Bj)m:yoC=Ąd'l}<6 [d OgWk4a*y|֯z>M+@: _>% 1wj;0ֽn7Gv-;PX>ұq]c߷Q7ƔWҨ,~ _8sG0Ta̟Mr(;O)-g))-Ӟ9 Ge ד?xsQ$?{p#+@>RM)PJ!O.飼p98d;)-S 3ٸOmʻYo~szϿX Ӌ(YKC|i.Ғj湣`:A,{-7 aay4fO][ 1},TXC(wٝ}C Gg;mv*&Xuq[Vżǒ{x#4ڎmvqd5[) ~nnЭx|^˴~iL#ݝ$ݟd39 17,SX.^]#( z._RIQPљ9G͖֧ͬ'-/ozmR>.O-pA )/2"8i# e=N>bA%WJuH?1Xye!j#D|  $.6iexs@O]-EF!4 OWT+ (_@#hDi~8qKɐ$Az4 5^C}ƫoyr<;/ryK++4]]'4q ]EHEb_Qo~=Grz9@_L ^s3+u]]-Ԅsyb>~y}ݜuv.v)ZRG\lÙ$ްZ+7*4CBv#R^"94mH!"rЙJNoχ}|<y}>&i`Y_/YoIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png000066400000000000000000000107641263452017400321430ustar00rootroot00000000000000PNG  IHDR::J(sBIT|dIDAThkUՕ{s޾} vl@Zhla4e&8T$IeRSbHMʔ:I25QQb"ڼ&@}yЈ4/@?LeUO}j;{Zke㌵:-κe9XN׮E[X  %bUJ5M^WyG))w'sҷk֭[1WB49_ AP)(7Ы ]خ,6JJ"jR8`J~kl/^U XFB_I1 uXsV}F`űrVteJ <~=xtsMΐHtgh7S-Ju fUϟ -祕+{SkKe超P;*G`!+@M8}o!(20 Fq` îl3f҈Mt՞X|{Rj.󭘶t|z5p UF\ؠ\#aӝ(; B"҃D aT\W3te[ܲyuڮ7/^xS6,b/)FVTKWC8-w?ޱfD-3ojv|)Gf=y?d&:vmj] gUV%./#|w?=oeFcl@f;6Aj*0%tɶSv: ;=mN[M_Ӫ|滋_aN%q5A\dnbh SBU {!K8K?7as]aS|-~[~{?)n& BQpl*vjfO^Ymv"lj"NO.]ï.RëfZfAe#4Cބ z͓78vfgcu5c@c3FJhKf-Gq&xD}EQ)Ľwt±tWo CIM[yӌ;K>-oމ <3jB܁c(kb8٥+EoE/]e5K>{SZ84S ,q]|Fq:szW yZm1[8^@{%^{QT.1!؉3n4wK!kGZ s ݌Tw|el\^\SJ^&zC]H J$<ΜC|S=_M;H/޹4\g30eǧY\ZG*4q͝ Z\j˘ cNYyO#w |K0Y5FY_G+;TQ"g0V |Rk"פ>kVQ@A?}؁VQw Yy'Z]~2./2"TG Zj GdEpŜf41=J~fĦ"wMxk> +2k5/PnzB1AaC#K[)44*VewrF~MW@--GsOUӉ+)hbxR׽ѠF#@^@ʋ3.GuZ1S8' [I>n!|n%d9.iA&wy ե̛^\;rT/aݲG)Y3\v&9l~RmȚyt[qaJ <Ժmɓ3㸩MNg;efjug"<JboOжo ՝@R3+=c;mln,b%gO }NR-"F9+JĘ],L*F}i FݕbHv < e(]ml>OYQEUc&(IteZPJA稠o 88ζ Ęv$r玣l?:ԒLE FI 5bvܽlQ~S.xO)ո`Ϟv&eW}o'3T!-Mq,N0HYax} AfNC^֯cRwn'dQEICDs.so+;ߌԉXyێSQK.9&.tr}T~sӎqAvW}L^1r V#|W^NǞ6vܷ+7Ö]4S rŜP5%JY4@O][ N|&g}mv7fDǖ֍d4ϯ˜se%b`O;o@ 'lEUDN~]TBɲ`~z[Aiߋln{+_߳Q%3o/Bj)m:yoC=Ąd'l}<6 [d OgWk4a*y|֯z>M+@: _>% 1wj;0ֽn7Gv-;PX>ұq]c߷Q7ƔWҨ,~ _8sG0Ta̟Mr(;O)-g))-Ӟ9 Ge ד?xsQ$?{p#+@>RM)PJ!O.飼p98d;)-S 3ٸOmʻYo~szϿX Ӌ(YKC|i.Ғj湣`:A,{-7 aay4fO][ 1},TXC(wٝ}C Gg;mv*&Xuq[Vżǒ{x#4ڎmvqd5[) ~nnЭx|^˴~iL#ݝ$ݟd39 17,SX.^]#( z._RIQPљ9G͖֧ͬ'-/ozmR>.O-pA )/2"8i# e=N>bA%WJuH?1Xye!j#D|  $.6iexs@O]-EF!4 OWT+ (_@#hDi~8qKɐ$Az4 5^C}ƫoyr<;/ryK++4]]'4q ]EHEb_Qo~=Grz9@_L ^s3+u]]-Ԅsyb>~y}ݜuv.v)ZRG\lÙ$ްZ+7*4CBv#R^"94mH!"rЙJNoχ}|<y}>&i`Y_/YoIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png000066400000000000000000000155271263452017400321460ustar00rootroot00000000000000PNG  IHDRWWqlsBIT|dIDATxyx]U?kϔLmLMNIZR"(Ӌzq(ث\(*mERhSRJ ܤsx3q?>y}Z߼]ւ>g \ ,-kԲes-__"rIcN5p2 ҐyBHaH 0(TL);l۪YHy8uplo{W?/z\d+  z) !|Z3&kdom˦Cq8V#Z\aǤRs!{cztd2X҉5q%j Ѩn͕MMY|5;W>KO $a| ƎyP\-g .dF\*rfS曊ψm7-[ٴ#3UR O.Tև#N̶(ɽp!B80((co:|yHMk=>NbDwEBkwO(K~U?;I(MPꝄ)a4s,x>ήNQm[9c{k{#=rBMBʱVr0obʳqU v0lDN3?ck= 9 )BfxA]ݣk֎auJ;K7{ӊOb}|vm OyhM|zbQt<*]HӅ߁t1 , kGAZ]iEc+?LmEM\+v{׭=N.I?b8B QB>Rr-^un>Hf{ף#{֚O+B[ r݀D0GNLl>DPzꯍٴfU[Guuq !J٣.&fLTj"ڃDyH |>qL•v H/T V7ay(Js4x WH>,3&^_S?lM{6aP F?@'bpS{492uYHQ!,(wݠ5 pLp!#!1*>Gh8%iV;*I 1s>}f fA=w4`,w}rG֕Cf9:Eܗ~k q`_C0ܠDVlhJy 5&1 mIuUfx/B"nf!VF*"YBM7 IfV#LQMm;^O<6Bf`:+ ,k*[ [) ] di̶8L\Vr-Y\ж&m):ޡk%5׬E B-~= x-~&9O-E60P{0!.?c*Lg#"EWN9z) *Lh>j8@uPˣ(}@pEȻCEӲwgra +N-u=9M{m;C'b`8,ƚLrs|< xxK-TR_;V|\X_~rɯS\ 0-wc<__Vk;)]9a ; gS }&4Qd,9k+nü~_þɭFM~0ob0Љ8z їcaoƚpk:>:NScp)B-u!$ >@|uOt֥ҔWLM# KCඁ=`;_w&9ŷ&Us׺llӽ;H6ۅ $N핆\8yy~_m"WncB)1UԾ *уoǨHayp[I?X%|Ï>I&6=&ܐUe7&~!-ye_WrRŒ2J?m%2+{ !8+HilgD/Xe0]LwRr֮Wrxn9t̎ZTP! RDmGE_*05XH̼ qͨFX>jyXC%k"Hz4RJdJX CoZTl:d!OE. e̙]BD/EX`58A@JvM:<$`Q@v~֧ !~ kq6‘V!- =JM;\SꝒ \omz$rIp"r\H4ԡcۉȮW?s__I3wo"ΐĂ*kRss6=;r!`Fmn``l"h]kmų9紻4Ă/McS6v`ϙl@8G-t(iN\Ye'M3ٳ ?J,>ۘysqMƶ>D,T3b2YaHq|SS# &:ZߨHuW1 g]U]鮹2N'3s'Y'O}i[ё#‰wҥǝFnΨh ZZ+,yzd ܳnI4HO@jE#/ ۅN~Ί^6m>T o$uWla80u~. !}8Rw#AWFnn ԘLhwGr!ܽ'.L@w *#FHwCB\3˴?25Åd\{%ۗz˶}cJfs&47u-bZGk3ۻ2kRv j^x <ږ81}*|xCFQy6!ٺtW4&(ow{lʶU3@:a)q]r!9?.2ˋK/['s8LJ(CΎ 4kLt fYM)DN^ct^:e"2<([Dړrb6r|=" iH.VHɨs'ieҊX2lNCH:mwQ\fqODx6ޅ"w8}9SJ{^M[42b#Y]{*S6W`87j[J(pΞIݷ4Gs}yao#wڝ )=rjy+-jOOHn{:qs*c >Ƀ8ODch uu3a+M&nNS6&+, E;:~ VWRS]h"l8:BkOs(p=߷oOi^nc+ok4x"ƍj~adDQ׶ ;__{}^vBۓYZIMJg]_)uԽ\Vƪ]) ^4`$"MF:t{I`xhzw}#[ u{ShfeI٘4EQJTg{k+wn;J ϿJw\W]Ƥ!%s{+x9aנ5LJfow QDqwX~iH L6o]䮼ne\k XaY?hȂ!Gw6r=aC]3k4K0v B3IUSD=JoXm}Uu4;;v:ke徇S,,k;kx|ܖ"vWo]-Zݓc)L/S3u--4$T}_"ֶ;mV6| 7#g‹}I ۞փ8O>v8 iR .<'޸'h[m 6d;NިnX{xE9x~S1Gd|w}55y_ }*}Avҧwt%{Rw7aI!ocdn5E^ d/'RqJS{RH v\07Ku+m7| \^7oK kra޸ܖ,8-B3aJ6=;Ak[~:֠R\~[4{4ą\KK?pxa D2K#n v7'4%'F)]qm86MFZ2`vgnl4KV;L)GB VyëZR?JO\Ji6T,%R4llP:uX3ZX]{HƼfS? s}oW$o¨swu~,Xǣދ?ڄ:֬vxԠ3K^+2,AcwLȪL9yXn' ůMׄ |e8n]#)sMIbmƦ=+{s@{°&m_^e7bb*jֶ֊q)Hi+ʡd)iwr.Y:ȕBpE|I)!(mSsYڒ66'O׼< 7 { śJ-sc:X3eީ8 'Ib]TNVmA'ƇC28WWr|\rVzBkRESˑefw֤e_h}Mr_k/) 죶e+n3Œ2^7%3zj!äDIr $m\S9;.9fuW7S{;hⰝ-_ƞ7X0ޛrRf]ĵ巒sѮH=kw."XCp|[0&\&ڣݟߐ)X|/_'%/nK +Pܭ0" O\9&VÒw A.ϑˌW$6mG[ip#ʹn"&ӮE]k=l'4Ť g01ļ \f?Q9cռݸ1T@+ݮ2``D=O<0'2)CE䀒svcHד}]P #'xlkx5Up6#Y~]͉=eq7.rOZ-Wv7Ew}3(Ϫ4k2^kp%%,oemSk4(m5*f> 9Pqb(&{f>" PRDfͣ"wEO?%(8-iD}nO?q_6$ѝʜ<<_ZJ)DR̒RrC1EC`I'BHVUp"H(N[u3-JZoJob8ڴWq*g"K帝! fGS<jgKS/U0d`4DFg !=RRJRڎkquvTmmQܹ=@TUW\Q1+Ȉumf oKm|>?v@JIENDB`Icon-Spotlight-40.png000066400000000000000000000046251263452017400326370ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconsetPNG  IHDR((msBIT|d LIDATXit]M&L$$!H$HY C"H m,ֶO+~j ui)p %C"$6 L2 3,ro?BLQ|>͙g{<NO8~F(`%@@P`uhǷȢ8T9{F/aS %`/Tj*ycoΫVlü'gM&Xj!ALuy Q4v0>I Z-jƗɪz{Iϥ*iX@YK@/|(V`DͿ L &k;tײ^zJ'JN]`emi!~{rSm v%213ru]rQ1m["aAZ x0zً3@$@7\A5PoHvHSc?rMGh?:7PWsɞy1ڜ S/B PkAŗWPf͈kyP7=$n+d:ҠNLNy۶~A~L[+$b+J)̓=[ B̞$RfBS`;7hLK[?/_!\~85.c=k<o H:P5Ư'@{~ P{0p\<*Ul_3lWY ܪ;F/ aώ O^q\W\I1NH!ஂ\.A{0 2'+*G$N5,&Mg-/0(CU4cıRg@{v:jpHyZ@:" 'ٙq"v(`޶@o&^91]/ 0:d-&̭2(Hs'X@; #i(C HK{F BW`|dH\ƞH(xXM6=섈섧y B̙f!@ ~F;'hՔĂ˚*f9 b2.~y"J+A/Nܕ 2P "hOa&AxyoN (Iȩ8BT$ 0ȣfo "P HUw=g}y/bA$w֘#B,&0aeW5`\iIN$HcU7QR@1RZy4sg}hrCy,/̓OR $8^Th (s T>#}bNJFC3uǣu̴WLoD=Iత cF%n:qϦ҆Ϋ}"^)uul[zPi]KjN*CS{7̭kd^L5O5v`⒩(X6O bQD<6tV6Ŧ UWTϫ5Hԗ#o-7)ϑ.Gc|+}A_ȑRLIffg/cٷ=!M_ZU?1\@/ȇFōe,$%BǴ/SH:$YhŤDM{vDֵ\eYds-~^}; *8U(I W,4v3p!#Aju6]qƞə#R~K0h?qCۖiLIENDB`Icon-Spotlight-40@2x-1.png000066400000000000000000000125161263452017400333450ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconsetPNG  IHDRPPsBIT|dIDATxy|չǿ}Y23$!$lHւKP7 E-UW-^Vmo+RZ EJPQA@d$$d̻DŽ!$}|.?Lss/1ޡ=\SD>r<v-08ʷT5_XPQB9D)nDʶN L !D =%?CCUs_{vg?39?+sT! S@})KJi AbZ[Ȫ?Lra8|%5'jRMާ0 F@MpEqDOyp/[hLywdv%XzXH{QEwE8cި{p @%fk$jʽH# fPӇ ٰc :Q`˿5m\$@Uh-R#ݞhLw9s$6DUUldp11AvͥUiMH7QP<ñ bv?ՒLk=agӯ[W3B07أF z釄6-i[BpuZeuyvKHK~L]1#0}ק_V ok}'FYOٻNc!4;q~`<0k>¬݂Fq YSpfnkOUo,<0lsmkELPK^_-pEQ0]eW"Hs߀|V1+=A Rf[ߗHT7[Wuz'k |/E'H}|2UqI>AEE _9/;ߜ9Ҟ,V10՞'<ʈF̺&_ H1j> Mŏ}4{& qٽ-W-.ҰPpUhy)E}Z0iS?/uGMBf&jZs%b셎GQ+pEfZa@q E˚!}o"Fݍ"T#3?sz,=&𶷧_w(|2 P޹9pczZtҡEʤ' Do~yҊ\ X^7ehΜ9EQg;2ߣi?.&rh ).G؜؆ql O/ݯaL(lR{aKi~p߉4O$4W2/`wf"uLXzpsmc#P"|PlYy^y8]X$z5狋D5,R a!f?hMXzᆿ)6f aӭµ33TM,HaVtz)6rS!ڜgWЛNWX}/zx[;+Ia5z#}SXPyΌn@!Deި{a<u #4'VW)y@4@'ւP e#nkbtɟt[WWo]]4u1TM" . 3w`6 \>\WKT0D8Vƪxw*LH- uS—FvKm^+W߄ Vs='c= ud$N%mp ős’XueXf5Q aso.K][ }҈)KCHH:v@(u]eLW41E ^K\sZla`Ϧ hY_͹ Uh(( ك<Ͻp.r)  F0 r@;u_Kb[ۺ$ n|o'$ZX"]Cx4c}[^*J#.FAt.< )@tG?"Q ~pIRSZ ~\ULq)`֕!#~;~ F2eTP:- N%za\\j{hlۨ9+}D F~`;!ʤK8 ;%79+qN’Hүg'8/Qb ϙ}; 'N`=9LPw3c#PimV s=~ jE6Fg4Gծ w@{UMqmXmШxۊx(* %)T0NlXTjVg Cg$<S?I;eԔXyuEMÝN5%C°ss2yJS@g pʱ35c0Z[H榑>s:iuAۆ*Qd<);VjjBa#n En(P{ټ:'ې'ϲU5?+cem7}눟OW'; HMF) 47tIt fhF̓ =36f$!T6PQה485_ۈT#اu;g,hb\|~ŗOVǩ8m*WOCWPBf#(-i[;DI܁ňT7akٽf;F@,m9Ɲ/&hK'Ŏh -UQZ\ڡ -Ԇ+cIڨ6IGP!;bWA7`C㚯 #'Ý2'%AØq P:K(bPsxXm|Mwj:/ẺCIsw>+r]աVѴG\ClRZGc*Av!lcFXWT6ߞ W>㴩\3y8m"PRTHC[-E% B!A$f ^0yh qmgV` ;",uEO^ 1RȰqo@%A#eF 3Ұ;\K푪^SRלaHurD[Ʋ5!eI<[k; ׃p:`r%M>x;(Uv7z$=EeLxk 27<]LK[SS)WLEhf`*vqDs(B0*7z/7^XGz"RRJ^/]D2[7Ib~ˤ9ؐH(]) @]g+.1"j7h:g\md}aGx% #苰{ˋ.;j6?i.u{>PDRoԳRӁ :_0u đ9ش(k,˒a?[}oY5kḠu3D2nტ{?{붳|-%/2jgU-Sxd]hM2!?Kj[4xd][K, PNo-&8bPۨkϙ5yCpLD PҽQZ1Sc<Tێ{wY:jʰi{ r\4yaoأ[-C.G"wlbs;2I553Q|DZX5'aWl+ p; 8*d0&/3:eV.+`m=FO1VaZw[ޒ&/~bdaOU5f'0iM5)i+:u熥rm<ȇՏɆεRy݊ -Ym4[wW'z}[+#S%&O~6$?Ԝ/G0h/7.\Dև˞'-OWa#bΓR6X]KS7v=c𥸴)yBr<ѱࡆ~Oѭ$drgݧ"}"\6s;2l\/"~{ T) n͟Bѿ_Iz>OiHaI6;E1t[ khs"W*.b0:}&P{\|Me7SI\T GGj4x~oRSHKVћ{U$d7$cGi3' Q5ognݱy7wt vQE2eLϙ w>.7!ճDys)[yvej,C^}ks@FkT3#KEB#Es17sgQ:d5$ǂx| A +\l1 鑟lZՓ w\4 :EmcKc;\299|T UnA l4h6\IU[sm,C/鍡[ MN|a 's\iu )R"AيXCw |a[^*JOqh$T& @U !$E!HKZnK؋%[͘ʡFYپm%F,7+t2-l JUT|1?:T0U-IENDB`Icon-Spotlight-40@2x.png000066400000000000000000000125161263452017400332070ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconsetPNG  IHDRPPsBIT|dIDATxy|չǿ}Y23$!$lHւKP7 E-UW-^Vmo+RZ EJPQA@d$$d̻DŽ!$}|.?Lss/1ޡ=\SD>r<v-08ʷT5_XPQB9D)nDʶN L !D =%?CCUs_{vg?39?+sT! S@})KJi AbZ[Ȫ?Lra8|%5'jRMާ0 F@MpEqDOyp/[hLywdv%XzXH{QEwE8cި{p @%fk$jʽH# fPӇ ٰc :Q`˿5m\$@Uh-R#ݞhLw9s$6DUUldp11AvͥUiMH7QP<ñ bv?ՒLk=agӯ[W3B07أF z釄6-i[BpuZeuyvKHK~L]1#0}ק_V ok}'FYOٻNc!4;q~`<0k>¬݂Fq YSpfnkOUo,<0lsmkELPK^_-pEQ0]eW"Hs߀|V1+=A Rf[ߗHT7[Wuz'k |/E'H}|2UqI>AEE _9/;ߜ9Ҟ,V10՞'<ʈF̺&_ H1j> Mŏ}4{& qٽ-W-.ҰPpUhy)E}Z0iS?/uGMBf&jZs%b셎GQ+pEfZa@q E˚!}o"Fݍ"T#3?sz,=&𶷧_w(|2 P޹9pczZtҡEʤ' Do~yҊ\ X^7ehΜ9EQg;2ߣi?.&rh ).G؜؆ql O/ݯaL(lR{aKi~p߉4O$4W2/`wf"uLXzpsmc#P"|PlYy^y8]X$z5狋D5,R a!f?hMXzᆿ)6f aӭµ33TM,HaVtz)6rS!ڜgWЛNWX}/zx[;+Ia5z#}SXPyΌn@!Deި{a<u #4'VW)y@4@'ւP e#nkbtɟt[WWo]]4u1TM" . 3w`6 \>\WKT0D8Vƪxw*LH- uS—FvKm^+W߄ Vs='c= ud$N%mp ős’XueXf5Q aso.K][ }҈)KCHH:v@(u]eLW41E ^K\sZla`Ϧ hY_͹ Uh(( ك<Ͻp.r)  F0 r@;u_Kb[ۺ$ n|o'$ZX"]Cx4c}[^*J#.FAt.< )@tG?"Q ~pIRSZ ~\ULq)`֕!#~;~ F2eTP:- N%za\\j{hlۨ9+}D F~`;!ʤK8 ;%79+qN’Hүg'8/Qb ϙ}; 'N`=9LPw3c#PimV s=~ jE6Fg4Gծ w@{UMqmXmШxۊx(* %)T0NlXTjVg Cg$<S?I;eԔXyuEMÝN5%C°ss2yJS@g pʱ35c0Z[H榑>s:iuAۆ*Qd<);VjjBa#n En(P{ټ:'ې'ϲU5?+cem7}눟OW'; HMF) 47tIt fhF̓ =36f$!T6PQה485_ۈT#اu;g,hb\|~ŗOVǩ8m*WOCWPBf#(-i[;DI܁ňT7akٽf;F@,m9Ɲ/&hK'Ŏh -UQZ\ڡ -Ԇ+cIڨ6IGP!;bWA7`C㚯 #'Ý2'%AØq P:K(bPsxXm|Mwj:/ẺCIsw>+r]աVѴG\ClRZGc*Av!lcFXWT6ߞ W>㴩\3y8m"PRTHC[-E% B!A$f ^0yh qmgV` ;",uEO^ 1RȰqo@%A#eF 3Ұ;\K푪^SRלaHurD[Ʋ5!eI<[k; ׃p:`r%M>x;(Uv7z$=EeLxk 27<]LK[SS)WLEhf`*vqDs(B0*7z/7^XGz"RRJ^/]D2[7Ib~ˤ9ؐH(]) @]g+.1"j7h:g\md}aGx% #苰{ˋ.;j6?i.u{>PDRoԳRӁ :_0u đ9ش(k,˒a?[}oY5kḠu3D2nტ{?{붳|-%/2jgU-Sxd]hM2!?Kj[4xd][K, PNo-&8bPۨkϙ5yCpLD PҽQZ1Sc<Tێ{wY:jʰi{ r\4yaoأ[-C.G"wlbs;2I553Q|DZX5'aWl+ p; 8*d0&/3:eV.+`m=FO1VaZw[ޒ&/~bdaOU5f'0iM5)i+:u熥rm<ȇՏɆεRy݊ -Ym4[wW'z}[+#S%&O~6$?Ԝ/G0h/7.\Dև˞'-OWa#bΓR6X]KS7v=c𥸴)yBr<ѱࡆ~Oѭ$drgݧ"}"\6s;2l\/"~{ T) n͟Bѿ_Iz>OiHaI6;E1t[ khs"W*.b0:}&P{\|Me7SI\T GGj4x~oRSHKVћ{U$d7$cGi3' Q5ognݱy7wt vQE2eLϙ w>.7!ճDys)[yvej,C^}ks@FkT3#KEB#Es17sgQ:d5$ǂx| A +\l1 鑟lZՓ w\4 :EmcKc;\299|T UnA l4h6\IU[sm,C/鍡[ MN|a 's\iu )R"AيXCw |a[^*JOqh$T& @U !$E!HKZnK؋%[͘ʡFYپm%F,7+t2-l JUT|1?:T0U-IENDB`Icon-Spotlight-40@3x.png000066400000000000000000000253441263452017400332130ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconsetPNG  IHDRxx9d6sBIT|d IDATxyx\y:ލ} HJJD-bي=MyQb9Xwo2w,MO|3gЗ >;wnքk̐YMU!(Z !RȐ2 MaI J;2Z$Z)ň0g|U]t4\Y;Xq#a+s(OIZϼ=O>v'ZkĕCɮo?׺{KFw;Qdyt %7hltj$j 5 Bb-ߺ#ESOuFq=,(F&jDa p+upĥRNG\S;-fW2:O|FJn8J8v3nO+^w+atrx+jU/KaO9#_1Fl-F&M+.sαUCCy1:ƎQi9w92<}`Ww78-;T`S( Tqc/Q]u ;}"FXǡlToA!?ڈULszLi1'",EΣ b|-;v^+f+`~CHq"YŇ>M#`rGktzx-pq T e#3Li[C*a9pf0# +jB\p[o1n07f!x=^y6oǔ9'V.9,P܌Yc @%N3grD IU@5qgT ՂF2:+m>uc JΝ;eg C:N[Ȳϳxk7pڋ,QHKD;2X V)$% *u$1R]6J)"E^[tUCW! WWK&>غ rKf?v.Zt7܊p')C4Fc]/@Haa[{p|B_BC cEtTr=MKo0^Ԕo aiC k?R&L}߽|P=(_{%П7|!C֠4=r! ;X:Py}ن0YmTt%BayZ9ih[vN¼?$- TRq,|~r*b/!cHC*OR=qL_}?\bhZTB f[\Sy E{Eۅ% $*u~dc l^"->\;4U4l-uh;s oN8e-a׳B OH{C3䟃0^kl؎{nR'<85f‡L2 Y`Y[>M،e g}bD(o!0k_}oot _ؚQnɡIBb,5 An4}.jgWwT% n4Wmq{A2mofo47-߈9B%% tzt i,$2Ԉ^99Q.iG(Z4JAĊ3#рĶUz%1΋-f㛆O~z0rJ xIsXR'#R @Kjh7:5R ^ zI+o1|2뺭 1;qO!FЊV\x7oo0|٩2TOK'v2Hh'}6܁vF3VZU00"MV| tK >Jre%@k''C\qj+r`5ӵ9fT]|FmUS^9k#Z靾!qz3_9Zy ̚A01?Y5ңp3H>L˧2 U0rA#jwڽ9\ ` >UOt81DnnL+ğ;7͒\՟Z$ #ڄlfIOj䇸rNv%7nSM,ͺ2RPQvqN낦] mQK'XEh%spOn;4 (}l/'y#?QDܴl- I䶒 n=г TNut+s !n:bi9Dp6aƃҗGײ߽~_Kh:DE?Qrfa`DV`-ԑn%=Aygp{PIJ\5)7FoK'x w +ǿe98]}lٴt$Gm{'7}tŴɋ !eVfٵSGøV_By>Yu͔6ol.>sGY;?fľ򥛯DmRTYڒM QGI~m& u2FI#%NUQz͔57=/E.VIKhL4e#>شeզ8&!B 4wqUnI2ޘmsb|&[(r-뿚sk^@5Q1r3HNnŵxSZT !е_9>;5fBRٰЍ7q2^B T=c<ޚ܌UZK"PH%u(*죤Fa^kt:z&%[(Tg?Qdm_mUl[,+*JȌC8 s'u(ōnE%Y+ \G9߲ACuЃA6VIeF 7 @uc.u&&>L)l抛0rVvm2 P@)6F~mmYȢE#9OnypEb{ U ;7ol !\qߡV\7_;_\e E)ɐ) qO2N9!B c ,5N@Sa2+M*G0@-5H)b)l)P;$xEKƳWlzNv{ S oϏq(m,JHd%?-
-N"{|mbM._E`oa,3d\[0ܬ-“Ie?mJUWOUS%^ މh*<4a"sMso`xg qr -_y.­QqZvN?g2r'MM aPl bA4lg$ҭ!\*8޿;#܁FJ} 'rF !BtLmHp}Ct6,7⛴zC=xcg;}5No[Ƌ Z%ϖS3ЀЕȌ[ V>U [n`wO  $- npe OѢ0dL-HaZBP oEsR(۳k9PNa8.5@[ xMaQBhӂREtR(NXݲ\bdƃ9Ƴɒ_Ya$t/$d]$dvN aEhA،3SjTU](LHDD|EHf=HPiΒ+Yu V-9p_>r . pJH !CJy`]G%eg) #*$;' zR㏈DNj*d( |V܃WLRr_%C.`rM0;:_xΟ/:VA3,zt 0~#FSo*ֱ~BϞ"ϏfVS#݄Qy~51Pjix;1+&~J{drUrJ LѴ7QB'ugrxg\(Ҁ0 DفoFL$(obXOiԔ\IeQ)ZSig§=:~)@ƴi;{V}fm//d5W3ۂ,Ҝ9?Or`" u0ׯwɵea66SYXB$+{!fC' 1v h0F@$12^ze\xȓO~ —%Ht/Ǟ?HLL9j=I^Γ\War*H|S&IGٌ:Q=J1ng\8z0d1{h:l,/X00W rm6Onߡn~sLWi_`ɡ<6,_2uqdI"I9HGbpg=ݏ=8jbZ6W-_ Cb55]r<zzGiZ{۽\WaӪ *Klc&=Ҫ=Oǎplx"_zd42&t^ɫ ]j "5ZdeuDdG^_k[kڽwٶ9k=qjxgQ,|u]aMNL_OwhiH%aKy.ϟz/WG73Z#Z謧m=5Xeè1\ }J~ !5&+cD@o;BI+kbD&w^{hРFRO̵s&G_UNddT:ۤZ7"JoߥJU%a0Kݿ)w߽g:۫֊^z,2` 䌥a!$KJR43'V{+~<9#Sϧo"x]l{`Z /M4\VBSwj9Nï/iy:Gj,/ recp`p/ J˾Ci}&1duks_cr{ IDATz'wРrϓ$s%lZN!@)U)8G×;r ߥ…ƪp6k*ݦ *t//v?NM⥼?юmż ALwk89z;3MfbH|;;qۻAc"e^͙ -6&Kѵ D|FF6) F\Gex納r܌T8r/*|Mt[ʞ's@CXW6cmB);qfW.И,5J1lUeqeLPvWLn[=N\ݻ^6}6脢2e5z _v$^$bPo(igeGi{y)F2rg;7ꖴqYMv~K?N^~íӒI/ô5{=qr0w=JgBؑ9%7^L2ιPi |#Com{>\ol#}iQ^94uZ;hSlS?Ys$h;VMQAaŝQ: \*MpyrEhda$8d\X¯oYW!`Mخgҽ<\wtF+^RVƟyUG84^xOb̀ViN'JhM1eMՕRoX]6g4GMRs%W}U9,6(`3l;'x|6t)4,c6XtWҽrʊ1/w{Z+bk.pN}jƵ=<%?F;~8){ZزmMl-rl/h Zk+"\V8HВMcZ7jRwF#Q_ 34|wN(pRZ+[^!R10(l75vwC'xZX VU"$CJ9`Gg3佌˸˸˸˸˸?!~ZaIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon.png000066400000000000000000000105221263452017400305130ustar00rootroot00000000000000PNG  IHDR99sBIT|d IDATh{pTUǿWNwޝt: $"D"OIԺ(:[:ꮵUJk-wƕǚ\,*LD)BwIѯbMXZO5I}ci< zWv+ުY'n>u ihډiGs?a @EG̬r%TR[K? #7/Cg"P}Ϊl 9]ﯩ̒\ d&Ad˫о !52 a\T.u6Je 766OZņQzV㠙o ((S` \E0NC|p-  owB̟ u# cĠG#B([[?X0 šG?Y{-<>xIoJWn /cSG{OC;\ !ws:Sq9a"BSYsaj 8K4h6,/?e,P,J\XPeTQEUV.:z>rKV3/*Yb<.ĺ30[! 9!VxLr|9RO>,֋]7eh?{+oM(udC*X6hFUp #1%m&"7%ϊRǏ)|.!説rЎm6< #} &iK@BJ}a{3=53 2u,(A YJE-uܒDIa#-h_ow5w8V3W$ J'^%vWfۉ{[; f1GJP&,S܇D[`VKR`SK ))r8/sA0NG9D6NBXA$zf' 8 KDO @fԑb=?X8gPPBe(S~ 1ZX!fG 8 K?Ep@=$$H{ HTyjgl]PG1o:PG d΅؅XsdeADGN,(i#BVWWSI*2u|s̎o@<gC TH@ȩF*pn`xCxNJDU$t఻f'՗'ʤ@%`!.6 @v.TDPgmRjy骏.B+fC.Xcq\8+qA܇܃JF@AA!P*,=7vf{'業4/-=fX z/6^et,;8,rn$w1;+v&t[^{l%x}L$aAin4/Ho\G^`20yֳ쐮\1#KEc(I>:WA,2ǻk >(&3"_bȁovb*"I/ษڱ3fכypKMu)~&3z`]p6# h W)F05@²䆣Dr3X0U6:|N趆D3fw\_,lf!ϜI-Yp?p/s:pY Ol8ǻ%>ՋGr  G(pdTm7G>¸>)I@l4A V/ܤ_aoVv9ruDӼp.@p|HuhxuOOt#'ÍYp*ߣnUFQ6@h[cM#=^K (2R:҆">4ixuw6tßYr CgIT8G(dv7Z0m` ,ਘ iřHs76|w7QүM1@V *dx(obfmY5( 7ύbֵF-k!fu:Tǭ<xCQQ1> Uƶ08Æ7msǵ iJ4A.V8UTڲmoـы)~L~*Detmh)]y}cԆ>Zf_u}H6F xT<ӫuy/ܘ S"}|&?ƎMVSݸ,k S!1l ζͬ~:G1' $&I3u[l7M FO%+yPS]uDͲ&/# quՊ/aV3jF2ڧݖ6}?[ qi*CeI|n0lk@̌8B>ҭۿ}<竺(A?e|s=62ur}0Uߎiw\ /~ф~BQRs09 pw?6~ Ho^ϛ#%yF/ %%Ae"8 o}[m Gكƾ#E(6ϯdWk|`CeU`>ݒ';R,幊s Q"A@.:=H49ڈP}-fM$׊$V:^G(-%@9|d"QV3N&3zNg8 adv7 lEjq* "ps!IE*0ٌcLm5CeRmR+`u/~5ץeIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/AppIcon.appiconset/Icon@2x.png000066400000000000000000000241171263452017400310720ustar00rootroot00000000000000PNG  IHDRrr݅}sBIT|d IDATx}itՕOMwpɒm<` Oc3$&B :YIwN'ݤWwB&@&C`1'm$˲YWsޏdYd9YZNUS{]\\\\\L5Rfzݹ\nOAͮB1HLNL0p48iNh\^y 3,+8ʙrI" $Q@"uM 8kt,bowNf&˟HzhsiJs]fIeQk )f/Lb;H.ETu]ޣr%ܵa3lV4.RĭLۉdH@!}„) ൂcj |u߾.)"r˖-~WPZ+wJ y!`]Id\J&J&dTH$ €cQ q?zFQ3D"fF/5n8}1=^umoK˂H!@o[oTW3 $&0 @N!bp+ #^\[1|x|,(Ly #v;ځH+v'ڎ@.\vȁZ||ؓ\"8~gӱK Aց,XrM=eJ9ˑ(A Dm 5TY4 l5B4o+.~CSڙqb uiQ]B9̱0/Zً&9.icftEZq{#ܜn`$xόV{> "˾$)t/MNB+7`g8aG#&f6P`*^rxat `2 rCr@k>zch7B#Lqh(g_ܨqu+XKh%ْ}pXW6 KBfPh98xo=M@p+Pf-U -; n$IBrU@,Y(bc @܇]oboKlBo{r%G_5CƾAS 9kpk+0oC?fOE( &y۷r+P|\Jf`@Z` SHDdtD:h`G" TM"c<<t?q?La$E2PVgߕ_wz[<7-]eOKM&I6\][g} JT{W?*S~L)I8x

S0@,-f_֔]%}I4m`MCڊxV|7%FCD!hCp1e\ķG fˇZ)/Y9+ W%SQ$Yesmgsh}Br>,Ttӄg9 &C. )̝ f,Ke61y7LaDO |zx/)09L@pY4$DvIܥwqwaDLO2 o ś2=DOF{s`LHR$eya2/z` CF9C0zL`1h H{$Z}u:IeH(ͥ[Rqasއ0,s3ξgQI 7|̕;(H!y&8qD~ #V KaBYaEGTɆ?W:iLawT}|bS츉|;*= Dİ!diTȱa\Fw_y ֳ}̙3k ۂY@ }??\% #_M}T2pw#i%P.ۤa,1."9v]LX =+Sm| xwv_'N_۪/e%+Vm_\@b-B=߃7ހ;djkp}-+9n:.nme6PXw|j;9 zk2m'Yx)C,< 10{ԊBY0[#1#!cY ^ m9SPctGӢJӵ1߭[2[$%6k+pzqĪ: F{l%uIC_2l c;0GAK=CJ6ܛ# FT֮߻^X0;ձMX+-oCj;=ޖ`u ?;4&C O\V: κrRCA#zӸō.fOksעY a?1oH$ܒL^327o=jۂ zz_̲UU}̕7M5H@0HvD͔cFw#bjs]b5:`̴N\>@'K:`\c=#~I ֣awun.19G'Rx<6[i5de/3(c;㑉\0 v:'.)׉N/BG<Qmn5 )l/:jǏVɊ]+v]枇<{q:e#D=xЙӬ3 ̖mޗ. ,B=N.EU7Қ;^r|)vnl2:*:F XسܕHhp' ᅪxÉ,Zӧ3:q "1>gk(&Ilcg}b0ݐ"Z) L9ӫt%6-jYt$' ;1>8CoʘPBg92)Latcz'2rMik+k4}-cLf_ 枼$ )Չダ9#ǖJ FŎH-%vIc֚{!x!::S\zl5KyO@[{N/HQdC(ۣ҂[#>2ggLp.ڋXamg'c@YnZg.LĜ| %1&n@\{1%yDdזv]V>]'3/}?28Rslf?-_;#ɘ0Mr;[Sܥ0|{_31Qt&iy=1D'{cF<6mtZ% fG6v$Mk)=M2/5R̆Ȕ V`"O"FPԜK 9d7rR1*GD"D9`Ur)ؘ}b әruЖ|RU ՁGRƂēӮG!CN9D%2|ܰDV=^H2dAۅP@+O!vA:Ӷs`r@`=jHLCIdY%)e=, n&18j4)kAgJ -g`K /agx$&@@R]vX[֐ېNXjI$Kn}-(39zF[ͨ7 SOZbF$(\Mr$? XnEN&^uOA`Ġ^P獹sUaurf[2z;)͗WdT& ΂T%-mt [kX"*t1.JTY sfA)jȶĜmq9, XFf,oϲa4'ŧFf|Zc:iLE/'2&t(h0<뷴 vȥŠg nr1l &æV\ @/8pH?JY֏ .}}EwL}`y zUp(׌8Gh ( 8sPe %Yvv[3zY!޾""ߵ reͳe#7FgI&}MF<'o wa-7aȅ9,Sˣ`BpSH:=7Qn 0F@Ue2 < nr/- xljaNK'O\G7@ ~AΪ"H yGݴ*\X]!E{n"sVe_ i!B;<.Q=DP#PI36Cf#_fHHl;ل/AǩĂ jk=0#BI[\ ID}q ނ347Q?jPvUvFSW7їkٌk -܀x]'IoZ?ޏ)xx '_<ކ)ts!P֙9iיs 3!%f6h 5emfH)Ģ @ zۦ`U ' ɓNL6ރœȅ)zCwzL>XgNWxgS&Ğ\eԨĨDꨡ^kI 7}B_@Z93&c>bӽ _Q mըKF \RA[*k;p{2|%BKE>)BLPϰ1_ q`hp3j|`$2͙c*@1xa3Iɢ?f,9PYMզ0pZB.D|OkAXExk罎'n,AfRA.\}rN<ހcyNá?%u&3N\gz\(v@b/!^k7ru˴ UW8s#=܈]R%o6!oɂAi`z.Dά3Wth fd 2rNl\tr6_X9f"ݷ͌wo'dOID(u8a#כB4ώ9c\#oqB4@;>X M!WVzN\҉gZqCӦ' S cuǥanQZZo<9v_0~<}O> lAp^҂=ر; DP-]obݾD"R:[$^F#Bp!p7g[4rpZU$.ʲ簷%#mmRq{Cfπyʰ{7 muH`%T_> myn+u6cE[ 3 <\uE&^'.K{q"F~NɌ_>Ё#ÄBymR)ip}~ <G>톕\'`όJ"<ܜ֙.TU㶧YvTUC8j݁@MR9Ǯƚ/O/Jih枒ESnxmss;̫t̓uA%mݪaq6xHEYZc~c㋁5+ˎ,;$Ftjp90Fpj X:'970jxi[ʋ#8>t0k/diȷ3#>:g!S@+B[u ϛ $:=hcs),2OwTQq,ZLi:]ESA#¿ӻv9>L**\{f? Z,;h=FGpQK'ӇvCzvQdMI~źv\ߩpS7je'sI}F,1爬yD j&֡벶N .j{BUӍ`g~[VLn13ί'{-2IDAT?qbf[wPn|hz#f _&+  #6R/!>Ggn{瞒7quYJ^ v5PavptPmCRF_-=r}% 9d #ͽ E\LbAU`2#\[ƧAp]q̿Xro:FS S|4LYێ6>:M% Q{!;g/*Y[W"EKjuk2kt(/lqM4@0]=GLAp Sxfc%qEAt @30{VpͥpqMA,E,EM$#¼\>_RN۫xז$Iɿ~OveD0pokФcX,Sh գ?C e9 d|dxC?2hMd1DTl/,/ S)-"mߕ~&B  c?=&^1-˩okWܙ{ʦ`t-y 3Ҋp-|N 9sɗG"=X"S\pl?T$m]mƲS;BDe0u3bgBmdMAFQr+ U7 NJkN%İ$(çbYQ&ܚ:^͖z64jpS|`?_g⅘Gw5]WS)(IP,l<}'o/AvSCFQ6"A!xDoBO#VeX\1[<_;z }^+$pJkk?RlѣoHnE&oe'O/ oTFqn4[1- F gn>@G]A|]imW PaD4G6xwx%J@ `S ?.K*slobindr^\{\rF[u~Ѐhi&79iJIf(]1>Lxxq@qĠ2BI ˲^\0艴 X˶O6H5^q3CKh3rJ\cPꂍ-vywH_lC'CMW9`tcvG[!0CCY sNu"ƨ/څs^kh ȱMcg4?8}Lf,GUJ=ʪ0XIR/ 0:˰лs2AZ¿.:ntEZQwDK.+džF?Xs_dp fZαMdVP eJ:g!^-HѩB܌7։p3 h E}:NBp)8` n lHzTbƉ6-zTT2Fbh/X" YZxȳ!V{>myp/։H:#芴'ڎh;|Ѯ5,L;7ׄisǛ(5,LbeZ$SR 8lN MvzVH|05Q*Ӫ8Fa#އx/z?bfa#@ JOuQ-L ڃ8?6_xNIl VV.1H$A&$0b b ! .L„!G0 c'oz ^T$r nÖ-rg}3S6fIi25qjn7Aa<W#yq9 h*w{斯%A@F%#* TDi7y3859?cc=Ցct9(D^!/*.s,eVd:\ |t/hDcPcuKDwnWpWpWpWpWpW0ؗwCIENDB`JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/LaunchImage.launchimage/000077500000000000000000000000001263452017400300515ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/LaunchImage.launchimage/Contents.json000066400000000000000000000026361263452017400325500ustar00rootroot00000000000000{ "images": [ { "orientation": "portrait", "idiom": "iphone", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-iphone-2x.png" }, { "orientation": "portrait", "idiom": "iphone", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-iphone-retina4.png", "subtype": "retina4" }, { "orientation": "portrait", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "1x", "filename": "LaunchImage-ipad-portrait-1x.png" }, { "orientation": "landscape", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "1x", "filename": "LaunchImage-ipad-landscape-1x.png" }, { "orientation": "portrait", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-ipad-portrait-2x.png" }, { "orientation": "landscape", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-ipad-landscape-2x.png" } ], "info": { "version": 1, "author": "xcode" } }LaunchImage-ipad-landscape-1x.png000066400000000000000000000114501263452017400360470ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/LaunchImage.launchimagePNG  IHDR sBIT|dIDATx  SJĞ ﬙<; 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 =]WC IENDB`LaunchImage-ipad-landscape-2x.png000066400000000000000000000371411263452017400360550ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/LaunchImage.launchimagePNG  IHDR☨msBIT|d IDATxA!{sBIT|dIDATx1 & v a1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B.ZIENDB`LaunchImage-ipad-portrait-2x.png000066400000000000000000000410011263452017400357550ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/LaunchImage.launchimagePNG  IHDR6sBIT|d IDATx w%$53g;x  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 ˞ W 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!V IDATC 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C Ğ W1$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`HڈIDAT!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H=8 u?BF' "IENDB`LaunchImage-iphone-2x.png000066400000000000000000000106761263452017400344760ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/LaunchImage.launchimagePNG  IHDRsBIT|duIDATx1 & zv221 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb.=͝IENDB`LaunchImage-iphone-retina4.png000066400000000000000000000123541263452017400355060ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Builds/iOS/JuceDemo/Images.xcassets/LaunchImage.launchimagePNG  IHDRpzsBIT|dIDATx1 & zv221 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb.B YIENDB`JUCE-4.1.0/examples/Demo/JuceDemo.jucer000066400000000000000000000565601263452017400175110ustar00rootroot00000000000000 JUCE-4.1.0/examples/Demo/JuceLibraryCode/000077500000000000000000000000001263452017400177565ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/AppConfig.h000066400000000000000000000127051263452017400220020ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! There's a section below where you can add your own custom code safely, and the Introjucer will preserve the contents of that block, but the best way to change any of these definitions is by using the Introjucer's project settings. Any commented-out settings will assume their default values. */ #ifndef __JUCE_APPCONFIG_SBBIZR__ #define __JUCE_APPCONFIG_SBBIZR__ //============================================================================== // [BEGIN_USER_CODE_SECTION] #define JUCE_DONT_ASSERT_ON_GLSL_COMPILE_ERROR 1 #define JUCE_ENABLE_REPAINT_DEBUGGING 1 #define JUCE_IS_REPAINT_DEBUGGING_ACTIVE juceDemoRepaintDebuggingActive extern bool juceDemoRepaintDebuggingActive; // [END_USER_CODE_SECTION] //============================================================================== #define JUCE_MODULE_AVAILABLE_juce_audio_basics 1 #define JUCE_MODULE_AVAILABLE_juce_audio_devices 1 #define JUCE_MODULE_AVAILABLE_juce_audio_formats 1 #define JUCE_MODULE_AVAILABLE_juce_audio_processors 1 #define JUCE_MODULE_AVAILABLE_juce_audio_utils 1 #define JUCE_MODULE_AVAILABLE_juce_box2d 1 #define JUCE_MODULE_AVAILABLE_juce_core 1 #define JUCE_MODULE_AVAILABLE_juce_cryptography 1 #define JUCE_MODULE_AVAILABLE_juce_data_structures 1 #define JUCE_MODULE_AVAILABLE_juce_events 1 #define JUCE_MODULE_AVAILABLE_juce_graphics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_basics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_extra 1 #define JUCE_MODULE_AVAILABLE_juce_opengl 1 #define JUCE_MODULE_AVAILABLE_juce_video 1 //============================================================================== #ifndef JUCE_STANDALONE_APPLICATION #define JUCE_STANDALONE_APPLICATION 1 #endif //============================================================================== // juce_audio_devices flags: #ifndef JUCE_ASIO //#define JUCE_ASIO #endif #ifndef JUCE_WASAPI //#define JUCE_WASAPI #endif #ifndef JUCE_WASAPI_EXCLUSIVE #define JUCE_WASAPI_EXCLUSIVE 1 #endif #ifndef JUCE_DIRECTSOUND //#define JUCE_DIRECTSOUND #endif #ifndef JUCE_ALSA //#define JUCE_ALSA #endif #ifndef JUCE_JACK //#define JUCE_JACK #endif #ifndef JUCE_USE_ANDROID_OPENSLES //#define JUCE_USE_ANDROID_OPENSLES #endif #ifndef JUCE_USE_CDREADER //#define JUCE_USE_CDREADER #endif #ifndef JUCE_USE_CDBURNER //#define JUCE_USE_CDBURNER #endif //============================================================================== // juce_audio_formats flags: #ifndef JUCE_USE_FLAC //#define JUCE_USE_FLAC #endif #ifndef JUCE_USE_OGGVORBIS //#define JUCE_USE_OGGVORBIS #endif #ifndef JUCE_USE_MP3AUDIOFORMAT //#define JUCE_USE_MP3AUDIOFORMAT #endif #ifndef JUCE_USE_LAME_AUDIO_FORMAT //#define JUCE_USE_LAME_AUDIO_FORMAT #endif #ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT //#define JUCE_USE_WINDOWS_MEDIA_FORMAT #endif //============================================================================== // juce_audio_processors flags: #ifndef JUCE_PLUGINHOST_VST //#define JUCE_PLUGINHOST_VST #endif #ifndef JUCE_PLUGINHOST_VST3 //#define JUCE_PLUGINHOST_VST3 #endif #ifndef JUCE_PLUGINHOST_AU //#define JUCE_PLUGINHOST_AU #endif //============================================================================== // juce_core flags: #ifndef JUCE_FORCE_DEBUG //#define JUCE_FORCE_DEBUG #endif #ifndef JUCE_LOG_ASSERTIONS //#define JUCE_LOG_ASSERTIONS #endif #ifndef JUCE_CHECK_MEMORY_LEAKS //#define JUCE_CHECK_MEMORY_LEAKS #endif #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES #endif #ifndef JUCE_INCLUDE_ZLIB_CODE //#define JUCE_INCLUDE_ZLIB_CODE #endif #ifndef JUCE_USE_CURL //#define JUCE_USE_CURL #endif //============================================================================== // juce_graphics flags: #ifndef JUCE_USE_COREIMAGE_LOADER //#define JUCE_USE_COREIMAGE_LOADER #endif #ifndef JUCE_USE_DIRECTWRITE //#define JUCE_USE_DIRECTWRITE #endif //============================================================================== // juce_gui_basics flags: #ifndef JUCE_ENABLE_REPAINT_DEBUGGING //#define JUCE_ENABLE_REPAINT_DEBUGGING #endif #ifndef JUCE_USE_XSHM //#define JUCE_USE_XSHM #endif #ifndef JUCE_USE_XRENDER //#define JUCE_USE_XRENDER #endif #ifndef JUCE_USE_XCURSOR //#define JUCE_USE_XCURSOR #endif //============================================================================== // juce_gui_extra flags: #ifndef JUCE_WEB_BROWSER //#define JUCE_WEB_BROWSER #endif #ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR #define JUCE_ENABLE_LIVE_CONSTANT_EDITOR 1 #endif //============================================================================== // juce_video flags: #ifndef JUCE_DIRECTSHOW //#define JUCE_DIRECTSHOW #endif #ifndef JUCE_MEDIAFOUNDATION //#define JUCE_MEDIAFOUNDATION #endif #ifndef JUCE_QUICKTIME //#define JUCE_QUICKTIME #endif #ifndef JUCE_USE_CAMERA //#define JUCE_USE_CAMERA #endif #endif // __JUCE_APPCONFIG_SBBIZR__ JUCE-4.1.0/examples/Demo/JuceLibraryCode/BinaryData.cpp000066400000000000000000054464311263452017400225210ustar00rootroot00000000000000/* ==================================== JUCER_BINARY_RESOURCE ==================================== This is an auto-generated file: Any edits you make may be overwritten! */ namespace BinaryData { //================== tile_background.png ================== static const unsigned char temp_binary_data_0[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,7,0,0,0,7,8,6,0,0,0,196,82,87,211,0,0,0,94,73,68,65,84,120,218,85,141,73,14,0,33,8,4,253,137,226,18,19,245,234,255,127,70,75,155,232,56,135,10,132,94,112,33,4,37,222,123,205,57,107,74,105,239,196,137, 8,72,239,29,99,12,204,57,209,90,227,237,19,45,113,161,209,12,234,172,18,49,70,88,229,134,34,103,173,245,159,60,134,82,10,238,79,166,223,106,238,91,100,229,73,191,80,92,47,179,68,223,148,158,98,226,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; const char* tile_background_png = (const char*) temp_binary_data_0; //================== cello.wav ================== static const unsigned char temp_binary_data_1[] = { 82,73,70,70,4,181,0,0,87,65,86,69,102,109,116,32,16,0,0,0,1,0,1,0,34,86,0,0,68,172,0,0,2,0,16,0,98,101,120,116,92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,114,97,99,107,116,105,111,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,50,48,48,54,45,49,48,45,48,52,49,50,58,49,52,58,48,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,97,116,97,124,178,0,0,0,0,0,0,250,255,248,255,0,0,253,255,255,255,0,0,253,255,249,255,249,255,248,255,252,255,249,255,0,0,4,0,1,0,255, 255,4,0,7,0,255,255,4,0,249,255,252,255,1,0,255,255,0,0,255,255,255,255,3,0,3,0,1,0,4,0,252,255,4,0,253,255,255,255,250,255,248,255,241,255,248,255,3,0,6,0,6,0,1,0,7,0,1,0,253,255,253,255,246,255,245,255,242,255,246,255,252,255,252,255,249,255,1,0,255, 255,0,0,255,255,255,255,253,255,3,0,0,0,253,255,250,255,249,255,245,255,246,255,249,255,248,255,255,255,3,0,6,0,0,0,255,255,250,255,4,0,7,0,6,0,0,0,255,255,249,255,252,255,0,0,0,0,6,0,3,0,255,255,0,0,250,255,0,0,3,0,4,0,3,0,1,0,4,0,4,0,7,0,3,0,255,255, 255,255,246,255,248,255,253,255,3,0,253,255,1,0,252,255,4,0,253,255,6,0,3,0,253,255,253,255,252,255,255,255,253,255,253,255,0,0,255,255,0,0,0,0,3,0,7,0,4,0,1,0,255,255,242,255,250,255,255,255,8,0,0,0,3,0,0,0,3,0,0,0,249,255,248,255,250,255,0,0,252,255, 0,0,253,255,250,255,248,255,253,255,0,0,252,255,0,0,1,0,252,255,0,0,250,255,253,255,0,0,4,0,0,0,250,255,255,255,253,255,252,255,3,0,253,255,248,255,0,0,252,255,0,0,249,255,244,255,249,255,252,255,255,255,249,255,253,255,246,255,250,255,248,255,1,0,6, 0,3,0,0,0,253,255,246,255,250,255,255,255,246,255,249,255,1,0,255,255,253,255,1,0,3,0,6,0,1,0,250,255,255,255,252,255,1,0,253,255,0,0,255,255,253,255,0,0,253,255,250,255,250,255,253,255,248,255,255,255,250,255,248,255,0,0,253,255,252,255,6,0,3,0,3,0, 250,255,255,255,255,255,250,255,249,255,253,255,1,0,4,0,6,0,4,0,255,255,253,255,253,255,255,255,255,255,250,255,1,0,253,255,250,255,255,255,249,255,252,255,255,255,255,255,6,0,6,0,8,0,4,0,255,255,1,0,1,0,3,0,255,255,4,0,4,0,1,0,250,255,3,0,253,255,253, 255,4,0,250,255,255,255,255,255,255,255,249,255,248,255,255,255,3,0,248,255,3,0,248,255,0,0,4,0,4,0,253,255,252,255,252,255,246,255,248,255,250,255,250,255,253,255,6,0,3,0,6,0,4,0,6,0,7,0,12,0,6,0,10,0,15,0,14,0,6,0,6,0,255,255,248,255,252,255,1,0,3, 0,8,0,3,0,3,0,8,0,0,0,1,0,10,0,10,0,7,0,6,0,6,0,10,0,6,0,4,0,252,255,4,0,11,0,18,0,14,0,10,0,15,0,11,0,10,0,14,0,15,0,17,0,18,0,17,0,17,0,17,0,11,0,12,0,11,0,17,0,12,0,14,0,7,0,10,0,12,0,11,0,4,0,3,0,253,255,255,255,1,0,0,0,250,255,253,255,6,0,4,0,7, 0,7,0,4,0,1,0,3,0,1,0,3,0,252,255,246,255,248,255,249,255,252,255,0,0,0,0,253,255,255,255,250,255,246,255,249,255,253,255,8,0,6,0,25,0,19,0,19,0,18,0,18,0,24,0,24,0,25,0,26,0,30,0,26,0,22,0,28,0,15,0,15,0,8,0,11,0,10,0,7,0,25,0,24,0,32,0,44,0,43,0,57, 0,51,0,53,0,48,0,46,0,40,0,35,0,29,0,24,0,21,0,8,0,0,0,250,255,239,255,237,255,228,255,227,255,223,255,228,255,227,255,228,255,228,255,239,255,239,255,242,255,244,255,245,255,245,255,237,255,223,255,214,255,202,255,191,255,174,255,162,255,155,255,138, 255,138,255,130,255,127,255,120,255,111,255,111,255,108,255,105,255,102,255,98,255,99,255,99,255,97,255,99,255,104,255,113,255,127,255,145,255,151,255,165,255,169,255,180,255,192,255,187,255,180,255,166,255,162,255,156,255,154,255,148,255,149,255,156, 255,172,255,187,255,196,255,188,255,194,255,188,255,191,255,181,255,181,255,180,255,173,255,170,255,167,255,156,255,141,255,112,255,87,255,57,255,26,255,0,255,231,254,216,254,214,254,211,254,220,254,229,254,239,254,254,254,29,255,69,255,104,255,133,255, 142,255,166,255,195,255,210,255,232,255,250,255,4,0,253,255,235,255,209,255,180,255,165,255,162,255,165,255,170,255,185,255,191,255,184,255,183,255,173,255,154,255,127,255,104,255,99,255,112,255,133,255,156,255,170,255,176,255,173,255,136,255,115,255, 79,255,52,255,37,255,37,255,50,255,62,255,65,255,65,255,72,255,51,255,11,255,218,254,185,254,171,254,196,254,3,255,79,255,167,255,3,0,89,0,169,0,233,0,33,1,78,1,132,1,191,1,243,1,28,2,52,2,48,2,20,2,222,1,141,1,35,1,172,0,54,0,221,255,158,255,130,255, 142,255,185,255,238,255,44,0,101,0,147,0,150,0,127,0,76,0,7,0,195,255,98,255,254,254,175,254,131,254,105,254,98,254,108,254,119,254,135,254,152,254,163,254,178,254,195,254,221,254,254,254,18,255,15,255,254,254,209,254,141,254,72,254,23,254,244,253,6, 254,38,254,110,254,213,254,58,255,142,255,220,255,28,0,83,0,134,0,180,0,220,0,22,1,90,1,161,1,236,1,54,2,126,2,194,2,250,2,42,3,84,3,107,3,132,3,143,3,143,3,139,3,127,3,91,3,70,3,41,3,244,2,187,2,147,2,104,2,84,2,79,2,77,2,78,2,85,2,93,2,84,2,54,2,10, 2,202,1,144,1,81,1,14,1,194,0,126,0,72,0,55,0,60,0,105,0,157,0,216,0,14,1,54,1,96,1,117,1,136,1,155,1,154,1,164,1,175,1,180,1,194,1,222,1,3,2,49,2,125,2,211,2,39,3,103,3,159,3,186,3,172,3,128,3,75,3,19,3,200,2,125,2,50,2,248,1,179,1,117,1,54,1,248,0, 183,0,118,0,61,0,24,0,0,0,255,255,7,0,43,0,90,0,148,0,213,0,28,1,108,1,193,1,10,2,75,2,147,2,211,2,15,3,67,3,95,3,117,3,141,3,142,3,131,3,109,3,85,3,55,3,15,3,226,2,196,2,142,2,85,2,14,2,198,1,117,1,39,1,205,0,101,0,244,255,122,255,242,254,112,254,228, 253,109,253,1,253,172,252,114,252,89,252,82,252,92,252,128,252,196,252,10,253,91,253,168,253,228,253,19,254,52,254,63,254,52,254,30,254,242,253,206,253,166,253,128,253,100,253,96,253,102,253,123,253,154,253,193,253,242,253,37,254,85,254,124,254,163,254, 177,254,167,254,153,254,139,254,116,254,80,254,11,254,171,253,96,253,42,253,9,253,237,252,219,252,240,252,24,253,77,253,177,253,49,254,175,254,39,255,140,255,209,255,11,0,65,0,115,0,125,0,96,0,73,0,51,0,1,0,205,255,176,255,191,255,228,255,249,255,252, 255,255,255,245,255,232,255,209,255,174,255,147,255,116,255,61,255,227,254,124,254,1,254,142,253,74,253,59,253,27,253,240,252,186,252,142,252,96,252,68,252,24,252,245,251,229,251,241,251,21,252,84,252,151,252,193,252,200,252,161,252,77,252,219,251,94, 251,244,250,163,250,143,250,177,250,4,251,97,251,207,251,79,252,185,252,248,252,21,253,75,253,207,253,146,254,131,255,127,0,71,1,225,1,90,2,181,2,239,2,13,3,21,3,44,3,41,3,37,3,251,2,207,2,149,2,79,2,233,1,56,1,86,0,115,255,191,254,65,254,239,253,203, 253,204,253,224,253,36,254,128,254,239,254,80,255,151,255,166,255,131,255,54,255,167,254,218,253,243,252,27,252,132,251,58,251,40,251,56,251,96,251,125,251,129,251,74,251,234,250,130,250,57,250,21,250,14,250,49,250,94,250,151,250,231,250,86,251,193,251, 18,252,63,252,86,252,113,252,120,252,96,252,61,252,24,252,23,252,48,252,118,252,228,252,134,253,78,254,40,255,10,0,201,0,93,1,191,1,13,2,84,2,174,2,5,3,82,3,154,3,213,3,26,4,74,4,90,4,108,4,144,4,186,4,254,4,75,5,174,5,10,6,104,6,148,6,162,6,125,6,78, 6,29,6,252,5,246,5,4,6,21,6,61,6,118,6,162,6,166,6,119,6,36,6,201,5,77,5,211,4,106,4,253,3,128,3,17,3,153,2,50,2,208,1,132,1,97,1,104,1,132,1,184,1,252,1,75,2,189,2,45,3,163,3,251,3,76,4,155,4,228,4,27,5,69,5,91,5,99,5,87,5,80,5,58,5,39,5,19,5,231,4, 193,4,167,4,137,4,90,4,51,4,24,4,30,4,59,4,106,4,166,4,231,4,45,5,112,5,173,5,239,5,48,6,93,6,109,6,80,6,29,6,221,5,135,5,43,5,220,4,134,4,47,4,208,3,143,3,78,3,24,3,222,2,153,2,90,2,43,2,251,1,216,1,187,1,171,1,178,1,211,1,7,2,43,2,74,2,68,2,255,1,162, 1,49,1,172,0,43,0,191,255,115,255,86,255,87,255,115,255,180,255,4,0,87,0,140,0,151,0,130,0,66,0,226,255,99,255,217,254,54,254,148,253,244,252,110,252,241,251,151,251,90,251,57,251,65,251,104,251,190,251,35,252,149,252,9,253,99,253,174,253,221,253,239, 253,235,253,208,253,185,253,152,253,99,253,33,253,225,252,158,252,99,252,49,252,17,252,5,252,2,252,27,252,82,252,176,252,49,253,192,253,78,254,220,254,81,255,169,255,224,255,221,255,184,255,91,255,214,254,62,254,152,253,3,253,139,252,46,252,237,251,196, 251,182,251,227,251,48,252,121,252,199,252,35,253,174,253,36,254,134,254,235,254,66,255,130,255,167,255,151,255,99,255,19,255,156,254,27,254,181,253,103,253,49,253,235,252,147,252,60,252,244,251,209,251,204,251,190,251,150,251,104,251,60,251,10,251,224, 250,202,250,184,250,184,250,215,250,65,251,226,251,163,252,132,253,102,254,14,255,83,255,57,255,223,254,94,254,207,253,60,253,160,252,20,252,193,251,147,251,118,251,101,251,99,251,83,251,57,251,14,251,7,251,11,251,64,251,183,251,86,252,241,252,100,253, 179,253,9,254,113,254,224,254,68,255,163,255,7,0,90,0,165,0,217,0,6,1,7,1,183,0,8,0,22,255,8,254,24,253,107,252,17,252,9,252,35,252,86,252,163,252,253,252,92,253,142,253,100,253,192,252,197,251,130,250,57,249,254,247,26,247,120,246,5,246,200,245,180, 245,211,245,254,245,24,246,3,246,204,245,168,245,164,245,198,245,25,246,147,246,52,247,197,247,37,248,112,248,185,248,14,249,142,249,69,250,72,251,131,252,215,253,23,255,54,0,33,1,191,1,2,2,25,2,35,2,63,2,117,2,207,2,107,3,73,4,108,5,184,6,251,7,60,9, 149,10,214,11,240,12,197,13,110,14,239,14,77,15,132,15,139,15,89,15,211,14,13,14,54,13,105,12,201,11,84,11,5,11,232,10,222,10,189,10,144,10,70,10,239,9,96,9,146,8,157,7,150,6,126,5,116,4,114,3,138,2,165,1,202,0,15,0,112,255,236,254,148,254,105,254,120, 254,211,254,104,255,43,0,20,1,14,2,3,3,221,3,116,4,227,4,69,5,185,5,33,6,155,6,33,7,157,7,2,8,118,8,216,8,35,9,64,9,64,9,49,9,30,9,12,9,255,8,240,8,208,8,150,8,67,8,243,7,155,7,45,7,205,6,107,6,21,6,202,5,153,5,102,5,83,5,84,5,81,5,102,5,108,5,106,5, 134,5,202,5,42,6,180,6,93,7,32,8,236,8,170,9,103,10,246,10,66,11,73,11,7,11,108,10,149,9,133,8,83,7,37,6,239,4,224,3,211,2,226,1,22,1,129,0,255,255,113,255,198,254,9,254,42,253,57,252,42,251,14,250,236,248,214,247,215,246,12,246,97,245,14,245,6,245,68, 245,197,245,111,246,12,247,160,247,33,248,148,248,216,248,242,248,235,248,234,248,221,248,241,248,28,249,98,249,176,249,15,250,119,250,240,250,117,251,241,251,93,252,193,252,16,253,81,253,125,253,153,253,167,253,163,253,168,253,167,253,128,253,81,253, 56,253,89,253,152,253,210,253,218,253,197,253,186,253,215,253,38,254,119,254,196,254,1,255,65,255,137,255,220,255,46,0,134,0,209,0,9,1,54,1,83,1,79,1,49,1,32,1,25,1,249,0,145,0,4,0,91,255,164,254,12,254,159,253,55,253,194,252,103,252,43,252,2,252,200, 251,118,251,40,251,249,250,198,250,133,250,37,250,187,249,77,249,235,248,149,248,48,248,196,247,130,247,107,247,114,247,124,247,114,247,24,247,125,246,203,245,4,245,53,244,152,243,66,243,26,243,37,243,79,243,108,243,133,243,177,243,233,243,35,244,73, 244,144,244,53,245,74,246,179,247,102,249,75,251,39,253,227,254,112,0,227,1,45,3,110,4,115,5,39,6,127,6,80,6,209,5,1,5,225,3,63,2,55,0,228,253,154,251,158,249,56,248,121,247,69,247,121,247,243,247,159,248,116,249,55,250,202,250,21,251,33,251,197,250, 255,249,25,249,49,248,67,247,103,246,129,245,168,244,248,243,109,243,33,243,14,243,46,243,98,243,142,243,191,243,6,244,115,244,20,245,197,245,88,246,187,246,34,247,148,247,19,248,203,248,147,249,98,250,25,251,162,251,42,252,163,252,10,253,105,253,195, 253,78,254,5,255,4,0,74,1,229,2,149,4,44,6,147,7,186,8,189,9,108,10,214,10,1,11,16,11,52,11,152,11,253,11,144,12,69,13,243,13,180,14,106,15,23,16,182,16,61,17,217,17,154,18,25,19,78,19,47,19,197,18,61,18,167,17,250,16,73,16,179,15,116,15,114,15,161,15, 217,15,16,16,30,16,226,15,113,15,174,14,151,13,41,12,144,10,241,8,85,7,206,5,110,4,64,3,78,2,172,1,69,1,51,1,86,1,198,1,140,2,145,3,153,4,149,5,100,6,10,7,112,7,130,7,81,7,238,6,115,6,237,5,140,5,95,5,122,5,225,5,123,6,13,7,132,7,254,7,131,8,6,9,142, 9,22,10,168,10,94,11,246,11,125,12,220,12,22,13,36,13,231,12,98,12,188,11,250,10,51,10,123,9,236,8,139,8,56,8,227,7,140,7,38,7,183,6,89,6,235,5,153,5,79,5,25,5,235,4,196,4,157,4,85,4,254,3,132,3,232,2,74,2,139,1,213,0,7,0,21,255,23,254,67,253,121,252, 186,251,70,251,25,251,56,251,150,251,31,252,215,252,145,253,58,254,178,254,200,254,113,254,190,253,204,252,168,251,100,250,37,249,232,247,194,246,201,245,2,245,129,244,65,244,55,244,90,244,158,244,233,244,74,245,190,245,53,246,135,246,186,246,194,246, 205,246,207,246,254,246,78,247,150,247,213,247,243,247,51,248,134,248,252,248,118,249,219,249,75,250,181,250,25,251,125,251,240,251,84,252,171,252,240,252,69,253,175,253,49,254,174,254,44,255,136,255,178,255,169,255,105,255,34,255,239,254,247,254,54, 255,115,255,141,255,144,255,134,255,140,255,191,255,29,0,173,0,57,1,129,1,118,1,47,1,6,1,213,0,132,0,8,0,77,255,92,254,34,253,182,251,107,250,111,249,157,248,245,247,95,247,247,246,161,246,73,246,216,245,7,245,216,243,55,242,64,240,47,238,112,236,55, 235,156,234,100,234,111,234,228,234,182,235,195,236,220,237,193,238,131,239,84,240,73,241,119,242,235,243,64,245,70,246,232,246,94,247,202,247,12,248,119,248,39,249,54,250,70,251,77,252,44,253,195,253,2,254,211,253,70,253,85,252,36,251,223,249,221,248, 119,248,223,248,228,249,49,251,133,252,224,253,7,255,4,0,162,0,217,0,125,0,162,255,106,254,39,253,5,252,32,251,151,250,158,250,229,250,29,251,6,251,169,250,24,250,95,249,133,248,132,247,103,246,56,245,31,244,23,243,19,242,17,241,45,240,133,239,53,239, 57,239,190,239,172,240,251,241,137,243,49,245,167,246,184,247,106,248,224,248,61,249,145,249,31,250,49,251,194,252,182,254,224,0,39,3,147,5,255,7,53,10,68,12,6,14,136,15,203,16,176,17,77,18,166,18,8,19,159,19,81,20,44,21,73,22,152,23,249,24,88,26,196, 27,25,29,29,30,245,30,109,31,118,31,249,30,65,30,98,29,92,28,97,27,89,26,72,25,50,24,66,23,116,22,212,21,78,21,225,20,131,20,249,19,22,19,230,17,96,16,168,14,240,12,90,11,4,10,236,8,238,7,36,7,145,6,42,6,230,5,159,5,137,5,173,5,235,5,72,6,198,6,94,7, 34,8,216,8,128,9,2,10,74,10,80,10,27,10,204,9,111,9,250,8,126,8,243,7,61,7,129,6,253,5,223,5,47,6,201,6,154,7,102,8,49,9,27,10,11,11,219,11,122,12,231,12,26,13,21,13,237,12,202,12,174,12,152,12,112,12,29,12,165,11,234,10,246,9,240,8,3,8,56,7,161,6,47, 6,6,6,50,6,134,6,223,6,24,7,61,7,68,7,40,7,226,6,90,6,159,5,166,4,124,3,50,2,188,0,34,255,134,253,23,252,227,250,18,250,162,249,158,249,209,249,51,250,137,250,219,250,244,250,186,250,33,250,252,248,80,247,81,245,47,243,40,241,85,239,219,237,241,236,149, 236,209,236,155,237,193,238,32,240,164,241,40,243,139,244,201,245,181,246,81,247,145,247,163,247,128,247,31,247,109,246,143,245,139,244,126,243,170,242,48,242,11,242,0,242,250,241,54,242,192,242,203,243,16,245,96,246,181,247,242,248,54,250,96,251,67, 252,190,252,200,252,146,252,34,252,81,251,31,250,26,249,144,248,101,248,117,248,224,248,130,249,51,250,248,250,12,252,114,253,7,255,151,0,254,1,229,2,82,3,71,3,236,2,59,2,28,1,199,255,72,254,128,252,150,250,181,248,88,247,118,246,187,245,247,244,91,244, 35,244,255,243,208,243,90,243,135,242,110,241,9,240,112,238,173,236,218,234,95,233,159,232,47,232,233,231,249,231,101,232,23,233,172,233,180,233,77,233,220,232,7,233,200,233,251,234,79,236,163,237,198,238,236,239,243,240,225,241,187,242,145,243,130,244, 165,245,172,246,178,247,105,248,3,249,98,249,108,249,239,248,29,248,84,247,34,247,192,247,16,249,226,250,10,253,21,255,222,0,60,2,45,3,177,3,202,3,105,3,142,2,35,1,76,255,62,253,112,251,250,249,224,248,11,248,172,247,156,247,196,247,18,248,31,248,213, 247,44,247,61,246,97,245,132,244,195,243,180,242,121,241,98,240,216,239,254,239,226,240,61,242,235,243,155,245,253,246,9,248,229,248,88,249,149,249,185,249,65,250,79,251,212,252,36,255,20,2,93,5,218,8,47,12,20,15,79,17,20,19,101,20,104,21,67,22,51,23, 62,24,40,25,244,25,160,26,48,27,163,27,24,28,189,28,134,29,90,30,93,31,180,32,3,34,9,35,157,35,171,35,88,35,6,35,168,34,49,34,192,33,118,33,81,33,39,33,254,32,184,32,101,32,204,31,221,30,139,29,232,27,47,26,77,24,124,22,237,20,129,19,48,18,30,17,67,16, 138,15,216,14,65,14,198,13,105,13,85,13,130,13,226,13,104,14,246,14,85,15,102,15,21,15,118,14,162,13,170,12,192,11,227,10,214,9,214,8,237,7,36,7,105,6,171,5,216,4,247,3,62,3,183,2,129,2,139,2,218,2,77,3,254,3,189,4,160,5,138,6,86,7,219,7,9,8,28,8,32, 8,41,8,61,8,107,8,198,8,27,9,102,9,124,9,114,9,67,9,248,8,132,8,6,8,117,7,215,6,73,6,220,5,147,5,98,5,98,5,137,5,209,5,1,6,6,6,188,5,41,5,47,4,183,2,220,0,210,254,168,252,144,250,164,248,33,247,12,246,101,245,29,245,53,245,107,245,128,245,136,245,74, 245,229,244,49,244,76,243,56,242,15,241,226,239,186,238,174,237,228,236,102,236,98,236,188,236,109,237,80,238,72,239,88,240,137,241,207,242,51,244,72,245,251,245,48,246,250,245,139,245,13,245,98,244,119,243,99,242,94,241,98,240,140,239,187,238,248,237, 82,237,155,236,254,235,204,235,70,236,83,237,132,238,244,239,171,241,140,243,86,245,186,246,181,247,103,248,54,249,196,249,209,249,115,249,15,249,15,249,123,249,65,250,75,251,106,252,102,253,0,254,8,254,1,254,134,254,148,255,120,0,222,0,212,0,97,0,172, 255,243,254,29,254,248,252,82,251,154,249,13,248,207,246,208,245,249,244,241,243,178,242,60,241,75,239,212,236,1,234,80,231,254,228,3,227,93,225,243,223,72,223,45,223,80,223,72,223,44,223,40,223,130,223,120,224,62,226,100,228,166,230,168,232,57,234,38, 235,156,235,242,235,115,236,36,237,53,238,149,239,52,241,228,242,211,244,2,247,15,249,108,250,202,250,53,250,61,249,133,248,98,248,239,248,21,250,204,251,51,254,18,1,31,4,46,7,113,9,184,10,163,10,34,9,148,6,85,3,248,255,171,252,216,249,152,247,227,245, 169,244,212,243,155,243,216,243,7,244,31,244,43,244,86,244,121,244,175,244,177,244,140,244,57,244,213,243,106,243,90,243,221,243,249,244,111,246,48,248,239,249,101,251,99,252,250,252,17,253,246,252,207,252,222,252,172,253,52,255,135,1,116,4,101,7,59, 10,238,12,80,15,109,17,86,19,232,20,178,22,192,24,153,26,59,28,210,29,53,31,83,32,196,32,182,32,81,32,201,31,177,31,97,32,194,33,151,35,145,37,97,39,229,40,14,42,238,42,115,43,130,43,68,43,252,42,202,42,130,42,250,41,88,41,177,40,228,39,222,38,172,37, 101,36,23,35,233,33,191,32,111,31,57,30,36,29,247,27,178,26,90,25,235,23,174,22,200,21,114,21,120,21,163,21,9,22,137,22,195,22,148,22,225,21,219,20,119,19,224,17,67,16,169,14,51,13,35,12,129,11,40,11,231,10,127,10,190,9,135,8,235,6,69,5,177,3,23,2,211, 0,227,255,50,255,217,254,177,254,241,254,130,255,64,0,31,1,17,2,20,3,88,4,176,5,253,6,16,8,218,8,159,9,73,10,186,10,235,10,239,10,234,10,192,10,130,10,33,10,188,9,80,9,237,8,143,8,218,7,46,7,104,6,195,5,48,5,173,4,58,4,146,3,171,2,100,1,201,255,18,254, 124,252,10,251,167,249,84,248,46,247,59,246,82,245,184,244,15,244,100,243,202,242,240,241,27,241,35,240,49,239,107,238,177,237,239,236,23,236,76,235,106,234,205,233,119,233,83,233,136,233,28,234,15,235,177,236,206,238,74,241,198,243,201,245,31,247,182, 247,207,247,102,247,127,246,9,245,33,243,243,240,154,238,50,236,98,234,14,233,252,231,206,230,185,229,29,229,44,229,160,229,65,230,23,231,25,232,64,233,164,234,14,236,77,237,134,238,12,240,156,241,148,242,191,242,135,242,105,242,73,242,55,242,112,242, 26,243,172,243,208,243,166,243,137,243,237,243,205,244,55,246,236,247,154,249,245,250,24,252,1,253,178,253,220,253,91,253,84,252,241,250,91,249,182,247,254,245,32,244,67,242,121,240,134,238,144,236,102,234,119,232,217,230,166,229,171,228,203,227,56,227, 17,227,36,227,245,226,101,226,194,225,120,225,202,225,209,226,167,228,4,231,124,233,196,235,165,237,35,239,79,240,27,241,125,241,160,241,240,241,109,242,48,243,35,244,75,245,149,246,95,247,163,247,2,247,189,245,101,244,109,243,205,242,146,242,232,242, 237,243,169,245,195,247,248,249,89,252,77,254,145,255,234,255,169,255,195,254,109,253,169,251,24,250,41,249,182,248,49,248,149,247,154,246,168,245,119,244,82,243,62,242,114,241,38,241,98,241,34,242,242,242,158,243,33,244,166,244,18,245,171,245,187,246, 79,248,109,250,250,252,136,255,214,1,62,3,202,3,168,3,176,2,31,1,210,255,16,255,245,254,102,255,111,0,82,2,214,4,200,7,48,11,192,14,116,18,254,21,111,25,146,28,90,31,139,33,105,35,183,36,94,37,175,37,162,37,101,37,62,37,79,37,191,37,215,38,124,40,198, 42,85,45,5,48,187,50,58,53,28,55,101,56,2,57,213,56,255,55,138,54,217,52,230,50,224,48,47,47,192,45,159,44,198,43,220,42,9,42,63,41,154,40,251,39,81,39,107,38,107,37,27,36,127,34,218,32,61,31,227,29,185,28,157,27,144,26,141,25,166,24,48,24,241,23,189, 23,166,23,130,23,59,23,202,22,53,22,96,21,54,20,165,18,54,17,168,15,23,14,116,12,227,10,127,9,41,8,191,6,61,5,179,3,102,2,132,1,208,0,136,0,140,0,234,0,87,1,232,1,146,2,81,3,40,4,75,5,190,6,42,8,69,9,206,9,237,9,196,9,48,9,241,7,120,6,25,5,254,3,53,3, 217,2,8,3,147,3,44,4,221,4,106,5,159,5,144,5,76,5,198,4,222,3,203,2,144,1,98,0,50,255,242,253,147,252,29,251,177,249,130,248,125,247,243,246,197,246,5,247,99,247,159,247,190,247,74,247,115,246,13,245,84,243,51,241,206,238,162,236,92,234,64,232,130,230, 77,229,188,228,168,228,15,229,216,229,217,230,43,232,178,233,38,235,91,236,1,237,245,236,138,236,14,236,132,235,197,234,229,233,223,232,217,231,1,231,80,230,234,229,124,229,23,229,195,228,82,228,182,227,162,227,19,228,163,228,69,229,243,229,145,230,93, 231,83,232,125,233,199,234,86,236,198,237,150,238,176,238,97,238,10,238,220,237,10,238,143,238,16,239,10,239,90,238,69,237,68,236,210,235,9,236,213,236,219,237,206,238,222,239,99,241,3,243,42,244,170,244,173,244,44,244,10,243,184,241,131,240,89,239,11, 238,149,236,219,234,212,232,188,230,88,228,227,225,232,223,73,222,223,220,209,219,147,219,61,220,61,221,237,221,241,221,138,221,142,221,23,222,37,223,195,224,28,227,236,229,164,232,242,234,19,237,21,239,253,240,145,242,201,243,143,244,74,245,49,246,71, 247,127,248,142,249,238,249,21,249,33,247,97,244,149,241,71,239,237,237,141,237,49,238,125,239,166,241,118,244,23,248,247,251,130,255,237,1,248,2,189,2,161,1,212,255,202,253,251,251,245,250,118,250,58,250,138,249,109,248,247,246,76,245,163,243,69,242, 134,241,130,241,77,242,113,243,139,244,201,245,221,246,148,247,246,247,8,248,123,248,54,249,108,250,10,252,220,253,94,255,129,0,27,1,147,0,50,255,56,253,110,251,79,250,89,250,179,251,74,254,158,1,187,5,135,10,102,15,0,20,245,23,142,27,219,30,117,33,70, 35,147,36,132,37,90,38,41,39,236,39,123,40,8,41,213,41,12,43,164,44,175,46,75,49,3,52,158,54,82,57,235,59,19,62,114,63,23,64,54,64,203,63,166,62,234,60,206,58,147,56,162,54,203,52,241,50,101,49,234,47,116,46,209,44,21,43,66,41,154,39,38,38,231,36,218, 35,184,34,111,33,24,32,202,30,163,29,153,28,224,27,140,27,95,27,97,27,153,27,246,27,121,28,240,28,20,29,207,28,20,28,27,27,242,25,179,24,77,23,222,21,82,20,191,18,1,17,2,15,28,13,138,11,66,10,32,9,42,8,118,7,36,7,235,6,248,6,22,7,46,7,81,7,114,7,76,7, 162,6,207,5,9,5,189,4,163,4,220,4,189,4,180,4,126,4,77,4,220,3,163,3,123,3,136,3,197,3,149,4,188,5,224,6,238,7,193,8,66,9,63,9,223,8,43,8,105,7,181,6,7,6,57,5,62,4,39,3,36,2,209,0,47,255,171,253,49,252,233,250,237,249,37,249,166,248,126,248,164,248,163, 248,91,248,81,247,154,245,65,243,77,240,68,237,14,234,216,230,39,228,21,226,191,224,8,224,243,223,97,224,50,225,133,226,78,228,178,230,60,233,168,235,180,237,205,238,35,239,249,238,86,238,71,237,204,235,13,234,125,232,32,231,90,230,62,230,47,230,23,230, 189,229,88,229,231,228,139,228,74,228,106,228,160,228,213,228,244,228,5,229,27,229,102,229,210,229,207,230,8,232,229,232,74,233,180,233,17,234,92,234,182,234,44,235,137,235,91,235,172,234,236,233,244,232,4,232,202,231,115,232,68,233,219,233,189,234,43, 236,228,237,133,239,154,240,237,240,199,240,163,240,216,239,13,238,239,235,20,234,64,232,27,230,175,227,246,224,57,222,174,219,173,217,26,216,168,214,130,213,249,212,76,213,140,214,39,216,134,217,86,218,21,219,28,220,153,221,152,223,28,226,232,228,180, 231,66,234,140,236,180,238,193,240,151,242,10,244,82,245,109,246,128,247,139,248,209,249,22,251,233,251,136,251,252,249,188,247,89,245,69,243,214,241,41,241,98,241,87,242,58,244,19,247,181,250,138,254,220,1,98,4,217,5,255,5,245,4,233,2,54,0,188,253,212, 251,180,250,14,250,228,249,202,249,159,249,68,249,159,248,156,247,124,246,166,245,244,244,209,244,218,244,241,244,212,244,133,244,152,244,220,244,52,245,171,245,183,246,94,248,201,250,166,253,58,0,250,1,185,2,179,2,168,1,209,255,206,253,63,252,139,251, 82,252,173,254,23,2,134,6,169,11,152,17,95,23,117,28,176,32,30,36,147,38,111,40,192,41,94,42,221,42,58,43,163,43,11,44,79,44,252,44,64,46,0,48,68,50,27,53,46,56,96,59,132,62,120,65,247,67,167,69,108,70,95,70,93,69,114,67,238,64,185,61,64,58,228,54,2, 52,186,49,218,47,145,46,176,45,220,44,231,43,12,43,51,42,110,41,192,40,17,40,230,38,61,37,109,35,244,33,171,32,90,31,127,30,210,29,135,29,144,29,170,29,198,29,4,30,19,30,252,29,196,29,54,29,145,28,172,27,144,26,44,25,140,23,5,22,121,20,105,18,81,16,72, 14,183,12,74,11,247,9,95,8,154,6,3,5,196,3,194,2,251,1,68,1,209,0,104,0,39,0,230,255,106,255,234,254,216,254,59,255,216,255,143,0,128,1,114,2,67,3,233,3,130,4,186,4,199,4,232,4,66,5,191,5,162,6,108,7,63,8,248,8,178,9,244,9,193,9,69,9,182,8,243,7,194, 6,142,5,54,4,171,2,238,0,243,254,183,252,151,250,52,249,109,248,4,248,153,247,38,247,193,246,56,246,90,245,3,244,170,241,216,238,238,235,13,233,84,230,255,227,33,226,163,224,207,223,137,223,235,223,159,224,205,225,82,227,11,229,21,231,27,233,244,234, 112,236,119,237,244,237,223,237,134,237,188,236,171,235,96,234,34,233,79,232,180,231,108,231,41,231,180,230,74,230,164,229,199,228,204,227,220,226,32,226,224,225,210,225,156,225,125,225,209,225,150,226,229,227,1,229,1,230,3,231,217,231,132,232,2,233, 47,233,83,233,136,233,135,233,39,233,78,232,69,231,61,230,87,229,4,229,58,229,211,229,178,230,251,231,93,233,246,234,159,236,56,238,131,239,55,240,55,240,47,239,59,237,153,234,173,231,96,228,225,224,86,221,55,218,156,215,163,213,43,212,226,210,215,209, 73,209,24,209,74,209,174,209,5,210,246,209,235,209,56,210,41,211,224,212,113,215,169,218,12,222,118,225,30,229,202,232,87,236,149,239,120,242,230,244,183,246,74,248,4,250,41,252,128,254,157,0,31,2,142,2,7,2,123,0,76,254,16,252,36,250,59,249,98,249,159, 250,175,252,105,255,106,2,162,5,117,8,178,10,178,11,29,11,51,9,151,6,226,3,135,1,241,255,147,255,120,255,172,255,109,255,178,254,17,253,186,250,245,247,169,245,216,243,95,242,244,240,248,239,96,239,50,239,28,239,96,239,204,239,74,240,103,241,106,243, 239,245,206,248,175,251,56,254,21,0,187,0,137,0,183,255,128,254,145,253,56,253,179,253,27,255,87,1,204,4,82,9,93,14,187,19,234,24,180,29,244,33,125,37,248,39,149,41,181,42,144,43,114,44,75,45,44,46,85,47,116,48,213,49,147,51,181,53,18,56,118,58,7,61, 209,63,151,66,8,69,203,70,207,71,87,72,30,72,250,70,187,68,154,65,68,62,200,58,147,55,246,52,10,51,219,49,55,49,180,48,12,48,8,47,212,45,118,44,11,43,135,41,239,39,83,38,216,36,97,35,56,34,86,33,222,32,155,32,146,32,130,32,60,32,244,31,180,31,96,31,224, 30,241,29,251,28,182,27,128,26,71,25,25,24,99,22,36,20,239,17,217,15,193,13,155,11,196,9,153,8,218,7,129,7,22,7,104,6,191,5,185,4,186,3,117,2,76,1,226,255,200,254,67,254,229,253,210,253,22,254,227,254,190,255,177,0,141,1,21,2,169,2,52,3,145,3,186,3,232, 3,72,4,245,4,250,5,33,7,132,8,174,9,159,10,91,11,171,11,135,11,5,11,17,10,228,8,141,7,1,6,37,4,21,2,42,0,103,254,179,252,212,250,243,248,175,247,160,246,143,245,161,244,3,244,115,243,28,243,180,242,161,241,214,239,113,237,199,234,89,232,217,229,156,227, 127,225,202,223,156,222,57,222,85,222,199,222,127,223,195,224,117,226,143,228,195,230,225,232,200,234,58,236,47,237,181,237,183,237,5,237,225,235,135,234,79,233,58,232,149,231,108,231,148,231,202,231,195,231,58,231,112,230,76,229,38,228,81,227,159,226, 255,225,126,225,86,225,162,225,25,226,231,226,38,228,157,229,134,230,188,230,237,230,55,231,104,231,138,231,0,232,58,232,177,231,87,230,255,228,31,228,212,227,44,228,197,228,125,229,74,230,79,231,141,232,164,233,125,234,40,235,120,235,40,235,17,234,122, 232,80,230,210,227,55,225,103,222,116,219,127,216,125,213,109,210,169,207,146,205,230,203,186,202,57,202,132,202,7,203,38,203,236,202,204,202,24,203,255,203,188,205,28,208,61,211,243,214,11,219,65,223,47,227,183,230,82,234,40,238,25,242,150,245,37,248, 3,250,225,251,33,254,151,0,194,2,15,4,47,4,124,3,9,2,40,0,52,254,223,252,136,252,219,252,186,253,70,255,154,1,175,4,227,7,138,10,44,12,150,12,235,11,106,10,120,8,66,6,76,4,19,3,133,2,193,2,114,3,192,3,70,3,45,2,181,0,192,254,147,252,76,250,26,248,125, 246,197,244,102,243,180,242,108,242,173,242,115,243,170,244,41,246,200,247,80,250,19,253,231,255,93,2,85,4,19,5,210,4,232,3,186,2,118,1,126,0,114,0,97,1,44,3,183,5,12,9,244,12,74,17,253,21,222,26,150,31,232,35,136,39,16,42,216,43,233,44,139,45,140,45, 21,45,208,44,54,45,45,46,229,47,53,50,31,53,133,56,1,60,61,63,22,66,108,68,109,70,244,71,210,72,230,72,62,72,243,70,246,68,122,66,201,63,26,61,92,58,60,56,162,54,121,53,125,52,96,51,31,50,177,48,55,47,214,45,148,44,7,43,63,41,96,39,204,37,105,36,45,35, 254,33,39,33,119,32,205,31,13,31,23,30,2,29,23,28,79,27,117,26,40,25,194,23,152,22,154,21,157,20,98,19,158,17,215,15,57,14,180,12,98,11,37,10,78,9,186,8,68,8,143,7,115,6,241,4,109,3,237,1,133,0,137,255,169,254,138,254,203,254,94,255,25,0,249,0,236,1, 250,2,12,4,236,4,144,5,8,6,86,6,162,6,4,7,159,7,52,8,228,8,226,9,50,11,181,12,124,14,69,16,160,17,133,18,181,18,73,18,22,17,57,15,51,13,253,10,139,8,24,6,188,3,101,1,220,254,49,252,119,249,56,247,150,245,96,244,174,243,73,243,230,242,162,242,233,241, 73,241,250,239,235,237,34,235,92,232,98,229,151,226,250,223,179,221,206,219,87,218,127,217,31,217,36,217,247,217,172,219,20,222,165,224,238,226,163,228,144,229,45,230,128,230,104,230,20,230,116,229,38,229,250,228,62,229,222,229,126,230,239,230,127,231, 234,231,7,232,113,231,199,230,238,229,15,229,95,228,140,227,118,226,205,225,181,225,111,226,85,227,42,228,69,229,178,230,233,231,141,232,236,232,18,233,99,233,196,233,154,233,144,232,250,230,218,229,150,229,221,229,30,230,252,229,235,229,238,229,34,230, 192,230,130,231,233,231,172,231,127,231,89,231,141,230,12,229,106,227,151,225,250,222,201,219,23,217,147,214,105,211,50,208,79,205,14,203,35,201,119,199,152,198,138,198,228,198,74,199,38,199,225,198,193,198,69,199,191,200,89,203,115,206,243,209,29,214, 210,218,150,223,246,227,240,231,47,236,110,240,216,243,81,246,91,248,158,250,145,253,234,0,76,4,197,6,204,7,189,7,21,7,194,5,47,4,129,2,92,1,206,0,234,0,230,1,200,3,93,6,64,9,23,12,65,14,77,15,10,15,137,13,187,11,160,9,164,7,216,5,218,4,41,5,26,6,237, 6,195,6,134,5,163,3,160,1,165,255,222,253,102,252,229,250,88,249,128,248,37,248,2,248,4,248,22,248,61,248,196,248,244,249,230,251,145,254,168,1,236,4,193,7,44,9,14,9,229,7,143,6,227,4,67,3,79,2,14,2,167,2,15,4,187,6,144,10,16,15,247,19,0,25,199,29,228, 33,40,37,12,39,251,39,74,40,89,40,71,40,34,40,53,40,0,41,203,42,92,45,104,48,214,51,137,55,191,59,243,63,204,67,242,70,96,73,64,75,174,76,98,77,36,77,232,75,150,73,221,70,255,67,61,65,161,62,108,60,176,58,115,57,29,56,141,54,218,52,212,50,250,48,109, 47,60,46,16,45,111,43,196,41,93,40,245,38,118,37,170,35,197,33,88,32,98,31,167,30,160,29,102,28,42,27,54,26,255,24,144,23,33,22,207,20,238,19,86,19,108,18,245,16,28,15,22,13,40,11,226,8,177,6,186,4,62,3,30,2,87,1,190,0,51,0,214,255,159,255,165,255,181, 255,221,255,51,0,190,0,72,1,178,1,3,2,85,2,217,2,134,3,114,4,159,5,208,6,158,7,41,8,178,8,105,9,17,10,43,11,190,12,135,14,105,16,71,18,220,19,63,21,38,22,98,22,233,21,97,20,59,18,163,15,145,12,113,9,68,6,105,3,198,0,4,254,107,251,224,248,20,247,160,245, 161,244,203,243,32,243,103,242,245,241,42,241,21,240,49,238,182,235,28,233,79,230,200,227,25,225,78,222,252,219,242,217,74,216,13,215,45,214,24,214,142,214,174,215,65,217,40,219,5,221,147,222,224,223,238,224,152,225,234,225,163,225,53,225,131,224,224, 223,184,223,90,224,132,225,200,226,232,227,240,228,160,229,177,229,102,229,236,228,114,228,164,227,171,226,0,226,73,225,158,224,199,224,166,225,164,226,92,227,28,228,196,228,240,228,232,228,22,229,198,229,138,230,83,231,22,232,83,232,234,231,53,231,162, 230,63,230,228,229,157,229,238,229,77,230,188,230,65,231,194,231,205,231,33,231,9,230,201,228,53,227,66,225,44,223,236,220,144,218,208,215,226,212,248,209,6,207,82,204,25,202,87,200,7,199,226,197,104,197,211,197,137,198,233,198,233,198,156,198,186,198, 202,199,186,201,124,204,236,207,34,212,235,216,230,221,110,226,148,230,157,234,252,238,44,243,183,246,241,249,34,253,151,0,67,4,122,7,228,9,58,11,88,11,164,10,66,9,171,7,22,6,81,5,87,5,246,5,141,6,165,7,153,9,37,12,193,14,191,16,199,17,12,18,72,17,233, 15,215,13,201,11,62,10,85,9,239,8,12,9,24,9,142,8,96,7,213,5,99,4,133,2,166,0,111,255,69,254,12,253,191,251,222,250,101,250,72,250,91,250,145,250,50,251,73,252,52,254,107,0,214,2,5,5,154,6,54,7,55,6,54,4,153,1,18,255,33,253,255,251,7,252,244,252,181, 254,179,1,145,5,250,9,243,14,230,19,120,24,171,28,6,32,17,34,213,34,4,35,9,35,251,34,242,34,27,35,253,35,176,37,87,40,183,43,145,47,139,51,138,55,137,59,122,63,235,66,207,69,24,72,135,73,255,73,132,73,1,72,215,69,36,67,130,64,235,61,161,59,254,57,213, 56,226,55,29,55,25,54,253,52,154,51,249,49,149,48,121,47,67,46,159,44,171,42,0,41,153,39,58,38,133,36,192,34,1,33,191,31,167,30,72,29,240,27,219,26,238,25,98,25,231,24,70,24,148,23,189,22,164,21,53,20,48,18,192,15,35,13,204,10,193,8,202,6,218,4,145,3, 42,3,19,3,247,2,239,2,52,3,106,3,152,3,147,3,171,3,170,3,177,3,19,4,124,4,4,5,212,5,163,6,121,7,82,8,34,9,207,9,65,10,204,10,73,11,142,11,7,12,217,12,28,14,175,15,141,17,82,19,230,20,42,22,203,22,235,22,81,22,232,20,29,19,202,16,117,14,30,12,139,9,79, 7,5,5,52,2,238,254,227,251,184,249,247,247,93,246,212,244,126,243,69,242,15,241,255,239,89,238,45,236,233,233,79,231,120,228,191,225,196,222,81,220,21,218,16,216,9,214,18,212,136,210,35,210,81,210,69,211,8,213,21,215,51,217,78,219,158,220,79,221,61,221, 49,221,97,221,193,221,51,222,217,222,209,223,8,225,81,226,180,227,210,228,153,229,167,229,235,228,180,227,164,226,35,226,90,225,57,224,162,223,185,223,220,223,185,223,191,223,105,224,29,226,158,227,92,228,138,228,5,229,163,229,14,230,50,230,70,230,195, 230,71,231,98,231,230,230,8,230,220,229,188,230,199,231,139,232,154,233,219,234,103,235,55,235,206,234,28,234,240,232,108,231,192,229,233,227,190,225,180,223,151,221,98,219,197,216,75,213,145,209,26,206,164,203,97,202,50,201,0,200,83,199,86,199,242,199, 158,200,165,200,253,199,74,199,36,199,14,200,10,202,70,205,27,210,139,215,146,220,17,225,189,229,153,234,101,239,210,243,247,247,218,251,41,255,30,2,235,4,153,7,175,9,18,11,127,11,202,10,20,9,252,6,224,4,206,3,210,3,90,4,124,5,130,7,192,10,86,14,230, 17,218,20,51,23,184,24,238,24,116,23,219,20,207,17,8,15,210,12,187,11,76,11,239,10,51,10,177,9,207,8,112,7,205,5,191,4,44,4,221,3,78,3,142,2,85,1,4,0,253,254,44,254,132,253,253,252,196,252,150,253,225,254,119,0,90,2,33,4,43,5,153,4,239,2,147,0,0,254, 104,251,169,249,229,248,239,248,15,250,226,251,85,254,105,1,87,5,196,9,85,14,215,18,81,23,240,26,90,29,194,30,172,31,65,32,220,32,229,33,72,35,226,36,5,39,162,41,31,45,51,49,128,53,216,57,7,62,223,65,129,69,126,72,138,74,177,75,60,76,237,75,144,74,50, 72,87,69,114,66,176,63,40,61,49,59,209,57,177,56,173,55,160,54,33,53,43,51,55,49,178,47,59,46,128,44,91,42,17,40,190,37,126,35,125,33,123,31,145,29,182,28,45,28,250,27,185,27,115,27,49,27,196,26,2,26,37,25,220,23,168,22,152,21,114,20,224,18,61,17,3,15, 210,12,224,10,182,8,191,6,115,5,243,4,196,4,177,4,159,4,84,4,23,4,22,4,52,4,58,4,145,4,133,5,123,6,29,7,166,7,95,8,23,9,218,9,200,10,160,11,48,12,241,12,193,13,174,14,142,15,85,16,41,17,29,18,74,19,93,20,49,21,224,21,124,22,12,23,254,22,202,22,71,22, 49,21,158,19,130,17,37,15,102,12,75,9,50,6,35,3,221,255,100,252,51,249,164,246,155,244,5,243,174,241,114,240,114,239,103,238,105,237,47,236,197,234,237,232,185,230,145,228,201,225,136,222,73,219,56,216,245,213,245,211,91,210,135,209,157,209,157,210,29, 212,13,214,16,216,36,218,122,219,64,220,3,220,161,219,242,219,172,220,23,221,59,221,146,221,15,222,236,222,216,223,239,224,212,225,83,226,101,226,255,225,48,225,45,224,225,223,188,223,139,223,177,223,20,224,122,224,248,224,242,225,128,227,206,228,101, 229,117,229,119,229,95,229,81,229,106,229,70,229,38,229,152,229,156,229,215,228,6,228,198,227,71,228,85,229,248,230,155,232,194,233,77,234,250,234,110,235,255,234,197,233,182,232,165,231,61,230,103,228,241,226,181,225,234,223,226,221,133,219,246,216, 20,214,79,211,106,209,89,208,112,207,94,206,92,205,192,204,1,205,135,205,134,205,218,204,112,204,16,205,187,206,70,209,252,212,185,217,190,222,107,227,172,231,171,235,187,239,205,243,175,247,28,251,222,253,62,0,183,2,23,5,115,7,193,9,81,11,180,11,196, 10,16,9,87,7,239,5,52,5,249,4,108,5,65,6,187,7,12,10,64,13,175,16,211,19,247,21,210,22,63,22,95,20,200,17,246,14,155,12,83,11,102,11,137,11,144,11,76,11,240,10,48,10,30,9,244,7,130,6,3,5,179,3,138,2,103,1,64,0,122,255,247,254,157,254,106,254,239,254, 213,255,69,1,204,2,83,4,151,5,76,6,244,5,149,4,196,1,16,254,122,250,116,247,168,245,238,244,125,245,45,247,206,249,89,253,162,1,71,6,184,10,203,14,126,18,154,21,246,23,152,25,176,26,160,27,148,28,159,29,142,30,190,31,150,33,245,35,215,38,134,42,199,46, 71,51,204,55,20,60,221,63,217,66,3,69,58,70,195,70,168,70,190,69,238,67,68,65,176,62,45,60,252,57,46,56,174,54,121,53,111,52,136,51,62,50,180,48,51,47,168,45,230,43,22,42,63,40,233,37,141,35,118,33,107,31,191,29,52,28,2,27,126,26,89,26,112,26,79,26,54, 26,22,26,218,25,71,25,130,24,173,23,155,22,129,21,29,20,137,18,207,16,233,14,11,13,45,11,102,9,194,7,93,6,149,5,246,4,108,4,253,3,236,3,249,3,73,4,199,4,148,5,152,6,115,7,60,8,246,8,142,9,229,9,44,10,110,10,192,10,213,10,54,11,148,11,21,12,159,12,6,13, 128,13,24,14,246,14,58,16,108,17,190,18,252,19,59,21,15,22,146,22,130,22,6,22,16,21,133,19,2,17,240,13,108,10,216,6,131,3,48,0,53,253,249,249,23,247,191,244,228,242,137,241,116,240,211,239,53,239,100,238,23,237,92,235,42,233,102,230,38,227,250,223,216, 220,213,217,20,215,10,213,227,211,43,211,228,210,15,211,167,211,221,212,85,214,131,216,160,218,69,220,194,221,56,222,150,222,197,222,164,222,182,222,204,222,213,222,246,222,98,223,63,224,72,225,28,226,100,226,28,226,151,225,8,225,0,225,4,225,248,224, 62,225,230,225,93,226,62,226,68,226,146,226,65,227,186,227,28,228,134,228,199,228,31,229,181,229,131,230,55,231,147,231,241,231,7,232,180,231,136,231,231,231,194,232,136,233,111,234,105,235,70,236,152,236,194,236,40,237,94,237,12,237,134,236,90,236,178, 235,154,234,255,232,97,231,192,229,186,227,166,225,51,223,147,220,36,218,241,215,0,214,62,212,228,210,248,209,160,209,240,209,100,210,218,210,36,211,98,211,242,211,220,212,147,214,148,217,201,221,74,226,219,230,83,235,173,239,57,243,113,246,100,249,248, 251,70,254,130,0,225,2,11,5,230,6,117,8,156,9,239,9,1,9,58,7,242,4,64,3,157,2,205,2,103,3,128,4,87,6,44,9,180,12,251,15,83,18,198,19,5,20,104,19,219,17,128,15,212,12,195,10,203,9,64,9,106,9,75,9,62,9,201,8,233,7,0,7,32,6,192,4,41,3,137,1,26,0,134,254, 10,253,216,251,36,251,238,250,82,251,255,251,80,253,111,255,220,1,81,4,48,6,18,7,137,6,218,4,52,2,249,254,194,251,206,248,158,246,107,245,96,245,200,246,52,249,78,252,8,0,34,4,102,8,122,12,242,15,141,18,173,20,110,22,239,23,46,25,68,26,55,27,84,28,188, 29,71,31,38,33,130,35,90,38,173,41,39,45,159,48,247,51,14,55,164,57,221,59,100,61,112,62,186,62,56,62,220,60,211,58,51,56,173,53,156,51,28,50,57,49,73,48,121,47,109,46,5,45,46,43,4,41,219,38,253,36,22,35,95,33,216,31,50,30,16,29,41,28,142,27,2,27,154, 26,45,26,3,26,234,25,190,25,79,25,152,24,189,23,243,22,221,21,204,20,230,19,64,19,177,18,225,17,168,16,2,15,11,13,247,10,2,9,57,7,252,5,54,5,160,4,26,4,213,3,192,3,165,3,171,3,217,3,65,4,184,4,62,5,184,5,57,6,140,6,244,6,61,7,137,7,186,7,234,7,7,8,79, 8,167,8,45,9,153,9,33,10,193,10,158,11,174,12,238,13,30,15,40,16,22,17,234,17,113,18,165,18,61,18,77,17,181,15,112,13,199,10,85,7,142,3,142,255,190,251,108,248,178,245,234,243,120,242,164,241,163,240,24,240,208,239,97,239,211,238,181,237,43,236,81,234, 8,232,148,229,227,226,243,223,79,221,78,219,228,217,109,217,137,217,57,218,40,219,110,220,160,221,8,223,220,224,103,226,237,227,27,229,216,229,61,230,185,230,22,231,248,230,185,230,99,230,86,230,117,230,181,230,80,231,68,232,236,232,117,233,197,233,196, 233,132,233,35,233,170,232,42,232,148,231,232,230,130,230,124,230,245,230,172,231,104,232,125,233,132,234,77,235,149,235,189,235,4,236,66,236,117,236,123,236,94,236,202,235,83,235,49,235,119,235,231,235,223,236,46,238,54,239,186,239,102,240,74,241,97, 242,198,242,205,242,121,242,175,241,129,240,245,238,90,237,179,235,24,234,130,232,183,230,33,229,208,227,254,226,56,226,64,225,54,224,193,223,227,223,52,224,174,224,90,225,53,226,41,227,91,228,231,229,22,232,203,234,188,237,193,240,152,243,42,246,164, 248,3,251,85,253,173,255,241,1,181,3,48,5,94,6,128,7,110,8,1,9,37,9,139,8,112,7,241,5,152,4,200,3,120,3,206,3,124,4,180,5,227,6,92,8,47,10,30,12,245,13,24,15,2,15,53,14,212,12,174,11,221,10,108,10,65,10,96,10,144,10,173,10,132,10,183,9,38,8,108,6,16, 5,154,3,179,2,244,1,49,1,119,0,220,255,90,255,9,255,5,255,113,255,114,0,179,1,75,3,249,4,98,6,60,7,43,7,62,6,159,4,54,2,155,255,24,253,17,251,249,249,122,249,212,249,252,250,205,252,39,255,137,1,183,3,187,5,216,7,249,9,206,11,94,13,162,14,136,15,45,16, 124,16,206,16,41,17,126,17,22,18,31,19,167,20,106,22,136,24,214,26,15,29,15,31,2,33,153,34,189,35,122,36,118,36,199,35,160,34,133,33,128,32,103,31,55,30,56,29,107,28,132,27,135,26,67,25,195,23,60,22,16,21,240,19,210,18,189,17,231,16,31,16,74,15,157,14, 193,13,8,13,204,12,179,12,154,12,86,12,82,12,115,12,180,12,237,12,212,12,181,12,210,12,252,12,252,12,161,12,75,12,196,11,22,11,58,10,45,9,230,7,168,6,148,5,180,4,249,3,35,3,111,2,17,2,27,2,71,2,157,2,5,3,120,3,231,3,92,4,174,4,218,4,11,5,70,5,137,5,246, 5,64,6,102,6,101,6,114,6,137,6,168,6,209,6,28,7,97,7,205,7,64,8,240,8,150,9,65,10,225,10,26,11,50,11,2,11,132,10,41,10,106,9,149,8,97,7,245,5,59,4,84,2,68,0,18,254,3,252,60,250,243,248,192,247,10,247,140,246,17,246,96,245,144,244,191,243,227,242,30,242, 145,240,47,239,221,237,133,236,135,235,190,234,167,233,254,232,150,232,97,232,209,232,39,233,187,233,179,234,243,235,249,236,194,237,118,238,213,238,71,239,106,239,196,239,43,240,89,240,59,240,66,240,103,240,111,240,135,240,243,240,60,241,98,241,130, 241,132,241,98,241,66,241,26,241,229,240,157,240,50,240,185,239,151,239,161,239,241,239,131,240,56,241,251,241,72,242,159,242,220,242,249,242,14,243,21,243,30,243,14,243,166,242,38,242,213,241,197,241,4,242,156,242,82,243,53,244,237,244,184,245,114,246, 51,247,196,247,15,248,45,248,83,248,65,248,220,247,62,247,146,246,196,245,201,244,174,243,166,242,188,241,22,241,212,240,229,240,248,240,248,240,1,241,94,241,228,241,83,242,145,242,28,243,234,243,248,244,103,246,43,248,250,249,227,251,213,253,162,255, 93,1,230,2,37,4,95,5,151,6,216,7,251,8,253,9,184,10,122,11,41,12,143,12,93,12,119,11,51,10,218,8,201,7,49,7,197,6,194,6,217,6,104,7,64,8,53,9,55,10,63,11,64,12,208,12,183,12,0,12,18,11,35,10,138,9,134,9,237,9,142,10,235,10,19,11,253,10,78,10,109,9,41, 8,181,6,84,5,11,4,244,2,74,2,223,1,164,1,135,1,122,1,79,1,57,1,99,1,194,1,117,2,82,3,232,3,37,4,213,3,247,2,130,1,174,255,142,253,250,251,222,250,50,250,50,250,183,250,179,251,9,253,139,254,11,0,125,1,182,2,190,3,178,4,117,5,252,5,47,6,19,6,195,5,108, 5,66,5,101,5,162,5,69,6,31,7,46,8,117,9,29,11,177,12,11,14,73,15,116,16,63,17,164,17,238,17,32,18,206,17,0,17,11,16,193,14,126,13,69,12,36,11,33,10,100,9,218,8,78,8,158,7,212,6,30,6,99,5,163,4,13,4,135,3,8,3,178,2,120,2,70,2,28,2,23,2,106,2,210,2,39, 3,128,3,240,3,145,4,57,5,162,5,203,5,28,6,127,6,188,6,231,6,213,6,144,6,11,6,124,5,33,5,153,4,29,4,202,3,152,3,109,3,70,3,26,3,222,2,172,2,151,2,182,2,235,2,39,3,127,3,232,3,66,4,141,4,166,4,167,4,189,4,231,4,4,5,33,5,76,5,159,5,203,5,212,5,220,5,4,6, 47,6,147,6,228,6,122,7,27,8,143,8,201,8,179,8,157,8,75,8,187,7,54,7,83,6,144,5,138,4,145,3,114,2,78,1,26,0,182,254,118,253,28,252,240,250,37,250,116,249,39,249,5,249,188,248,51,248,80,247,78,246,153,245,188,244,253,243,58,243,109,242,209,241,76,241,211, 240,125,240,13,240,212,239,223,239,25,240,107,240,2,241,189,241,130,242,90,243,169,243,206,243,172,243,138,243,162,243,251,243,61,244,151,244,238,244,100,245,229,245,67,246,95,246,55,246,244,245,88,245,227,244,101,244,7,244,0,244,36,244,116,244,147,244, 202,244,21,245,108,245,151,245,130,245,103,245,43,245,212,244,158,244,191,244,248,244,46,245,140,245,214,245,186,245,148,245,125,245,165,245,86,246,23,247,229,247,178,248,65,249,201,249,89,250,7,251,168,251,7,252,75,252,60,252,17,252,198,251,103,251, 39,251,11,251,223,250,151,250,87,250,83,250,118,250,179,250,230,250,88,251,189,251,245,251,23,252,60,252,114,252,151,252,196,252,35,253,214,253,189,254,228,255,60,1,185,2,19,4,68,5,72,6,103,7,88,8,57,9,222,9,120,10,30,11,241,11,181,12,125,13,236,13,41, 14,29,14,190,13,17,13,39,12,252,10,229,9,251,8,79,8,13,8,194,7,158,7,70,8,41,9,2,10,220,10,54,11,48,11,247,10,139,10,249,9,135,9,203,8,125,8,52,8,238,7,143,7,57,7,238,6,253,6,17,7,17,7,223,6,143,6,3,6,113,5,184,4,18,4,125,3,6,3,248,2,193,2,156,2,161, 2,114,2,34,2,223,1,86,1,127,0,158,255,166,254,189,253,235,252,35,252,140,251,60,251,251,250,31,251,151,251,75,252,78,253,137,254,230,255,21,1,42,2,218,2,87,3,93,3,8,3,110,2,179,1,231,0,32,0,134,255,41,255,47,255,181,255,141,0,118,1,102,2,53,3,188,3,251, 3,40,4,112,4,162,4,185,4,227,4,206,4,130,4,38,4,143,3,165,2,172,1,234,0,91,0,159,255,25,255,225,254,159,254,116,254,137,254,120,254,87,254,65,254,228,253,134,253,236,252,82,252,223,251,197,251,252,251,74,252,190,252,113,253,112,254,55,255,227,255,111, 0,191,0,9,1,114,1,222,1,48,2,138,2,255,2,143,3,211,3,175,3,109,3,53,3,232,2,194,2,201,2,215,2,1,3,63,3,117,3,118,3,70,3,225,2,140,2,103,2,99,2,89,2,75,2,117,2,214,2,30,3,100,3,168,3,225,3,37,4,77,4,85,4,81,4,73,4,84,4,102,4,135,4,232,4,51,5,134,5,207, 5,228,5,228,5,199,5,147,5,75,5,12,5,189,4,117,4,247,3,89,3,194,2,255,1,47,1,107,0,130,255,239,254,127,254,27,254,185,253,39,253,120,252,232,251,94,251,215,250,139,250,101,250,3,250,169,249,221,248,52,248,196,247,203,246,45,246,136,245,255,244,188,244, 172,244,223,244,11,245,36,245,104,245,252,245,154,246,239,246,53,247,121,247,124,247,146,247,123,247,53,247,35,247,6,247,110,247,4,248,98,248,181,248,200,248,177,248,76,248,208,247,96,247,22,247,212,246,160,246,156,246,160,246,221,246,40,247,113,247, 168,247,178,247,161,247,128,247,100,247,63,247,66,247,80,247,77,247,102,247,154,247,254,247,83,248,137,248,246,248,87,249,214,249,104,250,249,250,121,251,202,251,70,252,194,252,110,253,22,254,166,254,243,254,25,255,54,255,58,255,5,255,159,254,73,254, 33,254,16,254,49,254,115,254,234,254,142,255,15,0,143,0,240,0,97,1,175,1,241,1,92,2,181,2,235,2,27,3,93,3,214,3,138,4,131,5,119,6,125,7,104,8,67,9,239,9,91,10,134,10,188,10,18,11,141,11,246,11,29,12,90,12,156,12,26,13,94,13,74,13,219,12,95,12,228,11, 93,11,164,10,208,9,91,9,59,9,59,9,92,9,170,9,197,9,23,10,73,10,35,10,236,9,127,9,27,9,179,8,135,8,84,8,225,7,151,7,31,7,198,6,69,6,217,5,79,5,228,4,163,4,213,4,247,4,52,5,111,5,40,5,217,4,90,4,197,3,46,3,133,2,28,2,223,1,164,1,75,1,166,0,226,255,29,255, 99,254,128,253,133,252,173,251,226,250,111,250,83,250,118,250,27,251,9,252,70,253,108,254,130,255,60,0,168,0,241,0,17,1,24,1,230,0,125,0,10,0,102,255,209,254,106,254,51,254,12,254,24,254,62,254,130,254,162,254,170,254,5,255,141,255,217,255,0,0,228,255, 148,255,44,255,199,254,42,254,118,253,240,252,196,252,165,252,143,252,139,252,79,252,2,252,154,251,56,251,172,250,53,250,246,249,199,249,199,249,221,249,10,250,44,250,89,250,140,250,197,250,6,251,93,251,166,251,247,251,103,252,237,252,123,253,58,254, 39,255,205,255,94,0,202,0,51,1,133,1,204,1,32,2,118,2,211,2,26,3,88,3,121,3,109,3,92,3,99,3,132,3,141,3,157,3,142,3,116,3,73,3,251,2,131,2,31,2,208,1,178,1,141,1,114,1,103,1,105,1,126,1,154,1,202,1,233,1,14,2,63,2,107,2,124,2,140,2,186,2,37,3,95,3,136, 3,116,3,118,3,174,3,210,3,22,4,2,4,231,3,153,3,3,3,93,2,166,1,234,0,79,0,250,255,205,255,145,255,127,255,84,255,54,255,250,254,191,254,159,254,127,254,58,254,244,253,152,253,75,253,5,253,189,252,114,252,20,252,101,251,109,250,144,249,216,248,99,248,61, 248,1,248,190,247,220,247,37,248,121,248,227,248,54,249,94,249,165,249,250,249,57,250,112,250,96,250,65,250,37,250,230,249,165,249,73,249,32,249,26,249,73,249,105,249,98,249,93,249,91,249,77,249,86,249,70,249,84,249,136,249,142,249,134,249,119,249,72, 249,11,249,177,248,94,248,52,248,29,248,91,248,164,248,239,248,19,249,62,249,94,249,100,249,124,249,184,249,255,249,155,250,72,251,30,252,255,252,208,253,91,254,243,254,105,255,217,255,51,0,105,0,145,0,184,0,227,0,11,1,39,1,28,1,15,1,240,0,198,0,212, 0,233,0,14,1,89,1,169,1,222,1,71,2,183,2,67,3,220,3,96,4,171,4,241,4,45,5,151,5,53,6,206,6,99,7,226,7,95,8,247,8,124,9,235,9,119,10,229,10,36,11,47,11,56,11,61,11,72,11,50,11,37,11,40,11,26,11,25,11,199,10,83,10,226,9,154,9,132,9,143,9,163,9,201,9,246, 9,31,10,23,10,218,9,131,9,9,9,149,8,43,8,165,7,235,6,73,6,174,5,84,5,44,5,15,5,241,4,227,4,211,4,180,4,124,4,62,4,243,3,189,3,139,3,135,3,196,3,185,3,159,3,99,3,248,2,126,2,23,2,175,1,89,1,27,1,193,0,73,0,180,255,254,254,20,254,45,253,78,252,139,251, 11,251,202,250,224,250,97,251,43,252,13,253,202,253,121,254,235,254,76,255,113,255,140,255,174,255,194,255,187,255,246,255,244,255,196,255,123,255,39,255,211,254,142,254,84,254,55,254,31,254,1,254,208,253,153,253,63,253,211,252,164,252,133,252,61,252, 220,251,93,251,206,250,104,250,3,250,178,249,122,249,109,249,142,249,162,249,167,249,123,249,43,249,207,248,128,248,79,248,40,248,43,248,123,248,252,248,155,249,58,250,234,250,136,251,14,252,106,252,149,252,176,252,236,252,28,253,110,253,233,253,106, 254,253,254,129,255,0,0,133,0,234,0,72,1,151,1,209,1,0,2,25,2,111,2,215,2,28,3,88,3,89,3,49,3,254,2,189,2,117,2,52,2,241,1,202,1,164,1,126,1,78,1,255,0,197,0,140,0,108,0,62,0,19,0,235,255,209,255,208,255,234,255,29,0,129,0,248,0,89,1,141,1,128,1,90,1, 79,1,75,1,92,1,132,1,132,1,139,1,135,1,96,1,21,1,172,0,69,0,241,255,187,255,116,255,69,255,62,255,34,255,58,255,106,255,123,255,151,255,142,255,129,255,162,255,191,255,203,255,195,255,166,255,105,255,249,254,134,254,244,253,120,253,34,253,186,252,125, 252,254,251,153,251,68,251,75,251,43,251,79,251,112,251,161,251,18,252,99,252,127,252,145,252,74,252,52,252,31,252,23,252,205,251,142,251,117,251,82,251,67,251,43,251,223,250,165,250,159,250,191,250,235,250,6,251,28,251,61,251,93,251,50,251,252,250,144, 250,31,250,227,249,158,249,134,249,130,249,165,249,190,249,255,249,44,250,60,250,109,250,159,250,169,250,181,250,204,250,17,251,126,251,255,251,174,252,113,253,38,254,210,254,140,255,39,0,168,0,17,1,126,1,209,1,35,2,90,2,132,2,161,2,207,2,250,2,45,3, 62,3,51,3,37,3,3,3,225,2,215,2,236,2,17,3,116,3,221,3,95,4,218,4,62,5,183,5,105,6,240,6,126,7,225,7,48,8,128,8,197,8,251,8,44,9,75,9,150,9,244,9,63,10,114,10,144,10,130,10,149,10,166,10,148,10,74,10,249,9,174,9,121,9,67,9,8,9,212,8,210,8,214,8,3,9,41, 9,75,9,102,9,96,9,74,9,3,9,172,8,50,8,118,7,158,6,207,5,15,5,145,4,76,4,250,3,218,3,243,3,12,4,253,3,246,3,210,3,159,3,139,3,64,3,182,2,23,2,137,1,22,1,212,0,162,0,155,0,223,0,17,1,76,1,65,1,4,1,163,0,101,0,0,0,152,255,50,255,169,254,49,254,174,253,49, 253,218,252,192,252,182,252,214,252,30,253,95,253,159,253,197,253,231,253,26,254,76,254,108,254,153,254,187,254,200,254,205,254,214,254,169,254,135,254,126,254,76,254,41,254,239,253,138,253,38,253,163,252,63,252,243,251,146,251,46,251,217,250,140,250, 64,250,60,250,12,250,190,249,75,249,198,248,40,248,131,247,247,246,150,246,114,246,160,246,243,246,48,247,130,247,185,247,250,247,34,248,80,248,115,248,214,248,86,249,6,250,155,250,47,251,196,251,82,252,232,252,78,253,171,253,244,253,34,254,84,254,112, 254,174,254,254,254,98,255,198,255,51,0,144,0,11,1,111,1,198,1,16,2,48,2,66,2,107,2,140,2,158,2,146,2,110,2,56,2,237,1,136,1,61,1,244,0,205,0,199,0,190,0,169,0,119,0,40,0,196,255,75,255,221,254,163,254,144,254,175,254,209,254,19,255,69,255,94,255,97, 255,75,255,119,255,154,255,195,255,178,255,149,255,140,255,101,255,69,255,9,255,221,254,203,254,232,254,227,254,223,254,229,254,0,255,16,255,33,255,55,255,75,255,91,255,91,255,104,255,147,255,184,255,238,255,47,0,107,0,150,0,155,0,133,0,98,0,3,0,140, 255,25,255,178,254,113,254,49,254,5,254,236,253,231,253,207,253,186,253,177,253,153,253,153,253,107,253,63,253,57,253,78,253,71,253,91,253,63,253,20,253,244,252,217,252,211,252,183,252,164,252,133,252,124,252,111,252,89,252,70,252,50,252,60,252,34,252, 2,252,218,251,169,251,126,251,100,251,67,251,56,251,90,251,122,251,139,251,151,251,153,251,136,251,154,251,164,251,202,251,7,252,73,252,157,252,3,253,124,253,233,253,73,254,175,254,34,255,163,255,33,0,186,0,76,1,223,1,131,2,46,3,185,3,41,4,88,4,126,4, 142,4,162,4,141,4,108,4,78,4,69,4,120,4,146,4,167,4,206,4,243,4,25,5,63,5,108,5,145,5,174,5,244,5,54,6,140,6,2,7,130,7,3,8,96,8,142,8,197,8,215,8,9,9,71,9,131,9,106,9,81,9,118,9,131,9,160,9,167,9,149,9,157,9,146,9,125,9,62,9,243,8,186,8,144,8,79,8,254, 7,159,7,115,7,87,7,115,7,141,7,175,7,201,7,158,7,75,7,158,6,224,5,241,4,88,4,202,3,116,3,110,3,135,3,121,3,103,3,57,3,38,3,5,3,232,2,149,2,57,2,222,1,121,1,7,1,165,0,65,0,217,255,201,255,199,255,202,255,228,255,14,0,62,0,120,0,127,0,94,0,40,0,227,255, 130,255,41,255,231,254,192,254,146,254,103,254,62,254,243,253,188,253,143,253,103,253,88,253,89,253,103,253,107,253,114,253,114,253,124,253,120,253,96,253,44,253,5,253,246,252,26,253,19,253,197,252,128,252,77,252,49,252,21,252,209,251,137,251,114,251, 117,251,96,251,32,251,193,250,78,250,209,249,80,249,196,248,62,248,175,247,80,247,2,247,190,246,125,246,75,246,73,246,136,246,255,246,127,247,5,248,177,248,97,249,234,249,90,250,129,250,165,250,208,250,57,251,197,251,93,252,247,252,161,253,34,254,162, 254,243,254,66,255,131,255,201,255,253,255,40,0,64,0,94,0,173,0,13,1,104,1,211,1,43,2,110,2,131,2,115,2,52,2,230,1,153,1,114,1,103,1,103,1,117,1,130,1,107,1,51,1,216,0,134,0,55,0,235,255,144,255,59,255,0,255,211,254,157,254,113,254,81,254,56,254,31,254, 9,254,232,253,226,253,228,253,243,253,240,253,1,254,242,253,251,253,238,253,8,254,0,254,24,254,23,254,18,254,6,254,44,254,60,254,81,254,139,254,171,254,224,254,246,254,252,254,249,254,246,254,9,255,51,255,130,255,185,255,1,0,36,0,66,0,87,0,86,0,65,0, 58,0,17,0,14,0,235,255,173,255,80,255,7,255,196,254,189,254,180,254,162,254,159,254,151,254,113,254,48,254,4,254,229,253,207,253,202,253,193,253,210,253,225,253,232,253,229,253,231,253,181,253,161,253,154,253,153,253,166,253,163,253,156,253,120,253,80, 253,6,253,165,252,73,252,234,251,194,251,190,251,215,251,252,251,46,252,102,252,110,252,103,252,71,252,63,252,60,252,78,252,124,252,186,252,27,253,116,253,240,253,101,254,198,254,68,255,192,255,39,0,115,0,187,0,22,1,123,1,226,1,115,2,235,2,89,3,171,3, 250,3,56,4,123,4,181,4,217,4,1,5,0,5,0,5,27,5,40,5,66,5,131,5,216,5,43,6,115,6,147,6,156,6,147,6,138,6,122,6,129,6,163,6,191,6,224,6,45,7,128,7,201,7,31,8,93,8,126,8,129,8,131,8,165,8,179,8,180,8,208,8,17,9,59,9,91,9,87,9,32,9,236,8,182,8,113,8,18,8, 130,7,223,6,152,6,46,6,225,5,145,5,122,5,91,5,81,5,50,5,214,4,103,4,251,3,111,3,12,3,189,2,135,2,99,2,56,2,35,2,234,1,193,1,168,1,94,1,58,1,245,0,202,0,163,0,108,0,65,0,26,0,238,255,209,255,142,255,77,255,43,255,254,254,241,254,44,255,124,255,208,255, 21,0,55,0,62,0,18,0,198,255,137,255,75,255,66,255,73,255,62,255,61,255,33,255,21,255,242,254,206,254,135,254,83,254,29,254,226,253,179,253,91,253,21,253,237,252,210,252,176,252,121,252,46,252,211,251,146,251,148,251,151,251,169,251,209,251,36,252,122, 252,181,252,160,252,103,252,24,252,164,251,36,251,122,250,180,249,28,249,174,248,92,248,43,248,8,248,245,247,12,248,44,248,37,248,31,248,23,248,49,248,113,248,216,248,83,249,221,249,121,250,35,251,223,251,113,252,221,252,53,253,107,253,164,253,224,253, 27,254,108,254,209,254,76,255,191,255,40,0,107,0,143,0,159,0,191,0,211,0,229,0,0,1,24,1,51,1,58,1,56,1,64,1,67,1,75,1,85,1,83,1,76,1,50,1,21,1,235,0,217,0,204,0,168,0,130,0,54,0,205,255,109,255,23,255,191,254,112,254,45,254,244,253,186,253,156,253,125, 253,81,253,27,253,205,252,165,252,138,252,117,252,104,252,106,252,140,252,182,252,217,252,235,252,2,253,46,253,94,253,141,253,178,253,210,253,236,253,15,254,38,254,59,254,87,254,112,254,163,254,214,254,21,255,72,255,131,255,163,255,219,255,15,0,65,0, 91,0,108,0,105,0,108,0,108,0,102,0,84,0,71,0,69,0,51,0,15,0,199,255,98,255,9,255,207,254,173,254,167,254,169,254,177,254,164,254,130,254,131,254,167,254,171,254,167,254,155,254,153,254,145,254,167,254,195,254,202,254,178,254,157,254,141,254,130,254,126, 254,85,254,44,254,20,254,217,253,136,253,60,253,5,253,228,252,233,252,235,252,241,252,241,252,244,252,250,252,6,253,24,253,33,253,67,253,138,253,214,253,66,254,188,254,43,255,160,255,32,0,130,0,237,0,105,1,225,1,86,2,178,2,255,2,49,3,98,3,128,3,167,3, 195,3,226,3,20,4,92,4,204,4,55,5,148,5,219,5,17,6,58,6,101,6,155,6,195,6,210,6,253,6,46,7,79,7,94,7,115,7,112,7,76,7,53,7,50,7,36,7,17,7,27,7,39,7,69,7,75,7,130,7,223,7,13,8,61,8,97,8,151,8,182,8,234,8,251,8,218,8,172,8,99,8,57,8,225,7,105,7,0,7,144, 6,30,6,183,5,83,5,246,4,145,4,29,4,179,3,88,3,9,3,200,2,142,2,108,2,57,2,251,1,179,1,153,1,105,1,81,1,33,1,248,0,198,0,127,0,105,0,55,0,253,255,242,255,206,255,202,255,191,255,173,255,137,255,116,255,95,255,72,255,34,255,3,255,238,254,254,254,34,255, 84,255,131,255,192,255,226,255,242,255,252,255,241,255,232,255,252,255,6,0,242,255,217,255,206,255,205,255,188,255,156,255,115,255,55,255,227,254,103,254,239,253,134,253,24,253,178,252,81,252,230,251,147,251,70,251,13,251,216,250,206,250,229,250,13,251, 61,251,117,251,161,251,204,251,236,251,222,251,158,251,81,251,251,250,127,250,7,250,155,249,50,249,218,248,160,248,124,248,110,248,108,248,153,248,236,248,57,249,119,249,154,249,167,249,169,249,176,249,219,249,31,250,173,250,108,251,70,252,9,253,177, 253,41,254,113,254,148,254,169,254,184,254,207,254,242,254,40,255,112,255,176,255,216,255,10,0,75,0,144,0,197,0,226,0,234,0,230,0,233,0,204,0,176,0,155,0,150,0,162,0,175,0,180,0,172,0,173,0,159,0,129,0,51,0,228,255,159,255,119,255,93,255,75,255,18,255, 200,254,116,254,19,254,196,253,114,253,56,253,30,253,239,252,208,252,157,252,107,252,77,252,30,252,248,251,211,251,197,251,186,251,186,251,227,251,16,252,102,252,179,252,10,253,88,253,146,253,188,253,220,253,239,253,12,254,56,254,85,254,148,254,223,254, 69,255,156,255,230,255,24,0,69,0,105,0,114,0,118,0,102,0,98,0,107,0,111,0,123,0,116,0,102,0,69,0,29,0,4,0,3,0,248,255,206,255,177,255,112,255,58,255,29,255,245,254,15,255,62,255,95,255,133,255,167,255,141,255,120,255,117,255,90,255,65,255,47,255,33,255, 52,255,70,255,95,255,95,255,43,255,12,255,247,254,234,254,224,254,151,254,109,254,90,254,49,254,33,254,243,253,178,253,152,253,148,253,145,253,127,253,130,253,153,253,226,253,48,254,135,254,235,254,79,255,187,255,51,0,168,0,27,1,147,1,244,1,72,2,142, 2,218,2,28,3,56,3,59,3,44,3,41,3,63,3,114,3,167,3,235,3,59,4,126,4,223,4,59,5,165,5,15,6,94,6,183,6,248,6,46,7,68,7,96,7,117,7,162,7,194,7,200,7,220,7,216,7,200,7,194,7,153,7,96,7,86,7,78,7,89,7,105,7,122,7,155,7,225,7,43,8,96,8,142,8,147,8,143,8,122, 8,67,8,247,7,136,7,248,6,118,6,32,6,198,5,120,5,55,5,210,4,108,4,4,4,181,3,75,3,218,2,120,2,16,2,166,1,96,1,38,1,9,1,244,0,217,0,208,0,170,0,109,0,50,0,242,255,170,255,115,255,84,255,63,255,69,255,52,255,58,255,44,255,23,255,242,254,202,254,191,254,188, 254,191,254,193,254,210,254,220,254,243,254,29,255,79,255,130,255,149,255,165,255,191,255,212,255,237,255,241,255,248,255,24,0,66,0,73,0,97,0,87,0,47,0,8,0,201,255,137,255,58,255,192,254,42,254,139,253,254,252,132,252,32,252,194,251,97,251,17,251,215, 250,134,250,103,250,85,250,115,250,152,250,179,250,190,250,190,250,194,250,213,250,219,250,216,250,198,250,180,250,150,250,122,250,69,250,40,250,6,250,252,249,36,250,65,250,87,250,98,250,121,250,159,250,188,250,215,250,0,251,71,251,153,251,234,251,46, 252,117,252,196,252,52,253,179,253,58,254,162,254,234,254,36,255,75,255,93,255,105,255,94,255,97,255,112,255,148,255,188,255,239,255,39,0,116,0,181,0,234,0,0,1,247,0,211,0,157,0,105,0,54,0,6,0,223,255,202,255,208,255,202,255,169,255,138,255,75,255,0, 255,177,254,112,254,72,254,37,254,29,254,37,254,23,254,242,253,171,253,116,253,44,253,219,252,158,252,97,252,67,252,71,252,96,252,95,252,85,252,73,252,31,252,25,252,13,252,20,252,59,252,120,252,182,252,19,253,92,253,146,253,200,253,242,253,42,254,90, 254,121,254,171,254,221,254,34,255,102,255,183,255,244,255,61,0,122,0,162,0,176,0,159,0,154,0,158,0,150,0,140,0,141,0,108,0,69,0,55,0,32,0,25,0,1,0,12,0,18,0,22,0,22,0,1,0,231,255,196,255,183,255,219,255,14,0,72,0,89,0,98,0,48,0,250,255,217,255,176,255, 162,255,129,255,133,255,160,255,185,255,224,255,239,255,238,255,213,255,165,255,145,255,93,255,57,255,26,255,47,255,57,255,22,255,207,254,121,254,48,254,251,253,11,254,33,254,72,254,123,254,216,254,44,255,134,255,216,255,57,0,157,0,248,0,85,1,190,1,43, 2,139,2,214,2,253,2,20,3,31,3,49,3,67,3,75,3,96,3,160,3,222,3,30,4,87,4,121,4,170,4,217,4,29,5,120,5,219,5,58,6,123,6,201,6,252,6,17,7,46,7,42,7,50,7,72,7,100,7,132,7,144,7,165,7,168,7,162,7,194,7,168,7,161,7,162,7,161,7,122,7,68,7,42,7,32,7,45,7,65, 7,82,7,61,7,18,7,219,6,134,6,40,6,178,5,37,5,149,4,19,4,152,3,57,3,2,3,218,2,219,2,203,2,133,2,23,2,136,1,7,1,133,0,48,0,253,255,244,255,212,255,221,255,199,255,191,255,178,255,159,255,144,255,127,255,105,255,98,255,88,255,83,255,72,255,62,255,62,255, 40,255,14,255,238,254,220,254,205,254,216,254,1,255,21,255,50,255,69,255,86,255,113,255,147,255,147,255,137,255,129,255,145,255,163,255,173,255,174,255,188,255,206,255,241,255,15,0,21,0,248,255,187,255,112,255,16,255,166,254,60,254,206,253,109,253,19, 253,175,252,78,252,7,252,175,251,65,251,216,250,111,250,17,250,237,249,228,249,249,249,54,250,104,250,163,250,213,250,233,250,251,250,229,250,253,250,50,251,110,251,165,251,211,251,229,251,244,251,248,251,16,252,14,252,6,252,248,251,251,251,18,252,38, 252,66,252,124,252,205,252,30,253,105,253,154,253,171,253,178,253,204,253,240,253,37,254,94,254,174,254,254,254,65,255,109,255,133,255,123,255,106,255,105,255,104,255,115,255,165,255,235,255,72,0,147,0,187,0,194,0,168,0,109,0,46,0,219,255,145,255,75, 255,40,255,7,255,239,254,228,254,192,254,152,254,102,254,49,254,253,253,190,253,148,253,134,253,127,253,107,253,102,253,99,253,73,253,27,253,217,252,114,252,57,252,32,252,41,252,57,252,84,252,113,252,110,252,106,252,75,252,63,252,56,252,81,252,131,252, 193,252,255,252,87,253,161,253,221,253,12,254,52,254,120,254,171,254,247,254,72,255,151,255,250,255,64,0,122,0,154,0,181,0,176,0,177,0,172,0,180,0,176,0,179,0,166,0,173,0,170,0,175,0,183,0,145,0,134,0,136,0,132,0,152,0,172,0,176,0,180,0,180,0,180,0,154, 0,133,0,129,0,141,0,147,0,136,0,141,0,94,0,39,0,248,255,212,255,230,255,234,255,11,0,54,0,87,0,101,0,98,0,71,0,25,0,231,255,198,255,209,255,232,255,231,255,227,255,239,255,206,255,160,255,88,255,33,255,254,254,4,255,40,255,80,255,158,255,230,255,64,0, 136,0,169,0,222,0,13,1,75,1,151,1,229,1,59,2,129,2,217,2,17,3,51,3,55,3,41,3,46,3,93,3,125,3,168,3,208,3,217,3,239,3,8,4,23,4,62,4,87,4,160,4,1,5,119,5,205,5,8,6,64,6,104,6,126,6,133,6,137,6,162,6,180,6,212,6,252,6,27,7,72,7,86,7,50,7,251,6,162,6,65, 6,244,5,188,5,141,5,97,5,41,5,249,4,234,4,206,4,192,4,188,4,182,4,146,4,69,4,228,3,110,3,241,2,96,2,252,1,208,1,184,1,212,1,222,1,189,1,94,1,251,0,115,0,238,255,133,255,63,255,16,255,3,255,5,255,29,255,95,255,131,255,144,255,136,255,116,255,90,255,84, 255,75,255,59,255,61,255,75,255,106,255,134,255,141,255,149,255,142,255,156,255,145,255,122,255,105,255,87,255,93,255,84,255,97,255,113,255,162,255,210,255,250,255,248,255,235,255,202,255,176,255,134,255,84,255,50,255,47,255,69,255,72,255,41,255,0,255, 211,254,170,254,101,254,9,254,178,253,92,253,255,252,150,252,35,252,178,251,79,251,3,251,208,250,176,250,144,250,108,250,85,250,89,250,93,250,108,250,123,250,177,250,247,250,46,251,94,251,154,251,191,251,234,251,75,252,146,252,200,252,255,252,42,253, 89,253,128,253,128,253,131,253,127,253,121,253,112,253,114,253,134,253,163,253,190,253,229,253,249,253,253,253,1,254,4,254,8,254,18,254,38,254,70,254,120,254,181,254,231,254,30,255,76,255,109,255,160,255,194,255,196,255,205,255,216,255,212,255,217,255, 235,255,250,255,242,255,226,255,183,255,124,255,69,255,7,255,213,254,180,254,128,254,84,254,37,254,8,254,226,253,202,253,182,253,189,253,185,253,167,253,167,253,148,253,125,253,94,253,49,253,27,253,13,253,15,253,1,253,9,253,13,253,5,253,17,253,5,253, 251,252,255,252,251,252,254,252,27,253,64,253,112,253,152,253,196,253,246,253,40,254,81,254,116,254,156,254,228,254,44,255,112,255,209,255,36,0,122,0,176,0,201,0,201,0,191,0,199,0,184,0,206,0,206,0,224,0,233,0,2,1,7,1,6,1,7,1,9,1,17,1,9,1,25,1,29,1,21, 1,22,1,13,1,14,1,0,1,212,0,183,0,114,0,61,0,25,0,255,255,10,0,29,0,65,0,78,0,84,0,82,0,82,0,115,0,101,0,93,0,87,0,84,0,90,0,82,0,96,0,82,0,86,0,105,0,125,0,145,0,154,0,159,0,136,0,87,0,39,0,226,255,185,255,184,255,216,255,244,255,28,0,64,0,100,0,129, 0,169,0,209,0,27,1,108,1,219,1,72,2,178,2,15,3,66,3,96,3,128,3,139,3,146,3,175,3,185,3,192,3,213,3,244,3,249,3,250,3,6,4,29,4,45,4,73,4,110,4,166,4,0,5,66,5,130,5,178,5,214,5,10,6,50,6,76,6,97,6,101,6,123,6,126,6,129,6,98,6,75,6,19,6,221,5,137,5,65,5, 225,4,146,4,77,4,0,4,189,3,125,3,75,3,28,3,5,3,215,2,199,2,176,2,164,2,120,2,66,2,241,1,151,1,65,1,234,0,163,0,126,0,66,0,24,0,230,255,178,255,109,255,37,255,250,254,196,254,182,254,187,254,206,254,205,254,228,254,241,254,243,254,252,254,18,255,51,255, 113,255,167,255,202,255,223,255,239,255,4,0,6,0,7,0,255,255,241,255,224,255,212,255,201,255,180,255,166,255,154,255,174,255,198,255,252,255,33,0,65,0,65,0,35,0,246,255,220,255,166,255,123,255,76,255,47,255,0,255,246,254,232,254,206,254,184,254,138,254, 70,254,2,254,186,253,112,253,46,253,214,252,142,252,92,252,49,252,28,252,2,252,216,251,193,251,166,251,136,251,104,251,75,251,42,251,25,251,27,251,42,251,67,251,104,251,166,251,255,251,99,252,196,252,33,253,121,253,202,253,13,254,67,254,108,254,135,254, 163,254,181,254,181,254,167,254,149,254,119,254,98,254,77,254,56,254,33,254,27,254,30,254,48,254,56,254,65,254,76,254,77,254,91,254,113,254,135,254,171,254,217,254,14,255,73,255,98,255,124,255,117,255,113,255,83,255,77,255,65,255,39,255,43,255,54,255, 57,255,66,255,66,255,50,255,15,255,223,254,164,254,105,254,55,254,6,254,228,253,210,253,185,253,164,253,154,253,141,253,135,253,113,253,94,253,99,253,109,253,123,253,112,253,98,253,88,253,81,253,88,253,103,253,134,253,153,253,172,253,182,253,199,253, 207,253,224,253,0,254,29,254,59,254,98,254,139,254,187,254,223,254,30,255,75,255,140,255,210,255,8,0,69,0,100,0,115,0,139,0,152,0,161,0,176,0,194,0,204,0,224,0,249,0,29,1,51,1,92,1,133,1,157,1,183,1,200,1,197,1,180,1,165,1,140,1,125,1,121,1,89,1,64,1, 31,1,238,0,181,0,118,0,54,0,3,0,228,255,228,255,245,255,24,0,68,0,94,0,91,0,72,0,54,0,51,0,54,0,46,0,54,0,79,0,120,0,159,0,170,0,186,0,175,0,183,0,188,0,215,0,224,0,233,0,219,0,206,0,148,0,91,0,36,0,0,0,241,255,249,255,22,0,68,0,127,0,198,0,255,0,85, 1,147,1,234,1,34,2,85,2,154,2,219,2,28,3,96,3,159,3,183,3,220,3,251,3,38,4,58,4,55,4,41,4,29,4,18,4,9,4,9,4,20,4,74,4,126,4,202,4,27,5,81,5,142,5,173,5,183,5,202,5,213,5,230,5,237,5,228,5,201,5,183,5,144,5,122,5,91,5,43,5,228,4,144,4,40,4,200,3,118,3, 24,3,200,2,104,2,27,2,200,1,125,1,76,1,33,1,21,1,10,1,20,1,28,1,244,0,183,0,97,0,17,0,181,255,102,255,50,255,15,255,247,254,238,254,235,254,229,254,211,254,195,254,169,254,134,254,117,254,101,254,88,254,110,254,159,254,195,254,250,254,48,255,94,255,122, 255,144,255,165,255,178,255,174,255,173,255,173,255,165,255,140,255,134,255,129,255,130,255,140,255,178,255,219,255,232,255,248,255,6,0,14,0,29,0,24,0,0,0,248,255,234,255,198,255,149,255,98,255,65,255,21,255,211,254,152,254,88,254,16,254,203,253,171, 253,132,253,100,253,85,253,82,253,88,253,98,253,74,253,48,253,243,252,215,252,199,252,183,252,187,252,168,252,160,252,138,252,133,252,106,252,71,252,54,252,60,252,73,252,103,252,142,252,197,252,28,253,130,253,221,253,40,254,92,254,134,254,173,254,216, 254,0,255,30,255,54,255,58,255,70,255,61,255,43,255,16,255,249,254,229,254,213,254,200,254,187,254,167,254,130,254,103,254,87,254,70,254,83,254,110,254,128,254,139,254,142,254,133,254,123,254,121,254,116,254,108,254,115,254,138,254,180,254,202,254,227, 254,241,254,249,254,235,254,223,254,192,254,180,254,152,254,134,254,102,254,69,254,41,254,249,253,211,253,186,253,166,253,125,253,94,253,70,253,63,253,60,253,46,253,63,253,81,253,102,253,116,253,125,253,132,253,113,253,112,253,124,253,142,253,190,253, 249,253,40,254,94,254,138,254,157,254,170,254,184,254,213,254,246,254,52,255,112,255,165,255,224,255,19,0,50,0,57,0,93,0,118,0,130,0,148,0,150,0,141,0,159,0,186,0,213,0,242,0,17,1,60,1,108,1,150,1,189,1,202,1,193,1,187,1,169,1,150,1,125,1,99,1,68,1,45, 1,18,1,251,0,212,0,180,0,134,0,90,0,68,0,32,0,255,255,223,255,198,255,178,255,195,255,191,255,201,255,202,255,220,255,234,255,6,0,58,0,104,0,126,0,151,0,190,0,217,0,0,1,21,1,36,1,35,1,29,1,27,1,22,1,20,1,27,1,252,0,241,0,219,0,194,0,155,0,141,0,158,0, 204,0,21,1,79,1,100,1,133,1,171,1,191,1,222,1,254,1,30,2,74,2,153,2,229,2,41,3,118,3,156,3,195,3,231,3,253,3,20,4,37,4,33,4,37,4,56,4,48,4,63,4,78,4,84,4,98,4,109,4,130,4,155,4,199,4,242,4,8,5,11,5,239,4,218,4,204,4,185,4,166,4,141,4,113,4,76,4,31,4, 236,3,160,3,67,3,240,2,142,2,66,2,219,1,140,1,60,1,238,0,159,0,97,0,57,0,32,0,24,0,12,0,6,0,237,255,199,255,136,255,77,255,18,255,223,254,198,254,178,254,167,254,157,254,157,254,138,254,123,254,112,254,69,254,62,254,78,254,92,254,115,254,134,254,156, 254,187,254,232,254,21,255,62,255,104,255,112,255,119,255,108,255,90,255,72,255,45,255,36,255,50,255,88,255,137,255,163,255,195,255,209,255,248,255,15,0,18,0,26,0,50,0,79,0,80,0,71,0,30,0,230,255,172,255,97,255,18,255,196,254,139,254,102,254,67,254,54, 254,22,254,243,253,196,253,160,253,132,253,112,253,113,253,117,253,152,253,189,253,210,253,220,253,213,253,192,253,181,253,177,253,179,253,196,253,210,253,211,253,221,253,222,253,211,253,213,253,220,253,221,253,221,253,229,253,238,253,5,254,19,254,56, 254,99,254,141,254,171,254,200,254,245,254,16,255,65,255,119,255,158,255,181,255,206,255,214,255,224,255,228,255,212,255,194,255,151,255,111,255,65,255,16,255,216,254,170,254,131,254,127,254,134,254,141,254,141,254,134,254,120,254,105,254,91,254,83,254, 77,254,96,254,137,254,167,254,193,254,207,254,214,254,227,254,213,254,202,254,177,254,139,254,109,254,73,254,45,254,27,254,249,253,218,253,195,253,177,253,174,253,166,253,160,253,152,253,136,253,130,253,110,253,125,253,142,253,167,253,217,253,240,253, 239,253,243,253,240,253,253,253,19,254,52,254,102,254,142,254,184,254,245,254,27,255,83,255,112,255,134,255,167,255,187,255,226,255,248,255,35,0,78,0,116,0,147,0,168,0,180,0,186,0,199,0,216,0,227,0,231,0,255,0,14,1,31,1,50,1,75,1,114,1,135,1,144,1,140, 1,122,1,89,1,56,1,24,1,253,0,233,0,202,0,177,0,150,0,132,0,116,0,100,0,101,0,91,0,76,0,48,0,6,0,232,255,172,255,129,255,113,255,129,255,165,255,208,255,6,0,40,0,62,0,102,0,141,0,204,0,240,0,21,1,65,1,101,1,125,1,130,1,141,1,144,1,136,1,158,1,172,1,190, 1,176,1,191,1,204,1,204,1,204,1,186,1,171,1,136,1,137,1,160,1,183,1,197,1,225,1,250,1,28,2,52,2,86,2,146,2,185,2,228,2,48,3,96,3,136,3,186,3,243,3,70,4,121,4,170,4,195,4,189,4,167,4,148,4,130,4,90,4,54,4,29,4,26,4,30,4,51,4,69,4,73,4,87,4,96,4,96,4,74, 4,33,4,240,3,164,3,113,3,62,3,35,3,236,2,192,2,142,2,85,2,18,2,172,1,86,1,0,1,170,0,104,0,39,0,238,255,173,255,116,255,81,255,50,255,41,255,16,255,242,254,199,254,160,254,130,254,90,254,73,254,56,254,55,254,62,254,70,254,87,254,85,254,98,254,109,254, 126,254,133,254,139,254,137,254,121,254,134,254,148,254,155,254,184,254,200,254,211,254,231,254,235,254,234,254,223,254,209,254,221,254,246,254,14,255,68,255,113,255,152,255,185,255,214,255,242,255,8,0,11,0,7,0,22,0,26,0,8,0,228,255,187,255,148,255,102, 255,30,255,243,254,191,254,156,254,124,254,105,254,80,254,67,254,54,254,51,254,62,254,59,254,48,254,44,254,34,254,22,254,15,254,9,254,24,254,45,254,65,254,102,254,141,254,177,254,203,254,234,254,7,255,26,255,33,255,12,255,249,254,241,254,228,254,223, 254,207,254,180,254,171,254,160,254,149,254,124,254,105,254,113,254,131,254,174,254,227,254,23,255,79,255,140,255,188,255,219,255,227,255,235,255,230,255,227,255,220,255,210,255,187,255,160,255,130,255,88,255,39,255,241,254,184,254,144,254,116,254,96, 254,83,254,80,254,92,254,113,254,124,254,128,254,120,254,115,254,106,254,88,254,78,254,80,254,90,254,95,254,112,254,128,254,146,254,138,254,119,254,63,254,4,254,218,253,192,253,181,253,175,253,174,253,177,253,189,253,207,253,206,253,184,253,175,253,168, 253,163,253,156,253,157,253,152,253,170,253,184,253,208,253,244,253,22,254,52,254,112,254,169,254,217,254,11,255,45,255,99,255,144,255,165,255,184,255,205,255,237,255,12,0,43,0,75,0,107,0,129,0,175,0,206,0,231,0,255,0,11,1,18,1,38,1,54,1,54,1,50,1,38, 1,31,1,11,1,11,1,14,1,20,1,29,1,32,1,11,1,231,0,186,0,143,0,104,0,89,0,71,0,73,0,76,0,76,0,72,0,61,0,39,0,8,0,238,255,224,255,228,255,213,255,209,255,188,255,188,255,198,255,230,255,19,0,58,0,111,0,127,0,175,0,220,0,233,0,33,1,71,1,126,1,176,1,225,1, 3,2,32,2,46,2,56,2,63,2,77,2,88,2,84,2,85,2,79,2,74,2,45,2,21,2,247,1,243,1,243,1,237,1,244,1,6,2,39,2,89,2,132,2,150,2,171,2,192,2,230,2,6,3,34,3,98,3,160,3,214,3,6,4,31,4,36,4,42,4,27,4,12,4,0,4,242,3,236,3,229,3,221,3,210,3,186,3,161,3,141,3,123,3, 113,3,88,3,60,3,27,3,233,2,165,2,103,2,52,2,240,1,180,1,146,1,107,1,79,1,57,1,17,1,215,0,155,0,82,0,253,255,177,255,115,255,57,255,12,255,221,254,199,254,169,254,153,254,128,254,98,254,94,254,74,254,66,254,58,254,65,254,58,254,56,254,56,254,66,254,94, 254,113,254,139,254,166,254,184,254,206,254,207,254,203,254,187,254,173,254,156,254,119,254,110,254,110,254,130,254,146,254,171,254,210,254,0,255,27,255,48,255,65,255,84,255,113,255,147,255,159,255,160,255,174,255,173,255,170,255,145,255,126,255,117, 255,129,255,156,255,177,255,183,255,187,255,160,255,127,255,73,255,11,255,228,254,193,254,191,254,211,254,221,254,223,254,205,254,196,254,182,254,171,254,153,254,141,254,135,254,152,254,175,254,203,254,223,254,239,254,16,255,51,255,73,255,94,255,112, 255,140,255,169,255,174,255,170,255,160,255,133,255,99,255,66,255,27,255,3,255,235,254,234,254,227,254,217,254,218,254,221,254,228,254,241,254,3,255,26,255,45,255,61,255,65,255,75,255,84,255,99,255,122,255,127,255,126,255,124,255,113,255,102,255,73,255, 57,255,36,255,9,255,225,254,175,254,133,254,102,254,83,254,85,254,98,254,109,254,113,254,121,254,106,254,106,254,95,254,70,254,40,254,26,254,11,254,8,254,0,254,8,254,22,254,58,254,62,254,62,254,52,254,27,254,254,253,222,253,195,253,178,253,177,253,181, 253,192,253,215,253,228,253,247,253,251,253,249,253,250,253,254,253,4,254,11,254,29,254,62,254,106,254,155,254,202,254,0,255,48,255,81,255,124,255,162,255,213,255,250,255,33,0,53,0,80,0,101,0,127,0,157,0,186,0,205,0,231,0,4,1,25,1,49,1,67,1,75,1,87,1, 87,1,81,1,68,1,47,1,39,1,27,1,10,1,244,0,223,0,191,0,154,0,127,0,115,0,105,0,101,0,102,0,104,0,94,0,79,0,50,0,14,0,242,255,226,255,221,255,232,255,244,255,24,0,40,0,53,0,51,0,51,0,36,0,18,0,25,0,42,0,65,0,97,0,141,0,175,0,223,0,241,0,21,1,69,1,111,1, 150,1,168,1,205,1,245,1,25,2,66,2,88,2,107,2,100,2,118,2,117,2,107,2,85,2,70,2,57,2,42,2,34,2,6,2,12,2,31,2,46,2,78,2,93,2,113,2,135,2,154,2,181,2,200,2,223,2,240,2,246,2,255,2,10,3,27,3,60,3,74,3,95,3,121,3,150,3,167,3,177,3,170,3,164,3,168,3,172,3, 165,3,132,3,96,3,34,3,229,2,174,2,120,2,66,2,23,2,240,1,186,1,140,1,87,1,32,1,241,0,197,0,147,0,120,0,98,0,73,0,37,0,4,0,214,255,181,255,123,255,75,255,8,255,229,254,189,254,153,254,144,254,135,254,127,254,134,254,133,254,119,254,108,254,98,254,102,254, 110,254,119,254,116,254,109,254,105,254,96,254,108,254,138,254,151,254,169,254,200,254,214,254,211,254,191,254,157,254,133,254,133,254,148,254,175,254,205,254,0,255,61,255,102,255,108,255,115,255,112,255,97,255,80,255,52,255,22,255,8,255,245,254,4,255, 15,255,32,255,45,255,47,255,66,255,84,255,108,255,136,255,149,255,162,255,162,255,152,255,145,255,133,255,116,255,95,255,75,255,73,255,63,255,68,255,59,255,54,255,66,255,76,255,90,255,109,255,129,255,140,255,141,255,133,255,119,255,126,255,137,255,149, 255,160,255,173,255,210,255,235,255,246,255,244,255,219,255,185,255,163,255,142,255,126,255,105,255,111,255,105,255,102,255,102,255,87,255,73,255,50,255,25,255,253,254,211,254,203,254,207,254,224,254,241,254,252,254,12,255,14,255,33,255,43,255,45,255, 40,255,23,255,21,255,18,255,12,255,5,255,247,254,224,254,202,254,162,254,123,254,85,254,62,254,44,254,41,254,56,254,67,254,92,254,106,254,103,254,87,254,59,254,24,254,12,254,1,254,12,254,40,254,81,254,120,254,139,254,152,254,128,254,91,254,69,254,38, 254,6,254,233,253,236,253,231,253,246,253,16,254,41,254,69,254,85,254,92,254,131,254,142,254,163,254,174,254,213,254,1,255,23,255,51,255,98,255,162,255,227,255,3,0,43,0,79,0,108,0,139,0,173,0,190,0,204,0,229,0,244,0,251,0,6,1,7,1,9,1,25,1,39,1,49,1,68, 1,90,1,104,1,97,1,87,1,51,1,9,1,224,0,195,0,169,0,147,0,144,0,130,0,127,0,119,0,101,0,80,0,47,0,7,0,231,255,206,255,203,255,210,255,212,255,231,255,235,255,235,255,253,255,1,0,17,0,32,0,58,0,84,0,101,0,114,0,123,0,130,0,148,0,177,0,205,0,244,0,28,1,60, 1,85,1,97,1,110,1,129,1,166,1,202,1,236,1,0,2,24,2,59,2,81,2,96,2,104,2,96,2,89,2,81,2,95,2,99,2,118,2,128,2,139,2,149,2,128,2,129,2,140,2,142,2,158,2,175,2,172,2,158,2,139,2,121,2,121,2,110,2,103,2,131,2,160,2,192,2,221,2,248,2,28,3,62,3,92,3,116,3, 116,3,107,3,75,3,46,3,241,2,199,2,153,2,111,2,59,2,250,1,183,1,115,1,60,1,15,1,224,0,184,0,150,0,98,0,69,0,26,0,226,255,180,255,129,255,109,255,95,255,93,255,84,255,66,255,45,255,29,255,7,255,245,254,210,254,198,254,181,254,174,254,171,254,175,254,175, 254,162,254,149,254,144,254,139,254,138,254,127,254,137,254,126,254,103,254,70,254,40,254,40,254,54,254,67,254,101,254,139,254,184,254,225,254,247,254,249,254,253,254,5,255,8,255,5,255,249,254,249,254,9,255,15,255,12,255,242,254,229,254,210,254,189,254, 177,254,187,254,195,254,193,254,211,254,228,254,236,254,250,254,19,255,65,255,117,255,156,255,185,255,210,255,223,255,214,255,201,255,181,255,160,255,160,255,170,255,188,255,202,255,219,255,219,255,241,255,245,255,245,255,231,255,227,255,223,255,220, 255,208,255,203,255,196,255,199,255,206,255,226,255,231,255,238,255,224,255,224,255,224,255,228,255,224,255,235,255,235,255,230,255,231,255,230,255,226,255,205,255,178,255,142,255,108,255,66,255,19,255,241,254,223,254,199,254,181,254,170,254,167,254, 187,254,187,254,192,254,203,254,223,254,231,254,250,254,252,254,253,254,3,255,254,254,1,255,246,254,235,254,203,254,169,254,130,254,102,254,69,254,51,254,38,254,41,254,38,254,52,254,60,254,69,254,85,254,92,254,108,254,108,254,113,254,109,254,110,254, 123,254,146,254,159,254,192,254,214,254,216,254,207,254,187,254,156,254,113,254,90,254,56,254,55,254,52,254,65,254,85,254,131,254,180,254,209,254,252,254,16,255,40,255,54,255,83,255,129,255,167,255,224,255,14,0,46,0,86,0,111,0,137,0,165,0,181,0,187,0, 195,0,208,0,217,0,233,0,240,0,241,0,251,0,253,0,6,1,13,1,17,1,9,1,255,0,238,0,235,0,222,0,217,0,204,0,193,0,180,0,180,0,170,0,166,0,169,0,151,0,134,0,90,0,35,0,250,255,205,255,191,255,188,255,190,255,195,255,199,255,192,255,187,255,188,255,191,255,206, 255,232,255,15,0,50,0,101,0,150,0,191,0,217,0,247,0,10,1,7,1,2,1,252,0,252,0,20,1,43,1,75,1,105,1,125,1,137,1,151,1,161,1,191,1,227,1,255,1,3,2,14,2,27,2,48,2,84,2,100,2,113,2,131,2,158,2,175,2,169,2,174,2,157,2,162,2,144,2,125,2,78,2,45,2,34,2,5,2,254, 1,240,1,254,1,2,2,21,2,46,2,45,2,71,2,96,2,115,2,158,2,179,2,192,2,194,2,179,2,176,2,139,2,115,2,86,2,57,2,20,2,230,1,178,1,126,1,82,1,25,1,230,0,173,0,114,0,76,0,33,0,253,255,212,255,160,255,120,255,94,255,63,255,45,255,19,255,15,255,9,255,9,255,14, 255,21,255,15,255,15,255,0,255,236,254,232,254,228,254,238,254,231,254,221,254,203,254,182,254,146,254,124,254,101,254,103,254,108,254,109,254,119,254,110,254,92,254,74,254,74,254,84,254,110,254,157,254,206,254,7,255,41,255,55,255,62,255,54,255,41,255, 12,255,236,254,206,254,185,254,184,254,184,254,175,254,175,254,185,254,195,254,200,254,213,254,217,254,228,254,216,254,242,254,1,255,21,255,29,255,61,255,98,255,144,255,188,255,216,255,232,255,244,255,3,0,4,0,246,255,237,255,246,255,3,0,29,0,50,0,55, 0,53,0,37,0,25,0,22,0,10,0,8,0,1,0,1,0,10,0,7,0,3,0,0,0,252,255,235,255,230,255,228,255,239,255,7,0,28,0,37,0,46,0,39,0,33,0,8,0,252,255,221,255,199,255,180,255,155,255,141,255,120,255,99,255,70,255,43,255,11,255,229,254,207,254,188,254,175,254,167,254, 169,254,178,254,192,254,213,254,234,254,252,254,247,254,241,254,235,254,227,254,214,254,206,254,189,254,177,254,164,254,144,254,141,254,110,254,90,254,58,254,31,254,20,254,33,254,51,254,90,254,121,254,157,254,193,254,216,254,221,254,218,254,210,254,221, 254,224,254,223,254,245,254,4,255,22,255,32,255,30,255,9,255,250,254,224,254,207,254,198,254,198,254,199,254,211,254,250,254,43,255,75,255,111,255,152,255,203,255,227,255,253,255,21,0,47,0,72,0,97,0,123,0,145,0,159,0,173,0,183,0,184,0,190,0,183,0,183, 0,199,0,219,0,251,0,20,1,28,1,20,1,252,0,224,0,198,0,166,0,141,0,129,0,126,0,133,0,154,0,172,0,195,0,206,0,198,0,176,0,133,0,90,0,43,0,14,0,246,255,232,255,223,255,206,255,194,255,187,255,163,255,160,255,159,255,165,255,172,255,196,255,220,255,12,0,62, 0,120,0,166,0,206,0,249,0,17,1,32,1,36,1,43,1,57,1,64,1,79,1,78,1,76,1,71,1,81,1,86,1,97,1,123,1,135,1,150,1,157,1,176,1,197,1,225,1,245,1,9,2,42,2,75,2,118,2,140,2,143,2,149,2,151,2,157,2,161,2,124,2,100,2,67,2,36,2,3,2,232,1,205,1,194,1,197,1,196,1, 211,1,215,1,244,1,17,2,42,2,61,2,61,2,61,2,46,2,20,2,10,2,240,1,230,1,211,1,197,1,178,1,164,1,143,1,123,1,96,1,74,1,35,1,253,0,216,0,169,0,104,0,29,0,202,255,136,255,93,255,69,255,50,255,41,255,41,255,33,255,29,255,12,255,239,254,220,254,202,254,205, 254,214,254,236,254,245,254,7,255,19,255,18,255,12,255,239,254,206,254,170,254,133,254,94,254,78,254,60,254,40,254,37,254,41,254,63,254,98,254,116,254,139,254,157,254,175,254,185,254,191,254,209,254,220,254,229,254,232,254,245,254,246,254,234,254,232, 254,214,254,193,254,173,254,173,254,171,254,166,254,156,254,156,254,173,254,180,254,210,254,231,254,247,254,15,255,33,255,52,255,76,255,101,255,117,255,141,255,177,255,196,255,227,255,245,255,14,0,36,0,46,0,48,0,57,0,65,0,80,0,86,0,84,0,82,0,80,0,80, 0,73,0,64,0,60,0,53,0,53,0,57,0,53,0,44,0,50,0,53,0,61,0,44,0,37,0,35,0,39,0,50,0,57,0,75,0,89,0,91,0,68,0,36,0,0,0,228,255,201,255,190,255,181,255,173,255,174,255,170,255,154,255,129,255,104,255,76,255,48,255,27,255,253,254,238,254,234,254,234,254,229, 254,234,254,236,254,234,254,229,254,217,254,203,254,198,254,189,254,199,254,202,254,207,254,207,254,192,254,162,254,139,254,121,254,123,254,112,254,108,254,117,254,119,254,121,254,145,254,157,254,173,254,202,254,234,254,4,255,29,255,44,255,48,255,62, 255,65,255,51,255,43,255,44,255,43,255,48,255,51,255,55,255,57,255,51,255,45,255,51,255,63,255,70,255,102,255,138,255,177,255,220,255,252,255,28,0,46,0,65,0,89,0,98,0,111,0,122,0,132,0,147,0,162,0,176,0,190,0,195,0,201,0,199,0,205,0,212,0,209,0,206,0, 209,0,204,0,183,0,172,0,145,0,123,0,109,0,97,0,108,0,114,0,144,0,159,0,162,0,162,0,137,0,115,0,75,0,51,0,29,0,17,0,255,255,234,255,212,255,180,255,167,255,162,255,156,255,160,255,173,255,181,255,206,255,238,255,24,0,65,0,104,0,133,0,166,0,188,0,217,0, 224,0,249,0,15,1,47,1,78,1,100,1,108,1,119,1,126,1,123,1,125,1,119,1,107,1,107,1,122,1,144,1,155,1,179,1,191,1,226,1,233,1,248,1,0,2,5,2,17,2,38,2,64,2,81,2,81,2,81,2,64,2,54,2,23,2,252,1,250,1,247,1,241,1,227,1,214,1,208,1,198,1,190,1,187,1,191,1,202, 1,208,1,205,1,189,1,176,1,151,1,114,1,89,1,61,1,45,1,42,1,21,1,18,1,24,1,25,1,15,1,11,1,255,0,231,0,186,0,130,0,68,0,252,255,195,255,159,255,129,255,102,255,72,255,51,255,37,255,21,255,18,255,11,255,247,254,238,254,232,254,234,254,223,254,223,254,220, 254,216,254,221,254,220,254,218,254,210,254,187,254,188,254,157,254,126,254,83,254,59,254,29,254,23,254,19,254,23,254,54,254,87,254,126,254,148,254,160,254,175,254,180,254,185,254,187,254,187,254,196,254,203,254,207,254,217,254,228,254,242,254,236,254, 236,254,238,254,249,254,247,254,245,254,228,254,220,254,217,254,224,254,231,254,0,255,23,255,62,255,94,255,120,255,144,255,180,255,199,255,232,255,6,0,21,0,48,0,62,0,73,0,90,0,87,0,91,0,98,0,101,0,107,0,109,0,109,0,108,0,101,0,87,0,86,0,87,0,86,0,90, 0,83,0,78,0,80,0,84,0,93,0,109,0,111,0,109,0,97,0,87,0,79,0,72,0,55,0,57,0,57,0,44,0,43,0,37,0,17,0,248,255,228,255,205,255,198,255,187,255,173,255,166,255,162,255,154,255,145,255,131,255,117,255,106,255,87,255,72,255,45,255,9,255,245,254,224,254,213, 254,211,254,203,254,189,254,187,254,188,254,196,254,193,254,202,254,209,254,207,254,191,254,187,254,181,254,180,254,174,254,162,254,171,254,177,254,181,254,175,254,175,254,170,254,175,254,203,254,235,254,21,255,57,255,91,255,120,255,124,255,124,255,104, 255,80,255,69,255,58,255,55,255,63,255,73,255,106,255,126,255,151,255,167,255,176,255,174,255,188,255,212,255,246,255,11,0,36,0,47,0,60,0,66,0,71,0,71,0,72,0,83,0,86,0,94,0,118,0,133,0,139,0,161,0,175,0,180,0,188,0,180,0,166,0,148,0,139,0,129,0,120,0, 132,0,129,0,140,0,143,0,151,0,151,0,136,0,127,0,115,0,104,0,87,0,79,0,66,0,64,0,55,0,50,0,30,0,17,0,245,255,216,255,191,255,180,255,184,255,188,255,208,255,228,255,250,255,19,0,42,0,64,0,76,0,93,0,116,0,130,0,145,0,173,0,208,0,231,0,10,1,36,1,53,1,81, 1,107,1,126,1,139,1,151,1,165,1,169,1,164,1,162,1,146,1,141,1,140,1,154,1,165,1,171,1,176,1,179,1,168,1,165,1,168,1,171,1,182,1,183,1,196,1,205,1,211,1,200,1,193,1,183,1,178,1,173,1,191,1,209,1,208,1,200,1,205,1,194,1,171,1,148,1,123,1,99,1,64,1,35,1, 7,1,241,0,222,0,206,0,199,0,184,0,177,0,165,0,159,0,163,0,155,0,157,0,155,0,137,0,105,0,73,0,32,0,3,0,230,255,209,255,188,255,173,255,154,255,123,255,79,255,47,255,25,255,11,255,15,255,25,255,37,255,41,255,30,255,14,255,249,254,218,254,187,254,177,254, 166,254,163,254,162,254,163,254,151,254,139,254,130,254,105,254,91,254,76,254,66,254,67,254,76,254,96,254,117,254,108,254,102,254,92,254,95,254,102,254,120,254,141,254,159,254,189,254,206,254,217,254,216,254,231,254,245,254,12,255,18,255,27,255,37,255, 48,255,39,255,26,255,3,255,246,254,3,255,5,255,29,255,50,255,83,255,122,255,159,255,196,255,230,255,0,0,32,0,58,0,84,0,109,0,134,0,145,0,145,0,143,0,130,0,136,0,136,0,136,0,144,0,162,0,159,0,150,0,143,0,134,0,134,0,122,0,118,0,133,0,139,0,130,0,130,0, 130,0,137,0,140,0,133,0,129,0,125,0,107,0,97,0,66,0,43,0,21,0,250,255,231,255,245,255,241,255,250,255,10,0,12,0,18,0,250,255,230,255,202,255,183,255,170,255,156,255,155,255,148,255,147,255,134,255,112,255,91,255,65,255,41,255,1,255,220,254,184,254,159, 254,139,254,144,254,169,254,188,254,210,254,224,254,224,254,216,254,200,254,205,254,205,254,209,254,211,254,217,254,232,254,232,254,235,254,238,254,249,254,254,254,7,255,14,255,25,255,33,255,57,255,81,255,102,255,123,255,126,255,133,255,140,255,129,255, 124,255,126,255,137,255,141,255,156,255,181,255,196,255,220,255,244,255,7,0,29,0,39,0,30,0,25,0,15,0,22,0,22,0,19,0,29,0,42,0,47,0,65,0,75,0,82,0,87,0,87,0,94,0,96,0,102,0,109,0,115,0,120,0,126,0,118,0,111,0,104,0,109,0,107,0,109,0,122,0,122,0,127,0, 137,0,133,0,126,0,102,0,68,0,58,0,43,0,33,0,26,0,26,0,22,0,14,0,252,255,238,255,238,255,246,255,3,0,8,0,15,0,32,0,42,0,47,0,55,0,61,0,66,0,79,0,86,0,104,0,116,0,139,0,163,0,201,0,222,0,3,1,42,1,71,1,87,1,108,1,128,1,158,1,179,1,196,1,205,1,211,1,215, 1,204,1,200,1,175,1,153,1,122,1,97,1,83,1,75,1,83,1,90,1,105,1,107,1,119,1,122,1,123,1,126,1,118,1,129,1,137,1,157,1,175,1,172,1,182,1,178,1,173,1,173,1,166,1,161,1,150,1,126,1,82,1,36,1,238,0,188,0,154,0,122,0,118,0,108,0,107,0,107,0,108,0,105,0,105, 0,89,0,66,0,54,0,47,0,33,0,32,0,24,0,25,0,24,0,10,0,8,0,249,255,221,255,185,255,141,255,106,255,79,255,65,255,54,255,58,255,55,255,45,255,30,255,21,255,14,255,234,254,209,254,184,254,169,254,138,254,123,254,117,254,113,254,116,254,115,254,119,254,119, 254,121,254,121,254,108,254,101,254,96,254,92,254,80,254,60,254,54,254,41,254,30,254,45,254,70,254,108,254,137,254,167,254,193,254,220,254,246,254,7,255,25,255,41,255,57,255,63,255,59,255,51,255,45,255,40,255,58,255,73,255,97,255,117,255,140,255,169, 255,188,255,198,255,206,255,224,255,249,255,24,0,55,0,89,0,125,0,151,0,169,0,175,0,162,0,157,0,144,0,150,0,155,0,172,0,186,0,184,0,195,0,195,0,190,0,198,0,193,0,202,0,199,0,191,0,177,0,170,0,166,0,158,0,155,0,151,0,137,0,129,0,118,0,101,0,82,0,60,0,40, 0,26,0,14,0,7,0,253,255,244,255,248,255,3,0,19,0,33,0,37,0,35,0,29,0,11,0,246,255,231,255,213,255,199,255,188,255,167,255,149,255,131,255,102,255,79,255,55,255,27,255,0,255,225,254,193,254,199,254,193,254,203,254,217,254,216,254,223,254,225,254,228,254, 228,254,229,254,243,254,246,254,253,254,15,255,23,255,43,255,62,255,73,255,84,255,99,255,95,255,104,255,98,255,98,255,93,255,97,255,93,255,109,255,116,255,138,255,152,255,167,255,181,255,187,255,195,255,188,255,192,255,199,255,210,255,226,255,235,255, 249,255,0,0,8,0,17,0,6,0,253,255,253,255,255,255,252,255,7,0,11,0,26,0,30,0,50,0,61,0,68,0,72,0,72,0,68,0,64,0,53,0,62,0,60,0,71,0,80,0,98,0,104,0,101,0,109,0,108,0,102,0,94,0,76,0,60,0,55,0,35,0,35,0,32,0,22,0,21,0,11,0,252,255,241,255,231,255,237,255, 239,255,255,255,19,0,36,0,48,0,47,0,50,0,46,0,32,0,24,0,29,0,36,0,46,0,55,0,82,0,108,0,139,0,162,0,191,0,215,0,238,0,10,1,36,1,76,1,112,1,150,1,176,1,184,1,187,1,194,1,193,1,191,1,193,1,189,1,178,1,157,1,135,1,103,1,71,1,54,1,43,1,45,1,36,1,46,1,47,1, 45,1,46,1,49,1,65,1,93,1,94,1,105,1,126,1,140,1,132,1,128,1,136,1,130,1,118,1,92,1,74,1,36,1,0,1,220,0,188,0,150,0,112,0,79,0,51,0,42,0,28,0,24,0,8,0,1,0,252,255,244,255,234,255,235,255,224,255,219,255,223,255,238,255,245,255,3,0,7,0,3,0,231,255,210, 255,191,255,178,255,154,255,137,255,122,255,98,255,83,255,68,255,43,255,22,255,253,254,234,254,211,254,195,254,192,254,170,254,167,254,151,254,139,254,128,254,117,254,108,254,109,254,120,254,123,254,135,254,127,254,108,254,102,254,94,254,81,254,87,254, 77,254,77,254,80,254,92,254,92,254,115,254,127,254,155,254,185,254,216,254,246,254,19,255,37,255,51,255,52,255,54,255,58,255,51,255,61,255,83,255,119,255,163,255,203,255,235,255,250,255,7,0,0,0,241,255,238,255,245,255,6,0,17,0,36,0,72,0,102,0,126,0,145, 0,151,0,159,0,162,0,169,0,170,0,170,0,170,0,183,0,199,0,220,0,216,0,227,0,222,0,229,0,238,0,229,0,216,0,204,0,181,0,172,0,165,0,150,0,148,0,130,0,111,0,93,0,76,0,62,0,46,0,36,0,30,0,26,0,22,0,19,0,14,0,26,0,25,0,26,0,21,0,21,0,22,0,33,0,36,0,30,0,15, 0,253,255,224,255,194,255,163,255,133,255,116,255,95,255,88,255,77,255,65,255,54,255,44,255,33,255,18,255,1,255,243,254,220,254,214,254,213,254,214,254,227,254,239,254,4,255,16,255,32,255,50,255,63,255,76,255,98,255,119,255,147,255,159,255,170,255,190, 255,187,255,188,255,159,255,160,255,159,255,155,255,158,255,165,255,169,255,185,255,206,255,234,255,242,255,0,0,252,255,234,255,223,255,212,255,202,255,201,255,194,255,212,255,230,255,249,255,11,0,24,0,18,0,11,0,1,0,248,255,250,255,10,0,17,0,30,0,57, 0,66,0,71,0,79,0,66,0,64,0,54,0,40,0,40,0,36,0,48,0,75,0,87,0,97,0,97,0,98,0,82,0,62,0,36,0,11,0,253,255,249,255,10,0,29,0,36,0,29,0,19,0,3,0,245,255,235,255,237,255,241,255,250,255,6,0,19,0,28,0,25,0,32,0,35,0,22,0,29,0,28,0,28,0,42,0,53,0,73,0,93,0, 112,0,145,0,163,0,188,0,220,0,252,0,29,1,51,1,68,1,82,1,100,1,114,1,121,1,132,1,139,1,146,1,137,1,130,1,119,1,110,1,101,1,90,1,76,1,50,1,36,1,7,1,249,0,249,0,242,0,242,0,255,0,252,0,11,1,13,1,31,1,32,1,49,1,54,1,53,1,56,1,57,1,56,1,38,1,24,1,6,1,242, 0,226,0,198,0,177,0,150,0,134,0,109,0,73,0,35,0,7,0,241,255,224,255,210,255,202,255,195,255,196,255,192,255,202,255,212,255,213,255,231,255,230,255,231,255,220,255,214,255,209,255,203,255,201,255,191,255,180,255,180,255,172,255,154,255,133,255,102,255, 73,255,39,255,5,255,235,254,207,254,191,254,185,254,188,254,195,254,181,254,171,254,170,254,153,254,135,254,113,254,91,254,87,254,87,254,92,254,106,254,124,254,133,254,127,254,128,254,113,254,103,254,94,254,95,254,112,254,127,254,151,254,169,254,191, 254,210,254,223,254,246,254,4,255,37,255,44,255,51,255,61,255,81,255,97,255,133,255,173,255,210,255,248,255,24,0,40,0,43,0,40,0,25,0,14,0,12,0,14,0,24,0,35,0,62,0,87,0,101,0,111,0,136,0,150,0,151,0,154,0,155,0,165,0,177,0,193,0,206,0,230,0,229,0,230, 0,235,0,234,0,227,0,222,0,209,0,215,0,206,0,194,0,179,0,166,0,141,0,122,0,104,0,96,0,84,0,76,0,64,0,58,0,53,0,50,0,48,0,42,0,29,0,21,0,11,0,1,0,246,255,235,255,232,255,242,255,244,255,248,255,253,255,242,255,221,255,212,255,184,255,165,255,149,255,138, 255,129,255,126,255,126,255,134,255,129,255,113,255,99,255,75,255,54,255,40,255,22,255,12,255,254,254,253,254,14,255,23,255,25,255,47,255,69,255,99,255,131,255,147,255,176,255,202,255,214,255,230,255,232,255,241,255,248,255,249,255,11,0,11,0,14,0,12, 0,245,255,238,255,237,255,232,255,224,255,221,255,228,255,245,255,248,255,235,255,231,255,227,255,223,255,213,255,209,255,195,255,201,255,208,255,216,255,237,255,246,255,0,0,6,0,4,0,4,0,7,0,10,0,22,0,22,0,36,0,51,0,54,0,57,0,61,0,64,0,61,0,55,0,54,0, 62,0,61,0,60,0,54,0,47,0,33,0,24,0,7,0,6,0,15,0,15,0,15,0,26,0,29,0,24,0,18,0,12,0,3,0,4,0,249,255,253,255,3,0,7,0,10,0,8,0,6,0,6,0,10,0,17,0,35,0,44,0,61,0,89,0,93,0,101,0,114,0,126,0,145,0,169,0,183,0,206,0,244,0,14,1,29,1,45,1,45,1,38,1,43,1,54,1, 58,1,63,1,57,1,63,1,69,1,74,1,86,1,79,1,81,1,74,1,61,1,36,1,17,1,244,0,231,0,219,0,220,0,226,0,238,0,235,0,234,0,233,0,229,0,231,0,241,0,241,0,253,0,245,0,240,0,240,0,230,0,226,0,206,0,198,0,183,0,169,0,145,0,126,0,107,0,73,0,48,0,26,0,242,255,213,255, 201,255,190,255,185,255,184,255,185,255,180,255,190,255,206,255,209,255,201,255,187,255,166,255,165,255,156,255,165,255,162,255,165,255,180,255,178,255,167,255,159,255,142,255,112,255,91,255,61,255,29,255,1,255,229,254,214,254,188,254,171,254,169,254, 153,254,151,254,146,254,135,254,126,254,113,254,112,254,109,254,102,254,96,254,102,254,126,254,135,254,145,254,148,254,145,254,144,254,149,254,151,254,138,254,146,254,155,254,167,254,188,254,196,254,207,254,224,254,235,254,7,255,34,255,61,255,91,255, 129,255,165,255,201,255,226,255,241,255,0,0,8,0,19,0,17,0,17,0,33,0,37,0,47,0,53,0,62,0,69,0,79,0,97,0,91,0,105,0,116,0,118,0,129,0,137,0,147,0,162,0,177,0,186,0,195,0,195,0,195,0,205,0,201,0,208,0,205,0,204,0,206,0,198,0,191,0,186,0,187,0,175,0,168, 0,152,0,133,0,111,0,107,0,104,0,100,0,84,0,76,0,55,0,43,0,28,0,17,0,7,0,10,0,248,255,248,255,241,255,242,255,234,255,219,255,212,255,202,255,191,255,185,255,185,255,169,255,170,255,174,255,177,255,181,255,188,255,187,255,174,255,160,255,151,255,134,255, 124,255,105,255,104,255,94,255,73,255,61,255,50,255,45,255,44,255,79,255,81,255,93,255,113,255,133,255,160,255,187,255,209,255,234,255,244,255,252,255,15,0,40,0,55,0,71,0,89,0,80,0,83,0,64,0,44,0,17,0,253,255,239,255,228,255,221,255,216,255,221,255,219, 255,234,255,237,255,234,255,230,255,220,255,220,255,212,255,198,255,191,255,194,255,206,255,212,255,238,255,250,255,12,0,24,0,25,0,22,0,19,0,14,0,11,0,15,0,25,0,35,0,43,0,51,0,61,0,61,0,53,0,40,0,21,0,12,0,3,0,253,255,6,0,14,0,32,0,26,0,25,0,22,0,22, 0,6,0,255,255,252,255,0,0,0,0,3,0,7,0,7,0,11,0,6,0,1,0,255,255,250,255,249,255,255,255,18,0,39,0,53,0,84,0,107,0,120,0,127,0,137,0,150,0,158,0,173,0,186,0,197,0,217,0,229,0,244,0,255,0,4,1,17,1,27,1,27,1,28,1,15,1,15,1,25,1,38,1,42,1,57,1,58,1,63,1,51, 1,40,1,29,1,17,1,255,0,237,0,226,0,216,0,209,0,205,0,201,0,193,0,187,0,175,0,169,0,166,0,162,0,162,0,162,0,165,0,168,0,168,0,173,0,172,0,158,0,150,0,139,0,133,0,129,0,123,0,114,0,100,0,72,0,47,0,3,0,227,255,203,255,192,255,195,255,185,255,187,255,180, 255,173,255,170,255,162,255,152,255,145,255,138,255,134,255,133,255,129,255,144,255,148,255,156,255,147,255,145,255,141,255,136,255,115,255,81,255,57,255,33,255,4,255,231,254,203,254,182,254,171,254,170,254,174,254,173,254,171,254,166,254,163,254,151, 254,134,254,127,254,127,254,133,254,139,254,141,254,151,254,151,254,156,254,152,254,156,254,167,254,177,254,184,254,196,254,207,254,205,254,216,254,227,254,241,254,4,255,30,255,57,255,97,255,130,255,169,255,191,255,206,255,210,255,213,255,210,255,213, 255,216,255,220,255,234,255,11,0,37,0,68,0,90,0,102,0,102,0,119,0,120,0,118,0,122,0,109,0,104,0,120,0,127,0,143,0,151,0,162,0,175,0,186,0,191,0,188,0,191,0,198,0,206,0,212,0,220,0,226,0,216,0,205,0,195,0,180,0,172,0,162,0,157,0,151,0,148,0,133,0,119, 0,107,0,89,0,73,0,65,0,47,0,33,0,15,0,4,0,255,255,246,255,241,255,235,255,223,255,208,255,210,255,202,255,195,255,184,255,181,255,177,255,173,255,174,255,177,255,173,255,188,255,191,255,192,255,198,255,194,255,184,255,173,255,166,255,158,255,154,255, 154,255,142,255,134,255,127,255,123,255,126,255,116,255,129,255,129,255,144,255,158,255,177,255,195,255,206,255,228,255,249,255,14,0,36,0,51,0,69,0,83,0,79,0,82,0,79,0,66,0,58,0,51,0,42,0,24,0,4,0,244,255,238,255,234,255,227,255,227,255,228,255,231,255, 228,255,221,255,216,255,216,255,205,255,196,255,191,255,192,255,192,255,203,255,214,255,235,255,245,255,3,0,17,0,14,0,14,0,253,255,253,255,252,255,244,255,250,255,7,0,17,0,26,0,24,0,26,0,18,0,14,0,8,0,4,0,0,0,255,255,3,0,0,0,1,0,0,0,255,255,1,0,1,0,0, 0,7,0,8,0,11,0,14,0,17,0,11,0,3,0,7,0,1,0,1,0,11,0,17,0,37,0,51,0,60,0,68,0,78,0,87,0,116,0,137,0,150,0,163,0,173,0,179,0,186,0,197,0,195,0,199,0,209,0,220,0,219,0,229,0,222,0,231,0,231,0,241,0,242,0,247,0,0,1,3,1,253,0,4,1,13,1,13,1,13,1,3,1,4,1,0,1, 235,0,216,0,202,0,197,0,180,0,172,0,162,0,147,0,133,0,114,0,105,0,89,0,80,0,78,0,72,0,84,0,101,0,114,0,118,0,122,0,130,0,125,0,118,0,107,0,93,0,71,0,57,0,40,0,21,0,252,255,220,255,198,255,181,255,173,255,159,255,163,255,156,255,148,255,140,255,129,255, 120,255,109,255,105,255,104,255,102,255,104,255,112,255,109,255,112,255,111,255,101,255,90,255,68,255,47,255,29,255,8,255,254,254,252,254,239,254,235,254,227,254,223,254,216,254,213,254,216,254,210,254,196,254,184,254,167,254,149,254,137,254,130,254, 128,254,138,254,135,254,135,254,139,254,149,254,160,254,178,254,195,254,209,254,220,254,232,254,241,254,253,254,1,255,14,255,39,255,59,255,94,255,120,255,138,255,166,255,183,255,194,255,199,255,202,255,201,255,212,255,216,255,221,255,245,255,7,0,26,0, 55,0,97,0,134,0,157,0,172,0,172,0,161,0,145,0,123,0,108,0,105,0,111,0,129,0,152,0,172,0,206,0,223,0,230,0,224,0,223,0,209,0,197,0,194,0,188,0,197,0,191,0,197,0,195,0,201,0,184,0,188,0,184,0,179,0,166,0,150,0,137,0,129,0,108,0,91,0,78,0,66,0,57,0,46,0, 33,0,22,0,7,0,249,255,237,255,216,255,202,255,192,255,192,255,192,255,201,255,212,255,210,255,209,255,209,255,206,255,203,255,201,255,205,255,210,255,213,255,223,255,227,255,230,255,221,255,213,255,208,255,196,255,199,255,212,255,208,255,217,255,216, 255,219,255,220,255,209,255,208,255,212,255,206,255,205,255,219,255,235,255,253,255,11,0,28,0,35,0,44,0,46,0,54,0,61,0,60,0,60,0,53,0,40,0,39,0,32,0,26,0,18,0,17,0,11,0,3,0,253,255,239,255,237,255,231,255,231,255,220,255,216,255,209,255,208,255,206,255, 214,255,216,255,216,255,223,255,221,255,230,255,232,255,234,255,244,255,250,255,3,0,252,255,255,255,246,255,248,255,255,255,0,0,4,0,11,0,17,0,19,0,28,0,22,0,21,0,22,0,24,0,14,0,19,0,22,0,24,0,25,0,17,0,28,0,21,0,28,0,36,0,33,0,32,0,35,0,32,0,32,0,30, 0,29,0,32,0,42,0,53,0,53,0,57,0,69,0,75,0,86,0,93,0,109,0,123,0,139,0,158,0,169,0,175,0,193,0,198,0,201,0,204,0,201,0,206,0,201,0,206,0,202,0,217,0,223,0,222,0,217,0,216,0,220,0,217,0,222,0,222,0,216,0,220,0,229,0,226,0,231,0,219,0,206,0,201,0,170,0, 152,0,133,0,107,0,91,0,80,0,64,0,58,0,53,0,46,0,53,0,57,0,61,0,60,0,60,0,71,0,71,0,69,0,62,0,60,0,54,0,50,0,43,0,28,0,18,0,10,0,255,255,239,255,216,255,202,255,183,255,176,255,176,255,166,255,162,255,155,255,147,255,144,255,136,255,120,255,99,255,83, 255,66,255,63,255,62,255,58,255,55,255,54,255,58,255,57,255,55,255,39,255,32,255,26,255,23,255,5,255,7,255,253,254,14,255,8,255,9,255,4,255,253,254,239,254,223,254,205,254,191,254,180,254,166,254,169,254,169,254,166,254,167,254,173,254,174,254,170,254, 175,254,177,254,184,254,199,254,210,254,223,254,239,254,4,255,15,255,40,255,62,255,77,255,91,255,101,255,115,255,126,255,140,255,159,255,176,255,190,255,210,255,223,255,235,255,244,255,0,0,11,0,26,0,46,0,60,0,84,0,102,0,125,0,141,0,162,0,159,0,155,0, 141,0,133,0,143,0,151,0,166,0,190,0,205,0,219,0,224,0,226,0,216,0,206,0,199,0,191,0,186,0,180,0,172,0,172,0,169,0,180,0,179,0,177,0,180,0,175,0,165,0,154,0,144,0,132,0,111,0,96,0,86,0,80,0,79,0,72,0,57,0,40,0,19,0,253,255,244,255,224,255,220,255,217, 255,203,255,212,255,220,255,217,255,223,255,227,255,232,255,232,255,228,255,230,255,224,255,234,255,230,255,234,255,237,255,244,255,252,255,3,0,12,0,14,0,12,0,6,0,255,255,0,0,246,255,245,255,248,255,239,255,235,255,245,255,248,255,0,0,6,0,11,0,6,0,14, 0,6,0,17,0,28,0,29,0,29,0,36,0,32,0,26,0,26,0,17,0,18,0,21,0,14,0,15,0,12,0,3,0,7,0,253,255,237,255,223,255,210,255,213,255,213,255,208,255,210,255,199,255,194,255,194,255,194,255,190,255,194,255,201,255,210,255,217,255,230,255,230,255,231,255,234,255, 235,255,235,255,232,255,235,255,238,255,245,255,255,255,8,0,18,0,25,0,21,0,19,0,19,0,28,0,33,0,47,0,47,0,55,0,66,0,62,0,60,0,55,0,54,0,53,0,50,0,51,0,51,0,54,0,55,0,61,0,54,0,42,0,30,0,18,0,28,0,26,0,43,0,55,0,73,0,83,0,94,0,108,0,116,0,137,0,144,0,161, 0,175,0,186,0,198,0,197,0,194,0,197,0,193,0,197,0,197,0,205,0,201,0,205,0,204,0,199,0,193,0,186,0,198,0,204,0,193,0,193,0,187,0,187,0,180,0,173,0,170,0,168,0,155,0,140,0,112,0,91,0,60,0,39,0,28,0,32,0,33,0,43,0,47,0,47,0,44,0,32,0,29,0,12,0,10,0,255, 255,0,0,1,0,245,255,246,255,241,255,244,255,244,255,237,255,227,255,227,255,216,255,208,255,199,255,185,255,173,255,165,255,160,255,163,255,156,255,154,255,142,255,129,255,106,255,83,255,62,255,41,255,36,255,27,255,30,255,32,255,41,255,41,255,50,255, 50,255,62,255,52,255,44,255,51,255,40,255,41,255,36,255,34,255,27,255,18,255,12,255,4,255,253,254,250,254,243,254,234,254,223,254,210,254,206,254,210,254,216,254,217,254,207,254,203,254,193,254,198,254,195,254,200,254,223,254,231,254,250,254,15,255,33, 255,40,255,52,255,65,255,73,255,73,255,81,255,98,255,116,255,144,255,170,255,184,255,209,255,228,255,245,255,252,255,14,0,19,0,29,0,30,0,42,0,57,0,73,0,101,0,122,0,147,0,175,0,193,0,208,0,209,0,205,0,194,0,191,0,194,0,201,0,205,0,217,0,220,0,227,0,224, 0,213,0,202,0,191,0,188,0,190,0,191,0,195,0,194,0,186,0,180,0,181,0,177,0,176,0,162,0,166,0,151,0,143,0,127,0,122,0,109,0,97,0,82,0,66,0,58,0,47,0,25,0,15,0,6,0,0,0,252,255,242,255,228,255,216,255,212,255,219,255,228,255,230,255,238,255,244,255,0,0,248, 255,241,255,242,255,238,255,248,255,250,255,3,0,17,0,25,0,21,0,30,0,29,0,35,0,32,0,35,0,29,0,21,0,14,0,10,0,11,0,15,0,25,0,21,0,24,0,26,0,22,0,24,0,18,0,14,0,8,0,8,0,255,255,3,0,7,0,15,0,21,0,18,0,25,0,35,0,36,0,35,0,28,0,19,0,10,0,249,255,238,255,221, 255,219,255,214,255,209,255,195,255,190,255,178,255,169,255,169,255,167,255,167,255,184,255,201,255,216,255,227,255,239,255,235,255,230,255,220,255,217,255,217,255,223,255,242,255,250,255,0,0,14,0,22,0,26,0,25,0,26,0,25,0,24,0,28,0,37,0,50,0,65,0,69, 0,90,0,93,0,98,0,98,0,89,0,80,0,78,0,75,0,69,0,72,0,65,0,61,0,48,0,37,0,30,0,25,0,28,0,26,0,36,0,47,0,57,0,71,0,79,0,91,0,107,0,122,0,140,0,143,0,145,0,152,0,155,0,158,0,172,0,181,0,172,0,176,0,170,0,175,0,169,0,180,0,176,0,175,0,179,0,168,0,173,0,175, 0,168,0,158,0,150,0,145,0,133,0,119,0,102,0,93,0,76,0,72,0,57,0,54,0,53,0,39,0,36,0,32,0,22,0,15,0,11,0,10,0,1,0,241,255,227,255,209,255,191,255,183,255,174,255,169,255,176,255,183,255,185,255,183,255,185,255,195,255,198,255,190,255,190,255,187,255,178, 255,177,255,173,255,176,255,177,255,158,255,144,255,119,255,94,255,75,255,59,255,55,255,51,255,48,255,50,255,32,255,26,255,18,255,26,255,33,255,47,255,55,255,59,255,59,255,73,255,69,255,59,255,50,255,45,255,41,255,37,255,33,255,27,255,21,255,23,255,23, 255,19,255,22,255,12,255,9,255,8,255,0,255,247,254,236,254,234,254,223,254,220,254,214,254,218,254,227,254,229,254,247,254,0,255,12,255,23,255,25,255,26,255,40,255,48,255,61,255,70,255,91,255,116,255,142,255,167,255,191,255,208,255,224,255,238,255,252, 255,14,0,22,0,36,0,46,0,60,0,79,0,96,0,104,0,123,0,141,0,173,0,186,0,201,0,213,0,230,0,237,0,231,0,229,0,215,0,202,0,194,0,187,0,193,0,202,0,215,0,215,0,212,0,201,0,201,0,204,0,201,0,191,0,188,0,186,0,190,0,183,0,175,0,169,0,166,0,159,0,148,0,139,0,140, 0,120,0,105,0,86,0,76,0,62,0,57,0,46,0,44,0,35,0,28,0,12,0,6,0,252,255,252,255,241,255,239,255,244,255,244,255,248,255,0,0,10,0,12,0,25,0,37,0,42,0,46,0,48,0,37,0,30,0,30,0,35,0,35,0,40,0,44,0,47,0,58,0,72,0,71,0,72,0,65,0,58,0,51,0,42,0,39,0,37,0,29, 0,30,0,35,0,28,0,15,0,17,0,12,0,12,0,14,0,17,0,24,0,29,0,33,0,37,0,36,0,28,0,24,0,24,0,12,0,4,0,253,255,239,255,226,255,219,255,202,255,198,255,198,255,199,255,194,255,190,255,187,255,190,255,190,255,191,255,187,255,198,255,195,255,201,255,209,255,217, 255,227,255,237,255,239,255,244,255,250,255,255,255,0,0,10,0,17,0,29,0,39,0,47,0,43,0,54,0,57,0,62,0,78,0,82,0,94,0,100,0,104,0,98,0,102,0,97,0,96,0,84,0,82,0,76,0,68,0,64,0,60,0,54,0,57,0,50,0,51,0,46,0,42,0,40,0,37,0,47,0,51,0,65,0,79,0,83,0,101,0, 111,0,125,0,139,0,148,0,148,0,152,0,155,0,157,0,161,0,162,0,165,0,169,0,173,0,176,0,175,0,172,0,165,0,161,0,152,0,148,0,139,0,134,0,126,0,114,0,94,0,76,0,61,0,54,0,39,0,39,0,46,0,39,0,40,0,33,0,29,0,22,0,4,0,241,255,216,255,203,255,188,255,173,255,172, 255,159,255,165,255,159,255,145,255,145,255,145,255,142,255,134,255,136,255,144,255,151,255,165,255,163,255,162,255,158,255,154,255,156,255,144,255,136,255,123,255,119,255,108,255,95,255,86,255,79,255,81,255,73,255,63,255,61,255,57,255,54,255,48,255, 51,255,54,255,44,255,43,255,47,255,44,255,48,255,57,255,62,255,68,255,63,255,59,255,54,255,54,255,55,255,57,255,58,255,62,255,54,255,61,255,65,255,58,255,50,255,36,255,23,255,9,255,8,255,3,255,1,255,7,255,7,255,3,255,0,255,243,254,242,254,239,254,1,255, 14,255,26,255,43,255,57,255,70,255,84,255,81,255,101,255,112,255,133,255,147,255,165,255,177,255,194,255,201,255,224,255,234,255,6,0,30,0,51,0,72,0,93,0,109,0,123,0,125,0,141,0,151,0,175,0,186,0,205,0,219,0,234,0,235,0,230,0,220,0,213,0,209,0,202,0,204, 0,201,0,209,0,216,0,216,0,213,0,204,0,206,0,194,0,183,0,184,0,179,0,186,0,181,0,173,0,165,0,155,0,147,0,130,0,125,0,129,0,122,0,120,0,119,0,105,0,107,0,89,0,78,0,66,0,51,0,46,0,40,0,35,0,33,0,25,0,17,0,15,0,14,0,11,0,4,0,15,0,25,0,22,0,21,0,28,0,26,0, 35,0,33,0,39,0,36,0,35,0,29,0,32,0,37,0,40,0,53,0,65,0,78,0,79,0,79,0,83,0,86,0,72,0,68,0,62,0,46,0,36,0,40,0,37,0,42,0,37,0,42,0,62,0,55,0,57,0,60,0,55,0,55,0,46,0,43,0,33,0,28,0,19,0,17,0,253,255,245,255,244,255,234,255,220,255,208,255,208,255,201, 255,201,255,205,255,205,255,216,255,216,255,212,255,203,255,191,255,187,255,178,255,177,255,183,255,196,255,208,255,227,255,237,255,252,255,255,255,253,255,252,255,4,0,11,0,15,0,26,0,28,0,47,0,61,0,69,0,80,0,83,0,80,0,75,0,79,0,78,0,68,0,75,0,75,0,80, 0,86,0,83,0,89,0,86,0,84,0,84,0,78,0,71,0,69,0,61,0,58,0,54,0,46,0,50,0,51,0,48,0,50,0,58,0,61,0,72,0,75,0,87,0,94,0,100,0,114,0,119,0,122,0,126,0,136,0,137,0,152,0,151,0,158,0,154,0,155,0,158,0,157,0,155,0,151,0,147,0,139,0,122,0,97,0,91,0,68,0,65,0, 53,0,43,0,32,0,30,0,26,0,30,0,30,0,22,0,30,0,17,0,253,255,237,255,214,255,194,255,172,255,165,255,155,255,149,255,145,255,144,255,148,255,138,255,133,255,124,255,120,255,123,255,126,255,117,255,122,255,115,255,117,255,117,255,117,255,116,255,115,255, 115,255,117,255,120,255,126,255,133,255,127,255,123,255,115,255,104,255,95,255,81,255,91,255,90,255,80,255,81,255,75,255,70,255,63,255,61,255,55,255,47,255,43,255,52,255,54,255,65,255,66,255,81,255,81,255,80,255,75,255,81,255,83,255,75,255,79,255,73, 255,68,255,55,255,47,255,39,255,26,255,25,255,15,255,19,255,12,255,22,255,23,255,21,255,9,255,3,255,252,254,252,254,250,254,1,255,14,255,23,255,36,255,43,255,55,255,69,255,88,255,104,255,116,255,126,255,130,255,155,255,177,255,198,255,221,255,238,255, 7,0,29,0,50,0,69,0,97,0,114,0,126,0,139,0,140,0,145,0,161,0,170,0,179,0,195,0,201,0,212,0,219,0,222,0,217,0,213,0,206,0,211,0,211,0,206,0,205,0,215,0,223,0,220,0,223,0,205,0,198,0,187,0,184,0,175,0,169,0,162,0,159,0,154,0,143,0,134,0,129,0,127,0,126, 0,122,0,130,0,122,0,119,0,104,0,94,0,80,0,75,0,61,0,51,0,51,0,42,0,37,0,37,0,35,0,30,0,25,0,30,0,24,0,33,0,30,0,25,0,25,0,28,0,29,0,36,0,37,0,44,0,58,0,71,0,73,0,75,0,78,0,75,0,71,0,76,0,71,0,76,0,82,0,72,0,76,0,64,0,51,0,48,0,43,0,42,0,39,0,50,0,58, 0,64,0,73,0,79,0,80,0,71,0,55,0,50,0,46,0,28,0,24,0,19,0,12,0,7,0,253,255,245,255,231,255,223,255,223,255,216,255,219,255,216,255,223,255,224,255,221,255,213,255,202,255,195,255,187,255,178,255,183,255,184,255,181,255,185,255,191,255,202,255,212,255, 226,255,232,255,252,255,1,0,8,0,11,0,18,0,25,0,29,0,46,0,53,0,60,0,58,0,54,0,54,0,54,0,57,0,51,0,60,0,60,0,60,0,68,0,61,0,62,0,73,0,76,0,76,0,82,0,83,0,75,0,71,0,60,0,55,0,46,0,47,0,47,0,51,0,54,0,60,0,47,0,51,0,53,0,55,0,58,0,55,0,68,0,79,0,89,0,97, 0,104,0,120,0,132,0,134,0,141,0,139,0,140,0,139,0,148,0,148,0,140,0,136,0,125,0,116,0,96,0,91,0,78,0,66,0,51,0,46,0,40,0,32,0,26,0,14,0,10,0,6,0,0,0,245,255,232,255,219,255,205,255,184,255,170,255,165,255,156,255,158,255,154,255,141,255,142,255,138,255, 129,255,129,255,130,255,124,255,117,255,101,255,91,255,97,255,91,255,95,255,98,255,99,255,108,255,115,255,116,255,124,255,129,255,129,255,129,255,138,255,140,255,140,255,136,255,140,255,141,255,142,255,126,255,119,255,117,255,109,255,109,255,94,255,83, 255,81,255,75,255,72,255,65,255,69,255,66,255,68,255,70,255,76,255,76,255,87,255,97,255,94,255,91,255,80,255,77,255,77,255,70,255,73,255,66,255,63,255,63,255,50,255,40,255,30,255,25,255,19,255,26,255,32,255,18,255,21,255,14,255,8,255,9,255,14,255,21, 255,32,255,47,255,57,255,73,255,90,255,106,255,116,255,123,255,136,255,147,255,163,255,183,255,202,255,234,255,6,0,18,0,33,0,54,0,65,0,87,0,97,0,116,0,134,0,144,0,154,0,152,0,161,0,169,0,175,0,191,0,212,0,217,0,227,0,219,0,222,0,212,0,204,0,213,0,209, 0,213,0,212,0,212,0,211,0,208,0,204,0,193,0,181,0,173,0,166,0,154,0,148,0,141,0,140,0,133,0,125,0,129,0,123,0,132,0,118,0,127,0,120,0,120,0,118,0,108,0,105,0,94,0,84,0,71,0,61,0,60,0,50,0,61,0,47,0,46,0,40,0,40,0,32,0,40,0,39,0,30,0,32,0,28,0,29,0,35, 0,48,0,61,0,61,0,66,0,79,0,83,0,83,0,78,0,75,0,60,0,62,0,58,0,61,0,64,0,66,0,68,0,68,0,66,0,68,0,72,0,73,0,73,0,76,0,79,0,83,0,83,0,82,0,72,0,66,0,58,0,57,0,48,0,35,0,32,0,15,0,18,0,10,0,248,255,253,255,245,255,239,255,235,255,230,255,231,255,228,255, 226,255,216,255,206,255,198,255,187,255,181,255,184,255,187,255,190,255,194,255,198,255,206,255,216,255,227,255,241,255,245,255,253,255,8,0,19,0,29,0,33,0,33,0,29,0,26,0,17,0,17,0,22,0,15,0,22,0,36,0,33,0,35,0,44,0,50,0,61,0,64,0,75,0,78,0,83,0,79,0, 79,0,76,0,80,0,79,0,79,0,82,0,73,0,68,0,65,0,55,0,57,0,44,0,48,0,43,0,48,0,51,0,57,0,53,0,51,0,48,0,55,0,72,0,84,0,96,0,107,0,115,0,119,0,119,0,130,0,130,0,133,0,136,0,136,0,127,0,123,0,104,0,93,0,83,0,73,0,62,0,48,0,47,0,33,0,26,0,14,0,255,255,250,255, 246,255,226,255,206,255,180,255,180,255,170,255,170,255,170,255,162,255,159,255,155,255,147,255,148,255,136,255,124,255,116,255,111,255,104,255,97,255,91,255,97,255,95,255,97,255,97,255,91,255,87,255,88,255,97,255,98,255,101,255,112,255,116,255,116,255, 120,255,126,255,129,255,148,255,160,255,173,255,176,255,178,255,172,255,170,255,162,255,152,255,136,255,120,255,111,255,116,255,111,255,106,255,111,255,108,255,97,255,94,255,88,255,84,255,87,255,86,255,87,255,93,255,97,255,98,255,87,255,88,255,86,255, 87,255,88,255,91,255,91,255,80,255,80,255,70,255,55,255,36,255,37,255,48,255,40,255,44,255,41,255,40,255,41,255,44,255,36,255,40,255,52,255,63,255,73,255,90,255,98,255,106,255,123,255,129,255,149,255,160,255,178,255,198,255,221,255,237,255,6,0,21,0,25, 0,43,0,54,0,75,0,98,0,107,0,115,0,125,0,126,0,143,0,155,0,163,0,175,0,191,0,209,0,213,0,206,0,211,0,213,0,205,0,208,0,209,0,215,0,212,0,215,0,215,0,213,0,198,0,188,0,177,0,163,0,150,0,150,0,139,0,144,0,145,0,144,0,141,0,145,0,139,0,139,0,136,0,133,0, 123,0,126,0,111,0,104,0,105,0,98,0,91,0,84,0,75,0,62,0,55,0,48,0,51,0,48,0,42,0,44,0,40,0,37,0,42,0,35,0,28,0,29,0,32,0,39,0,39,0,51,0,72,0,69,0,79,0,86,0,82,0,84,0,87,0,83,0,72,0,66,0,55,0,58,0,61,0,62,0,62,0,84,0,83,0,80,0,82,0,72,0,65,0,65,0,69,0, 71,0,69,0,71,0,68,0,64,0,66,0,66,0,66,0,65,0,57,0,44,0,28,0,17,0,8,0,8,0,7,0,252,255,248,255,239,255,232,255,221,255,213,255,205,255,198,255,202,255,202,255,201,255,202,255,208,255,209,255,203,255,206,255,210,255,223,255,234,255,237,255,242,255,245,255, 252,255,6,0,253,255,1,0,12,0,1,0,8,0,4,0,4,0,3,0,11,0,17,0,21,0,26,0,30,0,35,0,48,0,61,0,64,0,58,0,58,0,54,0,54,0,57,0,58,0,54,0,60,0,65,0,62,0,65,0,64,0,65,0,55,0,55,0,47,0,43,0,37,0,35,0,26,0,28,0,29,0,26,0,26,0,37,0,46,0,53,0,69,0,82,0,86,0,93,0,100, 0,111,0,118,0,109,0,105,0,101,0,96,0,84,0,72,0,72,0,62,0,51,0,36,0,26,0,21,0,11,0,6,0,248,255,232,255,220,255,203,255,183,255,177,255,160,255,154,255,148,255,149,255,151,255,154,255,141,255,133,255,123,255,115,255,120,255,113,255,112,255,112,255,104, 255,101,255,95,255,94,255,88,255,90,255,90,255,86,255,90,255,88,255,95,255,102,255,104,255,108,255,115,255,111,255,122,255,131,255,149,255,170,255,181,255,187,255,192,255,196,255,195,255,202,255,194,255,192,255,180,255,169,255,162,255,155,255,147,255, 142,255,134,255,133,255,123,255,120,255,109,255,98,255,91,255,93,255,93,255,80,255,80,255,84,255,93,255,98,255,102,255,111,255,116,255,112,255,109,255,97,255,87,255,70,255,58,255,47,255,37,255,34,255,39,255,50,255,63,255,66,255,70,255,76,255,79,255,87, 255,86,255,95,255,102,255,111,255,127,255,144,255,156,255,167,255,176,255,195,255,216,255,227,255,244,255,250,255,4,0,14,0,22,0,35,0,42,0,48,0,65,0,75,0,79,0,94,0,111,0,119,0,144,0,144,0,163,0,175,0,180,0,186,0,194,0,195,0,197,0,198,0,202,0,208,0,206, 0,209,0,206,0,204,0,199,0,190,0,180,0,161,0,150,0,139,0,139,0,143,0,145,0,150,0,147,0,150,0,148,0,147,0,136,0,114,0,112,0,119,0,112,0,107,0,105,0,100,0,91,0,84,0,72,0,69,0,60,0,68,0,62,0,58,0,58,0,54,0,43,0,43,0,43,0,43,0,36,0,39,0,36,0,42,0,48,0,55, 0,53,0,65,0,62,0,72,0,78,0,76,0,71,0,73,0,80,0,72,0,66,0,64,0,65,0,64,0,65,0,65,0,61,0,62,0,73,0,69,0,71,0,80,0,86,0,84,0,91,0,93,0,97,0,96,0,93,0,83,0,86,0,76,0,66,0,64,0,57,0,42,0,36,0,25,0,25,0,15,0,12,0,4,0,245,255,242,255,235,255,230,255,228,255, 226,255,226,255,230,255,227,255,234,255,227,255,220,255,231,255,235,255,230,255,231,255,238,255,235,255,238,255,241,255,238,255,242,255,248,255,241,255,242,255,237,255,237,255,244,255,250,255,253,255,1,0,14,0,22,0,25,0,30,0,37,0,47,0,55,0,39,0,43,0,47, 0,47,0,54,0,64,0,58,0,61,0,65,0,64,0,53,0,57,0,54,0,57,0,55,0,42,0,37,0,43,0,32,0,22,0,12,0,10,0,17,0,26,0,40,0,42,0,48,0,46,0,61,0,61,0,65,0,76,0,75,0,82,0,75,0,73,0,79,0,71,0,61,0,58,0,47,0,44,0,40,0,32,0,25,0,14,0,6,0,245,255,226,255,214,255,203,255, 190,255,174,255,165,255,148,255,142,255,137,255,137,255,126,255,123,255,120,255,113,255,104,255,102,255,95,255,98,255,95,255,97,255,99,255,109,255,102,255,104,255,95,255,97,255,94,255,95,255,94,255,97,255,98,255,104,255,106,255,115,255,119,255,119,255, 133,255,144,255,149,255,165,255,174,255,191,255,198,255,209,255,208,255,205,255,205,255,203,255,195,255,194,255,194,255,190,255,178,255,167,255,156,255,154,255,136,255,130,255,123,255,120,255,117,255,105,255,98,255,91,255,88,255,87,255,90,255,99,255, 105,255,113,255,122,255,126,255,120,255,122,255,115,255,105,255,95,255,86,255,77,255,72,255,72,255,61,255,68,255,68,255,80,255,87,255,104,255,98,255,109,255,109,255,115,255,127,255,134,255,149,255,169,255,183,255,199,255,214,255,223,255,227,255,239,255, 239,255,253,255,7,0,11,0,17,0,29,0,35,0,40,0,43,0,55,0,68,0,72,0,82,0,93,0,115,0,127,0,136,0,150,0,161,0,172,0,181,0,184,0,193,0,187,0,184,0,184,0,176,0,181,0,183,0,183,0,181,0,173,0,170,0,159,0,147,0,130,0,130,0,133,0,136,0,134,0,141,0,134,0,130,0,129, 0,120,0,107,0,107,0,100,0,100,0,96,0,94,0,80,0,80,0,76,0,69,0,65,0,62,0,65,0,71,0,72,0,68,0,69,0,66,0,66,0,53,0,47,0,44,0,55,0,54,0,53,0,51,0,54,0,51,0,53,0,64,0,71,0,64,0,57,0,64,0,69,0,76,0,80,0,73,0,69,0,64,0,62,0,53,0,53,0,50,0,58,0,66,0,66,0,80, 0,89,0,100,0,100,0,109,0,116,0,118,0,114,0,107,0,108,0,96,0,101,0,78,0,78,0,66,0,71,0,69,0,55,0,46,0,39,0,22,0,10,0,253,255,245,255,237,255,235,255,237,255,241,255,244,255,242,255,249,255,242,255,238,255,237,255,234,255,237,255,238,255,224,255,228,255, 230,255,232,255,231,255,231,255,230,255,230,255,242,255,237,255,241,255,239,255,245,255,255,255,1,0,3,0,14,0,22,0,25,0,29,0,28,0,35,0,33,0,40,0,37,0,36,0,29,0,29,0,26,0,37,0,43,0,46,0,53,0,61,0,60,0,64,0,55,0,48,0,44,0,39,0,29,0,24,0,29,0,29,0,33,0,26, 0,36,0,36,0,37,0,48,0,50,0,50,0,50,0,51,0,54,0,51,0,53,0,57,0,51,0,48,0,43,0,42,0,35,0,26,0,26,0,24,0,18,0,8,0,0,0,238,255,227,255,217,255,199,255,192,255,184,255,173,255,169,255,155,255,141,255,130,255,120,255,119,255,115,255,117,255,115,255,116,255, 112,255,113,255,106,255,109,255,109,255,109,255,119,255,123,255,129,255,131,255,130,255,126,255,124,255,108,255,111,255,119,255,120,255,123,255,133,255,144,255,147,255,149,255,156,255,163,255,178,255,180,255,185,255,191,255,201,255,209,255,217,255,217, 255,221,255,221,255,223,255,219,255,212,255,202,255,188,255,183,255,169,255,154,255,140,255,129,255,130,255,123,255,123,255,122,255,117,255,115,255,111,255,117,255,117,255,116,255,111,255,120,255,119,255,126,255,117,255,113,255,113,255,116,255,106,255, 106,255,94,255,93,255,98,255,94,255,102,255,102,255,120,255,117,255,117,255,131,255,137,255,142,255,151,255,159,255,173,255,185,255,194,255,199,255,217,255,226,255,227,255,242,255,252,255,3,0,12,0,8,0,18,0,22,0,32,0,37,0,43,0,53,0,55,0,68,0,72,0,82,0, 93,0,100,0,109,0,120,0,141,0,144,0,169,0,168,0,168,0,165,0,168,0,159,0,154,0,148,0,158,0,162,0,170,0,161,0,165,0,158,0,148,0,141,0,134,0,132,0,125,0,127,0,115,0,116,0,120,0,108,0,94,0,86,0,89,0,80,0,76,0,71,0,64,0,64,0,60,0,62,0,65,0,58,0,58,0,65,0,65, 0,66,0,75,0,69,0,72,0,79,0,73,0,66,0,61,0,60,0,54,0,62,0,61,0,65,0,54,0,55,0,50,0,53,0,50,0,44,0,42,0,43,0,48,0,51,0,50,0,54,0,53,0,57,0,58,0,50,0,46,0,51,0,51,0,55,0,68,0,80,0,89,0,100,0,107,0,118,0,127,0,120,0,108,0,105,0,97,0,80,0,71,0,64,0,66,0,76, 0,69,0,75,0,69,0,60,0,46,0,30,0,19,0,1,0,248,255,244,255,242,255,241,255,249,255,246,255,246,255,248,255,238,255,235,255,227,255,220,255,214,255,213,255,224,255,224,255,228,255,235,255,228,255,234,255,228,255,234,255,234,255,232,255,246,255,250,255,249, 255,255,255,0,0,0,0,4,0,3,0,0,0,0,0,7,0,10,0,8,0,17,0,19,0,24,0,22,0,29,0,28,0,32,0,32,0,43,0,48,0,48,0,43,0,40,0,36,0,33,0,29,0,37,0,36,0,33,0,36,0,32,0,35,0,32,0,33,0,29,0,26,0,28,0,25,0,36,0,46,0,42,0,33,0,28,0,30,0,29,0,25,0,25,0,14,0,18,0,17,0,6, 0,1,0,253,255,245,255,239,255,230,255,224,255,216,255,203,255,201,255,190,255,181,255,162,255,147,255,129,255,126,255,126,255,124,255,119,255,120,255,127,255,119,255,119,255,126,255,124,255,124,255,129,255,131,255,137,255,138,255,138,255,142,255,145, 255,138,255,138,255,136,255,140,255,145,255,144,255,147,255,149,255,152,255,159,255,165,255,166,255,174,255,180,255,174,255,184,255,190,255,196,255,208,255,216,255,221,255,223,255,231,255,227,255,227,255,216,255,212,255,203,255,191,255,184,255,172,255, 169,255,159,255,145,255,138,255,137,255,133,255,130,255,127,255,122,255,123,255,123,255,123,255,116,255,123,255,113,255,119,255,120,255,124,255,117,255,131,255,129,255,123,255,127,255,130,255,129,255,137,255,136,255,144,255,141,255,145,255,142,255,145, 255,151,255,163,255,178,255,191,255,198,255,214,255,216,255,220,255,223,255,230,255,232,255,244,255,1,0,11,0,18,0,28,0,22,0,29,0,29,0,35,0,39,0,44,0,54,0,62,0,69,0,83,0,86,0,91,0,97,0,104,0,109,0,132,0,133,0,143,0,140,0,141,0,141,0,137,0,145,0,143,0, 141,0,144,0,141,0,139,0,148,0,144,0,140,0,126,0,126,0,130,0,119,0,119,0,114,0,105,0,100,0,96,0,90,0,83,0,80,0,83,0,76,0,71,0,62,0,58,0,50,0,46,0,44,0,48,0,48,0,55,0,58,0,64,0,75,0,78,0,78,0,76,0,76,0,73,0,66,0,65,0,61,0,58,0,55,0,60,0,68,0,69,0,64,0, 55,0,47,0,44,0,42,0,35,0,36,0,33,0,37,0,44,0,50,0,51,0,53,0,55,0,46,0,60,0,61,0,72,0,71,0,73,0,82,0,97,0,104,0,105,0,109,0,112,0,115,0,111,0,115,0,105,0,101,0,86,0,73,0,68,0,73,0,68,0,58,0,55,0,53,0,39,0,36,0,24,0,17,0,12,0,7,0,255,255,239,255,231,255, 231,255,228,255,224,255,220,255,220,255,220,255,217,255,219,255,228,255,224,255,224,255,230,255,232,255,235,255,237,255,238,255,244,255,239,255,241,255,230,255,244,255,244,255,241,255,239,255,242,255,242,255,245,255,246,255,6,0,0,0,12,0,7,0,8,0,3,0,11, 0,8,0,17,0,18,0,19,0,24,0,26,0,22,0,24,0,26,0,25,0,26,0,29,0,42,0,40,0,42,0,37,0,44,0,44,0,33,0,37,0,28,0,26,0,22,0,12,0,19,0,18,0,22,0,18,0,14,0,12,0,14,0,19,0,17,0,12,0,10,0,4,0,3,0,0,0,253,255,237,255,231,255,227,255,216,255,206,255,198,255,185,255, 177,255,166,255,158,255,149,255,151,255,138,255,140,255,140,255,144,255,136,255,136,255,134,255,134,255,137,255,137,255,137,255,142,255,154,255,149,255,152,255,149,255,155,255,154,255,156,255,155,255,155,255,156,255,151,255,152,255,158,255,158,255,162, 255,169,255,172,255,176,255,170,255,169,255,174,255,178,255,183,255,184,255,190,255,196,255,209,255,216,255,217,255,209,255,213,255,214,255,214,255,214,255,199,255,201,255,201,255,191,255,180,255,173,255,160,255,155,255,145,255,136,255,133,255,134,255, 133,255,130,255,130,255,133,255,133,255,129,255,126,255,127,255,127,255,131,255,127,255,131,255,136,255,141,255,149,255,155,255,166,255,173,255,170,255,178,255,170,255,176,255,184,255,184,255,185,255,198,255,199,255,206,255,220,255,231,255,232,255,241, 255,237,255,245,255,249,255,253,255,3,0,10,0,19,0,29,0,35,0,32,0,30,0,42,0,44,0,54,0,54,0,55,0,65,0,71,0,82,0,87,0,98,0,107,0,108,0,116,0,130,0,130,0,130,0,129,0,134,0,127,0,127,0,127,0,118,0,127,0,126,0,126,0,126,0,123,0,118,0,118,0,115,0,105,0,107, 0,100,0,86,0,86,0,89,0,82,0,79,0,75,0,73,0,75,0,76,0,61,0,60,0,43,0,39,0,35,0,42,0,50,0,51,0,57,0,66,0,71,0,73,0,68,0,71,0,73,0,66,0,65,0,53,0,61,0,61,0,60,0,54,0,57,0,57,0,51,0,50,0,40,0,42,0,39,0,35,0,35,0,33,0,29,0,32,0,42,0,40,0,48,0,46,0,55,0,57, 0,69,0,76,0,80,0,79,0,86,0,93,0,101,0,105,0,101,0,108,0,115,0,111,0,108,0,112,0,112,0,111,0,104,0,104,0,86,0,75,0,71,0,64,0,61,0,54,0,40,0,35,0,18,0,12,0,3,0,252,255,238,255,237,255,228,255,219,255,212,255,199,255,202,255,203,255,209,255,216,255,217, 255,220,255,221,255,224,255,228,255,226,255,231,255,239,255,242,255,239,255,242,255,242,255,246,255,230,255,234,255,234,255,228,255,228,255,231,255,237,255,246,255,1,0,3,0,6,0,11,0,3,0,3,0,250,255,252,255,253,255,1,0,3,0,6,0,11,0,12,0,14,0,28,0,24,0, 35,0,32,0,24,0,15,0,21,0,15,0,10,0,12,0,18,0,22,0,18,0,19,0,19,0,10,0,7,0,10,0,15,0,8,0,1,0,12,0,4,0,0,0,252,255,255,255,244,255,246,255,238,255,234,255,227,255,221,255,213,255,208,255,198,255,191,255,188,255,181,255,174,255,177,255,167,255,163,255,162, 255,159,255,162,255,158,255,156,255,145,255,145,255,144,255,142,255,144,255,145,255,141,255,151,255,160,255,170,255,170,255,167,255,167,255,173,255,181,255,187,255,183,255,187,255,178,255,173,255,169,255,169,255,170,255,176,255,183,255,181,255,190,255, 188,255,196,255,203,255,209,255,205,255,205,255,209,255,209,255,214,255,214,255,206,255,210,255,206,255,203,255,209,255,206,255,196,255,199,255,199,255,198,255,183,255,174,255,165,255,156,255,152,255,148,255,144,255,149,255,148,255,152,255,147,255,142, 255,133,255,138,255,138,255,136,255,142,255,144,255,140,255,148,255,142,255,154,255,160,255,170,255,177,255,176,255,183,255,183,255,190,255,194,255,198,255,212,255,217,255,223,255,224,255,238,255,238,255,242,255,248,255,250,255,248,255,253,255,6,0,12, 0,17,0,21,0,21,0,32,0,37,0,43,0,48,0,53,0,58,0,62,0,68,0,75,0,84,0,94,0,100,0,105,0,115,0,112,0,112,0,119,0,120,0,122,0,125,0,120,0,129,0,127,0,123,0,120,0,109,0,114,0,109,0,112,0,109,0,111,0,107,0,102,0,90,0,91,0,83,0,82,0,75,0,69,0,68,0,72,0,75,0,75, 0,80,0,76,0,76,0,64,0,61,0,50,0,55,0,54,0,61,0,61,0,69,0,66,0,66,0,55,0,65,0,65,0,55,0,57,0,55,0,50,0,43,0,43,0,50,0,51,0,47,0,48,0,51,0,54,0,53,0,53,0,54,0,51,0,48,0,43,0,46,0,39,0,37,0,37,0,50,0,54,0,65,0,66,0,72,0,69,0,71,0,79,0,86,0,82,0,89,0,84, 0,94,0,94,0,94,0,93,0,94,0,93,0,96,0,93,0,89,0,91,0,90,0,78,0,69,0,61,0,50,0,37,0,24,0,11,0,6,0,249,255,246,255,230,255,231,255,226,255,212,255,212,255,208,255,198,255,199,255,201,255,203,255,205,255,210,255,216,255,217,255,220,255,216,255,217,255,226, 255,216,255,216,255,232,255,228,255,227,255,231,255,232,255,234,255,230,255,235,255,232,255,230,255,237,255,238,255,244,255,245,255,244,255,248,255,246,255,249,255,1,0,4,0,14,0,6,0,7,0,8,0,8,0,10,0,17,0,21,0,17,0,21,0,11,0,6,0,7,0,3,0,8,0,4,0,7,0,17, 0,19,0,19,0,19,0,15,0,19,0,10,0,6,0,7,0,7,0,6,0,4,0,250,255,241,255,244,255,227,255,224,255,219,255,217,255,210,255,210,255,210,255,206,255,202,255,209,255,210,255,209,255,205,255,199,255,203,255,195,255,192,255,184,255,176,255,170,255,172,255,166,255, 170,255,163,255,158,255,162,255,169,255,172,255,183,255,177,255,180,255,185,255,185,255,185,255,190,255,184,255,185,255,194,255,191,255,184,255,181,255,181,255,174,255,177,255,181,255,185,255,194,255,188,255,201,255,210,255,209,255,210,255,205,255,209, 255,201,255,206,255,212,255,210,255,210,255,209,255,206,255,205,255,196,255,196,255,195,255,201,255,196,255,192,255,196,255,178,255,176,255,177,255,170,255,167,255,166,255,166,255,163,255,165,255,167,255,162,255,159,255,155,255,148,255,142,255,147,255, 147,255,151,255,147,255,158,255,165,255,173,255,173,255,178,255,184,255,190,255,195,255,199,255,201,255,210,255,217,255,220,255,226,255,228,255,235,255,238,255,241,255,249,255,0,0,7,0,8,0,12,0,17,0,18,0,28,0,25,0,24,0,28,0,29,0,35,0,47,0,58,0,58,0,65, 0,76,0,84,0,84,0,91,0,94,0,91,0,96,0,102,0,107,0,107,0,111,0,112,0,122,0,120,0,123,0,126,0,118,0,108,0,101,0,89,0,97,0,91,0,90,0,91,0,97,0,91,0,82,0,73,0,64,0,61,0,65,0,57,0,62,0,64,0,66,0,79,0,80,0,80,0,78,0,75,0,75,0,71,0,64,0,64,0,60,0,62,0,62,0,58, 0,57,0,60,0,60,0,54,0,50,0,46,0,47,0,47,0,37,0,39,0,39,0,39,0,43,0,50,0,47,0,46,0,48,0,54,0,51,0,43,0,40,0,30,0,37,0,42,0,48,0,53,0,61,0,55,0,62,0,66,0,75,0,78,0,80,0,82,0,93,0,96,0,93,0,94,0,93,0,96,0,93,0,89,0,87,0,87,0,87,0,79,0,78,0,80,0,68,0,60, 0,50,0,36,0,26,0,12,0,12,0,3,0,249,255,242,255,239,255,239,255,228,255,226,255,219,255,210,255,208,255,206,255,196,255,194,255,196,255,201,255,208,255,205,255,208,255,205,255,205,255,209,255,209,255,208,255,214,255,221,255,226,255,227,255,234,255,237, 255,241,255,246,255,246,255,242,255,249,255,248,255,252,255,1,0,255,255,0,0,253,255,6,0,3,0,7,0,6,0,0,0,10,0,12,0,17,0,11,0,8,0,4,0,3,0,255,255,252,255,6,0,4,0,7,0,4,0,0,0,6,0,8,0,11,0,14,0,21,0,19,0,15,0,14,0,14,0,10,0,1,0,249,255,245,255,234,255,230, 255,228,255,232,255,220,255,223,255,216,255,217,255,208,255,206,255,209,255,206,255,205,255,205,255,205,255,201,255,199,255,201,255,198,255,201,255,198,255,194,255,190,255,184,255,191,255,191,255,187,255,187,255,187,255,188,255,194,255,192,255,192,255, 192,255,187,255,192,255,191,255,191,255,194,255,192,255,185,255,188,255,191,255,194,255,191,255,187,255,187,255,192,255,191,255,195,255,199,255,202,255,212,255,219,255,214,255,216,255,206,255,206,255,210,255,212,255,209,255,205,255,206,255,203,255,205, 255,198,255,196,255,201,255,198,255,191,255,192,255,191,255,195,255,191,255,187,255,181,255,183,255,184,255,187,255,188,255,190,255,184,255,183,255,173,255,178,255,170,255,167,255,159,255,165,255,165,255,167,255,174,255,181,255,188,255,184,255,198,255, 196,255,195,255,196,255,203,255,205,255,214,255,220,255,223,255,234,255,237,255,235,255,244,255,250,255,255,255,4,0,18,0,12,0,11,0,15,0,25,0,37,0,35,0,39,0,48,0,43,0,43,0,44,0,53,0,57,0,62,0,61,0,68,0,71,0,72,0,76,0,79,0,87,0,90,0,96,0,102,0,97,0,98, 0,101,0,115,0,120,0,125,0,119,0,107,0,105,0,105,0,90,0,87,0,93,0,90,0,94,0,97,0,93,0,80,0,80,0,73,0,65,0,60,0,64,0,61,0,66,0,73,0,76,0,78,0,84,0,82,0,80,0,75,0,73,0,71,0,65,0,65,0,62,0,51,0,48,0,48,0,46,0,44,0,40,0,47,0,44,0,44,0,43,0,50,0,44,0,40,0, 39,0,42,0,42,0,46,0,40,0,40,0,30,0,37,0,36,0,37,0,39,0,48,0,47,0,51,0,55,0,58,0,65,0,66,0,73,0,80,0,84,0,91,0,84,0,94,0,93,0,83,0,83,0,82,0,82,0,75,0,71,0,66,0,60,0,60,0,62,0,50,0,36,0,28,0,18,0,11,0,4,0,1,0,0,0,0,0,253,255,246,255,237,255,228,255,224, 255,220,255,214,255,206,255,198,255,201,255,199,255,201,255,194,255,194,255,196,255,195,255,202,255,196,255,199,255,201,255,208,255,206,255,214,255,221,255,224,255,220,255,221,255,228,255,227,255,234,255,239,255,252,255,249,255,1,0,1,0,252,255,253,255, 249,255,255,255,3,0,253,255,0,0,1,0,7,0,4,0,12,0,7,0,7,0,7,0,7,0,3,0,244,255,253,255,248,255,249,255,245,255,0,0,0,0,3,0,11,0,12,0,12,0,15,0,6,0,3,0,6,0,253,255,249,255,245,255,245,255,244,255,244,255,241,255,234,255,230,255,226,255,216,255,217,255,208, 255,208,255,206,255,216,255,219,255,210,255,216,255,205,255,210,255,213,255,213,255,208,255,206,255,202,255,203,255,196,255,187,255,185,255,190,255,181,255,181,255,192,255,187,255,190,255,195,255,199,255,203,255,202,255,190,255,199,255,203,255,198,255, 194,255,187,255,188,255,187,255,191,255,187,255,188,255,180,255,191,255,184,255,190,255,187,255,195,255,198,255,202,255,202,255,209,255,208,255,210,255,213,255,212,255,212,255,214,255,216,255,206,255,213,255,210,255,208,255,205,255,202,255,198,255,203, 255,199,255,195,255,194,255,191,255,192,255,190,255,183,255,191,255,187,255,187,255,180,255,177,255,173,255,167,255,169,255,166,255,173,255,178,255,180,255,181,255,188,255,194,255,198,255,196,255,203,255,203,255,199,255,199,255,206,255,213,255,213,255, 219,255,230,255,231,255,242,255,242,255,242,255,250,255,252,255,7,0,15,0,19,0,30,0,30,0,26,0,30,0,30,0,30,0,42,0,47,0,55,0,54,0,51,0,61,0,55,0,64,0,62,0,62,0,65,0,76,0,75,0,79,0,82,0,82,0,82,0,86,0,84,0,83,0,89,0,97,0,90,0,101,0,100,0,97,0,101,0,102, 0,97,0,97,0,94,0,84,0,90,0,76,0,72,0,80,0,72,0,76,0,64,0,61,0,60,0,61,0,58,0,75,0,75,0,75,0,79,0,69,0,71,0,66,0,57,0,53,0,48,0,50,0,51,0,46,0,42,0,46,0,53,0,47,0,47,0,42,0,37,0,36,0,32,0,32,0,33,0,35,0,36,0,39,0,29,0,28,0,30,0,32,0,28,0,29,0,32,0,33, 0,35,0,44,0,51,0,55,0,64,0,68,0,69,0,80,0,83,0,86,0,82,0,79,0,87,0,83,0,72,0,62,0,64,0,57,0,58,0,61,0,64,0,66,0,62,0,53,0,44,0,30,0,25,0,21,0,18,0,255,255,255,255,250,255,245,255,245,255,244,255,234,255,231,255,228,255,217,255,213,255,210,255,213,255, 212,255,210,255,214,255,206,255,209,255,209,255,205,255,206,255,206,255,198,255,205,255,206,255,206,255,205,255,212,255,216,255,217,255,227,255,231,255,235,255,242,255,244,255,0,0,3,0,0,0,4,0,6,0,4,0,7,0,255,255,0,0,255,255,6,0,8,0,14,0,15,0,17,0,18, 0,8,0,3,0,0,0,1,0,4,0,7,0,7,0,4,0,3,0,4,0,1,0,250,255,11,0,12,0,10,0,7,0,255,255,3,0,250,255,241,255,234,255,237,255,230,255,238,255,237,255,241,255,237,255,235,255,238,255,228,255,228,255,226,255,219,255,212,255,217,255,221,255,208,255,212,255,212,255, 209,255,201,255,210,255,210,255,206,255,210,255,205,255,203,255,194,255,196,255,190,255,192,255,194,255,196,255,198,255,199,255,196,255,192,255,194,255,190,255,195,255,198,255,188,255,184,255,180,255,181,255,187,255,195,255,196,255,191,255,195,255,195, 255,188,255,188,255,187,255,185,255,194,255,191,255,195,255,196,255,199,255,195,255,201,255,201,255,205,255,201,255,202,255,203,255,213,255,216,255,213,255,212,255,208,255,199,255,198,255,209,255,209,255,209,255,210,255,208,255,206,255,199,255,191,255, 176,255,172,255,172,255,176,255,187,255,178,255,185,255,187,255,184,255,185,255,191,255,195,255,195,255,202,255,203,255,210,255,210,255,208,255,212,255,213,255,219,255,226,255,230,255,231,255,232,255,234,255,238,255,234,255,237,255,245,255,255,255,4, 0,7,0,12,0,12,0,24,0,24,0,26,0,28,0,30,0,33,0,33,0,33,0,39,0,47,0,43,0,48,0,55,0,60,0,61,0,61,0,57,0,57,0,57,0,55,0,57,0,68,0,69,0,71,0,71,0,72,0,78,0,72,0,82,0,83,0,93,0,96,0,93,0,93,0,89,0,87,0,89,0,91,0,82,0,83,0,84,0,78,0,76,0,71,0,69,0,75,0,68,0, 69,0,71,0,68,0,78,0,69,0,65,0,69,0,61,0,64,0,64,0,53,0,57,0,58,0,47,0,54,0,51,0,55,0,46,0,43,0,43,0,43,0,33,0,36,0,32,0,30,0,29,0,29,0,22,0,14,0,14,0,21,0,36,0,39,0,36,0,35,0,40,0,43,0,42,0,42,0,48,0,60,0,48,0,54,0,66,0,55,0,62,0,62,0,62,0,69,0,64,0, 66,0,65,0,64,0,62,0,64,0,64,0,58,0,46,0,51,0,47,0,40,0,35,0,30,0,19,0,15,0,8,0,1,0,255,255,238,255,238,255,238,255,237,255,239,255,235,255,232,255,226,255,228,255,221,255,213,255,219,255,213,255,212,255,208,255,205,255,213,255,212,255,212,255,216,255, 213,255,209,255,206,255,206,255,214,255,216,255,219,255,220,255,228,255,234,255,244,255,246,255,255,255,1,0,1,0,8,0,4,0,4,0,12,0,14,0,12,0,10,0,15,0,22,0,18,0,28,0,24,0,21,0,15,0,18,0,12,0,14,0,17,0,17,0,19,0,19,0,17,0,12,0,4,0,1,0,0,0,249,255,252,255, 1,0,3,0,250,255,248,255,248,255,242,255,237,255,237,255,227,255,230,255,231,255,235,255,235,255,238,255,230,255,235,255,219,255,221,255,227,255,228,255,221,255,210,255,209,255,210,255,210,255,210,255,212,255,216,255,208,255,209,255,195,255,195,255,195, 255,196,255,196,255,191,255,187,255,195,255,198,255,201,255,203,255,206,255,196,255,195,255,205,255,201,255,195,255,194,255,191,255,195,255,192,255,190,255,190,255,187,255,195,255,198,255,196,255,196,255,192,255,192,255,187,255,195,255,195,255,195,255, 202,255,206,255,210,255,208,255,212,255,206,255,205,255,213,255,213,255,217,255,223,255,223,255,223,255,228,255,227,255,220,255,221,255,216,255,217,255,223,255,212,255,203,255,201,255,195,255,196,255,190,255,192,255,191,255,191,255,188,255,192,255,194, 255,201,255,201,255,205,255,206,255,209,255,209,255,216,255,210,255,212,255,217,255,221,255,220,255,226,255,230,255,235,255,241,255,242,255,245,255,250,255,237,255,241,255,250,255,252,255,7,0,11,0,18,0,18,0,29,0,24,0,24,0,33,0,32,0,36,0,35,0,33,0,39, 0,48,0,46,0,43,0,44,0,60,0,64,0,57,0,62,0,68,0,62,0,60,0,64,0,66,0,65,0,61,0,73,0,75,0,78,0,72,0,79,0,75,0,83,0,76,0,83,0,86,0,80,0,86,0,89,0,90,0,90,0,87,0,89,0,84,0,87,0,83,0,82,0,82,0,71,0,65,0,61,0,60,0,54,0,55,0,60,0,60,0,66,0,64,0,69,0,61,0,57, 0,61,0,48,0,42,0,32,0,37,0,36,0,39,0,39,0,39,0,37,0,36,0,36,0,24,0,28,0,25,0,24,0,25,0,22,0,28,0,33,0,28,0,30,0,33,0,33,0,35,0,35,0,37,0,39,0,36,0,33,0,30,0,33,0,33,0,33,0,30,0,33,0,32,0,43,0,40,0,40,0,44,0,44,0,40,0,42,0,33,0,32,0,28,0,28,0,22,0,30, 0,28,0,24,0,15,0,6,0,3,0,253,255,244,255,237,255,226,255,221,255,226,255,226,255,223,255,234,255,226,255,230,255,228,255,220,255,212,255,212,255,212,255,208,255,203,255,203,255,206,255,210,255,213,255,220,255,230,255,224,255,223,255,227,255,226,255,226, 255,226,255,231,255,238,255,237,255,238,255,241,255,245,255,250,255,0,0,250,255,255,255,7,0,11,0,15,0,15,0,15,0,17,0,14,0,15,0,30,0,25,0,24,0,21,0,22,0,24,0,24,0,12,0,18,0,15,0,15,0,7,0,8,0,7,0,0,0,252,255,246,255,245,255,244,255,252,255,248,255,237, 255,239,255,244,255,238,255,237,255,237,255,235,255,230,255,231,255,221,255,228,255,232,255,234,255,232,255,231,255,226,255,228,255,219,255,214,255,216,255,216,255,212,255,212,255,212,255,205,255,210,255,206,255,195,255,199,255,187,255,190,255,190,255, 187,255,188,255,196,255,201,255,205,255,209,255,194,255,190,255,199,255,192,255,191,255,181,255,181,255,183,255,181,255,183,255,185,255,191,255,199,255,195,255,190,255,188,255,185,255,190,255,194,255,192,255,192,255,195,255,202,255,205,255,205,255,206, 255,213,255,212,255,210,255,208,255,209,255,210,255,217,255,213,255,213,255,219,255,221,255,219,255,219,255,217,255,213,255,208,255,203,255,201,255,198,255,196,255,195,255,192,255,194,255,196,255,192,255,192,255,198,255,203,255,205,255,213,255,213,255, 220,255,227,255,234,255,231,255,227,255,235,255,237,255,238,255,245,255,245,255,249,255,248,255,248,255,253,255,255,255,4,0,4,0,3,0,0,0,3,0,8,0,10,0,17,0,15,0,26,0,32,0,33,0,32,0,30,0,29,0,39,0,40,0,37,0,39,0,37,0,50,0,53,0,62,0,60,0,54,0,61,0,65,0,66, 0,66,0,69,0,64,0,60,0,64,0,71,0,76,0,73,0,78,0,83,0,80,0,76,0,78,0,83,0,82,0,79,0,87,0,80,0,76,0,78,0,82,0,86,0,90,0,83,0,76,0,72,0,61,0,61,0,57,0,61,0,53,0,55,0,68,0,72,0,69,0,66,0,66,0,60,0,48,0,51,0,47,0,39,0,42,0,42,0,46,0,47,0,42,0,37,0,35,0,39, 0,32,0,28,0,28,0,19,0,19,0,29,0,28,0,35,0,28,0,32,0,32,0,37,0,36,0,39,0,32,0,35,0,25,0,14,0,18,0,17,0,24,0,24,0,35,0,30,0,29,0,33,0,33,0,30,0,32,0,30,0,24,0,21,0,21,0,21,0,22,0,18,0,14,0,12,0,8,0,14,0,10,0,8,0,8,0,1,0,1,0,250,255,241,255,237,255,234, 255,231,255,234,255,237,255,231,255,221,255,217,255,220,255,223,255,224,255,226,255,228,255,224,255,221,255,219,255,214,255,220,255,220,255,227,255,226,255,228,255,227,255,230,255,228,255,232,255,232,255,234,255,235,255,239,255,245,255,249,255,255,255, 3,0,6,0,11,0,18,0,24,0,19,0,18,0,19,0,26,0,24,0,26,0,24,0,24,0,29,0,36,0,26,0,29,0,25,0,19,0,18,0,18,0,12,0,17,0,11,0,10,0,8,0,12,0,7,0,255,255,246,255,241,255,242,255,244,255,246,255,246,255,245,255,242,255,235,255,228,255,230,255,223,255,226,255,227, 255,230,255,237,255,232,255,230,255,231,255,231,255,232,255,231,255,213,255,212,255,206,255,196,255,196,255,194,255,192,255,195,255,194,255,195,255,192,255,188,255,195,255,195,255,190,255,187,255,183,255,191,255,187,255,190,255,190,255,187,255,190,255, 187,255,188,255,187,255,188,255,190,255,188,255,192,255,194,255,191,255,194,255,190,255,191,255,191,255,192,255,187,255,190,255,190,255,190,255,201,255,203,255,198,255,203,255,206,255,209,255,212,255,210,255,206,255,201,255,209,255,210,255,213,255,217, 255,217,255,214,255,214,255,217,255,219,255,216,255,210,255,208,255,212,255,213,255,208,255,213,255,210,255,209,255,208,255,206,255,209,255,212,255,210,255,214,255,219,255,221,255,220,255,228,255,231,255,238,255,238,255,234,255,239,255,238,255,246,255, 244,255,244,255,250,255,4,0,255,255,253,255,1,0,4,0,3,0,14,0,14,0,18,0,19,0,19,0,29,0,24,0,24,0,21,0,29,0,33,0,39,0,39,0,42,0,46,0,48,0,46,0,47,0,51,0,39,0,50,0,50,0,61,0,57,0,66,0,61,0,62,0,64,0,62,0,61,0,61,0,66,0,68,0,71,0,79,0,79,0,80,0,75,0,76,0, 75,0,73,0,83,0,91,0,86,0,93,0,83,0,73,0,83,0,84,0,80,0,79,0,79,0,73,0,71,0,69,0,68,0,58,0,57,0,54,0,62,0,61,0,58,0,57,0,55,0,57,0,54,0,51,0,48,0,39,0,36,0,32,0,33,0,33,0,33,0,36,0,32,0,37,0,32,0,32,0,29,0,25,0,19,0,21,0,19,0,22,0,22,0,21,0,18,0,24,0, 21,0,21,0,19,0,18,0,17,0,15,0,15,0,11,0,14,0,19,0,10,0,11,0,10,0,15,0,8,0,14,0,11,0,14,0,14,0,11,0,6,0,8,0,10,0,8,0,4,0,6,0,1,0,3,0,1,0,253,255,255,255,249,255,241,255,231,255,232,255,232,255,231,255,230,255,231,255,228,255,230,255,228,255,241,255,232, 255,232,255,230,255,231,255,235,255,242,255,238,255,232,255,227,255,231,255,238,255,239,255,235,255,237,255,235,255,238,255,241,255,244,255,249,255,246,255,253,255,4,0,14,0,14,0,12,0,17,0,14,0,24,0,24,0,22,0,25,0,22,0,25,0,21,0,21,0,24,0,30,0,30,0,30, 0,36,0,24,0,19,0,24,0,21,0,21,0,11,0,12,0,10,0,8,0,8,0,1,0,3,0,1,0,3,0,255,255,249,255,249,255,241,255,238,255,237,255,239,255,238,255,230,255,231,255,230,255,232,255,228,255,234,255,234,255,231,255,235,255,237,255,228,255,224,255,213,255,217,255,210, 255,210,255,214,255,212,255,214,255,206,255,205,255,198,255,198,255,196,255,191,255,184,255,174,255,170,255,173,255,187,255,184,255,180,255,178,255,177,255,178,255,187,255,198,255,194,255,195,255,192,255,195,255,203,255,198,255,192,255,196,255,198,255, 198,255,188,255,198,255,196,255,203,255,206,255,209,255,199,255,198,255,199,255,206,255,214,255,210,255,212,255,213,255,213,255,220,255,217,255,217,255,214,255,214,255,206,255,209,255,208,255,210,255,217,255,216,255,216,255,219,255,220,255,223,255,223, 255,221,255,223,255,220,255,220,255,216,255,219,255,216,255,217,255,219,255,226,255,232,255,228,255,231,255,234,255,244,255,237,255,234,255,235,255,248,255,248,255,250,255,255,255,6,0,0,0,14,0,17,0,12,0,14,0,18,0,15,0,18,0,19,0,19,0,18,0,14,0,22,0,19, 0,26,0,24,0,29,0,33,0,35,0,37,0,37,0,42,0,44,0,43,0,47,0,46,0,50,0,48,0,47,0,51,0,57,0,60,0,57,0,65,0,62,0,65,0,66,0,58,0,61,0,64,0,66,0,68,0,65,0,66,0,68,0,66,0,73,0,76,0,76,0,78,0,76,0,69,0,69,0,78,0,72,0,69,0,66,0,66,0,61,0,61,0,58,0,69,0,57,0,57, 0,53,0,54,0,46,0,46,0,46,0,47,0,48,0,40,0,47,0,42,0,46,0,40,0,39,0,46,0,47,0,46,0,40,0,37,0,33,0,30,0,35,0,25,0,26,0,24,0,12,0,14,0,10,0,12,0,14,0,8,0,14,0,10,0,10,0,12,0,15,0,12,0,11,0,14,0,7,0,11,0,1,0,1,0,0,0,255,255,252,255,8,0,3,0,3,0,4,0,250,255, 252,255,252,255,252,255,249,255,252,255,253,255,252,255,249,255,250,255,252,255,245,255,248,255,248,255,239,255,242,255,238,255,235,255,230,255,235,255,232,255,230,255,228,255,228,255,235,255,226,255,238,255,231,255,227,255,226,255,230,255,230,255,235, 255,230,255,231,255,230,255,239,255,232,255,239,255,237,255,238,255,241,255,238,255,250,255,4,0,3,0,10,0,8,0,7,0,10,0,12,0,17,0,22,0,19,0,19,0,29,0,21,0,26,0,25,0,21,0,24,0,28,0,28,0,33,0,25,0,28,0,24,0,24,0,18,0,14,0,14,0,10,0,6,0,3,0,3,0,3,0,252,255, 250,255,246,255,246,255,248,255,242,255,238,255,241,255,242,255,244,255,242,255,237,255,237,255,230,255,232,255,234,255,228,255,224,255,223,255,226,255,220,255,221,255,226,255,224,255,221,255,219,255,212,255,205,255,208,255,201,255,199,255,198,255,201, 255,192,255,192,255,185,255,188,255,181,255,180,255,177,255,181,255,180,255,184,255,181,255,178,255,195,255,201,255,202,255,195,255,187,255,191,255,199,255,195,255,202,255,203,255,205,255,202,255,208,255,213,255,203,255,210,255,206,255,209,255,209,255, 208,255,203,255,203,255,202,255,212,255,213,255,224,255,227,255,214,255,221,255,219,255,223,255,219,255,212,255,220,255,216,255,219,255,219,255,224,255,228,255,216,255,223,255,220,255,228,255,227,255,230,255,228,255,227,255,224,255,219,255,224,255,223, 255,221,255,226,255,227,255,234,255,239,255,241,255,245,255,249,255,255,255,6,0,255,255,0,0,1,0,253,255,0,0,0,0,4,0,15,0,11,0,7,0,14,0,14,0,24,0,26,0,28,0,18,0,26,0,22,0,21,0,22,0,18,0,22,0,28,0,26,0,25,0,29,0,37,0,37,0,37,0,44,0,40,0,47,0,48,0,55,0, 55,0,55,0,54,0,62,0,62,0,60,0,66,0,68,0,64,0,60,0,65,0,64,0,57,0,60,0,57,0,60,0,64,0,64,0,66,0,73,0,76,0,76,0,75,0,73,0,76,0,75,0,75,0,75,0,73,0,71,0,78,0,72,0,68,0,64,0,64,0,57,0,48,0,47,0,48,0,46,0,46,0,42,0,40,0,42,0,43,0,47,0,47,0,42,0,33,0,30,0, 29,0,32,0,29,0,29,0,29,0,29,0,24,0,28,0,22,0,21,0,19,0,22,0,17,0,19,0,12,0,15,0,10,0,17,0,11,0,7,0,6,0,6,0,6,0,4,0,11,0,10,0,8,0,3,0,255,255,253,255,248,255,249,255,248,255,249,255,246,255,252,255,249,255,245,255,250,255,249,255,246,255,248,255,245,255, 241,255,246,255,248,255,246,255,246,255,252,255,250,255,252,255,252,255,237,255,242,255,235,255,241,255,241,255,239,255,231,255,232,255,234,255,238,255,228,255,231,255,227,255,239,255,242,255,238,255,234,255,230,255,238,255,239,255,234,255,237,255,238, 255,248,255,255,255,248,255,250,255,250,255,3,0,4,0,10,0,3,0,8,0,252,255,7,0,10,0,12,0,11,0,15,0,24,0,19,0,28,0,30,0,32,0,33,0,30,0,25,0,21,0,25,0,25,0,21,0,18,0,18,0,14,0,12,0,21,0,17,0,8,0,7,0,6,0,252,255,250,255,246,255,249,255,252,255,249,255,249, 255,242,255,235,255,238,255,244,255,242,255,241,255,234,255,235,255,232,255,231,255,221,255,214,255,224,255,224,255,223,255,228,255,226,255,227,255,221,255,220,255,226,255,219,255,208,255,206,255,202,255,199,255,195,255,191,255,187,255,187,255,177,255, 180,255,181,255,184,255,185,255,184,255,190,255,195,255,195,255,201,255,203,255,202,255,201,255,199,255,205,255,205,255,209,255,209,255,216,255,216,255,209,255,208,255,214,255,210,255,216,255,214,255,214,255,208,255,210,255,216,255,217,255,221,255,220, 255,223,255,221,255,219,255,221,255,221,255,227,255,214,255,217,255,216,255,216,255,221,255,224,255,226,255,228,255,228,255,226,255,234,255,231,255,220,255,227,255,230,255,230,255,235,255,234,255,235,255,238,255,244,255,238,255,239,255,239,255,245,255, 241,255,246,255,244,255,250,255,253,255,0,0,0,0,253,255,3,0,8,0,6,0,15,0,10,0,12,0,11,0,15,0,11,0,15,0,21,0,24,0,15,0,15,0,18,0,25,0,24,0,30,0,22,0,32,0,28,0,29,0,37,0,36,0,36,0,36,0,35,0,35,0,43,0,43,0,46,0,43,0,43,0,46,0,37,0,44,0,47,0,46,0,48,0,53, 0,53,0,54,0,57,0,53,0,54,0,48,0,53,0,53,0,58,0,51,0,54,0,55,0,55,0,62,0,61,0,61,0,62,0,57,0,55,0,51,0,57,0,50,0,51,0,53,0,51,0,54,0,48,0,48,0,42,0,43,0,46,0,44,0,39,0,32,0,33,0,35,0,32,0,36,0,29,0,28,0,28,0,24,0,28,0,28,0,25,0,24,0,22,0,24,0,17,0,15, 0,17,0,18,0,17,0,8,0,6,0,4,0,4,0,6,0,6,0,12,0,11,0,11,0,6,0,255,255,252,255,246,255,252,255,249,255,239,255,239,255,234,255,244,255,238,255,241,255,242,255,245,255,246,255,244,255,248,255,249,255,245,255,245,255,241,255,242,255,241,255,249,255,250,255, 248,255,248,255,249,255,250,255,246,255,237,255,241,255,239,255,238,255,234,255,238,255,237,255,237,255,238,255,231,255,237,255,231,255,231,255,234,255,235,255,231,255,239,255,244,255,245,255,245,255,246,255,249,255,253,255,249,255,252,255,250,255,1, 0,3,0,252,255,252,255,0,0,1,0,7,0,15,0,15,0,10,0,17,0,17,0,28,0,22,0,30,0,30,0,32,0,37,0,30,0,36,0,30,0,25,0,21,0,18,0,19,0,24,0,24,0,26,0,21,0,25,0,11,0,10,0,8,0,255,255,0,0,253,255,249,255,253,255,246,255,248,255,245,255,237,255,239,255,237,255,234, 255,232,255,239,255,238,255,231,255,234,255,226,255,231,255,231,255,237,255,237,255,234,255,231,255,226,255,210,255,209,255,214,255,213,255,214,255,214,255,217,255,213,255,206,255,201,255,196,255,190,255,183,255,183,255,184,255,187,255,191,255,185,255, 194,255,199,255,202,255,205,255,195,255,202,255,203,255,209,255,208,255,214,255,219,255,223,255,214,255,216,255,210,255,216,255,219,255,219,255,223,255,219,255,223,255,216,255,217,255,220,255,223,255,221,255,221,255,227,255,228,255,217,255,220,255,223, 255,221,255,228,255,226,255,230,255,226,255,232,255,231,255,228,255,238,255,232,255,234,255,238,255,245,255,246,255,249,255,244,255,249,255,245,255,248,255,241,255,245,255,248,255,248,255,249,255,246,255,248,255,246,255,249,255,252,255,245,255,3,0,255, 255,0,0,255,255,1,0,4,0,4,0,4,0,6,0,7,0,6,0,8,0,18,0,21,0,24,0,19,0,26,0,22,0,15,0,22,0,22,0,19,0,25,0,25,0,36,0,26,0,22,0,24,0,30,0,22,0,32,0,30,0,35,0,32,0,39,0,36,0,35,0,39,0,46,0,43,0,43,0,46,0,43,0,46,0,53,0,48,0,48,0,58,0,60,0,50,0,50,0,50,0,55, 0,53,0,44,0,46,0,50,0,60,0,62,0,60,0,60,0,61,0,53,0,48,0,48,0,50,0,48,0,46,0,48,0,50,0,48,0,50,0,47,0,44,0,43,0,39,0,32,0,36,0,26,0,29,0,25,0,21,0,17,0,21,0,18,0,26,0,19,0,18,0,15,0,18,0,17,0,15,0,12,0,11,0,10,0,14,0,15,0,11,0,15,0,19,0,12,0,7,0,4,0, 1,0,8,0,8,0,8,0,3,0,4,0,253,255,250,255,246,255,252,255,248,255,244,255,238,255,238,255,235,255,232,255,235,255,237,255,237,255,231,255,234,255,239,255,238,255,249,255,252,255,252,255,0,0,250,255,255,255,0,0,1,0,252,255,248,255,241,255,238,255,237,255, 235,255,230,255,237,255,237,255,239,255,241,255,237,255,237,255,226,255,234,255,234,255,238,255,238,255,242,255,239,255,241,255,246,255,244,255,244,255,249,255,0,0,248,255,3,0,3,0,7,0,8,0,7,0,10,0,0,0,4,0,8,0,6,0,7,0,12,0,15,0,24,0,19,0,22,0,24,0,22, 0,25,0,26,0,22,0,24,0,25,0,28,0,22,0,18,0,18,0,11,0,15,0,21,0,21,0,18,0,15,0,8,0,12,0,4,0,7,0,10,0,1,0,250,255,246,255,244,255,235,255,235,255,235,255,232,255,239,255,234,255,231,255,239,255,248,255,241,255,241,255,238,255,230,255,227,255,226,255,217, 255,223,255,220,255,223,255,221,255,216,255,212,255,209,255,199,255,199,255,205,255,206,255,202,255,201,255,212,255,205,255,202,255,203,255,205,255,210,255,208,255,206,255,208,255,208,255,209,255,203,255,206,255,213,255,208,255,212,255,214,255,213,255, 217,255,214,255,220,255,213,255,214,255,213,255,219,255,221,255,220,255,223,255,230,255,224,255,224,255,231,255,230,255,226,255,230,255,227,255,234,255,231,255,230,255,235,255,228,255,224,255,227,255,231,255,231,255,232,255,234,255,238,255,241,255,231, 255,231,255,235,255,242,255,237,255,238,255,241,255,248,255,246,255,244,255,250,255,249,255,248,255,248,255,245,255,250,255,253,255,246,255,1,0,0,0,255,255,253,255,248,255,245,255,249,255,250,255,248,255,248,255,255,255,255,255,4,0,1,0,6,0,8,0,8,0,10, 0,10,0,12,0,18,0,25,0,26,0,22,0,30,0,25,0,28,0,24,0,28,0,29,0,33,0,28,0,29,0,32,0,22,0,25,0,33,0,32,0,35,0,37,0,36,0,29,0,28,0,28,0,32,0,37,0,37,0,43,0,43,0,48,0,46,0,44,0,36,0,33,0,32,0,33,0,36,0,46,0,42,0,47,0,48,0,48,0,46,0,36,0,42,0,32,0,37,0,33, 0,29,0,40,0,39,0,39,0,33,0,37,0,36,0,32,0,30,0,28,0,28,0,29,0,29,0,25,0,18,0,14,0,15,0,18,0,17,0,10,0,15,0,8,0,4,0,17,0,12,0,19,0,15,0,11,0,17,0,14,0,19,0,17,0,14,0,7,0,8,0,14,0,10,0,12,0,14,0,11,0,8,0,11,0,0,0,4,0,248,255,245,255,241,255,238,255,239, 255,238,255,237,255,245,255,246,255,238,255,238,255,238,255,241,255,242,255,244,255,250,255,0,0,246,255,1,0,252,255,0,0,253,255,252,255,255,255,255,255,252,255,248,255,250,255,250,255,246,255,250,255,244,255,244,255,245,255,242,255,237,255,234,255,241, 255,239,255,239,255,239,255,239,255,237,255,249,255,248,255,255,255,248,255,249,255,244,255,249,255,252,255,252,255,0,0,3,0,7,0,4,0,7,0,14,0,8,0,14,0,18,0,12,0,15,0,17,0,26,0,19,0,19,0,19,0,24,0,22,0,25,0,32,0,26,0,30,0,24,0,22,0,22,0,19,0,22,0,22,0, 18,0,18,0,25,0,12,0,7,0,10,0,11,0,11,0,7,0,255,255,252,255,253,255,250,255,250,255,245,255,244,255,245,255,244,255,242,255,237,255,241,255,231,255,235,255,230,255,221,255,224,255,223,255,224,255,232,255,227,255,221,255,217,255,219,255,213,255,221,255, 214,255,216,255,210,255,210,255,202,255,202,255,196,255,202,255,209,255,210,255,210,255,217,255,214,255,219,255,212,255,213,255,213,255,214,255,214,255,209,255,209,255,209,255,212,255,210,255,216,255,216,255,216,255,217,255,227,255,226,255,228,255,228, 255,221,255,224,255,227,255,235,255,228,255,238,255,237,255,231,255,237,255,241,255,242,255,235,255,235,255,238,255,244,255,235,255,242,255,242,255,241,255,242,255,239,255,245,255,246,255,250,255,244,255,244,255,245,255,244,255,239,255,242,255,239,255, 245,255,246,255,245,255,252,255,255,255,253,255,0,0,3,0,6,0,8,0,3,0,0,0,252,255,0,0,255,255,255,255,252,255,253,255,253,255,252,255,246,255,248,255,0,0,253,255,0,0,0,0,255,255,253,255,252,255,1,0,8,0,18,0,22,0,22,0,24,0,26,0,18,0,26,0,24,0,19,0,19,0, 18,0,19,0,15,0,18,0,28,0,22,0,22,0,17,0,25,0,30,0,33,0,29,0,24,0,32,0,35,0,35,0,36,0,35,0,33,0,35,0,48,0,37,0,35,0,32,0,39,0,43,0,37,0,40,0,39,0,40,0,39,0,43,0,37,0,30,0,33,0,35,0,33,0,26,0,29,0,30,0,33,0,35,0,32,0,33,0,24,0,19,0,25,0,21,0,17,0,12,0, 4,0,14,0,11,0,10,0,12,0,15,0,11,0,8,0,4,0,3,0,6,0,6,0,10,0,6,0,6,0,10,0,4,0,3,0,8,0,3,0,6,0,1,0,3,0,0,0,253,255,253,255,4,0,7,0,6,0,7,0,4,0,0,0,0,0,248,255,245,255,242,255,235,255,239,255,239,255,238,255,241,255,237,255,232,255,231,255,241,255,234,255, 252,255,252,255,252,255,249,255,248,255,252,255,253,255,0,0,1,0,252,255,3,0,4,0,1,0,250,255,253,255,252,255,250,255,248,255,242,255,246,255,249,255,249,255,248,255,248,255,245,255,248,255,245,255,252,255,244,255,242,255,241,255,245,255,3,0,252,255,3, 0,4,0,0,0,255,255,255,255,0,0,11,0,18,0,17,0,15,0,17,0,17,0,22,0,29,0,22,0,24,0,22,0,26,0,30,0,33,0,35,0,35,0,39,0,32,0,32,0,32,0,25,0,22,0,21,0,17,0,15,0,14,0,11,0,12,0,11,0,7,0,14,0,14,0,8,0,255,255,1,0,1,0,252,255,249,255,248,255,246,255,242,255,238, 255,242,255,242,255,242,255,232,255,235,255,235,255,235,255,234,255,237,255,234,255,239,255,228,255,226,255,227,255,223,255,220,255,221,255,216,255,212,255,212,255,220,255,216,255,223,255,221,255,212,255,210,255,208,255,212,255,213,255,213,255,217,255, 214,255,212,255,210,255,224,255,226,255,224,255,221,255,221,255,219,255,220,255,226,255,214,255,219,255,223,255,226,255,223,255,227,255,220,255,226,255,227,255,232,255,235,255,237,255,235,255,239,255,238,255,242,255,244,255,245,255,248,255,252,255,249, 255,0,0,1,0,1,0,252,255,255,255,250,255,244,255,245,255,248,255,245,255,244,255,246,255,245,255,246,255,246,255,248,255,246,255,249,255,245,255,242,255,245,255,250,255,255,255,252,255,255,255,3,0,252,255,249,255,252,255,4,0,7,0,4,0,0,0,0,0,0,0,253,255, 0,0,253,255,250,255,4,0,255,255,4,0,4,0,1,0,8,0,3,0,0,0,0,0,6,0,3,0,6,0,1,0,17,0,18,0,26,0,21,0,24,0,25,0,24,0,22,0,22,0,22,0,19,0,18,0,22,0,22,0,28,0,25,0,22,0,25,0,25,0,18,0,24,0,21,0,21,0,30,0,30,0,29,0,33,0,42,0,37,0,42,0,37,0,36,0,40,0,39,0,43,0, 37,0,35,0,37,0,24,0,25,0,25,0,25,0,22,0,19,0,25,0,26,0,19,0,17,0,21,0,17,0,15,0,11,0,19,0,19,0,19,0,15,0,17,0,12,0,15,0,15,0,19,0,12,0,6,0,1,0,252,255,0,0,7,0,1,0,3,0,8,0,6,0,7,0,1,0,14,0,14,0,6,0,8,0,8,0,1,0,3,0,255,255,252,255,252,255,250,255,255,255, 250,255,253,255,0,0,6,0,0,0,249,255,255,255,255,255,249,255,250,255,244,255,248,255,245,255,239,255,231,255,232,255,237,255,241,255,244,255,252,255,248,255,245,255,239,255,245,255,241,255,250,255,250,255,1,0,246,255,255,255,255,255,255,255,255,255,253, 255,250,255,255,255,1,0,253,255,250,255,248,255,246,255,246,255,246,255,252,255,249,255,252,255,250,255,255,255,249,255,250,255,250,255,249,255,248,255,252,255,249,255,6,0,3,0,11,0,8,0,15,0,17,0,14,0,17,0,17,0,21,0,26,0,26,0,29,0,29,0,29,0,24,0,19,0, 17,0,19,0,19,0,14,0,21,0,19,0,24,0,19,0,21,0,21,0,19,0,14,0,21,0,6,0,10,0,15,0,6,0,3,0,4,0,3,0,4,0,255,255,253,255,245,255,244,255,244,255,241,255,241,255,238,255,245,255,241,255,238,255,235,255,235,255,232,255,232,255,231,255,232,255,235,255,235,255, 231,255,228,255,221,255,221,255,223,255,223,255,230,255,213,255,213,255,216,255,210,255,208,255,203,255,212,255,212,255,206,255,210,255,212,255,208,255,216,255,210,255,209,255,213,255,206,255,213,255,223,255,221,255,227,255,230,255,232,255,228,255,226, 255,230,255,224,255,226,255,224,255,226,255,230,255,234,255,228,255,230,255,232,255,231,255,227,255,232,255,235,255,239,255,244,255,237,255,252,255,249,255,249,255,250,255,252,255,252,255,0,0,248,255,255,255,252,255,250,255,3,0,1,0,252,255,248,255,246, 255,245,255,245,255,245,255,246,255,242,255,249,255,249,255,245,255,250,255,249,255,252,255,253,255,1,0,1,0,4,0,0,0,3,0,6,0,3,0,8,0,7,0,7,0,250,255,4,0,252,255,246,255,253,255,252,255,3,0,4,0,250,255,249,255,239,255,250,255,249,255,4,0,0,0,11,0,11,0, 15,0,17,0,21,0,14,0,17,0,21,0,21,0,25,0,22,0,22,0,28,0,35,0,25,0,26,0,24,0,26,0,25,0,24,0,18,0,26,0,24,0,26,0,28,0,19,0,29,0,30,0,25,0,26,0,35,0,35,0,28,0,22,0,28,0,28,0,33,0,30,0,30,0,37,0,37,0,39,0,28,0,22,0,19,0,18,0,10,0,12,0,14,0,15,0,11,0,12,0, 14,0,17,0,8,0,8,0,8,0,10,0,19,0,4,0,6,0,8,0,11,0,8,0,6,0,6,0,8,0,1,0,252,255,253,255,1,0,253,255,1,0,1,0,8,0,7,0,7,0,7,0,4,0,6,0,255,255,252,255,253,255,255,255,252,255,250,255,6,0,6,0,0,0,6,0,3,0,0,0,249,255,249,255,255,255,246,255,249,255,250,255,248, 255,244,255,245,255,249,255,244,255,252,255,245,255,244,255,242,255,245,255,237,255,237,255,244,255,244,255,250,255,255,255,1,0,253,255,255,255,255,255,6,0,4,0,4,0,253,255,255,255,0,0,1,0,252,255,241,255,250,255,252,255,255,255,0,0,255,255,1,0,253,255, 244,255,245,255,239,255,244,255,248,255,3,0,8,0,7,0,11,0,3,0,10,0,14,0,14,0,14,0,15,0,22,0,26,0,24,0,26,0,26,0,22,0,26,0,32,0,33,0,33,0,33,0,29,0,30,0,30,0,36,0,29,0,21,0,19,0,18,0,19,0,21,0,17,0,17,0,18,0,12,0,7,0,4,0,1,0,252,255,255,255,4,0,3,0,248, 255,242,255,242,255,238,255,241,255,238,255,239,255,237,255,239,255,241,255,235,255,232,255,231,255,230,255,234,255,231,255,232,255,230,255,234,255,235,255,234,255,227,255,230,255,231,255,220,255,217,255,210,255,213,255,217,255,217,255,219,255,220,255, 219,255,226,255,223,255,212,255,220,255,220,255,220,255,210,255,223,255,230,255,224,255,227,255,231,255,231,255,231,255,234,255,226,255,232,255,237,255,241,255,235,255,232,255,231,255,232,255,237,255,235,255,234,255,0,0 }; const char* cello_wav = (const char*) temp_binary_data_1; //================== demo table data.xml ================== static const unsigned char temp_binary_data_2[] = "\r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" ""; const char* demo_table_data_xml = (const char*) temp_binary_data_2; //================== icons.zip ================== static const unsigned char temp_binary_data_3[] = { 80,75,3,4,20,0,2,0,8,0,128,122,250,52,23,17,234,255,206,13,0,0,219,67,0,0,16,0,0,0,100,111,99,117,109,101,110,116,45,110,101,119,46,115,118,103,237,28,93,115,219,54,242,61,191,66,167,188,212,83,139,196,55,64,37,118,39,77,38,157,222,244,122,51,77,59,247, 216,161,40,72,102,77,145,58,146,178,236,252,250,91,144,20,9,82,144,45,217,106,210,155,169,213,142,169,197,114,23,216,47,236,46,16,191,253,238,126,149,140,238,116,94,196,89,122,53,198,30,26,143,116,26,101,243,56,93,94,141,127,251,245,227,68,141,71,69, 25,166,243,48,201,82,125,53,78,179,241,119,215,175,222,254,99,50,25,189,207,117,88,234,249,104,27,151,55,163,31,211,219,34,10,215,122,244,205,77,89,174,167,190,191,221,110,189,184,1,122,89,190,244,47,70,147,9,188,89,220,45,95,141,70,35,96,155,22,211, 121,116,53,110,240,215,155,60,169,240,230,145,175,19,189,210,105,89,248,216,195,254,184,67,143,58,244,173,158,121,185,46,178,77,30,213,228,163,200,198,204,231,139,14,21,102,178,165,21,18,14,130,192,71,196,39,100,2,24,147,226,33,45,195,251,73,90,188,182, 94,133,9,186,94,37,8,33,31,198,58,204,227,176,166,247,9,136,225,224,100,170,81,155,59,136,126,13,255,183,47,236,0,94,189,214,5,188,169,189,84,151,254,135,95,63,180,131,19,228,205,203,185,69,102,39,249,30,223,158,58,210,112,165,139,117,24,233,194,223, 193,171,247,183,241,188,188,185,26,51,133,60,84,253,172,239,43,248,141,142,151,55,165,99,224,46,214,219,239,179,251,171,49,26,161,17,83,240,95,5,142,231,87,99,16,4,97,65,245,117,55,211,105,107,107,200,163,164,198,108,216,219,67,140,126,59,215,119,58, 233,191,59,207,162,89,88,192,162,252,155,108,165,253,63,226,213,42,140,252,34,143,252,232,174,240,193,74,151,217,36,142,178,116,82,222,128,1,249,64,53,9,103,137,246,195,168,4,186,197,30,49,35,131,171,49,60,108,140,185,77,82,189,245,118,186,107,39,165, 239,215,89,94,78,22,113,162,107,244,30,239,229,226,222,79,51,152,104,226,175,231,32,202,50,223,164,183,62,80,44,252,239,127,252,97,21,175,244,164,212,247,165,183,78,221,100,239,231,107,80,53,97,141,76,157,56,15,3,156,107,64,122,59,215,139,194,32,215, 130,54,223,104,53,0,67,121,56,143,195,228,7,243,11,86,85,35,89,84,163,44,73,116,4,154,12,147,109,248,80,11,197,252,84,150,56,189,201,53,120,206,107,120,214,97,190,163,193,145,64,45,158,225,215,103,193,17,197,237,240,178,1,254,150,198,37,184,200,166,208, 249,39,99,102,255,78,127,43,244,30,214,175,121,152,22,96,211,171,171,241,42,44,243,248,254,155,9,241,164,100,84,5,151,8,62,216,11,68,32,145,184,196,24,224,130,208,203,137,146,196,83,138,179,139,150,88,4,198,39,16,247,36,102,36,232,160,15,198,88,133,39, 152,84,29,116,225,196,93,56,113,115,8,136,88,122,128,169,196,120,228,55,226,237,139,230,104,241,26,177,57,164,122,221,140,191,45,202,108,189,195,5,43,45,31,18,176,53,3,156,0,197,44,159,206,146,48,186,125,83,1,50,144,103,92,62,76,241,155,113,247,70,182, 88,20,26,216,34,11,86,249,32,188,1,156,72,187,128,231,241,66,46,94,216,205,139,117,194,242,251,75,254,122,22,106,41,251,165,22,234,54,208,9,86,1,246,4,253,235,90,168,195,0,33,86,159,221,40,220,6,200,209,97,3,180,176,132,139,160,199,199,167,123,198,23, 51,119,78,158,50,247,103,70,140,71,205,189,217,101,15,41,150,200,47,96,238,196,195,50,112,153,251,61,190,26,83,4,80,46,113,167,187,7,3,21,67,19,190,39,78,92,98,156,32,240,140,225,200,63,33,246,50,206,200,241,166,255,186,78,120,158,25,125,129,23,59,197, 28,157,220,142,54,72,224,38,190,124,252,173,228,121,56,254,194,176,234,5,67,194,60,138,132,12,120,63,24,18,15,73,25,168,94,44,220,71,93,184,80,77,40,228,158,34,152,99,118,132,85,227,38,137,189,68,142,7,162,88,128,193,198,133,71,49,130,160,164,39,240, 141,2,2,216,188,186,56,210,179,78,14,199,152,11,113,138,81,46,170,159,129,81,54,139,112,71,230,221,160,195,108,12,243,211,172,116,161,204,231,4,246,248,9,246,207,52,219,227,226,155,177,25,193,60,14,134,212,183,46,228,129,82,177,109,70,220,35,92,246,236, 114,248,98,228,120,209,172,36,140,151,249,156,142,159,216,230,48,231,146,62,186,163,189,254,136,204,199,25,95,158,220,69,13,249,199,55,204,215,65,104,62,207,82,93,167,162,190,54,206,164,34,140,141,168,21,59,70,71,162,167,163,189,55,31,85,18,57,66,73, 66,252,169,74,18,234,107,41,233,216,128,68,68,112,66,56,10,169,249,156,41,28,17,137,78,10,70,44,50,159,51,5,35,34,241,51,83,186,125,17,242,83,68,184,8,205,231,92,34,20,167,137,112,86,253,156,75,132,226,108,34,196,132,227,175,183,45,2,115,122,218,182, 184,88,112,50,76,222,32,10,97,72,30,144,114,243,231,143,79,64,158,58,1,186,151,61,62,123,95,38,38,157,250,226,233,100,173,243,195,249,36,145,234,196,250,198,236,6,156,123,131,133,86,27,7,225,94,31,186,112,226,46,156,184,38,237,132,4,85,242,94,220,117, 75,4,112,169,244,36,40,20,211,30,89,10,64,129,137,226,189,41,40,200,102,25,195,65,127,186,251,184,145,19,247,112,234,139,160,134,83,68,82,71,234,11,166,64,137,20,242,146,122,148,83,206,13,142,96,130,49,121,113,162,188,247,117,6,41,158,181,101,63,162, 124,179,237,60,105,68,79,139,90,9,79,34,197,120,95,131,148,123,146,10,200,238,123,162,166,20,100,34,122,41,158,19,55,114,226,58,68,109,90,207,186,146,52,98,1,53,114,101,24,83,114,30,41,170,163,164,200,207,34,69,170,60,204,149,24,84,95,210,35,2,138,120, 33,7,6,139,25,237,229,77,145,19,55,114,226,254,21,13,86,28,37,234,186,112,123,169,176,79,139,151,77,22,251,72,136,36,138,158,173,7,4,37,49,9,36,162,238,106,185,30,98,158,192,148,147,0,84,17,64,97,142,212,197,163,169,120,116,108,182,239,44,11,218,18,224, 252,66,165,143,11,149,255,213,133,122,76,149,235,170,134,219,202,183,22,233,91,223,28,42,85,79,237,145,153,57,0,155,155,243,190,238,228,201,156,199,53,36,214,225,82,87,57,8,72,178,78,194,154,129,89,150,207,117,190,27,18,213,79,111,168,73,83,234,51,193, 0,34,165,220,141,183,250,51,196,45,52,228,26,47,110,194,121,182,133,213,14,7,63,103,217,170,235,150,117,54,97,162,57,134,253,84,178,54,190,117,131,192,103,34,60,198,20,98,74,238,141,110,242,220,28,25,38,225,131,134,69,85,191,118,115,46,110,178,237,50, 55,194,89,132,73,43,157,246,85,51,52,153,205,204,137,105,153,111,246,134,219,211,200,77,109,86,205,41,171,133,177,141,83,88,230,164,57,168,85,146,28,64,216,157,216,138,118,39,24,98,192,20,176,16,7,6,141,219,241,61,153,153,197,217,178,174,151,216,152, 204,74,151,225,60,44,195,206,60,118,16,214,30,78,206,23,211,95,62,124,108,211,217,40,154,254,39,203,111,187,204,211,32,132,179,108,3,19,111,147,126,115,222,25,77,141,243,132,229,117,188,2,246,230,140,253,219,251,85,2,86,218,14,244,144,203,135,181,238, 136,214,100,119,247,5,156,119,14,230,209,42,54,47,249,159,202,56,73,126,52,76,172,180,187,33,26,151,137,190,254,89,111,71,31,26,45,85,252,107,112,15,51,50,119,35,178,252,218,154,130,89,234,187,101,155,53,239,211,253,103,120,187,153,141,62,149,26,54,151, 220,69,216,56,229,62,145,10,115,143,159,33,91,175,246,186,89,108,125,98,237,173,54,69,28,221,132,73,226,69,159,171,87,27,172,87,246,60,147,56,210,105,241,180,0,43,182,241,29,184,253,106,149,165,69,37,203,230,221,194,159,61,76,138,208,39,30,242,237,250, 197,111,52,110,91,192,79,67,118,150,17,156,200,169,191,142,181,206,65,171,197,147,235,112,221,38,249,69,175,243,108,190,169,174,14,244,45,225,133,132,63,196,5,196,255,217,198,73,56,215,255,221,196,240,198,179,40,255,156,149,32,146,243,210,124,87,30,158, 236,139,164,160,243,248,174,82,169,177,134,226,188,147,254,116,19,230,250,93,18,223,234,161,233,53,166,214,246,199,186,112,244,214,223,5,171,234,219,114,16,248,146,112,166,147,171,241,167,42,238,141,187,8,215,11,253,86,144,207,54,235,85,54,215,13,194, 46,252,45,95,245,11,247,121,92,172,1,97,26,167,38,165,236,101,30,75,142,72,151,224,149,142,115,57,44,56,230,68,79,72,115,52,199,20,236,100,212,124,103,20,50,9,41,46,25,241,132,226,52,184,232,250,39,57,100,65,157,76,205,38,135,57,228,204,144,97,219,77, 227,251,10,206,3,72,8,136,221,171,110,111,1,73,5,9,183,196,118,15,179,217,144,48,165,129,57,7,231,131,118,130,97,204,176,171,243,221,117,41,24,34,72,96,197,223,216,7,179,11,136,199,83,136,212,223,188,222,63,229,188,168,70,173,51,185,234,107,190,73,244, 52,205,210,207,144,90,188,1,103,203,110,171,175,186,121,174,183,78,64,110,190,26,178,160,181,41,232,44,157,219,192,63,178,56,157,130,133,235,252,205,42,204,111,117,94,83,169,159,39,69,25,230,101,15,178,138,231,189,239,58,157,247,248,86,164,146,24,126, 77,217,14,54,15,97,43,205,115,176,1,27,211,64,235,254,204,20,237,96,221,34,239,226,34,158,197,137,249,82,61,38,250,77,223,144,222,100,119,58,95,36,217,118,55,110,187,193,58,44,111,44,29,180,201,29,88,171,217,0,33,231,136,224,103,160,61,243,18,71,220, 214,55,64,255,53,154,16,12,218,198,74,154,35,97,99,72,10,81,53,122,127,0,110,65,161,108,243,4,135,178,216,13,4,10,18,10,120,198,120,192,0,172,60,206,145,18,35,211,128,145,10,51,113,73,32,167,133,220,76,242,29,140,170,75,165,60,115,16,73,57,188,222,65, 39,224,13,92,18,138,200,104,2,197,187,224,156,81,107,86,226,192,92,63,143,94,96,169,251,215,79,254,182,212,23,91,234,11,117,64,241,223,58,56,82,7,67,39,111,183,130,129,147,59,225,22,212,114,114,23,208,80,144,8,54,50,34,184,229,228,19,28,32,40,124,57, 225,150,151,91,64,219,205,45,176,237,231,88,50,40,102,49,151,61,63,119,78,183,231,231,93,168,235,109,109,7,131,100,215,25,95,214,57,196,178,151,60,236,242,131,189,50,170,201,38,190,15,93,245,225,32,117,120,245,72,194,176,171,170,172,77,61,55,133,155, 135,25,200,69,117,221,181,170,115,92,117,198,172,86,149,185,105,230,9,68,57,39,221,106,219,45,30,121,1,65,44,232,154,46,205,6,79,153,167,234,126,247,171,193,246,142,33,213,232,154,12,205,140,251,151,90,14,185,103,213,215,28,250,103,123,106,113,208,79, 15,80,18,23,3,231,109,41,29,229,196,61,168,237,134,67,50,182,227,13,199,246,87,241,178,168,240,136,27,207,146,12,34,223,193,72,218,55,15,115,83,187,49,15,235,154,67,254,224,4,155,155,54,30,87,52,24,152,13,120,176,16,136,211,125,179,161,202,3,100,170, 246,205,198,92,36,227,74,73,135,217,8,235,246,230,97,179,169,196,112,30,11,17,234,111,11,177,45,100,217,171,60,136,57,126,119,84,30,213,99,18,150,230,100,163,238,178,95,78,168,39,3,21,80,83,118,88,85,198,178,139,157,229,51,27,159,129,144,72,97,120,32, 140,5,210,58,58,105,77,164,50,138,221,121,239,169,118,241,186,175,11,151,14,7,251,194,18,51,134,236,6,131,187,229,124,124,107,120,216,221,70,253,145,182,111,139,130,160,55,178,107,126,15,230,216,239,169,15,70,14,18,115,156,123,48,235,110,164,227,204, 185,119,62,204,24,27,247,135,142,185,41,115,232,182,204,211,220,196,211,220,152,52,159,3,220,112,191,209,224,188,32,227,200,61,187,204,0,230,160,122,180,171,12,137,80,143,17,85,157,72,97,168,189,37,60,65,114,98,67,185,135,24,5,40,193,158,218,193,204, 93,88,2,48,40,63,20,231,125,24,84,48,210,83,10,15,48,133,71,20,233,40,14,97,29,111,27,10,238,16,8,131,105,40,214,48,20,120,224,85,125,222,45,236,189,61,203,22,106,175,198,80,28,194,118,188,123,9,149,165,161,54,177,238,171,224,92,94,212,156,103,32,114, 154,23,73,167,23,185,137,157,230,69,28,29,239,69,156,124,73,47,226,236,235,123,17,23,143,121,145,104,140,169,239,69,162,113,34,219,139,170,11,229,21,172,179,228,14,102,123,145,133,217,250,70,71,209,130,89,188,45,104,227,68,182,23,241,198,53,108,222,29, 204,246,162,14,106,173,166,113,34,228,92,247,41,94,212,148,29,14,137,183,242,230,92,162,97,89,23,120,65,0,133,14,10,46,9,60,66,89,68,4,76,186,131,82,83,98,115,78,17,192,4,145,80,78,96,3,147,18,68,194,1,6,69,22,60,217,176,247,35,229,73,130,20,83,212,130, 170,230,108,158,52,20,41,194,22,204,230,221,131,178,64,129,167,85,20,49,146,10,25,24,166,152,7,210,226,221,193,222,91,179,180,49,173,53,178,32,192,132,56,215,237,234,246,28,170,85,204,209,250,197,113,189,3,103,90,113,176,195,97,107,75,30,214,22,134,250, 87,72,44,251,218,2,40,196,37,170,108,109,129,89,18,5,97,204,214,86,7,179,181,213,65,59,29,116,20,123,176,150,119,15,138,48,5,6,150,182,192,77,234,28,209,230,221,194,108,109,217,152,214,106,128,34,228,125,206,117,159,168,45,126,14,109,181,78,214,83,154, 187,51,208,43,113,106,141,10,217,133,248,74,159,176,135,114,100,250,21,151,28,12,147,17,41,196,232,39,11,202,32,40,32,164,172,203,80,246,66,247,107,33,112,55,190,151,244,234,59,13,19,155,31,72,122,235,210,7,234,124,5,193,139,226,189,22,215,108,83,150, 7,58,92,71,148,62,214,229,67,44,57,163,138,91,55,9,159,41,67,54,144,33,105,238,78,130,12,17,65,28,115,102,100,216,66,205,57,8,85,196,234,110,156,65,134,237,5,211,99,202,199,115,137,144,32,48,125,69,113,123,59,99,233,60,165,58,208,60,106,27,81,236,64, 35,42,213,219,99,250,76,78,173,25,141,93,141,195,60,122,94,231,135,200,103,244,125,28,253,89,200,229,204,59,228,40,13,252,95,214,239,251,30,65,56,182,250,109,59,133,184,239,186,118,195,206,139,172,237,176,105,16,117,87,90,247,135,31,92,195,149,55,138, 160,1,143,90,242,163,119,163,22,217,122,130,103,248,140,24,130,61,160,174,61,142,123,193,197,225,243,35,103,164,224,207,138,146,128,56,59,13,205,144,249,87,94,12,41,101,254,225,46,100,136,28,11,235,146,213,145,127,6,224,30,140,39,76,127,7,77,251,230, 239,15,20,126,26,110,202,56,217,20,126,1,85,75,64,125,200,172,163,219,223,193,203,38,144,81,238,254,24,192,232,224,31,4,160,20,210,73,2,123,239,65,188,135,1,158,21,22,222,154,203,49,215,175,254,7,80,75,3,4,20,0,0,0,8,0,96,128,249,52,242,213,5,70,140, 20,0,0,25,120,0,0,17,0,0,0,100,111,99,117,109,101,110,116,45,111,112,101,110,46,115,118,103,237,93,109,115,219,56,146,254,158,95,161,83,190,236,212,74,20,222,95,156,56,91,83,158,154,171,185,202,237,86,237,204,212,125,188,162,37,218,214,70,150,116,164, 20,219,243,235,239,105,232,133,160,8,217,146,237,100,61,113,172,157,138,244,16,4,192,70,119,227,105,160,193,125,255,183,219,235,73,231,115,81,86,227,217,244,180,203,51,214,237,20,211,225,108,52,158,94,158,118,127,255,237,231,190,235,118,170,69,62,29, 229,147,217,180,56,237,78,103,221,191,125,120,243,254,63,250,253,206,89,89,228,139,98,212,185,25,47,174,58,191,76,63,85,195,124,94,116,254,114,181,88,204,79,6,131,155,155,155,108,188,6,179,89,121,57,248,161,211,239,227,206,234,243,229,155,78,167,131, 102,167,213,201,104,120,218,93,151,159,47,203,73,40,55,26,14,138,73,113,93,76,23,213,128,103,124,208,173,139,15,235,226,55,197,121,86,22,213,108,89,14,87,213,15,135,113,201,114,116,81,23,69,79,110,100,40,196,189,247,3,38,6,66,244,81,162,95,221,77,23, 249,109,127,90,189,141,110,69,7,83,183,10,198,216,0,215,234,146,135,149,58,185,157,64,12,123,59,19,174,198,173,67,244,115,252,183,189,97,3,100,171,103,189,192,157,69,54,45,22,131,159,126,251,105,123,177,207,178,209,98,20,85,179,145,124,163,221,198,112, 76,243,235,162,154,231,195,162,26,108,240,112,255,205,120,180,184,58,237,42,151,177,240,55,191,13,240,85,49,190,188,90,180,241,241,232,180,139,231,245,54,252,218,244,231,100,171,81,44,147,98,85,112,221,72,124,73,201,191,142,138,207,197,164,121,239,104, 54,60,207,43,116,125,112,53,187,46,6,255,26,95,95,231,195,65,85,14,7,195,207,213,0,186,120,57,235,143,135,179,105,127,113,5,53,25,160,214,73,126,62,41,6,249,112,129,122,171,86,101,244,164,167,93,124,89,146,82,245,103,243,98,154,109,134,104,219,171,226, 118,62,43,23,253,139,241,164,88,149,111,52,126,59,190,30,231,211,255,205,203,197,128,90,174,32,189,229,98,60,89,86,131,106,58,187,25,45,167,144,226,229,20,55,244,47,170,254,104,92,22,195,197,172,188,235,231,195,97,49,95,100,243,105,186,177,219,209,28, 227,236,217,90,162,201,50,119,59,101,62,160,208,251,81,113,81,81,225,149,248,233,151,12,23,112,169,204,71,227,124,242,159,244,15,30,118,85,40,170,117,56,155,76,208,185,211,110,62,185,201,239,86,178,162,191,160,134,39,87,101,1,179,121,139,239,69,94,110, 234,208,204,176,109,57,106,175,217,132,102,146,111,47,95,174,193,223,167,227,5,236,99,89,21,229,175,164,99,255,152,254,94,21,173,82,191,149,249,180,130,66,95,159,118,175,243,69,57,190,253,75,95,100,214,42,233,124,143,225,195,51,111,188,101,166,199,57, 112,35,100,175,239,172,200,156,211,234,135,109,101,195,219,211,174,97,58,179,92,9,95,163,119,164,170,38,51,202,186,26,189,72,150,189,72,150,45,225,13,185,205,80,210,153,110,103,176,22,111,83,52,7,139,151,196,150,144,234,135,245,245,247,213,98,54,223, 148,133,242,46,238,38,208,64,2,251,168,113,86,158,156,79,242,225,167,119,1,152,65,158,227,197,221,9,127,215,173,239,152,93,92,84,5,154,101,17,22,44,19,119,160,37,177,125,128,199,181,197,82,109,241,116,91,170,22,214,160,249,200,255,62,13,141,6,251,169, 26,154,86,208,62,119,158,103,70,190,92,13,77,40,160,114,79,82,192,164,82,164,21,80,179,253,10,24,149,50,169,10,51,221,61,222,50,190,154,186,107,241,144,186,63,210,99,220,171,238,24,185,251,6,86,216,175,160,238,34,227,214,167,212,253,150,159,118,37,3, 170,45,175,199,238,142,80,179,171,194,183,34,89,86,144,17,248,140,20,199,30,175,217,194,248,125,138,189,25,56,97,89,82,215,88,52,19,239,83,152,183,185,164,207,142,206,109,110,189,71,247,234,198,121,74,191,14,107,92,13,233,243,96,227,95,205,247,146,176, 247,187,94,39,164,122,54,93,100,80,63,39,172,236,109,198,169,254,2,9,40,99,156,233,41,149,73,163,52,252,48,60,35,99,150,219,166,31,118,153,19,74,113,207,26,126,88,102,86,27,46,156,110,248,225,118,217,139,100,89,248,97,105,129,114,203,229,35,180,85,63, 172,173,230,9,218,122,145,211,231,120,109,77,41,190,163,207,33,52,164,225,180,55,143,1,101,112,7,88,135,73,90,199,253,15,57,28,209,103,239,52,240,213,92,51,13,230,254,161,134,0,76,195,77,10,157,57,219,244,145,156,101,70,232,134,131,68,41,209,116,142, 146,53,238,123,170,97,241,150,61,69,134,133,65,115,112,249,91,164,111,225,239,153,246,48,172,231,103,197,92,58,37,14,103,37,111,215,90,252,56,98,76,141,169,163,12,32,213,220,193,100,129,154,51,143,84,201,150,160,188,53,230,8,57,25,238,213,240,252,145, 114,66,91,247,216,109,162,53,43,252,197,240,226,128,214,82,98,242,214,178,231,146,18,63,134,226,190,189,8,127,59,163,155,113,169,152,96,102,143,159,107,187,224,237,112,43,127,148,208,210,173,51,205,181,50,210,167,197,119,95,243,250,217,164,40,165,126, 162,20,163,249,230,56,33,74,105,158,67,136,251,27,191,79,132,82,218,103,83,68,34,189,71,76,180,140,62,143,117,107,214,223,19,110,61,101,90,79,122,53,235,249,179,73,9,2,127,234,88,91,134,185,201,89,119,180,185,222,199,77,190,180,166,113,233,191,62,87, 33,179,190,103,44,244,51,240,11,90,154,45,64,47,148,224,90,218,30,141,142,84,102,39,86,228,62,227,220,224,127,13,30,36,92,230,149,97,170,214,57,162,66,40,171,16,113,136,58,168,32,58,164,17,152,114,192,15,179,239,39,136,139,223,27,116,243,104,241,226, 233,116,76,75,45,188,79,208,49,144,67,205,165,244,61,153,41,205,21,119,61,145,41,229,112,105,71,166,42,115,222,75,235,155,50,69,72,164,189,81,178,73,47,17,227,99,146,81,166,33,83,197,51,39,141,243,250,139,202,84,218,123,101,234,158,81,166,202,64,67,34, 30,107,50,207,224,41,93,209,23,36,86,60,172,73,72,188,41,86,16,113,163,225,240,84,67,172,220,101,86,104,103,154,98,117,153,224,66,8,197,154,170,42,136,222,59,29,249,204,231,143,201,121,188,196,210,14,202,185,126,190,229,80,120,53,168,190,212,177,228, 56,147,156,233,94,112,120,154,139,40,116,112,8,206,189,210,36,243,102,88,46,12,238,50,214,214,234,16,194,114,151,113,175,121,36,238,139,100,217,139,100,89,10,203,5,34,39,208,87,255,37,149,56,80,241,251,38,53,110,196,215,9,213,152,16,28,46,1,58,198,52, 228,220,235,243,76,10,201,132,105,106,177,160,165,59,18,203,206,226,92,134,121,211,123,191,235,28,152,209,50,218,226,9,241,39,181,192,148,255,162,114,93,197,130,247,199,138,110,247,193,196,206,138,163,109,69,211,152,66,108,51,154,38,103,121,112,52,189, 122,224,247,3,218,116,11,223,182,59,141,180,109,56,250,60,46,110,222,108,59,76,219,152,235,122,231,249,101,17,168,3,158,115,197,29,214,23,206,103,229,168,40,55,151,76,248,107,92,90,179,139,213,230,252,155,166,88,169,214,237,117,150,190,94,93,229,163, 217,13,164,179,123,241,143,217,236,186,38,117,245,80,221,6,107,18,6,2,182,173,139,119,65,168,210,57,201,218,119,46,203,146,118,88,39,249,93,129,135,9,255,108,156,98,117,53,187,185,44,73,40,23,249,100,43,149,237,173,116,169,127,126,62,67,219,139,114,217, 186,188,221,188,93,174,6,101,189,249,28,149,184,25,79,241,148,253,245,238,53,175,215,192,119,75,108,54,178,241,0,123,74,160,15,202,155,61,23,105,28,182,254,115,123,145,158,46,150,245,234,25,215,186,114,93,44,242,81,190,200,107,189,216,32,106,187,107, 59,186,56,249,231,79,63,111,233,231,112,120,242,63,179,242,83,205,20,169,64,126,62,91,162,227,91,138,76,27,193,195,19,114,15,249,226,195,248,26,205,83,230,193,95,111,175,39,80,207,237,133,70,225,197,221,188,168,43,93,85,187,201,162,72,102,98,140,134, 215,99,186,105,240,235,98,60,153,252,66,141,68,52,121,93,233,120,49,41,62,252,60,155,64,89,59,191,12,103,211,206,143,97,223,59,244,98,117,177,81,30,79,94,124,16,152,27,250,140,247,37,15,197,2,214,40,53,164,236,146,89,249,33,234,46,137,229,199,203,45, 39,110,247,225,191,242,79,203,243,206,175,139,2,142,162,76,53,79,150,219,174,36,148,108,181,71,173,77,198,195,98,90,61,44,178,112,243,248,51,44,252,250,122,54,173,130,244,214,247,86,131,243,187,126,149,15,224,50,7,45,209,173,170,249,176,174,101,149,108, 144,93,47,171,241,240,42,159,76,178,225,31,161,107,235,82,77,33,22,213,176,28,207,41,227,225,195,143,67,106,155,210,116,22,69,167,223,185,185,42,166,29,74,100,168,58,121,89,116,206,33,141,203,206,168,204,47,47,139,81,103,49,203,86,2,143,238,111,84,60, 95,158,79,198,213,85,113,156,228,255,62,251,92,76,38,189,206,47,211,97,118,164,224,91,13,134,146,164,254,177,57,124,220,29,137,200,34,142,28,132,230,16,207,139,18,42,94,61,56,196,169,132,163,127,22,243,114,54,90,134,188,147,230,216,62,177,226,159,198, 21,166,251,243,101,178,226,178,248,191,229,24,119,60,170,230,191,207,22,16,201,243,214,249,227,98,127,103,159,36,133,162,28,127,14,67,74,218,80,61,111,167,127,189,130,113,252,56,25,127,138,133,17,84,111,173,106,155,112,60,242,205,239,7,27,207,29,126, 93,214,30,61,204,117,173,9,113,146,159,23,147,211,238,202,53,182,167,188,217,114,126,61,27,21,235,187,55,211,197,101,186,146,127,204,139,105,119,167,65,249,96,157,235,135,152,231,139,171,141,148,106,194,130,114,228,219,49,159,14,195,95,133,63,252,179, 101,66,235,101,143,230,226,55,28,203,228,4,51,196,95,222,182,162,138,31,194,197,104,13,41,252,44,151,147,2,109,77,255,0,149,121,7,181,158,125,42,78,222,234,156,62,235,159,171,89,27,229,215,63,137,231,225,113,78,240,48,211,81,12,254,107,54,158,174,209, 235,188,252,84,148,84,111,177,254,222,135,255,43,23,13,228,122,60,106,252,46,166,235,223,235,58,161,153,69,57,25,227,159,19,181,193,70,57,38,243,176,102,115,194,54,88,253,68,159,199,213,248,124,60,161,31,225,235,164,120,55,26,87,115,8,251,100,60,165, 46,190,131,35,44,47,38,179,155,205,245,6,131,165,113,16,50,34,155,192,254,187,163,64,82,25,19,78,247,192,187,16,224,35,164,234,156,17,106,56,194,82,160,62,99,150,43,219,209,25,231,86,33,238,39,72,121,238,133,2,166,37,88,191,116,17,246,177,3,54,111,140, 149,202,68,232,89,7,204,141,57,206,121,140,2,83,90,50,235,234,102,8,226,92,216,168,59,168,81,81,82,10,98,129,30,167,5,10,110,133,163,26,209,75,124,83,154,80,78,55,41,194,4,46,27,219,163,205,44,132,216,162,35,101,230,152,84,222,213,208,199,142,0,161,117, 12,223,107,240,172,35,88,166,156,215,210,212,32,24,187,179,12,145,9,65,120,86,97,28,97,8,1,17,239,244,64,231,37,83,78,121,212,136,72,92,91,37,184,71,116,175,132,50,204,145,32,129,42,4,43,232,143,206,60,183,82,50,71,24,40,34,67,200,175,17,251,59,7,174, 219,225,54,68,139,144,89,141,161,151,136,161,132,226,206,69,40,234,204,208,53,163,188,136,239,135,88,140,113,214,244,40,66,245,161,155,232,15,186,166,9,210,194,163,195,168,49,53,220,127,116,234,80,170,97,172,43,19,140,182,35,184,52,248,200,119,9,171, 220,108,188,28,108,133,219,253,172,216,10,215,241,164,52,47,198,28,243,178,132,125,197,37,191,152,145,6,123,148,153,148,206,48,168,17,84,2,193,175,114,118,101,0,202,57,101,120,141,182,108,27,193,62,175,151,129,210,158,246,165,13,180,80,175,118,160,53, 6,26,214,39,96,137,241,64,3,166,77,20,91,163,169,129,142,146,50,142,26,232,116,217,68,3,210,239,237,173,78,246,86,239,246,246,187,82,125,29,165,218,14,244,229,142,228,155,55,54,6,249,82,51,81,47,111,45,18,153,119,28,115,131,22,97,125,122,149,124,199, 164,83,156,126,43,129,9,90,211,148,111,50,47,165,21,63,212,251,102,148,123,94,19,226,187,211,110,159,107,154,73,141,139,115,114,110,3,174,61,102,60,33,35,124,155,230,111,93,38,181,229,46,186,182,89,91,145,32,10,38,222,61,90,47,50,163,97,133,233,181,157, 169,83,235,223,106,43,221,233,119,113,238,101,205,40,219,137,140,135,83,202,120,128,143,226,147,65,111,190,25,21,220,241,54,251,233,254,206,232,209,77,154,233,120,188,131,211,233,11,162,90,156,88,205,74,145,192,227,136,0,165,241,8,149,194,130,220,48, 197,211,32,106,176,38,179,74,105,175,0,131,184,105,16,170,14,23,58,179,14,60,179,39,2,19,100,86,111,48,168,187,3,147,211,74,200,192,234,182,104,95,73,208,44,90,232,238,244,65,52,141,214,74,70,189,50,123,250,10,202,245,120,77,109,103,152,127,215,212,39, 107,234,19,199,64,242,239,99,112,36,11,218,24,249,118,42,216,49,242,36,30,161,145,145,167,64,170,193,50,204,100,130,162,216,173,145,247,185,103,8,130,136,201,212,86,30,129,177,153,71,112,108,231,8,131,53,162,76,109,27,118,158,236,110,195,206,107,87,215, 152,218,246,58,201,58,43,227,242,200,165,148,97,88,75,105,19,59,33,29,107,242,58,68,139,150,91,205,29,197,131,136,52,141,165,88,221,100,130,246,81,109,64,65,205,24,227,192,24,138,34,110,37,204,75,237,32,76,77,115,187,84,171,114,78,10,165,36,88,97,10, 61,35,6,105,181,166,60,233,186,78,157,33,228,183,214,135,146,154,118,16,77,88,103,48,24,128,128,1,177,206,135,72,24,131,231,48,2,8,102,93,112,220,33,96,207,152,198,176,114,66,181,84,8,251,25,48,161,164,210,1,147,10,33,49,231,192,180,150,22,209,112,132, 125,164,152,91,50,169,37,7,42,224,184,133,38,173,1,234,64,100,185,14,168,32,46,28,34,118,37,188,161,157,123,68,240,22,178,33,140,59,9,86,12,204,90,97,164,229,171,120,191,133,98,2,64,60,110,153,234,249,112,92,65,106,214,9,201,36,136,205,21,173,43,40,203, 172,18,171,30,161,114,208,165,158,13,61,134,7,90,245,200,160,81,71,40,195,45,120,188,176,94,96,33,49,5,12,100,221,75,131,185,138,210,10,72,96,17,6,142,142,126,112,8,89,71,232,25,80,4,147,10,126,43,66,37,85,169,140,167,146,36,37,60,59,133,163,12,223,52, 97,6,156,76,57,170,19,146,113,232,136,17,209,184,125,76,234,82,100,0,15,172,232,181,242,47,118,29,234,54,193,233,24,199,138,46,73,197,185,222,117,176,231,203,197,98,143,127,77,120,200,109,211,9,159,184,123,173,221,223,167,57,236,123,60,236,249,100,134, 73,105,127,68,240,184,208,79,237,172,16,10,168,0,220,154,36,85,217,70,126,116,194,193,57,90,215,106,133,169,95,63,240,99,153,15,127,78,188,202,192,239,113,195,204,91,195,108,181,149,52,204,97,141,117,19,225,195,81,120,35,184,170,209,23,16,225,243,215, 57,208,219,8,63,125,80,219,170,204,133,213,211,238,190,114,183,7,150,59,254,36,250,178,42,188,76,28,67,223,158,63,167,191,246,66,3,6,84,42,133,89,172,145,194,165,180,8,41,69,171,75,125,204,144,12,44,130,242,13,141,228,158,71,57,156,97,49,3,92,129,239, 42,229,74,231,214,137,178,13,157,99,153,118,68,110,156,59,88,249,146,83,65,195,9,119,143,9,128,43,250,36,120,33,158,67,236,178,99,197,17,104,106,171,36,184,3,104,166,116,134,120,15,161,180,79,225,123,152,126,17,165,64,82,132,97,84,189,20,192,104,83,198, 49,67,152,52,224,178,44,96,2,204,132,17,151,2,43,163,196,170,128,10,230,16,234,16,151,66,85,187,40,48,48,33,207,13,48,112,8,144,58,190,239,110,159,145,79,81,10,168,50,138,41,3,238,64,71,8,208,62,98,231,204,91,207,113,153,48,239,188,16,150,158,135,58, 164,60,177,145,4,186,126,242,192,154,64,165,133,119,50,41,141,84,40,29,241,129,71,177,232,148,191,140,150,170,214,11,245,28,143,230,53,60,163,110,248,75,144,41,40,112,141,190,128,137,209,191,206,21,209,239,123,28,255,246,61,14,142,72,205,210,158,175, 108,236,26,32,236,19,34,66,147,6,23,57,245,47,178,199,193,119,246,56,48,45,26,204,13,20,161,242,198,214,155,71,192,15,94,36,95,16,3,122,93,59,164,47,204,162,95,151,240,119,211,69,36,73,217,246,48,227,199,54,226,152,112,42,66,147,155,138,250,11,91,116, 116,164,99,221,91,101,132,215,26,253,106,110,166,27,41,184,49,53,250,221,162,95,169,69,191,38,153,239,152,134,208,218,88,58,197,165,155,121,38,134,89,47,107,52,185,68,244,200,60,147,195,13,89,238,246,150,33,140,225,30,189,149,141,222,130,129,115,198, 107,244,5,24,242,235,226,123,47,197,144,95,165,240,119,2,82,167,133,163,247,37,137,38,125,229,220,41,81,131,73,42,108,15,54,232,111,121,17,106,179,250,116,196,226,19,119,90,30,191,248,228,31,181,246,244,5,214,156,208,125,253,101,214,156,182,75,78,209, 138,83,114,193,233,192,245,166,111,99,185,233,59,189,252,250,142,81,100,158,54,148,185,236,113,185,179,82,199,44,20,149,223,187,10,113,184,103,124,228,186,162,222,117,227,38,156,174,247,61,238,155,189,85,86,112,93,163,47,128,234,188,210,125,152,151,97, 209,175,152,234,136,76,11,37,40,27,100,99,12,235,124,14,71,111,109,148,53,154,12,94,30,105,209,187,3,45,189,0,87,80,58,53,208,169,140,6,58,50,222,206,105,120,82,154,88,50,139,225,207,53,222,123,114,24,154,46,81,81,238,80,143,131,202,138,144,210,18,78, 7,217,144,137,18,114,140,44,165,180,108,191,134,98,155,210,141,31,103,205,159,168,55,254,30,181,17,205,242,181,230,56,245,80,214,61,72,214,65,202,195,15,212,25,122,105,223,225,121,133,137,196,68,122,7,230,15,143,81,162,63,87,170,225,33,74,164,100,24, 96,145,41,175,20,147,148,146,6,200,217,48,163,74,75,171,147,97,65,193,211,187,107,40,90,98,66,56,235,233,64,26,72,165,34,157,227,116,175,9,57,89,41,52,188,80,177,39,69,38,233,29,133,174,245,27,13,134,217,91,88,79,217,198,180,2,19,78,174,25,3,63,210,193, 55,202,73,204,232,96,151,166,99,116,173,14,39,148,18,227,251,160,78,30,232,208,146,58,25,70,231,224,217,42,231,244,249,174,110,164,110,92,103,138,134,207,32,88,18,10,74,69,126,203,215,63,19,67,105,31,55,49,253,73,227,240,125,30,180,10,110,52,145,187, 170,24,111,138,88,103,22,225,153,209,42,156,30,53,218,123,27,242,76,157,19,140,217,128,66,166,48,77,202,93,117,206,33,120,15,103,79,241,13,46,222,96,2,247,130,131,45,212,24,13,81,102,153,53,54,2,207,8,196,189,154,210,29,183,168,98,25,252,3,66,71,194, 224,10,16,26,2,82,92,59,181,106,89,40,29,114,105,129,194,61,8,181,154,158,164,100,50,4,155,12,205,32,216,164,83,152,20,37,7,76,50,68,152,161,156,208,156,51,187,114,81,86,27,171,209,52,38,43,169,141,178,29,101,137,100,82,39,57,69,186,74,32,208,77,97,103, 132,210,105,88,230,9,181,134,210,59,9,99,156,73,180,67,39,86,53,23,30,152,201,108,244,243,35,57,35,10,191,181,139,208,51,66,33,77,220,27,161,28,140,87,224,153,36,117,208,104,60,128,130,104,61,151,82,123,65,135,216,156,116,146,219,85,90,176,197,61,82, 71,195,245,49,57,136,237,164,209,99,39,206,240,226,163,35,142,132,75,101,116,174,154,158,107,127,86,225,183,75,187,158,18,203,194,129,249,150,15,132,198,18,33,119,177,23,212,116,16,92,137,26,60,106,180,191,79,73,79,29,207,205,128,201,221,148,38,46,233, 141,179,202,154,158,160,119,207,58,19,142,81,112,16,24,3,47,226,105,79,8,54,47,65,101,120,248,63,156,224,68,79,60,37,115,56,23,60,129,226,136,113,66,90,7,29,154,96,171,163,82,152,95,148,183,156,136,144,87,58,220,77,219,174,202,48,248,7,182,126,133,96, 71,36,176,64,179,90,168,34,226,228,66,219,32,79,96,107,140,119,20,122,6,215,163,37,245,156,129,47,169,144,164,156,120,158,182,111,217,159,130,222,226,222,137,20,244,226,115,1,179,216,68,221,169,160,109,115,211,252,246,8,189,219,29,251,214,11,60,95,38, 217,219,187,46,244,237,154,216,174,199,227,74,130,125,208,177,14,120,183,53,165,0,21,192,36,184,193,18,158,211,61,50,215,105,239,145,138,196,88,62,172,188,73,35,208,187,241,227,126,125,190,239,212,90,98,156,94,232,169,138,61,43,80,239,162,61,28,33,44, 125,118,2,76,48,79,16,79,39,41,200,51,8,253,24,37,219,194,255,33,54,4,199,139,208,179,36,74,218,17,156,20,29,166,7,59,36,2,104,51,184,91,41,233,128,20,190,10,199,108,120,1,8,248,44,189,158,214,70,40,180,76,115,6,218,24,56,151,133,11,20,1,3,223,148,44, 194,194,70,14,244,205,59,31,161,240,169,136,86,200,75,211,11,255,21,109,120,37,159,39,17,130,202,232,133,184,199,174,138,28,74,44,220,238,68,165,64,222,93,96,187,98,107,102,46,28,215,210,126,131,125,109,86,177,119,89,246,219,245,125,47,96,170,81,238, 245,136,123,151,172,25,225,153,112,180,102,185,177,1,68,94,150,222,152,186,193,82,182,244,69,147,240,80,255,142,91,36,107,20,204,88,216,165,217,246,51,172,122,57,181,129,190,155,234,203,53,213,100,30,195,211,78,183,127,187,82,110,104,190,9,235,183,208, 245,176,61,1,102,72,153,179,106,181,6,204,185,55,156,108,152,212,159,102,44,154,96,97,43,61,177,57,178,65,43,192,34,172,32,199,16,95,65,100,251,42,64,103,29,190,222,211,64,176,67,117,152,204,88,7,110,161,105,145,70,88,78,161,80,220,147,228,42,114,244, 206,238,135,2,139,117,98,67,235,85,129,173,215,255,189,217,182,17,126,183,94,1,188,126,183,32,58,128,209,90,189,188,241,61,189,68,246,195,155,255,7,80,75,3,4,20,0,2,0,8,0,96,125,250,52,34,86,64,46,27,23,0,0,165,116,0,0,17,0,0,0,100,111,99,117,109,101, 110,116,45,115,97,118,101,46,115,118,103,236,92,89,115,227,200,145,126,159,95,193,229,188,76,135,69,176,238,67,125,56,198,61,97,135,55,218,187,17,158,153,216,103,136,132,36,186,41,82,6,169,150,186,127,253,126,89,0,137,2,88,36,33,81,125,120,162,41,143, 155,76,20,234,200,252,42,175,74,224,213,159,31,110,230,131,15,69,185,154,45,23,175,135,60,99,195,65,177,152,44,167,179,197,213,235,225,239,191,253,117,228,134,131,213,58,95,76,243,249,114,81,188,30,46,150,195,63,191,249,225,213,127,141,70,131,183,101, 145,175,139,233,224,126,182,190,30,252,125,241,126,53,201,111,139,193,79,215,235,245,237,249,120,124,127,127,159,205,106,98,182,44,175,198,47,6,163,17,238,92,125,184,250,97,48,24,96,216,197,234,124,58,121,61,172,219,223,222,149,243,208,110,58,25,23,243, 226,166,88,172,87,99,158,241,241,176,105,62,105,154,223,23,23,89,89,172,150,119,229,164,234,126,50,137,91,150,211,203,166,41,102,114,47,67,35,238,189,31,51,49,22,98,132,22,163,213,199,197,58,127,24,45,86,63,70,183,98,130,169,91,5,99,108,140,107,77,203, 126,173,206,31,230,96,195,222,201,132,171,241,232,96,253,45,254,219,222,176,33,100,213,90,47,113,103,145,45,138,245,248,151,223,126,217,94,28,177,108,186,158,70,221,108,56,223,26,183,37,142,69,126,83,172,110,243,73,177,26,111,232,225,254,77,151,231,211, 229,132,218,188,30,226,203,29,137,99,180,202,63,20,217,102,113,113,187,139,124,133,118,227,235,229,77,49,254,215,236,230,38,159,140,87,229,100,60,249,176,26,3,58,87,203,209,108,178,92,140,214,215,144,234,24,35,205,243,139,121,49,206,39,107,96,110,21, 58,219,204,224,124,139,68,150,41,249,167,105,241,161,152,183,71,139,26,72,81,221,59,125,61,196,164,132,231,50,252,190,46,102,87,215,235,215,67,229,216,237,67,160,220,207,166,235,235,152,240,97,86,220,255,101,249,128,78,6,108,160,28,254,23,200,111,240, 127,175,166,197,229,138,126,84,29,211,47,57,124,19,8,175,202,124,58,203,231,127,163,127,192,142,170,81,52,247,201,114,62,47,38,24,57,159,223,231,31,171,133,209,39,136,248,252,186,44,0,201,31,241,189,200,203,77,31,154,25,182,109,71,227,181,135,208,76, 242,237,229,171,154,248,251,98,182,6,246,238,86,69,249,43,201,239,127,23,191,175,138,157,86,191,149,249,98,5,176,220,188,30,222,228,235,114,246,240,211,72,100,214,42,233,252,25,195,31,207,188,241,150,153,51,206,65,55,66,158,141,156,21,153,115,90,189, 216,118,54,1,139,12,211,153,229,74,248,134,250,145,120,105,50,163,172,107,168,151,201,182,151,201,182,37,52,13,183,25,90,58,51,28,140,107,246,182,89,211,155,189,196,182,4,87,223,212,215,95,173,214,203,219,77,91,0,105,253,113,14,172,18,113,132,30,151, 229,249,197,60,159,188,127,25,8,75,240,115,182,254,120,206,95,14,155,59,150,151,151,171,2,195,178,136,22,48,135,59,48,146,216,46,224,105,99,177,212,88,60,61,150,106,152,53,110,47,249,235,33,52,18,246,169,8,77,3,116,196,157,231,153,145,223,46,66,19,0, 132,70,121,118,80,164,1,168,217,126,0,70,173,76,170,195,76,15,31,191,51,190,24,220,181,56,6,247,39,106,140,131,112,175,109,193,62,193,10,251,5,224,46,50,110,125,10,238,15,252,245,80,50,80,181,229,141,236,62,18,213,116,33,252,32,146,109,5,109,2,159,17, 112,236,103,208,189,198,11,221,31,250,63,10,166,114,103,159,168,125,49,150,125,12,28,147,163,245,6,36,70,243,159,9,144,41,54,50,254,8,54,74,101,116,174,158,204,70,38,31,197,198,212,104,143,96,35,211,95,140,141,202,251,199,176,241,50,124,158,200,70,140, 245,56,54,166,70,235,205,70,140,166,191,188,55,16,248,185,223,27,192,101,219,50,205,66,102,74,89,102,109,203,52,155,76,105,107,172,210,45,211,188,219,246,50,217,150,76,179,207,224,120,233,62,78,47,207,36,71,183,28,122,53,99,204,72,46,138,145,8,63,132, 240,70,209,15,52,145,70,8,126,166,76,134,127,152,59,27,169,204,51,239,156,125,209,83,217,63,218,67,16,220,53,235,220,43,145,35,102,29,157,248,35,224,236,15,242,163,78,132,224,158,31,1,103,127,144,127,113,195,222,102,248,142,60,184,133,115,253,92,134, 157,101,158,43,206,21,144,165,184,176,158,23,35,78,134,61,254,181,109,51,146,153,51,206,120,160,14,14,1,131,122,20,29,123,47,51,166,189,103,166,101,239,133,205,164,71,7,182,101,239,17,203,25,161,164,180,45,123,15,170,118,210,26,255,25,236,189,51,136, 128,250,235,60,22,62,79,212,176,24,75,61,74,195,166,70,235,173,97,49,154,249,242,26,54,240,115,191,134,197,101,215,214,176,42,131,104,185,48,45,13,43,161,54,5,34,123,219,214,176,59,109,47,147,109,73,195,106,120,147,202,74,219,3,238,164,88,233,115,54, 178,153,227,70,25,91,140,100,208,177,92,10,197,124,248,133,88,67,26,75,105,6,157,57,111,189,129,30,166,29,98,50,103,37,51,159,79,209,106,173,143,234,81,173,237,231,215,163,137,46,10,67,127,157,46,106,110,166,67,64,248,237,213,103,152,90,134,225,61,212, 184,54,50,217,179,213,59,61,247,93,117,51,229,71,173,158,211,223,163,86,239,20,199,174,140,84,117,107,93,186,207,234,117,202,100,110,135,125,150,197,63,206,168,237,58,173,194,170,19,157,86,150,9,173,16,66,120,151,230,227,126,16,97,112,115,178,23,123, 80,138,252,240,232,238,249,216,24,225,228,169,46,22,58,49,143,87,13,123,172,220,81,116,98,52,247,120,23,107,143,149,123,54,54,234,231,96,163,54,95,206,83,197,104,238,43,123,170,9,54,42,117,156,75,202,244,220,174,41,117,170,232,239,241,154,57,26,221,61, 93,53,78,37,253,125,126,213,40,205,51,128,81,186,199,131,177,8,159,167,128,81,177,199,131,49,53,218,115,178,81,184,30,92,98,79,7,227,69,248,156,2,70,41,158,14,70,127,73,127,159,29,140,220,29,223,210,220,157,176,165,157,164,191,19,184,200,221,9,91,58, 37,67,118,34,23,19,81,196,154,190,206,243,117,129,184,217,122,184,45,242,76,226,139,231,142,189,104,133,177,82,103,194,113,161,89,43,228,69,80,99,28,249,174,237,116,248,110,91,80,109,72,27,197,11,239,23,234,167,118,16,243,189,18,102,132,145,163,10,235, 72,84,211,111,146,196,34,197,50,175,164,151,186,125,10,96,50,238,16,100,217,118,6,193,101,202,113,110,77,135,69,134,41,35,152,62,184,120,169,122,45,158,212,76,239,160,248,8,52,234,24,83,103,60,72,240,197,243,49,77,2,110,26,129,245,78,42,69,8,238,132, 108,227,202,102,224,13,216,214,98,26,181,181,86,113,113,144,105,74,244,99,90,31,19,119,50,211,210,153,139,83,51,95,28,187,206,96,161,8,247,173,227,33,169,133,111,156,89,71,105,86,16,180,22,148,231,146,90,73,229,208,10,62,7,87,209,62,47,129,75,96,88,130, 197,237,60,176,200,188,118,154,123,214,202,104,112,157,105,203,85,148,152,156,36,219,78,146,109,19,9,236,150,198,56,36,36,245,69,183,53,118,165,96,38,2,6,33,84,169,140,121,195,59,154,79,101,74,74,46,13,235,34,84,90,39,181,61,136,80,211,115,241,125,34, 130,111,22,161,245,136,44,241,197,104,206,100,0,168,115,26,252,14,153,90,159,41,173,141,151,109,144,202,76,107,216,42,213,6,169,13,18,209,59,7,27,2,161,184,234,128,116,167,237,36,217,54,5,82,219,83,78,230,75,130,84,24,108,107,11,67,211,54,207,18,230, 217,65,1,180,64,202,233,88,198,185,216,78,241,84,219,100,114,164,167,26,181,234,171,217,158,147,14,42,180,62,100,123,113,89,118,143,7,148,132,25,239,148,3,80,61,129,178,182,109,211,4,207,172,178,62,226,76,56,30,0,213,193,59,240,207,148,131,61,97,241, 225,216,251,224,169,184,109,171,53,5,211,205,141,242,109,116,105,58,82,81,81,4,65,139,119,153,243,90,10,215,174,133,224,6,44,145,170,119,157,221,103,93,188,208,7,23,47,119,189,142,182,212,185,139,41,180,232,246,65,16,228,207,225,144,62,114,177,175,198, 84,5,25,190,109,203,48,169,50,116,74,101,148,63,180,151,125,63,91,76,151,247,35,232,55,190,149,100,247,34,212,92,163,224,186,23,55,213,155,141,164,187,45,234,106,78,239,125,183,193,182,80,245,174,90,77,93,237,25,181,184,42,103,211,209,197,5,149,126,174, 203,187,141,254,90,93,47,239,233,202,235,225,101,62,223,106,181,70,148,119,101,73,189,206,243,143,5,84,127,248,71,236,52,250,24,54,146,243,92,109,115,120,205,197,135,224,110,67,229,41,175,187,23,63,45,151,55,77,62,96,75,190,205,175,138,213,117,142,21, 227,222,212,197,58,36,11,193,100,125,253,98,89,78,139,50,186,32,160,5,53,243,174,117,61,132,119,64,159,9,159,250,18,245,184,185,80,101,194,134,77,21,44,213,247,118,167,64,76,139,231,24,179,238,114,54,159,163,159,170,78,100,195,228,117,185,124,143,8,179, 46,194,217,96,235,166,88,231,211,124,157,55,131,109,40,106,91,118,59,189,60,255,231,47,127,221,198,186,147,201,249,255,45,203,247,77,236,74,13,242,139,229,29,96,179,141,199,169,146,119,114,78,170,60,95,191,153,221,96,162,84,150,253,167,135,155,57,224, 188,189,208,106,188,254,120,91,52,157,86,221,110,74,204,147,101,234,211,201,205,140,110,26,255,186,198,130,255,78,131,68,49,121,221,233,108,61,47,222,252,154,127,40,194,184,213,207,86,139,9,149,209,47,203,55,209,208,180,196,159,175,182,177,244,110,127, 255,157,191,191,187,24,252,186,46,160,33,202,84,199,180,107,119,59,9,45,119,198,163,110,87,119,23,255,130,186,106,117,64,235,255,75,126,213,153,3,81,231,179,55,215,211,233,171,113,253,61,221,32,47,167,131,105,57,163,133,31,106,183,202,143,181,152,45, 143,244,128,213,36,187,168,104,173,37,4,14,236,44,150,248,61,159,77,138,197,234,56,0,2,251,176,170,201,242,230,102,185,88,5,44,212,247,174,198,23,31,71,171,124,44,50,54,222,1,194,108,10,81,204,46,103,69,217,189,82,13,240,166,238,191,170,159,207,110,238, 86,179,201,117,62,159,103,147,79,213,164,171,86,63,68,210,165,93,16,239,138,119,221,37,68,27,227,145,179,111,243,230,182,40,129,244,213,81,222,164,30,202,248,103,113,91,46,167,119,161,216,191,205,148,19,59,254,101,6,149,50,187,184,75,118,92,22,255,190, 155,225,142,39,245,252,63,203,53,88,242,188,125,254,188,222,63,217,147,184,80,96,139,5,145,18,26,86,207,59,233,95,177,137,139,159,231,179,247,49,51,2,244,106,168,109,50,128,145,138,126,53,222,40,240,240,235,170,99,54,230,249,69,1,219,112,59,123,136,236, 75,218,164,94,149,203,187,219,155,229,180,168,27,108,236,193,213,15,237,156,229,116,182,186,69,131,243,217,130,28,166,150,7,117,165,153,104,188,192,117,162,4,151,106,112,152,166,50,176,186,10,87,120,193,66,141,152,210,153,34,143,241,76,193,63,214,66, 184,23,77,178,183,132,250,104,56,10,83,59,226,26,225,163,55,46,174,168,126,8,116,237,225,148,137,248,204,125,251,132,138,117,85,200,20,93,171,189,27,46,165,167,154,119,221,57,36,165,129,21,183,114,55,115,219,100,104,21,19,204,112,167,95,198,69,216,100, 146,207,97,187,126,250,113,183,162,249,69,184,26,157,106,132,159,229,221,188,56,95,44,23,159,224,81,188,172,172,55,253,44,234,239,149,31,118,206,55,63,169,91,136,237,28,66,91,76,99,226,191,150,179,197,57,240,93,148,47,111,242,242,125,81,86,189,84,223, 71,171,117,94,174,91,148,155,217,180,245,187,88,76,91,227,134,174,230,51,252,115,174,54,180,105,14,55,164,44,1,130,184,37,81,171,156,247,57,219,208,154,69,126,152,173,102,23,179,57,253,8,95,231,197,203,54,146,94,46,63,20,229,229,124,121,191,185,30,111, 130,219,124,125,29,201,96,235,23,3,174,228,18,192,251,156,224,211,145,30,221,164,89,235,112,18,212,127,12,70,130,67,218,220,89,170,18,35,32,57,38,221,224,237,30,122,68,149,194,102,70,51,197,211,68,244,96,41,190,81,218,43,144,93,166,53,115,102,128,40, 150,210,115,202,156,9,1,184,32,226,214,27,154,116,103,206,101,74,43,33,53,110,111,168,35,37,51,109,133,100,98,48,66,200,105,180,86,50,154,149,217,51,215,79,131,19,144,186,251,168,201,119,164,158,140,212,19,101,32,249,119,25,244,148,65,119,147,111,77, 65,103,147,39,233,17,53,218,228,41,34,245,96,153,200,184,48,58,218,228,35,238,153,66,19,161,163,93,30,17,227,109,30,145,227,125,206,17,60,102,130,107,219,218,231,201,233,182,246,121,163,234,90,166,109,175,146,108,78,18,107,79,189,133,217,61,183,173,38, 155,79,203,226,211,157,138,251,38,83,30,120,207,233,96,66,27,127,198,101,198,160,162,4,49,158,99,242,134,181,136,60,20,78,41,197,137,38,173,117,44,208,24,3,77,16,205,75,40,67,94,221,28,168,60,162,130,115,18,131,112,136,129,103,76,42,15,198,164,104,111, 247,180,12,83,172,104,150,25,229,109,76,19,84,91,201,93,117,247,46,181,161,41,56,53,198,112,109,146,180,248,110,18,181,194,194,61,104,94,73,101,237,89,56,83,224,92,187,129,2,137,18,209,122,75,51,131,119,3,186,133,150,29,17,223,14,240,29,158,146,240,50, 162,2,57,204,59,238,105,16,105,133,183,49,73,100,66,89,197,66,135,27,34,150,162,61,61,15,69,29,238,18,9,137,64,59,220,49,112,199,9,203,184,14,205,194,100,36,137,55,48,241,221,64,186,141,168,85,144,170,36,105,129,200,25,231,216,32,156,224,13,128,235,129, 196,6,194,234,93,160,49,15,79,79,18,141,119,32,241,46,5,158,8,238,181,66,13,26,51,168,147,189,218,177,248,80,0,194,27,109,119,254,35,32,128,191,182,130,20,253,20,100,139,218,95,197,109,103,213,108,185,30,59,109,239,46,139,142,33,194,46,3,178,172,212, 53,46,185,224,142,11,146,48,0,14,89,194,91,128,152,148,240,16,40,81,121,120,92,205,5,121,42,248,220,21,85,103,156,195,206,7,33,51,47,189,142,137,21,110,188,176,21,68,106,34,225,11,59,200,16,12,97,159,132,21,53,12,5,161,24,226,230,78,17,232,182,52,154, 146,167,19,72,174,34,42,109,12,76,210,27,99,35,106,179,164,176,89,48,79,27,211,194,182,130,115,69,184,75,44,126,15,76,18,110,56,29,169,191,232,13,157,132,97,205,96,198,161,163,188,185,125,232,66,8,81,231,122,143,137,61,1,23,181,254,93,237,224,66,66,110, 93,92,80,49,170,131,6,13,218,206,43,166,192,110,168,46,168,28,239,2,195,32,184,160,134,160,143,148,113,128,10,157,106,8,97,56,100,165,93,221,108,75,123,155,164,146,132,136,104,143,208,130,194,178,0,37,105,14,80,49,51,205,9,80,74,50,38,195,116,148,192, 151,74,99,33,18,51,174,210,48,152,184,172,53,140,199,122,68,80,49,214,217,176,28,82,49,92,105,237,130,138,1,138,188,171,84,12,70,173,52,12,131,102,9,26,70,27,33,42,173,67,55,243,90,197,80,151,50,162,86,6,10,106,178,69,37,11,133,184,176,210,70,210,81, 130,55,216,34,76,211,86,166,136,214,91,27,168,14,49,37,135,20,237,16,108,119,207,203,79,130,237,51,161,53,142,199,171,71,26,4,21,16,69,39,101,84,217,226,180,245,145,103,176,9,195,53,196,21,29,155,108,34,112,58,115,111,159,199,212,193,183,234,114,167, 89,122,187,34,119,255,102,103,254,20,174,9,194,172,199,231,81,214,226,143,18,210,244,82,77,41,159,80,181,181,82,141,7,101,41,193,227,12,55,100,3,18,196,134,36,233,43,227,48,74,41,218,219,1,226,95,236,180,240,36,33,233,99,175,4,246,171,193,126,87,10,138, 106,219,161,168,235,220,68,60,112,130,120,112,46,91,210,238,102,109,98,59,7,141,4,215,69,30,64,162,18,223,194,254,237,235,133,236,138,85,68,7,198,65,172,164,219,61,56,3,133,70,207,180,64,121,187,74,227,59,237,141,163,52,8,156,70,105,140,32,26,20,40,215, 158,172,0,156,62,45,130,191,64,158,169,10,22,136,109,253,209,4,85,103,82,107,9,131,187,165,217,45,205,182,239,70,231,6,191,92,68,69,135,206,106,15,245,140,249,88,43,148,231,193,131,160,7,4,137,36,224,77,59,17,156,18,105,36,195,216,116,51,183,210,114, 69,29,122,203,188,9,52,120,176,180,196,214,208,53,237,109,123,146,129,106,219,139,169,91,166,104,129,105,136,37,25,249,220,160,42,109,184,13,126,184,48,78,243,96,38,53,220,31,21,152,43,12,96,15,142,195,163,115,149,43,151,144,195,30,195,178,41,189,255, 182,112,216,64,140,119,32,6,211,234,169,230,244,140,215,85,166,149,185,245,96,76,69,84,14,65,115,176,213,150,46,19,201,32,78,134,9,142,73,232,161,186,177,166,24,112,81,26,166,201,27,64,200,132,0,155,108,16,61,134,7,19,79,62,37,218,32,104,55,245,125,2, 200,208,16,5,17,225,202,154,144,196,203,232,169,31,110,137,134,189,47,149,32,26,77,202,86,83,166,27,131,107,141,0,144,136,92,195,129,48,68,67,204,108,88,120,32,15,177,61,41,150,221,85,126,26,252,35,184,52,162,181,114,73,79,162,26,56,191,213,189,204,25, 120,57,6,139,18,222,185,106,12,105,16,254,73,172,24,155,164,53,23,170,76,229,22,142,85,152,48,150,44,5,209,224,229,91,89,45,12,158,142,39,82,88,123,61,156,64,252,6,92,17,119,188,148,74,17,173,97,33,54,178,105,40,27,54,71,132,90,20,180,18,75,94,89,36, 177,238,234,194,138,125,117,167,144,153,229,117,103,30,236,130,59,230,207,132,165,218,81,104,226,1,57,177,92,58,103,9,239,213,250,132,170,186,105,40,111,201,30,48,3,227,109,182,68,14,187,65,24,99,140,135,238,160,22,176,167,92,141,10,26,149,238,195,111, 229,16,100,59,162,192,0,112,112,202,101,134,60,151,51,140,195,169,212,187,69,145,196,235,112,99,32,49,121,38,240,21,27,18,187,51,60,221,137,224,51,104,67,90,19,28,203,102,178,21,137,150,41,50,207,45,229,137,55,52,44,28,58,75,121,191,237,204,213,180,214, 152,17,137,75,56,202,38,48,17,174,189,242,97,250,240,96,17,51,237,48,246,144,41,3,94,201,148,217,222,46,150,61,201,176,125,247,172,214,169,82,56,135,152,205,97,23,211,249,24,108,11,195,222,141,138,119,131,114,196,46,181,48,175,216,181,2,142,53,252,33, 173,6,63,15,72,163,49,42,108,196,55,70,207,8,155,1,27,64,67,14,96,162,28,54,185,4,246,123,53,79,117,255,105,184,227,59,148,31,195,99,14,225,214,196,85,42,7,222,12,177,123,57,148,103,110,122,79,92,14,193,4,34,68,163,59,101,242,149,185,16,143,11,16,146, 214,143,133,215,94,8,203,204,119,212,30,73,175,111,229,66,190,226,235,97,94,78,142,248,149,77,187,239,98,250,114,98,138,246,135,233,187,167,250,238,200,35,251,57,169,12,190,190,178,74,106,88,120,218,30,110,137,62,163,147,23,41,125,92,108,220,66,243,83, 211,206,73,99,105,216,139,157,124,98,248,8,245,133,18,210,221,227,26,163,132,230,85,186,94,49,43,100,229,184,34,16,114,66,70,84,74,145,41,143,248,137,104,78,48,230,130,219,173,224,215,169,112,4,32,181,220,228,210,2,209,53,68,112,154,50,122,42,196,45, 30,174,11,57,159,9,218,219,61,45,17,212,72,200,151,18,103,218,131,83,54,166,9,184,93,78,235,224,13,37,168,13,13,129,188,87,206,104,158,164,197,119,83,166,155,1,18,148,19,229,8,35,185,84,33,43,109,169,67,88,99,101,157,226,17,41,156,214,96,214,112,240, 27,98,136,234,208,157,163,52,249,134,72,129,158,129,39,28,72,130,146,216,50,166,241,12,222,56,171,50,231,91,42,133,127,138,222,227,81,7,138,93,42,104,134,158,252,17,245,113,22,98,219,112,80,100,169,194,159,104,28,238,32,243,148,79,181,244,184,5,156,201, 32,26,44,66,170,202,97,183,204,122,27,164,29,174,7,151,93,82,170,63,72,91,35,76,113,138,98,3,112,138,89,30,161,226,93,18,65,145,123,217,40,35,45,134,253,15,26,159,176,19,41,246,61,112,6,180,125,232,60,177,247,148,219,141,106,87,255,190,203,203,162,95, 92,11,196,11,196,145,46,170,73,170,50,36,12,209,20,133,84,154,222,166,65,66,37,2,164,12,48,240,78,253,125,197,36,39,142,133,200,174,147,92,147,174,26,195,112,120,250,117,210,60,140,97,36,157,185,13,255,147,152,247,199,144,122,136,161,91,18,49,73,137, 68,50,53,71,165,238,58,99,168,238,24,234,187,212,191,174,212,69,87,34,226,136,212,61,59,38,117,47,58,99,176,238,24,236,143,37,245,104,233,93,53,231,235,165,195,49,49,100,113,3,129,150,30,29,29,237,228,50,152,167,87,16,59,245,242,9,69,3,219,151,189,124, 6,62,240,131,160,239,63,255,35,162,252,188,75,104,203,199,214,242,49,210,41,81,249,26,149,124,92,235,225,184,72,194,71,149,158,239,42,61,221,29,67,39,199,248,207,98,227,31,14,9,178,43,37,121,24,9,146,29,83,132,146,117,21,33,239,142,193,255,168,72,216, 50,65,91,177,115,172,106,3,23,36,37,208,223,213,191,233,184,50,36,135,223,209,73,103,56,6,136,72,14,177,110,221,170,185,101,211,197,161,172,176,146,62,124,94,126,195,231,72,253,243,78,140,222,45,65,72,232,155,229,166,135,129,79,201,114,211,155,22,36, 194,76,239,122,66,228,155,75,73,109,76,183,245,207,145,155,18,90,233,116,110,74,236,73,74,113,223,46,30,105,167,164,20,1,57,157,143,50,225,173,53,59,222,4,29,131,212,125,82,102,41,116,48,168,218,110,146,74,156,85,71,129,135,91,117,250,250,116,224,33, 24,170,251,177,14,161,242,238,43,17,112,201,48,171,168,0,24,222,28,216,236,206,40,165,128,246,219,188,84,93,180,187,243,160,207,206,211,59,157,199,125,118,30,120,173,159,12,154,46,239,23,195,195,231,17,219,121,115,201,184,167,89,114,204,223,250,240,186, 6,155,121,238,180,82,248,97,195,219,71,180,55,140,211,107,118,61,212,44,24,167,37,20,180,142,223,170,191,137,138,149,227,206,200,193,246,133,168,196,219,205,123,80,161,163,164,55,206,203,45,135,233,12,80,72,231,130,166,234,115,67,106,132,61,71,23,219, 123,247,0,107,231,237,172,45,80,238,190,209,181,141,229,157,215,192,110,240,239,76,244,6,144,29,229,68,239,43,182,70,237,87,78,187,175,170,61,169,182,228,17,154,248,185,53,18,103,223,250,97,198,211,42,207,232,5,10,93,153,100,108,255,19,28,201,46,232, 17,144,174,25,9,31,39,190,162,200,62,215,185,198,197,124,57,121,191,95,96,155,194,103,38,149,102,225,92,192,73,77,103,1,84,224,202,45,34,70,11,53,164,51,233,52,213,50,12,4,29,228,115,74,118,142,232,240,136,115,202,181,210,67,27,78,40,30,74,17,172,115, 216,250,85,28,65,207,31,202,22,17,155,87,99,23,106,65,39,240,214,42,99,67,253,40,189,225,91,43,17,119,240,54,73,21,100,61,140,211,254,8,45,84,164,105,39,61,85,179,101,84,191,45,168,102,158,146,232,66,82,186,29,225,62,195,162,77,114,241,137,84,43,143, 223,199,113,160,198,235,209,69,97,187,86,156,71,190,118,237,147,26,3,141,200,228,25,148,54,83,156,85,21,178,84,71,105,254,191,188,43,200,109,24,134,97,247,189,162,15,8,2,203,150,37,11,24,118,217,181,255,127,207,72,37,1,50,204,205,10,236,182,94,5,180, 9,194,152,162,100,42,230,108,91,225,198,2,210,154,17,137,180,161,216,82,87,23,71,30,1,58,190,58,0,219,204,49,221,163,197,222,218,42,62,194,237,20,253,156,70,19,178,38,61,237,29,233,133,137,105,236,206,76,206,150,236,248,246,151,147,32,160,25,222,232, 43,190,10,1,66,100,70,213,112,238,38,161,20,192,107,215,119,163,18,103,133,80,166,2,183,42,125,250,124,46,101,183,75,71,54,157,178,206,117,59,227,119,126,97,138,121,192,47,77,255,99,74,120,64,48,207,21,224,26,218,4,218,231,201,156,204,3,58,254,50,191, 119,32,225,175,152,155,143,22,183,131,115,123,154,205,32,178,76,246,174,42,253,110,30,116,169,121,119,144,37,151,159,231,232,19,228,179,248,10,122,47,53,23,254,128,180,171,177,96,113,42,207,24,208,27,61,114,160,213,161,75,14,234,133,228,220,140,180,156, 118,137,92,248,101,148,226,126,84,207,170,27,29,136,241,115,123,27,87,235,104,149,99,46,40,154,77,233,101,131,134,4,123,21,252,94,129,26,46,106,183,78,87,114,53,203,61,53,171,188,229,116,136,13,218,13,41,146,101,173,134,171,139,241,222,161,63,91,158, 84,49,138,65,250,13,146,99,29,59,199,8,213,96,221,120,240,199,3,153,237,180,197,233,172,146,75,139,239,169,172,120,231,55,91,62,222,190,0,80,75,3,4,20,0,2,0,8,0,118,128,249,52,254,120,218,95,213,23,0,0,110,124,0,0,20,0,0,0,100,111,99,117,109,101,110, 116,45,115,97,118,101,45,97,115,46,115,118,103,236,93,91,115,26,73,150,126,239,95,193,210,47,237,24,81,228,253,34,91,158,232,117,199,108,204,134,103,55,98,186,59,246,185,4,37,137,54,2,13,32,75,246,175,223,239,100,21,69,86,145,64,33,100,217,211,97,20, 29,134,83,121,61,231,203,115,203,204,234,55,127,125,188,157,246,62,22,139,229,100,62,187,232,243,140,245,123,197,108,52,31,79,102,215,23,253,223,127,251,219,192,245,123,203,85,62,27,231,211,249,172,184,232,207,230,253,191,190,253,225,205,127,12,6,189, 119,139,34,95,21,227,222,195,100,117,211,251,251,236,195,114,148,223,21,189,159,110,86,171,187,243,225,240,225,225,33,155,84,196,108,190,184,30,190,234,13,6,168,185,252,120,253,67,175,215,67,183,179,229,249,120,116,209,175,202,223,221,47,166,161,220, 120,52,44,166,197,109,49,91,45,135,60,227,195,254,166,248,104,83,252,161,184,204,22,197,114,126,191,24,149,205,143,70,113,201,197,248,106,83,20,35,121,144,161,16,247,222,15,153,24,10,49,64,137,193,242,211,108,149,63,14,102,203,31,163,170,24,96,170,170, 96,140,13,241,108,83,178,91,169,243,199,41,216,176,115,48,225,105,220,59,88,127,135,255,234,10,107,66,86,206,245,10,53,139,108,86,172,134,191,252,246,75,253,112,192,178,241,106,28,53,179,230,124,163,223,134,56,102,249,109,177,188,203,71,197,114,184,166, 135,250,235,38,207,199,243,17,149,185,232,227,203,61,137,99,176,204,63,22,131,124,153,173,231,23,23,189,204,151,40,58,188,153,223,22,195,63,38,183,183,249,104,184,92,140,134,163,143,203,33,208,115,61,31,76,70,243,217,96,117,3,193,14,209,217,52,191,156, 22,195,124,180,2,236,150,161,177,245,32,206,107,48,178,76,201,191,140,139,143,197,180,217,91,84,64,138,178,238,248,162,143,65,9,207,101,248,125,83,76,174,111,86,23,125,229,238,30,3,225,97,50,94,221,84,191,223,130,240,102,92,92,45,233,65,89,151,126,201, 240,0,143,22,249,120,146,79,255,139,254,193,164,203,66,209,240,70,243,233,180,24,161,241,124,250,144,127,42,199,78,159,32,200,243,155,69,1,224,253,136,239,69,190,88,183,161,153,97,117,57,234,175,217,133,102,146,215,143,175,43,226,239,179,201,10,8,187, 95,22,139,95,73,74,255,59,251,125,89,108,149,250,109,145,207,150,128,196,237,69,255,54,95,45,38,143,63,13,68,102,173,146,206,159,49,252,241,204,27,111,153,57,227,28,116,35,228,217,192,89,145,57,167,213,171,186,177,209,227,69,223,48,157,89,174,132,223, 80,63,17,191,76,102,148,117,27,234,85,178,236,85,178,236,2,250,132,219,12,37,157,233,247,134,21,123,155,172,233,204,94,98,91,130,171,111,171,231,111,150,171,249,221,186,44,176,178,250,52,5,28,137,56,64,139,243,197,249,229,52,31,125,120,29,8,115,240,115, 178,250,116,206,95,247,55,53,230,87,87,203,2,221,178,136,22,96,133,26,232,73,212,19,120,90,95,44,213,23,79,247,165,54,204,26,54,167,252,245,16,26,9,251,84,132,166,1,58,224,206,243,204,200,111,23,161,9,0,42,215,127,118,80,164,1,168,217,110,0,70,165,76, 170,193,76,247,143,95,25,47,6,119,45,14,193,253,137,26,99,47,220,33,185,125,130,21,246,5,224,46,50,110,125,10,238,143,252,162,47,25,168,218,242,141,236,62,17,213,180,33,252,40,146,101,5,45,2,159,17,112,236,241,200,54,222,232,238,200,254,113,28,62,79, 84,174,232,203,30,131,182,31,175,198,244,215,161,55,158,238,205,127,33,188,165,216,40,142,97,163,96,42,119,246,201,108,20,199,177,49,213,27,235,206,70,241,146,108,100,252,8,54,74,101,116,174,158,204,70,38,143,98,99,170,183,35,216,200,244,139,177,81,121, 127,12,27,175,194,231,137,108,68,95,199,177,49,213,91,103,54,162,55,253,242,62,83,224,231,110,159,9,143,109,195,129,17,50,83,202,50,107,27,14,140,201,148,182,198,42,221,112,96,182,203,94,37,203,146,3,227,51,184,167,186,75,104,192,51,201,209,44,135,245, 201,24,51,146,139,98,32,194,15,33,188,81,244,3,69,164,17,130,159,41,147,225,31,230,206,6,42,243,204,59,103,95,117,52,137,71,91,27,193,221,102,158,59,37,114,192,249,65,35,254,0,56,187,131,252,160,171,37,184,231,7,192,217,29,228,47,238,254,52,25,190,37, 15,110,17,130,60,151,251,195,50,207,21,231,10,200,82,92,88,207,139,1,39,247,39,254,85,151,25,200,204,25,103,60,80,7,183,137,65,61,138,150,87,36,51,166,189,103,166,225,21,9,155,73,143,6,108,195,43,66,196,107,132,146,210,54,188,34,80,181,147,54,246,2,158, 77,195,58,131,56,177,187,206,99,225,243,68,13,139,190,212,81,26,54,213,91,103,13,139,222,204,203,107,216,192,207,221,26,22,143,93,83,195,170,12,162,229,194,52,52,172,132,218,20,156,71,46,253,85,178,236,85,178,44,105,88,13,159,91,89,105,59,192,157,20, 43,125,206,6,54,115,220,40,99,139,129,12,58,150,75,161,152,15,191,16,145,73,99,41,25,163,51,231,173,55,208,195,180,66,76,230,172,100,230,203,41,90,173,245,65,61,170,181,253,242,122,52,209,68,97,232,175,213,68,197,205,116,160,140,232,166,252,244,83,211, 48,188,131,26,215,70,38,91,182,122,171,229,174,179,222,12,249,168,217,115,250,59,106,246,78,113,172,202,72,85,55,230,165,187,204,94,167,76,102,221,237,179,76,254,56,163,182,237,180,10,171,78,116,90,89,38,180,66,8,225,93,154,143,187,65,132,206,205,201, 94,236,94,41,242,253,189,187,231,99,99,132,147,167,186,88,104,196,28,175,26,118,88,185,131,232,68,111,238,120,23,107,135,149,123,54,54,234,231,96,163,54,47,231,169,162,55,247,149,61,213,4,27,149,58,204,37,101,58,46,215,148,58,85,244,119,188,102,142,122, 119,79,87,141,99,73,127,95,94,53,74,243,12,96,148,238,120,48,22,225,243,20,48,42,118,60,24,83,189,61,39,27,133,235,192,37,246,116,48,94,134,207,41,96,148,226,233,96,244,87,244,247,197,193,200,221,225,37,205,221,9,75,218,73,250,59,129,139,220,157,176, 164,83,50,100,39,114,49,17,69,172,232,235,52,95,21,136,155,173,135,219,34,207,36,190,120,238,216,171,70,24,43,117,38,28,23,154,53,66,94,4,53,198,145,239,218,220,52,216,46,11,170,13,105,163,120,226,221,66,253,212,10,98,190,83,194,140,48,114,80,97,29,136, 106,186,13,146,88,164,88,230,149,244,82,55,247,74,76,198,29,130,44,219,204,32,184,76,57,206,173,105,177,200,48,101,4,211,123,39,47,85,167,201,147,154,233,28,20,31,128,70,21,99,234,140,7,9,190,122,62,166,73,192,77,35,176,222,74,165,8,193,157,144,77,92, 217,12,188,1,219,26,76,163,178,214,42,46,246,50,77,137,110,76,235,98,226,78,102,90,58,115,113,106,230,139,99,213,25,76,20,225,190,117,60,36,181,240,141,51,235,40,205,10,130,214,130,242,92,82,43,169,28,74,193,231,224,42,90,231,11,224,18,24,150,96,113, 51,15,44,50,175,157,230,158,53,50,26,92,103,218,114,21,37,38,71,201,178,163,100,217,68,2,187,161,49,246,9,73,189,232,178,198,170,20,204,68,192,32,132,42,149,49,111,120,75,243,169,76,73,201,165,97,109,132,74,235,164,182,123,17,106,58,78,190,75,68,240, 205,34,180,234,145,37,190,24,205,153,12,0,117,78,131,223,33,83,235,51,165,181,241,178,9,82,153,105,13,91,165,154,32,181,65,34,122,107,99,67,32,20,87,45,144,110,149,29,37,203,166,64,106,59,202,201,188,36,72,133,193,178,182,48,52,77,243,44,97,158,29,20, 64,3,164,156,182,101,156,139,237,20,79,149,77,38,71,58,170,81,171,190,154,237,57,105,163,66,235,125,182,23,143,101,123,123,64,73,152,241,214,161,9,58,117,161,172,109,218,52,193,51,171,172,143,56,19,182,7,64,117,240,14,252,51,229,96,79,152,124,216,246, 222,187,43,110,155,106,77,193,116,115,163,124,19,93,154,182,84,84,20,65,208,228,93,230,188,150,194,53,79,140,112,3,150,72,213,249,52,226,23,157,188,208,123,39,47,183,189,142,166,212,185,139,41,52,233,230,70,16,228,207,225,144,126,27,147,53,251,39,107, 155,147,133,183,202,12,87,198,180,97,142,217,72,213,60,27,148,40,91,122,193,74,90,229,197,81,147,127,51,164,131,178,225,91,125,24,151,142,8,143,63,78,138,135,31,154,108,120,152,204,198,243,135,1,148,59,175,117,88,251,33,116,188,170,119,120,218,15,215, 103,120,55,48,111,151,168,14,245,122,239,219,5,234,19,203,247,229,108,170,83,192,81,137,235,197,100,60,184,188,156,63,146,114,187,95,43,239,229,205,252,129,158,92,244,175,242,105,173,210,55,162,189,95,44,168,213,105,254,169,128,221,11,255,108,13,159, 236,25,39,237,232,253,214,188,201,170,129,245,177,211,92,63,251,60,159,223,146,187,230,132,131,190,222,122,124,151,95,23,203,155,28,243,70,161,212,195,42,42,13,241,116,245,252,114,190,24,23,139,232,129,128,33,208,172,30,87,249,60,68,184,192,164,9,159, 234,17,181,184,126,80,38,3,251,155,227,210,116,214,187,61,4,98,93,60,198,152,129,87,147,233,20,237,148,71,101,214,172,94,45,230,31,16,100,87,231,144,214,8,187,45,86,249,56,95,229,155,206,214,20,85,159,207,30,95,157,255,243,151,191,213,225,254,104,116, 254,127,243,197,135,77,248,78,5,242,203,249,61,192,83,167,36,232,200,247,232,156,172,89,190,122,59,185,197,64,233,148,254,95,30,111,167,0,117,253,160,81,120,245,233,174,216,52,90,54,187,190,113,144,188,181,48,30,221,78,168,210,240,215,21,38,252,119,234, 36,74,75,84,141,78,86,211,226,237,175,249,199,162,247,243,50,116,93,82,26,133,70,116,177,98,190,120,27,245,78,179,252,249,186,206,40,108,55,249,223,249,135,251,203,222,175,171,2,170,99,145,106,152,150,239,118,35,161,228,86,127,212,236,242,254,242,15, 232,177,70,3,196,130,255,204,175,91,99,32,234,116,242,246,102,60,126,51,172,190,167,11,228,139,113,111,188,152,124,44,246,151,163,107,6,189,124,185,191,208,100,126,160,17,76,40,217,79,73,107,204,34,48,97,107,190,196,242,233,100,84,204,150,135,97,16,56, 136,137,141,230,183,183,243,217,50,32,162,170,187,28,94,126,26,44,243,161,200,216,112,11,14,147,49,164,49,185,154,20,139,246,147,178,131,183,85,251,229,141,138,236,246,126,57,25,221,228,211,105,54,250,92,14,186,44,245,67,36,96,90,11,241,218,120,223,158, 66,180,60,142,28,125,147,55,119,197,2,120,95,30,228,77,234,166,206,63,139,187,197,124,124,31,174,127,52,153,114,98,195,191,76,160,88,38,151,247,201,134,23,197,191,238,39,168,241,164,150,255,103,190,2,75,158,183,205,159,87,187,7,123,18,23,10,172,178,32, 82,66,195,242,121,7,253,43,214,113,241,243,116,242,33,102,70,128,94,5,181,117,42,52,82,212,111,134,107,53,30,126,93,183,140,199,52,191,44,96,33,238,38,143,145,149,73,155,215,235,197,252,254,238,118,62,46,170,2,107,171,112,253,67,51,121,59,158,44,239, 80,224,124,50,35,103,170,225,93,93,107,38,54,142,207,42,113,98,155,14,35,49,77,231,225,170,67,219,194,11,22,14,203,41,157,41,114,157,207,20,2,5,45,132,123,181,201,122,47,160,62,54,28,133,193,29,112,141,56,218,27,23,31,192,127,12,116,237,225,157,138,248, 240,65,125,103,201,186,50,118,140,158,85,158,14,151,210,211,21,9,221,218,45,166,142,21,183,114,59,133,189,73,85,43,38,224,7,58,253,58,62,179,79,134,249,28,22,236,167,31,183,15,192,191,10,79,163,237,157,240,115,113,63,45,206,103,243,217,103,248,21,175, 75,27,78,63,139,234,123,233,147,157,243,245,79,106,22,98,59,135,208,102,227,152,248,199,124,50,59,7,190,139,197,235,219,124,241,161,88,148,173,148,223,7,203,85,190,88,53,40,183,147,113,227,119,49,27,55,250,13,77,77,39,248,231,92,173,105,227,28,206,200, 98,1,16,196,37,137,90,38,255,207,217,154,182,153,228,199,201,114,114,57,153,210,143,240,117,90,188,110,34,233,245,252,99,177,184,154,206,31,214,207,227,69,112,151,175,110,34,25,212,62,50,224,74,142,1,60,209,17,62,45,233,81,37,205,26,187,180,160,254,163, 55,16,28,210,230,206,210,113,57,2,146,99,210,245,222,237,160,71,84,41,108,102,52,83,60,77,68,11,150,2,61,165,189,2,217,101,90,51,103,122,8,231,41,79,169,204,153,16,128,139,99,86,175,105,210,157,57,151,41,173,132,212,168,190,161,14,148,204,180,21,146, 137,222,0,177,183,209,90,201,104,84,102,199,88,63,247,78,64,234,246,205,164,239,72,61,25,169,39,202,64,242,239,50,232,40,131,246,34,175,77,65,107,145,39,233,17,53,90,228,41,34,181,96,153,64,24,106,116,180,200,7,220,51,133,34,66,71,171,60,34,198,203,60, 34,199,235,156,35,132,204,4,215,182,177,206,147,195,109,172,243,141,170,107,152,182,157,74,114,179,165,90,121,234,13,204,238,168,182,28,173,63,13,139,79,53,21,247,155,28,72,224,61,167,29,26,109,252,25,151,25,131,138,18,196,120,142,193,27,214,32,242,112, 130,76,41,78,52,105,173,99,129,198,24,104,130,104,94,66,25,242,178,114,160,242,136,10,206,73,116,194,33,6,158,49,169,60,24,147,162,189,219,81,50,12,177,164,89,102,148,183,49,77,208,33,83,238,202,218,219,212,13,77,193,169,49,134,107,147,164,197,181,73, 212,10,19,247,160,121,37,149,181,103,97,115,133,115,237,122,10,36,202,200,235,154,102,122,239,123,84,133,166,29,17,223,245,240,29,158,146,240,50,162,2,57,204,59,238,169,19,105,133,183,49,73,100,66,89,197,66,131,107,34,166,162,61,93,159,163,6,183,137, 132,68,160,29,238,24,184,227,132,101,92,135,98,97,48,146,196,27,152,248,190,39,221,90,212,42,72,85,146,180,64,228,140,115,44,16,78,240,6,192,117,79,98,1,97,246,46,208,152,135,167,39,137,198,91,144,120,159,2,79,4,247,74,161,6,141,25,212,201,78,237,88, 124,44,0,225,181,182,59,255,17,16,192,95,83,65,138,110,10,178,65,237,174,226,234,81,109,150,92,135,149,182,115,149,69,251,49,97,149,1,89,86,234,10,151,92,112,199,5,73,24,0,135,44,225,45,80,218,82,120,8,148,168,60,220,110,116,65,158,10,62,119,73,213,25, 231,176,243,65,200,204,75,175,99,98,137,27,47,108,9,145,138,72,248,194,10,50,4,67,216,39,97,69,5,67,65,40,134,184,185,83,4,186,154,70,67,242,180,21,203,85,68,165,133,129,65,122,99,108,68,221,76,41,44,22,140,211,198,180,176,172,224,92,17,238,18,147,223, 1,147,132,27,78,103,11,94,117,134,78,194,176,102,48,227,208,81,222,220,61,182,33,132,168,115,181,195,196,158,128,139,74,255,46,183,112,33,33,183,54,46,232,84,174,131,6,13,218,206,43,166,192,110,168,46,168,28,239,2,195,32,184,160,134,160,143,148,113,128, 10,109,239,8,97,56,100,165,93,85,172,166,189,75,82,73,66,68,180,7,104,65,97,89,128,146,52,7,168,24,153,230,4,40,37,25,147,97,56,74,224,75,169,177,16,137,25,87,106,24,12,92,86,26,198,99,62,34,168,24,235,108,152,14,169,24,174,180,118,65,197,0,69,222,149, 42,6,189,150,26,134,65,179,4,13,163,141,16,165,214,161,202,188,82,49,212,164,140,168,165,129,130,154,108,80,201,66,33,46,44,181,145,116,148,230,13,182,8,195,180,165,41,162,249,86,6,170,69,76,201,33,69,219,7,219,237,131,3,39,193,246,153,208,26,199,227, 229,221,14,65,39,169,162,45,67,58,226,227,180,245,145,103,176,14,195,53,196,21,237,31,173,35,112,58,124,208,220,171,169,130,111,213,230,206,102,234,205,163,201,187,23,59,243,167,112,77,16,102,61,62,71,89,139,63,75,72,211,73,53,165,124,66,213,212,74,21, 30,148,165,4,143,51,220,144,13,72,16,55,36,73,95,25,135,81,74,209,222,245,16,255,98,165,133,43,149,164,143,189,18,88,175,6,235,93,41,40,170,186,65,81,29,248,19,113,199,9,226,222,177,212,164,237,197,186,137,237,28,52,18,92,23,185,7,137,74,124,11,235,183, 171,23,178,45,86,17,237,156,7,177,146,110,247,224,12,20,26,93,238,129,242,118,165,198,119,218,27,71,105,16,56,141,210,24,65,52,40,80,174,61,89,1,56,125,90,4,127,129,60,83,21,44,16,171,253,209,4,85,103,82,107,9,131,91,211,108,77,179,205,218,104,220,224, 151,139,168,104,208,89,237,161,158,49,30,107,133,242,60,120,16,116,83,146,72,2,222,180,19,193,41,145,70,50,244,77,149,185,149,150,43,106,208,91,230,77,160,193,131,165,41,54,186,174,104,239,154,131,12,84,219,156,76,85,50,69,11,76,67,44,201,200,231,6,85, 105,195,109,240,195,133,113,154,7,51,169,225,254,168,192,92,97,0,123,112,28,30,157,43,93,185,132,28,118,24,150,245,29,132,111,11,135,27,136,241,22,196,96,90,61,29,190,61,227,213,113,219,210,220,122,48,166,36,42,135,160,57,216,106,75,143,137,100,16,39, 195,4,199,36,180,80,86,172,40,6,92,148,134,105,242,6,16,50,33,192,38,27,68,247,17,97,226,201,167,68,25,4,237,166,170,39,128,12,13,81,16,17,174,172,9,73,188,140,174,63,113,75,52,172,125,169,4,209,104,80,182,28,50,85,12,174,53,2,64,34,114,13,7,194,16,13, 49,179,97,225,102,34,98,123,82,44,219,179,252,220,251,71,112,105,68,99,230,146,174,228,26,56,191,101,93,230,12,188,28,131,73,9,239,92,217,135,52,8,255,36,102,140,69,210,24,11,29,209,229,22,142,85,24,48,166,44,5,209,224,229,91,89,78,12,158,142,39,82,152, 123,213,157,64,252,6,92,17,119,188,148,74,17,109,195,66,44,100,179,161,172,217,28,17,42,81,208,76,44,121,101,145,196,218,179,11,51,246,101,77,33,51,203,171,198,60,216,5,119,204,159,9,75,135,104,161,137,123,228,196,114,233,156,37,188,151,243,19,170,108, 102,67,121,71,246,128,25,24,111,83,19,57,236,6,97,140,49,30,154,131,90,192,154,114,21,42,168,87,170,135,223,202,33,200,118,68,129,1,224,224,148,203,12,121,46,103,232,135,211,153,247,6,69,18,175,67,197,64,98,242,76,224,43,22,36,86,103,184,230,138,224, 51,104,67,154,19,28,203,205,96,75,18,77,83,100,158,91,202,19,175,105,152,184,167,195,36,190,110,204,85,180,70,159,17,137,75,56,202,38,48,17,174,189,242,97,248,240,96,17,51,109,49,118,159,41,3,94,201,148,217,206,46,150,61,201,176,125,247,172,86,169,51, 129,14,49,155,195,42,166,253,49,216,22,134,181,27,157,98,14,202,17,171,212,194,188,98,213,10,56,214,240,135,180,234,253,220,35,141,198,232,132,39,190,49,186,44,109,122,172,7,13,217,131,137,114,88,228,18,216,239,84,60,213,252,231,254,150,239,176,248,20, 238,123,132,170,137,167,116,46,122,221,197,246,227,112,78,117,221,122,226,113,8,38,16,33,26,221,186,47,80,154,11,113,92,128,144,180,126,44,188,255,67,88,102,190,163,246,64,122,189,150,11,249,138,23,253,124,49,58,224,87,110,202,125,23,211,203,137,41,90, 31,166,235,154,234,186,34,15,172,231,164,50,248,250,202,42,169,97,225,105,123,184,37,250,140,118,94,164,244,241,169,235,6,154,159,154,118,78,26,75,195,94,109,229,19,195,71,168,23,74,72,183,183,107,140,18,154,151,233,122,197,172,144,165,227,138,64,200, 9,25,81,41,69,166,60,226,39,162,57,193,152,11,110,183,130,95,167,194,22,128,212,114,157,75,11,68,183,33,130,211,148,209,83,33,110,241,112,93,200,249,76,208,222,237,40,137,160,70,66,190,148,56,211,30,156,178,49,77,192,237,114,90,7,111,40,65,221,208,16, 200,123,229,140,230,73,90,92,155,50,221,12,144,160,156,40,71,24,201,165,10,89,105,75,13,194,26,43,235,20,143,72,97,183,6,163,134,131,191,33,134,168,14,205,57,74,147,175,137,20,232,25,120,194,129,36,40,137,45,99,26,207,224,141,179,50,115,94,83,41,252, 83,244,66,147,42,80,108,83,65,51,116,5,74,84,219,89,136,109,195,70,145,165,171,14,68,227,112,7,153,167,124,170,165,123,39,112,38,131,104,48,9,169,74,135,221,50,235,109,144,118,120,30,92,118,73,169,254,32,109,141,48,197,41,138,13,192,41,102,121,132,138, 247,73,4,69,238,229,70,25,105,209,239,190,209,248,132,149,72,177,239,158,61,160,250,246,125,98,237,209,43,140,219,171,111,249,175,251,124,81,116,139,107,129,120,129,56,210,69,103,146,202,12,9,67,52,69,33,149,166,215,138,144,80,137,0,41,3,12,188,117,17, 161,100,146,19,135,66,100,215,74,174,73,87,246,97,56,60,253,42,105,30,250,48,146,246,220,250,255,78,204,251,115,72,61,196,208,13,137,152,164,68,34,153,154,131,82,119,173,62,84,187,15,245,93,234,95,87,234,162,45,17,113,64,234,158,29,146,122,116,149,164, 236,131,181,251,96,127,46,169,71,83,111,171,57,95,77,29,142,137,33,139,27,8,52,245,104,235,104,43,151,193,60,189,177,218,169,215,79,99,69,253,226,155,47,192,10,190,23,247,255,38,83,104,138,200,86,34,50,210,41,81,186,27,165,136,92,227,162,96,36,228,131, 122,207,183,245,158,110,247,161,147,125,124,71,194,87,69,130,108,75,73,238,71,130,100,135,116,161,100,109,93,200,219,125,240,63,43,18,106,38,104,43,182,118,86,109,224,130,164,28,250,251,234,55,237,88,134,252,240,123,218,236,12,59,1,17,201,33,220,173, 74,109,170,172,155,216,151,24,86,210,135,207,235,111,120,43,169,123,234,137,209,123,54,8,9,93,19,221,116,49,250,148,68,55,189,117,66,34,210,244,174,35,68,190,185,172,212,218,122,91,255,28,233,41,161,149,78,167,167,196,142,188,20,247,205,243,35,205,172, 148,34,32,167,83,82,38,188,193,103,203,161,160,157,144,170,77,74,46,133,6,122,101,217,117,94,137,179,114,55,112,127,169,86,91,159,247,220,131,161,163,63,214,33,90,222,126,61,4,30,25,102,21,157,1,134,67,7,54,187,51,202,42,160,124,157,154,170,206,237,110, 221,245,217,186,192,211,186,241,179,117,243,181,186,28,52,158,63,204,250,251,183,36,234,113,115,201,184,167,81,114,140,223,250,240,234,10,155,121,238,180,82,248,97,195,155,88,180,55,140,211,43,135,61,212,44,24,167,37,20,180,142,255,63,12,235,192,88,57, 238,140,236,213,47,135,37,222,174,223,9,11,29,37,189,113,94,214,28,166,109,64,33,157,11,154,170,75,133,84,15,59,118,47,234,186,59,128,181,245,166,218,6,40,183,223,110,219,196,242,214,43,113,215,248,119,38,122,27,202,150,114,162,119,55,91,163,118,43,167, 237,215,246,158,116,188,228,8,77,252,220,26,137,179,111,125,63,227,105,135,207,232,101,18,109,153,100,108,247,37,142,100,19,116,11,164,109,70,194,199,137,175,40,178,47,181,181,113,57,157,143,62,236,22,216,250,236,51,147,74,179,176,53,224,164,166,237, 0,58,227,202,45,130,70,11,53,164,51,233,52,29,103,232,9,218,203,231,148,239,28,208,254,17,231,148,110,165,123,27,78,40,30,78,35,88,231,176,244,203,56,130,174,32,202,6,17,139,87,99,21,106,65,155,240,214,42,99,195,17,82,122,219,185,86,34,110,224,93,146, 42,200,122,24,167,253,1,90,56,148,166,157,244,116,160,45,163,35,220,130,142,205,83,30,93,200,255,111,239,90,114,27,6,161,224,190,167,136,212,173,101,241,248,188,7,82,213,77,183,61,70,239,127,134,206,96,91,197,53,118,18,119,151,70,89,5,41,177,147,129, 121,3,204,96,174,184,99,198,239,240,163,181,251,227,59,171,173,210,158,77,114,96,243,186,219,23,182,173,226,210,104,237,89,147,170,130,17,93,24,64,218,46,138,155,76,178,180,82,42,227,109,142,123,11,40,107,74,36,170,19,69,7,63,154,24,234,8,208,177,209, 0,216,228,143,73,86,66,153,87,183,156,229,98,218,180,126,116,91,43,100,65,82,117,120,84,59,76,233,182,125,178,146,115,85,54,175,190,178,211,8,104,178,5,90,139,143,154,0,33,42,99,140,197,184,161,132,169,0,186,93,154,189,74,140,11,97,154,10,220,188,164, 238,255,115,40,187,77,18,170,105,151,117,142,247,163,174,243,11,75,204,14,191,132,248,136,37,97,135,96,110,155,128,199,18,131,64,251,220,88,147,249,176,146,191,68,248,22,36,236,63,214,230,101,149,219,192,185,169,250,205,32,178,84,230,133,85,90,222,172, 208,168,102,201,64,150,28,126,86,211,79,144,207,98,35,232,221,249,58,240,51,164,157,47,3,6,103,228,243,22,226,133,54,57,208,106,142,67,205,234,21,169,209,25,9,53,240,82,234,192,119,217,57,179,101,246,28,227,68,7,162,60,122,112,226,234,152,131,103,210, 5,147,102,141,180,179,65,67,130,189,28,62,31,129,26,46,170,151,68,99,178,87,173,219,106,234,121,203,213,36,150,233,56,164,72,150,209,43,174,46,202,123,135,254,12,245,169,29,217,41,164,95,38,57,250,60,115,140,80,13,250,137,7,55,127,72,111,179,173,52,207, 109,57,116,249,118,125,253,167,245,142,201,61,122,231,213,190,248,218,233,244,250,136,1,214,43,250,102,137,62,104,73,242,59,37,129,57,38,123,104,115,44,228,146,170,168,135,131,102,239,87,25,12,238,19,135,212,30,68,205,185,138,27,125,201,33,255,104,131, 201,207,161,30,92,213,228,53,38,27,199,210,122,75,31,129,124,41,186,91,166,22,164,159,113,230,147,189,33,108,50,51,219,112,141,173,34,56,43,216,195,10,89,119,126,212,183,111,158,64,158,0,210,54,64,110,112,44,45,142,141,195,145,64,250,118,29,232,141,167, 109,189,191,124,3,80,75,3,4,20,0,2,0,8,0,106,128,249,52,126,63,165,149,12,18,0,0,232,90,0,0,18,0,0,0,100,111,99,117,109,101,110,116,45,112,114,105,110,116,46,115,118,103,237,92,91,115,218,216,150,126,239,95,193,144,151,78,29,35,246,253,226,196,57,213, 147,212,153,58,83,153,75,157,238,174,121,22,66,216,116,48,120,4,216,78,126,253,124,107,75,136,45,16,32,108,39,233,153,9,116,151,165,181,239,107,127,235,182,247,34,111,255,250,120,59,235,221,231,197,114,186,152,95,245,121,194,250,189,124,158,45,198,211, 249,245,85,255,247,223,254,54,112,253,222,114,149,206,199,233,108,49,207,175,250,243,69,255,175,239,126,122,251,79,131,65,239,125,145,167,171,124,220,123,152,174,110,122,127,159,127,90,102,233,93,222,251,249,102,181,186,187,28,14,31,30,30,146,105,69, 76,22,197,245,240,117,111,48,64,203,229,253,245,79,189,94,15,195,206,151,151,227,236,170,95,213,191,91,23,179,80,111,156,13,243,89,126,155,207,87,203,33,79,248,176,191,173,158,109,171,63,228,163,164,200,151,139,117,145,149,221,103,89,92,179,24,79,182, 85,49,147,7,25,42,113,239,253,144,137,161,16,3,212,24,44,63,207,87,233,227,96,190,124,21,53,197,4,219,154,10,198,216,16,101,219,154,221,106,93,62,206,192,134,131,147,9,165,241,232,96,253,29,254,175,27,108,8,73,185,214,9,90,230,201,60,95,13,63,252,246, 161,46,28,176,100,188,26,71,221,108,56,223,24,183,177,29,243,244,54,95,222,165,89,190,28,110,232,161,253,166,203,203,241,34,163,58,87,125,60,172,105,59,6,119,197,116,190,74,54,171,139,43,142,210,37,42,14,111,22,183,249,240,143,233,237,109,154,13,151, 69,54,204,238,151,67,96,231,122,49,152,102,139,249,96,117,131,109,29,98,168,89,58,154,229,195,52,91,1,116,203,208,217,102,10,151,53,20,89,162,228,95,198,249,125,62,107,142,22,85,144,162,108,59,190,234,99,82,194,123,21,222,111,242,233,245,205,234,170, 175,220,221,99,32,60,76,199,171,155,234,253,29,8,111,199,249,100,73,5,101,91,122,147,161,0,69,69,58,158,166,179,127,161,63,88,114,89,41,154,94,182,152,205,242,12,157,167,179,135,244,115,57,119,250,132,109,188,188,41,114,192,238,21,158,243,180,216,244, 161,153,97,117,61,26,175,57,132,102,146,215,197,215,21,241,247,249,116,5,124,173,151,121,241,43,237,209,127,204,127,95,230,123,181,126,43,210,249,18,128,184,189,234,223,166,171,98,250,248,243,64,36,214,42,233,252,5,195,151,39,222,120,203,204,5,231,160, 27,33,47,6,206,138,196,57,173,94,215,157,101,143,87,125,195,116,98,185,18,126,75,253,76,252,50,137,81,214,109,169,147,214,186,147,214,186,5,180,9,183,9,106,58,211,239,13,43,246,54,89,211,153,189,196,182,22,174,190,171,202,223,46,87,139,187,77,93,96,101, 245,121,6,56,18,113,128,30,23,197,229,104,150,102,159,222,4,194,2,252,156,174,62,95,242,55,253,109,139,197,100,178,204,49,44,139,104,1,86,104,129,145,68,189,128,167,141,197,218,198,226,237,99,169,45,179,134,205,37,127,63,132,70,155,253,92,132,182,3,116, 192,157,231,137,145,127,94,132,182,0,80,185,254,139,131,162,29,128,154,29,6,96,84,203,180,117,152,232,254,249,146,241,205,224,174,197,41,184,63,81,99,28,133,59,118,238,216,198,10,251,13,224,46,18,110,125,27,220,31,249,85,95,50,80,181,229,219,189,251, 76,84,179,11,225,71,209,90,87,144,16,248,132,128,99,191,130,238,181,134,139,238,208,127,197,194,231,137,218,23,99,169,115,224,216,58,90,103,64,98,52,243,237,245,111,224,231,97,253,139,98,215,80,134,66,37,229,42,155,202,144,39,206,234,152,58,105,173,59, 105,173,75,202,208,39,92,52,136,135,113,205,171,94,47,88,203,131,12,159,45,69,216,196,115,99,236,235,142,98,117,182,46,86,112,110,206,0,228,36,124,118,32,130,181,75,203,185,84,173,200,172,150,210,134,80,12,174,78,171,103,212,114,173,29,115,38,149,114, 194,245,207,158,242,102,15,216,89,250,186,125,245,93,5,4,203,48,79,212,216,45,187,166,120,255,36,219,148,236,184,31,45,75,29,103,248,166,231,115,45,26,93,183,49,166,219,232,163,116,228,71,246,228,232,207,230,162,148,167,185,40,245,211,185,216,170,81, 147,74,90,186,177,81,218,19,248,234,174,200,95,138,109,198,187,211,108,107,176,230,76,182,5,49,27,191,136,200,142,232,227,15,118,213,234,245,29,83,88,204,116,217,52,38,158,142,253,86,155,255,242,216,55,238,244,38,26,255,140,77,52,225,243,12,13,98,188, 248,243,65,223,69,225,222,33,191,229,228,194,156,56,225,194,181,201,132,157,152,137,238,30,110,68,163,169,243,217,216,54,218,75,178,209,116,0,159,101,231,115,201,229,110,236,236,115,130,178,87,217,40,243,25,63,75,99,8,171,157,17,204,246,91,151,209,69, 99,24,251,12,141,209,186,232,23,215,24,66,251,83,123,38,204,51,244,69,206,232,251,213,252,180,19,91,168,152,134,194,49,190,109,11,157,51,231,33,40,56,79,231,217,156,224,201,90,215,62,124,7,39,89,24,254,116,0,41,79,223,175,13,32,174,205,225,88,99,179, 14,170,164,158,233,57,236,197,39,221,141,14,13,111,158,206,200,137,163,239,83,25,217,30,30,35,188,20,136,176,132,101,220,52,34,81,97,18,47,180,246,170,17,181,82,36,234,181,242,205,8,119,191,110,214,90,183,219,161,205,126,160,205,149,148,93,226,245,224, 59,158,52,160,39,162,88,58,164,177,34,97,70,201,136,37,116,160,227,17,45,11,199,165,104,28,254,104,155,128,125,70,179,198,65,145,79,28,38,195,34,91,124,252,44,74,48,103,218,99,118,195,172,244,120,48,220,89,238,46,232,84,74,226,191,215,79,224,234,142, 196,40,101,59,113,213,70,220,127,14,87,181,74,184,52,92,54,143,201,56,157,75,56,17,141,65,92,53,42,49,90,196,42,159,184,186,95,247,24,87,37,118,64,169,86,174,42,193,161,142,163,147,144,234,225,37,184,170,121,55,172,118,113,246,58,112,213,136,68,56,1, 27,191,131,85,203,52,84,190,106,112,213,178,196,10,229,173,217,193,170,5,212,181,20,127,106,174,118,212,0,238,101,52,0,247,64,154,85,70,54,184,42,192,63,110,93,164,168,137,171,66,39,92,49,17,207,144,151,117,45,52,171,239,116,106,199,189,179,166,60,141, 102,137,211,82,27,125,49,96,232,87,146,98,0,35,37,112,245,34,66,31,221,70,28,97,100,105,78,95,130,147,224,142,128,10,225,188,201,73,149,88,231,109,228,213,134,131,244,196,88,167,149,182,77,78,234,132,105,99,57,239,192,73,150,120,165,188,220,156,235,51, 58,166,182,23,38,1,100,181,181,249,64,92,168,132,121,201,173,125,17,94,250,46,188,20,81,181,103,233,79,151,56,201,69,228,193,4,253,169,19,229,44,148,98,147,147,2,94,159,23,210,53,245,167,78,164,179,177,35,122,12,147,48,221,220,240,10,147,8,170,172,226, 23,152,130,7,16,5,113,82,188,4,11,227,213,28,179,65,47,132,70,231,18,1,111,84,178,38,15,93,226,173,0,107,27,60,108,169,75,60,4,150,52,156,3,214,73,91,10,207,161,156,43,30,42,169,4,132,28,60,212,154,91,255,114,60,116,221,120,168,248,139,242,80,158,193, 67,217,202,67,222,205,226,48,97,69,205,66,11,142,134,71,237,20,180,226,75,240,207,118,180,216,166,179,109,121,59,164,228,149,240,84,39,200,80,210,206,248,126,154,63,252,212,236,225,97,58,31,47,30,6,240,163,165,218,8,230,110,33,220,105,89,115,107,183, 112,147,87,99,244,161,230,85,162,141,171,207,1,234,10,215,235,233,56,31,140,70,11,140,176,42,214,27,62,45,111,22,15,161,104,217,32,215,205,234,212,163,117,201,236,42,161,39,238,184,152,142,15,244,91,208,30,76,210,217,114,175,219,108,93,20,212,235,44, 253,156,35,50,9,127,246,86,77,17,199,0,104,131,34,132,75,188,87,138,1,157,71,196,13,231,123,143,29,95,22,139,219,237,233,84,77,190,75,175,243,229,77,10,78,193,216,180,21,86,209,86,8,20,171,242,209,162,24,231,69,92,0,109,233,225,172,187,70,133,16,186, 1,74,229,121,101,85,68,93,110,10,202,152,178,191,205,122,162,148,173,221,57,16,219,226,73,198,204,155,76,103,51,244,99,133,159,100,147,13,252,110,243,85,58,78,87,233,182,219,13,69,213,9,85,227,201,229,63,62,252,173,14,89,179,236,242,191,22,197,167,109, 4,74,21,210,209,98,13,100,213,113,53,229,104,101,151,36,159,233,234,221,244,22,83,162,164,186,191,60,222,206,128,248,186,160,81,121,245,249,46,223,118,90,118,187,73,16,108,77,50,28,103,183,83,106,52,252,117,133,165,253,157,6,137,66,235,170,211,233,106, 150,191,251,79,202,123,235,125,168,176,24,102,80,22,52,234,102,148,14,185,40,222,69,147,160,197,254,114,93,199,198,251,61,255,107,250,105,61,234,253,186,202,161,1,138,182,142,73,196,247,59,9,53,247,198,163,209,102,211,44,159,47,79,51,34,52,158,222,3, 30,183,183,139,249,50,240,164,106,187,28,142,62,15,150,233,16,206,224,112,143,33,101,55,239,170,94,202,84,191,228,118,189,156,102,55,233,108,150,100,95,194,212,170,90,205,150,235,209,31,80,96,141,165,209,212,254,57,189,222,225,14,81,103,211,119,227,154, 223,21,161,181,214,236,174,56,94,33,36,45,158,232,99,145,165,179,19,85,32,45,39,6,26,173,71,163,89,254,71,126,98,48,8,219,201,58,29,230,12,121,185,91,159,168,147,173,239,150,167,184,55,110,171,80,210,26,59,83,238,107,115,15,3,52,73,152,99,225,254,184, 139,192,72,190,207,4,95,19,218,119,121,1,129,93,158,132,118,91,102,240,63,242,187,98,49,94,135,132,211,38,166,159,217,241,135,233,18,222,195,104,221,218,113,145,255,247,122,138,22,79,234,249,223,23,43,176,228,101,251,252,101,117,120,178,207,226,66,94, 76,239,195,150,18,26,150,47,59,233,95,111,210,34,255,101,54,253,20,51,35,64,175,130,218,230,56,50,178,52,111,135,27,59,20,222,174,247,156,134,197,250,238,118,49,206,43,219,191,107,7,103,233,40,135,177,251,72,101,61,30,25,205,202,83,168,70,188,254,169, 121,136,58,158,46,239,80,227,114,58,39,143,174,225,10,94,107,38,182,145,197,170,197,251,84,28,193,189,38,95,189,74,21,19,94,176,16,255,40,138,188,188,150,23,210,39,86,11,225,94,111,207,159,11,136,227,150,171,193,99,209,8,162,188,113,241,133,255,99,160, 107,159,8,45,226,116,138,58,83,218,186,68,106,203,227,147,251,202,151,227,18,163,26,217,200,31,8,39,167,24,88,113,43,247,143,146,183,39,214,138,9,102,184,211,111,226,76,65,242,35,46,97,134,127,126,181,159,118,247,58,148,70,119,94,225,181,88,207,242,203, 249,98,254,5,126,208,27,136,219,226,83,120,205,171,231,210,235,188,228,155,87,234,22,187,120,137,61,158,143,99,226,31,139,233,252,18,24,207,139,55,183,105,241,41,47,202,94,202,231,193,114,149,22,171,6,229,118,58,110,188,231,243,113,99,220,208,213,108, 138,63,151,106,67,27,167,240,157,138,2,32,136,107,18,181,60,132,191,100,27,218,118,145,247,211,229,116,52,157,209,75,120,156,229,111,154,72,122,179,184,207,139,201,108,241,176,41,143,5,225,46,93,221,68,123,80,71,1,64,55,121,55,112,154,51,124,118,118, 143,26,105,166,227,253,6,245,223,122,3,193,125,56,1,166,28,69,2,146,99,210,245,222,31,160,71,84,41,108,98,52,83,188,157,136,30,172,73,172,82,218,43,144,93,162,53,115,166,199,133,78,172,67,96,121,33,4,224,226,152,213,27,154,116,23,136,233,148,86,66,106, 52,223,82,7,74,38,218,10,4,107,189,129,148,232,95,43,25,205,202,28,152,235,151,222,51,144,186,159,15,253,3,169,207,70,234,51,247,64,242,31,123,208,113,15,118,133,188,54,5,59,66,222,74,143,168,145,144,183,17,169,7,203,232,154,207,232,72,200,7,220,179, 112,203,162,35,41,143,136,177,152,71,228,88,206,185,133,13,20,92,219,134,156,183,78,183,33,231,91,85,215,48,109,7,149,228,246,106,243,122,19,189,70,246,181,248,76,39,74,150,115,173,236,246,228,184,120,172,169,46,58,27,165,108,237,132,129,45,113,182,54, 44,45,44,120,253,94,31,168,36,202,115,104,198,109,243,202,248,74,71,7,81,186,121,101,73,134,23,28,234,239,56,31,135,236,42,29,59,237,73,74,37,23,175,180,167,111,83,52,88,226,195,199,137,99,208,173,251,218,50,45,150,239,86,22,47,163,79,203,154,216,150, 83,1,167,54,225,146,57,111,248,133,224,137,238,125,236,41,150,56,11,29,161,75,194,251,158,226,216,127,109,54,53,240,106,41,27,215,209,171,117,14,0,233,41,68,18,154,51,229,1,190,68,8,233,185,167,134,2,254,14,172,17,39,170,209,112,151,84,15,120,179,206, 106,186,251,84,137,131,219,3,146,74,56,243,138,58,4,254,188,245,70,81,99,133,93,225,210,6,170,53,116,165,66,52,152,5,233,237,133,48,137,0,220,180,104,210,172,85,152,4,45,162,166,74,58,160,101,94,243,178,207,13,21,78,158,81,90,148,19,178,12,106,241,2, 11,15,43,113,6,48,171,94,63,246,194,117,144,196,228,75,2,58,73,132,228,52,225,146,32,1,43,207,201,102,110,251,140,104,245,232,31,35,234,118,166,239,155,84,225,24,84,46,104,134,193,81,243,97,237,240,24,141,34,154,87,90,195,89,37,26,23,12,126,100,152,140, 116,156,27,99,136,157,116,14,205,37,102,172,149,119,198,40,98,59,132,219,90,144,156,118,92,88,114,1,18,174,49,127,106,108,18,180,148,206,217,176,147,82,42,99,65,179,82,40,181,217,236,29,116,68,114,95,9,68,51,151,238,176,120,24,215,221,144,188,50,150, 190,59,182,164,186,126,148,102,215,168,32,212,90,125,15,155,242,85,44,120,119,249,110,200,54,181,82,113,104,81,201,118,121,111,76,155,231,173,214,82,96,215,45,36,199,10,31,209,76,2,233,246,198,7,57,229,204,98,199,65,147,76,73,79,216,0,136,56,23,128,53, 196,42,129,82,132,131,41,9,132,16,94,83,138,21,112,228,45,97,4,146,234,149,55,134,42,122,47,49,58,161,218,25,120,159,28,32,148,30,27,72,234,160,166,125,36,129,163,107,66,4,94,91,234,123,146,74,231,96,221,68,68,13,52,19,100,2,104,198,52,137,98,152,64, 33,209,20,132,71,6,217,231,40,135,36,4,252,91,11,132,251,82,139,105,169,4,11,84,225,181,6,21,52,50,29,218,68,204,128,80,27,1,51,161,35,218,199,54,78,238,203,66,64,255,171,201,136,190,135,193,158,223,231,216,206,241,17,175,233,238,241,12,136,119,180,20, 7,165,53,140,223,85,50,219,69,91,189,222,179,109,148,32,103,25,255,63,41,170,59,34,70,170,218,151,54,142,174,165,181,41,109,40,229,27,104,23,81,223,19,213,194,248,16,180,106,42,25,87,102,132,148,1,172,220,25,81,194,210,67,86,32,163,18,250,151,11,39,75, 0,35,54,211,78,19,21,225,152,135,31,6,225,129,5,14,118,23,70,1,182,93,105,18,10,230,165,240,65,70,13,41,204,82,158,32,204,26,49,28,228,9,98,98,109,168,168,33,60,218,19,77,105,131,129,154,52,120,39,48,61,180,156,154,10,123,6,187,36,76,37,163,27,170,135, 145,84,210,233,114,28,44,60,28,163,160,84,210,18,233,246,26,30,164,143,104,100,87,181,100,154,153,136,72,154,196,24,39,157,112,113,243,68,89,8,164,140,71,169,73,245,116,62,110,137,219,153,191,111,16,49,158,36,254,36,198,67,195,113,95,42,18,15,215,22, 147,65,88,164,130,186,129,34,193,100,57,53,166,71,73,233,142,193,87,241,210,96,104,216,76,198,5,244,33,237,2,204,164,145,146,116,165,71,189,176,49,204,192,201,182,193,184,162,186,181,46,184,68,48,208,14,26,140,146,203,40,99,39,218,255,54,252,68,154,101, 171,219,163,148,180,211,110,95,119,107,82,126,246,252,68,248,8,158,55,145,206,57,86,196,173,189,32,221,14,181,170,72,47,194,253,134,147,230,164,143,168,239,137,10,39,14,86,38,162,74,75,153,13,90,153,11,48,155,145,153,104,144,224,226,192,230,135,46,107, 42,184,46,21,220,27,11,42,167,31,91,56,102,228,1,234,182,135,247,13,106,53,20,38,15,199,138,240,191,157,81,203,130,158,238,223,232,51,14,43,94,57,79,223,118,255,134,139,63,77,208,252,36,173,57,154,45,178,79,71,252,155,56,214,251,154,86,73,155,215,237, 12,22,170,27,131,75,234,255,26,6,239,75,176,137,242,45,171,80,151,146,175,224,129,69,41,131,155,232,152,83,58,146,129,209,138,227,104,78,134,8,190,84,35,226,214,228,218,9,21,229,62,23,225,202,156,195,101,199,127,186,17,179,215,100,209,142,128,40,218, 143,226,250,131,209,190,176,176,171,141,31,207,210,191,68,80,253,202,150,237,45,10,54,113,231,7,184,155,144,31,65,95,179,201,54,64,142,50,235,79,6,253,122,47,232,175,51,184,143,98,83,30,192,38,107,67,204,110,217,222,88,237,234,62,186,254,8,143,179,116, 149,255,124,36,155,179,84,242,20,252,211,150,245,232,192,73,32,202,55,189,95,122,240,81,96,79,37,103,209,19,158,241,237,57,196,9,136,112,73,91,119,107,208,54,194,151,125,211,86,2,163,106,219,82,252,120,180,56,43,177,82,118,223,82,28,18,218,181,103,92, 70,9,148,181,173,133,239,122,24,2,251,201,236,167,32,208,226,225,63,111,187,247,214,67,198,252,170,159,22,217,89,97,100,112,25,178,22,87,67,238,91,126,171,100,200,87,135,240,195,205,212,178,180,211,18,158,107,69,13,33,28,153,126,155,80,224,199,77,160, 58,38,164,234,201,144,54,198,100,168,137,248,18,177,87,160,85,125,170,77,235,143,68,229,85,102,188,160,95,179,87,35,249,196,59,104,2,29,81,75,111,218,91,217,160,130,134,232,140,201,224,138,113,230,224,159,145,223,204,173,144,37,173,30,9,84,83,81,213, 102,77,225,196,138,123,207,37,11,179,103,210,250,16,100,210,216,44,28,208,72,202,162,12,167,68,220,178,224,242,213,180,176,118,3,101,231,84,68,229,178,228,71,104,205,20,167,113,218,248,121,32,154,108,85,31,202,30,132,220,57,97,230,166,209,179,194,205, 122,228,237,21,131,52,186,252,135,97,142,69,162,7,172,60,246,84,31,94,196,246,55,59,199,195,229,99,6,125,47,94,110,64,29,27,139,221,10,219,26,206,66,19,199,69,249,214,34,39,230,132,75,30,137,227,245,83,181,242,254,5,142,68,140,160,120,115,62,215,202, 41,127,232,190,250,176,151,21,191,196,63,58,247,116,70,106,244,89,87,61,187,106,235,187,56,87,187,147,136,157,172,147,122,245,121,151,62,181,3,225,36,111,185,224,247,201,222,143,194,106,215,171,229,7,99,100,222,212,126,147,224,126,237,90,253,182,4,5, 219,189,207,99,211,56,50,251,104,189,45,233,9,63,192,246,21,192,118,112,195,127,48,253,27,75,184,254,154,18,238,59,73,56,231,201,183,147,112,251,67,194,127,72,248,255,43,9,247,45,50,194,95,74,194,17,20,236,70,238,101,46,196,230,79,215,84,202,77,178,164, 56,144,91,153,22,197,226,161,127,222,89,240,126,68,232,76,148,52,17,220,100,129,245,138,112,75,128,128,203,121,37,233,0,158,254,1,50,231,37,93,35,182,82,185,161,211,113,68,114,20,210,53,95,195,229,53,252,110,115,225,232,84,215,146,151,107,132,184,224, 26,141,141,179,228,139,135,49,165,65,116,181,71,109,206,100,63,148,218,158,171,181,9,80,106,233,251,140,11,187,77,46,135,118,223,83,112,56,251,46,73,103,1,178,111,233,135,35,239,126,250,31,80,75,3,4,20,0,2,0,8,0,121,128,249,52,162,251,72,104,220,10,0, 0,238,60,0,0,13,0,0,0,101,100,105,116,45,99,111,112,121,46,115,118,103,237,90,91,147,218,200,21,126,223,95,65,240,139,167,118,144,250,174,110,230,178,229,216,217,212,166,156,77,213,218,91,121,76,9,212,48,218,17,18,145,196,0,251,235,115,186,37,144,132, 154,241,48,198,246,110,101,160,166,6,78,159,190,125,231,126,196,245,15,155,69,50,120,208,121,17,103,233,205,16,123,104,56,208,233,52,139,226,116,126,51,252,245,227,143,35,57,28,20,101,152,70,97,146,165,250,102,152,102,195,31,110,191,187,254,203,104,52, 120,155,235,176,212,209,96,29,151,119,131,159,210,251,98,26,46,245,224,245,93,89,46,199,190,191,94,175,189,184,38,122,89,62,247,47,6,163,17,204,44,30,230,223,13,6,3,216,54,45,198,209,244,102,88,243,47,87,121,98,249,162,169,175,19,189,208,105,89,248,216, 195,254,176,97,159,54,236,107,61,241,114,93,100,171,124,90,45,63,157,182,57,243,104,214,176,194,73,214,212,50,97,165,148,143,136,79,200,8,56,70,197,54,45,195,205,40,45,94,181,166,194,1,93,83,9,66,200,135,177,134,243,105,92,227,77,2,48,28,61,140,29,109, 239,14,208,47,225,111,63,97,143,97,117,215,25,204,212,94,170,75,255,221,199,119,254,142,123,132,188,168,140,90,203,236,102,117,246,237,136,35,13,23,186,88,134,83,93,236,183,176,243,215,113,84,222,221,12,153,92,110,236,247,59,29,207,239,202,22,33,142, 110,134,112,67,134,149,180,223,119,103,24,239,181,8,121,148,84,172,245,194,237,33,70,191,143,244,131,78,186,115,163,108,58,9,11,56,174,127,151,45,180,95,198,115,157,151,254,244,161,240,103,185,214,145,46,238,203,108,105,207,13,186,56,207,70,241,52,75, 71,229,29,168,137,15,59,36,225,36,209,126,56,45,97,143,162,183,176,185,233,205,80,71,113,57,154,102,203,173,183,19,207,254,116,217,170,92,174,202,255,232,77,169,211,234,152,176,81,11,45,59,108,166,237,105,195,91,88,224,58,210,179,194,44,84,97,98,190, 49,144,191,29,131,81,16,172,14,243,191,231,97,20,131,46,87,124,21,103,119,4,115,130,101,61,9,166,21,112,209,29,51,220,163,220,38,112,120,67,132,195,39,89,62,126,53,67,51,164,103,87,150,148,129,0,227,114,59,6,187,173,94,87,195,102,110,54,155,21,186,52, 152,215,131,173,49,43,68,88,1,54,39,96,242,254,145,237,119,108,132,8,229,92,153,43,69,164,224,98,248,232,145,181,52,239,131,35,95,61,105,219,192,185,173,36,1,151,130,208,199,183,157,217,215,211,183,117,44,17,73,120,211,19,192,198,159,0,155,236,183,191, 246,187,122,240,184,218,236,116,21,206,149,232,41,108,20,38,235,112,91,12,143,235,21,33,92,157,162,86,110,176,28,232,15,157,130,194,39,225,234,218,205,141,167,123,55,250,76,24,29,40,17,118,2,74,193,212,188,159,141,18,17,39,161,52,145,230,253,132,221, 220,40,17,249,133,148,205,6,173,241,93,174,33,200,190,114,224,249,24,220,180,65,102,131,111,134,148,123,74,9,46,201,158,186,5,42,131,56,1,52,210,220,107,67,128,151,122,66,48,213,162,110,13,53,240,130,0,5,45,234,188,222,236,215,52,46,33,74,175,10,157, 127,48,145,238,95,233,175,133,238,113,125,204,195,180,128,176,186,184,25,150,230,99,2,73,205,107,225,97,129,37,21,151,204,67,148,50,140,47,26,40,207,105,161,248,235,89,40,167,95,211,66,57,255,22,186,199,241,227,112,7,93,221,163,30,85,2,33,214,209,61, 42,60,80,49,74,105,87,247,152,135,3,96,149,93,221,147,30,10,16,149,95,70,247,64,221,185,60,139,238,61,2,90,149,126,28,71,141,17,46,63,255,118,139,176,204,227,205,107,136,142,144,44,40,121,185,203,73,218,31,148,12,184,226,151,35,233,113,38,41,65,151,35, 230,73,133,3,76,47,58,98,35,196,163,72,82,138,59,98,195,18,28,9,193,12,117,197,198,189,64,114,162,88,87,108,202,99,74,18,42,191,36,176,54,254,62,134,171,64,103,195,21,192,83,146,35,230,198,21,174,202,196,229,8,244,26,116,85,225,10,87,162,16,62,192,85, 128,50,11,164,186,174,24,168,66,9,17,136,46,174,144,131,97,140,3,210,193,149,17,216,53,160,28,127,67,92,49,21,28,159,21,88,197,8,118,0,187,203,244,46,77,4,195,20,171,86,172,248,19,194,250,41,63,96,112,165,103,117,4,1,1,31,231,118,4,138,4,38,244,130,178, 10,201,44,174,144,58,7,95,218,13,92,251,166,134,179,159,246,245,163,41,30,163,135,88,175,155,66,207,20,170,245,58,203,112,174,109,188,4,56,171,128,89,15,76,178,60,210,249,110,104,162,205,187,51,84,135,212,126,193,176,151,161,89,123,207,5,232,184,198, 139,187,48,202,214,128,197,225,224,239,89,182,48,107,51,12,202,75,197,225,240,116,115,51,228,160,129,224,103,25,235,13,110,77,181,239,65,8,228,146,247,6,87,121,14,18,29,37,225,86,195,213,236,191,157,4,138,187,108,61,207,13,68,179,48,217,99,180,159,106, 134,70,147,73,182,49,193,110,213,27,134,74,125,101,186,62,163,85,165,83,117,187,161,197,177,142,83,184,237,168,238,80,200,128,30,97,216,181,44,132,82,71,56,54,198,0,217,145,65,184,62,97,61,68,205,229,218,144,87,87,172,21,103,161,203,48,10,203,176,81, 146,29,133,17,68,119,29,129,60,154,141,127,121,247,227,62,7,155,78,199,255,206,242,251,38,125,50,12,225,36,91,193,217,247,121,161,233,51,76,199,198,120,194,242,54,94,192,9,76,127,233,251,205,34,1,117,221,15,116,152,203,237,82,55,139,86,203,238,122,101, 206,126,91,52,93,196,102,146,255,161,140,147,228,39,179,73,43,87,172,23,141,203,68,223,254,45,138,203,193,219,108,185,181,155,87,180,14,27,220,89,223,18,132,248,8,163,17,230,150,205,210,58,92,83,211,58,204,242,219,214,41,13,26,111,230,251,244,176,191, 245,155,52,130,89,197,224,231,56,41,138,44,117,29,192,152,112,127,25,203,217,219,209,44,92,172,38,191,129,155,236,44,96,192,250,107,56,63,56,133,161,38,241,173,105,34,93,251,245,23,39,199,212,98,211,231,168,104,157,133,237,185,122,71,48,56,36,241,84, 167,197,167,101,104,47,21,63,128,11,90,44,178,180,176,226,172,231,22,254,100,59,42,66,31,66,135,223,147,229,52,75,193,11,79,86,167,138,224,31,225,253,106,50,248,80,106,136,12,249,169,2,232,239,105,121,141,5,180,45,226,253,225,221,91,70,113,226,181,187, 160,46,117,14,90,94,124,18,84,87,103,249,23,189,204,179,104,101,27,140,93,52,63,115,225,119,113,81,161,226,90,56,215,255,93,197,48,227,89,43,255,156,149,0,201,121,215,124,83,30,63,236,103,161,160,243,248,193,138,212,104,67,113,222,67,127,184,11,115,253, 38,137,239,219,96,88,213,171,85,109,87,165,182,220,243,181,191,243,223,246,219,188,241,235,157,128,183,15,14,73,56,209,201,205,240,189,25,28,224,126,224,203,86,203,69,22,233,122,250,46,30,204,219,217,214,28,10,130,38,255,170,11,242,125,225,13,137,138, 125,53,5,108,233,202,169,16,230,72,30,203,85,5,134,34,128,195,39,66,16,215,35,98,42,2,10,21,173,50,95,46,154,70,68,14,254,168,65,122,107,107,95,155,216,182,219,173,38,130,162,170,80,109,183,104,119,161,151,56,218,160,117,220,198,212,115,118,72,205,182, 144,228,169,126,79,183,65,1,74,112,198,25,39,87,117,147,162,238,195,206,32,106,117,190,56,122,181,150,156,175,18,61,214,15,58,205,162,232,10,44,47,187,215,227,52,75,117,253,185,74,45,90,147,106,178,201,132,65,146,99,80,253,178,77,251,45,139,211,49,104, 189,206,175,22,97,126,175,243,106,177,234,243,168,40,195,188,236,80,22,113,212,249,174,211,168,179,189,93,42,137,225,223,152,29,158,33,10,33,243,200,243,112,219,153,97,168,85,35,102,140,14,103,244,49,120,136,139,120,18,39,134,104,63,38,250,42,138,139, 37,40,229,56,78,205,133,174,178,7,157,207,146,108,189,27,111,155,76,87,47,114,155,149,114,33,48,87,162,221,3,202,55,213,0,188,57,110,15,216,100,151,11,162,40,58,208,36,108,42,126,198,144,116,104,146,105,16,6,66,72,217,215,36,168,150,20,199,156,43,135, 38,49,147,214,31,213,164,174,90,140,33,21,122,253,170,223,246,184,56,89,151,94,73,41,67,201,187,234,100,43,112,69,21,101,39,232,211,215,209,136,79,137,183,111,196,149,116,251,116,147,52,131,112,17,87,156,31,184,9,143,83,194,49,81,46,225,82,40,246,48, 234,60,63,170,133,75,164,105,87,4,12,59,133,203,208,147,133,107,193,57,85,144,78,141,16,232,194,45,89,65,255,68,146,53,102,136,42,135,206,186,146,10,60,4,14,29,43,116,154,67,39,248,184,67,7,73,201,23,135,254,167,112,232,47,178,249,230,178,113,217,15, 119,89,28,234,91,220,99,134,122,196,182,141,39,96,59,79,240,168,191,144,21,23,63,139,191,48,171,29,247,23,156,188,248,139,23,127,241,34,155,103,251,11,246,180,8,253,60,127,65,200,206,19,60,230,47,204,35,15,71,193,248,92,127,65,31,245,23,226,197,95,252, 17,253,197,181,63,119,182,57,48,145,130,54,205,134,101,88,222,245,228,119,172,40,179,207,160,206,84,149,237,230,145,243,167,238,79,79,210,155,155,3,52,255,28,96,238,161,128,40,38,46,33,67,231,8,73,78,6,239,7,140,121,10,138,102,138,91,212,183,3,198,61, 194,56,10,218,84,160,49,165,8,15,12,45,224,84,49,222,166,153,135,110,146,18,102,214,220,83,169,244,8,229,66,138,106,205,154,202,96,62,38,152,202,1,140,11,172,24,3,154,128,74,78,6,1,29,80,1,115,48,84,117,45,218,251,214,233,27,234,219,1,100,24,1,15,8,106, 83,129,198,17,69,196,144,136,132,205,113,139,100,234,125,108,215,219,145,154,131,191,109,17,247,55,108,118,104,144,112,33,249,251,192,225,64,48,233,186,169,230,193,95,22,105,243,76,164,184,25,78,119,175,179,150,203,112,43,238,112,188,112,114,142,136, 226,216,85,46,131,186,49,20,8,230,46,151,85,64,153,171,23,130,57,97,236,171,215,203,246,65,252,133,219,232,228,31,186,94,62,240,73,71,52,226,0,104,51,137,16,220,179,105,99,43,4,41,44,43,253,55,15,253,65,141,141,213,113,76,169,181,10,41,192,252,152,177, 62,137,64,247,241,101,245,192,31,209,192,208,56,226,148,40,99,167,230,199,27,196,218,62,245,20,3,133,183,118,202,4,108,171,6,198,98,153,144,8,44,90,121,96,154,96,208,176,181,160,18,49,101,72,76,50,25,152,157,251,68,26,84,225,218,30,17,85,71,116,29,187, 99,64,71,149,200,17,105,29,218,97,126,8,248,28,79,46,192,147,179,207,247,228,255,7,217,186,51,178,54,153,17,136,148,98,137,3,151,188,28,46,224,36,211,55,191,180,115,180,202,204,75,126,83,41,61,93,58,61,169,124,94,126,94,185,130,192,19,16,218,56,132,77, 230,81,200,75,133,137,104,96,134,136,97,76,217,37,51,191,111,197,130,66,208,6,7,160,148,64,204,184,2,172,36,0,103,140,158,194,39,201,141,209,83,28,40,197,141,43,192,224,52,136,84,216,80,1,94,196,7,246,199,179,24,7,150,145,147,128,41,108,183,6,19,230, 150,141,35,105,55,238,209,128,34,185,132,48,98,142,194,33,117,86,204,121,232,94,36,173,156,31,11,158,16,72,31,111,52,40,103,163,225,212,126,199,19,26,147,132,4,248,165,112,120,105,52,188,200,230,121,141,6,176,31,234,40,213,149,249,245,29,161,244,233, 141,6,151,109,155,22,2,125,82,163,33,56,167,191,192,129,121,212,24,32,226,190,47,127,241,23,47,254,226,69,54,207,246,23,193,89,26,147,71,252,5,197,135,254,162,110,64,217,127,215,230,55,147,183,223,253,15,80,75,3,4,20,0,2,0,8,0,125,128,249,52,153,109, 230,156,183,23,0,0,27,89,0,0,12,0,0,0,101,100,105,116,45,99,117,116,46,115,118,103,220,92,105,115,219,86,150,253,158,95,193,97,190,68,213,36,248,246,69,182,220,229,216,157,174,76,37,51,85,157,164,102,190,165,32,18,146,216,166,8,54,72,89,82,126,253,156, 243,192,5,32,33,89,155,99,247,80,149,50,121,241,214,187,158,123,223,67,94,255,245,230,114,214,251,88,84,203,105,57,63,233,203,76,244,123,197,124,92,78,166,243,243,147,254,111,191,254,48,12,253,222,114,149,207,39,249,172,156,23,39,253,121,217,255,235, 155,111,94,255,199,112,216,123,87,21,249,170,152,244,174,167,171,139,222,143,243,15,203,113,190,40,122,223,93,172,86,139,227,209,232,250,250,58,155,174,137,89,89,157,143,142,122,195,33,122,46,63,158,127,211,235,245,48,237,124,121,60,25,159,244,215,237, 23,87,213,44,181,155,140,71,197,172,184,44,230,171,229,72,102,114,212,223,53,31,239,154,95,23,167,89,85,44,203,171,106,92,15,63,30,55,91,86,147,179,93,83,172,228,90,167,70,50,198,56,18,106,164,212,16,45,134,203,219,249,42,191,25,206,151,223,54,186,98, 129,93,93,149,16,98,132,103,187,150,15,107,117,124,51,3,27,238,92,76,122,218,156,29,172,95,224,191,109,135,45,15,235,189,158,161,103,145,205,139,213,232,253,175,239,71,155,214,67,145,77,86,147,198,48,155,94,173,121,91,226,152,231,151,197,114,145,143, 139,229,118,138,212,255,122,58,89,93,156,244,77,72,191,46,138,233,249,197,106,251,115,58,57,233,99,119,74,135,160,19,97,179,128,227,173,10,137,76,171,186,237,122,212,230,35,163,255,50,41,62,22,179,212,160,165,117,173,193,38,229,248,52,95,98,241,163,139, 242,178,24,253,115,122,121,153,143,71,203,106,60,26,127,92,142,160,141,231,229,112,58,46,231,195,213,5,20,101,132,105,102,249,233,172,24,229,227,21,6,92,30,12,198,189,158,244,139,201,116,53,28,95,173,178,141,124,182,43,44,110,22,101,181,26,158,77,103, 69,221,180,158,247,60,175,170,98,181,26,109,59,46,230,221,29,111,38,11,8,44,138,206,135,183,155,135,111,240,244,245,164,56,91,178,85,205,75,254,34,51,109,122,136,199,208,134,34,175,254,94,229,147,41,12,160,110,216,24,114,92,206,102,197,24,242,200,103, 215,249,109,189,209,205,88,237,174,74,185,184,30,20,195,46,87,229,98,211,22,172,89,221,206,176,73,18,135,24,177,172,142,191,21,233,243,42,145,74,104,197,116,117,123,44,95,245,119,125,202,179,179,101,129,137,69,131,150,180,1,61,148,242,178,223,27,61,111, 54,209,53,155,236,158,77,111,103,123,61,106,111,251,229,217,104,31,195,198,152,139,241,51,216,232,30,199,198,174,217,30,193,70,247,167,178,81,62,130,141,147,51,149,171,252,201,108,180,250,81,108,236,154,237,17,108,180,246,137,108,236,224,146,122,140, 178,21,138,127,79,230,146,126,156,178,77,2,255,30,48,91,55,151,244,39,149,141,191,242,217,62,151,206,215,191,127,155,79,87,136,184,87,203,162,250,133,81,235,191,231,191,45,139,254,126,171,95,171,124,190,68,136,188,60,233,95,230,171,106,122,243,29,98, 75,250,12,196,193,23,60,146,66,215,95,132,143,46,22,67,25,6,8,165,210,198,32,228,209,118,244,234,164,239,51,21,76,80,65,109,137,227,219,147,190,210,153,214,24,33,236,168,55,96,128,179,153,112,82,152,150,65,180,183,39,93,176,226,46,89,111,184,198,70,170, 127,175,84,254,246,131,182,218,118,202,252,78,225,54,135,55,247,15,159,155,14,71,221,41,243,157,112,219,27,253,164,9,252,239,207,63,253,248,254,247,16,253,239,253,199,201,252,70,66,0,81,101,209,99,35,91,234,45,168,38,243,54,42,239,245,174,173,98,91,151, 69,29,125,220,181,5,85,138,204,75,105,160,158,119,112,171,203,136,186,4,193,207,187,14,213,55,86,196,123,252,81,151,213,116,12,127,150,62,247,88,95,115,186,103,56,164,69,190,186,208,74,139,223,213,83,196,33,157,11,153,119,198,181,196,33,131,205,180,144, 222,181,196,33,157,143,25,12,109,79,28,222,102,62,108,208,229,167,76,91,73,29,218,166,13,11,181,248,50,148,153,243,18,96,124,96,92,230,149,83,118,96,140,207,162,49,234,232,153,130,254,33,125,186,56,31,189,127,182,156,223,253,192,191,238,209,227,51,197, 170,165,252,93,62,73,172,70,137,204,26,111,90,98,29,90,145,69,25,141,54,109,185,178,177,179,70,181,228,58,164,176,61,218,202,7,8,86,101,194,202,61,159,13,117,161,56,225,157,161,50,36,97,196,152,41,97,226,64,41,56,112,175,204,115,37,251,206,188,197,192, 221,188,23,207,150,108,180,254,237,93,163,171,167,197,198,157,251,180,13,115,237,14,65,221,225,170,51,178,125,222,96,122,191,218,61,211,9,239,71,195,13,143,131,84,159,142,135,0,41,241,254,241,199,81,230,242,97,184,244,249,14,223,140,205,248,1,14,63,72, 243,220,224,107,236,83,188,2,92,61,188,181,138,186,229,21,96,139,70,153,32,108,203,41,120,147,217,224,165,13,45,167,160,124,22,180,131,97,63,83,236,223,191,253,254,253,247,174,131,55,174,17,10,159,42,136,59,3,187,139,254,51,229,79,169,38,116,124,81,21, 103,39,253,111,187,34,242,97,234,0,175,27,26,1,246,249,168,25,161,213,7,57,88,199,84,19,237,58,166,74,175,241,13,177,53,67,74,55,208,81,102,86,171,163,207,134,2,182,12,254,115,89,25,204,103,96,101,11,165,236,115,84,131,61,53,71,13,57,42,254,157,88,186, 7,44,186,89,26,213,139,177,148,248,64,68,231,247,240,129,140,190,198,7,33,6,51,24,50,195,5,57,14,240,40,115,78,199,163,207,8,106,94,148,169,135,94,185,131,165,206,55,162,85,202,133,96,146,202,234,24,219,254,88,103,1,43,212,178,157,11,153,76,70,97,76, 91,71,48,66,112,34,10,255,64,73,125,134,77,91,245,137,77,187,189,77,211,92,34,32,84,219,48,84,38,225,14,197,126,2,232,65,182,210,182,13,131,160,40,186,175,119,203,33,190,156,51,210,153,83,198,232,208,1,224,182,143,134,82,88,141,208,30,241,205,65,121, 252,190,51,98,34,237,157,220,83,52,240,92,72,5,13,60,224,185,143,65,169,253,164,59,26,7,68,240,37,248,25,141,123,73,126,194,183,71,221,201,79,227,133,246,54,241,211,101,82,186,196,79,81,103,42,251,252,52,193,73,217,230,167,205,172,112,81,186,131,34,6, 48,151,104,235,112,204,160,237,209,42,245,57,248,217,42,205,116,50,180,81,126,121,46,67,135,112,76,202,67,187,58,56,138,71,64,139,66,14,36,20,53,131,254,128,161,50,131,27,139,246,232,179,85,133,190,8,67,253,203,89,188,65,172,212,70,249,251,248,9,54,2, 29,32,115,250,183,99,104,87,81,245,30,206,122,161,194,11,2,59,233,16,101,186,124,41,220,91,4,194,3,28,177,48,124,37,165,28,192,196,133,128,133,22,195,61,180,172,99,70,95,218,132,22,228,45,194,154,17,81,171,22,111,135,154,216,112,63,130,81,104,192,60, 194,168,47,224,78,225,227,204,159,203,82,5,48,231,136,254,238,100,41,66,122,0,18,106,131,101,131,161,92,240,182,205,81,32,67,47,68,203,247,82,135,51,173,156,82,222,127,25,134,250,39,100,227,132,54,38,24,219,218,51,0,48,98,143,83,237,61,43,40,37,216,166, 219,90,4,224,235,189,9,193,191,156,156,140,22,30,48,2,249,142,179,112,233,71,47,203,205,142,179,179,251,142,214,26,219,77,46,141,89,88,16,170,205,48,168,20,80,163,51,97,31,45,195,234,154,24,83,37,96,13,163,181,250,139,128,229,199,238,221,127,37,123,191, 163,142,249,2,86,212,30,89,169,70,161,153,5,81,141,109,32,33,136,178,85,16,213,30,24,171,89,15,61,235,108,122,214,213,180,58,233,135,76,195,94,130,215,207,46,157,130,241,205,10,1,108,71,197,104,165,57,250,26,148,203,202,251,79,246,247,148,43,6,32,223, 230,193,229,109,237,146,45,118,20,246,179,131,128,140,51,154,176,159,145,65,57,99,35,57,253,146,155,191,223,178,156,253,90,54,255,18,166,213,113,133,232,62,27,243,182,101,99,140,43,161,73,131,217,24,137,180,210,182,236,107,191,217,217,97,179,138,181, 45,88,69,131,244,36,203,226,93,52,171,156,24,32,55,5,46,85,174,64,10,54,80,24,58,56,225,31,103,92,175,71,188,172,149,190,109,175,150,241,178,216,228,227,180,184,222,221,232,226,189,181,245,184,139,252,188,72,69,100,112,182,62,191,93,63,56,45,171,73,81, 109,30,185,244,105,61,90,23,252,121,99,78,234,250,179,126,190,149,39,7,111,52,19,93,207,151,23,249,164,188,6,199,247,31,254,81,150,224,31,96,163,150,218,111,125,218,78,87,232,5,193,50,228,13,242,240,97,125,144,36,236,182,192,184,123,116,85,85,224,226, 112,150,223,22,216,89,250,103,227,59,150,23,229,245,121,69,14,173,170,171,98,191,231,164,28,95,241,198,231,240,170,150,192,226,102,191,5,251,14,79,79,203,155,214,0,164,22,151,11,222,99,76,23,86,77,131,190,42,103,5,148,101,92,144,63,246,112,196,235,233, 28,220,25,174,239,59,74,177,197,128,251,45,54,119,32,1,227,197,29,77,200,48,31,238,120,120,187,59,192,88,174,170,242,3,22,180,190,88,177,223,129,76,106,10,238,44,159,237,244,239,178,88,229,147,124,149,239,116,109,67,225,13,194,176,185,65,88,77,206,142, 255,241,254,135,237,161,199,120,124,252,63,101,245,97,119,126,193,6,249,105,121,133,29,109,207,93,120,49,113,124,76,179,202,87,111,166,151,88,2,47,177,254,229,230,114,6,181,223,62,104,53,94,221,46,138,221,160,245,176,155,11,185,157,151,122,39,227,203, 41,59,141,126,89,77,103,179,31,57,73,227,112,102,61,232,116,53,43,222,252,109,50,93,245,222,93,173,210,220,53,169,213,106,204,139,199,101,245,166,49,61,183,249,246,124,123,242,114,56,230,223,235,187,156,189,159,138,222,47,152,185,107,104,218,248,225, 48,169,229,193,140,28,120,121,117,250,79,184,212,214,0,228,194,247,249,249,222,42,72,157,77,223,240,30,233,235,209,250,71,103,139,241,213,167,26,204,166,139,211,50,175,38,93,205,106,90,107,250,180,250,131,133,146,91,179,233,184,152,47,63,45,194,180,245, 233,71,120,178,203,203,114,190,76,210,92,247,93,142,78,111,135,243,241,112,153,143,224,45,70,7,210,28,151,115,120,232,211,171,199,202,234,63,243,15,87,167,189,95,86,5,194,81,245,88,73,29,206,153,218,210,6,154,54,241,211,254,246,27,102,241,248,157,183, 89,187,40,42,168,250,242,147,172,237,186,195,254,143,98,81,149,147,171,116,145,185,205,208,103,14,252,126,186,172,25,211,53,112,85,252,235,106,138,30,79,26,249,191,202,21,184,242,178,99,190,93,221,189,88,48,232,98,122,250,84,62,188,131,52,17,124,1,100, 154,240,233,69,56,92,84,211,143,73,99,168,108,203,151,101,200,47,23,121,85,188,157,77,63,52,215,156,52,123,173,201,219,27,0,59,255,255,122,180,137,16,233,215,249,46,114,180,66,243,54,252,204,242,211,98,118,210,255,137,15,123,242,48,2,151,87,139,203,114, 82,172,187,111,2,14,143,0,191,105,159,159,159,193,193,31,195,245,127,247,109,71,173,248,232,85,29,5,143,191,69,212,202,131,93,255,172,3,241,177,220,252,100,79,204,123,140,89,231,147,38,241,159,229,116,222,166,66,98,69,53,155,226,159,99,179,161,77,114, 4,209,170,202,111,143,231,229,188,216,80,183,55,41,182,208,15,204,248,185,135,148,79,122,163,165,28,16,135,154,24,163,239,189,35,85,7,128,198,68,141,188,89,98,73,179,81,90,15,146,199,102,156,140,36,241,132,35,26,208,2,178,98,161,216,215,102,134,215,134, 226,192,0,71,69,43,180,239,105,228,6,46,122,207,202,21,70,85,0,87,61,164,149,90,73,109,205,32,176,131,212,42,176,183,206,76,180,22,189,165,201,48,180,85,61,21,177,6,47,148,28,40,137,228,208,88,103,123,64,210,1,75,181,113,160,124,230,129,116,185,234,84, 221,49,66,106,18,131,87,210,163,179,201,64,241,90,145,134,209,100,208,61,96,56,103,60,210,146,68,115,49,58,118,86,188,54,132,108,52,129,100,96,34,223,83,124,107,67,11,151,198,243,222,26,76,12,112,30,21,25,70,154,210,128,130,236,171,179,232,131,70,95, 60,118,193,96,28,174,90,0,99,178,102,15,40,43,141,193,196,93,204,254,163,215,223,191,174,198,3,221,70,253,237,17,90,198,122,199,209,43,62,109,220,156,89,235,92,83,25,214,10,151,41,251,133,116,78,193,0,148,134,134,40,91,171,155,176,30,34,6,193,90,111, 172,138,84,132,160,163,18,97,0,169,42,17,141,34,201,9,229,163,6,201,48,69,34,235,35,122,216,168,195,128,39,159,16,135,143,212,3,99,132,15,134,226,136,66,104,12,7,213,225,113,149,71,14,100,179,117,87,38,1,84,91,146,130,15,178,22,57,212,75,24,63,80,142, 7,92,42,202,212,206,209,10,72,179,206,71,167,107,125,65,186,107,162,34,213,59,27,76,173,88,176,155,144,104,81,6,52,166,2,122,227,188,75,180,245,196,33,179,216,175,5,9,26,198,66,161,233,33,233,144,81,57,157,244,94,98,81,65,209,146,162,209,194,132,1,212, 84,105,137,134,100,22,76,40,88,43,35,168,48,204,40,48,49,104,26,186,13,77,197,188,96,129,18,50,245,142,202,8,210,28,0,124,109,216,96,141,3,104,246,96,33,166,5,191,20,185,31,21,148,219,128,251,145,85,48,37,107,7,0,101,162,136,164,229,178,127,74,52,41, 131,76,98,67,130,140,60,178,166,54,133,121,135,58,55,46,112,46,202,217,237,121,57,127,176,223,132,179,185,75,165,119,175,129,52,180,154,21,62,152,155,112,225,79,214,237,180,223,122,115,198,202,70,93,114,129,105,152,218,241,68,88,24,99,52,117,85,11,228, 229,80,153,8,209,197,104,224,18,52,88,110,188,163,235,128,202,195,29,74,234,130,103,197,160,199,195,126,56,49,163,216,204,121,40,128,74,205,60,207,146,7,60,186,114,188,211,208,235,154,98,187,142,213,203,29,226,62,197,57,165,243,231,199,120,167,122,37, 82,125,9,31,149,44,147,151,167,105,201,60,60,129,241,200,152,33,124,68,145,226,134,177,48,153,144,104,17,110,23,182,12,135,143,120,7,95,3,175,99,130,84,62,209,162,86,48,126,246,14,16,106,136,38,14,180,64,252,129,9,251,158,164,9,123,132,134,129,134,51, 134,36,16,78,36,175,165,74,204,156,234,16,50,121,12,210,60,98,175,36,17,243,58,35,73,131,123,82,176,111,248,69,29,165,241,134,115,232,117,215,168,55,107,230,161,42,252,30,102,240,81,166,152,40,120,104,30,156,227,74,116,12,52,120,56,57,15,119,197,13,135, 44,72,108,61,214,46,146,119,142,67,32,85,43,97,17,42,225,248,172,85,28,145,209,83,58,227,18,45,241,202,239,252,178,98,165,41,197,73,7,71,110,141,73,115,240,72,176,118,143,1,234,140,150,135,124,222,247,32,181,69,241,50,136,123,170,218,121,243,21,34,47, 24,40,140,86,196,216,66,94,160,122,248,118,200,102,135,188,36,57,46,240,173,1,189,104,222,198,227,121,19,122,193,15,120,1,15,210,132,94,1,62,66,198,208,130,94,145,213,87,40,143,111,65,47,122,22,229,28,90,110,161,23,116,76,67,43,92,19,121,193,46,17,216, 116,27,121,97,17,210,71,235,154,200,139,171,230,90,90,192,11,254,46,88,221,2,94,152,12,42,141,105,119,192,203,193,188,116,8,177,1,188,216,3,14,80,248,22,240,226,225,60,120,215,4,94,50,141,194,192,188,3,94,93,188,238,214,51,190,68,242,100,236,101,191, 126,236,69,253,162,122,249,13,246,162,34,1,222,192,129,89,30,254,0,222,104,234,145,242,112,189,142,58,67,163,55,150,52,33,232,181,6,59,35,79,225,73,163,215,32,213,238,133,134,163,163,243,243,22,105,1,193,141,244,112,111,129,98,2,110,0,181,70,80,181,131, 96,184,131,115,215,201,25,40,1,60,78,85,112,80,0,246,5,102,129,246,192,69,42,2,21,11,191,65,218,214,187,0,195,1,151,83,9,241,13,33,80,164,134,8,84,240,112,164,9,76,44,211,128,128,102,136,197,3,149,142,182,146,174,210,251,9,171,176,104,232,42,48,63,253, 38,156,143,1,234,138,12,165,138,23,138,21,205,65,4,15,55,14,78,185,245,162,73,131,190,193,58,1,84,5,32,147,72,186,133,241,8,35,137,238,149,148,180,155,54,151,59,65,145,211,246,14,61,219,212,216,89,50,60,233,231,213,184,191,167,130,59,253,106,191,85,124, 15,136,210,135,32,42,253,172,174,102,73,61,255,40,170,242,229,180,245,50,175,62,20,85,61,80,253,125,184,92,229,213,170,69,185,156,78,90,191,139,249,164,53,245,195,117,157,212,250,78,251,177,56,208,255,87,31,167,203,233,233,116,198,31,233,235,172,120, 53,153,46,23,200,228,143,167,115,46,252,85,249,177,168,206,102,229,245,230,121,23,132,109,92,35,221,10,40,29,253,192,167,65,121,149,233,120,124,219,117,9,117,251,184,186,97,121,30,249,179,197,159,238,120,126,219,249,188,134,39,155,91,172,189,237,4,189, 183,189,93,235,214,215,30,192,66,175,183,189,36,59,120,120,151,142,89,254,184,7,78,98,4,24,126,39,156,108,28,85,33,137,0,208,229,197,101,111,144,188,28,61,215,10,120,201,2,6,8,136,113,167,57,28,30,223,221,99,13,197,199,98,94,78,38,247,88,195,190,41,156, 94,173,86,7,150,144,212,247,255,157,37,32,241,243,119,24,194,222,225,102,203,12,246,78,57,91,54,176,127,222,217,50,0,102,230,182,173,251,70,211,167,214,35,66,131,215,221,123,169,229,70,115,125,70,24,124,127,155,214,56,247,169,53,189,159,19,136,124,93, 199,172,65,2,122,199,193,16,51,198,168,163,25,32,13,224,133,52,121,135,94,111,24,137,20,81,135,254,67,49,44,83,177,59,179,224,237,171,202,247,6,126,32,41,230,39,154,160,95,1,255,105,83,7,67,128,76,152,97,202,54,36,96,149,78,48,61,58,133,96,168,29,171, 108,193,74,50,16,233,137,214,129,60,85,8,219,129,208,77,2,50,32,239,244,192,155,188,178,11,223,209,3,230,210,30,230,13,18,114,27,32,7,68,82,176,134,52,64,55,67,1,0,143,166,74,31,75,51,200,61,248,126,106,38,173,96,116,102,97,78,2,238,169,129,142,201,170, 181,234,1,49,216,104,0,67,7,44,84,0,21,36,156,28,137,50,48,164,77,217,20,122,33,11,145,188,26,139,12,44,229,48,22,248,214,152,206,109,255,209,251,153,75,15,6,32,32,48,123,66,154,44,82,109,133,35,32,232,155,148,65,41,103,107,220,163,211,75,44,104,7,120, 97,1,83,98,42,37,41,230,79,188,57,164,165,224,138,0,139,164,19,200,135,184,118,44,23,88,27,52,128,24,38,225,3,163,18,186,82,6,128,60,70,169,88,235,210,228,11,176,13,39,70,26,164,156,54,129,212,8,80,18,36,193,6,145,106,176,236,140,93,27,48,3,203,54,54, 4,46,59,98,99,220,108,157,30,26,165,165,78,2,3,246,85,235,36,18,216,135,203,70,116,242,34,118,110,25,200,228,73,57,21,239,62,62,4,236,222,165,140,233,106,85,146,29,52,78,37,44,15,204,100,8,33,83,126,28,129,208,36,185,2,64,39,140,172,115,97,175,133,3, 243,161,136,22,220,79,187,0,50,213,228,31,228,141,141,177,18,205,253,82,95,52,104,200,153,68,162,1,173,33,17,176,20,8,48,42,244,2,147,88,86,255,60,141,192,242,253,22,224,64,48,38,93,138,12,2,110,1,118,1,88,71,4,39,128,33,21,242,79,104,34,152,134,212, 56,82,72,72,79,140,224,186,1,29,5,51,31,104,113,128,242,74,75,9,35,233,71,214,69,125,135,230,178,88,195,173,112,171,154,52,12,107,141,170,247,44,165,80,186,238,141,88,11,176,188,126,43,67,199,181,42,32,203,75,122,137,204,78,91,210,176,81,230,255,181, 249,33,1,215,158,10,98,188,135,77,178,66,131,220,156,230,7,191,6,47,4,238,240,85,6,66,115,199,173,32,207,210,206,212,229,8,104,104,12,224,35,108,59,221,17,97,177,192,70,11,200,158,76,13,214,18,124,42,91,64,171,107,15,33,157,21,65,214,26,167,61,235,21, 44,43,8,85,39,139,208,47,94,79,77,166,6,27,103,37,228,64,206,201,246,120,108,128,44,55,85,61,16,182,125,74,124,169,186,44,213,215,133,10,128,246,84,206,128,55,48,193,39,227,67,34,24,44,103,142,138,169,9,4,8,19,116,201,141,145,8,195,213,154,18,196,6,44, 121,230,120,171,83,232,218,84,96,163,72,114,177,68,184,182,40,18,123,172,128,251,112,53,170,247,158,26,71,62,70,161,60,210,102,94,44,54,73,161,12,171,157,164,66,245,44,228,106,117,162,241,250,136,119,73,245,36,156,27,114,217,154,106,20,180,2,30,79,8, 190,71,66,113,65,30,176,52,172,70,194,251,168,52,9,44,211,37,39,232,216,80,197,122,145,206,24,56,24,42,148,132,27,137,201,189,68,130,165,216,99,118,171,225,117,3,37,19,120,54,83,59,13,216,134,118,137,61,90,90,45,66,90,55,55,147,234,61,224,34,229,146, 220,43,148,33,177,27,219,87,174,118,117,76,251,180,76,212,0,201,166,150,248,102,85,221,18,156,215,170,75,88,221,53,222,198,255,8,169,229,74,234,146,63,194,130,198,174,77,59,250,248,140,47,179,89,221,140,62,169,92,20,91,209,71,65,128,86,7,213,10,62,232, 226,60,223,248,219,5,31,154,47,198,16,205,224,3,157,15,209,240,232,169,25,124,146,168,144,219,185,70,240,193,55,77,215,43,27,193,7,19,98,16,79,142,52,130,15,44,6,126,93,55,99,79,138,14,65,105,221,136,61,93,155,166,254,211,144,96,91,177,21,122,120,184, 161,180,65,158,187,13,61,96,128,227,251,120,161,17,123,48,181,131,22,82,108,141,216,67,195,150,78,26,217,136,61,160,25,143,47,161,17,123,240,84,152,218,91,53,130,15,217,38,32,248,70,236,209,233,85,76,190,159,185,139,61,44,61,122,77,193,52,66,15,57,0, 188,131,89,182,177,7,36,111,235,144,187,141,61,29,91,110,104,209,65,180,57,188,210,250,100,240,179,213,80,24,190,127,234,41,4,175,122,222,181,130,206,230,206,30,29,156,74,120,158,213,132,248,69,79,37,132,236,56,149,128,151,33,190,109,157,74,80,37,68, 251,80,130,119,54,189,140,205,67,9,218,9,113,93,243,80,2,209,4,89,166,108,29,74,28,206,112,255,161,196,211,222,212,123,90,117,24,222,225,225,101,187,47,38,198,58,235,119,245,97,92,42,159,214,245,125,150,199,16,125,1,39,21,207,23,156,102,45,159,199,71, 112,28,174,166,33,74,203,84,101,149,53,50,54,187,158,24,43,29,82,4,94,163,139,28,223,3,62,200,228,255,211,129,162,164,143,102,152,0,167,233,112,25,51,125,125,132,9,215,22,117,178,113,164,15,78,37,47,45,36,223,32,166,175,132,79,213,66,39,207,93,31,102, 212,243,215,30,195,50,218,164,168,5,132,194,40,202,115,18,132,188,20,139,60,235,117,138,51,164,243,128,228,99,55,199,166,136,88,74,90,174,216,67,201,88,244,171,55,168,210,1,5,58,254,95,41,231,146,20,49,12,3,209,253,156,133,42,172,248,39,87,81,92,135, 251,223,128,215,173,192,134,97,3,219,204,76,18,75,178,251,117,228,9,114,175,59,190,71,250,213,62,169,39,140,44,118,213,178,184,178,123,172,112,82,79,7,51,39,35,236,63,227,251,107,47,98,181,191,114,243,149,255,224,102,73,67,226,154,182,17,107,0,50,189, 34,74,81,238,102,240,90,27,48,29,138,40,99,139,10,41,200,178,71,214,150,4,147,37,231,73,248,101,238,18,225,211,82,127,202,23,81,1,40,80,132,122,64,106,241,152,167,142,154,213,97,53,35,185,145,47,254,63,17,82,105,23,167,151,94,64,61,54,219,72,75,132,111, 18,2,79,11,15,158,216,253,100,148,133,121,211,172,49,92,58,119,222,221,104,22,135,105,160,66,171,212,197,208,182,16,190,55,12,202,172,41,162,118,4,71,196,196,96,134,74,59,181,30,149,232,1,8,133,222,12,6,169,149,94,79,128,89,61,234,46,167,100,5,79,148, 57,172,100,40,53,233,215,111,1,102,180,145,171,112,110,125,94,223,156,106,148,111,13,90,177,69,28,185,6,238,62,135,113,147,138,27,181,73,5,247,169,86,90,87,89,35,188,240,129,132,57,85,24,54,138,34,143,58,6,120,79,137,163,2,62,113,208,213,192,199,40,28, 25,157,144,83,208,246,4,185,17,88,60,134,142,121,83,194,112,204,200,129,152,79,34,235,167,111,181,65,6,82,178,75,26,167,183,176,184,2,215,163,56,131,180,174,243,180,80,110,244,80,31,241,120,134,195,74,235,156,218,127,65,208,154,74,64,132,24,231,234,222, 62,160,57,108,43,204,189,241,43,229,166,29,86,133,171,166,174,82,82,52,164,191,165,234,150,68,80,16,89,101,140,68,41,150,46,42,140,132,168,65,125,30,187,212,33,194,137,74,34,96,155,179,108,200,216,212,15,121,208,6,8,97,182,155,131,83,95,154,55,195,233, 94,88,131,122,253,180,233,229,6,91,185,222,49,228,14,186,214,8,232,184,171,38,240,60,33,246,40,255,51,183,142,225,28,102,61,126,80,143,43,246,54,10,113,234,229,45,39,68,132,50,242,101,186,122,110,14,228,134,96,66,245,29,10,67,222,51,110,83,245,246,250, 106,154,44,207,174,196,90,185,122,144,73,240,201,171,223,226,122,10,130,194,238,244,123,73,108,171,144,114,113,198,240,108,197,170,180,225,192,226,191,250,210,37,200,232,42,54,134,44,47,215,109,119,235,214,238,247,210,34,207,121,52,5,153,241,203,196, 191,48,199,208,241,179,52,63,167,246,239,215,196,188,189,126,188,63,222,180,247,249,253,241,9,80,75,3,4,20,0,2,0,8,0,136,128,249,52,38,221,82,145,115,17,0,0,142,92,0,0,14,0,0,0,101,100,105,116,45,112,97,115,116,101,46,115,118,103,237,91,89,115,219,72, 146,126,247,175,224,208,47,173,24,18,172,251,160,45,77,244,184,183,55,102,194,211,187,209,71,236,51,4,66,18,218,36,161,5,160,171,127,253,102,22,174,194,65,153,148,104,89,59,109,202,14,17,137,172,43,243,203,163,178,74,239,255,118,191,89,79,110,227,44, 79,210,237,233,148,6,100,58,137,183,81,186,74,182,151,167,211,223,126,253,113,110,166,147,188,8,183,171,112,157,110,227,211,233,54,157,254,237,236,205,251,191,204,231,147,15,89,28,22,241,106,114,151,20,87,147,127,108,63,229,81,120,29,79,190,187,42,138, 235,229,98,113,119,119,23,36,21,49,72,179,203,197,201,100,62,135,150,249,237,229,155,201,100,2,195,110,243,229,42,58,157,86,252,215,55,217,218,241,173,162,69,188,142,55,241,182,200,23,52,160,139,105,203,30,181,236,119,241,121,144,197,121,122,147,69,101, 247,81,228,115,102,171,139,150,21,102,114,199,29,19,181,214,46,8,91,48,54,7,142,121,254,176,45,194,251,249,54,127,235,53,133,9,142,53,101,132,144,5,188,107,57,247,227,90,222,175,65,12,59,39,227,222,250,163,131,232,175,225,127,211,160,38,4,229,90,47,160, 101,28,108,227,98,241,195,175,63,52,47,231,36,88,21,43,175,155,90,242,157,113,59,234,216,134,155,56,191,14,163,56,95,212,116,215,254,46,89,21,87,167,83,97,174,239,221,243,85,156,92,94,21,30,33,89,157,78,97,133,148,113,69,28,161,158,196,178,129,17,9,56, 43,121,171,158,253,87,130,255,117,21,223,198,235,110,219,85,26,157,135,57,204,119,113,149,110,226,197,239,201,102,19,70,139,60,139,22,209,109,190,0,0,94,166,243,36,74,183,243,226,10,176,177,128,94,215,225,249,58,94,132,81,1,253,230,131,206,112,121,167, 211,120,149,20,243,235,48,47,226,0,149,114,6,92,239,87,241,69,142,220,229,74,240,9,151,194,220,75,120,157,133,171,36,92,255,39,254,2,8,150,140,222,66,162,116,189,142,35,144,71,184,190,11,31,202,113,241,227,244,184,188,202,98,192,221,91,248,30,135,89, 221,135,36,149,160,234,49,187,67,72,194,105,243,250,178,34,254,182,77,10,0,216,77,30,103,191,160,146,254,107,251,91,30,15,184,126,205,194,109,14,136,216,156,78,55,97,145,37,247,223,205,89,160,181,224,198,206,8,252,208,192,42,171,137,154,81,10,116,197, 248,108,110,52,11,140,145,226,164,233,44,186,63,157,42,34,3,77,5,179,45,245,1,85,174,2,37,180,105,169,23,163,188,23,163,188,25,184,19,170,3,224,52,106,58,89,84,226,237,138,102,111,241,162,216,70,164,122,86,189,127,159,23,233,117,205,11,64,40,30,214,160, 125,36,206,161,199,52,91,158,175,195,232,211,59,71,72,65,158,73,241,176,164,239,166,109,139,244,226,34,143,97,88,226,209,28,208,161,5,140,196,154,5,60,109,44,50,54,22,29,31,75,180,194,90,116,151,252,245,16,234,41,251,185,8,29,7,232,156,26,75,3,197,95, 47,66,71,0,40,204,244,232,160,24,7,160,36,187,1,232,113,169,177,14,3,57,61,220,50,94,12,238,146,125,14,238,79,244,24,143,194,29,52,247,152,98,153,126,1,184,179,128,106,59,6,247,123,122,58,229,4,168,82,211,86,119,15,72,85,125,8,223,179,81,94,134,70,96, 3,4,142,254,2,190,151,49,105,247,135,254,219,11,247,121,162,247,101,76,209,67,224,56,58,218,222,128,132,209,248,23,2,228,168,24,233,203,137,81,242,151,20,163,148,47,40,70,254,130,104,20,47,138,70,241,84,52,142,72,137,137,3,164,164,35,252,121,178,148, 152,58,72,74,231,6,127,246,24,109,92,74,204,188,32,216,168,58,64,140,196,125,158,44,70,106,14,18,227,216,104,7,128,141,145,99,129,141,74,198,15,65,155,213,86,155,176,39,166,128,84,235,25,205,106,170,151,35,11,193,193,213,231,243,37,96,19,108,60,97,26, 246,61,50,231,136,69,236,220,238,156,243,33,122,211,43,189,82,23,7,44,159,126,102,249,230,136,138,164,230,16,231,74,46,72,124,113,60,69,178,61,18,95,112,54,118,92,143,214,66,102,223,201,138,71,166,28,27,252,217,63,3,246,134,213,163,195,26,166,165,129, 205,246,244,41,97,232,16,216,172,12,252,240,227,193,134,177,163,193,70,8,115,136,253,71,202,128,212,142,5,27,24,252,176,240,99,172,34,244,104,246,7,195,191,92,60,162,92,139,67,2,146,18,74,72,251,196,128,132,131,29,22,145,198,134,219,59,34,193,112,146, 188,124,53,164,20,233,238,114,8,78,139,117,138,19,76,224,182,76,51,214,45,78,200,128,105,38,141,238,20,39,134,188,23,163,188,25,176,2,204,40,165,154,239,177,207,172,17,57,35,35,95,40,37,82,235,153,8,172,209,156,147,120,78,225,129,4,76,41,97,78,246,220, 234,62,119,23,249,152,192,157,183,120,212,155,88,210,217,30,171,128,18,77,181,16,157,237,49,37,129,144,148,249,188,184,61,230,110,119,44,120,103,123,204,117,96,180,53,94,221,235,235,45,223,197,216,71,99,48,19,157,229,51,22,112,98,184,87,55,118,203,55, 1,4,60,42,122,203,151,129,54,146,89,209,93,190,13,132,53,152,40,28,171,208,1,0,132,80,107,205,40,0,1,119,210,202,217,156,6,82,9,193,237,76,7,2,161,200,226,57,59,249,194,178,229,226,113,217,138,46,180,152,12,4,17,82,179,110,229,37,48,212,16,234,73,17, 101,139,188,74,48,74,59,178,181,1,103,156,75,98,143,41,91,201,20,103,35,178,109,236,30,100,171,141,21,90,52,239,190,168,96,221,62,232,209,221,38,235,22,180,20,72,144,245,202,89,54,160,82,121,196,251,18,153,196,167,161,68,5,235,210,190,154,169,50,223, 18,71,43,17,93,48,129,241,89,171,164,233,130,73,160,159,50,32,193,190,159,2,127,108,25,237,251,41,173,137,102,244,53,44,158,219,71,23,47,100,223,146,148,97,198,43,195,59,47,133,117,79,70,164,237,91,146,130,165,123,137,60,46,126,14,49,138,128,235,34,86, 189,134,229,75,250,120,49,79,119,117,207,3,14,121,37,17,189,18,110,0,235,228,156,119,117,47,64,40,196,47,75,59,221,155,128,104,194,205,171,208,189,124,92,247,170,167,123,5,83,87,196,118,129,15,84,101,149,210,170,87,191,6,215,0,105,14,27,216,60,209,92, 210,87,17,160,249,227,102,111,248,209,124,61,108,91,185,209,130,143,198,81,73,33,10,169,25,36,58,134,16,3,78,31,72,134,41,65,78,158,21,195,122,188,120,122,0,241,153,18,175,242,254,117,196,170,143,25,66,9,238,112,71,197,106,12,183,204,160,52,21,211,150, 161,236,141,192,205,199,201,23,75,13,74,185,190,95,224,253,3,247,173,185,188,128,55,23,86,183,73,124,215,94,82,192,155,17,85,63,215,225,101,236,246,86,32,206,178,132,80,189,56,79,179,85,156,213,175,148,251,116,94,85,219,47,220,59,83,204,7,105,147,116, 54,74,196,206,61,54,50,246,62,191,10,87,233,29,44,176,255,242,143,52,221,180,251,184,22,24,247,101,240,151,82,75,49,120,9,227,80,17,16,161,12,151,131,151,55,89,6,186,156,175,195,135,24,214,228,126,213,221,231,87,233,221,101,134,178,185,8,215,141,112, 154,166,248,106,126,126,158,194,216,69,118,51,120,189,74,163,27,188,96,52,191,41,209,84,221,108,241,56,238,146,45,172,114,94,93,134,49,154,237,96,168,111,199,152,225,218,42,14,92,190,145,59,94,194,242,245,64,202,184,54,95,210,229,10,43,192,108,226,34, 92,133,69,216,130,163,166,224,45,22,217,220,98,89,93,44,127,254,225,199,102,163,30,69,203,255,73,179,79,237,30,27,25,194,243,244,6,230,222,84,15,240,114,76,180,68,179,9,139,179,100,3,83,192,171,76,127,189,223,172,1,167,205,139,14,115,241,112,29,183,157, 150,221,214,215,178,70,175,118,173,162,77,130,141,22,191,20,201,122,253,15,28,196,43,40,84,157,38,197,58,62,251,143,85,82,76,254,27,239,238,184,209,75,98,135,15,86,29,159,49,176,235,57,37,240,207,177,57,90,135,43,194,107,106,105,118,230,77,19,197,241, 253,101,83,67,24,142,253,253,118,5,173,242,201,79,201,58,207,211,237,216,4,208,120,135,221,56,206,193,136,216,113,126,115,254,59,56,200,78,7,40,173,191,135,151,189,89,32,117,157,156,225,221,165,247,139,234,97,148,227,186,20,206,144,165,164,117,122,118, 19,27,204,1,5,177,78,162,120,155,127,94,139,110,85,201,45,120,159,205,38,221,230,78,161,85,219,124,113,254,48,207,195,5,132,236,197,64,155,81,186,5,15,124,126,115,168,14,254,25,126,186,57,159,252,82,196,16,20,178,67,53,48,28,211,241,162,13,248,54,241, 177,191,118,207,44,14,92,118,87,168,215,113,6,56,207,63,43,212,177,107,140,63,199,215,89,186,186,113,23,219,186,210,124,102,199,63,36,121,41,149,177,142,179,248,127,111,18,104,241,164,158,127,74,11,16,201,113,251,252,190,216,61,217,103,73,33,206,146, 91,167,82,68,67,126,220,73,255,114,21,102,241,247,235,228,147,47,12,7,189,10,106,117,45,211,115,208,239,23,181,11,119,79,151,173,107,239,132,188,38,62,172,195,243,120,125,58,253,136,47,39,116,24,250,210,155,235,77,186,138,171,230,117,68,184,124,211,173, 210,174,146,252,26,24,150,201,22,179,174,78,26,118,41,137,183,123,47,70,238,180,112,38,97,179,22,207,89,117,173,69,24,9,41,43,62,11,1,169,41,100,81,51,193,97,207,78,184,61,105,139,211,25,248,158,86,170,16,251,230,84,18,220,17,24,255,138,210,189,163,75, 27,192,24,254,25,74,115,17,85,155,128,75,237,149,204,154,75,171,176,175,178,120,137,76,246,138,201,56,176,240,235,168,141,20,154,154,52,100,118,12,242,93,35,223,249,183,154,46,32,70,45,33,122,125,247,118,120,69,232,196,189,245,138,232,238,49,187,89,199, 203,109,186,253,3,18,174,119,96,110,233,39,247,24,87,223,203,140,2,152,171,71,236,22,212,182,4,165,109,87,62,241,247,52,217,46,1,227,113,246,110,19,102,159,226,172,236,165,252,62,207,139,48,43,58,148,77,178,234,60,199,219,85,103,92,215,213,58,129,95, 75,81,211,86,33,164,24,89,6,32,240,57,145,90,86,229,151,164,166,181,139,188,77,242,228,60,89,227,131,251,186,142,223,117,145,244,46,189,141,179,139,117,122,87,191,247,13,225,58,44,174,60,29,52,41,47,192,21,147,2,72,197,34,248,244,180,135,141,36,145,190, 190,129,250,175,201,156,81,208,54,53,26,239,83,33,144,12,236,149,39,31,118,208,61,42,103,58,80,146,8,58,78,132,30,180,10,180,16,210,10,32,155,64,74,98,212,132,50,172,164,82,161,102,140,1,92,12,209,178,166,113,51,51,38,16,82,48,46,161,121,75,157,131,21, 192,126,129,19,54,153,99,125,71,74,193,189,89,169,29,115,253,99,242,12,164,14,239,110,126,67,234,179,145,250,76,29,112,250,77,7,123,234,160,111,228,77,40,232,25,249,40,221,163,122,70,62,70,196,30,52,97,1,101,74,122,70,62,167,150,8,96,97,210,179,114,143, 232,155,185,71,246,237,156,106,60,204,163,82,119,236,124,116,186,29,59,111,93,93,39,180,237,116,146,237,185,232,101,189,233,243,226,107,15,177,237,105,246,174,144,230,14,217,250,40,13,136,135,211,248,54,134,57,212,184,91,190,213,84,68,84,117,161,74,2, 235,62,90,245,49,11,153,92,177,3,178,35,160,107,166,187,55,248,250,45,154,53,116,79,114,65,68,184,81,110,37,92,165,14,120,236,192,165,242,10,121,77,190,1,82,0,157,115,175,186,11,68,172,238,112,63,165,192,67,220,250,230,80,123,136,123,143,119,5,184,209, 150,235,118,34,217,67,67,245,111,251,63,166,190,221,106,195,195,193,71,156,75,95,105,198,152,16,220,86,215,191,84,178,99,226,121,74,123,134,167,24,81,146,160,124,160,36,128,151,68,75,26,40,9,15,90,180,82,198,248,74,2,163,230,140,67,132,245,149,164,2, 201,176,19,221,81,18,9,164,2,199,96,188,212,49,123,232,144,247,82,83,215,202,222,202,8,127,6,54,229,241,140,42,105,36,2,244,209,253,213,173,106,112,1,166,81,28,215,222,141,171,58,49,103,65,143,189,177,174,65,71,247,238,36,187,71,124,24,187,242,83,42, 206,26,176,36,233,29,168,148,138,107,200,7,216,151,147,194,190,166,52,98,140,120,12,114,50,174,57,97,94,145,109,73,230,221,156,168,84,196,192,1,82,65,133,30,218,22,22,104,137,86,194,87,145,13,36,133,0,64,59,14,80,131,87,84,210,120,250,119,42,234,106, 230,41,150,52,162,152,207,155,81,123,171,236,117,7,168,221,166,36,173,30,232,137,235,128,128,132,165,28,234,9,52,104,153,53,157,64,37,3,193,45,23,254,129,122,73,36,90,107,217,51,37,216,90,107,107,188,83,200,210,148,26,242,168,230,186,209,108,44,242,233, 110,144,20,154,49,237,57,229,123,119,6,160,45,21,158,251,174,23,165,7,174,196,4,86,104,174,213,64,92,144,176,181,237,7,25,59,37,218,74,33,101,229,154,125,240,236,19,55,187,186,235,218,54,101,95,207,182,143,161,18,62,200,91,74,149,184,59,39,108,168,146, 1,96,247,80,141,87,226,57,60,53,197,75,58,39,135,219,127,21,126,199,117,246,250,204,127,167,42,241,207,169,177,112,192,251,246,58,32,59,189,131,25,40,237,157,188,163,50,241,166,13,229,108,152,221,242,234,0,121,224,103,108,160,44,234,146,143,41,147,78, 15,78,84,241,144,124,255,60,117,119,10,244,234,140,237,16,9,232,255,239,18,24,203,246,196,136,31,32,150,91,59,116,29,42,160,198,139,58,165,155,177,146,67,230,209,117,72,224,162,100,207,113,193,186,187,238,236,193,167,54,170,241,11,55,195,178,141,49,10, 12,70,189,235,254,193,204,110,141,49,118,200,150,120,183,206,14,218,90,253,187,148,112,92,1,7,179,18,106,56,81,51,174,2,38,39,31,39,213,13,191,89,117,171,15,41,184,207,170,40,142,183,226,242,219,121,181,146,186,82,194,24,109,33,246,249,58,201,35,200, 160,123,3,130,31,86,35,49,10,182,219,226,27,38,122,152,128,104,40,45,49,204,105,28,100,164,196,228,195,132,211,192,224,201,19,71,42,68,54,73,149,67,1,24,45,177,51,188,8,73,53,211,6,105,18,189,11,155,97,73,221,26,35,177,26,7,239,177,2,224,224,66,97,207, 47,217,4,54,46,210,8,171,233,140,203,64,41,45,132,194,161,133,86,140,114,164,97,228,147,10,27,143,80,241,90,154,166,18,39,73,161,31,55,201,177,137,143,3,147,28,7,152,16,227,169,50,212,80,125,172,29,170,232,239,80,235,29,145,125,5,213,31,135,14,72,86, 132,50,120,186,82,253,254,80,146,96,107,41,144,166,137,65,253,32,77,19,216,177,34,205,226,86,95,249,77,155,102,90,26,124,36,76,235,146,129,27,10,200,194,70,144,225,72,93,210,170,54,31,155,39,17,240,102,232,234,217,80,193,152,173,38,35,40,144,4,33,0,64, 218,142,139,36,244,105,101,59,13,64,84,142,6,187,27,46,75,54,220,212,33,13,226,16,108,214,58,77,113,28,152,129,116,225,175,38,124,112,4,90,183,194,137,2,70,45,166,212,142,32,181,148,212,209,122,109,12,222,155,53,72,18,76,105,202,145,134,7,88,210,117, 36,193,150,20,115,52,215,172,150,52,88,10,5,191,203,38,46,255,183,22,16,14,52,97,24,103,216,23,152,145,6,170,163,149,147,196,107,221,101,67,129,252,40,22,35,185,228,194,120,76,150,9,32,248,205,172,27,240,99,67,129,12,181,233,167,122,22,48,67,34,75,10, 174,18,105,154,48,42,180,207,213,204,187,92,38,144,192,252,36,103,78,38,229,50,145,102,40,113,168,145,213,82,45,88,86,51,160,6,68,25,36,113,41,153,41,91,130,241,187,150,220,72,74,136,147,2,182,106,244,11,143,68,32,131,160,176,153,118,207,176,95,226,142, 194,97,35,94,206,92,186,81,172,167,22,24,129,50,129,36,197,240,144,208,209,64,206,6,91,194,80,144,115,187,193,148,107,39,219,89,42,0,160,180,72,19,176,153,45,133,169,52,199,174,36,56,68,89,206,177,90,156,108,102,9,18,195,179,6,32,105,232,187,92,28,180, 82,194,209,12,186,212,26,6,240,108,155,121,86,80,129,125,0,94,156,44,231,89,65,10,143,44,173,129,116,182,134,157,13,154,225,42,100,34,5,61,174,109,209,91,50,213,232,46,159,32,206,87,89,64,221,5,62,27,194,84,69,128,71,88,44,248,97,175,71,164,117,91,128, 92,8,64,182,157,23,208,24,53,210,233,167,158,63,210,252,53,226,179,2,164,50,79,14,72,179,218,42,230,201,11,104,149,18,101,51,32,103,74,121,114,71,138,162,70,80,79,59,72,211,190,10,129,0,254,130,83,225,233,25,105,88,94,81,30,30,144,86,105,81,52,51,133, 125,53,248,28,15,91,72,179,78,63,37,254,224,217,135,39,62,82,102,28,208,106,4,35,13,76,67,48,15,233,72,171,86,215,78,19,88,180,107,89,91,13,210,164,6,127,229,89,23,210,74,197,85,38,232,8,2,2,140,103,167,30,83,101,205,30,165,214,191,123,174,61,194,7,159, 82,121,13,164,104,78,136,245,124,75,203,101,218,121,131,197,106,214,120,41,199,196,141,161,206,11,214,222,172,132,65,235,241,90,168,180,94,177,133,84,235,61,43,212,9,79,41,21,50,91,47,220,128,183,226,170,193,221,248,118,60,104,228,157,110,28,69,212,109, 202,152,128,52,64,177,17,94,236,240,91,86,58,118,36,46,173,31,137,144,86,142,88,135,43,143,210,76,193,25,98,80,247,1,200,53,194,11,136,174,95,6,48,105,194,102,51,120,219,136,89,105,148,23,122,203,201,128,95,241,66,180,215,172,150,118,185,52,161,221,120, 16,155,117,181,92,194,33,31,118,52,216,206,85,115,104,154,185,168,220,207,7,112,178,202,107,81,6,92,208,178,215,243,32,149,232,37,107,101,57,131,179,29,185,216,231,238,167,180,249,158,87,54,47,51,92,20,157,149,212,226,223,89,194,200,164,66,140,209,88, 161,69,34,120,2,134,86,164,2,240,206,218,64,230,105,48,163,36,152,244,106,48,79,64,173,112,91,31,34,97,143,139,173,33,76,128,80,5,69,170,4,229,90,133,25,46,23,96,170,28,105,218,66,16,147,56,180,194,191,247,116,153,176,5,187,183,85,114,61,160,34,13,178, 99,174,103,144,82,91,202,136,25,155,183,39,178,97,114,10,178,135,228,212,140,109,159,158,159,170,74,189,35,85,53,236,79,180,115,218,167,232,68,208,225,10,87,222,30,209,196,161,197,238,61,110,160,252,9,118,170,173,127,240,142,238,235,195,50,58,40,109, 117,235,173,157,114,22,221,113,122,140,175,236,142,102,195,110,235,161,201,216,12,249,244,27,50,190,89,226,191,191,37,202,97,173,249,16,75,100,124,167,37,50,125,176,37,210,177,25,234,111,150,248,205,18,255,4,150,104,7,150,200,15,177,68,78,155,63,129, 188,60,123,243,30,255,208,236,236,205,255,1,80,75,3,4,20,0,2,0,8,0,130,128,249,52,145,40,234,161,189,30,0,0,76,213,0,0,15,0,0,0,101,100,105,116,45,100,101,108,101,116,101,46,115,118,103,236,93,219,114,35,55,146,125,159,175,224,178,95,220,49,98,17,72, 220,213,151,9,239,56,102,195,27,218,217,136,177,29,251,184,193,75,73,162,155,34,181,36,213,106,249,235,247,36,138,151,42,22,68,145,20,69,117,88,148,236,104,49,11,133,203,65,34,243,36,42,81,252,248,183,111,55,195,198,215,124,50,29,140,71,159,154,50,19, 205,70,62,234,141,251,131,209,213,167,230,111,191,254,163,229,155,141,233,172,51,234,119,134,227,81,254,169,57,26,55,255,246,249,47,31,255,173,213,106,252,125,146,119,102,121,191,113,63,152,93,55,126,30,125,153,246,58,183,121,227,135,235,217,236,246, 188,221,190,191,191,207,6,115,97,54,158,92,181,223,55,90,45,220,57,253,122,245,151,70,163,129,102,71,211,243,126,239,83,115,94,254,246,110,50,140,229,250,189,118,62,204,111,242,209,108,218,150,153,108,55,87,197,123,171,226,247,121,55,155,228,211,241, 221,164,87,84,223,235,149,75,78,250,151,171,162,232,201,189,138,133,100,8,161,45,168,77,212,66,137,214,244,97,52,235,124,107,141,166,239,74,183,162,131,169,91,73,8,209,198,181,85,201,237,74,157,127,27,2,134,71,59,19,175,150,91,7,244,183,248,127,121,195, 66,144,21,99,189,196,157,121,54,202,103,237,159,126,253,105,121,177,37,178,254,172,95,170,102,129,124,165,221,202,116,140,58,55,249,244,182,211,203,167,237,133,60,222,127,63,232,207,174,63,53,181,191,253,22,63,95,231,131,171,235,89,73,48,232,127,106, 98,132,198,197,79,139,30,156,47,117,72,100,138,138,130,243,106,203,151,180,254,107,63,255,154,15,171,247,246,199,189,110,103,138,206,182,175,199,55,121,251,247,193,205,77,167,215,158,78,122,237,222,215,105,27,218,119,53,110,13,122,227,81,107,118,13,197, 104,163,214,97,167,59,204,219,157,222,12,245,78,107,149,241,216,62,53,243,254,96,214,234,67,151,102,121,198,83,242,25,197,62,246,243,203,41,23,47,198,193,159,84,188,128,75,152,137,188,51,249,143,73,167,63,128,242,21,133,138,98,213,43,138,180,156,223, 131,187,166,179,241,237,162,44,122,49,123,24,162,105,22,182,122,227,225,120,114,126,127,61,152,229,31,162,96,12,184,7,179,135,115,249,161,185,186,99,124,121,57,205,129,175,40,201,34,196,184,3,45,169,102,163,253,156,182,68,170,45,153,110,203,44,219,250, 216,174,14,121,103,132,40,108,143,208,59,19,124,183,215,221,27,35,37,31,199,168,52,186,144,170,48,115,198,242,127,190,185,177,135,116,105,122,193,214,122,184,195,212,188,35,161,114,107,182,24,100,122,114,148,218,115,114,22,139,16,221,24,230,61,212,223, 25,222,119,30,166,205,13,179,39,157,217,126,246,186,195,78,239,203,190,115,39,157,219,5,196,68,91,219,235,183,116,225,136,16,154,112,44,8,173,60,30,132,86,29,204,68,200,93,140,232,187,142,134,99,21,123,99,180,155,25,125,119,121,217,211,61,189,239,90, 149,7,52,164,66,248,35,185,26,33,197,78,24,245,21,255,238,139,145,144,116,40,140,40,184,35,97,68,193,239,136,145,225,223,61,49,66,107,116,52,131,69,193,234,227,24,44,180,100,143,101,176,208,150,127,10,66,254,212,25,238,12,97,228,237,231,215,147,28,113, 198,187,106,197,70,88,81,129,186,218,132,117,114,69,69,174,230,194,223,70,131,25,2,138,187,105,62,249,133,73,249,127,143,126,155,230,181,82,191,78,58,163,41,34,128,155,79,205,155,206,108,50,248,246,67,139,50,231,180,242,225,76,224,87,102,193,6,39,236, 153,148,144,91,82,103,45,239,40,243,222,232,247,203,202,122,223,62,53,173,48,153,147,154,86,29,233,61,48,197,183,153,213,206,175,164,151,201,178,151,201,178,19,204,129,116,25,74,250,213,4,31,78,67,35,170,71,209,80,180,68,199,210,80,180,165,191,71,13, 117,7,211,208,180,130,182,164,15,50,179,234,251,213,208,132,2,106,223,60,184,82,164,21,208,136,167,67,26,148,178,201,144,198,52,119,95,25,71,83,119,243,82,62,109,163,186,107,191,193,178,64,221,205,17,212,157,50,68,32,41,117,255,38,63,53,149,128,212,148, 59,242,192,82,187,174,194,223,40,89,150,120,17,132,140,21,199,237,174,217,202,63,74,197,151,132,205,211,19,202,155,164,209,252,179,189,174,173,26,83,79,232,211,118,91,31,153,215,218,90,65,244,225,96,124,220,238,96,2,146,227,23,153,20,74,4,114,62,105, 13,50,81,252,164,56,179,13,59,6,49,169,214,231,245,39,23,236,166,198,221,193,248,186,20,118,135,237,133,119,93,211,19,70,174,41,209,166,97,108,194,16,109,239,68,62,223,121,227,115,117,185,67,235,114,115,235,238,96,40,98,66,158,88,70,210,169,45,225,73, 12,220,74,219,19,254,209,129,63,185,134,165,211,91,162,147,104,92,7,3,172,158,108,252,185,16,218,39,205,158,180,180,63,132,198,153,96,204,51,32,180,106,127,8,93,207,229,46,188,56,132,198,61,9,161,241,251,67,216,237,116,251,93,251,12,8,77,216,31,194,75, 121,105,242,222,139,67,88,218,152,126,148,228,60,57,76,177,187,119,158,143,99,103,239,44,141,220,217,59,39,27,59,32,134,222,238,242,188,161,23,248,119,207,232,80,122,183,219,38,144,243,174,227,186,123,110,2,161,53,185,31,74,219,17,217,200,28,67,166,17, 66,9,85,97,153,46,51,20,164,44,237,85,48,35,37,151,41,103,45,201,10,123,101,161,242,86,248,45,8,178,202,96,221,133,180,145,32,139,76,105,173,120,159,130,178,224,72,120,119,214,66,1,225,165,246,121,139,222,55,55,153,30,218,134,251,111,181,188,158,187, 91,177,109,251,245,109,55,97,252,193,66,15,133,25,19,90,202,37,178,158,97,6,158,66,185,32,61,162,17,163,53,25,247,254,137,185,123,100,158,211,58,81,209,159,23,196,49,110,80,110,220,4,22,149,97,97,0,213,88,74,234,202,80,112,221,82,53,130,146,62,115,70, 136,3,6,131,139,169,112,1,63,252,161,37,51,25,130,119,230,253,10,171,195,111,239,196,29,241,199,183,119,40,120,93,217,107,65,224,232,130,37,77,149,189,22,5,125,242,158,74,176,95,38,203,94,38,203,78,0,113,102,12,33,26,166,173,116,87,106,142,195,207,108, 22,72,123,111,177,250,207,90,22,170,203,200,241,7,4,214,136,230,36,164,210,101,158,60,155,10,43,1,173,13,225,253,150,51,246,170,152,31,114,161,239,0,150,205,164,39,173,82,96,29,101,238,95,19,243,64,175,131,185,206,148,34,99,34,230,254,173,97,110,95,7, 115,202,172,99,35,203,152,11,37,141,121,51,152,171,114,36,115,84,204,225,217,188,225,237,77,43,178,16,192,218,222,18,230,250,117,48,7,80,94,89,42,236,185,145,142,94,11,243,195,115,188,152,237,176,41,25,34,28,238,177,20,20,214,107,163,212,124,159,158, 132,50,30,49,9,162,16,25,68,140,71,36,41,25,100,149,44,19,188,169,145,74,85,131,162,150,193,244,8,41,75,207,99,230,20,19,116,82,121,87,101,153,42,83,152,182,242,131,233,227,107,175,20,238,85,180,215,71,199,56,215,222,183,229,25,21,226,166,87,193,220, 190,105,204,205,171,96,174,223,52,230,225,85,48,167,183,140,57,169,87,193,92,188,105,204,95,197,135,202,204,90,206,48,120,147,144,171,87,113,161,234,77,67,254,42,30,212,124,55,144,191,64,152,195,169,239,27,51,227,93,37,232,208,98,125,43,91,101,158,200, 149,162,33,14,55,170,197,56,210,176,153,119,206,107,218,117,119,244,37,134,108,194,198,33,91,83,141,179,212,250,144,169,26,90,169,181,177,218,204,122,103,190,135,129,150,122,145,26,168,175,62,57,163,234,48,215,158,183,172,61,160,80,148,209,247,48,70, 162,141,147,73,106,87,2,24,145,208,197,163,117,91,157,119,147,121,229,96,133,170,184,212,203,82,4,239,69,71,189,121,213,210,218,170,37,56,106,231,130,172,14,39,112,70,160,17,213,149,75,76,93,149,41,113,184,184,124,81,129,86,193,217,157,102,252,99,155, 207,52,198,191,150,39,34,249,56,100,255,235,32,191,47,42,154,94,143,239,187,227,73,63,135,193,155,77,238,22,211,192,99,226,83,152,243,143,183,157,171,60,62,193,6,18,69,42,217,252,66,113,235,226,146,181,182,34,159,63,225,230,12,15,169,138,159,69,253,11, 240,185,230,82,49,145,186,62,189,238,244,199,247,128,102,253,226,31,227,241,205,234,81,249,106,66,97,231,181,206,76,240,102,153,45,185,186,200,230,62,100,66,43,45,106,21,246,238,38,19,96,218,26,118,30,24,144,248,207,162,122,70,234,106,194,192,92,118, 134,75,100,150,183,242,165,86,183,59,254,86,197,113,113,185,63,238,221,241,49,230,214,93,49,95,243,243,179,165,18,247,131,17,70,217,154,31,185,245,142,30,41,176,56,131,187,122,30,187,94,226,27,107,81,120,236,234,3,47,36,187,126,145,71,87,198,186,60,70, 30,90,126,115,203,7,132,227,73,112,189,126,243,184,251,59,22,80,107,52,238,231,211,244,240,231,37,110,199,131,17,143,62,137,224,188,76,129,97,26,227,59,116,100,99,1,158,132,69,35,155,250,209,153,93,47,187,49,95,43,55,249,172,211,239,204,58,171,5,176, 144,44,14,195,124,156,244,47,207,255,245,211,63,150,233,30,189,222,249,255,140,39,95,86,153,26,92,160,211,29,223,97,122,150,41,40,124,206,184,119,206,220,167,51,251,60,184,1,198,124,38,252,175,223,110,134,88,158,203,11,149,194,179,135,219,124,85,105, 81,237,226,124,123,242,140,124,191,119,51,224,155,218,191,204,6,195,225,207,220,72,41,45,101,94,233,96,54,204,63,255,20,143,64,199,150,11,65,165,12,70,155,127,142,23,227,95,149,107,61,62,225,63,158,124,46,117,140,1,248,241,106,153,124,82,111,237,63,59, 95,238,186,141,95,102,57,204,227,36,213,40,219,168,122,37,177,100,173,61,174,118,122,23,39,176,82,1,163,243,239,157,171,181,62,176,116,56,248,204,231,190,63,182,231,31,146,37,250,115,68,54,149,153,194,11,244,251,60,132,122,169,66,86,233,64,236,127,173, 171,220,255,219,187,238,112,48,189,206,119,131,241,159,227,175,249,112,120,214,248,121,212,203,118,68,49,209,32,55,55,28,244,242,209,244,105,37,139,147,48,248,10,227,127,115,51,30,77,163,190,205,239,157,182,187,15,173,105,167,77,153,104,215,148,173,55, 30,129,229,119,239,118,85,152,93,117,164,222,76,44,203,171,178,188,74,47,214,135,91,90,168,59,142,180,138,227,109,62,193,202,155,62,137,99,234,13,21,255,202,111,39,227,254,93,124,109,65,21,192,103,86,252,211,96,90,160,146,170,120,146,255,223,221,0,119, 236,85,243,63,199,51,64,114,216,58,127,156,61,222,217,103,161,144,79,6,95,227,148,178,54,76,15,219,233,95,174,59,147,252,199,225,224,75,25,140,168,122,115,85,91,36,233,149,92,198,199,246,194,161,196,79,87,43,71,83,225,25,75,95,53,236,116,243,225,167, 230,5,95,108,200,186,171,27,223,221,222,192,227,206,111,95,248,168,171,191,84,179,15,251,131,233,45,10,156,15,70,204,81,151,244,113,150,56,172,66,150,148,87,28,122,47,206,171,32,80,230,212,187,51,176,41,21,140,12,103,26,82,143,192,189,154,140,119,101, 157,40,229,254,78,96,246,106,89,144,171,83,7,224,93,194,74,111,62,148,143,16,93,194,111,157,195,163,253,240,174,126,30,231,125,188,90,202,151,140,31,39,119,195,252,124,52,30,253,1,158,249,1,10,63,254,18,63,230,243,191,11,34,117,46,23,31,185,90,0,119, 14,216,70,253,178,240,119,208,133,115,104,89,62,249,112,211,153,124,201,39,69,45,197,223,173,233,172,51,153,85,36,55,131,126,229,115,62,234,87,218,141,85,13,7,248,231,92,47,100,253,14,120,213,100,130,105,40,151,100,105,145,239,121,46,22,178,213,32,191, 14,166,131,238,96,200,31,226,159,195,252,67,117,46,63,192,43,76,46,135,227,251,197,245,181,148,81,158,6,76,76,57,233,121,78,46,249,161,37,159,183,43,31,14,91,190,218,197,249,76,25,39,203,137,218,160,91,45,105,76,64,196,73,229,52,244,135,40,23,153,13, 214,155,242,66,96,126,181,191,6,212,15,32,158,52,96,103,13,128,2,252,87,163,69,8,50,129,180,227,83,103,60,81,94,40,223,248,251,35,242,146,84,113,74,164,17,90,166,133,168,193,89,222,158,51,65,67,236,51,99,132,183,13,73,38,115,108,30,206,136,48,203,94, 56,179,144,41,127,230,125,166,141,38,101,112,251,74,218,210,42,51,142,148,160,70,75,41,212,111,180,42,245,202,62,210,215,63,26,107,218,206,42,7,85,169,164,158,47,99,94,152,73,166,199,160,252,61,252,108,208,212,199,238,72,182,165,106,112,47,23,201,26, 220,73,121,73,90,130,59,37,228,26,156,224,44,4,107,74,112,183,100,16,26,69,200,148,240,46,9,203,128,151,196,101,196,165,211,38,35,105,92,5,241,100,119,43,136,63,123,73,135,211,146,222,114,73,175,18,254,231,17,70,69,103,107,19,161,188,53,193,5,189,149, 119,229,45,200,245,137,200,196,46,83,193,51,31,127,106,115,2,74,55,251,147,91,217,184,232,117,230,176,254,100,227,162,129,117,69,139,63,41,83,142,215,42,36,248,104,56,191,124,249,105,113,71,105,69,45,172,138,226,115,122,203,25,79,76,116,156,201,197,81, 168,71,87,80,254,53,135,5,91,172,136,243,119,198,24,103,212,19,139,104,195,132,237,12,249,170,83,43,205,52,235,184,65,107,188,48,103,210,114,106,148,32,182,148,42,11,198,122,173,21,75,181,213,198,105,128,231,200,57,10,254,12,168,10,97,12,160,99,153,39, 133,114,44,147,138,172,194,221,38,243,1,222,3,254,131,183,255,172,10,86,54,92,70,30,82,7,238,106,50,13,73,240,13,159,121,29,32,157,203,240,99,113,183,207,130,48,214,122,98,41,231,254,147,107,40,207,59,151,65,233,249,221,48,250,44,115,40,167,231,50,141, 30,225,110,48,99,229,141,210,50,74,61,121,24,82,238,27,225,102,148,84,153,135,175,116,196,50,18,68,214,197,158,123,227,28,183,205,82,105,37,247,28,82,195,184,176,58,5,111,165,44,16,82,133,0,63,232,96,5,50,24,104,107,3,233,146,84,58,222,68,246,214,150, 100,9,188,19,10,40,93,233,68,215,99,238,176,236,17,151,1,201,228,127,123,213,189,207,234,181,135,249,181,77,202,189,210,21,82,112,229,24,193,86,86,140,15,206,60,199,157,136,239,197,116,237,101,164,186,195,113,239,203,218,210,82,112,252,46,24,125,6,90, 224,192,26,108,128,217,193,74,16,46,0,88,150,90,31,200,106,86,31,172,20,9,237,113,176,72,25,214,145,9,212,64,116,224,189,145,208,91,226,228,37,167,37,69,227,38,53,104,24,203,164,71,136,96,10,147,87,107,41,165,85,62,168,39,181,234,249,42,117,85,9,74,149, 12,171,216,167,166,97,18,102,1,131,245,133,86,173,20,172,4,250,92,97,22,239,184,40,219,206,76,61,195,38,166,130,240,248,231,176,51,203,127,128,113,82,220,53,142,187,75,127,191,111,238,194,89,167,61,254,47,65,91,21,9,185,78,91,41,100,210,42,141,169,141, 76,91,11,199,138,145,146,194,214,16,184,133,83,103,164,160,24,70,27,46,102,164,139,186,98,227,49,51,19,111,102,27,169,61,108,23,174,43,43,172,241,92,146,216,78,249,51,232,28,73,33,173,75,202,46,184,25,239,181,66,51,144,162,15,248,171,48,116,53,41,100, 18,28,54,192,185,10,216,90,15,155,207,178,192,169,10,142,123,100,80,183,98,6,173,36,226,21,184,142,192,93,23,104,138,226,221,176,191,8,88,230,67,132,79,72,202,46,146,96,108,34,196,178,110,184,146,42,246,168,203,222,172,116,111,128,99,237,22,163,109,210, 247,90,152,22,178,32,73,75,235,121,50,157,129,131,102,5,73,73,165,100,165,210,66,179,210,112,124,37,93,67,98,13,88,11,5,96,245,210,65,41,42,238,54,2,134,18,138,204,11,66,192,138,26,46,41,64,176,93,84,110,197,129,173,78,202,46,184,29,109,16,156,185,51, 132,192,104,70,89,246,236,41,41,238,135,91,215,100,89,225,65,22,131,176,92,14,33,26,236,25,247,200,58,33,66,188,155,152,156,240,10,84,208,93,75,129,203,193,192,99,21,196,17,90,65,32,46,41,217,69,18,139,147,186,191,142,186,159,144,126,209,45,50,25,115, 40,165,141,154,190,240,125,9,33,191,68,15,158,132,247,182,96,10,162,235,147,76,239,5,22,115,180,4,11,215,135,123,201,120,237,163,37,208,133,235,243,240,25,206,35,54,96,47,132,200,33,36,36,188,234,60,89,88,17,207,235,221,41,68,9,209,176,212,132,124,188, 141,36,175,78,21,121,12,59,61,25,59,37,84,52,1,11,159,39,225,83,209,145,64,209,6,20,62,15,5,227,137,122,55,31,27,251,183,148,236,34,5,66,114,215,13,38,214,52,183,179,207,135,51,234,174,70,98,100,146,196,36,164,68,117,18,35,147,36,70,36,72,140,76,144, 24,153,34,49,104,38,144,55,8,244,32,117,32,198,49,76,76,73,33,171,145,24,46,87,39,49,232,112,141,196,160,100,141,176,164,100,23,73,48,78,86,253,100,213,255,132,86,93,153,148,53,72,73,149,173,89,3,20,75,88,3,94,175,235,214,0,55,243,86,188,11,108,156,97, 125,65,198,18,162,11,222,50,18,206,89,89,236,1,6,56,13,54,237,41,41,110,175,7,52,54,25,208,184,68,64,99,19,1,141,77,217,130,20,20,143,89,247,240,108,235,126,210,246,151,213,246,164,239,75,73,85,221,247,169,164,239,83,9,223,167,18,126,78,37,125,31,154, 113,193,4,175,89,10,98,65,202,113,157,9,169,74,248,62,149,244,125,42,225,251,84,194,207,169,164,239,83,114,107,125,127,250,25,226,161,217,76,253,73,162,82,201,25,77,72,25,246,245,25,85,201,25,165,196,140,34,70,116,202,153,184,165,34,148,42,192,95,23, 93,196,70,44,66,209,56,115,154,223,101,103,11,139,88,147,242,204,214,230,83,39,231,211,36,230,83,39,230,83,39,231,83,157,184,204,137,203,188,9,235,78,46,25,217,36,164,228,235,145,141,75,70,54,54,17,217,128,141,88,237,180,98,226,18,124,144,88,205,41,89, 220,12,117,164,133,37,150,42,225,81,83,177,95,92,147,226,254,122,100,227,147,145,77,72,68,54,62,17,217,248,100,100,227,182,183,238,71,143,85,101,61,86,77,178,211,148,148,234,236,148,146,236,148,18,236,148,31,212,240,169,145,104,159,193,52,141,215,73, 217,5,215,105,131,148,209,230,147,23,94,134,162,63,235,66,74,176,83,74,178,83,74,176,83,74,48,81,74,178,83,50,39,235,126,178,238,111,195,186,39,153,94,74,74,117,166,71,73,166,71,9,166,135,146,245,125,43,149,220,183,130,37,17,204,229,216,142,243,91,31, 133,156,219,151,117,41,37,184,30,37,185,30,37,184,30,37,120,29,37,185,30,169,237,173,123,56,182,117,167,218,227,84,126,169,143,4,236,190,186,165,156,144,74,208,102,10,156,67,185,218,83,142,231,203,57,207,175,178,167,140,136,72,232,160,108,105,79,153, 119,124,37,68,33,62,73,42,102,47,37,187,224,102,66,8,80,148,248,224,20,241,23,217,98,115,184,38,229,13,99,235,172,180,229,157,101,19,55,135,157,175,110,45,115,174,141,81,186,188,179,172,57,81,39,40,83,222,89,78,200,46,146,88,156,204,251,201,188,255,25, 31,47,97,189,74,144,39,197,9,50,134,4,153,248,108,54,33,141,182,205,96,53,196,4,27,254,122,49,201,50,240,111,254,102,28,240,41,226,92,222,120,183,143,150,213,74,94,165,252,13,115,150,183,246,21,74,22,139,153,243,212,156,74,202,226,99,9,199,15,143,34, 165,247,86,107,53,247,24,107,66,62,157,204,182,128,248,9,21,90,115,222,242,3,17,99,60,188,0,119,71,64,18,204,252,25,11,115,202,248,148,73,133,32,164,225,146,158,15,73,23,227,131,151,160,148,232,34,9,196,35,166,189,114,242,224,180,13,249,61,234,122,50, 172,73,73,101,61,172,145,201,176,70,38,194,26,148,172,209,150,148,236,130,155,73,80,153,148,84,38,2,27,153,12,108,100,34,176,145,137,32,70,38,3,27,185,253,182,59,29,61,80,165,90,160,202,111,13,145,22,198,136,151,167,118,96,11,166,0,176,38,5,44,129,183, 78,13,91,47,18,194,7,201,50,105,3,204,68,180,94,82,233,48,191,155,135,13,88,57,155,140,172,8,161,160,9,224,32,158,141,141,23,90,249,148,40,194,23,44,170,113,103,113,143,24,54,114,174,97,53,41,79,147,19,82,197,86,124,208,194,71,179,233,249,237,50,220, 29,21,4,57,42,76,177,226,62,74,158,79,15,219,103,53,151,36,37,96,87,207,138,99,21,154,147,103,18,178,139,36,20,39,38,115,220,227,16,235,89,159,94,53,247,118,0,137,195,42,252,62,181,247,91,207,79,242,132,196,27,142,110,79,169,165,207,78,45,93,157,13,33, 249,242,20,40,181,2,132,208,167,21,176,231,10,56,37,155,62,59,217,116,185,0,132,160,227,114,34,42,191,113,233,148,48,248,204,132,193,189,140,15,127,65,201,201,248,28,97,159,39,73,125,132,59,97,191,47,245,57,37,164,62,59,33,117,69,125,142,158,98,44,149, 58,37,21,30,58,169,112,79,43,164,204,201,10,29,251,220,148,172,236,63,157,210,12,15,148,102,184,239,22,196,201,15,191,26,7,82,242,132,253,190,137,201,167,52,214,103,166,177,150,236,241,177,83,27,100,34,113,237,148,138,248,236,84,196,61,173,208,198,55, 38,157,172,208,139,122,0,121,226,159,123,71,193,167,84,215,103,166,186,150,236,177,58,182,7,168,28,253,58,165,43,30,40,93,113,95,43,116,226,161,175,228,1,248,11,155,79,216,239,155,21,116,74,135,125,110,58,236,234,113,148,183,199,126,0,22,252,41,165,241, 176,41,141,251,62,131,23,39,19,116,228,77,80,104,191,56,37,57,30,62,201,113,79,39,28,232,180,2,94,139,0,5,123,194,126,95,2,116,74,162,125,102,18,109,201,30,235,29,249,207,198,183,102,71,117,143,170,176,173,106,223,95,67,173,94,249,61,202,118,254,230, 210,234,59,95,13,88,135,182,94,74,54,186,160,160,197,78,168,129,63,81,154,180,158,75,81,166,1,183,100,164,6,1,131,78,4,229,45,65,18,140,13,26,36,72,11,80,36,231,5,51,40,40,158,2,169,5,45,229,119,191,42,67,40,201,223,98,143,214,249,155,64,192,232,156, 214,130,51,147,2,88,156,112,174,36,155,231,42,4,169,100,73,170,112,187,33,184,68,150,65,105,13,116,140,223,176,76,152,116,29,101,198,107,17,223,166,204,250,6,141,136,237,192,43,145,182,81,166,2,124,84,236,15,137,32,3,191,117,89,88,232,155,225,111,38, 17,10,62,84,22,239,98,150,96,94,70,241,120,136,35,137,248,46,102,43,36,136,59,35,1,143,22,40,190,139,25,220,79,145,42,201,226,19,6,84,73,69,150,218,92,138,149,96,53,127,131,95,196,209,40,131,182,83,136,167,94,233,93,250,18,200,180,198,198,159,23,121, 161,242,163,239,125,39,181,195,118,242,59,18,186,227,221,107,168,125,85,199,227,214,58,41,226,47,141,53,214,199,55,103,219,76,192,110,57,65,44,115,82,6,135,137,33,161,172,83,129,69,1,51,204,111,92,151,78,113,226,33,230,17,246,53,68,45,201,80,153,231, 136,15,102,206,123,169,64,232,51,97,160,76,252,134,109,132,131,70,73,15,155,197,54,217,4,88,39,230,95,132,168,128,21,20,186,136,240,2,81,34,116,7,90,109,141,181,176,223,153,55,66,4,142,13,65,253,37,214,140,107,192,30,6,86,95,23,141,27,226,143,248,210, 110,222,102,116,32,125,234,255,219,59,183,221,56,138,32,12,191,202,42,185,33,146,89,250,124,144,200,5,226,54,47,97,133,0,145,0,9,115,16,240,244,124,127,117,175,119,188,51,14,227,36,128,192,78,46,226,148,187,102,122,186,78,127,85,247,76,13,71,216,72,179, 14,166,255,53,166,50,184,241,254,93,52,198,25,96,92,114,43,243,116,250,206,185,168,73,81,65,52,157,96,134,155,249,56,114,45,22,34,105,113,120,136,164,169,167,174,251,12,110,44,175,144,25,137,234,42,6,111,150,64,158,205,211,104,147,38,246,97,48,100,185, 177,65,177,47,64,155,89,178,64,133,123,68,86,22,32,89,90,52,91,75,53,100,173,127,170,69,153,18,70,199,144,138,227,208,151,198,201,163,202,176,232,24,186,203,38,59,108,54,216,167,217,21,114,218,20,39,209,108,67,194,155,95,147,78,126,135,73,189,254,155, 140,106,241,13,105,173,105,202,27,189,22,78,95,220,255,16,200,148,247,117,185,24,212,255,91,75,5,156,110,150,118,131,48,124,45,227,235,229,61,128,132,194,164,234,235,229,175,136,61,46,55,181,30,145,255,71,113,189,33,28,141,205,184,107,139,61,153,60,39, 116,243,20,165,181,140,66,67,4,47,181,234,33,233,220,49,58,171,144,18,177,41,47,90,208,221,201,146,100,20,138,123,109,244,108,184,152,210,134,98,194,84,118,124,60,127,167,118,37,2,113,204,110,163,165,202,243,55,250,243,250,73,187,222,75,187,154,206,3, 224,92,154,116,166,232,88,116,52,157,1,121,7,82,111,211,25,80,136,157,138,87,30,140,239,235,166,73,181,0,36,162,233,28,168,216,219,200,134,122,4,97,32,220,61,42,135,210,228,163,211,209,253,52,78,232,161,111,41,216,72,194,2,42,41,124,209,149,134,199,108, 196,136,74,22,145,74,233,174,143,129,76,163,54,57,76,151,67,45,214,204,162,225,49,123,152,135,254,92,17,46,242,71,185,216,58,173,96,245,68,219,234,217,118,245,118,216,167,159,214,162,33,185,240,164,159,31,87,63,55,69,44,109,240,68,27,3,196,192,220,90, 194,8,170,4,218,50,212,19,104,77,208,177,70,36,4,213,1,188,5,146,147,193,228,18,249,57,200,167,245,226,155,57,79,124,30,161,62,122,171,95,118,213,123,164,96,168,34,142,118,210,116,250,126,91,235,54,245,171,184,247,119,127,167,241,26,251,242,217,185,99, 175,173,243,70,176,6,201,254,194,53,63,5,247,19,130,253,226,51,239,103,222,155,183,223,188,253,225,250,59,139,41,2,37,173,102,252,251,76,48,34,202,11,236,18,28,1,4,102,235,20,67,238,89,68,41,65,64,18,52,194,79,121,16,242,0,155,164,193,173,118,35,37,53, 211,48,180,73,34,211,149,88,145,135,19,60,12,110,54,187,226,96,179,119,202,66,96,213,234,81,209,38,17,102,132,164,124,44,217,54,10,88,124,229,66,130,154,213,170,132,193,248,7,204,172,8,46,22,165,32,136,151,9,11,101,54,175,80,101,56,177,87,252,79,36,42, 233,94,162,12,120,73,38,175,22,29,6,27,209,145,129,46,85,142,30,92,45,48,117,67,151,103,38,230,15,180,234,54,34,37,50,191,50,80,101,138,222,50,32,71,52,114,109,162,202,49,207,124,194,147,62,4,43,90,38,31,213,44,76,161,83,39,169,162,50,70,157,193,244, 134,39,203,88,149,88,79,96,50,43,196,29,116,4,8,100,216,102,226,22,108,45,117,214,167,244,187,114,91,40,221,157,238,236,107,84,248,190,9,254,102,178,148,234,139,127,57,231,63,117,245,90,103,151,33,214,181,226,223,183,44,95,77,75,80,111,42,4,19,39,170, 135,64,250,222,202,160,33,75,75,182,81,193,68,178,93,205,26,82,51,92,47,37,27,148,60,34,89,83,204,12,70,82,171,5,47,26,9,148,74,60,162,41,53,80,63,153,5,15,174,164,69,215,154,145,208,251,156,117,154,156,219,135,49,169,76,242,129,150,197,105,4,11,206, 32,216,86,141,208,80,28,59,81,102,7,125,45,107,33,101,151,117,168,0,229,199,36,251,208,179,81,116,87,145,26,123,116,141,56,43,173,196,226,179,226,250,24,231,172,182,97,214,190,224,196,32,34,113,57,218,179,116,153,187,208,97,97,152,211,244,121,240,164, 194,68,57,45,75,157,86,155,143,77,47,145,246,96,153,101,118,36,122,234,88,69,66,89,130,209,42,94,89,77,193,236,126,205,216,141,173,6,178,185,168,137,118,176,168,171,65,131,106,5,58,68,13,139,37,130,55,150,140,115,162,89,14,6,255,93,161,33,63,143,184, 68,83,99,44,227,12,145,137,249,8,109,50,234,21,215,193,72,2,211,84,12,82,83,65,242,60,235,183,21,107,5,130,136,214,170,115,178,103,132,145,175,250,173,91,210,94,41,88,40,167,43,189,188,87,88,134,40,39,151,42,63,95,233,173,193,64,62,125,208,158,43,108, 222,31,141,9,31,85,45,161,212,235,104,202,212,15,218,153,0,126,147,187,251,200,2,247,78,242,24,143,201,86,211,15,110,227,67,51,58,233,166,104,140,175,120,21,34,23,90,18,148,217,50,23,198,235,188,232,16,131,118,31,198,44,131,48,87,183,23,210,228,152,66, 210,171,45,140,142,158,149,49,90,1,200,119,104,210,51,63,151,213,24,181,65,169,61,94,111,126,158,213,18,13,167,171,83,229,170,5,105,187,38,29,116,112,229,202,183,49,99,155,169,243,173,187,241,6,156,98,116,3,218,97,187,4,235,96,85,34,29,73,77,229,228, 173,141,82,78,43,234,112,179,190,212,65,52,65,36,107,123,153,71,209,137,129,57,154,26,221,225,195,63,163,238,4,178,73,236,165,0,7,83,233,37,207,75,241,107,175,55,57,227,93,70,214,205,3,61,91,25,243,66,204,85,101,92,173,100,158,55,172,177,217,169,153, 33,197,51,171,118,169,170,75,169,79,86,19,101,178,66,196,228,236,81,167,96,209,187,118,193,170,122,28,49,36,76,154,234,196,248,124,108,36,150,56,89,245,146,169,80,202,197,124,5,102,154,34,217,156,27,246,120,48,0,205,4,198,51,148,226,202,168,152,164,53, 111,143,221,228,41,34,202,100,213,150,158,8,229,243,249,37,153,131,176,251,148,203,201,53,74,153,28,11,60,36,234,212,103,14,26,49,46,5,19,125,5,96,169,14,153,199,250,182,83,108,147,207,209,142,158,162,54,225,30,247,98,67,90,239,214,167,13,191,17,186, 93,106,248,28,171,190,183,19,43,222,145,236,66,103,10,8,227,209,174,238,85,240,52,69,102,202,78,161,50,15,235,55,210,237,100,29,154,233,172,220,83,193,138,201,238,138,78,214,24,76,191,49,162,81,104,178,155,137,52,53,94,171,86,180,33,46,90,140,10,199, 162,85,109,252,24,43,70,202,106,138,150,167,117,222,50,2,108,178,150,49,154,183,40,214,167,174,54,128,68,145,165,107,186,213,218,135,197,33,22,127,108,167,240,207,106,56,205,86,40,7,111,217,6,70,192,207,226,86,184,64,181,26,150,218,158,202,247,204,103, 4,35,129,149,162,156,88,77,217,147,34,153,6,97,117,85,253,178,192,31,77,106,43,196,171,71,108,39,103,96,16,184,248,146,228,54,129,22,209,198,228,238,48,94,249,219,142,131,172,134,148,103,16,152,174,21,2,158,60,215,100,190,92,149,64,11,132,64,48,86,216, 170,101,242,207,134,83,46,98,170,26,99,90,113,49,131,155,250,136,169,196,69,201,194,198,9,253,25,109,21,141,19,240,172,180,65,195,48,198,40,34,151,171,147,211,171,166,121,55,140,3,141,246,165,109,77,181,65,44,116,95,107,189,94,63,240,216,193,35,174,51, 160,216,163,176,32,181,15,35,183,146,105,41,248,204,92,30,164,65,172,150,5,8,36,88,46,47,174,237,228,42,252,117,114,245,78,29,216,213,17,214,245,7,188,106,244,188,181,118,221,242,229,247,104,70,71,216,22,255,211,125,21,119,201,24,63,133,117,235,221,125, 111,77,53,157,183,116,89,101,236,26,133,3,110,169,246,110,37,198,108,213,248,91,170,118,196,130,48,41,180,98,128,33,222,161,233,234,246,145,132,5,113,114,199,113,201,21,181,143,142,166,128,242,119,211,94,45,169,167,27,125,121,135,120,154,81,31,63,73, 111,111,103,190,245,228,23,106,171,6,244,145,136,240,17,107,78,167,189,207,181,243,250,224,109,220,169,181,97,117,82,225,167,31,127,185,190,121,243,24,90,25,123,55,132,111,14,137,60,92,24,235,213,130,26,166,164,173,78,164,186,73,34,212,222,67,133,171, 168,204,25,55,122,28,187,123,122,28,47,250,97,126,127,253,243,205,219,223,62,33,92,121,46,151,174,156,254,18,230,1,128,150,76,182,72,184,87,75,210,80,122,122,113,217,254,148,156,239,240,5,240,92,91,114,196,70,119,0,1,31,14,74,61,182,232,99,252,31,107, 53,189,249,253,229,51,13,220,248,205,111,47,159,133,227,198,47,180,131,228,183,232,48,164,101,15,228,197,139,230,247,118,41,221,56,156,243,252,181,115,251,221,243,181,53,231,190,84,244,144,192,74,0,222,71,169,232,23,117,198,235,155,125,245,72,141,123, 128,148,222,124,29,122,232,31,84,117,242,235,170,211,227,150,220,194,98,234,14,3,251,75,147,188,215,134,87,102,255,81,188,202,67,157,27,215,75,218,51,122,113,214,79,5,212,251,91,102,3,56,122,110,251,90,102,131,77,86,239,180,29,221,131,154,102,91,126, 35,191,255,8,79,246,221,162,27,159,207,170,104,235,130,74,157,221,249,183,111,222,126,243,237,207,47,159,229,227,157,207,41,160,119,231,49,232,90,177,84,117,167,152,9,23,190,230,80,30,252,33,201,39,137,238,147,104,89,75,52,174,36,234,151,194,244,97,41, 205,115,141,94,14,102,233,145,228,87,244,255,77,65,75,15,238,185,232,250,166,115,98,62,111,205,255,93,77,207,159,148,231,239,80,158,7,9,250,73,40,255,180,69,215,181,225,244,135,88,116,219,41,104,59,107,252,249,103,63,253,202,63,127,2,80,75,3,4,20,0,2, 0,8,0,131,128,249,52,23,55,187,63,234,22,0,0,20,138,0,0,13,0,0,0,101,100,105,116,45,102,105,110,100,46,115,118,103,236,93,109,115,226,72,146,254,62,191,130,163,191,140,99,65,212,251,139,187,221,27,179,61,55,19,123,49,123,23,177,51,19,247,89,6,129,217, 198,224,19,184,109,247,175,191,204,146,144,170,68,9,132,49,211,179,14,67,116,180,72,149,234,37,243,169,204,172,84,86,249,195,95,31,111,23,189,47,89,190,158,175,150,87,125,154,144,126,47,91,142,87,147,249,114,118,213,255,253,183,159,134,166,223,91,111, 210,229,36,93,172,150,217,85,127,185,234,255,245,227,119,31,254,99,56,236,125,202,179,116,147,77,122,15,243,205,77,239,239,203,207,235,113,122,151,245,190,191,217,108,238,46,71,163,135,135,135,100,94,18,147,85,62,27,93,244,134,67,120,114,253,101,246, 93,175,215,131,102,151,235,203,201,248,170,95,150,191,187,207,23,174,220,100,60,202,22,217,109,182,220,172,71,52,161,163,126,93,124,92,23,127,200,174,147,60,91,175,238,243,113,81,253,120,236,151,204,39,211,186,40,244,228,129,187,66,212,90,59,34,108,196, 216,16,74,12,215,79,203,77,250,56,92,174,223,121,143,66,7,99,143,50,66,200,8,238,213,37,187,149,186,124,92,0,27,90,59,227,238,250,173,3,235,239,224,95,245,192,150,144,20,99,157,194,147,89,178,204,54,163,31,127,251,177,186,57,36,201,100,51,241,170,217, 114,62,104,55,16,199,50,189,205,214,119,233,56,91,143,182,116,247,252,246,199,101,246,120,183,202,55,195,167,201,29,116,198,146,132,184,79,180,204,99,135,50,211,249,34,195,54,175,250,163,155,213,109,54,90,111,178,47,217,114,148,77,230,120,111,57,25,10, 147,220,45,11,198,109,135,117,57,89,141,139,103,170,98,201,150,185,126,153,235,116,93,213,251,175,249,237,109,58,30,173,243,241,104,252,101,61,2,232,206,86,195,249,120,181,28,110,110,50,108,119,156,46,210,235,69,54,74,199,27,192,252,58,236,108,53,19, 72,34,248,95,38,208,197,69,216,154,87,128,179,226,217,201,85,31,58,197,132,117,63,111,178,249,236,102,115,213,135,225,20,220,184,123,116,244,135,249,100,115,19,146,63,2,253,195,36,155,174,241,126,81,17,254,226,238,6,220,202,211,201,60,93,252,140,255, 193,108,40,10,121,125,29,175,22,139,108,12,77,165,139,135,244,169,24,8,126,28,164,46,111,242,12,166,192,59,184,206,210,124,91,135,36,138,84,229,176,189,176,9,73,56,173,110,207,74,226,239,203,249,6,176,126,191,206,242,95,17,47,255,179,252,125,157,237, 148,250,45,79,151,107,0,231,237,85,255,54,221,228,243,199,239,135,44,209,90,112,99,7,4,190,52,177,202,106,162,6,148,2,93,49,62,24,26,205,18,99,164,184,168,42,27,63,94,245,21,145,137,166,130,217,154,250,132,108,83,137,18,218,212,212,105,180,236,52,90, 54,7,205,70,117,2,37,141,234,247,70,37,123,67,214,116,102,47,178,45,194,213,143,229,253,15,235,205,234,110,91,22,128,179,121,90,0,54,145,56,132,26,87,249,229,245,34,29,127,126,239,8,43,224,231,124,243,116,73,223,247,235,39,86,211,233,58,131,102,137,71, 115,24,131,39,160,37,86,13,224,121,109,145,88,91,52,222,150,168,153,53,10,135,252,237,16,234,9,251,84,132,198,1,58,164,198,210,68,241,63,47,66,35,0,20,166,255,226,160,136,3,80,146,118,0,122,165,84,172,194,68,246,143,159,25,127,24,220,37,59,4,247,103, 106,140,189,112,7,201,237,19,44,211,127,0,220,89,66,181,141,193,253,145,94,245,57,1,170,212,180,150,221,19,82,85,19,194,143,44,90,150,225,36,176,9,2,71,159,65,247,10,41,88,119,232,191,43,108,239,51,181,47,180,37,142,129,99,180,181,206,128,132,214,212, 51,1,185,195,37,42,149,106,101,211,182,65,44,36,162,211,150,120,126,93,235,96,167,238,211,96,237,246,209,247,135,149,6,54,31,211,26,180,99,243,6,191,7,155,63,206,144,65,215,210,249,44,159,240,192,0,48,146,192,156,161,129,250,87,34,145,74,7,10,93,38,76, 234,192,26,52,31,156,70,30,220,63,203,91,120,24,67,109,132,71,63,17,252,246,99,188,151,154,183,139,232,72,81,216,20,191,173,162,136,55,47,61,17,133,210,232,38,34,118,80,68,148,34,171,141,104,202,72,29,148,209,206,147,223,74,72,74,125,83,33,41,115,72, 72,93,21,18,83,246,144,58,98,154,60,95,25,165,28,191,207,87,70,76,211,231,171,34,49,198,239,115,85,81,103,22,202,195,44,84,39,176,112,154,226,247,4,22,170,19,88,120,237,62,47,172,205,79,240,211,16,175,237,171,18,48,93,158,22,57,213,79,35,224,154,25,166, 249,96,43,168,250,2,88,192,153,86,122,192,19,46,185,148,88,70,9,37,132,14,151,40,38,49,76,8,106,73,160,0,121,162,165,162,204,200,64,225,237,150,157,70,203,130,182,228,26,168,84,211,218,84,156,131,213,242,16,171,205,233,172,198,40,80,230,56,77,132,229, 200,87,65,41,103,33,23,57,135,251,202,55,206,142,139,176,162,227,202,210,208,108,236,150,157,70,203,2,23,97,241,167,137,17,222,66,234,12,92,44,60,190,189,124,84,230,207,5,89,42,184,179,112,62,179,117,194,20,44,50,148,110,64,182,89,118,26,45,139,144,133, 178,210,40,43,15,49,123,215,25,136,25,254,105,87,223,34,230,132,236,227,31,99,176,26,139,241,175,186,37,18,69,185,100,22,24,105,181,53,196,92,28,41,190,93,16,48,102,120,28,76,13,151,170,21,137,221,152,170,247,122,188,211,142,46,245,191,11,75,229,30,150, 242,147,89,122,138,82,112,139,229,246,190,195,109,19,114,91,36,156,128,8,100,24,233,98,9,209,192,174,80,128,59,69,167,177,162,24,231,146,96,112,168,164,162,131,16,105,68,118,181,16,141,0,205,90,83,56,92,1,56,58,11,241,232,48,155,16,130,28,114,185,160, 12,235,31,237,243,235,9,126,79,9,125,189,187,166,248,237,224,207,123,209,184,93,87,204,27,134,57,236,226,65,41,241,124,31,79,25,252,158,219,77,22,128,234,195,66,107,137,87,118,26,135,102,118,58,110,4,62,0,157,68,27,193,169,120,223,133,141,158,75,115, 52,27,227,205,43,173,192,165,147,47,201,71,48,172,7,7,226,185,201,157,193,31,13,28,117,98,219,41,139,180,88,171,32,53,81,240,237,5,217,166,245,97,157,127,120,164,207,224,107,75,172,179,3,95,13,61,16,163,236,30,235,124,169,197,46,7,103,175,187,50,108, 129,84,183,48,47,180,213,65,247,49,174,69,87,173,218,29,126,128,61,64,32,59,78,245,31,136,188,118,155,34,222,184,200,139,73,205,136,99,164,102,82,252,30,101,194,246,140,195,236,179,96,177,168,141,193,239,75,113,209,72,242,199,71,41,66,101,19,89,243,189, 224,219,164,253,174,25,215,176,32,28,12,49,182,64,137,50,217,16,28,53,102,18,11,75,65,115,209,244,49,41,39,132,154,112,145,173,97,69,169,45,99,77,39,179,81,118,26,45,139,94,166,74,36,51,138,177,147,223,57,237,11,85,32,190,247,189,117,57,250,101,53,190, 112,99,58,1,109,199,5,13,94,184,49,24,144,33,204,170,240,133,27,77,56,151,214,123,111,243,228,94,195,37,82,106,173,207,58,120,231,13,239,27,252,11,230,146,224,40,133,180,241,248,2,179,148,89,54,24,42,88,196,113,35,224,74,39,66,17,37,77,243,69,102,162, 164,98,146,132,47,50,69,210,152,197,142,175,28,116,177,209,126,217,130,219,4,43,32,103,5,21,87,251,65,197,249,51,64,69,13,240,137,41,205,131,193,83,158,40,194,168,183,160,198,193,83,141,70,204,88,30,12,158,201,68,11,142,30,222,57,87,168,232,173,239,211, 96,252,88,13,134,58,6,7,47,136,109,100,108,48,154,24,10,139,211,48,182,180,91,118,26,45,139,129,60,88,242,130,158,151,244,188,28,81,251,117,58,127,201,132,24,9,3,87,28,103,144,6,73,19,146,13,153,24,12,93,14,139,16,220,253,98,9,147,160,212,129,12,136, 32,210,106,137,57,4,137,21,148,144,80,181,195,74,95,80,193,117,35,84,198,19,92,26,145,48,126,176,91,118,26,45,11,108,87,229,52,222,206,194,15,35,204,154,115,87,85,154,30,102,13,78,190,204,179,135,239,66,1,60,204,151,147,213,195,16,163,133,91,182,53,239, 97,124,177,90,143,53,111,110,179,251,76,165,135,155,37,202,60,63,74,232,78,137,201,106,124,143,121,173,195,251,66,62,101,102,160,87,98,150,207,39,195,235,235,21,244,97,147,223,111,69,182,190,89,61,224,157,128,88,99,234,62,207,177,210,69,250,148,1,119, 220,127,59,77,59,198,139,196,26,98,5,223,185,249,232,102,183,229,70,147,157,129,127,93,173,110,107,231,191,34,223,165,179,108,125,147,194,136,225,217,216,205,210,133,114,78,90,121,255,122,149,79,178,220,187,193,164,176,132,86,172,44,238,59,119,12,166, 129,114,159,242,22,214,184,189,81,184,187,253,58,105,18,211,63,155,93,64,158,249,125,156,166,139,42,228,243,225,54,219,164,147,116,147,214,85,108,41,162,202,189,156,76,47,255,249,227,79,149,251,56,30,95,254,239,42,255,92,123,122,88,32,189,94,221,3,24, 42,23,23,211,57,199,151,56,165,210,205,199,249,45,52,143,185,192,127,121,188,93,0,70,171,27,65,225,205,211,93,86,87,90,84,187,205,107,142,230,70,79,198,183,115,124,104,244,235,102,190,88,252,29,27,241,220,220,178,210,249,102,145,125,252,207,201,124,211, 251,9,80,233,26,47,104,65,177,245,253,245,191,64,27,125,244,218,119,227,254,91,58,243,105,37,117,49,255,136,89,184,31,70,229,143,104,137,169,107,110,95,137,197,106,156,110,178,253,101,214,160,255,198,55,177,50,5,45,232,160,27,221,206,80,80,96,139,249, 56,91,174,15,179,119,140,137,236,243,47,0,176,219,219,213,114,237,56,93,62,187,30,93,63,13,215,233,136,37,100,180,195,102,247,220,42,15,250,7,205,254,48,171,124,252,93,161,252,234,210,158,123,63,167,121,14,98,140,73,6,71,180,91,139,43,185,211,160,147, 162,27,204,78,223,86,75,80,233,215,247,199,246,239,191,210,207,247,215,61,232,37,24,161,252,216,238,237,182,233,202,226,196,241,39,210,47,77,185,120,115,169,155,72,10,121,132,210,190,203,114,152,25,235,131,210,142,237,28,248,103,118,151,175,38,247,46, 35,60,20,243,137,21,255,56,95,23,44,137,85,156,103,255,119,63,135,39,158,85,243,127,175,54,192,143,151,173,243,135,77,123,103,79,226,66,150,207,191,56,121,34,20,214,47,219,233,95,111,210,60,251,97,49,255,236,51,195,225,174,196,89,149,176,82,171,244,15, 163,173,194,119,191,102,59,102,120,117,127,119,187,154,100,165,57,245,108,77,220,188,46,210,235,108,113,213,255,213,25,155,173,9,153,125,23,6,27,38,243,245,29,60,126,57,95,162,135,23,248,116,51,73,188,229,235,38,226,152,81,37,97,57,9,14,88,153,189,41, 140,212,206,33,27,8,240,145,136,86,3,193,18,101,192,27,188,168,35,46,57,168,196,154,167,96,114,135,84,194,34,8,150,230,126,34,238,163,163,75,139,126,29,247,232,213,78,6,13,142,174,212,212,143,81,111,189,28,206,45,166,74,203,70,8,4,27,22,84,243,221,24, 88,29,235,18,132,17,69,141,124,239,231,238,78,193,166,93,130,181,251,254,221,110,34,236,133,187,235,197,243,220,207,252,126,145,93,46,87,203,175,224,89,188,135,201,182,250,236,126,102,229,117,225,143,93,210,237,79,172,22,68,118,9,18,94,78,124,226,191, 86,243,229,37,32,60,203,223,223,166,249,231,44,47,106,41,174,135,235,77,154,111,2,202,237,124,18,252,206,150,147,160,93,87,213,98,14,255,93,138,45,109,146,130,59,146,231,128,1,191,36,82,139,152,210,37,217,210,234,65,126,153,175,231,215,243,5,254,112, 151,139,236,125,8,164,247,171,47,89,62,93,172,30,182,247,253,105,112,151,110,110,60,25,84,238,49,96,27,157,8,112,66,199,240,105,72,15,31,130,101,141,47,111,160,254,163,55,100,20,164,13,203,98,204,26,70,32,25,194,77,239,83,11,221,163,114,166,193,103,39, 130,198,137,80,131,86,176,224,128,21,190,0,178,73,164,36,70,245,40,174,56,13,21,106,192,24,192,197,16,45,183,52,110,6,198,36,248,58,147,75,120,188,166,14,97,54,72,205,56,97,189,33,172,225,149,148,130,123,189,82,45,125,253,218,59,1,169,187,59,20,222,144, 122,50,82,79,148,1,167,111,50,232,40,131,230,36,175,76,65,99,146,71,233,30,213,155,228,49,34,214,160,9,24,50,166,164,55,201,135,248,198,3,138,48,233,205,114,143,232,79,115,143,236,207,115,170,133,76,24,149,58,152,231,209,238,6,243,188,86,117,129,105, 107,85,146,117,56,127,86,248,16,51,223,121,216,103,228,15,58,22,13,63,226,111,222,130,118,235,115,208,106,101,234,25,245,178,209,240,21,92,219,172,112,169,115,205,105,81,189,224,104,157,30,45,53,169,139,198,156,169,106,234,52,119,2,170,143,254,102,53, 62,222,155,247,118,71,113,218,100,220,51,123,174,97,221,250,185,125,242,108,157,30,12,199,213,33,172,210,75,226,34,193,80,178,23,98,174,92,43,146,88,70,132,173,99,158,143,46,190,69,184,148,172,6,165,203,199,116,73,115,94,78,95,142,33,157,132,10,152,19, 254,158,177,110,240,112,195,125,25,36,40,243,134,132,40,18,148,151,125,189,69,2,238,193,146,198,11,35,111,145,192,49,130,170,184,9,144,0,186,19,42,145,60,64,130,72,164,225,182,137,4,82,34,193,203,181,203,31,3,114,133,144,89,100,157,225,46,23,233,6,115, 98,139,236,204,193,144,39,218,26,203,113,145,113,17,174,86,24,230,230,87,150,123,22,170,212,25,245,95,12,85,32,116,176,219,190,170,62,22,121,239,66,105,199,80,226,181,184,121,102,50,160,85,154,24,10,23,76,8,171,217,133,31,96,136,7,246,91,98,242,97,14, 152,159,185,72,172,13,239,120,185,163,36,184,179,205,71,109,140,205,79,151,108,86,54,109,173,172,219,126,149,200,123,242,182,92,137,174,123,87,130,13,36,34,216,62,119,160,53,122,184,53,161,241,219,222,154,10,3,13,209,29,43,17,223,211,107,171,242,15,131, 70,156,159,196,120,34,152,113,111,32,221,91,10,184,2,23,197,167,202,132,8,14,84,124,119,180,165,225,166,73,6,52,88,132,24,41,67,26,172,99,116,98,12,109,148,84,9,51,172,174,177,73,171,219,246,169,48,167,172,194,146,88,99,65,35,54,1,84,135,109,87,180,79, 126,47,43,170,63,26,172,177,73,219,182,29,184,85,181,99,69,195,36,194,163,103,145,36,71,204,162,50,91,152,176,216,44,210,71,206,162,120,101,127,146,89,36,217,31,57,139,164,248,99,102,145,42,193,20,206,34,85,78,34,127,22,185,157,199,142,86,35,185,166, 249,179,200,43,89,205,141,186,70,143,230,181,237,81,203,73,228,207,34,89,78,13,191,237,154,230,207,162,154,234,141,166,156,68,36,58,238,214,89,36,131,93,127,163,217,254,53,115,155,251,143,201,254,23,221,86,193,7,236,171,147,156,77,172,133,149,19,177, 3,6,151,176,206,98,10,198,95,83,57,174,217,165,228,4,104,138,105,240,81,41,210,180,6,238,74,160,193,170,13,174,124,218,167,158,73,52,35,70,24,238,81,77,185,109,132,149,53,114,66,61,154,223,118,64,21,214,192,220,118,53,82,162,13,65,26,229,84,90,237,181, 93,211,62,121,189,244,75,122,99,20,214,82,198,162,227,142,46,43,113,83,43,57,24,225,216,35,45,121,22,105,81,88,80,43,77,117,40,45,124,129,207,96,133,236,75,11,16,206,12,40,65,95,90,53,205,151,86,77,173,101,80,215,24,208,170,182,3,42,161,28,26,240,164, 5,51,174,112,67,253,182,43,154,47,45,191,164,55,26,168,17,92,184,232,184,91,165,165,155,75,252,134,208,124,145,237,46,160,0,177,114,199,143,197,151,125,171,201,164,197,143,45,214,75,176,6,52,160,74,56,221,9,59,93,223,111,54,45,81,167,14,235,165,186,99, 132,106,41,184,241,82,107,28,40,192,166,75,130,81,148,129,4,116,11,166,149,234,253,226,81,5,40,41,66,76,99,235,99,193,45,165,107,219,24,143,152,212,204,124,97,30,86,233,174,93,214,156,47,197,66,88,165,43,109,188,148,182,130,131,172,76,247,5,14,18,70, 36,149,2,57,88,81,241,221,12,55,140,153,40,7,69,55,14,54,2,77,157,223,82,201,150,232,210,63,210,217,114,62,125,154,47,103,189,159,23,233,122,155,133,20,15,96,237,89,51,214,123,255,8,124,105,124,239,95,113,193,18,174,184,98,166,186,181,179,160,148,188, 237,181,85,123,16,227,157,189,198,111,19,66,18,237,174,150,246,168,136,239,55,140,89,224,182,37,106,52,229,220,124,179,168,69,16,183,48,106,247,77,31,99,69,247,69,228,5,97,44,17,186,72,233,114,84,223,137,6,223,218,70,74,151,161,10,152,63,74,88,255,173, 97,17,218,32,74,114,75,140,167,160,223,80,242,237,81,98,206,137,18,74,147,55,148,188,2,148,88,114,86,148,240,55,148,188,10,148,176,179,162,68,190,161,228,85,160,68,156,21,37,250,13,37,175,2,37,103,245,94,169,125,67,201,171,64,201,89,189,87,246,230,189, 190,6,148,104,114,86,239,149,189,121,175,175,2,37,60,226,189,218,196,98,223,37,63,2,37,34,177,248,105,162,164,213,123,37,202,48,34,24,183,111,48,249,183,128,201,11,57,38,45,48,121,115,76,94,7,74,204,57,81,194,223,28,147,87,129,18,65,206,138,146,55,199, 228,117,160,132,157,21,37,111,97,181,215,129,146,72,88,13,143,99,128,190,211,23,64,73,123,88,141,40,98,165,100,29,80,82,231,99,204,130,247,198,84,235,125,219,38,73,162,160,42,173,163,105,191,229,45,24,169,53,74,72,76,36,129,70,185,244,246,79,182,236, 158,195,23,244,87,253,52,31,239,219,52,70,53,165,140,89,243,190,235,230,140,221,13,142,145,188,232,70,46,196,201,200,62,207,22,38,186,101,115,247,173,76,135,19,250,79,218,218,180,77,187,16,66,203,216,94,159,248,73,84,126,129,232,65,83,94,1,196,116,125, 232,84,172,128,219,197,97,57,103,38,152,86,46,145,68,224,217,68,0,67,210,171,26,233,253,208,171,234,235,85,15,246,72,143,194,183,167,19,133,41,78,74,13,58,62,16,107,225,235,222,164,121,154,8,161,4,143,39,118,72,252,235,117,100,48,4,81,91,45,36,238,178, 114,135,131,43,115,113,228,254,211,245,122,60,30,151,255,190,194,39,34,53,102,196,14,199,168,193,20,48,169,240,240,94,119,26,180,192,93,106,20,183,144,25,193,125,42,199,228,77,13,107,229,129,77,180,128,113,75,235,209,92,110,39,76,123,204,73,171,169,76, 37,196,37,152,249,53,50,220,234,76,165,241,219,174,104,159,122,96,89,41,209,148,9,143,10,139,119,170,141,212,100,0,158,55,19,70,43,217,99,192,40,226,142,172,130,53,27,227,68,82,220,29,7,84,97,165,165,18,243,28,25,215,220,50,164,41,198,153,212,238,105, 16,159,182,61,134,27,226,52,238,106,5,26,136,0,174,122,191,244,184,77,4,3,29,66,6,2,101,163,141,192,241,56,153,131,29,118,155,195,165,177,84,203,30,94,17,99,97,140,112,37,96,104,68,245,112,51,157,33,156,186,167,161,26,110,44,62,141,123,237,168,226,102, 0,181,91,67,173,166,72,131,238,50,28,185,73,40,3,20,105,124,154,105,24,36,71,40,18,169,164,181,216,35,150,112,202,53,148,132,81,72,102,169,65,30,65,159,149,96,76,56,14,91,33,45,1,89,144,196,48,232,18,69,154,214,156,81,71,35,96,212,185,163,25,128,173, 82,197,211,214,10,134,84,145,112,112,130,133,232,129,175,202,53,30,90,56,96,120,74,152,86,138,123,180,64,186,21,181,198,1,182,168,148,178,62,94,98,200,250,218,115,136,147,0,123,41,6,208,184,194,179,198,156,220,84,66,45,21,148,123,84,232,39,32,70,51,11, 45,225,233,227,48,0,143,134,25,139,10,92,36,94,140,168,164,66,61,156,43,197,84,175,192,30,225,46,135,214,74,152,197,198,107,187,166,125,194,84,61,38,44,33,210,163,74,0,10,232,48,162,6,128,61,208,118,212,42,143,230,183,93,83,109,162,52,112,83,81,172,17, 83,58,169,173,70,67,162,227,222,183,97,186,86,217,49,39,110,50,198,239,209,150,46,114,38,0,30,175,215,216,122,134,235,22,105,192,167,121,179,126,221,55,87,159,69,94,237,158,137,120,147,77,22,51,102,132,89,156,200,48,255,112,247,39,45,141,25,104,57,229, 83,193,68,81,80,123,196,160,18,35,154,107,235,211,80,221,105,176,250,182,48,102,37,21,21,10,55,168,238,188,26,25,58,192,204,112,191,237,138,230,140,25,177,160,43,141,71,117,198,12,140,7,115,230,72,43,65,85,97,204,164,85,46,193,158,57,115,177,53,102,214, 82,167,194,152,2,55,93,20,198,76,43,93,60,109,185,52,210,25,51,240,189,133,198,86,8,35,194,136,210,152,129,163,162,185,51,102,218,40,75,11,99,6,102,83,148,39,157,72,46,160,71,104,204,80,157,73,103,224,192,46,129,10,3,115,164,184,226,160,214,208,152,105, 201,156,242,7,195,5,14,57,177,122,0,245,16,14,230,138,57,99,166,209,204,59,99,6,38,12,188,37,120,26,253,38,77,209,152,81,194,9,227,165,49,131,15,30,69,1,198,12,15,72,150,165,49,195,179,55,29,135,193,118,43,148,15,24,51,48,55,133,129,211,232,111,49,103, 204,64,13,131,129,196,114,184,172,114,230,8,70,12,22,84,203,194,152,89,161,153,51,81,160,199,209,104,162,49,195,63,156,225,209,2,233,86,212,26,7,206,152,25,46,124,188,196,144,181,53,102,96,100,96,68,10,4,4,253,21,78,234,34,49,176,58,5,85,191,165,130, 140,240,85,6,122,142,3,48,14,28,132,206,3,26,166,223,203,242,233,138,202,192,253,100,138,67,91,117,141,24,160,102,133,145,169,218,174,105,120,136,7,24,51,105,193,221,168,169,248,23,49,13,3,46,120,53,214,52,191,237,45,213,120,189,172,107,172,199,24,27, 119,116,67,128,16,156,188,140,10,141,154,174,221,3,42,222,86,123,47,171,83,65,139,72,220,89,37,10,45,2,158,40,110,208,226,136,45,195,113,59,145,77,56,17,146,112,212,44,232,71,115,208,3,206,29,100,202,160,30,32,150,18,116,189,113,30,91,238,102,124,140, 234,116,3,129,218,157,110,224,20,180,88,148,230,230,7,55,224,134,59,151,88,104,33,172,65,13,8,64,7,231,24,81,143,103,84,48,130,52,9,62,184,59,35,7,183,34,129,94,43,180,226,206,120,218,144,219,229,60,139,113,135,117,90,135,72,199,94,232,119,59,102,160, 139,171,199,249,206,41,3,140,192,234,84,188,65,191,37,208,17,236,158,13,2,29,187,231,251,54,2,29,197,222,45,198,121,107,160,3,255,96,150,145,193,170,60,8,116,196,10,20,27,62,13,6,108,193,9,233,85,141,96,220,98,91,220,187,42,227,22,10,150,187,12,140,189, 30,116,124,32,214,194,161,64,7,115,75,234,248,233,210,197,173,33,110,216,148,232,1,12,21,250,10,4,0,121,48,136,237,29,95,132,225,0,73,236,139,77,146,150,93,80,120,250,148,228,246,109,78,196,98,221,160,112,101,36,212,109,17,64,34,200,162,168,206,103,73, 192,129,22,218,240,48,212,13,6,131,107,112,207,116,24,234,198,195,54,136,81,68,138,70,172,27,15,19,7,27,192,84,35,212,205,192,87,212,220,242,67,135,87,128,19,107,13,254,165,35,133,97,26,61,24,226,33,29,198,18,6,36,173,8,56,133,187,208,189,56,77,189,119, 141,90,243,103,68,173,223,129,105,44,254,58,103,232,202,104,33,149,149,127,58,236,158,130,210,184,102,102,251,52,51,254,9,43,186,71,51,3,28,153,109,13,65,215,103,146,183,104,230,88,129,66,51,203,196,252,127,123,87,146,194,48,12,3,239,125,69,30,80,130, 181,88,142,160,244,255,207,234,140,27,130,41,110,155,75,111,189,25,37,194,11,178,208,140,45,57,1,130,98,57,58,129,163,61,126,31,90,187,163,101,210,111,65,28,82,174,39,21,102,61,124,243,204,6,195,23,159,122,230,253,19,252,177,34,138,103,241,63,214,184, 223,178,126,164,160,95,61,51,240,18,212,235,249,115,26,203,127,228,254,115,54,132,55,116,129,234,219,202,35,142,236,156,2,208,92,122,154,142,210,109,109,198,231,122,132,168,47,196,162,155,221,33,11,62,63,162,189,248,220,32,133,93,178,130,125,48,181,188, 106,180,218,19,216,91,201,2,252,143,70,203,234,204,89,229,201,134,136,251,147,104,45,38,8,38,136,203,29,176,188,54,142,199,130,181,131,40,107,206,247,47,23,49,168,3,56,142,50,104,39,169,110,13,29,164,196,197,205,176,217,251,40,183,42,136,230,177,63,20, 129,140,96,60,176,203,146,145,157,75,177,149,1,144,231,21,115,32,231,2,116,194,251,197,78,38,103,88,139,217,170,189,193,7,161,211,98,118,55,86,43,191,95,30,80,75,3,4,20,0,2,0,8,0,141,128,249,52,100,188,189,164,140,9,0,0,25,36,0,0,13,0,0,0,101,100,105, 116,45,117,110,100,111,46,115,118,103,221,89,89,147,219,184,17,126,247,175,96,228,23,187,86,4,113,17,36,52,199,150,227,201,166,54,229,36,85,107,187,242,152,162,72,72,162,135,34,21,144,26,73,254,245,105,128,20,143,17,53,135,199,187,78,69,83,83,35,52,26, 221,192,215,7,186,49,151,63,239,215,153,115,167,116,153,22,249,213,132,32,60,113,84,30,23,73,154,47,175,38,159,63,253,226,134,19,167,172,162,60,137,178,34,87,87,147,188,152,252,124,253,234,242,79,174,235,188,215,42,170,84,226,236,210,106,229,252,154, 223,150,113,180,81,206,155,85,85,109,102,158,183,219,237,80,218,16,81,161,151,222,91,199,117,97,101,121,183,124,229,56,14,168,205,203,89,18,95,77,26,254,205,86,103,150,47,137,61,149,169,181,202,171,210,35,136,120,147,142,61,238,216,119,106,142,180,42, 139,173,142,107,241,113,220,231,212,201,162,99,133,157,236,152,101,34,82,74,15,83,143,82,23,56,220,242,144,87,209,222,205,203,215,189,165,176,193,177,165,20,99,236,193,92,199,249,52,174,217,62,3,24,206,110,198,206,246,181,3,244,27,248,109,23,180,24,214, 103,93,192,74,133,114,85,121,55,159,110,188,35,183,139,81,82,37,61,49,199,85,3,189,3,115,228,209,90,149,155,40,86,101,171,194,174,63,14,102,106,191,41,116,229,30,146,13,108,70,98,132,237,103,148,103,255,4,158,69,154,41,163,243,106,226,173,138,181,242, 190,164,235,117,20,123,55,170,188,173,138,141,183,75,129,3,109,242,26,185,93,154,84,171,171,9,15,55,123,59,94,169,116,185,170,122,132,52,185,154,0,204,132,176,70,221,17,137,89,235,203,24,49,58,220,73,111,138,179,159,18,117,167,178,225,218,164,136,231, 81,217,110,177,74,151,74,87,94,124,87,122,11,173,84,82,111,213,162,7,17,177,44,220,52,46,114,183,90,129,179,122,160,33,139,230,153,242,162,184,2,29,229,137,224,250,236,42,73,43,119,155,39,5,58,58,73,187,187,98,91,109,182,213,191,213,190,82,121,189,77, 80,212,179,153,157,54,203,90,218,228,26,4,92,38,106,81,26,65,53,40,102,196,236,4,76,129,111,169,72,255,85,71,73,10,225,84,51,245,52,198,69,150,169,24,96,141,178,93,116,168,183,124,148,51,92,74,25,21,141,80,16,91,2,10,71,94,56,100,117,200,224,100,134, 232,130,196,66,207,94,47,236,231,194,146,10,240,177,180,58,204,200,197,164,91,83,44,22,165,2,197,184,71,179,38,133,21,160,11,114,142,247,50,109,120,76,27,25,213,198,112,171,237,210,27,30,251,251,195,72,158,3,99,204,35,136,166,111,134,145,60,15,198,49, 109,207,128,145,254,145,48,226,240,25,48,170,36,225,47,129,17,63,11,198,49,109,207,128,145,208,63,12,198,80,8,250,12,24,235,220,254,141,48,130,46,254,44,24,199,180,61,25,70,208,38,30,131,209,140,162,236,217,48,218,251,122,182,210,10,234,139,215,35,120, 246,225,30,170,128,233,176,157,142,247,87,19,202,81,200,2,2,153,181,165,30,174,38,76,32,78,9,161,65,75,93,140,242,46,70,121,53,0,226,35,193,121,192,58,226,178,217,193,39,29,229,37,20,16,235,171,201,58,170,116,186,127,67,154,27,123,138,71,190,248,76,4, 148,77,93,129,40,13,168,240,149,75,248,148,8,20,6,12,139,183,39,210,63,231,105,5,53,209,182,84,250,163,169,43,254,153,127,46,85,103,133,51,110,123,26,220,36,236,118,126,214,28,103,28,169,141,35,18,202,71,60,243,233,215,214,89,183,237,180,73,242,136,103, 62,253,218,250,125,162,255,1,183,29,2,126,98,15,18,64,228,62,205,214,143,251,155,75,80,72,24,15,8,248,146,152,194,136,4,68,210,254,183,1,3,23,64,230,28,79,125,142,8,38,132,116,94,183,39,0,112,128,176,192,33,238,130,226,96,168,4,49,233,227,46,20,247,20, 136,20,9,202,89,47,40,14,53,213,135,176,18,242,81,55,125,9,190,230,182,122,176,38,224,131,83,81,129,252,193,129,24,71,212,31,156,6,88,122,20,115,18,206,144,31,144,144,145,239,20,150,47,58,47,17,15,151,146,244,7,158,247,251,167,125,91,27,159,79,251,80, 96,210,65,218,135,252,140,37,199,108,144,245,9,67,52,132,44,75,6,89,255,132,117,49,202,106,146,62,70,68,112,33,158,16,131,20,113,41,48,35,54,232,124,34,177,111,99,13,174,2,65,2,95,216,1,69,208,87,137,80,78,93,234,35,66,57,166,192,29,160,144,10,246,204, 204,127,233,153,142,196,126,107,187,33,211,10,37,119,169,218,189,106,114,163,46,110,33,57,54,21,104,35,30,250,197,12,104,117,57,53,233,26,28,211,160,53,195,77,180,84,54,153,2,95,157,77,155,137,121,161,19,165,143,83,194,126,6,83,77,190,53,157,32,245,185, 196,68,30,231,91,79,48,194,123,108,120,108,190,92,69,73,177,3,255,188,63,249,181,40,0,112,10,128,133,156,6,228,254,180,113,3,22,192,221,141,89,235,215,221,36,232,115,193,242,224,221,66,158,72,142,183,90,3,228,110,22,29,20,28,206,254,57,202,47,87,197, 110,169,13,72,139,40,107,81,106,151,154,41,119,62,47,64,121,165,183,39,211,208,163,110,205,171,11,180,167,214,156,77,167,221,227,48,242,251,199,30,213,178,75,161,187,221,185,77,7,31,74,114,134,225,216,210,75,70,207,112,152,178,71,242,51,147,0,82,32,142, 181,242,229,90,85,81,18,85,81,231,38,71,10,63,246,194,58,89,204,126,187,249,165,189,202,227,120,246,175,66,223,118,87,180,97,136,230,208,102,95,77,218,242,194,180,215,241,204,132,79,84,93,167,107,56,187,121,220,249,105,191,206,192,175,219,137,1,115,117, 216,168,78,104,45,246,248,80,53,250,216,149,196,235,212,44,242,62,86,224,242,191,26,37,189,146,163,22,26,155,167,182,66,95,247,4,155,3,188,91,182,133,193,96,11,105,149,169,235,191,69,183,219,185,243,177,82,144,173,180,221,110,77,239,203,240,78,133,88, 206,19,125,70,108,125,134,235,230,8,245,251,13,90,111,203,52,94,69,89,134,226,175,118,105,195,245,170,191,207,44,141,85,94,62,14,139,85,155,222,65,80,175,215,69,94,90,132,154,181,165,55,63,184,101,228,81,132,189,19,120,234,131,253,37,73,43,231,51,120, 199,216,97,237,1,182,243,47,144,220,7,8,152,125,252,57,90,222,3,209,80,179,244,218,188,214,92,122,205,96,148,99,107,213,61,196,161,213,157,210,163,82,106,218,64,121,141,224,112,155,214,72,198,85,251,174,251,225,62,162,61,239,125,38,152,67,83,109,148, 6,119,44,31,53,213,216,251,235,111,106,163,139,100,107,31,192,134,54,122,161,224,155,20,238,136,116,190,29,21,172,213,127,182,41,172,248,38,201,255,40,42,128,228,251,202,124,87,157,223,236,139,80,80,58,189,179,38,53,222,80,126,223,77,127,92,69,90,189, 203,210,219,62,24,214,245,26,87,59,118,37,189,60,122,233,29,179,172,29,45,187,236,59,184,150,218,212,157,69,115,5,119,250,7,51,233,144,211,235,169,216,110,214,69,162,154,229,199,196,189,137,170,213,241,72,213,88,71,193,67,25,48,49,210,194,186,166,189, 37,212,167,83,129,145,192,28,152,2,31,49,232,162,113,87,196,192,110,255,238,112,12,82,72,40,152,211,182,212,206,59,167,237,164,157,16,90,10,40,135,152,239,96,135,192,143,35,17,116,43,44,12,253,233,19,23,140,105,248,218,110,162,45,141,52,220,107,237,218, 145,233,253,88,127,223,78,143,191,31,116,211,163,15,9,198,94,6,227,80,136,174,63,110,250,213,182,47,69,132,19,211,9,6,23,195,247,25,83,165,205,224,50,123,243,250,244,177,227,173,157,237,117,210,118,168,183,153,154,65,78,204,139,36,185,168,75,191,89,94, 228,170,249,94,23,14,192,220,12,77,173,13,238,49,131,120,170,250,180,47,69,154,207,32,148,148,190,88,71,250,86,233,90,72,253,221,45,171,72,87,3,202,58,77,6,99,149,39,3,181,86,84,150,194,159,25,193,71,98,18,65,169,163,117,116,24,176,26,106,221,227,207, 90,206,238,144,119,105,153,206,211,204,12,236,215,76,93,36,105,185,1,151,158,165,185,217,249,69,1,23,194,34,43,118,199,249,83,67,153,114,0,90,16,29,119,125,75,63,10,238,25,135,156,181,201,105,167,121,223,38,8,247,172,2,135,252,10,181,241,209,42,163,34, 40,125,123,207,82,77,180,17,250,3,77,198,127,39,139,205,179,34,190,61,111,48,155,59,36,242,67,202,57,153,114,232,214,24,36,25,233,188,119,184,132,132,3,100,105,222,48,152,239,251,88,58,220,54,110,28,251,83,66,17,133,248,246,29,10,205,152,160,16,90,134, 196,101,32,124,231,67,143,200,160,247,162,20,178,1,80,125,243,48,34,169,12,167,208,136,5,56,12,137,28,242,50,48,132,96,220,104,31,163,118,52,202,16,99,129,20,227,180,247,38,65,249,212,247,41,80,41,10,124,243,111,74,147,190,4,147,146,193,121,56,10,2,12, 77,211,216,193,191,58,39,105,133,240,94,255,219,181,128,144,231,141,151,67,159,17,215,159,51,174,254,192,130,251,154,40,9,130,161,105,24,56,39,120,108,8,56,72,200,251,62,156,197,216,198,156,202,103,161,1,135,50,63,148,212,129,105,74,49,14,216,20,186, 107,28,6,112,165,56,20,110,22,30,6,152,24,26,156,87,250,22,240,150,234,35,238,227,80,4,161,1,124,132,10,253,29,198,82,208,218,96,132,131,162,81,90,95,38,3,152,253,16,250,240,129,204,142,218,209,192,52,44,196,50,144,163,52,107,68,10,215,147,111,169,0, 66,0,14,200,124,227,148,194,184,5,180,151,44,244,129,115,12,162,158,21,79,238,1,33,67,184,196,196,104,206,177,33,119,54,231,63,158,93,204,5,115,47,187,96,36,237,39,248,127,188,15,206,100,151,167,228,124,140,124,66,24,24,130,63,241,66,54,207,80,15,38, 255,255,233,43,153,255,160,27,217,102,17,129,4,149,80,49,17,19,180,34,164,129,12,32,104,77,14,15,125,72,199,144,58,113,0,17,40,32,234,72,136,124,1,65,196,76,212,65,89,106,162,14,234,181,128,153,162,211,252,239,36,32,24,114,171,67,5,146,126,200,185,48, 185,69,16,33,25,171,147,57,134,248,148,210,220,6,82,134,148,240,58,59,72,106,222,235,56,164,104,16,46,40,16,199,246,52,146,124,225,190,230,79,72,190,237,91,29,180,162,151,230,133,227,250,213,127,1,80,75,3,4,20,0,2,0,8,0,143,128,249,52,187,167,102,138, 170,9,0,0,119,36,0,0,13,0,0,0,101,100,105,116,45,114,101,100,111,46,115,118,103,221,89,235,147,219,182,17,255,238,191,130,149,191,196,19,17,196,139,0,161,123,100,220,184,233,164,147,182,51,113,50,253,216,161,72,72,98,142,34,85,146,58,73,254,235,187,0, 223,39,202,167,179,29,183,19,122,60,34,119,23,187,192,62,126,192,226,110,191,59,110,83,231,81,23,101,146,103,119,51,130,240,204,209,89,148,199,73,182,190,155,253,250,203,15,110,48,115,202,42,204,226,48,205,51,125,55,203,242,217,119,247,175,110,255,228, 186,206,247,133,14,43,29,59,135,164,218,56,63,102,15,101,20,238,180,243,205,166,170,118,11,207,59,28,14,40,105,136,40,47,214,222,27,199,117,97,100,249,184,126,229,56,14,152,205,202,69,28,221,205,26,249,221,190,72,173,92,28,121,58,213,91,157,85,165,71, 16,241,102,189,120,212,139,31,244,18,21,186,204,247,69,84,171,143,162,161,100,17,175,122,81,152,201,129,89,33,162,148,242,48,245,40,117,65,194,45,79,89,21,30,221,172,124,61,24,10,19,156,26,74,49,198,30,240,122,201,235,164,22,199,20,220,112,113,50,150, 59,180,14,174,223,193,255,110,64,231,195,122,173,43,24,169,81,166,43,239,221,47,239,188,86,218,197,40,174,226,129,154,118,212,200,238,40,28,89,184,213,229,46,140,116,217,153,176,227,219,143,133,62,238,242,162,114,79,241,14,38,163,48,194,246,153,148,57, 94,33,179,74,82,109,108,222,205,188,77,190,213,222,111,201,118,27,70,222,59,93,62,84,249,206,59,36,32,129,118,89,237,185,67,18,87,155,187,25,15,118,71,251,189,209,201,122,83,13,8,73,124,55,3,55,19,194,26,115,173,39,22,93,46,99,196,232,120,38,3,22,103, 223,198,250,81,167,227,177,113,30,45,195,178,155,98,149,172,117,81,121,209,99,233,173,10,173,227,122,170,214,123,80,17,235,220,77,162,60,115,171,13,36,171,7,22,210,112,153,106,47,140,42,176,81,158,41,174,215,174,227,164,114,11,29,231,168,77,146,110,118, 249,190,218,237,171,127,235,99,165,179,122,154,96,104,16,51,203,54,195,58,218,236,30,20,220,198,122,85,26,69,181,83,204,23,179,12,96,65,110,233,176,248,107,17,198,9,148,83,45,52,176,24,229,105,170,35,112,107,152,30,194,83,61,229,86,207,120,40,165,28, 55,74,65,109,9,94,104,101,97,145,213,41,133,149,25,162,11,26,243,98,241,90,169,37,198,203,27,75,202,33,199,146,234,180,32,55,179,126,76,190,90,149,26,12,227,1,205,134,20,70,128,45,58,115,188,207,179,134,167,172,145,105,107,188,179,118,235,141,151,253, 229,221,8,41,121,253,194,100,16,8,140,63,217,141,140,191,200,141,83,214,94,224,70,38,190,154,27,185,82,228,5,110,92,217,231,19,221,8,182,216,139,220,56,101,237,106,55,130,53,255,171,185,49,16,226,37,217,88,99,251,39,186,17,108,189,44,27,167,172,93,237, 70,176,246,108,54,154,175,48,125,177,27,237,126,189,216,20,26,206,23,175,39,252,57,116,247,216,4,176,131,142,29,29,239,102,148,163,128,73,66,69,79,61,221,205,152,64,156,18,66,101,71,93,77,202,174,38,101,11,112,136,143,4,231,146,245,196,117,51,131,95, 138,48,43,225,0,177,189,155,109,195,170,72,142,223,144,102,199,158,227,137,23,159,9,73,217,220,245,81,64,125,70,149,118,9,159,19,129,2,201,176,120,115,166,253,215,44,169,224,76,180,47,117,241,222,156,43,254,153,253,90,234,62,10,23,210,246,28,35,73,208, 207,252,98,56,46,36,82,7,71,36,80,207,100,230,245,64,113,49,109,123,107,138,60,147,153,215,3,197,239,83,253,31,73,219,177,195,207,226,65,36,84,238,117,177,190,38,223,2,194,184,36,144,74,98,238,194,233,94,18,69,197,124,240,50,224,19,36,3,26,96,50,247, 57,34,152,16,210,231,220,145,128,123,37,194,2,7,184,47,137,147,161,18,196,148,143,251,66,60,82,32,82,36,40,103,131,146,56,213,84,31,138,74,168,222,231,95,30,20,236,94,117,25,20,128,45,71,160,0,245,229,11,22,12,166,106,64,1,86,69,152,221,99,135,160,112, 46,187,154,148,53,160,160,192,89,212,191,34,68,16,21,170,48,96,138,118,41,132,64,4,62,81,210,196,2,142,218,129,161,48,66,184,244,13,23,68,49,39,176,4,120,195,136,16,95,146,47,5,11,159,147,207,148,209,143,159,193,130,81,30,49,54,74,32,230,35,233,143,178, 135,17,228,143,18,135,83,228,255,63,172,147,227,143,31,217,197,215,94,231,173,103,218,15,251,214,181,62,166,239,137,31,19,125,120,213,0,97,145,63,0,18,54,199,205,70,61,52,135,41,208,234,147,252,172,239,102,76,55,214,124,238,194,181,182,200,9,114,53,116, 54,140,101,94,196,186,104,89,194,62,35,86,3,174,166,237,163,62,135,220,86,45,191,115,191,81,62,16,195,83,252,114,19,198,249,1,182,226,167,204,15,121,14,229,195,159,146,77,53,251,204,108,167,92,202,51,166,217,189,13,51,192,231,179,137,246,69,1,158,118, 211,240,164,97,77,246,167,5,145,114,147,31,214,133,241,205,42,76,59,231,116,67,13,203,93,46,115,176,93,21,251,51,54,244,161,123,115,179,226,238,235,40,54,221,244,64,194,232,31,174,118,210,202,33,201,128,233,54,93,122,160,232,5,129,182,109,15,24,185,32, 113,52,135,152,224,2,19,124,228,203,54,181,182,186,10,227,176,10,251,228,104,41,188,109,119,139,120,181,248,249,221,15,221,110,29,69,139,127,229,197,67,191,11,27,129,112,9,157,244,221,172,59,65,152,14,58,90,24,8,12,171,251,100,11,75,55,247,55,223,30, 183,41,100,115,199,24,9,87,167,157,238,149,214,106,219,187,168,201,251,172,56,218,38,102,144,247,190,130,68,255,209,24,25,156,42,106,165,145,185,77,203,139,251,129,98,179,128,183,235,110,239,31,77,33,169,82,125,255,183,240,97,191,116,222,87,26,42,191, 176,211,173,233,67,29,222,185,18,43,121,102,207,168,173,215,112,223,44,161,190,162,65,219,125,153,68,155,48,77,81,244,193,14,109,164,94,13,231,153,38,145,206,202,231,221,98,205,38,143,80,202,219,109,158,149,214,67,205,216,210,91,158,220,50,244,40,194, 222,153,123,234,133,253,37,78,42,231,103,29,231,83,139,181,11,216,47,127,3,28,29,121,192,204,227,207,225,250,137,19,13,53,77,238,205,133,204,173,215,124,76,74,20,214,220,199,36,194,117,152,100,207,41,9,119,187,244,52,37,84,211,70,19,172,189,60,94,138, 13,164,73,231,97,122,255,244,212,235,131,12,127,161,195,199,225,220,233,2,82,182,124,54,156,83,215,176,63,235,93,145,199,123,123,15,54,142,227,103,42,126,151,192,238,145,44,247,147,138,11,253,159,125,2,35,62,73,243,63,242,10,92,242,101,117,190,173,46, 79,246,179,188,160,139,228,209,134,212,100,67,249,101,39,253,126,19,22,250,109,154,60,12,157,97,83,175,73,181,182,57,25,96,237,173,215,34,177,253,90,247,8,61,218,185,58,116,79,195,165,134,221,254,39,195,116,200,249,14,150,239,119,219,60,214,205,240,22, 220,119,97,181,105,151,84,77,52,22,60,80,146,137,137,70,214,156,82,225,60,235,155,243,42,244,1,208,93,136,185,244,225,24,75,5,238,143,171,48,219,191,59,28,131,26,18,8,230,116,157,181,243,214,233,26,106,39,128,222,66,4,138,249,14,118,8,252,115,20,130, 182,133,5,129,63,191,114,192,148,133,15,221,36,186,67,83,1,91,95,55,118,130,125,156,106,243,59,246,244,53,66,207,158,188,79,48,241,50,62,14,132,232,143,149,77,219,218,181,167,136,112,98,26,66,121,51,190,166,49,231,183,5,108,120,223,188,62,191,243,120, 99,185,131,134,218,126,22,251,84,47,244,163,206,242,56,190,169,15,133,139,44,207,116,243,94,159,45,64,184,249,52,103,91,72,143,5,212,83,53,164,253,150,39,217,2,74,73,23,55,219,176,120,208,69,173,164,126,119,203,42,44,170,17,101,155,196,163,111,157,197, 35,179,86,85,154,192,207,130,224,150,24,135,112,26,42,138,240,52,18,53,212,186,213,95,116,146,253,34,31,147,50,89,38,169,249,176,175,169,190,137,147,114,7,41,189,72,50,51,243,155,252,81,23,171,52,63,180,252,243,64,153,35,3,116,4,69,212,183,17,195,42, 120,18,28,114,49,38,231,141,193,211,152,32,60,136,10,44,242,3,156,154,219,168,76,170,96,16,214,113,164,154,114,35,244,127,24,50,254,59,69,108,153,230,209,195,229,128,89,236,96,80,175,146,75,49,231,62,194,140,51,161,156,239,29,192,30,225,19,204,3,32,11, 196,124,223,199,202,225,72,128,160,242,249,28,240,136,66,129,251,14,245,17,87,64,51,20,174,164,240,157,159,122,26,67,132,130,199,149,0,34,180,100,132,51,42,201,156,72,36,113,16,16,53,18,53,45,133,96,220,216,158,32,118,36,202,16,99,82,137,73,210,247,14, 1,56,101,68,4,115,74,161,73,52,127,167,116,36,0,166,164,130,240,57,231,72,74,12,141,212,212,146,63,56,103,128,98,230,123,158,219,80,247,218,228,55,52,33,81,253,92,72,242,143,12,120,106,137,18,41,199,65,33,2,41,202,21,157,51,5,243,247,97,41,176,58,31, 81,76,2,138,185,241,12,101,62,244,47,0,212,210,192,161,132,152,128,183,2,9,187,137,67,5,242,49,64,59,80,124,115,49,111,61,221,208,192,107,240,43,100,96,28,125,70,3,148,247,125,1,69,98,163,68,56,152,152,164,245,250,24,134,68,9,4,145,3,125,61,173,165,64, 56,24,52,140,82,77,80,108,212,0,110,133,37,98,200,17,72,53,72,39,198,3,31,114,192,71,132,5,62,200,77,184,100,16,180,51,192,23,10,250,116,38,38,193,197,214,214,69,112,127,30,70,204,78,242,4,70,48,82,246,145,127,68,224,191,0,35,215,128,59,54,85,202,72, 64,174,221,121,205,197,226,155,171,131,115,190,243,254,161,3,241,220,14,108,177,3,74,12,3,164,5,106,206,145,15,117,133,149,65,101,56,87,73,202,36,149,115,2,56,168,2,202,137,41,89,133,100,32,232,128,234,48,218,14,7,100,149,204,231,64,3,176,85,132,88,154, 64,2,246,5,160,89,244,86,146,115,67,165,8,162,12,150,76,53,99,163,82,213,84,192,121,98,202,217,84,184,29,15,208,203,107,73,3,209,212,142,134,189,65,168,102,52,67,80,180,140,3,92,51,137,96,176,8,136,35,16,5,133,10,91,140,99,181,198,126,70,164,182,66,106, 80,58,91,249,4,176,115,53,248,35,203,243,192,126,235,65,135,123,107,46,87,238,95,253,23,80,75,3,4,20,0,2,0,8,0,171,128,249,52,75,77,50,197,89,10,0,0,186,54,0,0,23,0,0,0,109,101,100,105,97,45,115,101,101,107,45,98,97,99,107,119,97,114,100,46,115,118,103, 237,90,109,143,219,54,18,254,158,95,225,115,190,36,232,74,226,155,40,201,251,82,244,26,244,16,32,185,3,154,4,247,241,64,75,180,173,174,44,185,146,188,182,243,235,111,72,189,91,114,214,222,85,18,92,174,110,131,181,56,195,25,242,225,195,209,12,233,155, 159,247,235,104,242,32,211,44,76,226,219,41,54,209,116,34,99,63,9,194,120,121,59,253,244,241,55,195,157,78,178,92,196,129,136,146,88,222,78,227,100,250,243,221,139,155,191,25,198,228,215,84,138,92,6,147,93,152,175,38,111,227,251,204,23,27,57,121,181, 202,243,205,204,178,118,187,157,25,150,141,102,146,46,173,215,19,195,128,158,217,195,242,197,100,50,1,183,113,54,11,252,219,105,169,191,217,166,145,214,11,124,75,70,114,45,227,60,179,176,137,173,105,163,238,55,234,59,57,55,83,153,37,219,212,47,204,251, 126,91,51,13,22,141,42,140,100,71,181,18,246,60,207,66,196,34,196,0,13,35,59,196,185,216,27,113,246,178,213,21,6,56,212,149,32,132,44,144,53,154,231,105,205,246,17,192,112,114,48,90,218,246,14,208,111,224,95,221,161,198,176,152,235,2,122,74,51,150,185, 245,230,227,27,171,210,54,144,25,228,65,203,76,213,171,227,183,179,28,177,88,203,108,35,124,153,213,46,116,255,93,24,228,171,219,41,115,55,123,253,188,146,225,114,149,183,26,194,224,118,10,51,196,20,57,250,185,26,195,172,102,17,50,41,41,84,75,195,109, 17,163,63,5,242,65,70,221,190,65,226,207,69,6,195,181,86,201,90,90,127,132,235,181,240,173,44,245,45,255,33,179,128,127,203,196,8,253,36,54,242,21,80,195,2,171,145,152,71,210,18,126,14,118,179,158,49,53,187,219,233,90,6,161,48,50,41,239,141,185,240,239, 119,34,13,204,106,113,234,177,201,253,38,73,115,99,17,70,178,232,85,12,33,18,155,196,122,35,179,251,60,217,88,255,72,197,34,244,133,245,22,134,32,173,194,108,233,218,72,182,57,172,161,204,204,77,60,108,121,31,108,96,57,61,52,40,60,84,194,59,144,222,4, 114,145,41,173,2,101,245,4,48,123,90,6,82,229,70,164,48,150,32,132,221,81,232,21,154,93,9,161,152,151,125,160,87,6,19,168,116,1,164,252,16,193,28,85,163,225,39,81,146,206,94,34,253,185,214,77,9,48,34,204,15,51,124,61,109,250,36,139,69,38,129,2,168,213, 166,89,0,61,192,23,68,8,235,124,111,11,253,233,122,67,38,183,61,199,163,142,55,228,22,15,186,37,168,118,123,99,117,231,127,41,92,182,203,190,25,92,182,203,159,15,215,217,40,217,174,59,22,74,54,114,236,11,80,18,193,28,9,247,137,40,129,47,231,34,148,24, 103,14,99,71,222,206,4,9,156,121,163,81,137,131,173,90,92,109,117,24,100,36,125,112,47,162,157,56,100,167,80,172,87,141,187,248,17,160,206,36,10,62,13,98,203,25,125,4,168,1,103,1,13,28,127,49,222,6,244,240,163,160,216,30,29,9,148,235,51,80,177,61,251, 114,84,164,250,248,71,123,245,137,32,157,226,206,105,20,93,206,201,183,10,99,224,139,93,180,65,135,188,157,29,198,192,27,127,12,70,245,36,162,139,97,212,233,215,108,149,74,72,23,95,14,224,217,134,187,235,2,123,180,17,47,203,198,79,113,152,67,94,184,205, 100,250,65,229,86,255,138,63,101,178,167,245,49,21,113,6,137,220,26,50,20,145,167,225,254,21,190,66,234,63,211,166,220,33,244,138,153,200,179,49,162,210,192,244,10,115,211,117,40,226,175,107,59,254,254,118,74,152,233,82,7,19,222,180,30,110,167,148,155, 140,96,76,156,186,117,49,168,187,24,212,77,1,126,219,228,140,57,180,9,191,79,37,232,23,144,213,175,146,211,68,198,12,225,231,35,155,171,175,17,20,40,175,12,230,152,144,106,243,43,3,19,220,160,184,199,183,83,155,153,158,235,218,152,213,173,7,172,64,104, 144,218,19,173,229,122,220,115,154,214,3,180,98,70,76,236,58,158,247,53,161,210,185,201,151,160,106,45,234,40,80,1,32,30,178,241,149,225,57,38,225,4,211,46,96,204,131,4,30,181,23,72,3,134,137,233,49,143,211,14,108,160,203,185,67,9,235,194,6,20,195,192, 70,218,192,54,254,222,237,190,135,251,123,151,81,62,218,222,69,38,33,4,242,215,43,40,194,128,101,196,161,87,64,12,2,140,35,176,163,153,195,17,3,56,137,7,82,198,175,8,50,129,111,78,119,51,115,6,54,28,228,176,206,102,198,154,183,212,38,157,205,220,215, 93,12,234,194,102,118,77,216,103,223,21,101,239,27,163,76,145,251,157,81,254,10,33,64,85,115,95,42,246,8,233,108,81,136,246,0,7,230,188,187,69,41,212,88,174,205,89,103,139,18,10,131,239,110,103,162,222,12,103,46,91,49,235,27,75,21,170,250,91,93,130,171, 74,58,120,8,229,174,169,102,85,125,95,218,221,136,165,212,137,1,76,182,72,209,74,193,60,73,3,153,86,34,174,63,29,81,153,59,168,131,4,108,19,143,97,168,62,95,116,33,86,198,91,106,104,72,158,173,68,144,236,96,254,199,194,207,73,2,156,235,217,212,244,129, 184,229,129,199,190,80,49,195,1,120,109,226,244,12,250,219,52,5,252,140,72,28,36,204,73,255,169,208,206,86,201,110,153,42,108,22,34,170,193,169,187,42,145,49,159,39,123,21,161,183,61,113,144,248,91,117,74,102,108,139,181,41,143,103,212,154,133,129,58, 217,9,227,229,94,33,96,15,73,14,125,137,92,111,74,225,0,48,122,48,155,36,140,149,171,214,112,22,97,20,169,85,244,197,130,202,246,188,182,96,48,59,53,51,37,236,79,77,55,231,73,36,97,247,251,144,64,226,122,120,89,158,38,247,208,242,210,33,222,194,95,28, 219,219,133,49,44,167,81,30,93,97,204,216,9,141,234,48,203,69,238,9,13,24,17,115,240,9,161,202,154,88,107,146,5,39,135,151,71,201,219,84,107,3,81,244,43,41,1,9,110,117,192,83,111,31,141,68,181,7,147,84,237,64,145,235,3,180,21,60,125,78,224,49,170,247, 232,38,201,194,66,72,93,21,27,161,22,238,196,11,109,140,96,175,201,216,159,237,200,51,17,100,105,46,179,7,29,241,139,28,61,200,52,15,253,39,184,113,199,114,163,96,115,108,124,148,105,21,110,8,66,227,193,70,136,74,55,73,171,188,111,59,34,99,205,7,162, 186,135,92,199,229,131,110,216,88,110,176,173,222,134,12,15,176,141,81,74,198,131,205,128,82,5,113,194,24,31,244,52,34,175,13,219,53,17,225,158,61,232,104,52,94,99,23,222,75,136,184,195,200,141,198,107,140,96,129,8,25,92,32,181,108,99,185,33,158,233, 65,230,53,236,198,27,111,117,176,167,194,155,235,12,172,14,84,203,124,60,71,156,154,136,122,220,97,67,142,198,156,17,148,72,136,115,138,6,103,68,240,136,196,118,29,19,1,183,28,50,224,73,221,228,140,231,9,35,2,232,145,161,232,99,171,203,140,49,61,193, 54,98,200,118,251,158,40,198,99,162,231,17,211,102,80,138,15,4,110,117,4,80,39,194,253,252,87,183,175,101,46,2,145,139,38,25,174,90,48,197,213,161,221,77,26,44,102,191,191,249,173,62,84,243,253,217,191,147,244,190,57,15,83,10,98,158,108,33,129,169,15, 250,212,165,145,63,83,165,146,200,239,194,53,36,28,234,250,241,167,253,58,130,180,188,22,116,148,243,195,70,54,70,11,179,213,85,234,224,117,108,224,175,67,213,201,250,144,67,182,247,86,57,105,29,254,149,70,195,60,146,119,239,213,205,216,228,131,148,247, 147,191,151,23,110,122,24,133,180,211,193,87,183,199,73,122,215,26,137,154,241,47,203,250,76,175,111,254,157,216,36,147,95,69,36,214,34,14,82,25,14,217,86,203,208,183,163,53,123,46,149,195,40,244,101,156,61,14,136,238,28,62,64,221,178,94,39,113,166,177, 41,251,102,214,252,96,100,194,2,222,91,237,83,81,171,92,193,246,138,190,59,118,215,90,212,11,61,117,231,177,145,41,172,82,246,232,60,134,46,206,127,151,155,52,9,182,250,66,179,187,178,207,52,252,38,132,204,61,156,111,7,13,167,242,207,109,8,61,158,100, 249,159,9,188,142,228,184,54,127,201,79,15,246,89,40,200,52,124,208,75,170,216,144,141,59,232,15,43,145,202,95,162,240,94,30,83,175,164,90,117,108,222,10,47,55,86,21,127,244,211,178,137,75,157,250,180,174,101,34,49,151,80,229,189,83,194,9,238,151,134, 201,118,179,78,2,89,118,175,107,54,125,11,16,132,217,6,154,103,97,172,206,45,170,88,183,17,249,170,119,56,146,254,71,149,210,173,98,170,43,219,31,201,154,96,11,190,85,124,130,114,211,47,63,157,56,173,156,65,77,216,4,111,104,123,63,129,44,217,70,136,93, 97,248,59,121,55,129,20,83,61,17,6,223,43,17,101,90,212,209,252,60,121,63,97,184,211,149,176,86,223,74,86,246,237,168,126,158,52,131,47,208,233,94,143,168,98,26,102,19,75,253,173,117,45,163,31,211,109,36,103,242,65,194,116,131,235,162,34,158,65,148,126, 245,178,127,32,244,186,148,23,37,241,140,86,143,74,19,224,156,101,127,110,129,53,237,214,63,160,180,159,193,66,198,193,245,90,164,247,50,45,198,81,124,55,178,92,164,121,167,101,29,6,157,103,25,151,207,165,77,216,44,80,225,134,240,103,198,170,182,64,64, 49,156,166,64,134,182,166,106,45,110,127,102,168,106,107,102,254,16,102,225,60,140,212,131,254,26,201,235,46,163,174,19,72,77,23,81,178,171,229,205,175,10,112,235,96,110,12,198,157,252,241,198,41,133,253,99,10,79,253,213,73,253,99,147,47,109,132,222, 38,176,109,108,143,180,9,206,32,178,230,102,255,72,248,245,217,228,110,179,164,32,50,54,11,7,252,76,66,107,22,254,175,19,122,92,14,95,186,94,252,175,245,186,116,189,58,59,108,132,119,133,218,190,219,76,194,238,117,46,216,243,95,35,210,92,28,223,234,8, 57,46,135,191,240,230,247,143,153,222,188,14,144,131,8,252,111,95,159,34,127,255,114,245,89,228,63,38,125,241,122,253,33,95,186,95,228,60,67,38,148,185,222,21,102,38,129,114,185,67,117,245,83,7,234,12,176,191,243,110,114,202,55,16,162,152,219,186,193, 197,68,181,97,117,128,162,76,115,120,217,115,210,121,81,217,117,183,150,153,163,109,165,216,72,188,83,121,194,215,75,210,212,111,28,94,63,47,86,254,128,188,249,190,41,121,147,37,17,124,97,145,113,78,206,216,138,113,23,146,173,250,25,219,211,67,17,253, 255,125,255,170,168,81,70,154,34,206,112,211,227,176,227,107,90,105,41,165,102,29,61,218,234,37,181,186,22,128,92,45,19,149,184,54,113,164,175,67,25,41,155,90,97,170,108,162,216,116,89,97,215,53,61,196,121,53,178,227,46,122,40,168,103,167,106,106,217, 33,188,109,168,215,103,152,242,246,121,111,215,175,73,253,230,77,109,115,172,63,215,223,117,55,252,128,17,86,221,212,56,64,12,90,81,25,23,13,138,28,110,167,69,221,85,22,58,221,62,3,236,161,216,115,198,37,196,147,11,244,114,68,12,181,46,58,138,48,224, 169,28,68,79,171,216,53,173,41,195,67,57,107,53,255,182,98,191,206,61,230,40,242,254,226,232,120,28,61,89,213,84,23,44,203,187,23,55,234,130,227,238,197,127,1,80,75,3,4,20,0,2,0,8,0,174,128,249,52,207,153,178,73,172,10,0,0,72,56,0,0,22,0,0,0,109,101, 100,105,97,45,115,101,101,107,45,102,111,114,119,97,114,100,46,115,118,103,237,90,109,147,155,56,18,254,158,95,225,115,190,36,181,6,244,134,16,158,151,173,173,77,229,42,87,201,93,213,38,169,251,120,37,131,108,179,131,193,11,120,236,201,175,191,22,239, 24,60,51,158,33,201,85,46,36,169,24,117,171,91,122,244,168,213,146,184,252,245,176,9,39,183,42,73,131,56,186,154,98,19,77,39,42,242,98,63,136,86,87,211,207,159,222,26,98,58,73,51,25,249,50,140,35,117,53,141,226,233,175,215,47,46,255,102,24,147,223,19, 37,51,229,79,246,65,182,158,188,139,110,82,79,110,213,228,213,58,203,182,115,203,218,239,247,102,80,22,154,113,178,178,94,79,12,3,106,166,183,171,23,147,201,4,220,70,233,220,247,174,166,165,254,118,151,132,185,158,239,89,42,84,27,21,101,169,133,77,108, 77,27,117,175,81,223,171,133,153,168,52,222,37,94,97,222,243,218,154,137,191,108,84,161,37,123,154,43,97,215,117,45,68,44,66,12,208,48,210,187,40,147,7,35,74,95,182,170,66,3,135,170,18,132,144,5,178,70,243,113,90,243,67,8,48,156,108,76,46,109,123,7,232, 183,240,175,174,80,99,88,244,117,9,53,149,25,169,204,122,243,233,141,85,105,27,200,244,51,191,101,166,170,213,241,219,25,142,72,110,84,186,149,158,74,107,23,121,253,125,224,103,235,171,41,19,219,67,254,190,86,193,106,157,181,10,2,255,106,10,61,196,20, 57,249,123,213,134,121,205,34,100,82,82,168,150,134,219,34,70,127,241,213,173,10,187,117,253,216,91,200,20,154,107,173,227,141,178,254,12,54,27,233,89,105,226,89,222,109,106,1,255,86,177,17,120,113,100,100,107,160,134,5,86,67,185,8,149,37,189,12,236, 166,61,99,186,119,87,211,141,242,3,105,164,74,221,24,128,219,94,38,190,89,141,77,221,52,117,216,198,73,102,44,131,80,21,149,138,22,132,114,27,91,111,84,122,147,197,91,235,239,137,92,6,158,180,222,65,11,148,85,88,45,61,27,241,46,131,33,84,169,185,141, 134,45,31,252,45,140,166,139,6,133,119,149,240,26,164,151,190,90,166,90,171,0,89,191,1,202,110,46,3,169,118,35,19,104,139,31,192,228,40,244,10,205,174,132,80,204,203,58,80,43,133,14,84,186,128,81,118,23,66,31,117,161,225,197,97,156,204,95,162,252,185, 200,139,98,32,68,144,221,205,241,197,180,169,19,47,151,169,2,6,160,86,89,78,2,168,1,190,32,64,88,143,247,182,204,159,174,55,100,114,219,117,92,234,184,67,110,241,160,91,130,106,183,151,86,183,255,231,194,101,11,246,205,224,178,5,127,62,92,143,70,201, 22,98,44,148,108,228,216,103,160,36,253,5,146,226,137,40,129,47,231,44,148,24,103,14,99,71,222,30,9,18,56,115,71,163,18,7,91,181,184,154,234,208,200,80,121,224,94,134,123,121,151,158,66,177,30,53,46,240,3,64,61,146,40,248,52,136,45,103,244,1,160,6,156, 249,212,119,188,229,120,19,208,197,15,130,98,187,116,36,80,46,30,129,138,237,218,231,163,162,244,227,29,205,213,39,130,116,138,59,167,81,20,156,147,111,21,198,192,23,59,107,130,14,121,123,116,24,3,111,252,33,24,245,155,12,207,134,49,207,190,230,235,68, 65,182,248,114,0,207,54,220,93,23,216,165,141,120,85,22,126,142,130,12,210,194,93,170,146,143,58,181,250,87,244,57,85,61,173,79,137,140,82,200,71,54,144,160,200,44,9,14,175,240,12,233,63,166,77,185,67,232,140,153,200,101,88,8,101,96,58,195,220,20,14, 69,252,117,109,199,59,92,77,9,51,5,117,48,225,77,233,221,213,148,114,147,17,140,137,83,151,46,7,117,151,131,186,9,192,111,155,156,49,135,54,225,247,169,4,189,7,217,124,41,57,77,100,204,16,30,13,89,163,128,22,207,92,219,132,116,219,101,51,3,19,220,96, 121,192,87,83,155,154,76,203,26,124,238,176,134,66,152,12,51,42,26,93,50,168,11,165,152,17,19,217,176,220,126,77,216,242,60,229,62,216,90,3,60,30,108,4,96,67,194,158,25,174,99,18,78,48,237,98,199,92,72,232,81,123,196,114,236,48,84,99,46,167,29,236,64, 151,115,135,18,214,197,14,56,135,129,158,180,193,110,252,201,220,93,152,251,147,153,209,17,177,67,38,33,4,50,218,25,252,2,166,16,135,206,12,98,98,2,180,33,48,201,153,195,17,195,51,74,5,96,196,233,140,32,83,216,216,233,206,111,206,192,136,131,28,214,153, 223,152,57,96,145,218,164,51,191,251,186,203,65,93,152,223,194,132,169,247,93,113,118,191,57,206,54,255,222,56,127,133,88,160,183,120,247,237,0,9,233,76,83,88,2,0,14,204,143,66,28,133,141,151,176,57,235,76,83,66,161,241,221,41,77,244,114,49,126,112,97, 194,132,172,128,178,25,122,93,130,117,105,233,77,111,254,171,222,205,235,93,185,127,27,168,125,179,51,214,71,5,165,163,173,92,169,60,201,0,140,138,116,175,20,44,226,196,87,73,37,226,249,211,17,149,121,136,62,147,192,54,129,5,23,87,161,190,30,25,109,188, 165,134,134,228,233,90,250,241,30,96,59,22,126,137,99,232,51,44,168,54,23,54,235,137,53,251,28,219,36,176,110,56,61,153,94,159,77,88,178,93,82,179,173,17,238,146,4,112,53,66,121,167,160,107,249,127,213,88,165,235,120,191,74,52,68,75,25,214,24,213,85, 181,200,88,44,98,112,157,37,187,158,216,143,189,157,62,119,51,118,197,200,150,7,62,122,44,3,95,159,21,5,209,234,160,129,176,135,36,119,125,137,218,108,75,225,0,62,121,99,182,113,16,105,87,173,230,44,131,48,212,131,233,201,37,85,237,126,237,192,96,122, 170,103,90,216,239,90,94,156,197,161,2,18,122,144,147,226,186,121,105,150,196,55,80,242,210,33,238,210,91,30,219,219,7,17,140,170,81,30,134,97,204,216,9,141,234,120,76,32,113,66,227,160,87,62,247,132,16,64,171,211,76,221,201,130,154,195,195,163,229,109, 198,181,129,40,234,149,148,128,156,185,58,51,170,103,81,142,68,53,55,227,68,207,76,153,229,71,114,107,120,251,18,195,107,88,207,221,109,156,6,133,80,47,82,46,100,251,78,39,218,228,198,8,118,155,77,192,179,29,185,38,130,196,79,48,123,208,17,63,203,209, 173,74,178,192,123,130,27,49,150,27,13,155,99,227,163,132,173,112,67,16,26,15,54,2,137,150,16,164,117,98,208,118,68,198,234,15,172,9,144,5,58,130,15,186,97,99,185,193,182,94,75,25,30,96,27,163,148,140,7,155,1,187,31,196,9,99,124,208,211,136,188,54,96, 27,129,8,119,237,65,71,163,241,26,11,88,158,16,17,195,200,141,198,107,140,96,128,8,25,28,32,61,108,99,185,33,174,233,82,36,134,221,184,227,141,14,118,117,120,19,206,192,232,216,24,241,241,28,113,106,34,234,114,135,13,57,26,179,71,176,201,66,156,83,52, 216,35,130,71,36,182,112,76,4,220,114,200,128,39,125,55,52,158,39,140,96,123,77,201,80,244,177,245,253,200,152,158,96,26,49,100,139,190,39,138,241,152,232,193,198,218,102,176,163,31,8,220,88,212,39,210,151,86,63,13,206,203,55,42,147,190,204,100,147,19, 87,37,152,226,234,28,240,50,241,151,243,63,222,188,173,207,233,60,111,254,239,56,185,105,142,216,180,130,92,196,59,72,96,234,179,67,125,15,229,205,117,198,46,179,235,96,3,9,135,190,208,252,229,176,9,33,59,175,5,29,229,236,110,171,26,163,133,217,234,114, 118,240,130,215,247,54,129,174,100,125,204,32,219,123,167,157,180,206,19,75,163,65,22,170,235,15,250,178,109,242,81,169,155,201,219,226,10,47,111,69,33,236,232,123,250,58,58,78,174,91,13,209,29,254,109,85,159,18,246,173,191,151,219,120,242,187,12,229, 70,70,126,162,130,33,219,122,20,250,118,114,205,158,75,237,48,12,60,21,165,15,227,145,87,14,110,97,247,178,217,196,81,154,67,83,214,77,173,197,157,145,74,11,104,111,245,112,241,128,83,73,176,216,157,219,215,127,200,155,221,98,242,49,83,176,85,76,206, 237,104,223,103,174,171,217,212,102,215,251,227,190,183,8,118,102,183,187,160,110,85,2,140,73,31,4,117,232,179,128,63,212,54,137,253,93,126,95,219,69,243,153,134,223,4,105,129,202,144,225,68,253,181,11,160,198,147,44,255,51,134,165,81,141,107,243,183, 236,116,99,159,133,130,74,130,219,124,72,53,27,210,113,27,253,113,45,19,245,91,24,220,180,193,200,169,87,82,173,186,21,104,133,186,75,171,138,133,249,219,170,137,145,157,189,114,189,175,10,229,66,193,142,243,189,22,78,112,127,155,26,239,182,155,216,87, 101,245,122,255,152,95,114,248,65,186,133,226,121,16,233,19,152,42,238,110,101,182,238,29,243,36,255,209,219,250,214,198,174,43,59,28,201,154,192,15,190,117,172,132,173,175,87,62,157,53,67,59,131,253,105,179,144,64,217,135,137,62,241,209,231,221,116, 134,169,105,79,222,79,24,46,14,192,233,140,48,120,109,228,148,229,242,163,10,95,38,31,38,188,40,33,78,101,67,111,3,90,54,26,121,105,227,168,194,151,73,211,155,2,174,230,198,31,219,23,221,187,33,189,237,135,190,70,42,255,213,186,147,202,95,147,93,168, 230,234,86,1,24,254,69,177,119,159,195,122,242,234,101,255,224,235,117,41,47,54,239,115,90,189,106,77,0,123,158,254,181,3,78,181,75,255,140,131,104,14,195,28,249,23,27,153,220,168,164,104,71,241,219,72,51,153,100,157,146,77,224,119,222,85,84,190,151, 54,97,42,193,94,60,128,255,230,172,42,243,37,108,219,147,4,168,210,214,212,165,197,213,215,28,85,101,77,207,111,131,52,88,4,161,126,201,127,134,234,162,203,183,139,24,146,232,101,24,239,43,121,147,160,140,65,193,147,31,171,156,82,56,60,164,240,212,175, 108,234,143,107,238,155,25,189,89,97,219,216,30,123,86,28,51,122,128,196,57,47,251,7,223,175,31,77,236,54,67,10,18,99,179,112,192,31,73,230,156,129,63,201,220,137,167,103,142,23,255,57,94,231,142,87,103,170,141,184,120,232,249,188,75,21,76,103,231,140, 32,240,53,66,207,217,1,175,14,153,227,114,249,158,220,192,59,189,230,34,7,17,248,59,184,242,14,44,166,250,70,249,89,147,224,152,252,197,18,251,99,46,188,247,115,223,49,185,112,88,94,192,76,2,27,252,35,194,235,47,62,168,51,56,11,142,22,45,167,92,149,92, 46,184,91,148,8,76,242,66,97,130,13,198,242,79,70,176,205,201,209,250,101,215,117,59,214,142,230,153,166,39,113,177,61,76,216,211,65,244,185,153,155,254,234,227,245,243,130,232,15,72,164,255,177,44,190,73,172,8,62,115,163,242,152,52,179,21,5,207,100, 95,245,165,223,211,131,21,253,255,93,169,117,52,41,57,195,204,34,10,1,205,16,197,216,109,104,86,106,80,106,214,129,165,91,169,160,154,219,68,180,194,18,161,29,75,141,70,109,169,87,41,143,121,118,109,190,21,204,234,66,138,77,193,10,7,212,213,177,147,215, 77,237,87,212,246,156,198,73,99,175,41,108,217,35,184,99,111,160,226,240,132,176,31,183,58,127,205,137,209,172,244,54,199,240,32,247,226,187,206,149,31,48,32,83,219,180,133,227,114,119,6,60,113,4,44,90,154,50,249,101,162,40,57,87,44,238,77,25,33,38,161, 136,186,84,147,181,95,125,128,77,20,187,206,147,9,242,96,130,60,238,17,65,217,100,134,90,247,64,69,84,65,38,113,132,160,0,0,53,9,114,48,114,0,128,242,139,159,114,58,21,80,53,101,16,84,144,45,4,209,248,13,84,191,239,60,233,39,227,199,103,252,3,20,186, 180,86,215,47,46,245,229,208,245,139,255,2,80,75,3,4,20,0,2,0,8,0,168,128,249,52,105,10,147,139,124,11,0,0,198,82,0,0,23,0,0,0,109,101,100,105,97,45,112,108,97,121,98,97,99,107,45,115,116,111,112,46,115,118,103,237,92,109,115,219,54,18,254,158,95,161, 83,190,36,83,145,196,27,241,34,191,116,122,205,180,211,155,244,174,211,52,115,31,111,40,18,178,88,83,164,74,82,150,149,95,127,11,146,162,72,137,178,229,152,86,166,182,149,201,88,0,22,88,224,193,179,139,133,164,229,249,247,183,243,104,112,163,211,44,76, 226,139,33,182,209,112,160,99,63,9,194,248,234,98,248,249,143,159,44,57,28,100,185,23,7,94,148,196,250,98,24,39,195,239,47,223,156,255,195,178,6,63,166,218,203,117,48,88,133,249,108,240,75,124,157,249,222,66,15,222,205,242,124,49,118,156,213,106,101, 135,85,165,157,164,87,206,251,129,101,65,207,236,230,234,205,96,48,0,181,113,54,14,252,139,97,37,191,88,166,81,33,23,248,142,142,244,92,199,121,230,96,27,59,195,173,184,191,21,95,233,137,157,234,44,89,166,126,57,188,239,55,37,211,96,186,21,133,153,172, 104,33,132,149,82,14,34,14,33,22,72,88,217,58,206,189,91,43,206,222,54,186,194,4,187,186,18,132,144,3,109,91,201,227,164,198,183,17,192,112,112,50,69,107,83,59,64,191,128,255,117,135,26,195,114,173,83,232,169,237,88,231,206,135,63,62,56,27,105,11,217, 65,30,52,134,217,244,106,233,109,109,71,236,205,117,182,240,124,157,213,42,138,254,171,48,200,103,23,67,38,139,210,76,135,87,179,188,46,134,193,197,16,86,135,41,18,69,121,163,127,92,51,8,217,148,148,162,213,160,205,38,70,191,11,244,141,142,218,125,131, 196,159,120,25,76,213,153,37,115,237,252,25,206,231,158,239,100,169,239,248,55,153,3,220,187,74,172,208,79,98,43,159,1,45,28,24,53,242,38,145,118,60,63,135,113,179,189,193,204,202,46,134,115,29,132,158,181,136,188,245,196,243,175,173,44,79,22,246,102, 99,234,185,233,219,69,146,230,214,52,140,116,217,171,156,66,228,45,18,231,131,206,174,161,147,243,115,234,77,67,223,115,126,129,41,104,167,28,182,82,109,37,203,28,246,79,103,246,34,238,30,249,54,88,192,86,42,212,217,184,110,54,182,108,176,37,157,254, 207,191,189,24,230,233,82,239,213,175,171,250,75,104,56,15,244,52,51,2,229,54,153,18,236,147,42,218,160,213,204,211,75,97,49,65,8,166,85,202,149,146,237,22,34,177,168,250,64,47,3,219,70,22,80,206,215,17,128,100,42,45,63,137,146,116,252,22,21,175,179, 162,42,1,58,133,249,122,140,207,134,219,62,201,116,154,105,96,16,106,212,21,52,130,30,160,75,13,7,206,241,218,166,197,171,173,13,104,37,153,75,57,146,93,106,113,167,90,130,107,181,231,78,123,253,15,133,203,149,236,100,112,185,146,63,30,174,163,81,114, 165,236,13,37,174,14,146,170,214,199,149,186,7,136,142,37,78,188,73,48,185,3,149,122,116,129,240,61,11,239,24,221,117,93,225,210,254,80,16,219,21,214,102,12,170,34,237,195,92,188,104,229,173,179,251,97,146,248,225,48,77,133,249,183,195,187,35,80,227, 146,62,28,53,223,15,144,127,80,217,195,64,60,132,210,97,148,41,2,128,30,103,35,71,91,36,232,162,167,179,72,208,230,158,12,70,201,57,57,149,99,3,93,236,65,48,118,105,59,26,70,208,198,239,131,209,148,188,232,193,48,22,209,220,120,150,106,136,62,223,222, 101,252,48,149,182,10,130,49,169,155,175,170,202,207,113,152,67,152,185,204,116,250,201,132,106,255,137,63,103,122,79,234,143,212,139,51,136,11,231,16,244,120,121,26,222,190,163,182,203,9,156,253,218,226,35,11,226,9,65,144,59,194,182,82,4,35,102,106, 136,139,184,43,139,102,70,108,142,49,119,71,68,82,91,72,133,223,215,10,76,216,129,185,178,133,192,98,11,164,9,58,48,66,54,65,184,138,2,205,107,218,41,59,237,148,77,161,178,225,15,190,146,178,119,98,173,196,29,212,38,152,244,128,117,110,222,70,112,3,122, 103,97,50,66,91,216,110,113,1,69,93,94,155,50,134,192,152,74,228,110,165,200,142,20,148,21,5,164,32,154,81,79,9,78,225,31,239,4,135,245,9,14,166,116,36,16,112,15,94,59,24,185,54,146,202,37,184,141,148,107,19,5,87,35,214,70,138,181,128,114,137,237,98, 228,138,173,215,120,2,139,45,60,224,93,22,75,69,111,22,139,71,200,252,179,33,142,21,132,142,152,205,4,21,148,106,11,211,17,230,182,20,20,241,182,97,18,102,75,42,48,225,45,195,164,220,102,198,149,180,13,115,95,118,218,41,155,22,240,115,102,148,127,91, 100,213,83,33,11,206,143,97,206,92,174,141,213,190,60,104,5,113,159,142,180,46,225,140,171,23,74,90,65,196,83,146,150,18,42,229,51,37,237,125,177,145,32,234,53,54,58,81,108,36,40,126,141,141,14,131,67,95,99,163,163,156,33,123,202,99,70,40,48,218,151, 122,204,176,39,61,102,152,164,228,165,158,50,236,245,148,57,217,41,227,190,158,50,119,128,243,122,202,28,103,177,10,191,90,236,169,44,86,209,151,107,177,247,131,227,190,186,179,195,224,136,191,163,59,59,61,80,18,161,94,89,196,180,5,158,75,65,188,197, 181,69,254,94,88,221,103,113,18,209,158,195,96,240,249,136,81,105,124,61,3,112,144,241,250,2,34,98,78,220,103,227,167,36,226,253,250,169,26,41,37,108,164,24,125,34,164,78,31,90,72,244,109,46,3,88,192,85,8,19,60,34,24,130,12,197,212,115,8,45,204,79,138, 238,98,37,233,209,150,109,140,40,225,100,99,210,46,83,88,0,172,156,218,152,16,9,38,205,109,138,49,149,59,76,21,230,178,74,57,109,241,85,50,155,112,202,164,106,243,21,100,5,115,73,219,43,130,71,180,153,106,254,30,224,91,156,32,196,125,130,19,132,112,99, 219,132,63,175,203,131,164,248,219,90,56,150,252,197,88,184,43,159,165,133,127,3,214,114,244,122,46,157,42,90,226,228,53,198,124,248,25,196,217,235,45,230,56,172,40,35,125,158,65,192,39,172,100,73,180,145,197,33,34,71,252,153,222,255,0,57,214,27,114, 4,220,186,148,96,149,109,19,101,152,217,136,99,249,212,38,122,242,67,4,192,235,239,59,36,105,43,224,130,32,173,67,132,217,74,34,194,119,63,54,85,8,28,191,34,47,232,110,67,25,69,61,242,148,19,136,74,220,157,200,135,81,14,33,17,86,167,139,124,206,29,147, 93,82,188,171,19,111,76,254,76,112,19,234,213,54,5,197,100,245,84,227,44,188,43,93,252,118,23,0,44,127,3,93,53,76,146,52,208,233,166,137,23,175,86,83,245,243,94,147,62,132,21,71,66,178,205,58,234,109,51,131,55,196,80,87,123,54,243,130,100,117,49,36,187, 141,95,146,4,16,102,187,213,134,144,12,12,154,113,37,247,250,24,94,18,215,22,48,161,250,55,128,219,198,101,154,194,246,89,145,183,214,176,166,226,207,134,166,217,44,89,93,165,6,155,169,23,213,224,212,93,77,147,53,153,36,205,116,159,70,115,144,248,75, 147,23,103,45,75,2,45,110,43,9,211,207,228,114,133,241,213,173,65,192,237,106,89,239,183,232,249,162,106,236,0,166,152,204,34,9,99,163,170,49,157,105,24,69,102,23,125,111,74,117,115,93,75,24,48,59,180,50,211,184,191,180,162,58,79,34,13,92,247,53,16,173, 158,94,150,167,201,53,212,188,21,68,77,253,233,238,120,171,48,134,237,180,170,100,53,41,200,1,129,77,254,154,201,101,233,150,128,9,169,250,20,220,109,92,111,127,175,110,150,88,50,178,123,115,76,123,147,104,37,12,149,223,169,173,164,88,240,198,180,146, 212,216,185,151,23,105,95,51,40,125,73,160,24,213,166,183,72,178,176,108,164,224,101,21,231,172,237,106,138,193,8,86,141,131,248,177,138,148,141,48,67,178,241,235,141,166,34,254,32,69,55,58,205,67,255,43,212,200,190,212,24,216,132,139,37,235,80,67,16, 234,15,54,66,224,192,147,100,39,216,219,40,34,125,173,135,80,56,108,165,144,188,83,13,235,75,13,118,5,208,141,225,14,182,49,74,73,127,176,89,112,114,33,56,211,24,239,212,212,35,175,45,87,218,16,144,40,183,83,81,111,188,198,18,142,31,68,100,55,114,189, 241,26,34,28,91,17,210,185,65,102,219,250,82,67,148,173,224,10,211,173,70,245,183,59,88,25,247,38,69,199,238,192,77,131,247,167,136,195,37,137,42,46,88,151,162,62,87,196,192,195,113,78,81,231,138,154,217,167,143,38,182,4,19,66,2,115,217,161,201,164,105, 247,167,9,35,176,33,133,144,234,212,164,122,213,4,193,158,203,72,135,38,136,111,113,29,133,238,7,159,69,253,92,231,94,224,229,222,54,18,221,212,96,138,55,73,109,231,105,48,29,255,254,225,167,58,233,204,247,199,255,77,210,235,109,190,152,17,240,38,201, 18,194,135,58,17,206,164,89,251,99,19,149,123,249,101,56,135,243,222,100,251,127,119,59,143,32,38,174,27,90,194,249,122,161,183,131,150,195,110,158,92,208,249,244,131,192,159,135,166,147,243,41,135,80,235,23,163,164,145,28,87,13,26,230,145,190,252,213, 36,163,15,126,171,114,220,7,191,121,112,165,40,230,81,54,183,122,248,230,105,13,73,122,217,152,138,89,242,15,87,117,210,219,254,248,31,189,69,50,248,209,139,188,185,23,7,169,14,187,198,54,251,176,63,78,33,185,167,210,40,140,66,95,199,217,253,136,20,157, 195,27,184,53,204,231,73,156,21,224,84,125,51,103,178,182,50,207,33,54,114,246,144,201,150,147,63,225,14,215,154,160,81,240,79,239,106,103,153,166,54,10,47,139,140,254,115,167,42,117,138,152,172,193,187,37,54,207,25,184,91,234,6,8,156,220,45,50,95,102, 161,223,37,82,214,181,86,81,128,188,183,222,98,179,193,180,210,112,178,124,232,134,255,203,187,94,78,6,159,114,13,151,216,244,161,187,189,175,179,144,53,70,213,52,178,143,187,4,104,216,217,3,247,190,205,172,133,78,193,112,178,123,153,213,245,232,144, 223,245,34,77,130,101,241,88,135,54,165,30,57,240,135,48,43,81,233,26,56,213,127,45,67,232,241,85,35,255,59,129,115,91,247,59,230,15,249,225,201,62,10,5,157,134,55,197,150,26,54,100,253,78,250,211,204,75,245,15,81,120,221,4,163,160,94,69,181,77,166,111, 195,227,159,59,155,35,161,40,93,109,143,138,214,125,189,190,221,69,222,68,195,173,247,163,105,28,224,253,171,114,178,92,204,147,64,87,221,235,59,108,145,184,28,132,153,113,15,227,48,54,159,13,237,246,221,121,186,199,225,231,123,192,52,23,94,62,123,211, 206,138,222,62,5,3,187,103,237,236,104,115,81,31,199,73,172,139,119,141,172,236,162,152,46,35,61,214,55,58,78,130,224,172,188,109,143,225,16,122,247,118,255,3,172,247,85,123,121,221,30,227,242,183,87,202,37,155,122,211,5,166,60,206,254,90,194,86,52,107, 255,76,194,120,12,232,196,193,217,220,75,175,117,90,78,168,124,111,101,185,151,230,173,154,121,24,180,202,58,174,202,213,152,192,64,157,70,33,252,25,179,77,93,224,193,157,59,77,1,225,166,164,169,45,179,192,199,104,83,183,133,224,38,204,194,73,24,153, 66,241,54,210,103,237,109,58,75,32,48,158,70,201,106,211,94,135,34,192,145,95,7,230,163,97,68,37,25,97,98,75,162,48,162,131,143,219,74,106,62,255,36,212,85,80,73,139,239,121,204,55,61,221,181,157,3,108,43,191,12,90,49,144,97,0,92,51,221,253,199,72,236, 241,168,155,73,117,144,214,228,82,151,224,49,10,42,14,118,208,174,96,210,254,167,206,239,143,166,98,115,43,43,218,29,201,182,130,34,207,142,109,238,8,83,155,33,87,184,37,79,92,67,167,77,153,118,149,119,229,235,114,39,165,136,232,151,26,245,200,162,241, 37,234,102,49,12,174,96,84,148,51,18,138,241,114,138,85,173,153,188,249,38,171,92,7,147,66,34,217,93,217,221,127,91,219,88,232,97,166,62,222,65,18,182,227,32,209,203,116,144,39,114,45,61,108,24,62,176,97,130,191,96,31,99,190,226,81,204,100,126,109,29, 201,182,146,110,189,9,188,5,91,116,149,219,93,217,217,189,174,236,62,207,112,55,121,246,98,156,206,16,103,243,112,163,131,156,0,16,191,232,52,57,124,180,236,217,105,105,144,167,49,83,140,158,104,219,39,81,226,95,223,183,235,220,108,141,130,163,217,149, 102,195,248,136,184,118,185,159,35,66,108,129,192,167,150,37,16,147,46,163,162,148,218,118,234,218,80,214,245,156,171,35,3,148,122,239,235,207,118,32,174,54,31,135,100,224,13,204,171,254,244,7,110,194,231,230,211,151,203,55,255,7,80,75,3,4,20,0,2,0,8, 0,164,128,249,52,67,149,237,100,185,11,0,0,111,89,0,0,24,0,0,0,109,101,100,105,97,45,112,108,97,121,98,97,99,107,45,112,97,117,115,101,46,115,118,103,237,92,89,115,227,54,18,126,207,175,208,106,94,102,42,34,137,139,56,228,35,149,205,84,82,217,154,236, 166,50,73,237,227,22,69,66,54,99,138,84,72,202,199,252,250,109,144,20,15,137,146,237,49,101,87,108,105,106,74,98,119,3,13,124,248,26,104,72,128,79,191,187,93,68,163,107,157,102,97,18,159,141,177,141,198,35,29,251,73,16,198,23,103,227,63,126,255,209,146, 227,81,150,123,113,224,69,73,172,207,198,113,50,254,238,252,155,211,127,88,214,232,135,84,123,185,14,70,55,97,126,57,250,57,190,202,124,111,169,71,239,47,243,124,57,117,156,155,155,27,59,172,132,118,146,94,56,31,70,150,5,37,179,235,139,111,70,163,17, 184,141,179,105,224,159,141,43,251,229,42,141,10,187,192,119,116,164,23,58,206,51,7,219,216,25,55,230,126,99,126,163,103,118,170,179,100,149,250,101,245,190,223,182,76,131,121,99,10,45,185,161,133,17,86,74,57,136,56,132,88,96,97,101,119,113,238,221,90, 113,246,174,85,20,26,216,87,148,32,132,28,208,53,150,15,179,154,222,70,0,195,206,198,20,218,182,119,128,126,9,255,235,2,53,134,101,95,231,80,82,219,177,206,157,143,191,127,116,214,214,22,178,131,60,104,85,179,46,213,241,219,25,142,216,91,232,108,233, 249,58,171,93,20,229,111,194,32,191,60,27,51,185,188,45,158,47,117,120,113,153,183,4,97,112,54,134,30,98,138,68,241,188,110,195,180,102,17,178,41,41,77,171,138,219,42,70,191,13,244,181,142,186,101,131,196,159,121,25,52,215,185,76,22,218,249,51,92,44, 60,223,201,82,223,241,175,51,7,248,119,145,88,161,159,196,86,126,9,212,112,160,214,200,155,69,218,241,252,28,234,205,182,42,51,189,59,27,47,116,16,122,214,50,242,238,102,158,127,101,45,189,85,6,56,86,163,83,55,78,223,46,147,52,183,230,97,164,203,98,101, 27,34,111,153,56,31,117,118,149,39,75,231,167,212,155,135,190,231,252,12,109,208,78,89,111,229,219,74,86,57,12,162,206,236,101,220,95,243,109,176,132,241,84,168,87,121,183,86,158,131,246,52,208,243,204,88,149,48,155,39,192,89,21,58,208,26,55,94,10,109, 9,66,8,143,210,174,180,236,106,136,196,162,42,3,165,50,232,192,218,22,80,202,239,34,232,163,17,90,126,18,37,233,244,29,42,94,39,133,40,1,74,132,249,221,20,159,140,155,50,201,124,158,105,224,0,106,201,10,26,64,9,240,165,198,35,231,225,222,230,197,171, 235,13,104,33,153,75,57,146,125,110,113,175,91,130,107,183,167,78,183,255,143,133,203,149,236,217,224,114,37,127,58,92,15,70,201,149,114,48,148,184,218,73,170,218,31,87,234,30,32,122,186,56,243,102,193,108,15,42,117,237,2,225,123,58,222,83,187,235,186, 194,165,195,161,32,154,30,214,177,12,174,34,237,67,91,188,232,198,187,203,238,135,73,226,199,195,52,23,230,223,6,239,30,128,26,151,244,241,168,249,126,128,252,157,206,30,7,226,46,148,118,163,76,17,0,244,180,24,121,112,68,130,47,250,124,17,9,222,220,103, 131,81,114,78,158,107,98,3,95,236,81,48,246,121,123,48,140,224,141,223,7,163,121,242,162,71,195,88,100,100,211,203,84,67,6,249,110,95,240,67,83,186,46,8,198,164,86,95,84,194,63,226,48,135,84,17,50,143,244,179,73,183,254,19,255,145,233,45,171,223,83,47, 206,32,183,91,64,210,226,229,105,120,251,158,218,46,39,176,246,107,139,79,44,200,203,5,65,238,4,219,74,17,140,152,145,16,23,113,87,22,106,70,108,142,49,119,39,68,82,91,72,133,63,212,14,252,91,0,144,43,91,8,44,26,32,253,59,144,34,100,19,132,171,44,206, 188,230,189,182,243,94,219,20,132,173,249,224,43,41,187,23,107,37,246,80,155,96,50,0,214,185,249,24,193,46,230,189,133,137,93,16,114,130,202,119,212,96,120,139,11,92,234,231,59,243,140,33,203,165,18,185,141,21,217,176,130,103,69,1,54,72,109,212,33,145, 42,38,203,189,72,177,33,145,194,148,22,8,77,4,2,54,194,107,3,40,215,70,82,185,4,119,225,114,109,162,96,195,195,186,112,177,14,90,46,177,93,140,92,209,204,35,7,136,225,98,78,220,23,195,84,12,22,195,184,162,82,205,169,246,7,72,119,5,161,19,102,51,65,5, 165,218,194,116,130,185,45,5,69,188,27,191,132,217,146,10,76,120,39,126,41,183,153,153,113,186,241,187,109,59,239,181,77,139,49,225,204,56,127,89,184,213,179,194,13,19,39,195,156,185,28,240,38,111,16,111,65,220,225,240,158,160,73,135,201,46,225,140,171, 55,202,100,65,196,161,144,53,164,165,132,74,249,74,73,123,95,94,37,136,58,230,85,207,148,87,9,138,7,206,171,38,175,39,149,130,117,122,224,84,234,149,102,81,130,29,114,153,17,10,130,246,173,46,51,236,160,203,12,147,148,188,213,85,134,29,87,153,103,91, 101,220,227,42,179,7,156,227,42,243,176,136,85,248,24,177,207,21,177,138,190,221,136,189,31,28,247,56,157,237,6,71,252,29,167,179,231,7,74,34,52,40,139,152,182,96,230,82,144,111,113,109,145,191,23,86,247,69,156,68,116,224,52,216,124,123,200,168,52,115, 61,115,205,247,134,240,73,64,70,204,137,251,106,230,41,137,248,176,243,84,141,148,18,54,82,140,30,8,169,231,79,45,36,122,153,205,0,22,176,21,194,4,79,8,134,36,67,49,245,26,82,11,115,28,105,31,43,201,128,177,108,99,68,9,39,235,144,118,153,194,2,96,229, 212,198,132,72,8,105,110,83,140,169,220,96,170,48,155,85,202,105,135,175,146,217,132,83,38,85,151,175,96,43,152,75,186,179,34,204,136,54,83,237,179,4,47,177,130,16,247,0,43,8,225,38,182,9,127,93,155,7,73,241,203,70,56,150,252,205,68,184,43,95,101,132, 191,0,107,57,58,174,75,207,149,45,113,114,204,49,31,191,6,113,246,119,220,197,156,58,230,180,117,241,169,62,72,110,142,131,7,215,161,190,105,142,100,155,83,234,85,61,75,239,66,23,103,217,0,162,242,76,96,165,152,37,105,160,211,181,138,23,175,142,170,58, 238,102,142,195,99,197,145,144,108,61,43,213,3,99,42,111,153,161,62,125,118,233,5,201,205,217,152,108,42,191,36,201,162,57,55,215,12,182,9,62,4,253,134,52,65,108,41,77,12,42,91,113,201,169,187,165,92,165,41,12,144,21,121,119,26,250,84,188,173,171,207, 46,147,155,139,212,96,51,247,162,26,156,186,168,81,89,179,89,114,107,6,117,181,165,14,18,127,101,238,122,88,171,146,34,213,37,3,67,138,48,48,247,19,194,248,226,214,32,224,246,105,238,182,53,122,177,172,148,61,192,20,141,89,38,97,108,92,181,154,51,15, 163,200,140,162,239,205,169,110,247,107,5,21,102,187,122,102,148,219,93,43,196,121,18,105,160,176,175,1,212,186,121,89,158,38,87,32,121,39,136,154,251,243,205,250,110,194,24,134,211,170,46,96,72,65,118,24,172,111,100,152,179,221,253,22,208,32,69,240, 14,229,93,115,126,211,116,177,100,100,255,224,24,125,155,104,37,12,213,204,82,71,73,209,225,117,104,37,169,137,100,47,47,110,123,92,194,211,151,4,30,163,58,244,150,73,22,150,74,42,97,165,225,156,117,167,224,162,50,130,85,43,53,124,170,35,101,35,204,144, 108,253,34,217,118,196,31,229,232,90,167,121,232,127,133,27,57,148,27,3,155,112,177,100,61,110,8,66,195,193,70,136,173,164,36,27,147,253,218,17,25,170,63,132,218,144,83,9,201,123,221,176,161,220,96,87,0,221,24,238,97,27,163,148,12,7,155,69,97,183,196, 9,99,188,215,211,128,188,182,92,105,35,200,97,220,94,71,131,241,26,75,115,138,142,200,126,228,6,227,53,100,126,182,34,164,119,128,204,176,13,229,134,192,26,7,41,76,191,27,53,220,232,152,181,20,22,83,209,51,58,144,119,240,225,28,193,190,7,81,197,5,235, 115,52,100,143,24,204,112,156,83,212,219,163,246,109,172,39,19,27,54,198,8,9,204,101,143,39,115,237,112,56,79,24,65,12,41,132,84,175,39,53,168,39,72,246,92,70,122,60,193,110,21,215,89,232,118,242,89,200,23,58,247,2,47,247,154,76,116,45,193,20,175,47, 121,156,166,193,124,250,219,199,31,235,75,24,190,63,253,111,146,94,53,247,39,140,129,55,75,86,144,62,212,23,67,204,181,67,127,106,242,110,47,63,15,23,176,222,155,27,172,223,222,46,34,200,137,107,69,199,56,191,91,234,166,210,178,218,245,109,220,222,27, 189,129,191,8,77,33,231,115,14,169,214,207,198,73,235,178,72,85,105,152,71,250,252,23,115,183,114,244,107,117,103,115,244,171,185,179,89,180,163,84,119,74,248,230,6,114,146,158,183,154,98,186,252,253,69,125,9,100,187,254,79,222,50,25,253,224,69,222,194, 139,131,84,135,125,117,155,113,216,174,167,176,220,114,105,28,70,161,175,227,236,126,68,138,194,225,53,236,26,22,139,36,206,10,112,170,178,153,51,187,179,50,207,33,54,114,182,144,201,86,179,63,97,151,214,105,160,113,240,79,239,98,163,155,70,26,133,231, 197,5,213,83,167,122,234,53,89,150,192,238,53,169,6,97,191,213,53,48,56,217,111,178,88,101,161,223,103,82,202,58,221,40,80,222,234,112,49,218,16,91,105,56,91,61,118,196,255,229,93,173,102,163,207,185,134,125,106,250,216,225,222,246,89,216,154,168,106, 71,217,167,77,6,180,2,237,145,131,223,165,214,82,167,16,57,217,189,212,234,187,15,255,155,94,166,73,176,42,174,41,119,57,245,196,138,63,134,89,137,74,95,197,169,254,107,21,66,137,175,170,249,223,9,44,220,122,216,58,191,207,119,55,246,73,40,232,52,188, 46,134,212,176,33,27,182,209,159,47,189,84,127,31,133,87,109,48,10,234,85,84,91,95,125,107,77,249,167,206,122,77,40,158,46,154,181,162,179,97,175,183,119,145,55,211,176,237,253,100,148,35,188,189,87,78,86,203,69,18,232,170,120,189,137,45,110,242,5,97, 102,166,135,105,24,155,175,127,214,235,207,69,103,109,35,146,182,110,12,47,189,252,178,117,145,111,237,38,253,159,249,230,161,181,251,220,212,222,110,107,161,114,83,27,236,77,220,150,24,164,191,140,204,111,21,146,187,220,157,96,98,75,162,48,162,163,79, 45,41,101,176,171,33,212,85,32,53,159,49,225,174,220,33,237,175,161,145,126,25,109,223,161,109,110,180,99,247,164,123,211,209,124,201,48,141,147,88,23,159,90,55,44,139,199,116,21,233,169,190,214,113,18,4,39,229,55,5,83,88,64,223,191,219,254,177,236,67, 165,47,191,42,152,226,242,44,132,114,201,90,110,138,0,124,211,236,175,21,176,168,45,253,51,9,227,41,12,108,28,156,44,188,244,74,167,101,131,202,207,86,150,123,105,222,145,44,194,160,243,172,227,234,185,170,19,130,71,167,81,8,111,83,182,150,5,94,6,228, 77,129,28,109,75,35,45,111,116,78,209,90,214,64,112,29,102,225,44,140,204,67,241,49,210,39,93,134,157,36,144,212,207,163,228,102,173,111,135,197,6,181,106,122,180,14,153,54,244,96,144,150,79,48,181,25,114,133,91,142,108,33,130,113,95,139,204,199,29,162, 158,130,181,168,143,15,61,20,40,70,117,251,231,230,15,15,166,69,27,214,138,2,15,28,249,98,184,94,239,200,239,198,252,233,97,135,182,195,174,116,128,223,86,216,237,11,40,161,24,239,70,148,107,0,234,70,212,166,168,175,100,35,235,196,84,29,217,162,245,203, 204,189,171,69,207,74,243,128,185,3,227,173,174,138,170,113,205,172,176,22,209,102,86,48,31,119,136,122,10,214,162,7,206,29,3,240,24,109,240,184,58,74,167,196,113,14,25,181,255,138,16,32,169,205,150,53,131,129,48,175,241,192,201,11,107,253,208,187,102, 152,180,17,134,212,162,224,133,98,68,184,210,112,165,150,18,106,83,72,170,164,42,73,133,48,69,76,78,8,177,5,82,92,116,132,80,129,116,25,21,157,242,77,173,251,83,151,222,204,101,253,247,71,118,178,15,198,235,139,78,147,221,171,212,214,68,89,206,136,207, 51,79,98,116,32,134,205,162,196,191,218,77,176,83,231,162,47,57,134,205,55,145,140,109,255,41,153,30,210,236,163,91,190,235,143,25,40,65,136,50,167,136,247,175,149,135,207,87,93,121,204,87,251,23,206,151,217,168,52,75,28,147,135,89,68,31,153,250,114, 116,76,125,135,200,190,14,186,157,105,88,227,162,3,165,94,131,124,35,224,146,23,205,80,15,153,185,113,114,220,129,188,216,246,143,179,99,218,220,51,255,60,219,150,168,21,225,236,160,171,214,49,11,30,50,11,126,236,6,199,28,138,20,130,203,238,6,135,217, 176,231,65,76,125,245,14,167,197,30,254,36,246,60,100,159,184,145,249,23,111,167,230,39,213,243,111,254,15,80,75,3,4,20,0,2,0,8,0,165,128,249,52,158,228,190,4,151,9,0,0,193,42,0,0,24,0,0,0,109,101,100,105,97,45,112,108,97,121,98,97,99,107,45,115,116, 97,114,116,46,115,118,103,237,89,235,115,219,184,17,255,158,191,130,85,190,196,115,34,137,7,159,178,229,155,52,158,235,164,147,235,221,92,146,233,199,14,68,66,18,99,138,224,145,148,37,229,175,239,2,124,75,148,45,219,236,181,211,86,153,140,73,236,11,216, 253,45,176,11,222,252,184,223,196,218,3,207,242,72,36,243,9,54,208,68,227,73,32,194,40,89,205,39,95,191,252,164,123,19,45,47,88,18,178,88,36,124,62,73,196,228,199,219,55,55,127,210,117,237,67,198,89,193,67,109,23,21,107,237,99,114,159,7,44,229,218,187, 117,81,164,51,211,220,237,118,70,84,13,26,34,91,153,87,154,174,131,100,254,176,122,163,105,26,152,77,242,89,24,204,39,21,127,186,205,98,197,23,6,38,143,249,134,39,69,110,98,3,155,147,150,61,104,217,119,124,97,100,60,23,219,44,40,213,7,65,151,51,11,151, 45,43,204,100,71,21,19,246,125,223,68,196,36,68,7,14,61,63,36,5,219,235,73,254,182,35,10,19,28,18,37,8,33,19,104,45,231,101,92,179,125,12,110,56,59,25,69,237,90,7,215,167,240,191,17,104,124,88,174,117,9,146,220,72,120,97,222,125,185,51,107,110,29,25, 97,17,118,212,212,82,61,187,189,112,36,108,195,243,148,5,60,111,76,40,249,93,20,22,235,249,196,242,210,189,122,95,243,104,181,46,58,3,81,56,159,192,10,49,69,174,122,175,231,48,107,80,132,12,74,74,214,74,113,151,100,209,31,66,254,192,227,190,108,40,130, 5,203,97,186,230,90,108,184,249,45,218,108,88,96,230,89,96,6,15,185,9,248,91,9,61,10,68,162,23,107,128,134,9,90,99,182,136,185,201,130,2,244,230,39,202,228,234,230,147,13,15,35,166,167,49,59,44,88,112,175,3,142,179,194,168,163,211,76,142,239,83,145,21, 250,50,138,121,41,86,206,33,102,169,48,239,120,126,95,136,212,252,75,198,150,81,192,204,143,48,7,110,150,122,43,219,186,216,22,16,68,158,27,105,50,172,121,31,166,16,79,31,13,18,15,53,241,22,168,55,33,95,230,146,171,116,179,124,3,63,251,138,6,84,105,134, 101,48,151,48,130,244,40,249,74,206,62,133,56,158,85,201,128,84,14,11,168,121,171,240,193,8,240,56,147,118,88,44,151,57,135,48,163,206,88,94,28,98,94,114,235,129,136,69,54,123,187,84,191,107,53,36,0,61,81,113,152,225,235,137,102,62,109,205,27,176,134, 31,183,134,212,239,172,181,27,179,191,236,231,122,201,62,239,165,203,39,243,184,11,155,245,219,224,237,179,94,186,208,209,232,250,9,23,118,172,121,99,121,201,70,174,253,12,47,177,112,129,152,247,66,47,129,45,247,89,94,178,28,203,181,172,35,107,23,58, 9,140,249,163,65,201,241,91,19,77,134,195,36,99,30,128,121,22,239,216,33,127,58,35,125,58,82,70,94,146,144,190,253,252,132,12,105,232,6,203,177,188,70,169,133,38,175,75,137,139,161,5,182,200,235,19,208,112,136,231,57,182,239,92,154,137,96,214,122,161, 187,206,161,168,102,80,149,195,108,157,113,168,116,222,14,228,236,35,104,165,168,221,250,87,213,224,215,36,42,160,164,217,230,60,251,44,203,130,95,146,175,57,111,141,225,249,196,197,6,172,222,183,91,217,3,140,98,98,25,24,59,54,105,121,9,240,34,195,3, 136,89,237,232,1,70,59,144,171,205,126,201,88,146,67,81,179,153,79,10,249,24,67,73,249,78,183,108,3,246,90,139,76,117,48,138,64,141,125,213,122,81,74,178,120,76,127,245,211,23,252,213,55,65,40,182,158,233,175,129,229,109,88,145,69,251,119,54,20,71,22, 128,145,235,176,58,240,18,117,8,245,166,196,64,216,183,92,58,69,6,38,158,237,120,83,29,219,216,240,177,111,79,49,242,12,228,58,222,85,163,61,216,131,223,145,107,192,54,223,78,44,56,204,39,30,53,124,31,121,157,233,46,135,88,151,131,172,153,12,166,97,219, 216,233,98,118,124,116,170,234,228,209,189,20,141,230,109,44,221,137,61,60,69,240,175,121,209,109,185,120,136,234,84,7,55,80,7,33,255,170,15,117,4,174,167,39,80,71,216,112,45,124,10,117,223,198,199,80,247,60,195,39,212,37,245,17,115,99,202,98,78,61,53, 117,170,172,54,195,135,136,239,218,138,79,22,193,149,158,148,173,184,218,139,192,129,229,102,84,17,22,34,11,121,86,147,28,245,235,145,170,237,74,86,219,216,119,144,235,89,245,185,210,132,77,42,239,176,149,181,13,26,226,202,215,44,20,187,249,132,28,19, 191,11,177,105,55,189,22,16,0,56,203,50,108,23,128,116,34,35,49,10,24,243,61,68,154,122,176,37,110,179,12,130,168,67,185,206,97,101,234,79,173,62,95,139,221,42,147,30,90,178,184,113,81,35,42,73,250,98,33,246,114,23,217,158,144,161,33,216,202,134,82,223, 150,48,170,58,25,9,156,40,148,77,16,116,187,123,233,7,123,136,114,56,165,240,77,90,17,7,28,163,38,147,138,40,145,166,58,211,129,6,35,134,128,217,54,248,134,118,215,181,5,133,249,185,149,73,226,233,210,212,112,33,98,14,136,15,224,228,194,205,244,242,34, 19,247,252,216,78,163,111,23,37,16,78,189,234,242,60,151,156,97,168,219,62,187,233,18,142,57,96,66,148,156,35,130,207,108,167,27,188,18,153,195,225,145,244,46,212,74,71,84,251,79,147,45,106,201,117,138,137,76,230,59,43,84,83,185,134,183,239,2,94,227, 38,5,83,145,71,37,145,66,34,250,14,212,137,189,45,71,41,35,144,181,237,70,247,90,67,62,108,225,22,242,44,123,208,144,243,44,67,208,47,23,208,110,62,223,140,55,150,25,233,54,215,198,71,59,117,105,134,192,78,49,154,219,136,220,14,60,216,151,7,13,145,177, 214,67,96,199,71,158,219,233,121,187,102,172,177,204,96,219,5,184,89,120,0,109,22,165,100,60,183,233,212,49,144,67,44,203,25,180,52,34,174,117,27,202,143,94,187,208,53,52,26,174,177,39,143,33,226,13,123,110,52,92,203,90,200,39,100,48,64,50,108,99,153, 33,190,225,83,228,13,155,241,199,139,14,246,229,246,230,185,3,209,177,49,114,198,51,228,80,3,81,223,113,173,33,67,99,174,200,130,29,206,113,40,26,92,17,193,35,2,219,131,20,66,46,118,188,1,75,242,118,115,60,75,170,132,247,161,204,28,180,228,143,106,9, 138,62,219,34,3,150,40,198,184,169,70,79,139,80,53,190,225,5,11,89,193,218,138,180,30,193,20,202,185,186,3,11,151,179,223,238,126,106,154,233,32,152,253,93,100,247,109,251,43,25,216,66,108,161,128,104,26,124,121,187,25,204,100,117,206,138,219,104,3,231, 189,188,40,255,97,191,137,161,54,110,8,61,230,226,144,242,86,105,169,182,190,244,31,252,112,16,6,155,72,10,153,159,11,40,182,62,74,35,157,166,191,82,26,21,49,191,253,89,94,225,106,191,86,87,195,218,103,121,53,172,230,81,146,123,18,129,252,208,33,178, 219,206,84,228,146,223,175,154,30,254,84,255,39,150,10,237,3,139,217,134,37,97,198,163,33,221,50,14,167,122,20,231,137,73,105,48,142,2,158,228,79,123,68,9,71,15,208,61,108,54,34,201,149,115,42,217,220,92,28,244,156,153,208,111,154,39,158,201,183,139, 111,208,203,245,38,40,13,252,153,173,142,150,41,71,227,232,86,222,172,223,152,213,203,32,135,186,41,127,130,101,155,71,193,227,44,15,128,94,241,56,75,170,218,133,33,158,114,172,183,6,229,226,147,213,170,80,67,98,101,209,98,251,220,112,255,149,221,111, 23,128,34,14,173,108,246,220,88,159,218,84,188,50,165,186,41,246,233,56,252,157,44,123,102,228,251,184,74,121,6,105,147,63,137,171,161,111,110,191,241,52,19,225,86,125,10,233,3,234,149,138,239,162,188,244,202,144,226,140,255,190,141,64,226,69,154,255, 38,224,212,230,227,234,124,95,156,159,236,171,188,192,179,232,65,133,84,162,33,31,119,210,159,215,44,227,239,227,232,190,235,12,5,189,10,106,245,181,101,103,191,191,49,235,3,65,189,173,78,122,95,177,77,55,34,228,85,255,62,105,15,18,245,110,29,247,126, 49,91,112,232,138,101,14,136,44,17,77,19,171,238,99,195,40,151,121,61,139,18,121,69,84,159,93,171,35,157,248,140,206,79,146,168,225,201,101,83,28,54,89,121,32,101,197,186,118,113,123,114,130,14,121,216,64,235,30,192,175,119,224,74,1,226,120,237,157,16, 140,253,172,97,50,165,190,97,107,159,228,147,15,127,160,203,66,142,239,123,83,104,79,60,236,34,215,47,105,138,235,187,214,72,87,147,235,127,137,146,247,9,48,137,132,171,167,206,149,184,122,205,182,49,159,241,7,14,179,12,175,203,75,129,25,156,148,239, 78,175,62,209,85,69,47,111,5,102,24,42,74,248,121,148,214,227,82,4,124,55,203,127,223,2,98,186,163,223,68,148,204,192,161,73,120,189,97,217,61,207,202,9,149,207,229,7,215,222,200,38,10,123,239,60,169,222,43,157,144,40,60,139,35,248,51,179,234,177,144, 229,0,212,12,130,210,229,148,163,229,205,251,12,213,99,173,11,30,162,60,90,68,177,124,81,143,49,191,238,71,246,90,64,245,190,140,197,174,161,183,151,252,216,62,253,150,147,253,35,232,223,192,244,105,135,138,214,20,114,93,196,12,49,94,98,224,124,212,85, 32,79,47,169,175,46,70,66,215,147,117,212,75,3,212,249,95,138,250,113,126,26,22,116,239,206,148,186,144,142,216,42,179,177,26,195,213,53,169,76,95,104,190,29,68,92,203,157,170,123,5,219,181,188,46,107,35,222,73,225,122,87,160,180,211,171,157,221,75,254, 32,28,189,122,247,160,200,185,250,63,142,254,29,56,34,150,235,255,199,224,168,254,90,250,242,237,231,210,179,70,133,248,191,14,45,126,141,12,207,181,106,180,148,99,128,16,159,66,137,32,193,98,27,182,79,9,110,176,210,229,107,100,191,107,160,145,214,163, 196,144,119,132,74,154,26,182,131,125,167,39,93,243,129,106,236,149,86,78,101,7,193,215,185,175,61,7,190,243,0,172,128,212,158,184,246,245,75,64,5,33,250,206,51,113,30,84,228,24,84,229,94,243,199,236,64,24,253,139,64,181,136,69,112,255,20,166,32,138, 112,208,200,32,218,14,177,171,184,202,17,98,25,240,254,65,195,158,65,144,227,200,218,19,70,144,77,176,173,1,52,48,194,142,93,129,196,178,168,163,81,192,27,49,64,178,163,163,214,58,132,12,74,253,23,87,79,23,110,103,55,38,244,242,55,242,246,232,246,205, 63,1,80,75,3,4,20,0,2,0,8,0,4,134,250,52,115,77,182,120,141,10,0,0,123,45,0,0,16,0,0,0,109,101,100,105,97,45,114,101,99,111,114,100,46,115,118,103,229,90,89,143,227,54,18,126,159,95,161,245,188,100,16,139,226,45,210,125,4,179,25,36,8,144,236,2,57,176, 143,11,181,68,187,149,145,37,71,146,187,237,249,245,91,164,37,89,178,228,62,102,156,236,67,186,209,104,139,85,172,34,191,250,84,197,195,215,223,236,214,153,247,96,202,42,45,242,155,25,65,120,230,153,60,46,146,52,95,221,204,126,251,245,59,95,205,188,170, 142,242,36,202,138,220,220,204,242,98,246,205,237,155,235,127,248,190,247,109,105,162,218,36,222,99,90,223,123,63,228,31,171,56,218,24,239,171,251,186,222,44,130,224,241,241,17,165,77,35,42,202,85,240,206,243,125,232,89,61,172,222,120,158,7,110,243,106, 145,196,55,179,70,127,179,45,51,167,151,196,129,201,204,218,228,117,21,16,68,130,217,81,61,62,170,63,154,59,84,154,170,216,150,241,193,124,28,247,53,203,100,121,84,133,145,60,50,167,68,180,214,1,166,1,165,62,104,248,213,62,175,163,157,159,87,111,123, 93,97,128,83,93,41,198,56,0,217,81,243,101,90,139,93,6,48,156,29,140,147,246,189,3,244,27,248,235,58,116,24,30,230,186,132,158,6,229,166,14,62,252,250,33,104,181,125,140,146,58,233,153,105,123,13,252,14,194,145,71,107,83,109,162,216,84,157,11,215,255, 49,77,234,251,155,25,87,155,157,123,190,55,233,234,190,238,53,164,201,205,12,102,72,24,14,221,115,59,134,69,199,34,140,24,61,168,54,134,251,34,206,190,78,204,131,201,134,125,147,34,190,139,42,24,110,112,95,172,77,240,123,186,94,71,113,80,149,113,16,63, 84,1,240,111,85,248,105,92,228,126,125,15,212,8,192,106,22,221,101,38,136,226,26,236,86,35,99,118,118,55,179,181,73,210,200,47,77,92,148,9,106,163,210,13,202,236,54,69,89,251,203,52,51,7,245,131,239,44,218,20,193,7,83,125,172,139,77,240,125,25,45,211, 56,10,126,0,223,38,56,216,107,124,250,197,182,134,224,153,10,109,242,105,203,187,100,3,113,212,120,82,184,111,133,183,32,189,78,204,178,178,90,7,120,237,19,224,171,157,12,164,214,77,84,194,88,146,20,94,139,131,222,65,115,40,97,138,133,77,31,232,85,193, 4,90,93,64,167,222,103,48,71,219,232,199,69,86,148,139,183,216,253,92,185,166,2,168,144,214,251,5,185,154,29,251,20,203,101,101,32,246,184,215,230,194,15,61,192,151,158,121,193,203,189,45,221,207,208,27,70,161,98,2,11,194,167,220,146,73,183,156,116,110, 175,131,225,252,95,9,23,165,226,53,112,153,37,213,84,191,16,30,176,253,58,120,226,216,6,227,133,40,80,42,63,23,133,150,134,224,54,51,49,216,143,178,199,104,95,205,158,96,21,227,120,246,101,113,126,57,171,24,167,95,206,170,23,147,137,113,254,151,193,168, 164,164,127,213,203,9,190,248,171,96,156,242,246,98,24,193,155,124,14,70,251,20,101,175,134,209,149,199,197,125,105,160,156,191,157,192,179,15,247,208,5,165,84,117,226,85,211,248,91,158,214,80,183,183,149,41,127,177,181,239,223,249,111,149,25,105,253, 90,70,121,5,133,118,13,21,36,170,203,116,247,21,153,99,251,139,4,147,33,101,115,159,33,202,137,20,212,248,132,205,137,68,42,100,88,190,235,12,197,187,155,25,229,8,178,49,161,242,216,186,191,153,49,137,56,37,132,134,93,235,114,82,119,57,169,91,2,254,2, 73,206,67,200,243,29,224,151,135,214,189,241,231,161,37,76,94,14,90,134,164,80,138,104,11,42,97,76,41,192,84,206,9,10,137,6,180,221,3,69,88,225,80,209,185,47,41,2,220,249,156,80,20,74,138,249,9,228,4,65,130,38,106,8,185,13,22,81,84,51,62,196,124,164, 188,156,86,182,160,179,63,19,109,87,134,158,34,178,100,195,105,82,36,6,51,164,10,17,34,49,215,195,9,246,213,150,147,106,118,106,28,72,29,170,222,171,116,62,84,20,49,41,132,132,56,112,164,57,165,156,186,240,8,196,132,14,101,27,43,138,169,226,2,194,9,197, 157,10,18,194,39,142,40,211,186,247,130,60,77,154,14,235,207,204,189,79,49,219,174,144,158,90,64,241,35,214,59,226,88,18,98,202,212,17,179,61,180,42,164,9,17,140,28,73,178,163,78,87,1,190,228,136,250,30,90,153,64,130,75,130,213,107,39,255,151,19,13,38, 47,46,246,90,95,142,43,127,34,229,15,88,95,7,118,189,237,62,117,91,8,187,33,72,30,82,243,120,92,148,219,253,73,99,102,19,173,140,43,156,0,241,97,1,210,8,238,96,163,97,202,86,36,221,207,64,212,212,86,187,17,34,132,193,156,187,161,117,129,181,198,123,106, 120,74,94,221,71,73,241,8,243,59,21,126,42,138,245,177,72,31,201,178,59,148,19,173,41,99,35,161,173,53,128,137,22,29,73,143,178,109,89,66,124,253,44,218,27,152,146,251,215,90,175,238,139,199,85,105,161,89,70,89,135,77,215,213,138,252,187,187,2,92,215, 229,118,36,134,77,218,214,110,242,253,237,129,97,205,238,210,114,42,77,236,198,52,205,87,59,11,128,152,146,236,199,18,179,222,52,194,9,92,220,96,54,69,154,91,87,189,225,192,230,47,131,72,13,150,246,110,94,91,48,88,157,155,153,21,142,167,230,154,235,34, 51,240,50,196,176,190,34,221,240,170,186,44,62,154,83,63,157,189,199,52,135,104,250,205,206,91,133,244,140,66,187,21,151,103,53,96,64,92,243,51,66,23,102,222,155,228,129,146,211,225,177,242,62,211,14,64,52,169,169,123,77,220,148,219,87,171,40,109,42, 136,106,183,209,191,135,167,79,5,60,102,221,171,183,41,170,244,32,100,144,64,53,44,81,135,217,200,25,163,68,247,150,228,95,234,72,35,76,56,238,231,181,190,35,249,42,71,15,166,172,211,248,51,220,168,75,185,177,176,133,130,40,62,225,134,194,222,241,98, 176,65,30,213,74,81,69,38,29,209,75,205,135,50,164,177,10,123,75,176,190,27,126,41,55,68,132,64,55,78,38,216,198,25,163,151,131,205,135,20,139,37,229,92,78,122,186,32,175,125,161,16,166,82,139,73,71,23,227,53,81,80,127,160,68,79,35,119,49,94,19,12,1, 162,116,50,64,54,108,151,114,67,53,210,12,171,105,55,250,114,209,33,218,166,55,21,78,68,71,16,44,47,231,72,50,132,153,150,33,159,114,116,201,25,113,200,112,82,50,60,57,35,74,46,72,108,5,175,16,14,73,111,131,121,244,100,79,156,47,231,9,150,228,8,107,140, 245,164,39,125,81,79,176,218,19,156,78,120,98,132,144,110,25,58,94,125,186,246,181,169,163,36,170,163,227,82,180,109,33,140,180,71,74,215,101,178,92,252,252,225,187,238,200,39,142,23,255,41,202,143,199,211,26,171,16,221,21,91,88,64,116,199,80,246,228, 57,94,216,133,123,84,223,166,107,168,247,246,242,226,235,221,58,131,69,113,39,24,40,215,251,141,57,26,61,152,109,47,98,38,47,115,146,120,157,218,78,193,47,53,44,182,126,176,78,122,71,83,141,209,180,206,204,237,79,246,120,221,251,217,29,215,59,255,135, 230,129,102,108,47,157,138,242,182,55,4,59,213,247,171,238,168,105,108,247,199,104,83,120,223,70,89,180,142,242,164,52,233,148,109,139,255,216,142,211,28,185,180,14,179,52,54,121,245,60,18,174,115,250,0,115,90,175,139,188,114,160,52,125,171,224,110,239, 87,81,64,17,14,70,136,84,219,187,223,97,123,55,24,160,117,240,207,104,117,50,77,219,154,165,183,238,110,226,58,104,158,38,85,54,110,249,254,180,78,217,160,255,148,206,122,91,165,241,211,42,128,66,254,140,149,7,160,127,49,165,114,104,27,76,212,197,225, 4,18,23,47,75,241,62,229,127,60,13,75,143,245,175,140,200,48,222,27,83,2,141,171,103,227,61,117,47,249,179,217,148,69,178,117,215,70,195,64,127,161,225,15,41,236,44,210,187,237,164,225,210,252,177,77,161,199,103,89,254,87,1,85,212,92,214,230,251,250, 252,96,191,8,5,83,166,15,46,164,150,13,213,101,7,253,203,125,84,154,247,89,250,177,15,134,163,94,67,181,246,212,187,151,127,175,131,54,65,187,167,213,49,113,15,246,207,221,94,43,139,238,12,236,66,127,180,66,143,140,183,174,197,118,179,46,18,211,116,239, 246,148,238,16,63,73,43,251,90,47,210,220,158,245,180,197,96,19,213,247,237,116,235,209,217,12,134,213,22,150,58,108,14,181,181,102,66,205,25,146,161,230,138,207,9,146,156,80,214,59,129,129,129,255,228,193,218,86,120,148,122,239,61,194,61,194,60,236, 17,248,245,20,18,243,113,107,171,252,169,179,209,213,182,114,239,206,83,199,237,59,123,50,51,110,119,167,61,116,162,253,244,188,199,226,107,231,205,20,59,54,54,40,29,239,27,137,184,26,94,121,216,19,128,5,148,171,175,222,142,79,195,222,57,105,239,250, 197,61,150,219,204,44,204,131,201,139,36,185,58,108,237,15,6,198,103,137,239,26,249,97,111,191,176,39,220,82,18,216,248,182,237,182,11,68,121,81,253,177,5,158,245,91,127,47,210,124,81,218,52,122,181,142,202,143,166,92,228,69,110,154,207,126,85,71,101, 61,104,89,167,201,224,217,228,205,115,99,19,94,47,83,102,41,252,91,240,182,45,137,96,123,95,150,64,159,190,166,109,61,92,247,44,112,219,118,132,224,33,173,210,187,52,179,15,238,99,102,174,134,28,188,42,96,13,190,204,138,199,86,62,142,157,93,14,220,204, 162,50,158,141,142,53,203,255,198,195,83,149,161,108,223,200,186,197,89,159,233,103,175,216,207,41,236,158,83,248,220,239,6,116,95,9,120,102,218,35,122,194,114,222,253,188,144,164,246,146,235,229,36,237,7,249,64,72,114,202,67,72,207,245,136,133,142,58, 23,103,33,193,255,39,26,182,137,2,192,147,103,242,202,232,62,110,144,142,198,23,115,195,44,214,93,209,77,38,63,133,96,203,166,116,47,73,185,252,202,49,226,138,40,201,188,206,188,205,170,173,45,175,235,214,230,88,141,136,166,76,41,49,127,97,135,41,15, 199,4,61,46,19,4,146,37,22,140,181,119,159,82,72,112,230,115,36,66,41,236,173,167,16,84,137,119,211,239,226,243,164,127,41,195,37,59,101,56,194,231,57,222,124,143,226,132,230,8,135,34,164,92,254,45,211,110,199,119,65,197,11,234,232,179,149,247,92,165, 62,169,236,151,88,53,76,173,93,20,172,82,36,109,215,46,82,132,176,116,81,66,132,161,189,80,146,18,51,174,46,201,73,23,162,151,102,216,183,203,48,76,194,228,148,125,148,132,76,195,223,223,157,126,225,185,116,123,134,124,252,149,228,227,39,228,83,30,229, 13,201,120,75,50,130,231,227,198,131,230,51,188,163,132,83,221,240,174,121,224,8,50,32,33,33,124,32,154,112,113,54,27,158,214,121,121,54,225,217,47,87,124,73,73,199,136,138,77,253,138,186,62,138,245,201,150,98,0,41,133,119,141,51,2,233,159,32,141,69, 200,189,111,61,18,66,109,96,146,40,215,168,160,98,8,143,80,196,153,10,105,232,190,29,163,195,80,107,219,134,25,134,210,1,70,176,102,212,245,85,136,192,166,35,100,115,10,133,139,96,76,61,248,160,49,193,225,156,218,157,8,197,36,244,152,64,36,164,82,128, 91,141,66,66,152,176,125,25,135,122,198,41,119,181,72,75,26,42,225,49,128,150,132,80,244,142,3,180,183,12,90,243,254,136,109,19,15,165,102,3,45,72,44,33,110,155,176,10,39,38,251,201,155,162,181,30,211,17,98,100,108,150,169,32,167,196,113,21,119,103,124, 171,219,55,215,246,140,237,246,205,255,0,80,75,3,4,20,0,2,0,8,0,225,128,249,52,157,141,185,194,180,16,0,0,195,74,0,0,22,0,0,0,112,114,101,102,101,114,101,110,99,101,115,45,115,121,115,116,101,109,46,115,118,103,237,91,217,114,219,72,150,125,247,87,112, 232,151,170,104,18,204,125,161,37,117,212,148,163,39,122,194,179,68,187,42,230,25,4,65,9,101,146,208,0,208,230,175,159,115,19,32,9,144,144,68,173,49,209,46,50,202,34,114,207,147,119,57,247,38,234,228,175,183,171,229,224,58,45,202,44,95,159,14,121,196, 134,131,116,157,228,243,108,125,126,58,252,253,183,191,141,221,112,80,86,241,122,30,47,243,117,122,58,92,231,195,191,158,125,56,249,151,241,120,240,107,145,198,85,58,31,220,100,213,197,224,239,235,111,101,18,95,166,131,159,46,170,234,114,58,153,220,220, 220,68,89,83,24,229,197,249,228,231,193,120,140,158,229,245,249,135,193,96,128,105,215,229,116,158,156,14,155,246,151,87,197,50,180,155,39,147,116,153,174,210,117,85,78,120,196,39,195,93,243,100,215,252,38,157,69,69,90,230,87,69,82,15,159,36,237,150, 197,124,177,107,138,149,220,200,208,136,123,239,39,76,76,132,24,163,197,184,188,91,87,241,237,120,93,126,108,117,197,2,251,186,10,198,216,4,117,187,150,199,181,154,222,46,1,195,189,139,9,181,237,217,1,253,37,254,219,118,216,98,88,239,117,129,158,105, 180,78,171,201,231,223,62,79,54,173,199,44,154,87,243,214,48,155,94,157,121,59,199,177,142,87,105,121,25,39,105,185,157,34,244,223,60,76,211,219,203,188,168,198,119,243,75,44,198,179,136,133,79,111,155,219,35,218,44,178,101,74,115,158,14,39,23,249,42, 157,252,145,173,86,113,50,249,156,150,223,170,252,114,114,147,161,69,116,185,174,145,187,201,230,213,197,233,80,185,203,219,240,124,145,102,231,23,85,171,32,155,159,14,1,51,231,178,153,110,131,196,116,43,203,44,146,162,187,146,86,149,146,127,153,167, 215,233,178,219,119,158,39,179,184,220,95,98,89,36,147,228,186,156,64,11,206,243,113,150,228,235,113,117,1,1,157,96,212,101,60,91,166,147,4,122,112,158,23,89,90,30,140,87,111,249,178,72,23,105,1,197,74,75,8,93,89,165,171,136,132,228,12,173,79,230,233, 162,164,94,245,166,232,73,134,10,84,65,54,210,184,248,183,34,158,103,80,135,186,81,107,63,73,190,92,166,9,96,137,151,55,241,93,61,247,102,156,110,87,33,52,107,6,197,176,37,0,223,180,197,106,171,187,37,150,72,133,99,140,152,23,211,143,139,240,249,20,138, 114,200,72,86,221,77,249,167,225,174,79,190,88,148,41,38,102,173,178,112,36,232,129,185,196,112,48,121,217,108,172,111,54,222,63,155,218,206,118,50,233,110,251,245,97,52,250,9,48,214,218,240,108,24,141,125,18,140,125,179,61,1,70,227,223,17,70,109,223, 81,26,253,123,74,163,225,207,132,241,0,37,201,220,83,80,146,202,232,88,61,19,37,204,245,0,74,187,86,94,63,50,96,207,194,252,98,150,164,252,96,97,79,57,19,51,243,58,137,159,45,1,74,60,190,55,180,82,125,3,70,86,63,188,61,57,55,113,172,95,180,61,233,76, 58,59,230,232,120,239,209,249,87,20,57,251,20,145,243,46,102,177,127,182,200,217,167,41,102,34,231,108,62,127,54,74,238,21,81,130,146,191,147,249,194,92,242,197,94,224,9,40,193,191,189,26,74,202,63,1,165,153,161,239,179,81,210,252,24,21,55,162,87,197, 31,209,240,133,160,239,139,52,124,17,211,247,152,221,69,198,26,46,188,118,253,222,69,29,181,77,215,59,178,83,128,201,10,241,240,110,231,142,190,199,239,182,53,173,233,159,214,190,61,190,243,25,125,159,45,245,90,190,27,247,129,90,240,247,162,144,152,75, 190,31,133,196,108,143,26,15,122,138,151,79,134,49,4,201,211,11,4,81,167,195,143,61,120,182,225,238,78,129,106,187,173,78,110,79,135,66,69,142,139,157,68,38,119,167,67,233,163,118,209,162,167,217,226,176,89,1,24,108,100,218,226,125,222,204,250,91,17, 175,75,68,234,171,211,225,42,174,138,236,246,39,222,132,198,35,214,243,67,90,165,181,27,217,136,123,37,165,76,199,92,143,176,0,101,177,183,159,15,6,255,125,157,85,229,233,240,170,76,139,175,20,191,255,215,250,247,50,221,1,255,76,73,125,24,98,255,160, 68,235,29,2,183,28,168,248,200,40,39,213,206,208,220,161,84,137,72,104,105,216,238,180,110,5,112,134,193,147,28,228,107,215,22,165,38,178,86,59,38,249,145,155,127,28,127,50,67,78,216,126,252,155,42,17,97,125,222,185,145,138,60,172,176,3,246,111,138,170, 225,15,162,106,108,7,85,205,34,174,133,111,97,66,168,142,37,240,3,117,181,182,11,171,142,132,231,204,153,14,172,99,21,73,198,16,195,202,215,199,117,204,33,198,218,43,21,164,183,243,176,109,163,35,41,156,240,30,213,70,51,161,228,27,3,220,2,165,55,188, 146,29,128,165,139,132,176,70,171,14,192,28,0,51,161,69,23,95,105,33,43,90,218,61,169,53,194,105,231,205,59,75,173,83,86,51,9,116,181,115,150,139,55,6,213,61,12,170,239,130,234,35,90,155,216,179,5,18,182,192,73,107,58,152,114,19,121,146,240,46,168,48, 186,74,73,193,221,63,177,41,8,249,144,7,179,78,93,80,185,192,130,149,105,35,69,160,106,56,35,167,76,215,192,114,70,186,230,152,238,162,42,201,215,120,163,95,13,85,114,112,86,104,53,26,11,88,36,163,133,73,199,98,212,254,189,109,193,35,237,165,226,28,14, 207,115,88,41,134,218,55,198,183,181,209,62,124,45,239,226,171,34,198,173,222,23,90,200,167,194,250,101,23,95,29,41,174,109,75,236,3,190,176,37,198,73,243,202,82,203,96,59,97,104,173,20,210,178,26,211,221,239,109,11,17,113,160,238,44,132,23,78,196,121, 255,214,194,203,30,206,245,153,174,153,229,17,183,86,177,61,51,235,35,39,184,230,170,3,174,194,158,180,231,182,107,18,64,47,180,113,109,235,123,36,53,122,119,246,9,193,99,175,170,97,143,83,72,97,201,197,222,67,33,223,140,0,215,16,159,76,232,246,34,252, 218,94,129,208,253,199,252,58,75,111,62,52,65,71,145,127,67,212,241,81,48,21,111,93,201,34,91,46,81,86,167,48,135,187,203,16,186,140,105,30,47,227,243,52,68,41,104,87,103,84,154,138,89,94,204,211,98,83,101,194,167,83,213,4,50,20,138,66,123,61,227,91, 7,189,61,121,26,188,213,140,245,213,151,23,241,60,191,1,48,251,149,223,243,28,135,164,246,139,9,107,72,53,44,134,228,246,160,18,243,8,67,167,230,14,235,174,138,2,2,48,94,198,119,41,182,20,254,108,132,172,188,200,111,206,11,130,102,17,47,183,216,108,187, 82,213,120,54,203,49,117,85,92,29,84,207,243,228,138,238,85,199,87,181,8,54,119,105,173,22,52,126,123,179,189,179,220,100,107,84,142,155,59,58,206,164,186,167,197,230,214,142,51,206,238,105,66,146,118,120,30,77,37,64,114,155,0,246,100,149,86,241,60,174, 226,157,116,108,74,212,230,186,172,152,47,166,255,248,252,183,109,188,155,36,211,255,201,139,111,187,80,149,26,196,179,252,10,107,218,198,224,116,3,151,76,73,211,226,234,44,91,97,243,116,127,251,151,219,213,18,226,188,173,232,52,174,238,46,211,221,160, 245,176,155,187,232,222,251,236,121,178,202,168,211,228,107,5,73,255,59,77,210,138,203,235,65,19,186,77,207,139,179,214,192,180,129,95,206,183,209,115,103,9,89,181,76,207,254,61,254,118,53,27,124,173,82,24,165,34,44,183,46,111,143,49,57,28,36,180,60, 152,143,134,173,247,112,214,108,161,190,255,140,86,87,101,150,92,196,203,101,148,124,15,93,155,86,31,218,235,92,102,73,186,46,31,135,37,76,155,93,67,151,87,171,124,93,6,132,154,190,229,100,118,55,46,227,9,216,205,228,0,158,122,99,255,189,187,71,29,124, 13,247,168,125,187,14,59,185,154,253,1,99,222,129,130,22,244,175,241,249,30,154,84,186,204,206,90,87,180,39,147,166,172,183,97,153,86,85,182,62,127,164,85,146,175,97,234,150,176,91,235,116,249,112,211,234,38,141,191,61,54,105,179,217,195,54,117,89,103, 91,245,33,117,1,8,114,64,218,208,214,142,47,251,135,214,82,144,39,158,87,87,26,46,211,2,18,95,62,42,13,125,111,113,252,35,189,44,242,249,85,82,101,249,186,43,6,47,28,248,115,6,239,147,205,174,122,7,46,210,255,189,202,208,227,89,35,255,103,94,1,146,215, 29,243,151,234,254,197,190,8,133,180,200,174,195,145,146,52,148,175,187,232,175,23,113,145,254,178,204,190,181,193,8,162,215,136,218,38,59,216,50,213,39,147,141,33,15,79,231,59,3,223,113,125,91,231,176,140,103,41,216,194,23,170,28,240,67,23,152,95,93, 174,242,121,218,116,223,248,134,203,184,186,216,108,169,234,97,215,86,115,206,93,47,183,210,214,89,196,215,224,58,76,33,252,29,193,171,75,35,219,188,10,107,253,143,129,66,208,56,168,41,210,224,151,65,195,140,6,148,20,208,3,54,224,248,14,44,85,142,30, 110,211,30,230,251,118,134,45,159,42,238,234,68,131,238,169,186,61,204,72,110,43,123,104,222,174,174,135,239,17,254,132,25,248,251,46,136,105,82,198,219,212,48,130,72,231,16,107,216,79,221,4,50,241,185,41,252,223,79,31,15,249,240,207,161,182,149,204, 14,143,197,213,50,157,174,243,245,119,240,181,79,53,73,164,199,180,249,93,147,141,41,223,60,18,11,199,113,79,161,31,85,187,236,143,60,91,79,161,26,105,241,105,21,23,223,210,162,30,164,254,61,46,171,184,168,58,37,171,108,222,121,78,215,243,206,180,97, 168,101,134,63,83,181,41,155,199,96,71,69,17,223,117,90,82,105,157,29,159,178,77,217,110,143,215,89,153,205,178,37,61,132,159,203,244,211,60,43,47,33,161,211,108,77,11,255,148,95,167,197,98,153,223,108,234,15,79,137,8,4,98,147,34,217,5,52,109,161,238, 105,119,239,177,73,156,244,145,71,70,9,244,63,143,236,105,71,182,209,29,201,164,63,78,219,142,82,211,7,245,251,208,46,188,189,81,234,179,163,78,26,102,121,175,29,69,204,174,164,25,141,109,228,181,71,171,17,215,145,229,182,147,92,235,72,116,87,108,249, 189,18,123,120,31,113,188,196,126,116,206,197,78,119,133,150,69,62,124,236,15,40,188,65,108,32,4,158,25,203,229,72,240,72,112,109,172,25,124,25,72,19,57,239,37,19,35,133,211,84,86,13,126,29,72,136,139,177,150,82,165,60,210,2,45,7,168,228,76,64,190,71, 116,231,195,148,50,124,128,74,43,188,165,164,212,182,171,146,116,29,225,49,9,73,150,146,168,37,65,243,136,138,153,27,97,96,38,148,150,134,250,42,198,72,116,164,142,16,48,107,35,177,24,33,35,110,141,148,146,196,200,43,195,180,193,152,2,45,68,40,245,145, 241,161,80,80,98,76,40,165,70,42,194,90,148,115,3,174,112,192,150,138,52,188,59,167,162,47,3,46,35,43,149,151,35,131,165,42,193,177,198,47,141,54,112,165,71,156,69,74,27,103,116,93,218,192,67,157,52,147,142,83,41,70,213,26,173,71,220,80,210,218,187,48, 2,86,47,188,178,130,74,33,154,161,208,70,142,25,195,156,25,113,17,25,192,166,8,144,190,82,67,153,104,108,58,76,229,25,22,237,122,203,126,29,16,10,218,10,233,136,160,104,84,99,169,152,220,41,236,69,82,50,72,211,154,77,239,217,126,31,28,58,126,174,216, 161,153,89,131,89,145,131,41,79,135,73,242,61,217,124,202,199,156,210,61,253,146,164,199,104,182,146,225,181,48,186,136,115,43,157,166,141,121,197,8,107,72,135,20,76,24,75,178,227,33,128,92,212,194,232,185,198,201,53,82,134,243,39,171,229,24,227,94,145, 128,98,24,102,45,73,20,131,9,114,188,211,155,164,213,82,106,122,36,29,250,72,96,73,45,61,96,165,50,75,105,85,174,5,201,183,131,87,20,156,228,209,91,8,27,137,143,16,112,171,146,59,79,231,44,181,224,78,146,60,74,24,250,80,138,101,212,133,130,4,73,97,27, 16,52,169,172,86,26,231,164,119,101,138,146,228,58,136,153,142,184,83,194,146,68,42,237,133,32,185,7,26,80,20,238,73,194,189,195,136,190,46,244,216,155,198,228,138,150,233,157,172,251,195,5,225,252,137,187,42,35,148,49,181,64,50,195,57,212,137,24,45, 83,66,219,90,34,29,102,165,82,202,126,11,27,52,158,174,185,184,231,70,83,41,6,114,82,7,57,21,192,147,74,105,47,156,107,167,73,248,153,0,45,70,25,20,83,144,156,29,28,91,75,202,14,40,9,180,22,75,146,190,207,200,7,187,119,180,65,223,190,111,213,99,208,249, 143,100,209,119,121,239,52,169,238,167,240,150,65,244,180,121,49,240,189,174,216,128,60,246,157,132,21,63,40,47,164,179,128,137,219,241,194,38,141,10,173,17,198,137,214,157,232,38,123,42,200,107,40,207,119,183,81,68,32,161,92,78,75,217,186,214,59,29, 210,213,27,12,134,242,187,166,196,25,97,174,156,116,142,217,221,29,85,113,215,91,220,71,232,140,183,94,82,96,108,185,129,166,143,198,219,95,173,186,61,178,247,218,132,206,201,167,16,58,235,22,126,254,39,161,235,248,80,120,39,229,157,133,23,148,140,88, 188,116,181,115,146,82,72,178,217,30,118,28,84,204,14,224,210,172,19,70,56,114,99,116,245,109,121,111,25,92,48,156,164,54,154,88,8,156,22,254,50,242,57,32,117,168,103,16,15,31,193,255,42,80,13,106,11,54,102,132,149,228,223,184,213,2,75,161,82,9,98,167, 225,239,71,240,73,144,113,116,235,150,42,122,163,194,104,154,141,94,20,178,140,195,151,9,184,42,77,126,154,118,0,137,51,160,123,40,117,240,112,160,44,240,175,116,41,202,36,81,72,136,170,3,151,20,125,219,239,167,60,234,17,202,179,97,45,79,96,59,247,19, 29,167,15,15,9,76,5,36,25,231,129,90,98,1,225,148,24,177,57,218,34,188,49,179,142,14,132,88,46,72,55,92,188,211,26,100,176,183,44,28,146,132,241,32,78,170,35,196,92,70,17,93,160,112,206,32,240,177,196,33,84,195,73,233,140,44,232,147,25,129,91,121,163, 193,169,169,84,129,194,131,34,56,226,164,28,0,27,91,151,74,148,213,108,193,211,203,60,130,206,136,227,236,57,157,50,150,138,62,82,133,245,19,203,148,129,131,130,186,8,237,76,56,35,7,110,238,5,237,20,76,12,114,212,187,251,135,24,131,150,222,90,1,71,242, 6,142,139,110,173,247,28,215,230,250,85,168,31,145,66,244,152,241,99,141,183,127,138,241,174,175,133,95,110,188,31,129,238,126,144,94,118,98,47,53,211,100,196,160,227,156,143,200,142,130,89,35,116,254,117,0,75,234,192,243,17,23,42,29,65,135,173,167,96, 85,73,4,227,161,200,66,19,132,33,186,207,160,226,90,83,220,237,25,71,0,132,206,148,100,49,214,25,65,241,143,49,8,6,57,133,128,92,43,227,29,69,58,148,195,133,162,146,51,80,28,148,96,36,233,173,29,132,63,158,148,23,138,238,16,205,251,145,228,20,80,11,230, 66,140,13,53,111,148,23,113,137,226,212,14,33,167,9,58,14,27,161,185,168,67,34,78,209,17,52,26,129,18,24,140,241,181,61,64,60,45,17,82,81,22,12,225,150,20,20,43,32,102,65,44,69,45,97,253,17,101,241,240,46,131,224,152,37,188,120,195,131,49,161,128,151, 195,174,104,90,15,204,184,148,158,64,163,224,1,17,17,108,32,247,22,230,138,146,90,48,111,136,72,168,12,86,17,65,30,69,120,145,19,176,159,112,100,18,46,203,1,107,129,176,153,57,43,224,250,66,44,72,215,0,134,114,95,24,155,118,72,152,193,128,106,50,144, 125,135,211,239,69,196,17,94,164,76,94,156,200,237,37,80,155,248,231,104,149,139,57,125,247,141,29,151,206,64,132,204,15,156,190,197,65,154,254,244,45,164,226,254,75,22,27,221,151,187,165,151,98,251,51,183,221,170,58,115,139,128,64,83,70,35,36,101,169, 190,249,119,147,146,133,7,28,61,80,189,235,254,72,194,246,136,151,33,21,52,145,81,178,140,89,171,140,250,249,229,55,16,6,140,225,62,231,253,84,9,254,243,210,161,67,43,121,235,21,251,142,212,114,208,42,38,149,87,253,130,75,156,141,245,118,174,133,23,94, 196,182,222,73,223,147,223,189,218,154,207,130,127,91,88,125,184,135,102,236,32,171,117,211,221,143,70,98,201,224,131,84,10,59,58,166,117,207,216,15,203,185,182,140,72,116,255,5,111,168,242,228,20,157,114,20,141,8,186,14,126,65,24,251,114,2,106,228,30, 1,21,145,0,87,103,61,57,172,34,191,90,207,15,196,187,46,253,231,186,150,112,17,189,208,202,66,192,106,132,114,44,48,156,158,82,10,40,25,56,144,34,79,15,134,162,4,220,55,215,20,201,200,64,122,12,119,123,47,93,55,202,35,31,241,221,79,8,253,202,141,159, 63,188,84,183,108,159,248,57,112,55,134,32,9,220,13,68,42,48,37,206,34,161,44,37,185,21,162,48,68,234,180,177,16,29,107,196,236,40,3,195,243,220,83,238,21,12,16,91,162,206,224,47,164,12,129,248,129,235,40,227,40,25,46,173,209,206,147,142,81,6,156,72, 30,197,236,76,114,69,44,13,177,158,85,154,136,31,131,254,169,38,55,160,48,148,86,68,180,192,225,36,69,109,88,133,181,176,33,1,104,68,141,152,27,237,180,10,111,115,83,116,167,65,216,92,19,9,42,122,249,148,200,155,195,106,57,175,163,117,7,242,138,117,6, 62,200,20,198,164,116,54,115,94,115,106,9,14,199,164,164,85,58,33,193,95,41,214,7,11,97,194,213,251,225,142,94,111,165,21,17,201,210,22,204,24,4,208,81,114,159,82,241,0,6,177,190,197,121,91,69,87,54,180,71,102,176,135,112,59,98,241,155,251,112,177,196, 133,19,134,238,86,32,17,74,136,112,13,96,132,245,90,162,55,248,174,167,219,17,160,230,165,20,33,171,209,115,60,135,161,233,155,102,174,213,15,196,196,62,29,188,96,162,142,178,196,80,23,202,247,120,254,70,38,217,242,255,255,38,249,13,83,136,208,94,161, 64,220,130,254,193,200,8,213,232,244,126,41,108,148,102,220,73,79,186,6,18,169,132,39,131,76,255,67,154,242,193,70,9,206,140,239,49,139,202,30,103,125,79,38,231,103,31,78,232,69,221,179,15,255,7,80,75,3,4,20,0,2,0,8,0,183,128,249,52,199,174,1,222,145, 13,0,0,154,63,0,0,18,0,0,0,115,121,115,116,101,109,45,108,111,103,45,111,117,116,46,115,118,103,237,90,109,111,219,200,17,254,158,95,161,42,95,18,156,68,237,251,139,98,187,184,94,112,197,21,105,15,184,220,161,31,11,154,90,219,60,83,162,74,82,182,149, 95,223,153,37,197,23,137,178,41,199,201,29,208,72,9,44,206,206,190,61,251,204,236,204,46,207,254,250,176,76,70,119,46,203,227,116,117,62,166,1,25,143,220,42,74,23,241,234,250,124,252,219,175,63,78,205,120,148,23,225,106,17,38,233,202,157,143,87,233,248, 175,23,175,206,254,50,157,142,126,200,92,88,184,197,232,62,46,110,70,63,173,110,243,40,92,187,209,155,155,162,88,207,103,179,251,251,251,32,174,132,65,154,93,207,222,142,166,83,168,153,223,93,191,26,141,70,208,237,42,159,47,162,243,113,165,191,222,100, 137,215,91,68,51,151,184,165,91,21,249,140,6,116,54,110,212,163,70,253,222,93,6,153,203,211,77,22,149,205,71,81,91,51,91,92,53,170,48,146,123,238,149,168,181,118,70,216,140,177,41,104,76,243,237,170,8,31,166,171,252,117,171,42,12,176,175,42,35,132,204, 160,172,209,28,166,53,127,72,0,134,163,131,241,165,237,222,1,250,53,252,175,43,212,24,150,115,189,130,154,46,88,185,98,246,254,215,247,179,157,246,148,4,139,98,209,106,102,87,171,211,111,103,57,86,225,210,229,235,48,114,121,221,133,175,191,123,152,187, 135,117,154,21,211,237,98,13,131,177,36,32,254,211,171,243,48,64,231,42,78,28,246,121,62,158,221,164,75,55,251,61,94,46,195,104,246,222,229,183,69,186,158,221,199,160,17,172,87,37,114,247,241,162,184,57,31,11,179,126,240,207,55,46,190,190,41,90,130,120, 113,62,6,152,41,229,85,119,59,36,230,53,151,73,192,89,119,36,173,34,193,191,91,184,59,151,116,235,46,210,232,50,204,247,135,152,103,209,44,186,203,103,96,5,215,233,52,142,210,213,180,184,1,130,206,160,213,36,188,76,220,44,140,10,104,55,63,104,172,156, 111,190,205,11,183,156,38,233,245,52,221,20,1,178,227,2,52,207,22,238,42,199,26,229,108,240,137,251,2,40,2,82,184,48,251,123,22,46,98,176,131,82,169,84,235,150,88,99,85,85,7,106,229,0,228,78,183,130,8,36,160,99,198,141,56,189,186,202,29,64,73,90,178, 188,216,38,174,212,158,70,105,146,102,243,215,145,195,239,59,47,74,129,38,113,177,157,211,119,227,209,236,169,222,44,33,61,189,209,138,26,79,244,106,29,126,247,122,221,85,109,122,63,155,117,97,56,25,53,211,32,82,179,3,134,144,184,8,198,26,38,247,225, 54,31,0,43,57,29,214,43,255,121,6,172,198,178,62,88,79,239,237,69,97,36,47,0,163,97,167,195,40,25,126,159,3,163,17,167,195,216,215,219,75,194,168,204,49,148,122,6,35,28,126,143,154,72,15,148,61,166,215,224,161,201,113,212,122,122,87,20,191,123,80,60, 214,59,125,188,119,246,114,40,74,241,52,215,164,26,8,208,233,192,15,224,158,52,207,247,140,225,37,126,191,188,103,20,236,5,76,90,136,211,77,90,51,237,72,248,28,147,22,234,116,147,238,235,237,37,97,228,228,105,148,56,123,62,25,37,193,239,231,144,145,139, 231,147,145,26,252,190,48,25,143,177,237,56,204,70,41,118,130,231,172,134,183,207,176,199,153,186,3,12,250,18,39,121,202,190,222,250,61,100,127,111,234,43,194,40,201,9,48,30,9,97,134,194,40,217,73,48,30,9,97,134,194,40,197,83,48,226,83,152,156,12,163, 207,219,230,55,153,131,60,243,117,15,158,109,184,187,93,64,113,227,176,162,7,24,185,13,52,161,84,52,51,136,182,231,99,22,64,108,111,185,105,164,87,189,186,87,189,186,25,168,234,128,106,208,148,181,240,186,26,193,175,89,184,202,33,145,92,158,143,151,97, 145,197,15,111,104,192,36,23,130,77,166,44,96,86,81,43,221,148,170,9,13,180,208,66,17,255,64,2,43,57,68,247,147,41,149,129,208,150,152,9,133,122,90,41,254,246,160,139,223,86,113,1,9,242,38,119,217,71,76,50,127,94,253,150,187,102,41,250,65,199,65,203, 64,9,161,185,238,204,143,171,64,48,74,153,238,96,193,68,96,184,166,76,117,112,59,212,141,122,117,31,3,163,180,221,9,233,249,33,185,210,140,3,50,74,115,169,17,38,57,161,42,48,154,19,53,20,134,227,220,176,166,53,194,71,41,166,6,236,211,79,192,61,108,144, 199,113,98,1,161,218,90,58,17,129,80,148,82,229,105,50,149,1,164,87,76,10,255,196,96,57,9,74,169,16,129,20,214,76,166,10,234,113,64,241,109,135,172,10,178,117,42,169,232,172,187,0,188,5,108,116,172,179,238,150,7,218,16,210,226,72,212,171,27,245,234,246, 129,206,7,129,238,119,245,225,160,247,251,231,71,105,199,164,164,108,66,240,11,184,193,22,13,6,73,2,244,98,22,140,17,76,131,19,118,50,203,182,12,232,111,2,48,9,176,235,102,158,32,229,96,210,92,90,214,184,141,45,5,32,1,50,9,228,110,233,210,62,221,222, 232,209,12,3,82,176,23,3,114,192,228,53,76,200,18,213,157,60,53,64,67,202,246,38,15,254,213,16,65,169,238,76,94,128,129,11,9,164,126,116,242,74,12,155,188,20,127,2,211,149,10,230,195,39,50,32,48,51,137,166,107,208,249,11,170,152,194,39,1,46,78,16,206, 20,80,144,3,128,16,173,242,201,212,6,192,74,78,120,199,118,97,75,98,76,211,86,30,143,182,11,187,15,183,138,104,210,245,217,26,188,3,135,127,29,219,61,212,141,122,117,251,108,87,15,180,93,101,190,132,237,22,248,51,9,11,247,102,74,193,196,20,101,205,110, 241,44,67,21,129,86,64,53,209,53,84,1,77,106,88,155,125,174,82,162,53,219,51,84,26,24,201,172,124,220,80,205,64,212,12,249,138,134,10,158,71,8,107,133,238,26,42,240,75,74,217,114,45,126,242,60,128,192,3,64,233,76,222,0,122,132,40,241,248,228,237,64,67, 53,230,43,78,30,253,17,236,149,124,207,69,131,51,166,68,201,174,151,98,52,144,176,225,26,185,191,242,68,27,43,31,245,82,150,176,97,147,183,106,232,228,207,102,120,118,237,127,213,135,223,120,242,189,184,139,221,253,171,42,176,207,210,91,136,236,95,135, 162,149,93,94,197,73,2,178,50,23,31,55,71,225,120,6,95,61,174,195,107,231,51,1,208,43,83,129,170,224,50,205,22,46,219,21,41,255,233,20,85,201,2,102,212,16,140,88,66,235,9,213,211,193,198,91,106,164,175,60,191,9,23,233,61,64,190,95,248,41,77,151,77,214, 209,64,132,142,11,186,180,82,104,125,80,184,197,20,219,106,170,77,29,150,55,133,155,44,3,228,167,73,184,117,48,39,255,103,215,124,126,147,222,95,103,136,77,145,109,220,126,77,44,153,94,94,166,15,253,197,139,52,218,224,117,218,116,83,146,176,186,66,105, 105,96,243,237,201,94,133,73,126,208,204,125,188,130,194,105,117,53,67,27,166,238,107,236,46,107,32,33,57,162,241,128,55,57,242,72,33,98,4,241,90,197,173,165,43,194,69,88,132,13,59,118,146,221,113,223,89,182,184,154,255,242,254,199,58,167,140,162,249, 191,211,236,182,73,7,81,33,188,76,55,48,166,58,207,197,251,151,104,142,78,60,44,46,226,37,76,30,175,237,190,123,88,38,64,231,186,160,163,92,108,215,174,105,180,108,118,119,5,217,123,141,185,136,150,49,86,154,125,44,128,233,63,97,39,173,220,183,108,52, 194,75,212,52,187,104,53,140,19,248,254,186,206,80,59,67,136,139,196,93,252,35,188,221,92,142,62,22,14,76,54,243,195,45,229,237,54,102,135,141,120,205,131,254,176,217,114,14,23,213,20,202,107,175,96,185,201,227,232,38,76,146,32,250,228,171,86,90,175, 218,227,76,226,200,173,242,167,97,241,221,198,119,96,203,203,101,186,202,61,66,85,221,124,118,185,157,230,225,12,210,130,217,1,60,229,196,62,250,27,180,209,135,244,122,244,243,166,232,155,177,159,197,230,242,119,240,78,29,24,112,48,127,11,175,247,144, 68,105,18,95,36,208,94,138,237,85,207,199,148,158,212,113,15,113,175,70,41,235,244,95,34,217,29,169,95,44,164,108,155,194,31,246,145,109,177,248,68,80,187,75,182,118,25,208,50,127,114,201,250,110,216,127,113,235,44,93,108,252,117,103,119,173,62,179,225, 247,49,108,17,241,229,166,183,225,204,253,119,19,67,141,103,181,252,175,180,0,72,94,182,205,239,139,227,131,253,44,20,92,22,223,249,37,69,54,228,47,59,232,143,55,97,230,190,79,226,219,54,24,158,122,21,213,118,199,100,45,127,122,54,219,121,91,255,116, 221,120,225,206,246,84,187,240,36,188,116,176,165,127,192,194,17,61,220,167,210,205,122,153,46,92,85,189,118,224,96,11,117,62,225,183,98,77,32,234,105,69,124,217,67,45,149,172,9,96,252,209,151,84,150,145,214,21,247,131,15,14,37,161,186,165,89,191,64, 0,219,175,96,132,53,234,213,126,6,193,147,133,208,169,27,59,225,192,172,105,41,87,7,148,205,177,103,247,176,23,3,154,57,108,0,111,94,31,158,48,188,245,165,173,19,83,255,152,109,18,55,119,119,110,149,46,22,239,202,40,169,117,116,140,143,229,134,91,31, 175,11,179,147,99,192,6,176,206,129,135,69,91,246,123,26,175,230,64,65,151,189,91,134,217,173,203,230,171,116,229,170,223,211,188,8,179,162,35,89,198,139,206,179,91,85,207,85,155,190,169,36,134,63,115,90,15,106,17,66,172,144,101,225,182,163,138,210,242, 60,118,94,107,54,19,190,139,243,248,50,78,240,193,255,76,220,187,69,156,175,129,10,243,120,133,35,127,151,222,185,236,42,73,239,119,229,135,17,104,246,159,168,27,229,116,203,182,85,89,147,62,183,168,181,245,171,172,185,146,173,227,7,100,139,56,160,9, 101,1,83,92,200,67,154,16,160,9,124,76,15,79,4,57,157,39,135,7,40,195,121,210,70,190,34,201,55,110,156,192,141,117,88,220,212,11,86,39,46,224,158,48,102,131,56,57,194,79,103,157,177,134,53,173,35,70,144,253,115,68,33,59,231,90,41,54,129,4,214,10,136, 108,237,232,195,8,124,144,197,151,27,236,132,7,68,10,124,131,0,164,28,53,40,101,18,165,214,104,106,69,37,53,146,83,208,5,49,53,84,75,108,161,167,221,79,163,3,142,237,225,178,143,91,15,178,251,232,215,55,119,61,75,213,87,118,184,184,29,30,84,85,14,56, 115,132,83,7,172,235,180,188,199,218,71,248,221,245,147,164,99,37,135,54,212,53,178,224,49,155,84,226,237,158,253,30,32,119,132,84,93,47,64,2,193,202,79,159,59,216,221,116,29,181,126,152,200,39,72,107,143,91,63,223,71,7,182,219,213,226,0,200,82,250,210, 230,47,190,144,245,95,38,105,116,123,220,248,75,3,4,243,80,214,16,218,49,64,46,2,74,181,37,220,27,149,98,92,121,179,148,129,148,224,218,237,4,67,1,99,165,101,29,41,218,31,225,156,168,202,132,141,52,70,29,72,247,123,107,153,229,206,79,80,174,200,179,125, 212,147,110,41,122,194,141,161,238,249,56,204,162,241,81,50,50,107,133,146,108,120,12,195,14,98,152,218,214,78,217,163,246,61,202,31,178,87,5,67,188,218,99,126,240,16,131,207,217,194,42,206,24,213,226,76,189,150,253,247,151,77,113,239,165,103,93,140, 161,243,225,173,106,83,188,197,83,83,110,149,177,92,118,205,74,128,195,50,212,40,62,170,155,31,125,63,170,219,26,213,213,70,100,68,225,59,178,1,181,140,27,3,155,219,176,10,125,61,124,170,7,81,28,92,91,64,10,160,141,176,253,55,179,85,209,84,7,82,91,131, 215,178,129,132,191,220,190,29,228,157,155,133,236,115,206,81,212,240,252,4,250,87,231,157,93,11,168,66,72,48,168,63,210,97,255,217,108,160,244,228,16,158,83,92,189,9,133,101,196,55,26,188,207,174,165,16,126,115,41,185,194,160,201,6,74,9,240,202,226, 152,84,5,84,43,42,52,72,25,13,140,209,90,200,9,3,159,13,177,24,225,94,87,90,202,5,19,248,34,131,146,138,18,218,149,226,24,52,81,186,51,134,102,100,61,94,31,130,5,62,192,123,31,245,223,251,78,90,18,67,24,21,67,157,52,190,91,242,69,157,244,255,61,67,109, 96,25,216,180,1,118,176,64,104,67,68,201,164,90,170,241,190,94,41,100,18,11,136,22,138,74,122,68,10,78,29,130,126,33,200,232,135,17,180,198,57,228,8,32,197,131,14,142,78,17,88,105,165,176,150,77,240,10,91,115,200,23,144,201,204,10,102,136,103,178,64, 174,119,251,175,71,213,207,78,249,249,177,69,31,155,15,123,106,229,206,30,56,22,64,178,3,51,180,19,138,251,0,184,63,233,193,216,73,153,197,119,107,8,243,6,15,196,247,200,28,145,226,173,152,229,86,163,20,224,18,68,128,157,150,128,64,22,174,74,93,1,27, 145,214,19,188,40,52,66,83,209,149,26,168,197,140,55,237,190,145,125,203,179,78,205,179,122,83,39,43,222,14,200,189,218,78,205,143,169,63,219,242,193,2,51,92,12,75,183,134,7,182,90,125,59,116,121,214,110,45,2,2,249,15,245,153,80,249,206,144,63,182,56, 126,226,209,150,194,222,108,180,63,241,80,134,18,99,170,19,143,253,6,123,220,24,164,228,106,124,194,201,205,23,60,32,202,243,222,35,34,189,239,252,32,44,17,156,0,8,232,120,36,190,96,137,32,80,124,13,71,104,134,62,223,18,99,53,238,15,16,205,80,2,81,7, 56,63,25,104,166,32,145,132,253,161,79,138,113,143,102,140,89,220,31,24,51,154,27,108,147,66,7,12,220,161,10,24,101,76,51,172,13,59,9,181,216,63,212,134,206,13,56,73,159,31,27,98,160,119,230,223,44,163,198,47,11,39,128,175,223,133,164,96,150,98,109,124, 47,3,122,130,221,197,6,92,49,60,158,226,248,102,159,193,190,97,70,10,246,40,12,226,123,100,31,122,231,222,227,94,135,132,225,189,62,198,124,75,75,95,56,224,25,110,0,192,254,60,202,251,12,116,239,140,20,8,40,180,174,2,36,46,33,190,38,37,45,15,164,232, 15,4,225,82,248,221,88,114,34,75,90,130,135,48,22,9,8,252,130,248,187,164,37,56,14,165,9,146,21,2,3,78,37,146,77,40,197,132,193,224,74,161,113,169,94,217,15,35,102,2,180,3,234,77,130,25,129,39,177,254,53,73,195,153,66,77,140,247,33,62,0,25,190,41,167, 36,202,40,12,82,84,181,15,164,64,127,34,240,69,108,28,15,161,154,106,142,51,52,156,40,174,113,228,202,114,197,105,57,111,41,53,129,126,112,62,198,80,45,112,148,16,243,89,124,209,19,140,71,74,162,76,175,204,247,13,1,13,32,131,168,89,60,34,54,222,61,112, 170,168,198,151,145,185,176,138,200,94,116,191,197,53,95,253,252,24,220,238,208,243,227,179,217,245,197,171,51,124,17,229,226,213,255,0,80,75,1,2,20,0,20,0,2,0,8,0,128,122,250,52,23,17,234,255,206,13,0,0,219,67,0,0,16,0,0,0,0,0,0,0,1,0,32,0,0,0,0,0,0, 0,100,111,99,117,109,101,110,116,45,110,101,119,46,115,118,103,80,75,1,2,20,0,20,0,0,0,8,0,96,128,249,52,242,213,5,70,140,20,0,0,25,120,0,0,17,0,0,0,0,0,0,0,1,0,32,0,0,0,252,13,0,0,100,111,99,117,109,101,110,116,45,111,112,101,110,46,115,118,103,80,75, 1,2,20,0,20,0,2,0,8,0,96,125,250,52,34,86,64,46,27,23,0,0,165,116,0,0,17,0,0,0,0,0,0,0,1,0,32,0,0,0,183,34,0,0,100,111,99,117,109,101,110,116,45,115,97,118,101,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,118,128,249,52,254,120,218,95,213,23,0,0,110,124, 0,0,20,0,0,0,0,0,0,0,1,0,32,0,0,0,1,58,0,0,100,111,99,117,109,101,110,116,45,115,97,118,101,45,97,115,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,106,128,249,52,126,63,165,149,12,18,0,0,232,90,0,0,18,0,0,0,0,0,0,0,1,0,32,0,0,0,8,82,0,0,100,111,99,117, 109,101,110,116,45,112,114,105,110,116,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,121,128,249,52,162,251,72,104,220,10,0,0,238,60,0,0,13,0,0,0,0,0,0,0,1,0,32,0,0,0,68,100,0,0,101,100,105,116,45,99,111,112,121,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8, 0,125,128,249,52,153,109,230,156,183,23,0,0,27,89,0,0,12,0,0,0,0,0,0,0,1,0,32,0,0,0,75,111,0,0,101,100,105,116,45,99,117,116,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,136,128,249,52,38,221,82,145,115,17,0,0,142,92,0,0,14,0,0,0,0,0,0,0,1,0,32,0,0,0,44, 135,0,0,101,100,105,116,45,112,97,115,116,101,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,130,128,249,52,145,40,234,161,189,30,0,0,76,213,0,0,15,0,0,0,0,0,0,0,1,0,32,0,0,0,203,152,0,0,101,100,105,116,45,100,101,108,101,116,101,46,115,118,103,80,75,1,2, 20,0,20,0,2,0,8,0,131,128,249,52,23,55,187,63,234,22,0,0,20,138,0,0,13,0,0,0,0,0,0,0,1,0,32,0,0,0,181,183,0,0,101,100,105,116,45,102,105,110,100,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,141,128,249,52,100,188,189,164,140,9,0,0,25,36,0,0,13,0,0,0,0, 0,0,0,1,0,32,0,0,0,202,206,0,0,101,100,105,116,45,117,110,100,111,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,143,128,249,52,187,167,102,138,170,9,0,0,119,36,0,0,13,0,0,0,0,0,0,0,1,0,32,0,0,0,129,216,0,0,101,100,105,116,45,114,101,100,111,46,115,118,103, 80,75,1,2,20,0,20,0,2,0,8,0,171,128,249,52,75,77,50,197,89,10,0,0,186,54,0,0,23,0,0,0,0,0,0,0,1,0,32,0,0,0,86,226,0,0,109,101,100,105,97,45,115,101,101,107,45,98,97,99,107,119,97,114,100,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,174,128,249,52,207,153, 178,73,172,10,0,0,72,56,0,0,22,0,0,0,0,0,0,0,1,0,32,0,0,0,228,236,0,0,109,101,100,105,97,45,115,101,101,107,45,102,111,114,119,97,114,100,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,168,128,249,52,105,10,147,139,124,11,0,0,198,82,0,0,23,0,0,0,0,0,0,0, 1,0,32,0,0,0,196,247,0,0,109,101,100,105,97,45,112,108,97,121,98,97,99,107,45,115,116,111,112,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,164,128,249,52,67,149,237,100,185,11,0,0,111,89,0,0,24,0,0,0,0,0,0,0,1,0,32,0,0,0,117,3,1,0,109,101,100,105,97,45, 112,108,97,121,98,97,99,107,45,112,97,117,115,101,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,165,128,249,52,158,228,190,4,151,9,0,0,193,42,0,0,24,0,0,0,0,0,0,0,1,0,32,0,0,0,100,15,1,0,109,101,100,105,97,45,112,108,97,121,98,97,99,107,45,115,116,97,114, 116,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,4,134,250,52,115,77,182,120,141,10,0,0,123,45,0,0,16,0,0,0,0,0,0,0,1,0,32,0,0,0,49,25,1,0,109,101,100,105,97,45,114,101,99,111,114,100,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,225,128,249,52,157,141,185, 194,180,16,0,0,195,74,0,0,22,0,0,0,0,0,0,0,1,0,32,0,0,0,236,35,1,0,112,114,101,102,101,114,101,110,99,101,115,45,115,121,115,116,101,109,46,115,118,103,80,75,1,2,20,0,20,0,2,0,8,0,183,128,249,52,199,174,1,222,145,13,0,0,154,63,0,0,18,0,0,0,0,0,0,0,1, 0,32,0,0,0,212,52,1,0,115,121,115,116,101,109,45,108,111,103,45,111,117,116,46,115,118,103,80,75,5,6,0,0,0,0,20,0,20,0,249,4,0,0,149,66,1,0,0,0,0,0 }; const char* icons_zip = (const char*) temp_binary_data_3; //================== juce_icon.png ================== static const unsigned char temp_binary_data_4[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,65,100,111,98,101,32,73,109,97,103,101,82,101,97,100,121,113,201,101,60,0,0,3,40,105,84,88,116,88,77,76,58, 99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,63,120,112,97,99,107,101,116,32,98,101,103,105,110,61,34,239,187,191,34,32,105,100,61,34,87,53,77,48,77,112,67,101,104,105,72,122,114,101,83,122,78,84,99,122,107,99,57,100,34,63,62,32,60,120, 58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116,107,61,34,65,100,111,98,101,32,88,77,80,32,67,111,114,101,32,53,46,54,45,99,48,54,55,32,55,57,46,49,53,55, 55,52,55,44,32,50,48,49,53,47,48,51,47,51,48,45,50,51,58,52,48,58,52,50,32,32,32,32,32,32,32,32,34,62,32,60,114,100,102,58,82,68,70,32,120,109,108,110,115,58,114,100,102,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57, 57,47,48,50,47,50,50,45,114,100,102,45,115,121,110,116,97,120,45,110,115,35,34,62,32,60,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,32,114,100,102,58,97,98,111,117,116,61,34,34,32,120,109,108,110,115,58,120,109,112,61,34,104,116,116,112, 58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,34,32,120,109,108,110,115,58,120,109,112,77,77,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,109,109,47,34,32,120, 109,108,110,115,58,115,116,82,101,102,61,34,104,116,116,112,58,47,47,110,115,46,97,100,111,98,101,46,99,111,109,47,120,97,112,47,49,46,48,47,115,84,121,112,101,47,82,101,115,111,117,114,99,101,82,101,102,35,34,32,120,109,112,58,67,114,101,97,116,111, 114,84,111,111,108,61,34,65,100,111,98,101,32,80,104,111,116,111,115,104,111,112,32,67,67,32,50,48,49,53,32,40,77,97,99,105,110,116,111,115,104,41,34,32,120,109,112,77,77,58,73,110,115,116,97,110,99,101,73,68,61,34,120,109,112,46,105,105,100,58,53,52, 53,66,70,48,69,70,55,66,48,54,49,49,69,53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34,32,120,109,112,77,77,58,68,111,99,117,109,101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,53,52,53,66,70,48,70,48,55,66,48,54,49,49,69,53,66,51,49,53,69, 69,54,51,67,65,56,68,70,50,56,48,34,62,32,60,120,109,112,77,77,58,68,101,114,105,118,101,100,70,114,111,109,32,115,116,82,101,102,58,105,110,115,116,97,110,99,101,73,68,61,34,120,109,112,46,105,105,100,58,53,52,53,66,70,48,69,68,55,66,48,54,49,49,69, 53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34,32,115,116,82,101,102,58,100,111,99,117,109,101,110,116,73,68,61,34,120,109,112,46,100,105,100,58,53,52,53,66,70,48,69,69,55,66,48,54,49,49,69,53,66,51,49,53,69,69,54,51,67,65,56,68,70,50,56,48,34, 47,62,32,60,47,114,100,102,58,68,101,115,99,114,105,112,116,105,111,110,62,32,60,47,114,100,102,58,82,68,70,62,32,60,47,120,58,120,109,112,109,101,116,97,62,32,60,63,120,112,97,99,107,101,116,32,101,110,100,61,34,114,34,63,62,115,115,54,90,0,0,175,140, 73,68,65,84,120,218,236,157,7,128,92,117,181,255,207,45,211,251,236,204,246,94,179,61,189,247,144,70,11,45,244,14,74,81,154,20,17,241,1,239,161,40,54,44,207,191,138,138,62,124,2,250,176,32,85,233,32,37,72,9,9,73,72,239,61,219,119,218,109,255,223,239, 55,155,80,4,201,220,123,103,167,157,79,24,118,179,73,238,220,185,237,124,207,249,157,194,105,154,6,8,130,32,8,130,20,22,60,30,2,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16, 4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16,4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,40,0,16,4,65,16,4,65, 1,128,32,8,130,32,8,10,0,4,65,16,4,65,80,0,32,8,130,32,8,130,2,0,65,16,4,65,16,20,0,8,130,32,8,130,160,0,64,16,4,65,16,4,5,0,130,32,8,130,32,40,0,16,4,65,16,4,65,1,128,32,8,130,32,8,10,0,4,65,16,4,65,204,70,204,228,155,39,18,9,60,3,8,242,41,104,154,70, 254,207,129,166,210,175,26,249,10,160,42,90,242,207,200,207,52,250,61,151,252,187,28,207,125,228,223,90,28,2,136,86,129,254,171,195,63,226,224,200,223,102,247,61,247,9,111,41,147,151,58,242,103,106,242,31,113,228,61,85,136,15,201,255,186,111,201,221, 98,239,205,9,220,200,126,16,175,66,224,217,31,28,222,39,186,141,79,124,55,4,65,64,20,69,224,249,204,248,226,25,19,0,146,36,193,130,5,11,96,231,206,157,120,5,32,5,13,51,234,228,63,85,86,129,218,85,250,123,142,163,134,52,105,53,109,30,11,8,22,94,180,186, 69,167,59,108,247,17,227,239,119,23,59,124,158,18,71,144,124,31,176,216,5,127,184,217,235,35,127,213,71,254,185,151,124,245,120,74,236,14,103,192,102,39,127,238,36,191,23,200,203,245,33,163,79,191,255,164,39,78,100,68,4,208,191,23,165,223,115,28,23,149, 98,74,172,103,219,16,253,253,16,121,13,240,60,55,208,187,125,184,47,210,19,31,32,6,191,55,62,40,31,234,217,58,216,79,12,126,127,124,64,234,27,58,24,31,34,251,31,143,13,74,160,74,42,168,106,82,188,80,113,64,182,199,62,23,21,12,60,143,194,0,65,238,186, 235,46,56,243,204,51,11,75,0,80,15,98,243,230,205,176,123,247,110,188,2,144,2,119,1,136,53,182,130,215,95,233,12,19,207,189,44,212,228,173,180,58,197,202,80,163,183,130,220,41,85,254,74,23,253,121,88,180,11,1,135,207,234,34,247,142,155,23,121,142,136, 2,96,138,129,69,4,134,142,184,249,148,65,101,16,6,134,52,115,246,143,108,84,168,251,168,94,8,212,2,4,57,203,72,132,194,2,85,9,43,48,177,16,149,135,163,253,210,0,177,243,251,251,119,69,14,202,49,101,119,223,206,200,174,72,111,124,199,240,193,248,142,129, 61,145,61,145,158,196,190,200,65,169,15,18,32,227,201,71,10,157,190,190,190,76,62,122,50,135,213,106,197,179,143,20,4,212,163,119,4,108,78,95,133,179,212,225,183,214,16,35,223,20,168,118,53,187,66,182,6,242,179,42,209,42,148,147,159,7,136,23,109,103, 134,29,52,226,57,143,68,8,104,100,64,101,170,153,121,211,28,36,163,239,144,248,136,141,254,8,212,229,55,53,195,71,249,183,250,0,172,34,93,110,0,135,197,99,117,184,253,92,136,236,106,125,113,93,128,236,3,199,62,59,93,14,160,75,22,170,162,41,137,136,220, 79,94,123,7,118,69,118,70,251,19,27,15,109,26,220,60,180,63,182,190,111,199,240,150,222,29,195,187,162,125,137,94,37,161,226,69,131,20,4,130,32,20,166,0,64,144,124,196,234,18,121,111,153,163,140,24,246,70,226,197,183,133,155,188,157,158,18,71,139,167, 212,81,103,243,136,101,196,192,219,233,58,57,91,199,39,47,69,214,152,113,87,228,164,209,147,227,202,191,221,190,150,133,159,121,36,16,193,34,123,138,170,141,8,151,79,121,222,89,248,160,51,96,13,186,195,246,54,142,227,22,53,31,83,206,142,131,42,107,74, 108,80,58,56,124,48,182,131,8,130,181,68,24,172,233,221,54,188,234,224,166,129,13,228,247,59,134,14,196,162,120,117,33,8,10,0,4,201,10,44,78,17,136,177,175,40,170,115,183,21,143,241,141,35,6,127,188,191,202,213,78,60,251,26,171,67,244,208,117,111,234, 201,51,239,151,122,242,228,171,36,43,255,222,165,206,115,180,145,156,0,85,86,62,30,74,16,44,14,161,36,88,235,46,9,53,120,38,214,207,44,97,130,66,142,41,82,124,88,222,49,176,59,178,238,208,150,161,119,14,174,31,120,107,207,234,222,213,253,187,34,91,163, 125,137,56,94,133,8,130,2,0,65,210,14,241,226,93,129,42,87,115,89,87,96,2,49,246,83,194,77,158,241,174,176,189,145,24,123,47,13,185,39,13,125,242,149,136,224,18,119,106,202,32,121,252,20,250,98,63,72,254,159,227,192,98,115,137,245,37,173,254,250,178, 206,192,177,116,73,65,138,169,82,164,55,190,109,96,119,116,21,17,3,43,14,172,31,120,125,255,218,190,247,250,118,70,246,107,170,134,199,18,65,80,0,32,136,97,131,239,41,110,241,117,86,116,7,166,149,118,4,102,4,106,220,227,236,94,177,150,174,211,83,207, 158,101,185,163,177,79,175,46,24,17,6,170,66,4,193,136,191,79,69,129,51,96,109,116,19,241,85,57,33,120,50,21,15,241,65,233,16,17,0,171,247,173,233,123,109,247,202,158,151,247,174,233,127,171,127,231,240,238,195,165,147,8,130,160,0,64,144,79,197,225,179, 90,66,77,158,182,154,41,225,217,229,221,193,185,129,26,215,68,135,223,86,205,11,192,214,234,21,98,240,229,4,121,197,49,73,45,227,162,128,69,90,62,88,70,224,69,190,40,220,232,153,83,210,234,155,211,117,106,205,151,227,67,82,127,255,142,200,187,251,214, 246,189,176,107,101,239,243,68,24,188,213,179,117,168,23,143,30,130,160,0,64,16,98,52,56,8,84,187,43,171,38,21,205,168,28,87,180,176,180,195,63,195,85,100,107,33,30,62,71,13,62,245,240,165,40,122,247,57,33,10,84,141,136,51,162,12,70,42,8,120,129,247, 133,26,61,179,138,91,125,179,58,79,169,185,53,62,40,237,57,184,113,240,181,157,111,31,122,122,199,138,131,47,238,93,219,191,70,138,200,168,228,16,20,0,8,82,40,208,44,125,226,221,119,86,79,14,45,168,28,31,92,66,4,192,100,155,91,244,209,144,190,146,80, 208,195,207,87,65,32,242,101,101,93,129,147,43,198,7,79,158,116,126,163,210,191,43,178,234,192,250,254,167,55,191,180,239,137,237,111,28,92,49,124,48,62,132,71,13,65,1,128,32,121,6,241,234,173,229,93,129,201,213,147,195,75,171,38,135,150,248,43,156,99, 137,65,224,169,193,167,158,254,199,91,221,34,121,42,8,98,35,75,6,28,8,222,50,199,216,64,181,107,108,243,194,242,27,134,246,199,182,31,218,52,248,236,150,87,246,63,178,245,213,3,47,244,110,27,234,193,35,134,160,0,64,144,92,53,250,33,155,181,106,98,104, 74,195,156,210,19,43,186,3,199,186,66,246,54,218,181,134,54,153,145,98,133,93,138,135,106,0,88,62,7,125,81,236,94,75,117,245,148,208,133,181,211,139,47,140,13,36,246,237,93,211,247,252,150,151,247,255,105,235,43,251,159,233,221,62,124,16,15,24,130,2, 0,65,178,28,171,75,132,138,238,224,148,230,99,202,78,174,153,86,124,2,17,1,109,244,97,79,155,235,96,166,62,242,105,208,74,1,53,154,20,133,188,200,151,84,79,10,157,81,59,181,248,140,88,63,17,3,107,251,254,78,196,192,31,54,60,179,231,133,161,3,177,126, 60,90,8,10,0,4,201,18,232,112,153,146,86,127,203,152,37,21,167,212,78,15,159,234,43,119,78,160,195,102,104,184,55,49,92,200,70,95,251,88,215,192,145,185,1,159,82,21,199,29,233,39,252,65,99,97,238,99,191,47,136,163,166,106,32,29,22,3,22,34,6,38,134,206, 37,98,224,220,73,231,55,108,223,181,178,247,209,13,207,238,249,253,214,127,236,127,41,129,9,132,8,10,0,4,201,12,129,106,87,81,211,130,178,165,228,117,78,176,214,51,87,180,243,118,37,126,56,188,159,127,166,156,118,197,35,126,234,145,175,234,200,215,164, 81,255,192,170,243,28,207,70,240,114,35,95,217,48,31,78,36,63,23,152,6,160,163,71,121,78,132,15,154,10,115,108,59,10,237,221,203,141,180,243,213,228,15,189,39,253,170,30,249,154,28,240,155,220,238,225,247,161,191,232,164,63,238,200,215,252,16,14,76,12, 140,44,23,217,60,150,234,230,5,101,87,146,235,237,202,254,157,195,43,183,188,178,255,247,239,63,185,235,255,246,174,233,95,143,205,135,16,20,0,8,146,102,104,136,191,114,124,209,180,214,165,21,231,84,79,14,159,236,240,91,203,21,73,97,235,250,137,161,220, 117,200,14,27,87,149,189,20,106,222,143,24,117,129,23,153,1,183,10,54,176,11,14,242,114,130,83,116,147,151,7,156,150,145,175,228,247,118,209,69,94,78,246,231,54,242,119,173,188,29,44,188,13,68,242,239,69,222,194,182,65,223,135,126,165,191,255,240,84, 1,250,94,146,26,63,34,6,36,37,193,246,35,174,198,200,207,19,144,80,98,16,147,163,16,87,34,16,37,175,136,60,4,195,210,0,68,229,225,35,223,199,200,207,227,74,148,189,36,34,38,152,136,208,180,35,194,128,10,147,195,47,14,248,156,59,71,116,153,224,240,50, 146,167,196,209,61,238,140,186,238,174,147,107,110,221,255,126,255,51,235,158,220,245,155,141,207,237,125,98,232,64,108,24,239,82,4,5,0,130,152,136,159,120,251,205,243,203,78,110,59,190,234,34,127,149,115,58,53,42,82,156,24,168,33,41,183,12,61,53,240, 212,219,166,70,158,188,168,129,164,6,145,26,106,106,196,221,86,31,248,172,69,16,176,133,193,79,94,65,242,242,218,130,228,103,65,112,89,188,224,32,70,222,33,184,70,12,120,246,64,141,125,156,136,132,40,17,3,84,16,12,36,122,161,63,209,3,125,241,131,208, 27,219,15,189,228,43,253,126,80,234,35,127,62,200,4,133,60,50,45,136,70,38,4,242,226,217,139,203,137,200,193,225,4,66,178,187,142,146,86,255,241,229,93,129,227,39,95,212,180,113,203,203,251,126,191,246,137,93,191,221,245,78,207,90,140,10,32,40,0,16,68, 39,116,132,108,221,244,240,216,214,99,43,47,172,158,28,90,238,8,216,202,233,186,126,114,125,54,55,60,122,106,232,15,123,194,2,47,48,239,220,111,13,16,195,94,12,197,142,10,40,118,86,64,152,124,45,178,151,48,35,239,182,248,178,206,184,31,13,52,170,144, 140,74,184,161,232,83,143,137,10,195,210,32,19,1,135,162,251,224,96,108,15,236,143,238,130,253,145,157,228,251,189,76,48,68,165,33,34,12,164,145,72,133,192,162,31,84,24,112,89,42,10,180,145,4,83,57,14,96,115,139,141,29,39,85,223,66,68,234,151,246,172, 234,125,226,189,191,238,248,229,166,23,246,254,45,54,32,73,120,55,35,40,0,16,228,40,176,185,45,98,219,241,149,75,90,22,149,127,190,180,221,191,132,120,251,22,230,237,15,102,239,115,84,101,198,254,131,176,183,133,183,18,99,238,133,32,49,236,165,206,106, 40,119,213,66,133,187,142,25,123,191,173,136,9,129,130,19,116,192,51,129,67,95,101,206,154,143,252,25,53,250,3,82,47,28,136,238,134,189,195,219,97,247,240,86,216,51,188,13,14,196,118,195,64,188,7,98,106,116,68,68,37,151,67,4,58,102,49,203,68,1,91,34, 24,102,121,20,118,218,112,168,114,124,240,228,254,221,205,239,110,120,102,207,47,222,125,120,219,3,125,59,177,156,16,65,1,128,32,159,136,183,220,233,239,62,181,230,204,134,185,165,159,11,214,184,199,43,172,13,111,118,122,251,204,179,39,70,139,126,165, 30,170,203,226,33,94,124,13,51,242,53,238,102,168,242,52,66,137,163,146,133,239,185,2,203,162,215,245,32,226,45,44,42,66,95,45,254,177,71,126,78,151,19,168,40,216,53,180,25,182,15,109,128,29,67,155,96,127,100,23,12,38,122,89,110,2,93,62,17,88,126,67, 22,69,9,104,84,32,166,0,93,224,112,6,109,93,19,207,171,255,97,251,9,85,55,111,123,253,192,253,111,63,184,229,87,123,86,245,174,199,51,142,160,0,64,16,66,105,135,191,178,109,105,229,197,77,11,202,46,118,133,237,53,244,225,153,109,107,251,116,189,94,30, 49,248,52,169,206,107,13,66,153,171,6,106,61,45,80,231,109,133,74,119,3,11,227,179,76,123,196,52,232,146,66,141,167,153,189,166,195,18,246,51,154,95,176,39,178,13,182,13,188,15,91,6,214,18,81,176,17,122,98,7,88,18,98,182,9,2,85,86,201,181,172,130,96, 227,203,91,22,149,127,185,97,78,201,23,247,174,238,123,248,173,7,54,255,100,211,11,251,94,199,51,140,160,0,64,10,211,240,183,251,155,198,159,93,127,69,195,236,146,243,45,78,177,72,138,200,89,19,230,167,235,213,52,73,141,26,125,106,76,168,193,167,222, 125,189,183,13,26,253,29,196,224,55,178,53,123,100,244,241,90,3,236,117,56,82,64,171,14,246,68,182,195,150,254,181,176,190,111,37,108,31,92,15,61,241,253,144,80,226,236,220,209,232,66,166,133,153,54,178,60,192,113,224,170,24,23,60,159,188,206,221,249, 86,207,99,171,255,188,253,135,155,95,218,247,52,54,169,66,80,0,32,5,65,205,212,112,71,251,241,85,95,32,222,208,121,162,93,112,209,48,127,54,24,126,133,121,249,9,182,158,79,203,235,106,60,245,196,216,119,194,24,255,56,168,246,52,129,223,22,194,147,151, 133,216,4,7,139,196,208,215,188,202,147,32,38,71,96,231,240,38,34,6,222,133,245,189,239,176,101,131,129,68,15,75,44,20,57,11,203,35,200,84,116,128,38,13,178,101,45,14,120,34,2,78,168,158,20,58,225,208,230,193,103,222,249,195,214,123,214,60,182,243,81, 9,133,0,50,138,112,154,150,153,82,149,68,34,1,45,45,45,176,117,235,86,60,11,5,66,195,220,210,174,241,103,213,93,91,49,54,120,54,199,113,54,250,32,204,212,245,119,24,234,225,203,154,196,18,212,168,129,175,243,142,129,214,224,4,104,246,119,67,185,179,134, 53,185,65,114,27,90,126,184,169,255,61,88,211,243,79,216,208,255,46,171,60,160,125,14,104,100,128,190,50,189,84,32,88,121,16,201,235,208,166,161,23,222,249,195,150,239,172,121,124,23,10,129,2,226,231,63,255,57,124,238,115,159,195,8,0,146,159,148,119, 7,219,102,92,209,114,35,241,120,206,38,191,181,102,58,177,143,26,125,154,64,70,215,242,195,142,114,102,236,59,138,166,64,163,175,147,133,150,145,252,130,10,187,9,197,115,216,139,246,31,216,54,180,1,222,59,180,130,9,130,93,195,91,88,51,35,26,21,160,149, 27,153,16,3,180,137,21,125,249,170,156,115,22,220,220,57,167,251,244,186,231,87,254,97,235,119,215,62,182,243,81,92,26,64,48,2,128,228,36,165,29,254,134,241,103,213,95,223,48,187,228,2,226,229,56,89,75,213,12,57,252,180,60,143,173,9,147,7,61,205,206, 111,13,142,135,238,208,116,104,240,117,20,100,73,30,146,204,243,216,49,184,9,222,235,89,1,239,30,122,141,124,191,145,137,129,100,231,68,107,198,34,3,201,136,128,0,135,182,12,254,253,173,223,109,254,214,170,63,109,127,6,207,22,70,0,48,2,128,228,4,197, 99,124,165,147,206,111,184,174,126,86,201,101,162,93,240,81,143,63,19,94,63,205,220,79,168,113,22,222,15,59,202,160,189,104,50,51,250,77,196,211,167,235,198,72,129,123,63,228,186,160,185,29,244,181,180,230,28,216,57,180,9,222,57,248,50,188,123,240,53, 246,125,76,137,177,168,192,104,55,102,58,28,17,240,87,56,23,30,243,149,174,133,99,22,87,252,133,8,129,187,54,189,136,85,3,8,10,0,36,75,241,150,59,61,99,151,215,94,209,177,172,234,58,187,215,82,154,136,140,254,52,62,154,232,37,17,79,159,38,244,209,208, 239,184,192,108,152,88,60,7,90,2,227,88,73,25,130,124,26,180,148,147,190,142,171,61,15,54,247,175,133,183,15,190,68,196,192,171,176,55,178,157,37,134,90,121,219,168,86,19,200,68,4,16,5,11,21,227,130,203,42,199,23,29,183,253,141,131,247,255,227,255,173, 251,230,222,213,125,216,71,0,49,71,4,227,18,0,98,20,155,91,228,186,79,171,61,103,252,57,245,95,117,6,108,99,18,81,153,149,61,141,38,178,38,51,195,111,23,29,172,84,111,66,241,92,230,237,211,158,250,8,162,23,90,98,248,126,239,219,176,98,255,179,176,166, 231,77,232,143,31,202,204,18,1,121,43,139,93,160,145,129,193,141,47,236,253,241,171,63,93,255,253,190,157,195,7,240,12,229,62,184,4,128,228,166,122,228,57,104,154,95,58,119,218,101,45,183,23,213,185,231,176,114,190,81,108,224,115,216,219,167,195,117, 104,95,253,113,225,153,48,169,100,1,43,7,67,16,83,196,173,224,128,46,34,36,233,235,80,108,31,91,34,88,177,239,89,216,54,248,62,200,138,196,38,52,142,74,84,96,164,124,144,220,115,158,49,139,43,190,82,51,37,124,206,170,63,109,187,235,141,223,108,250,69, 98,88,198,76,65,4,35,0,200,232,81,214,17,168,159,126,69,203,127,84,79,14,93,192,38,163,37,70,111,20,47,13,239,211,108,110,155,96,103,117,250,211,75,23,179,7,52,134,248,145,209,17,158,42,235,49,240,234,158,167,88,242,96,50,42,96,97,249,2,163,5,47,112, 32,58,4,232,219,54,252,218,235,247,109,188,109,237,99,59,254,166,225,240,65,140,0,96,4,0,73,39,142,128,213,49,229,162,166,171,59,78,170,190,73,180,241,193,209,92,227,167,165,123,180,132,143,134,245,103,150,45,133,105,101,139,89,184,31,65,70,213,107,2, 158,117,33,164,47,26,21,120,99,223,179,240,218,190,191,179,121,5,244,79,105,84,32,221,203,3,108,240,208,144,12,158,50,199,212,197,183,117,63,53,102,113,249,111,95,253,217,250,219,247,172,238,221,132,103,8,65,1,128,152,251,208,35,207,179,182,227,171,142, 157,114,73,211,157,254,42,215,56,106,248,71,35,179,255,112,152,159,122,93,229,174,122,152,78,140,254,228,146,5,184,182,143,100,5,116,254,195,146,154,179,96,126,213,41,176,234,224,171,240,210,158,199,224,253,222,149,68,172,198,193,202,219,217,108,130, 116,114,184,98,160,102,74,248,220,242,238,224,177,171,254,180,237,155,43,126,181,241,135,209,254,68,28,207,14,130,2,0,49,76,121,87,160,102,234,231,155,255,139,60,100,206,163,15,155,209,104,219,75,13,63,13,243,211,245,213,38,127,23,204,174,56,1,198,133, 102,18,239,202,158,215,199,90,147,162,160,197,7,65,27,62,8,234,240,33,80,135,246,147,239,15,145,159,13,177,68,48,206,230,1,222,83,10,66,184,9,132,162,6,0,193,146,241,125,86,135,183,129,58,176,46,249,53,222,75,63,4,112,130,131,236,107,17,112,116,64,146, 189,152,124,31,6,206,234,7,206,226,205,203,243,70,43,4,104,226,41,125,109,236,95,5,47,238,250,43,188,115,240,21,24,150,6,216,53,43,164,57,79,128,54,12,226,120,46,56,225,156,134,187,27,102,151,158,241,218,47,215,223,180,230,177,157,207,2,46,11,32,40,0, 16,61,216,189,22,24,127,78,253,149,19,206,174,191,77,176,9,197,163,17,238,215,52,34,48,212,24,123,160,142,13,207,132,121,21,203,160,45,56,41,255,12,61,49,242,42,49,242,218,192,94,80,250,119,18,3,186,135,188,246,130,22,33,198,62,54,64,108,104,12,52,37, 145,108,30,127,56,4,147,60,64,201,223,138,86,224,125,149,96,169,39,162,168,101,49,112,206,81,238,96,72,206,147,188,239,89,144,118,61,6,10,49,254,154,52,4,201,46,79,28,251,239,200,126,211,96,56,79,30,51,196,8,82,227,207,89,131,192,59,136,40,112,84,0,231, 170,6,222,89,65,4,66,25,17,8,116,255,243,163,237,50,237,40,73,95,123,134,183,194,139,187,31,101,73,131,180,29,49,93,26,16,56,49,141,167,68,99,73,184,238,98,251,132,37,183,143,125,166,101,81,197,207,94,188,103,205,109,135,54,15,238,195,167,25,242,73,96, 18,32,242,137,212,207,44,233,158,117,117,235,119,138,26,60,199,80,195,79,31,46,105,245,34,137,65,97,137,125,162,131,101,243,207,175,56,25,234,125,237,249,97,236,35,61,160,246,239,2,165,119,27,40,61,196,75,238,219,65,60,251,3,196,208,247,3,80,67,79,62, 59,179,155,212,75,228,5,90,94,49,98,240,185,127,27,35,1,69,102,34,129,247,148,128,109,220,153,96,29,179,100,84,62,143,210,255,30,36,214,255,63,80,250,86,38,141,54,77,126,251,183,161,110,109,68,16,168,116,44,30,19,15,236,51,83,113,32,88,147,194,192,22, 38,98,160,18,120,119,29,8,238,6,224,220,181,192,211,101,30,222,146,243,231,159,230,9,188,188,231,49,120,101,207,147,112,48,186,55,237,66,224,72,84,194,41,66,180,47,177,253,205,255,221,124,243,91,15,108,126,96,52,19,117,145,163,39,147,73,128,40,0,144, 143,123,253,214,233,151,183,220,216,121,114,205,45,228,183,78,57,158,222,117,126,106,8,98,74,148,77,223,155,24,158,11,243,42,79,102,157,217,114,214,216,75,81,98,236,119,131,122,104,19,40,7,55,18,131,191,37,233,217,83,175,94,145,62,102,232,133,15,60,123, 67,22,89,34,54,85,2,107,203,66,112,76,191,18,64,180,165,237,243,73,59,31,129,248,250,255,38,239,25,37,94,189,25,221,20,53,38,8,168,48,208,52,153,9,5,118,124,200,245,192,219,138,153,32,224,189,77,32,120,90,200,247,181,44,130,144,171,208,137,132,47,239, 126,156,69,5,14,68,119,131,133,8,1,49,205,66,128,86,11,88,93,34,236,124,187,231,15,47,222,179,230,166,61,171,122,241,129,139,2,0,5,0,242,137,94,255,100,226,245,255,128,120,253,83,105,134,113,58,175,13,186,198,31,87,34,96,23,92,48,169,120,30,44,168,58, 149,117,97,203,57,131,31,31,2,149,122,246,251,215,129,188,255,125,80,123,182,38,67,251,114,44,121,131,209,7,188,48,226,213,167,53,51,92,99,251,98,169,159,5,206,121,55,166,69,4,72,219,30,76,26,127,230,241,167,217,131,61,34,10,164,164,40,160,83,251,172, 1,224,93,213,32,120,199,0,239,239,32,162,160,25,56,123,113,206,93,51,131,137,62,120,137,136,128,164,16,216,53,146,35,144,222,227,105,113,8,32,199,213,253,111,254,118,211,87,87,220,183,241,23,180,116,23,65,1,128,2,0,1,187,207,98,153,126,89,203,87,70,188, 126,91,58,189,254,164,225,143,178,53,254,241,197,179,97,97,213,114,168,201,165,198,61,74,130,133,241,149,189,239,129,188,119,53,40,135,182,36,215,237,229,4,51,242,156,32,154,231,217,235,20,36,214,214,165,224,152,125,141,169,219,149,247,62,3,177,85,119, 16,227,111,251,140,112,127,250,174,28,38,10,84,137,232,1,133,69,9,104,82,33,239,170,1,193,215,14,66,112,44,240,222,22,224,44,254,220,17,2,82,31,60,191,243,47,68,8,60,2,61,177,253,172,233,80,58,155,10,113,52,26,224,20,97,247,59,61,15,191,112,207,154,27, 48,26,128,2,0,5,64,129,83,55,163,120,236,236,107,218,126,72,188,254,89,233,246,250,233,26,63,71,140,71,87,104,42,44,169,57,27,26,188,185,177,198,175,13,29,0,121,223,26,144,119,175,4,101,223,58,80,7,247,178,36,189,35,6,159,134,243,51,60,83,254,35,18,43, 17,1,231,220,47,129,165,121,161,41,91,84,163,187,33,186,226,242,100,162,95,54,173,201,211,124,2,85,102,75,7,52,209,144,179,133,88,84,64,8,78,0,33,48,150,45,25,192,40,246,238,215,75,111,252,0,60,179,227,97,120,121,207,227,44,58,64,219,89,115,105,76,136, 28,137,6,236,253,231,253,155,110,124,237,222,245,191,197,167,96,225,10,0,172,2,40,80,68,27,15,51,174,28,115,245,184,51,234,190,78,108,190,59,157,165,125,180,129,15,29,199,75,27,167,44,37,134,191,163,104,74,182,155,124,22,202,151,119,173,36,175,183,217, 90,190,26,237,99,63,167,161,104,160,198,198,154,173,35,132,147,137,117,177,55,127,7,98,245,100,224,236,62,227,194,109,211,175,64,139,31,34,23,77,150,117,90,164,198,93,16,200,39,78,46,119,104,137,94,144,15,188,12,210,254,23,129,19,93,44,58,32,6,199,129, 16,154,2,130,183,213,164,156,5,243,161,61,45,78,107,188,28,102,149,31,7,79,110,127,16,86,236,125,26,98,106,20,236,172,228,213,124,97,73,251,119,240,2,87,58,253,242,150,251,203,58,252,139,94,184,103,205,245,61,91,134,112,174,64,33,218,1,60,4,133,71,73, 171,175,122,254,151,59,127,76,110,254,19,232,196,190,116,101,248,83,163,159,80,226,80,233,174,103,134,127,74,233,49,105,245,108,140,217,124,149,24,250,13,32,239,124,27,228,29,255,4,133,8,0,234,73,3,207,143,100,170,231,208,248,96,193,194,202,10,19,239, 255,13,108,221,203,141,121,255,131,27,65,38,6,21,68,103,246,127,110,150,111,33,142,152,76,34,226,6,55,64,188,127,13,112,219,126,207,202,13,133,192,56,16,195,211,129,247,119,146,191,154,125,109,163,75,156,85,112,193,152,27,153,16,120,108,235,253,176,234, 224,107,108,41,137,46,151,153,13,237,36,72,69,127,237,180,226,243,74,59,2,211,94,250,193,154,47,174,126,100,199,83,248,116,68,1,128,228,49,227,207,170,63,101,202,165,77,63,178,185,197,242,248,80,122,234,250,233,58,127,76,142,128,223,86,4,39,212,93,0, 243,43,79,33,222,76,118,26,16,229,208,38,144,183,173,32,70,255,13,150,177,79,67,251,28,109,174,195,146,206,156,57,123,158,105,159,0,105,211,11,96,235,56,201,80,179,32,105,207,83,160,201,195,89,105,48,63,43,18,66,147,21,57,214,159,159,136,129,200,110, 80,134,182,178,42,6,206,81,14,98,209,4,16,139,103,131,64,196,64,182,69,6,104,123,235,171,186,238,130,183,15,188,4,143,18,33,176,117,96,93,218,74,7,105,3,33,209,198,55,46,188,181,235,137,170,201,161,187,158,251,246,123,183,199,250,19,18,32,40,0,144,252, 193,225,183,218,231,223,216,241,141,150,197,21,215,73,177,244,181,241,165,235,252,2,47,194,236,242,227,225,184,186,243,32,100,47,203,186,99,65,203,242,228,109,175,129,180,237,85,22,222,167,158,254,7,70,223,149,31,39,156,70,1,250,118,50,81,35,132,155, 117,30,40,137,252,251,55,71,140,104,46,195,37,207,237,72,254,130,22,223,15,137,29,127,6,105,215,163,192,19,175,91,12,77,5,161,120,14,17,3,237,144,61,185,28,0,227,194,179,160,189,104,50,188,176,235,47,240,212,246,135,160,55,118,0,236,162,211,244,57,3, 170,76,187,110,42,92,235,146,202,91,194,77,222,25,79,127,227,221,203,118,175,236,125,31,159,154,40,0,144,60,160,118,122,113,251,220,47,181,221,27,172,245,76,75,215,184,222,195,225,254,102,127,55,156,84,127,49,180,4,198,101,213,49,208,18,195,32,239,124, 139,121,197,52,131,95,141,246,19,131,64,215,144,173,249,99,244,63,102,244,104,101,130,114,96,131,110,1,160,198,246,146,227,180,55,253,37,127,163,31,30,33,255,137,35,145,129,93,16,223,250,0,112,59,254,200,18,8,197,146,57,44,50,64,163,4,217,0,13,255,47, 172,58,29,198,135,231,192,163,91,255,7,94,221,251,20,168,170,98,126,75,108,13,88,23,193,64,181,123,206,169,255,61,245,229,21,247,109,188,122,197,125,27,30,208,176,90,16,5,0,146,187,76,185,164,233,28,242,250,33,199,113,193,116,24,255,195,225,254,160,189, 24,150,54,158,13,115,42,78,28,149,46,103,71,45,76,136,135,79,141,190,188,245,53,80,6,118,143,60,255,109,57,29,222,79,197,241,165,29,8,117,159,219,216,62,114,0,35,201,210,191,124,61,64,71,34,3,26,185,62,214,130,220,183,10,248,45,191,101,149,4,98,217,98, 16,139,38,101,69,229,3,29,58,68,243,3,166,148,44,128,63,111,254,37,108,32,251,153,142,101,1,90,2,204,9,92,104,198,149,99,126,87,60,198,55,245,239,119,190,123,83,12,7,11,161,0,64,114,11,135,223,106,157,119,99,199,183,90,22,149,95,43,199,20,80,20,243,165, 60,157,120,70,153,89,126,44,156,88,119,17,123,72,101,133,183,47,69,147,33,254,13,207,129,76,188,125,250,123,186,38,158,83,137,124,102,69,1,232,16,33,221,81,147,129,100,169,93,129,28,43,42,116,56,242,210,148,56,155,115,32,239,123,30,120,119,61,136,165, 11,192,82,58,63,43,162,2,99,2,227,225,134,241,157,240,236,142,63,194,147,219,126,7,3,82,31,216,89,14,131,121,203,2,218,72,130,96,227,220,210,171,3,213,174,113,79,127,99,213,37,187,87,246,108,192,167,42,10,0,36,7,168,24,27,172,59,230,150,174,95,21,213, 187,231,198,233,0,31,147,147,252,105,223,126,218,197,175,202,211,4,167,212,127,14,186,66,211,178,226,115,171,196,195,151,54,60,11,210,230,151,64,233,219,201,50,168,57,161,64,188,253,127,19,163,49,160,164,14,143,247,41,48,221,196,3,140,36,173,170,195, 91,33,190,225,167,32,109,123,8,132,240,116,176,16,177,43,4,186,51,251,208,230,44,176,168,250,12,232,14,205,128,63,110,190,23,222,218,255,2,139,4,136,38,71,42,232,12,144,64,141,123,214,41,63,156,242,210,63,254,223,186,207,191,253,224,150,71,240,233,138, 2,0,201,98,58,150,85,47,154,115,93,219,175,68,187,80,145,142,44,127,154,228,39,242,86,88,90,123,46,28,87,115,46,56,196,204,175,159,43,251,214,66,98,221,147,32,109,127,29,52,186,182,95,144,222,126,154,188,226,66,103,164,146,64,83,162,32,239,122,28,228, 189,127,7,193,223,5,150,138,227,64,12,207,98,83,14,51,69,137,179,18,174,232,184,3,94,223,251,52,252,105,243,47,216,124,1,179,147,4,105,244,144,23,185,146,185,215,183,255,185,168,222,243,181,231,190,189,250,235,216,70,24,5,0,146,109,207,41,145,135,89, 95,28,115,237,248,115,234,239,150,227,138,133,222,184,230,123,253,81,168,247,181,193,233,141,87,66,19,121,8,102,214,177,85,65,222,190,2,18,107,159,0,121,247,187,44,108,203,137,246,60,77,232,67,50,175,133,132,145,94,8,26,40,61,111,131,220,243,38,155,90, 200,132,64,233,66,214,150,56,83,208,254,26,99,130,227,224,143,155,238,101,73,130,60,249,37,154,88,185,65,171,4,36,69,230,186,78,173,185,51,80,227,234,122,234,246,149,151,13,236,137,244,225,69,129,2,0,201,2,188,101,14,251,130,155,59,127,84,63,171,228, 82,186,118,103,118,55,223,195,94,63,173,233,63,150,120,254,214,76,38,133,201,9,144,182,188,76,12,255,227,108,0,15,11,81,211,48,191,197,137,23,2,50,58,81,17,226,245,83,31,91,29,222,6,241,117,63,128,196,182,63,128,165,124,9,17,3,199,103,108,56,145,207, 90,4,23,181,222,12,93,69,83,225,255,54,253,12,246,71,118,153,26,13,160,207,20,250,108,169,28,95,116,250,242,159,78,107,122,250,27,239,158,187,237,245,3,107,240,122,64,1,128,100,144,146,86,95,213,226,219,198,222,31,106,242,206,137,13,152,155,229,175,129, 10,81,57,2,245,222,86,56,189,233,139,208,156,65,175,159,38,242,73,27,95,32,134,255,49,80,14,109,102,51,5,64,180,99,144,26,201,28,212,203,166,203,3,137,67,16,223,244,75,144,118,253,21,68,226,141,91,171,78,206,88,194,224,132,226,185,208,232,239,132,255, 219,248,51,120,109,239,223,76,207,13,160,121,1,238,98,251,184,19,190,61,241,185,127,252,100,221,69,111,63,184,229,113,188,16,80,0,32,25,128,120,252,83,150,220,49,246,119,86,167,88,111,118,47,127,218,191,159,178,184,250,76,88,86,127,81,230,58,249,73,49, 72,108,120,6,18,107,30,99,237,121,233,240,29,92,223,71,178,43,40,32,178,78,137,154,52,8,137,173,191,3,121,207,83,172,132,48,83,66,128,70,3,46,105,187,5,218,130,19,225,225,77,63,131,190,248,65,83,239,95,90,42,200,139,92,241,156,235,218,30,241,150,57,174, 123,233,135,107,127,68,91,11,35,40,0,144,209,82,250,231,212,47,159,117,85,235,47,21,89,243,72,38,175,247,71,229,97,150,96,116,102,243,85,208,85,148,161,12,127,69,34,30,255,243,16,95,253,103,80,15,109,97,157,237,10,59,155,31,201,126,33,32,36,133,128,28, 25,17,2,79,130,165,108,41,88,170,79,203,200,210,192,180,210,69,208,232,235,128,7,214,255,16,86,30,124,5,108,130,221,180,113,195,52,47,64,83,20,97,210,249,141,63,116,6,109,245,207,222,189,250,122,226,132,96,118,32,10,0,36,189,207,24,14,230,94,215,126, 67,247,242,154,111,43,9,21,204,84,222,138,166,176,218,254,201,37,11,136,241,255,34,243,36,70,29,77,3,105,243,139,16,95,245,39,80,14,172,103,99,94,1,13,63,146,147,66,32,202,132,128,180,247,239,96,169,60,145,188,78,30,245,100,193,176,163,28,174,234,190, 11,158,218,246,32,252,117,235,111,32,65,238,111,179,114,120,104,94,64,180,63,1,173,75,43,175,13,84,187,106,30,185,225,159,23,13,29,136,245,227,5,128,2,0,73,3,118,175,133,159,127,83,231,247,91,143,171,184,58,62,64,231,160,155,103,252,227,74,140,205,33, 95,222,120,57,27,222,147,9,104,171,222,248,59,191,39,158,211,106,182,198,143,137,125,72,174,11,1,16,93,160,73,3,144,216,248,11,144,118,63,9,214,154,211,193,82,126,220,168,150,15,210,68,192,37,53,103,65,131,191,29,254,247,253,123,96,251,224,6,112,178, 242,93,115,50,104,104,135,209,226,86,255,201,167,253,116,90,249,223,239,92,121,250,174,183,123,182,227,201,207,13,120,60,4,185,129,59,108,119,157,242,227,169,15,142,89,90,113,117,172,95,50,209,248,107,16,149,135,160,202,211,0,95,26,251,221,140,24,127, 58,145,47,242,204,93,16,121,234,14,144,247,18,227,111,33,15,71,209,138,39,29,201,19,33,64,252,44,26,17,136,29,128,216,218,239,67,228,141,47,176,78,131,163,77,147,175,11,110,28,119,15,235,220,25,83,34,44,226,103,22,82,68,6,127,165,115,202,9,119,79,124, 174,122,82,104,44,158,116,20,0,136,73,132,155,188,37,203,190,63,249,177,146,86,223,114,51,147,253,84,242,0,136,42,81,242,64,56,14,110,32,15,134,58,111,235,168,126,46,45,210,3,177,87,127,14,195,127,253,50,72,155,95,78,206,114,23,237,120,194,145,60,125, 218,90,200,245,237,2,117,104,19,196,222,189,29,162,111,221,0,74,223,234,81,221,5,151,197,11,23,183,126,5,206,105,254,18,155,218,153,80,205,107,243,79,39,140,210,132,228,147,238,153,252,247,238,229,181,199,224,9,207,126,112,9,32,203,169,28,23,108,56,225, 219,19,255,100,243,88,58,105,9,142,105,55,43,185,241,45,188,141,60,8,174,37,94,255,201,163,251,161,84,5,18,235,158,128,248,202,135,65,29,220,203,178,250,49,179,31,41,28,33,144,92,131,87,14,173,128,104,239,59,96,169,88,10,214,186,243,129,179,133,71,109, 23,230,85,158,4,213,158,70,248,205,186,239,192,174,161,205,166,117,244,164,93,2,121,145,11,205,187,161,227,17,14,224,194,119,254,176,245,247,120,194,49,2,128,232,160,98,92,81,55,49,254,127,183,186,44,157,84,93,155,5,205,242,15,59,42,224,154,238,111,141, 186,241,151,119,175,132,225,71,111,134,232,203,63,1,45,218,155,236,220,199,225,101,136,20,32,35,67,124,18,219,255,4,145,215,47,7,105,251,195,163,58,124,169,193,215,1,55,142,191,7,38,22,207,101,203,128,180,239,135,41,250,94,214,64,73,40,142,57,215,183, 63,48,235,170,214,203,56,108,214,129,17,0,36,53,58,150,85,205,156,117,117,219,195,22,135,80,76,235,110,205,64,99,235,253,195,48,54,60,19,206,111,185,30,252,182,208,168,125,30,109,248,16,196,222,126,0,164,245,79,211,39,4,150,244,33,8,133,38,187,178,68, 193,62,136,173,251,62,155,64,104,109,188,116,212,6,14,121,44,126,184,162,243,14,248,235,150,122,120,116,235,253,192,17,107,77,135,13,25,22,1,10,121,218,104,42,63,229,226,166,159,218,125,22,223,223,191,254,238,221,128,173,2,80,0,32,159,77,247,242,218, 197,243,111,236,120,72,145,84,31,45,245,51,3,154,240,35,171,9,88,90,115,54,156,210,240,121,16,76,170,7,62,26,18,239,255,13,226,111,61,48,18,238,39,134,95,196,203,14,65,62,42,4,104,254,139,8,74,223,187,16,125,235,122,176,84,46,3,107,253,249,228,126,241, 141,198,155,195,9,117,23,66,185,187,22,126,75,68,200,176,52,0,86,19,170,20,52,85,99,101,130,93,167,212,124,139,24,127,239,211,223,120,247,86,13,69,0,10,0,228,223,26,255,147,231,221,208,254,91,41,174,56,53,83,106,252,57,144,212,88,114,189,127,204,141, 44,225,111,180,80,123,183,65,108,197,175,217,148,62,78,176,226,160,30,4,249,44,168,225,213,84,72,108,123,16,148,131,175,129,181,241,115,32,150,204,29,149,183,158,16,158,203,150,6,127,181,230,27,176,99,112,147,105,121,1,180,69,121,215,169,53,95,37,143, 34,247,211,223,88,117,45,21,6,72,118,128,139,175,217,101,252,151,207,163,158,127,66,53,201,248,211,250,254,8,4,108,197,112,117,247,55,71,207,248,107,10,36,86,253,41,153,221,191,125,69,210,235,231,81,107,34,200,209,105,118,158,53,18,82,163,187,33,246, 238,109,16,91,125,39,104,241,3,163,242,214,213,238,38,248,210,216,239,65,119,104,58,68,88,94,128,57,207,161,216,160,68,71,149,95,115,242,15,38,255,212,25,176,98,86,0,10,0,228,99,198,255,2,98,252,31,160,163,124,205,234,238,71,215,251,233,248,222,235,199, 125,15,154,253,163,179,166,72,7,245,12,63,126,43,68,95,189,23,52,57,142,217,253,8,162,251,233,108,5,16,108,172,129,80,100,197,149,32,239,125,122,84,222,214,107,13,192,23,186,238,132,133,85,203,217,8,112,58,10,220,184,83,144,28,36,84,55,189,248,178,19, 191,59,233,94,103,192,134,34,0,5,0,242,33,227,255,43,37,174,8,102,120,254,84,181,83,245,62,177,100,46,92,219,125,55,107,7,58,10,110,63,107,223,27,121,236,43,32,239,94,149,76,242,227,5,60,185,8,98,44,28,144,76,18,140,31,130,216,170,255,76,70,3,18,135, 210,254,174,116,138,224,89,205,87,195,233,141,87,178,126,33,138,102,78,9,50,141,4,148,119,5,47,57,241,187,19,239,117,96,36,0,5,0,26,127,98,252,111,104,167,198,159,55,195,243,167,106,61,70,84,251,162,234,51,224,178,246,219,193,33,186,211,254,25,212,254, 221,16,121,242,118,214,212,71,147,19,201,78,126,8,130,152,248,164,182,176,252,128,100,52,224,11,32,31,120,105,84,222,150,62,71,46,109,191,21,44,188,245,200,132,80,163,208,214,193,101,157,129,75,150,125,119,18,21,1,120,110,81,0,20,184,231,159,80,77,49, 254,84,165,203,154,68,84,251,21,112,102,211,23,129,31,133,250,122,105,195,51,48,252,232,77,32,237,248,103,50,201,15,189,126,4,73,111,52,32,182,15,98,43,191,6,241,247,127,72,110,250,104,218,223,149,246,9,248,98,215,93,224,179,6,217,146,128,25,208,229, 128,178,46,38,2,126,225,12,226,114,0,10,128,194,51,254,203,169,231,47,155,228,249,203,170,68,78,38,15,23,181,222,12,139,171,207,76,251,254,107,241,65,136,190,120,15,68,158,255,30,249,126,8,215,250,17,100,212,158,218,86,246,74,108,123,8,34,255,188,26, 148,129,117,105,127,203,102,127,23,92,59,246,219,80,238,170,101,115,4,76,17,1,67,50,148,19,17,112,252,55,39,220,43,88,208,20,161,0,40,28,227,127,242,188,27,58,126,75,61,127,227,107,254,28,107,235,107,23,157,112,69,231,127,178,25,224,233,70,217,183,134, 117,243,75,172,123,42,25,238,199,12,127,4,201,64,52,192,13,234,192,122,136,190,121,45,72,59,254,152,246,119,164,198,255,186,177,223,129,38,95,39,75,48,54,131,56,17,1,21,227,139,46,153,255,229,142,31,112,216,50,16,5,64,1,24,255,197,243,110,236,248,173, 156,80,172,170,9,198,159,134,228,104,104,142,206,252,238,40,154,146,246,253,79,172,250,51,12,63,241,31,160,246,110,31,169,235,199,155,22,65,50,6,237,27,160,202,16,91,251,61,150,36,168,73,253,105,125,59,218,61,244,170,238,111,30,41,19,52,39,18,32,209, 102,65,87,31,115,75,231,93,40,2,80,0,228,45,237,39,84,205,156,127,83,199,239,21,83,154,252,112,172,198,191,216,81,1,87,119,223,13,13,222,246,180,238,187,22,27,128,232,179,223,134,232,171,63,79,246,43,23,109,120,66,17,36,43,130,1,2,203,13,144,246,60,5, 81,186,36,208,255,94,90,223,206,41,186,225,242,142,59,96,106,233,66,211,68,192,72,179,160,155,137,8,248,42,138,0,20,0,121,71,197,184,96,215,156,107,219,30,86,18,170,215,140,53,255,152,50,12,149,238,6,184,102,236,183,200,215,250,180,238,187,114,96,61, 12,63,118,11,36,54,62,155,44,239,227,48,209,15,65,178,78,7,208,37,129,161,109,172,149,176,180,243,47,105,125,47,171,96,131,75,218,110,129,185,21,39,154,214,48,136,150,8,118,157,82,115,231,130,175,116,94,133,103,19,5,64,62,25,255,134,19,191,61,241,17, 209,33,20,211,113,153,198,141,127,4,234,188,99,88,119,63,26,1,72,39,52,203,63,242,196,215,88,91,95,108,229,139,32,89,14,49,204,160,74,16,95,251,29,136,175,251,46,251,62,109,111,197,137,112,222,152,27,96,81,245,233,16,147,35,198,69,0,249,231,177,33,22, 9,248,225,184,51,235,206,193,147,137,2,32,231,41,170,247,20,19,227,255,103,171,75,172,49,99,176,15,77,190,105,244,117,16,227,255,45,8,164,121,126,120,124,229,31,32,242,194,247,89,71,63,12,249,35,72,206,132,2,216,168,225,196,246,135,33,186,242,86,114, 255,14,167,239,173,200,175,51,155,174,98,149,71,102,137,0,90,34,56,231,186,182,95,117,47,175,93,130,39,19,5,64,206,226,14,219,93,75,254,115,220,255,217,60,150,14,57,110,134,231,63,12,77,254,78,248,66,231,215,217,24,207,116,146,120,239,175,16,123,253, 62,54,196,7,179,252,17,36,231,84,0,209,1,30,144,247,191,4,177,213,95,39,134,85,78,235,187,157,222,116,37,156,88,119,33,139,78,26,21,1,116,88,16,113,150,172,243,110,236,120,176,110,102,241,100,60,151,40,0,114,14,98,244,249,101,223,155,244,235,226,22,239, 44,41,170,24,247,252,21,234,249,19,227,223,69,140,191,53,189,198,95,217,179,138,24,255,95,2,103,177,177,193,36,8,130,228,168,12,176,16,17,176,239,121,72,108,186,47,237,239,181,172,254,98,56,177,246,66,83,34,1,52,79,138,142,67,95,124,219,216,135,43,198, 21,213,227,153,68,1,144,51,208,166,22,243,191,220,241,253,146,54,255,105,52,156,101,134,241,111,58,108,252,211,236,249,131,28,135,232,107,247,210,59,16,147,253,16,36,31,68,128,232,74,142,23,78,115,117,192,17,17,80,119,33,43,79,54,44,2,36,21,236,30,75, 229,177,119,142,251,163,167,196,17,196,51,137,2,32,39,152,117,77,235,245,237,199,85,93,29,31,52,158,128,67,67,106,204,248,119,222,153,126,227,79,72,108,120,22,148,3,27,112,205,31,65,242,70,1,144,199,188,154,128,196,230,251,71,229,237,168,8,88,82,115, 22,203,87,50,42,2,164,152,2,174,144,173,251,196,239,76,124,192,21,182,227,224,0,20,0,217,205,248,179,235,79,27,123,90,237,183,105,93,171,193,187,246,72,182,63,29,205,233,177,6,210,191,243,196,235,151,222,255,27,113,252,45,120,34,17,36,159,16,236,160, 244,188,9,234,224,134,81,121,187,211,26,46,135,37,35,137,129,96,84,4,68,21,40,105,243,47,90,116,107,215,127,243,34,246,8,64,1,144,165,212,205,40,158,52,251,154,214,251,20,73,229,52,205,200,69,159,108,242,83,229,110,128,43,153,231,31,24,149,253,87,122, 54,147,215,86,186,134,129,39,19,65,242,236,81,175,145,103,138,124,224,31,163,246,142,167,55,125,1,230,86,158,4,17,19,170,16,104,52,181,110,102,201,165,243,111,234,188,25,207,37,10,128,172,35,220,226,173,88,250,95,227,126,175,72,154,219,104,163,159,184, 26,133,98,103,37,49,254,255,149,246,82,191,143,8,128,125,235,146,37,127,216,222,23,65,242,14,142,19,65,233,95,51,170,239,121,110,203,117,48,163,108,137,41,29,3,105,203,224,142,147,170,239,162,81,86,60,155,40,0,178,6,79,137,195,190,244,142,113,15,88,157, 98,173,42,27,43,247,163,131,125,252,214,16,92,217,241,95,16,78,115,147,159,127,17,0,125,59,209,246,35,72,222,42,0,1,180,232,94,114,163,199,71,239,45,201,175,11,198,220,4,227,195,179,13,15,16,162,65,85,37,174,192,172,171,90,127,89,59,45,60,14,79,40,10, 128,140,35,218,4,56,230,150,206,31,135,154,188,179,104,194,138,17,232,72,95,135,232,130,43,58,238,128,10,119,221,168,127,22,45,62,128,222,63,130,228,111,8,0,52,37,6,154,26,31,213,183,21,121,11,92,218,254,85,24,19,24,103,120,148,48,141,174,106,170,230, 93,124,251,216,223,251,43,93,97,60,169,40,0,50,202,244,43,90,174,169,159,85,122,137,209,140,127,69,147,65,224,5,184,180,237,107,80,239,107,203,208,167,209,240,132,34,72,94,147,153,123,220,46,56,225,178,142,219,161,202,221,196,74,4,141,56,26,180,157,186, 195,103,109,60,225,238,137,247,219,125,86,172,85,70,1,144,25,218,79,168,58,102,226,185,13,223,137,15,38,140,169,90,77,37,2,64,129,243,90,110,128,142,162,204,53,190,226,44,46,20,1,8,146,207,182,159,120,227,92,134,58,123,122,173,1,184,162,243,14,8,217, 75,33,161,198,12,109,139,70,91,195,45,222,197,243,110,104,255,22,158,88,20,0,163,78,121,87,160,122,238,245,237,247,75,49,89,52,146,240,79,235,100,105,210,223,169,13,159,103,227,53,51,122,49,120,203,146,11,109,8,130,228,33,10,240,182,34,54,39,32,83,208, 225,101,151,117,222,14,78,209,5,178,102,44,106,26,31,146,96,204,146,138,235,39,158,223,112,54,158,91,20,0,163,134,221,103,177,46,188,181,251,126,209,46,148,170,178,49,131,73,19,99,22,85,157,206,134,105,100,26,33,220,8,156,128,125,255,17,36,47,3,0,170, 76,68,126,11,100,58,207,167,214,51,6,46,110,189,133,37,8,170,154,129,188,41,242,232,149,99,10,76,191,172,229,167,181,51,138,187,240,12,163,0,24,21,230,223,212,249,237,162,122,207,108,217,96,210,31,53,254,147,74,230,193,242,198,43,178,226,115,9,225,102, 224,61,165,0,170,140,39,25,65,242,12,142,19,64,44,154,146,21,251,210,21,154,198,166,8,74,106,194,80,183,64,86,114,205,129,103,209,215,186,255,215,87,225,244,226,89,70,1,144,86,38,95,220,116,86,203,162,138,171,227,195,198,194,87,49,37,202,198,250,94,56, 230,203,192,103,73,207,125,206,226,4,75,237,140,145,94,0,8,130,228,13,106,156,120,255,77,32,4,186,179,102,151,230,84,156,8,75,106,206,54,92,30,72,199,172,187,130,182,142,133,183,118,255,183,96,69,147,134,2,32,77,212,76,13,143,153,122,105,211,79,228,152, 108,40,87,142,214,250,135,236,37,240,185,246,91,89,217,95,54,97,105,59,22,120,103,32,57,12,8,65,144,188,64,83,37,176,86,47,39,79,252,236,106,167,127,74,253,165,48,181,228,24,195,34,32,17,145,161,122,74,232,220,105,159,111,190,2,207,54,10,0,211,113,248, 172,246,121,55,118,252,134,227,192,111,164,211,31,45,247,179,240,54,184,164,237,171,16,114,148,103,223,5,225,46,6,91,247,114,208,164,40,158,116,4,201,7,227,47,71,88,232,95,44,61,38,235,246,141,227,120,56,111,204,13,172,244,217,104,121,32,237,20,56,241, 220,134,239,54,206,45,29,143,103,29,5,128,169,204,187,169,227,174,96,141,123,178,28,215,223,233,143,174,117,209,102,63,103,53,95,13,77,254,236,205,89,177,118,156,8,150,186,233,160,37,134,241,196,35,72,46,163,38,88,230,191,173,245,186,172,29,239,77,163, 160,151,182,221,10,126,91,136,60,31,245,47,63,106,228,209,172,170,154,131,58,106,238,176,221,131,39,31,5,128,41,140,61,163,110,217,152,37,21,215,210,178,19,35,208,48,23,205,246,159,81,182,52,187,63,48,121,80,56,102,95,11,98,113,11,70,2,16,36,103,141, 191,196,66,254,246,206,175,2,239,172,202,234,93,45,113,86,194,69,173,95,102,17,1,218,23,69,47,52,31,192,93,108,239,88,112,115,231,247,104,231,67,4,5,128,33,194,77,222,138,105,159,111,254,169,20,53,150,25,79,141,255,216,240,76,56,185,225,115,57,241,185, 57,187,23,28,199,124,21,132,162,122,20,1,8,146,147,198,223,66,140,255,109,32,4,39,229,196,46,183,145,253,60,181,225,50,214,23,197,72,146,85,98,88,134,134,185,165,151,78,190,176,225,12,188,16,80,0,232,134,102,148,30,243,213,174,159,217,220,162,161,122, 255,132,26,135,82,87,53,92,48,230,6,16,184,220,233,92,201,187,195,224,90,244,31,40,2,16,36,23,141,127,215,109,32,134,167,231,212,174,31,83,117,26,204,42,59,206,112,82,160,20,145,105,197,214,143,75,90,125,181,120,65,160,0,208,197,140,43,199,92,85,214, 17,56,78,138,234,207,136,167,45,126,173,188,21,46,106,189,25,124,214,162,156,59,6,28,17,1,206,17,17,0,40,2,16,36,103,60,127,49,52,61,39,63,194,153,205,87,65,189,175,99,36,41,80,231,97,80,52,16,173,124,104,254,151,59,127,110,117,137,184,22,128,2,32,53, 106,166,134,59,198,159,89,127,23,45,47,209,143,198,122,94,159,214,120,5,171,249,207,217,139,100,36,18,192,99,36,0,65,114,195,248,135,167,231,236,199,160,131,131,104,62,128,219,226,3,89,211,255,252,165,142,91,121,87,112,225,244,203,91,174,197,139,3,5, 192,81,99,243,88,196,185,215,183,255,92,211,52,151,166,234,15,253,71,228,97,22,206,154,91,177,44,231,143,9,139,4,44,190,13,151,3,16,4,141,127,218,41,119,213,194,217,205,215,130,162,202,134,58,5,210,65,109,221,167,213,222,89,61,57,212,137,23,9,10,128, 163,130,40,198,175,20,213,123,166,201,113,253,161,127,234,249,215,122,91,224,140,230,47,230,207,197,226,10,97,78,0,130,160,241,31,21,104,155,244,99,170,78,53,148,15,144,156,109,166,57,169,67,103,115,91,44,120,177,124,20,156,252,242,49,106,167,134,39, 116,157,90,115,107,194,64,171,95,58,224,194,198,59,224,130,49,55,130,67,72,83,167,63,162,140,19,187,214,129,180,125,53,200,7,182,129,26,237,103,87,59,103,119,131,24,172,0,75,101,27,88,171,218,129,179,153,251,254,135,115,2,34,127,251,79,80,14,109,6,206, 226,192,139,6,65,242,214,248,107,160,36,54,130,28,95,3,138,180,13,52,181,47,89,112,207,59,129,23,75,65,180,182,128,104,107,3,142,79,79,217,253,41,13,159,135,173,3,239,195,198,254,85,96,211,57,197,144,246,110,9,53,122,167,78,251,124,243,77,207,127,239, 189,175,227,69,131,2,224,19,177,123,45,214,57,95,106,255,41,185,230,173,6,74,81,153,247,127,78,203,151,160,198,211,98,254,237,40,197,32,242,207,191,146,215,95,64,222,183,25,180,196,72,247,44,158,251,64,242,210,151,96,97,66,192,222,49,15,92,83,78,5,129, 124,111,90,36,96,36,39,96,24,69,0,130,100,222,248,119,165,33,225,79,75,64,124,248,41,136,15,61,193,4,128,166,142,68,252,56,254,67,174,181,198,122,134,240,98,9,88,157,51,193,238,57,133,124,95,97,234,110,88,120,43,156,63,230,6,248,214,91,87,177,164,64, 129,211,103,178,168,67,215,189,188,246,107,155,95,222,247,232,246,21,7,87,226,197,51,242,44,199,67,240,1,211,46,107,185,161,168,193,51,209,72,232,159,134,171,38,23,47,128,121,21,39,153,190,127,241,141,43,224,224,79,46,134,254,63,125,3,164,221,235,217, 205,72,61,126,206,238,2,206,234,76,190,136,199,207,126,102,177,129,210,183,7,134,158,253,21,28,248,201,133,48,244,226,253,73,229,110,114,36,0,171,3,16,36,195,158,191,201,198,95,138,189,1,3,123,175,132,225,131,119,19,239,121,45,115,48,56,222,149,124,113, 142,228,139,119,142,252,222,14,154,124,8,98,253,15,193,192,158,43,32,54,240,144,233,31,181,204,85,3,167,55,94,105,104,114,224,200,163,207,54,247,250,246,159,216,220,22,116,124,81,0,124,148,154,105,225,14,22,250,31,50,144,117,74,46,80,218,209,234,204, 230,171,77,223,191,225,127,60,0,61,247,93,3,210,222,13,71,12,252,103,118,186,18,44,192,57,60,160,69,135,96,224,175,223,133,158,255,185,30,212,225,94,115,35,1,139,147,213,1,40,2,16,36,3,198,223,228,176,127,172,255,127,96,104,223,205,32,19,175,63,105,224, 109,240,153,253,249,137,87,206,241,110,208,180,8,68,122,126,4,195,7,238,32,6,55,98,234,126,77,47,91,66,94,75,33,38,235,223,46,117,236,66,141,222,233,211,46,107,190,6,47,34,20,0,71,176,185,69,126,238,117,237,63,34,226,210,161,105,58,21,230,136,50,61,155, 92,91,94,107,192,212,253,27,122,238,62,232,255,203,221,204,224,115,22,123,234,27,16,68,38,4,98,171,159,131,67,191,186,10,148,190,189,230,69,2,92,88,29,128,32,249,96,252,35,189,63,38,175,159,177,176,62,245,236,83,39,41,4,226,195,127,131,161,3,255,65,4, 129,185,207,131,211,27,175,96,209,0,201,192,188,0,218,37,176,251,180,218,219,202,187,2,77,120,49,161,0,96,76,56,167,254,243,161,6,207,92,163,161,255,5,85,167,66,71,209,20,83,247,45,250,246,227,48,240,212,127,3,103,115,146,179,101,172,139,32,21,1,210, 206,53,208,243,155,235,76,21,1,180,58,192,137,213,1,8,146,211,198,63,214,255,32,51,224,70,205,2,77,8,148,162,175,66,228,208,247,76,221,71,218,23,224,236,150,107,128,35,251,167,129,190,229,76,90,214,77,252,40,207,236,107,218,126,32,88,208,252,21,252,17, 40,105,245,87,78,56,183,241,206,248,176,254,208,63,109,245,91,231,109,133,101,117,23,153,186,111,210,174,181,196,243,255,22,17,228,150,15,146,111,140,122,236,54,23,203,31,48,91,4,124,56,39,0,69,0,130,228,162,241,167,21,67,230,52,205,163,34,128,38,16, 198,6,30,52,117,95,219,2,19,89,187,224,168,129,165,0,41,166,64,197,216,224,210,73,23,52,158,131,2,160,144,63,188,192,193,140,47,180,124,75,180,241,69,122,27,254,208,201,85,34,39,178,208,191,222,50,149,79,220,110,164,31,250,254,112,59,168,241,8,11,225, 155,9,141,38,164,67,4,240,40,2,16,36,125,198,191,43,93,198,255,33,83,141,255,7,34,192,1,209,222,95,128,28,251,167,169,219,61,161,238,66,226,112,141,129,132,18,211,239,180,69,100,24,127,118,221,55,131,53,238,162,66,190,180,10,90,0,140,89,92,177,168,102, 106,248,108,35,237,126,227,74,4,22,215,156,5,13,190,118,83,247,173,255,145,187,153,145,214,181,230,159,37,34,0,19,3,17,196,68,207,223,228,108,255,72,207,97,207,223,105,186,241,79,66,151,44,85,86,77,160,42,251,77,219,170,77,176,195,89,205,87,131,200,91, 65,211,89,217,68,103,5,216,60,150,202,233,87,182,220,129,2,160,0,113,248,172,182,169,151,53,127,151,206,143,214,173,34,137,2,173,39,134,255,216,26,115,35,73,195,47,255,14,162,111,61,206,178,253,211,73,186,150,3,62,92,29,128,145,0,4,49,193,248,135,211, 96,252,7,30,76,139,231,255,209,135,140,21,20,101,15,68,14,125,151,252,70,49,109,179,141,190,78,88,88,181,28,162,138,254,165,0,234,248,53,205,43,187,188,97,78,233,100,20,0,5,198,228,139,27,175,241,87,186,58,244,10,0,170,60,69,114,115,158,217,116,21,107, 86,97,22,137,237,171,96,224,169,159,144,251,102,52,154,235,104,35,34,224,253,17,17,176,207,188,251,158,85,7,224,114,0,130,100,157,241,239,29,37,227,127,248,89,192,185,136,177,253,7,196,250,127,107,234,118,143,173,61,151,229,94,37,244,86,5,104,44,18,32, 204,184,162,229,123,22,135,80,144,182,176,32,63,116,73,171,175,186,235,148,154,175,36,12,36,254,81,229,73,179,254,205,12,253,171,209,65,232,123,248,191,64,147,227,134,51,254,83,19,1,238,17,17,112,173,201,213,1,97,156,29,128,32,217,102,252,251,71,207, 248,31,17,1,188,19,162,125,255,99,106,62,0,93,10,56,163,233,11,196,136,241,186,27,4,177,222,0,77,222,25,19,206,109,56,31,5,64,1,192,241,52,241,175,245,78,193,38,248,245,38,254,209,58,212,106,79,35,28,87,123,158,169,251,54,240,216,61,32,239,73,223,186, 255,103,71,2,176,58,0,65,50,138,150,127,198,255,3,83,163,193,240,161,239,131,166,244,153,182,213,102,127,55,204,173,92,102,104,96,16,29,27,60,246,244,218,59,189,165,142,64,161,93,110,5,39,0,26,231,150,206,172,153,26,58,71,210,153,248,167,141,104,205, 211,26,175,96,115,171,205,34,250,246,19,16,121,227,207,105,95,247,255,183,198,58,141,137,129,24,9,64,144,163,240,252,185,220,203,246,63,250,7,140,21,20,121,59,217,151,31,153,186,217,19,106,47,132,50,103,53,235,196,170,235,176,203,42,56,252,214,138,233, 87,180,220,140,2,32,143,161,235,60,228,36,127,83,77,168,186,63,55,109,69,57,189,116,49,116,4,205,203,27,81,14,237,132,254,199,190,7,156,104,201,220,205,153,102,17,128,179,3,16,228,51,140,127,206,102,251,167,240,28,224,92,16,31,250,59,36,134,30,55,109, 155,46,139,135,77,13,164,83,88,65,231,82,0,141,2,52,47,40,255,98,121,119,160,25,5,64,158,210,189,188,246,204,162,58,207,12,89,103,226,159,172,201,16,180,23,195,178,250,139,77,188,241,85,232,123,228,110,80,7,15,177,222,253,217,192,104,84,7,160,8,64,144, 79,48,254,185,154,237,159,202,243,133,183,178,150,195,170,188,211,180,109,78,40,158,3,227,195,179,33,166,232,123,174,208,229,96,222,202,59,103,92,57,166,160,198,5,23,140,0,240,20,219,93,19,207,107,184,67,138,25,24,246,163,196,217,186,127,192,22,54,109, 191,134,95,121,8,226,107,95,98,70,55,123,248,120,78,0,86,7,32,8,26,127,179,16,137,223,211,11,195,61,63,160,7,192,180,173,158,210,240,57,112,137,222,145,72,128,158,40,128,12,149,227,138,78,109,61,182,114,54,10,128,60,99,236,25,117,87,56,131,182,70,85, 214,23,34,138,43,49,150,112,50,171,252,56,211,246,73,222,187,17,6,159,254,217,40,149,252,233,21,1,35,213,1,253,230,86,7,56,23,225,0,33,4,141,127,190,148,250,165,236,8,112,78,144,34,175,65,108,240,143,166,109,179,196,89,5,139,170,79,39,207,106,157,207, 20,141,229,3,112,147,47,106,252,186,197,33,114,133,112,9,22,132,0,8,55,121,139,59,79,169,185,73,26,214,159,248,39,242,34,83,152,2,103,82,91,94,85,129,254,71,190,205,74,255,70,175,228,207,64,36,224,215,102,231,4,224,0,33,4,141,127,254,101,251,167,240, 12,224,237,16,237,187,15,20,105,171,105,219,164,115,2,170,60,77,186,19,2,233,242,112,81,189,103,102,235,146,138,83,80,0,228,9,19,47,104,184,222,238,17,195,170,206,178,63,154,248,55,181,116,17,52,249,187,76,219,39,22,250,223,184,34,57,229,47,203,193,217, 1,8,146,6,227,159,175,217,254,71,141,0,154,58,8,209,158,31,131,89,75,1,116,30,203,178,186,139,117,47,3,48,17,16,83,96,194,249,245,183,59,131,54,107,190,95,138,121,47,0,138,91,124,53,141,115,74,175,212,219,239,95,33,23,146,223,86,4,39,212,154,215,39,66, 62,176,21,6,159,190,55,75,67,255,153,19,1,152,24,136,20,138,241,119,164,35,219,191,55,123,178,253,143,250,185,194,57,33,17,125,29,226,131,143,152,182,205,113,225,153,208,77,142,109,76,103,155,96,69,82,33,88,227,233,24,119,70,221,121,249,126,57,230,189, 0,152,112,94,253,205,162,93,112,235,156,25,193,214,147,142,169,90,14,65,123,137,57,59,164,105,172,225,143,26,237,207,226,208,255,167,137,0,156,29,128,32,134,61,127,98,252,133,112,186,74,253,114,193,243,255,216,115,133,183,177,165,0,85,222,99,218,54,79, 172,191,136,69,3,84,157,15,254,68,68,130,246,101,85,183,184,66,25,108,204,130,2,192,24,165,29,254,230,198,185,165,23,208,236,78,61,208,117,164,42,119,3,204,175,60,217,188,27,245,173,71,33,182,246,197,44,203,250,63,106,245,130,213,1,8,98,208,248,23,78, 182,255,209,34,130,170,244,176,210,64,179,168,118,55,193,204,178,99,217,180,86,93,167,75,214,192,29,182,215,143,61,189,230,226,124,190,44,243,86,0,208,150,191,179,190,216,122,139,96,21,28,122,189,127,69,149,89,217,31,85,146,166,60,3,6,15,193,224,223, 126,10,156,152,203,75,75,31,171,14,192,217,1,8,146,57,227,223,155,235,198,255,240,243,218,73,188,238,231,64,138,188,104,218,54,151,214,158,205,74,182,21,77,167,3,24,85,160,253,196,234,47,17,33,224,65,1,144,99,212,78,15,183,85,140,15,158,165,215,251,167, 101,127,45,129,177,48,177,120,158,105,251,68,75,254,148,222,221,89,211,240,199,188,72,0,206,14,64,144,140,24,255,254,220,55,254,35,119,62,249,37,64,164,239,94,208,212,33,83,182,232,183,134,96,65,213,105,108,108,187,190,40,128,74,163,0,53,221,167,213, 92,142,2,32,151,62,20,241,254,39,158,219,240,101,98,167,172,122,58,67,210,178,63,158,227,224,248,218,243,201,87,115,14,81,98,203,91,16,249,231,35,57,26,250,255,148,91,22,103,7,32,200,103,27,255,130,207,246,63,218,7,138,21,148,196,22,136,13,252,206,180, 77,206,173,88,6,229,174,90,144,232,185,208,21,5,144,161,99,89,245,181,238,144,221,139,2,32,71,168,156,80,52,134,120,255,103,208,16,142,94,239,191,43,52,29,90,131,19,204,217,33,69,134,129,39,127,12,154,162,208,180,215,188,58,214,56,59,0,65,62,221,248, 99,182,127,138,247,61,249,76,177,129,63,130,34,109,50,101,123,14,209,5,139,170,207,0,89,247,160,32,13,92,97,123,121,247,233,53,23,162,0,200,17,218,79,172,186,142,227,56,155,158,127,171,129,10,86,222,10,199,214,156,107,218,254,12,191,241,103,72,108,121, 155,8,92,123,62,30,110,172,14,64,144,79,242,252,49,219,95,151,73,210,180,8,68,123,127,97,218,22,167,149,46,130,90,111,11,27,227,174,43,10,16,145,161,131,230,2,228,97,69,64,222,9,128,226,22,95,125,227,220,178,243,164,136,94,239,63,202,6,75,212,121,199, 152,243,44,24,234,129,161,231,238,3,206,98,131,252,229,99,57,1,253,88,29,128,160,241,199,108,127,157,247,60,235,13,240,10,36,76,74,8,20,137,67,183,184,250,44,80,84,125,54,65,85,88,20,160,166,123,121,237,57,40,0,178,156,9,231,214,95,101,177,243,14,77, 75,125,241,95,211,84,176,11,46,114,177,156,105,218,254,12,61,255,107,80,122,119,229,65,226,223,209,138,128,247,161,231,215,105,168,14,64,17,128,228,140,241,255,15,204,246,55,42,2,64,128,88,223,125,228,153,28,51,101,123,19,137,83,215,224,239,128,132,129, 40,0,141,44,187,66,246,188,242,228,242,74,0,148,140,241,149,53,206,45,189,80,111,215,191,152,26,133,201,37,243,161,210,221,96,202,254,208,97,63,195,43,254,148,87,137,127,41,69,2,204,204,9,112,97,117,0,146,205,151,254,135,61,255,25,230,27,255,254,194, 49,254,201,27,222,10,114,98,3,196,7,255,98,142,161,227,4,54,40,72,111,99,32,26,5,112,23,219,91,154,230,149,230,213,140,128,188,18,0,109,199,87,93,106,113,138,126,77,87,230,191,10,78,193,13,11,171,150,155,182,63,131,207,220,11,90,124,152,102,182,20,212, 179,16,103,7,32,5,231,249,115,233,44,245,123,168,176,140,255,225,231,8,111,135,216,192,239,65,83,14,154,178,189,113,161,153,208,232,107,215,29,5,144,227,10,116,157,86,123,157,197,33,228,205,3,61,111,62,136,167,212,225,105,94,88,246,121,73,175,247,47, 71,97,82,201,60,40,115,213,154,178,63,241,77,43,32,186,250,57,34,100,157,80,136,224,236,0,164,96,140,255,225,108,255,48,102,251,155,139,8,170,188,143,136,128,135,76,139,2,44,172,210,31,5,80,18,42,132,26,60,147,90,151,86,30,131,2,32,203,232,58,165,230, 44,87,200,94,73,67,53,169,123,255,26,216,69,39,204,175,52,41,186,67,46,176,193,103,126,193,190,230,91,217,95,106,34,192,149,214,62,1,60,138,0,36,11,140,63,102,251,167,51,10,224,132,216,224,99,160,72,219,77,217,222,216,176,177,40,128,34,171,208,122,92, 229,181,180,211,44,10,128,44,193,230,22,197,166,5,101,95,160,99,28,117,121,235,114,4,198,135,103,155,182,246,31,91,253,44,36,54,189,153,83,211,254,210,67,26,171,3,104,36,96,241,109,184,28,128,100,220,248,155,237,249,71,123,10,43,225,239,179,76,20,29, 25,28,27,248,95,83,182,38,112,2,235,14,168,119,92,176,18,87,160,172,195,191,176,110,70,113,55,10,128,44,161,97,110,233,194,96,173,187,139,142,113,212,227,253,91,5,59,185,40,78,53,199,228,201,9,24,124,254,55,57,55,233,47,253,34,224,112,117,128,121,34, 128,119,133,176,68,16,201,43,227,79,61,255,40,26,255,143,69,1,28,144,24,126,22,148,196,251,166,108,143,230,2,212,120,154,217,176,183,148,159,102,26,155,51,35,118,44,171,186,18,5,64,54,124,0,145,167,77,26,190,168,199,248,83,104,159,232,142,162,201,80, 235,105,49,71,189,175,124,10,164,29,239,229,121,221,191,145,72,192,181,88,29,128,228,240,165,140,131,125,50,19,5,136,67,180,255,183,166,108,77,36,231,111,94,197,73,32,235,109,15,28,81,160,122,114,248,140,112,179,183,20,5,64,134,169,158,84,212,81,62,46, 184,72,79,248,63,217,243,95,48,109,237,95,75,68,97,232,69,114,145,138,22,188,103,63,201,88,99,117,0,146,235,158,63,102,251,103,44,10,32,69,95,1,57,254,158,41,219,155,84,50,31,202,92,53,32,107,169,139,0,218,99,198,234,18,124,173,199,86,158,143,2,32,195, 180,29,87,117,9,167,129,168,75,201,17,85,217,228,235,132,150,192,56,115,188,255,183,31,7,121,207,250,28,31,247,155,251,34,0,19,3,145,180,24,127,204,246,207,228,147,131,24,94,217,180,92,0,58,226,125,86,217,177,32,41,122,27,3,41,48,102,113,197,37,206,128, 45,167,67,189,57,45,0,188,101,142,64,205,212,240,217,180,62,83,215,61,173,169,48,167,98,25,27,68,105,138,247,255,202,67,104,252,143,74,4,96,117,0,146,123,198,31,179,253,51,252,220,224,236,196,240,190,6,114,124,181,41,219,155,86,182,24,2,246,98,80,116, 36,4,178,198,64,97,91,115,227,252,210,69,40,0,50,68,243,194,242,83,156,1,107,177,158,210,63,58,29,170,210,93,15,99,77,186,161,233,218,191,188,103,3,0,10,128,163,145,75,31,36,6,178,234,0,147,167,8,98,117,0,146,6,227,143,189,253,179,32,10,0,178,105,125, 1,188,214,32,76,42,158,199,242,192,244,160,200,26,180,46,169,184,44,151,75,2,115,86,0,88,157,34,215,113,98,245,231,36,157,165,127,116,62,244,244,210,165,96,225,141,71,112,52,57,14,195,175,254,30,215,254,83,22,1,238,100,36,224,215,215,97,117,0,146,181, 198,223,129,9,127,89,20,5,112,128,20,121,21,228,248,26,83,182,55,171,252,120,54,50,152,118,130,77,217,137,140,43,80,210,30,56,166,172,35,208,132,2,96,148,41,31,27,156,228,175,118,77,214,147,253,79,107,64,3,182,16,76,41,53,167,161,19,173,251,151,118,173, 3,78,196,204,255,212,69,128,51,125,213,1,40,2,16,19,60,127,1,141,127,150,69,1,18,16,31,252,63,115,236,136,171,22,218,139,38,65,92,79,46,128,70,3,190,188,173,245,184,138,243,80,0,140,50,109,199,85,94,192,233,188,123,226,106,12,198,23,207,6,159,53,104, 194,131,66,129,225,87,254,128,117,255,70,110,233,116,37,6,162,8,64,12,26,255,180,101,251,115,104,252,245,71,1,236,144,136,188,2,138,180,217,156,40,64,217,113,196,16,234,59,23,82,84,134,250,89,37,231,56,131,182,156,236,250,150,147,2,192,87,238,244,87, 79,9,157,42,233,44,253,179,241,118,152,81,182,212,148,125,137,175,127,5,18,219,223,5,206,98,199,59,51,75,69,128,11,171,3,144,20,141,63,102,251,103,183,217,210,212,97,136,15,254,217,148,173,141,9,78,128,106,79,147,174,198,64,52,255,204,83,236,168,111, 154,95,186,0,5,192,40,209,188,176,252,56,103,192,86,162,169,169,39,255,209,178,143,38,127,23,212,152,212,248,103,248,213,63,224,253,104,154,8,72,211,40,97,172,14,64,82,244,252,49,219,63,203,159,21,196,137,75,12,63,79,12,176,241,220,33,145,19,97,106,233, 34,150,24,174,235,178,81,84,104,156,91,118,65,46,158,214,156,19,0,180,243,95,243,49,101,23,40,9,157,165,127,228,215,244,178,37,166,236,139,180,99,53,196,55,190,129,222,191,105,124,124,118,128,217,213,1,73,17,128,203,1,200,167,26,255,46,204,246,207,13, 4,98,120,123,32,62,248,184,41,91,155,88,60,15,252,182,176,174,25,1,82,92,129,242,238,192,226,226,102,95,5,10,128,52,19,110,242,54,6,235,61,179,229,68,234,201,127,138,38,67,177,163,2,186,138,166,153,227,253,191,254,48,171,0,40,228,137,127,105,21,1,191, 78,223,114,0,138,0,228,227,198,159,133,253,67,104,252,115,43,10,240,55,208,212,33,195,219,242,219,138,160,43,52,77,95,73,32,49,69,22,135,232,105,152,83,114,50,10,128,52,211,118,92,197,105,162,77,176,65,234,209,127,114,114,227,108,234,31,45,251,48,138, 210,187,27,98,107,94,64,239,63,109,34,192,153,182,229,0,108,27,140,252,139,231,143,217,254,57,136,8,138,180,19,18,145,231,77,217,218,212,210,133,32,240,22,246,252,73,21,57,161,208,165,233,179,45,14,33,167,78,116,78,9,0,139,83,224,107,166,21,159,174,196, 117,38,255,137,14,152,108,82,174,70,228,205,71,65,29,234,197,236,255,116,42,252,116,182,13,198,234,0,36,237,217,254,104,252,211,254,140,224,68,136,15,209,101,0,197,240,182,104,91,248,100,50,160,164,227,82,82,33,80,229,154,92,218,17,232,64,1,144,38,202, 58,2,227,253,149,206,110,85,78,61,252,79,147,255,26,188,237,80,237,54,222,179,65,75,68,32,250,206,83,56,241,47,151,69,128,11,103,7,160,241,79,119,182,63,26,255,244,63,32,172,160,196,215,130,28,91,105,252,153,192,9,48,177,120,174,174,100,64,58,38,152, 23,121,161,97,78,201,105,40,0,210,68,203,226,138,229,28,207,241,154,142,240,63,237,247,76,39,64,153,65,108,237,203,32,31,216,2,32,96,231,191,209,17,1,31,106,27,140,179,3,16,19,61,127,204,246,207,249,167,3,49,190,202,72,20,192,56,19,138,231,128,219,234, 103,115,98,82,118,50,99,10,237,9,112,138,221,103,21,115,229,232,229,140,0,112,6,108,150,186,233,197,39,233,25,251,75,51,59,253,182,16,116,135,204,73,254,139,188,249,87,154,129,130,247,222,168,241,161,182,193,105,154,29,128,213,1,133,103,252,205,246,252, 163,152,240,151,25,9,192,219,136,126,127,29,84,217,248,115,33,100,47,131,22,255,88,54,41,54,229,75,75,86,193,87,225,236,168,158,84,52,1,5,128,201,84,77,42,154,228,10,217,154,245,12,254,73,144,147,217,26,156,0,62,107,145,225,253,160,70,40,177,229,45,76, 254,203,136,8,72,87,117,64,8,171,3,10,200,248,59,210,52,216,39,138,198,63,67,208,146,192,62,72,68,158,53,101,107,180,36,80,211,147,101,206,174,49,128,134,57,165,57,83,13,144,51,2,160,97,46,57,168,58,207,9,29,247,75,215,118,76,81,249,239,60,1,90,60,130, 165,127,25,19,1,88,29,128,232,185,116,48,219,63,175,163,0,156,5,18,195,207,38,207,179,65,58,138,38,65,145,189,148,149,141,167,10,173,6,168,28,95,116,162,195,103,205,137,245,225,156,16,0,206,160,205,90,49,54,120,130,172,35,251,159,158,196,176,163,2,198, 4,198,25,127,134,196,135,33,250,222,115,152,252,151,233,155,29,171,3,144,84,61,127,14,179,253,243,251,161,96,37,198,119,19,72,241,119,140,219,27,209,3,109,193,137,250,90,3,203,26,184,139,237,173,85,147,67,227,81,0,152,68,121,87,96,130,59,108,111,209, 27,254,239,40,154,12,118,193,105,120,63,226,235,95,3,229,224,14,76,254,203,10,17,224,194,217,1,200,209,25,127,44,245,43,16,20,72,12,61,109,202,150,38,132,103,179,170,0,125,209,8,128,234,137,161,147,80,0,152,68,245,164,208,9,122,35,238,2,39,194,184,208, 12,115,110,248,119,158,196,251,60,107,208,62,90,29,208,143,179,3,16,52,254,5,237,20,112,54,144,98,111,128,166,244,24,222,22,157,23,19,118,148,235,91,6,136,171,80,49,46,120,172,197,46,100,125,147,152,172,23,0,22,135,40,84,79,13,31,75,15,106,202,39,66, 147,160,196,81,1,13,62,227,189,25,148,222,61,144,216,242,38,112,34,134,255,179,75,4,184,147,34,128,37,6,238,51,239,97,50,82,29,128,203,1,104,252,63,78,20,75,253,178,20,1,84,249,0,36,162,175,24,222,146,77,112,64,107,96,2,235,30,155,178,173,144,84,240, 87,187,218,203,58,3,237,40,0,12,82,49,54,216,230,175,116,117,208,131,154,42,146,146,128,214,224,68,176,10,198,51,246,99,107,158,199,206,127,89,45,2,232,114,192,181,166,87,7,124,52,49,16,31,246,185,100,252,49,219,191,16,195,0,2,155,18,104,6,99,195,51, 64,224,245,149,244,11,34,47,212,207,41,93,154,237,135,43,235,5,64,213,164,162,69,188,160,111,49,70,36,39,111,108,104,166,41,70,38,186,250,89,122,86,241,6,203,90,17,224,76,75,179,32,238,35,137,129,17,60,212,57,228,249,11,56,213,175,240,236,63,77,6,140, 191,71,188,240,237,134,183,69,91,3,211,101,0,89,213,87,13,80,222,21,56,150,207,242,209,0,89,45,0,232,232,223,202,241,69,75,21,41,245,236,127,26,254,15,179,240,127,155,225,253,144,246,110,4,105,231,90,224,68,43,222,97,217,124,243,167,49,49,16,171,3,114, 203,248,139,88,234,87,160,240,108,58,160,20,125,217,240,150,232,50,0,173,30,147,53,29,213,0,146,10,69,117,238,137,225,102,111,21,10,0,157,248,43,157,101,193,90,247,100,61,225,127,153,60,12,104,71,39,122,18,141,18,95,243,34,104,241,33,236,254,87,224,34, 192,133,34,32,235,141,191,163,11,19,254,48,10,32,130,20,161,121,0,154,225,109,209,209,241,156,142,115,78,219,213,91,156,162,179,122,114,104,46,10,0,157,84,77,10,205,180,185,45,30,29,109,153,217,73,235,44,154,98,194,131,69,129,216,218,23,1,4,244,254,115, 3,45,109,34,128,195,18,193,236,246,252,137,241,23,66,104,252,81,1,208,158,0,27,64,73,108,50,188,169,70,95,7,4,236,197,108,150,76,202,151,165,172,66,213,132,208,98,46,139,155,198,101,183,0,24,95,180,88,83,83,87,113,201,222,255,97,104,244,119,26,222,7, 105,207,122,242,218,128,225,255,156,20,1,135,115,2,176,58,32,239,141,63,13,251,135,48,219,31,73,186,127,154,58,76,52,186,241,106,0,151,197,11,13,190,118,93,77,129,228,132,10,225,22,239,44,103,145,205,153,173,71,42,107,5,128,221,107,181,148,118,6,102, 209,100,138,148,141,54,57,89,245,222,86,112,91,124,134,247,35,254,254,43,160,37,162,216,250,55,39,69,192,72,137,32,171,14,48,79,4,252,107,117,0,146,113,227,143,217,254,200,135,37,0,109,13,28,93,1,102,44,3,180,7,39,147,205,164,30,134,166,206,171,195,111, 173,14,55,123,187,81,0,164,72,81,131,167,205,85,100,109,212,211,253,143,142,114,164,173,28,141,219,16,21,98,239,255,3,64,196,206,127,185,29,9,48,191,68,144,195,182,193,121,109,252,49,225,47,215,21,128,21,148,196,70,80,164,173,134,55,213,226,239,6,151, 213,11,42,164,40,2,52,90,149,200,67,221,140,226,249,217,122,152,178,86,0,212,78,13,205,17,44,228,232,105,169,30,115,21,156,22,55,52,251,141,139,46,121,255,150,100,248,31,91,255,230,246,179,32,93,179,3,92,56,64,40,239,140,63,203,246,127,8,141,127,238, 223,245,35,203,0,43,12,111,41,228,40,131,10,87,61,75,44,79,253,82,85,161,180,221,63,143,23,179,243,90,202,74,1,64,147,237,203,199,6,231,41,178,158,236,127,25,202,156,53,80,226,50,94,125,17,223,176,2,180,24,102,255,231,135,8,112,165,109,128,208,225,234, 0,76,12,204,3,227,207,214,252,157,104,252,243,225,158,231,4,83,4,0,77,40,167,21,101,138,142,126,0,106,178,43,224,120,111,137,163,40,27,143,81,86,90,54,87,145,221,21,172,117,79,84,117,150,255,209,228,63,222,132,143,22,219,240,10,118,254,203,27,210,95, 29,128,179,3,70,201,248,99,169,31,114,84,55,38,93,6,216,0,170,98,60,255,135,246,3,16,121,11,164,154,83,160,170,26,216,61,150,64,73,155,127,98,54,30,162,172,20,0,197,45,222,46,71,192,86,169,103,253,159,78,112,106,13,24,159,196,168,14,236,7,105,231,58, 204,254,207,75,17,144,190,234,0,30,151,3,210,111,252,49,219,31,57,74,243,166,42,125,32,199,86,26,222,82,181,167,9,2,182,176,174,114,64,26,65,40,31,27,156,141,2,224,40,33,7,107,58,207,167,126,35,210,242,63,159,53,8,53,158,102,195,251,16,223,186,18,212, 161,30,140,0,228,165,8,248,208,236,128,126,115,171,3,176,89,80,250,140,191,35,13,165,126,152,237,159,255,72,209,55,12,111,195,33,186,153,93,145,116,228,1,208,78,182,165,237,254,153,217,216,22,56,235,4,0,173,182,43,235,12,204,212,53,252,71,147,160,210, 93,15,94,34,2,140,146,216,104,78,9,9,146,205,145,0,34,2,126,125,173,233,203,1,88,29,96,230,169,250,80,147,31,204,246,71,82,189,31,249,228,108,0,77,51,126,47,54,5,186,200,118,82,183,75,138,172,65,160,218,213,233,41,115,134,80,0,124,6,174,34,187,35,88, 235,30,175,103,253,95,85,21,168,247,25,159,192,168,201,113,136,111,91,137,221,255,242,94,4,96,117,64,214,123,254,92,122,154,252,96,182,127,161,64,71,4,239,99,185,0,70,105,244,117,130,77,176,147,39,71,106,142,33,237,7,96,243,88,2,165,109,190,172,235,7, 144,117,2,192,95,237,106,177,123,45,149,122,218,255,210,233,127,180,117,163,81,228,125,155,65,233,217,9,28,78,255,203,127,15,33,93,34,192,141,34,192,176,241,199,108,127,196,248,29,78,188,246,4,200,177,119,12,111,169,220,89,3,65,123,9,168,154,172,103, 55,104,100,123,42,10,128,207,58,200,221,129,137,188,149,231,83,85,89,116,253,159,134,254,171,220,141,134,247,33,177,229,109,208,226,216,253,175,112,68,128,43,45,163,132,89,137,32,206,14,200,82,227,143,158,127,225,220,224,2,72,38,36,2,90,137,247,95,229, 110,208,53,30,88,149,53,218,220,14,5,192,103,17,110,242,77,213,145,104,201,198,255,150,187,106,193,99,245,27,222,135,248,230,183,200,145,193,218,255,194,225,195,109,131,175,51,53,49,240,112,199,64,172,14,64,227,143,100,200,254,115,22,80,164,205,160,41, 135,12,111,139,206,5,80,117,132,167,217,120,224,122,79,151,51,104,115,100,211,177,201,42,43,103,177,139,92,168,201,51,94,79,2,160,162,42,80,235,29,99,220,20,196,134,216,0,32,14,215,255,11,87,4,252,218,236,234,0,28,37,156,138,241,119,164,171,189,47,26, 255,2,69,0,85,233,5,57,177,209,240,150,106,189,173,96,101,182,33,245,126,0,14,175,165,50,80,237,106,66,1,240,41,120,203,29,101,158,98,123,147,166,163,254,95,224,4,54,0,200,40,210,222,141,172,7,0,8,88,254,87,152,34,32,141,213,1,152,19,240,111,14,61,102, 251,35,233,188,190,20,144,227,171,12,111,166,204,85,3,94,107,81,234,253,0,136,73,19,108,60,95,222,21,28,139,2,224,83,40,170,247,180,91,156,162,59,213,17,192,52,36,227,180,120,160,210,221,96,120,31,18,219,87,145,103,81,28,31,20,5,12,38,6,102,192,243,199, 108,127,36,173,55,181,192,202,1,141,226,18,61,80,230,172,214,151,7,160,2,132,154,188,89,213,17,48,171,4,64,184,217,59,78,207,61,170,104,50,132,236,165,172,83,147,25,2,0,123,255,35,40,2,70,209,248,167,189,189,47,102,251,23,252,253,204,242,0,182,129,166, 244,26,222,86,181,167,153,37,157,167,126,169,107,16,172,115,143,203,166,193,64,89,101,233,66,141,222,241,122,194,255,84,0,84,184,235,89,27,96,35,104,137,40,200,123,55,0,135,227,127,17,72,115,117,192,71,6,8,21,168,113,74,99,123,95,76,248,67,62,138,64, 140,127,31,75,6,52,74,173,183,133,216,154,212,77,167,42,171,224,45,177,183,184,195,14,127,182,28,149,172,17,0,22,135,40,4,170,93,109,84,37,165,108,184,53,13,106,60,198,115,43,228,131,219,65,233,223,79,142,10,214,255,35,236,202,250,88,117,128,217,29,3, 15,207,14,136,20,174,241,239,68,227,143,140,210,221,172,73,32,199,215,26,222,78,185,171,14,28,162,139,141,158,79,233,253,85,13,172,94,107,40,80,227,170,71,1,240,49,124,229,206,18,87,216,86,167,103,0,144,69,176,66,149,219,184,0,144,118,175,99,81,0,172, 255,71,254,85,4,208,196,64,115,69,64,193,206,14,192,108,127,36,19,16,175,93,78,188,111,120,51,69,246,18,240,219,66,186,6,3,9,2,199,133,155,189,29,217,114,72,178,71,0,84,58,27,89,2,160,150,122,3,32,183,197,7,197,206,74,227,2,96,231,90,188,73,144,79,17, 1,174,15,68,0,86,7,24,56,148,152,237,143,100,200,254,131,8,138,180,149,214,122,27,218,142,133,183,66,169,179,26,20,29,137,128,212,190,249,43,93,89,211,18,56,107,4,64,176,222,221,206,235,240,188,169,10,11,218,74,192,99,49,186,172,162,177,250,127,12,255, 35,159,46,2,48,49,208,176,231,159,174,108,255,30,204,246,71,62,75,1,136,160,202,7,64,145,247,24,222,20,29,58,167,171,33,144,172,65,168,193,211,158,45,147,1,179,70,0,20,55,123,59,85,85,95,2,96,153,171,90,87,82,198,71,78,204,96,15,40,61,187,176,255,63, 242,239,159,33,163,32,2,242,178,109,112,186,179,253,7,48,219,31,249,236,24,128,166,69,64,73,24,79,4,76,38,157,235,75,4,244,148,58,26,109,30,139,13,5,192,225,157,16,121,240,150,58,199,168,74,234,138,138,134,84,104,82,134,81,104,2,160,58,220,135,45,128, 145,163,16,1,31,174,14,48,177,99,224,200,236,0,62,223,68,64,58,179,253,113,205,31,73,205,96,152,50,25,144,46,1,216,4,135,222,201,128,21,222,50,71,25,10,128,17,236,30,139,195,83,98,175,211,100,29,29,0,121,129,8,128,26,227,2,96,223,70,208,228,4,62,68,144, 163,185,141,63,36,2,174,53,183,58,32,223,102,7,28,78,248,75,87,169,31,174,249,35,41,221,96,66,50,15,192,32,65,91,49,120,172,129,148,251,1,208,20,55,209,46,216,189,229,206,172,168,4,200,10,1,224,173,112,148,217,188,150,178,84,59,0,210,50,12,187,224,132, 98,71,133,225,125,144,246,108,196,236,127,36,197,72,192,135,171,3,112,118,192,167,26,255,206,219,64,192,82,63,36,27,238,89,160,2,96,39,49,196,198,18,1,105,25,32,173,6,208,83,9,192,243,28,109,8,212,130,2,96,4,103,192,86,43,88,4,91,138,5,0,44,9,195,75, 84,24,45,201,48,44,0,14,108,33,71,3,251,255,35,122,34,1,233,153,29,224,202,229,196,192,116,103,251,163,241,71,116,70,0,52,181,7,52,249,128,225,77,81,199,83,85,83,23,0,212,209,45,170,243,160,0,56,76,81,189,167,81,79,86,36,157,0,24,176,21,179,181,24,67, 207,170,216,32,40,189,123,201,3,5,19,0,17,61,34,32,61,137,129,92,174,86,7,96,182,63,146,181,240,196,104,71,64,145,119,26,222,18,77,62,79,53,7,224,176,0,32,78,111,19,199,115,89,112,52,178,128,96,173,187,89,211,81,1,160,130,98,74,248,95,38,15,109,117,184, 23,35,0,136,126,99,141,213,1,31,24,255,195,29,254,48,219,31,201,74,205,174,176,185,0,198,35,0,149,108,10,109,202,142,43,109,9,92,225,168,177,56,50,63,114,54,43,4,128,43,100,111,72,181,1,16,59,143,228,223,148,152,208,0,72,57,180,19,59,0,34,38,136,128, 52,206,14,200,133,234,128,81,25,236,131,158,63,98,244,70,229,76,17,0,33,71,41,88,5,123,234,149,0,228,175,91,157,98,153,35,96,11,20,180,0,96,109,127,45,192,249,42,156,213,84,21,165,188,243,28,15,97,71,185,241,8,192,193,237,116,103,240,198,64,140,186,22, 31,21,1,38,38,6,102,125,117,0,14,246,65,114,6,1,84,121,183,225,173,248,172,69,224,178,120,82,175,4,160,165,128,110,209,239,10,217,202,51,125,36,50,27,1,208,232,51,131,115,139,54,190,44,213,165,20,170,186,44,188,13,130,246,18,227,2,224,192,118,244,254, 17,19,35,1,238,15,37,6,154,91,29,64,7,8,101,93,78,0,14,246,65,114,233,254,100,2,224,0,107,10,100,4,151,197,11,94,107,48,245,142,128,26,235,125,195,23,213,186,43,51,125,44,50,27,1,32,94,191,175,194,81,108,247,91,131,169,14,1,210,200,65,119,90,220,224, 183,21,25,222,15,165,119,23,174,255,35,105,136,4,172,79,246,9,232,51,121,128,80,54,37,6,166,115,205,31,179,253,145,180,40,0,158,120,225,253,160,201,61,6,133,4,7,1,91,56,229,8,0,251,183,196,225,180,121,44,181,5,31,1,160,107,33,60,207,165,220,22,81,37, 191,220,68,129,185,68,175,177,93,72,68,65,25,56,128,2,0,73,131,8,200,243,234,128,116,27,127,108,242,131,164,41,6,160,169,81,80,149,253,134,183,68,123,1,232,201,95,83,201,191,41,106,240,212,100,250,72,100,84,0,40,10,29,140,224,174,20,44,60,164,186,4,64, 235,47,233,26,140,72,30,64,134,158,97,195,189,236,197,113,40,0,144,52,60,106,142,68,2,242,108,128,208,168,100,251,163,241,71,210,36,0,52,25,20,217,248,253,88,100,47,213,85,10,72,255,137,205,37,86,23,180,0,160,203,238,54,183,69,215,58,8,141,0,208,240, 139,97,17,50,112,16,180,120,148,102,20,226,125,129,164,41,18,144,198,234,128,197,25,40,17,196,176,63,146,243,168,166,36,2,210,62,52,122,135,2,249,171,93,44,9,80,79,9,124,206,11,0,26,53,161,205,127,138,26,61,149,122,166,0,210,176,75,192,94,108,92,0,244, 239,3,77,193,25,0,72,186,69,128,59,61,213,1,174,207,168,14,208,49,178,244,35,110,202,199,189,27,244,252,145,188,8,2,240,196,8,27,95,2,240,219,67,44,10,173,165,158,197,78,19,1,75,129,214,193,21,106,4,96,228,64,232,238,228,19,48,161,5,48,243,200,84,21, 111,8,100,148,68,64,122,170,3,92,135,171,3,18,31,202,108,150,19,192,123,74,245,63,35,29,149,44,99,26,14,39,57,169,137,35,189,253,177,206,31,201,109,136,0,80,140,183,3,246,90,252,96,163,189,0,82,204,3,208,20,218,13,208,26,180,20,129,71,149,11,50,2,64, 199,34,90,193,95,229,42,81,83,238,1,160,129,192,139,44,7,192,120,4,96,63,150,0,34,163,40,2,210,83,29,192,141,84,7,136,101,29,201,72,0,121,137,85,19,193,218,113,162,238,109,10,254,54,176,212,158,149,20,0,242,48,112,86,31,246,246,71,242,35,0,64,132,173, 166,244,209,44,112,67,219,161,125,0,232,96,32,58,152,46,85,251,39,216,120,15,103,129,160,158,36,66,179,200,92,243,123,141,206,101,224,4,209,46,132,116,68,79,64,224,68,86,131,105,120,55,162,3,248,208,65,70,89,4,124,80,29,16,188,224,251,196,208,150,154, 178,101,90,29,224,58,246,235,32,239,89,197,68,173,88,218,65,110,20,35,17,70,14,108,77,151,131,165,100,30,168,177,125,32,248,218,200,190,135,76,61,26,81,204,246,71,50,36,1,52,45,78,94,18,185,85,172,186,183,66,167,209,58,69,15,244,196,14,64,170,227,108, 104,245,27,141,2,104,25,12,64,103,46,2,160,106,96,247,138,46,139,67,8,164,60,6,152,40,38,171,96,99,101,128,8,146,147,143,159,52,149,8,82,131,47,86,142,7,177,98,156,65,227,255,161,135,132,183,5,196,226,217,166,27,127,26,246,143,162,241,71,114,24,158,19, 192,101,241,233,106,7,44,88,5,26,1,47,214,148,2,92,2,160,141,127,220,97,187,207,225,183,186,83,22,0,228,151,93,112,128,67,116,26,127,16,59,168,136,192,28,0,36,19,34,32,61,213,1,185,0,174,249,35,153,69,35,158,191,205,144,247,127,24,15,17,0,122,154,1,81, 205,160,72,106,56,147,71,33,179,125,0,36,213,71,140,127,202,86,156,118,1,164,161,23,155,224,50,188,15,98,168,10,64,195,219,1,201,208,67,40,77,213,1,104,252,17,228,223,221,121,10,240,98,152,141,173,54,44,0,172,126,0,157,189,0,124,101,142,112,38,199,2, 103,116,9,192,87,238,244,11,34,207,167,126,220,52,112,90,60,134,155,0,81,44,21,173,228,26,176,3,170,0,36,179,34,192,252,234,128,172,52,254,152,240,135,100,197,109,167,128,96,29,99,202,166,220,116,9,64,143,253,39,255,200,87,225,12,101,242,54,200,168,0, 240,148,56,130,188,133,75,249,224,209,225,11,14,209,109,202,113,179,150,183,128,24,174,1,144,37,188,41,144,12,138,128,244,84,7,100,157,241,199,53,127,36,27,238,55,222,10,22,199,20,147,4,128,254,92,52,69,82,139,50,233,123,102,122,9,32,160,47,114,162,130, 139,8,0,83,16,173,224,24,187,24,52,41,142,247,5,146,97,17,144,166,196,192,44,0,179,253,145,172,185,211,180,56,121,236,183,129,104,51,39,2,224,20,189,186,186,1,82,39,216,225,183,6,5,107,230,204,112,70,5,128,213,37,250,117,31,116,139,199,180,253,112,78, 58,9,132,162,10,162,72,18,120,119,32,25,37,31,69,0,245,252,49,219,31,201,22,161,77,95,118,223,25,228,171,57,243,95,92,22,247,136,0,72,205,155,165,137,240,222,114,151,215,234,204,220,28,154,140,9,0,154,248,16,106,242,250,245,212,64,210,181,19,167,224, 54,239,32,184,2,224,57,230,50,208,164,4,96,46,0,146,121,17,144,63,213,1,216,222,23,201,42,243,175,14,131,213,57,15,44,142,153,166,109,147,46,71,211,114,64,77,215,254,104,30,173,80,151,0,8,58,23,79,136,130,51,161,4,240,35,81,128,137,39,130,115,242,201, 160,70,7,241,46,65,50,238,165,164,107,138,224,104,126,134,40,102,251,35,217,35,171,137,227,24,5,193,82,7,174,224,85,166,110,153,182,2,166,141,233,244,56,143,196,248,187,105,83,192,66,21,0,250,226,248,28,199,218,47,154,141,111,217,151,193,209,185,16,212, 200,0,128,134,145,0,36,11,34,1,187,214,65,239,131,183,130,150,136,230,212,190,71,251,239,39,175,223,161,241,71,178,198,243,23,196,82,112,23,255,39,112,66,145,169,219,166,77,233,216,64,160,84,59,218,146,191,111,113,8,46,171,83,176,102,234,184,100,78,0, 104,201,240,135,190,157,230,137,234,114,154,190,75,156,197,6,129,179,190,14,174,105,167,177,161,42,154,140,57,1,72,134,35,1,118,55,36,182,188,5,137,109,239,228,208,110,199,32,49,244,4,209,233,14,52,254,72,134,81,137,157,25,4,209,214,66,140,255,221,44, 2,96,54,22,142,8,0,78,76,189,27,160,162,129,171,200,106,245,20,59,108,5,39,0,44,78,1,188,101,14,151,170,163,13,34,71,123,148,11,233,57,102,84,4,248,79,253,26,4,206,184,19,196,64,25,121,150,13,38,43,4,52,236,22,136,100,44,22,192,198,151,230,142,108,249, 215,239,16,100,116,189,75,137,60,178,135,128,142,187,113,248,206,5,79,201,61,196,248,215,164,199,150,17,91,36,232,236,73,67,103,226,105,154,102,207,212,145,202,216,48,32,209,198,131,51,96,179,15,12,105,41,202,16,218,194,145,7,171,144,222,99,230,24,127, 44,216,90,103,66,244,237,199,33,250,206,147,32,237,221,4,90,124,56,25,183,97,211,3,209,179,65,70,225,81,38,199,193,222,50,29,172,53,221,185,35,87,56,59,216,220,75,33,210,251,19,250,1,112,218,38,50,74,70,95,27,185,254,172,192,139,101,196,201,156,70,174, 195,99,211,226,245,127,196,150,113,22,22,1,208,41,120,173,35,175,194,18,0,90,114,9,192,161,239,1,195,129,133,79,127,212,132,119,120,193,53,253,76,112,77,59,3,228,125,155,32,177,123,29,200,251,183,130,58,116,136,60,215,254,63,123,231,1,47,71,89,245,255, 179,51,179,237,246,126,211,147,155,222,72,2,161,6,233,72,145,162,2,214,191,149,87,254,250,250,250,170,20,11,254,241,125,21,21,21,20,17,20,72,40,210,91,66,73,40,161,164,87,82,110,239,189,238,189,119,123,239,51,187,255,231,121,54,137,160,160,185,179,51, 91,207,55,159,225,134,36,187,59,59,237,252,206,121,78,17,81,3,32,234,18,139,129,80,49,19,10,63,241,229,99,221,42,179,7,67,233,87,217,90,171,24,106,252,123,20,3,65,212,50,254,196,139,212,240,37,204,240,11,186,69,192,147,45,177,4,165,62,188,134,7,45,175, 99,213,105,50,46,115,33,47,5,192,241,99,39,231,84,211,37,0,65,163,77,221,94,178,209,170,11,217,134,32,200,73,221,52,196,251,186,138,109,8,146,211,87,58,177,15,84,4,36,97,131,243,48,9,48,241,217,178,82,249,105,205,165,192,9,120,229,33,8,130,32,105,37, 97,143,244,172,67,173,28,39,56,30,139,167,205,152,165,59,179,72,70,92,48,206,170,0,18,107,46,8,130,32,8,146,165,226,129,215,128,177,52,125,189,128,185,108,61,112,113,204,48,70,16,4,65,210,238,197,106,64,199,233,166,94,6,24,143,131,96,224,161,108,78,81, 81,186,246,61,157,2,128,186,240,83,95,2,160,69,3,26,14,120,92,2,64,16,4,65,50,65,4,208,50,93,89,189,128,19,67,129,242,81,0,208,240,191,172,36,64,186,230,194,167,50,9,16,65,16,4,65,114,140,116,47,1,196,211,242,82,4,65,16,4,65,1,128,32,8,130,32,8,10,0, 4,65,16,4,65,80,0,100,34,52,219,50,142,189,249,17,4,65,16,36,43,5,128,72,182,192,84,95,68,219,138,75,49,17,162,49,156,212,135,32,8,130,100,49,26,214,11,32,109,125,178,211,41,0,104,22,159,132,87,0,130,32,8,146,173,208,136,116,68,10,179,150,192,83,118, 102,163,49,240,89,67,193,124,20,0,199,244,143,188,3,142,141,128,16,4,65,144,76,17,1,114,204,159,20,142,129,103,60,16,206,215,8,128,95,214,65,139,139,16,149,162,120,213,33,8,130,32,233,53,254,241,56,196,226,146,60,127,86,3,113,13,159,190,73,153,233,108, 167,151,212,18,128,20,79,253,234,129,100,182,129,52,97,134,152,211,13,241,96,16,175,124,68,237,39,11,8,179,103,130,118,213,178,172,220,125,79,32,2,102,103,128,60,28,227,56,12,24,81,213,144,240,28,7,6,29,15,69,6,45,20,23,232,200,255,167,238,138,163,198, 95,140,69,88,75,96,25,80,79,54,148,127,2,64,195,198,40,6,101,188,140,28,240,24,68,98,169,49,192,226,192,8,132,182,237,133,240,251,13,32,142,154,32,230,245,147,83,134,209,7,36,53,2,0,200,131,173,232,107,55,64,241,247,255,35,171,118,125,216,236,133,109, 77,228,222,137,72,104,252,145,212,152,20,141,6,116,2,7,133,70,45,76,47,47,132,5,51,74,97,86,149,250,109,246,99,228,151,24,139,78,57,7,224,184,95,9,137,132,248,252,18,0,113,49,14,209,144,20,158,250,49,211,176,7,163,218,85,0,212,211,247,61,250,60,4,223, 219,3,113,143,15,200,149,5,26,65,75,54,30,64,139,115,8,144,20,33,73,224,123,246,85,48,92,118,1,104,151,46,204,138,93,142,197,226,112,184,103,18,194,196,248,211,7,50,130,164,236,118,33,215,158,203,23,6,187,39,4,29,163,14,152,81,81,8,107,23,214,192,172, 234,34,21,63,83,100,2,64,38,212,144,165,45,7,32,109,150,44,236,19,193,49,236,11,112,117,220,148,23,2,168,226,138,72,234,69,77,168,199,239,249,195,195,32,77,90,65,83,104,4,77,113,33,222,89,72,122,224,137,224,12,133,137,32,181,100,141,0,16,165,24,4,194, 98,74,195,176,8,146,136,2,144,91,134,252,231,248,181,103,178,251,96,194,225,135,85,117,85,112,246,178,105,192,169,80,113,71,157,81,49,46,130,156,28,0,13,167,9,211,45,93,199,43,221,242,220,39,43,122,64,4,64,72,82,103,9,192,255,236,43,224,188,253,183,32, 57,221,9,195,207,161,7,131,164,143,120,56,2,124,117,37,232,86,44,206,154,125,214,106,121,168,45,43,128,168,132,205,186,144,52,95,139,60,199,140,126,67,159,5,222,173,31,97,226,84,121,1,16,78,44,1,76,81,0,16,195,15,33,79,52,18,116,69,210,150,3,144,110, 235,230,145,245,80,140,199,33,44,6,20,223,153,192,150,119,192,243,199,13,160,209,10,160,209,225,180,65,36,205,198,63,74,30,42,122,29,148,222,241,67,224,106,170,178,199,11,35,219,39,86,204,128,26,42,2,68,20,1,72,250,163,2,122,34,74,251,198,93,176,179, 121,140,165,214,40,9,141,70,211,101,128,169,6,23,232,4,225,16,49,254,1,71,56,109,93,237,210,42,0,56,94,227,145,121,74,33,40,249,21,221,151,104,103,47,120,239,121,152,60,112,181,137,176,43,130,164,19,106,252,181,90,40,191,235,167,160,63,239,204,172,219, 253,34,163,22,62,117,198,60,168,42,53,160,8,64,50,2,42,2,186,199,156,208,216,111,85,244,125,195,82,24,196,120,20,100,46,1,120,201,150,182,36,192,244,9,0,162,194,156,35,126,183,220,37,153,128,168,160,0,16,37,240,222,187,1,98,129,32,128,128,9,126,72,250, 141,63,156,48,254,103,101,237,215,72,136,128,58,34,2,140,40,2,144,140,64,43,240,208,208,107,6,135,87,185,168,123,136,56,163,180,44,93,142,41,99,2,64,147,190,174,118,105,19,0,52,140,239,183,132,220,178,122,39,144,35,22,136,122,149,59,129,59,247,67,184, 190,5,52,5,70,188,67,144,12,242,252,207,202,250,175,243,247,72,128,17,115,2,144,180,67,115,3,195,68,140,54,244,41,23,5,8,136,190,99,195,233,166,158,3,16,116,134,189,98,36,125,247,69,122,151,0,180,156,67,206,235,104,178,5,61,232,10,41,17,8,188,178,21, 147,253,144,140,241,252,203,114,196,248,255,147,8,40,193,72,0,146,1,81,0,158,131,97,139,135,53,170,82,2,191,232,133,152,140,158,118,28,175,1,207,68,192,25,13,164,111,36,78,218,172,30,245,226,195,222,168,51,30,139,203,120,45,167,152,0,144,70,199,33,218, 209,195,146,173,16,36,221,198,191,60,199,140,255,71,70,2,80,4,32,105,132,46,59,135,194,34,17,1,202,68,145,253,17,183,236,196,66,34,2,236,233,236,148,149,62,1,64,212,143,125,208,227,20,35,177,248,84,243,0,56,22,1,240,42,210,14,56,210,218,5,49,175,15,35, 0,72,218,136,231,184,241,71,17,128,100,158,8,208,192,132,93,25,39,210,23,245,200,126,173,20,141,217,210,121,28,210,92,5,192,121,104,32,64,78,4,32,40,250,33,162,64,47,0,113,104,4,20,175,11,65,144,41,120,254,154,60,48,254,255,44,2,176,58,0,73,163,237,225, 52,224,14,68,88,46,90,178,120,163,46,89,109,128,105,14,128,185,203,99,139,75,233,179,63,233,139,0,112,108,9,192,21,9,74,126,205,20,59,134,209,28,128,48,49,254,74,84,2,196,236,46,244,254,145,180,25,127,200,35,227,255,97,17,128,213,1,72,26,35,0,100,139, 68,37,69,18,83,189,17,34,0,228,152,210,132,217,179,228,101,4,128,38,64,120,205,33,111,208,21,117,77,89,0,104,184,99,2,32,249,16,78,92,20,241,110,64,114,202,248,139,225,40,217,148,187,174,105,154,142,39,172,236,125,130,213,1,72,46,64,35,8,190,168,27,56, 205,212,77,105,140,136,95,191,61,108,213,164,209,255,76,107,209,187,134,215,68,136,16,160,107,32,11,166,42,156,162,49,145,40,47,103,242,66,196,104,196,37,0,36,103,140,127,203,198,195,208,183,179,147,37,58,45,184,112,25,156,114,253,25,160,73,162,39,255, 246,126,59,220,187,119,16,108,129,8,172,153,94,2,191,252,228,34,152,86,164,87,84,4,188,117,100,8,108,238,32,104,113,112,16,146,74,39,148,220,36,154,36,103,3,68,98,33,86,5,48,85,1,64,63,86,138,198,36,247,88,192,78,243,225,242,46,2,64,31,74,17,111,20,220, 99,126,171,70,152,234,1,208,128,20,23,193,29,177,39,127,0,170,42,80,0,32,105,48,254,183,43,110,252,143,252,109,15,52,60,115,0,2,54,47,248,173,94,168,127,106,31,244,19,49,32,151,17,87,8,126,248,122,39,52,79,122,193,30,136,194,150,78,11,124,125,99,11,140, 123,148,155,93,130,37,130,72,58,160,81,45,189,78,96,37,129,201,224,143,122,89,62,154,70,70,42,127,60,30,247,145,87,57,210,121,28,210,42,185,165,72,12,162,1,113,92,142,10,163,161,23,103,56,249,4,74,126,90,53,128,6,167,150,33,234,243,225,108,127,101,219, 251,82,227,223,190,185,1,116,133,122,224,180,252,137,109,162,117,84,246,123,54,78,120,192,17,140,64,145,142,7,129,8,246,50,131,0,237,102,31,124,115,19,17,1,94,133,69,192,153,243,160,18,115,2,144,84,221,139,228,87,161,33,249,0,56,173,0,8,75,1,182,44,61, 37,195,43,112,224,183,69,92,17,43,184,120,109,250,204,112,26,251,0,80,21,22,7,247,120,208,36,43,131,146,188,198,25,74,62,127,130,9,0,173,0,128,65,0,68,101,207,95,173,108,255,19,198,191,64,247,225,102,100,52,196,153,68,145,177,72,220,164,15,142,79,165, 183,8,21,3,237,22,34,2,88,36,64,185,118,170,84,4,92,133,213,1,72,170,4,0,177,61,244,154,75,22,26,133,142,178,73,128,50,246,33,22,55,199,99,16,74,231,113,72,107,4,128,118,79,244,219,66,163,26,89,9,148,156,34,17,0,174,186,10,52,6,67,98,103,16,68,37,227, 15,170,25,255,189,208,190,165,145,24,127,253,71,71,178,146,8,110,125,220,75,139,143,139,128,151,91,85,88,14,192,234,0,36,37,46,40,148,24,147,111,254,230,12,91,217,36,192,169,222,104,52,2,224,26,241,79,178,61,225,242,48,7,32,241,197,1,2,206,200,104,76, 70,29,36,77,186,112,19,1,16,135,228,30,20,92,69,25,112,37,197,137,69,33,4,201,42,227,191,7,58,182,212,131,206,168,131,84,118,19,139,31,19,1,29,116,57,224,101,117,114,2,42,177,58,0,81,211,246,144,251,165,184,32,121,1,96,15,77,202,86,215,209,160,56,146, 238,227,144,222,70,64,180,25,131,41,48,17,151,98,83,30,165,68,5,128,39,234,2,127,52,185,82,64,174,184,16,248,170,114,136,75,18,222,21,72,118,121,254,155,27,64,107,212,67,58,90,137,158,88,14,80,73,4,92,133,137,129,136,138,215,46,77,254,43,86,32,2,96,15, 78,202,170,36,160,182,207,214,231,25,206,107,1,192,166,33,185,162,230,72,64,154,242,88,96,142,205,3,240,130,55,154,100,41,32,249,96,126,122,45,0,10,0,68,201,135,140,202,158,127,59,245,252,11,210,99,252,255,49,18,208,174,98,36,0,151,3,16,197,175,219,120, 28,116,90,94,145,36,64,71,216,2,188,134,151,245,218,136,95,204,115,1,192,107,32,64,51,33,253,162,121,234,221,0,57,136,72,97,112,40,145,8,56,107,58,46,1,32,138,26,127,213,19,254,140,233,53,254,31,41,2,212,168,14,56,3,171,3,16,165,5,0,16,227,175,5,189, 54,57,1,16,146,130,224,14,219,137,51,58,69,1,64,123,0,144,235,217,214,239,195,37,0,144,64,244,140,7,70,57,25,77,64,196,88,20,108,193,137,164,247,67,152,59,43,35,30,166,72,14,144,142,108,255,12,16,1,234,87,7,160,8,64,148,33,70,156,189,18,114,15,37,91, 253,237,137,56,192,39,122,100,53,1,138,134,36,127,192,25,49,229,181,0,96,15,49,242,244,8,58,35,253,114,219,33,154,131,163,73,239,134,48,103,102,98,28,48,54,4,66,146,52,254,106,133,253,143,50,227,255,47,178,253,51,0,117,171,3,80,4,32,202,9,214,178,194, 228,187,89,58,66,102,8,139,129,41,155,209,99,77,240,38,189,230,160,53,191,5,192,49,236,131,222,62,78,198,64,30,26,122,177,4,146,23,81,252,244,26,208,176,74,0,124,184,32,153,103,252,19,165,126,153,231,249,127,212,131,245,131,213,1,38,172,14,64,50,16,122, 11,149,43,208,206,218,18,52,177,40,244,84,111,73,54,7,199,18,26,147,194,82,56,221,199,34,35,4,0,57,24,189,114,198,50,210,228,11,90,134,65,79,66,82,7,161,162,12,248,218,106,172,4,64,50,208,248,239,73,107,182,191,28,17,112,188,58,224,70,172,14,64,50,16, 129,231,160,76,1,1,48,225,31,145,213,63,142,230,190,5,29,145,62,41,154,254,107,56,35,4,128,115,216,55,40,137,177,41,91,95,26,1,112,71,28,224,73,182,18,128,227,216,50,0,136,40,0,144,12,51,254,172,201,143,46,171,114,84,254,185,58,64,217,156,0,92,14,64, 228,66,187,207,26,245,2,203,1,72,22,186,252,204,201,168,0,160,209,110,251,160,183,59,19,142,71,70,8,0,183,41,48,22,241,68,237,220,20,167,34,209,54,165,129,168,79,153,68,192,5,115,177,18,0,153,154,161,75,129,231,159,234,38,63,170,136,128,77,152,19,128, 100,136,0,136,209,6,64,180,2,128,79,234,125,162,177,8,235,1,32,167,4,144,205,177,25,241,161,0,56,78,200,29,117,251,109,225,145,169,143,69,212,64,52,30,129,201,64,242,213,20,218,69,117,0,60,143,119,8,114,210,158,127,190,101,251,203,17,1,39,170,3,54,97, 159,0,36,51,34,0,229,133,134,228,157,214,136,29,220,97,135,172,8,0,29,3,236,26,245,247,163,0,56,134,24,150,226,30,115,176,139,147,49,23,89,67,158,50,227,190,193,228,35,0,117,179,129,43,41,196,68,64,228,164,140,191,250,97,127,125,206,76,169,252,123,117, 0,77,12,84,97,57,160,196,8,17,20,1,200,73,66,69,99,178,152,3,99,16,148,124,83,46,1,164,54,46,236,137,90,220,166,224,72,38,28,11,46,83,78,138,99,200,215,206,201,152,205,204,113,2,140,7,146,111,168,68,147,0,89,34,32,230,1,32,105,52,254,29,91,178,55,236, 255,175,34,1,199,171,3,110,84,163,68,240,204,99,145,0,172,14,64,254,157,163,71,12,112,101,73,242,17,0,147,127,16,68,54,4,104,138,14,43,249,124,191,53,52,24,242,68,188,40,0,62,44,0,218,228,172,192,211,53,24,107,112,28,130,162,63,201,43,67,0,97,254,28, 0,81,196,187,4,73,143,231,191,185,49,107,178,253,229,136,128,34,21,19,3,177,58,0,249,119,176,4,64,157,160,72,5,128,201,55,32,111,6,0,113,114,61,230,96,135,20,201,140,235,52,99,4,128,173,215,219,45,6,197,232,212,135,2,241,224,9,59,192,26,26,79,122,31, 180,203,22,225,18,0,146,30,227,191,37,251,215,252,79,54,18,144,16,1,152,24,136,164,88,0,196,226,204,248,27,146,76,0,164,19,104,39,252,195,196,249,156,122,43,97,186,4,96,237,245,182,100,202,49,201,24,1,224,53,7,71,195,62,113,108,234,51,1,52,16,142,133, 136,34,75,62,15,128,9,0,157,22,59,2,34,31,190,225,213,14,251,103,80,111,255,212,138,0,117,102,7,160,8,64,62,46,2,160,196,250,191,43,108,7,91,72,94,5,0,221,7,107,143,7,5,192,63,18,116,134,67,158,137,96,23,47,99,38,0,53,216,35,222,158,164,247,65,152,63, 23,248,138,114,0,92,75,68,62,224,249,171,157,237,175,205,113,207,255,163,68,192,137,229,128,141,88,29,128,164,6,26,178,175,45,43,72,250,125,104,213,153,63,234,158,114,5,0,253,252,168,79,244,57,6,189,189,40,0,254,217,134,131,99,192,219,200,9,114,102,43, 11,48,234,235,75,254,96,148,151,130,48,111,22,196,49,15,0,57,102,252,213,15,251,231,78,182,255,84,249,96,117,0,54,11,66,212,22,157,180,246,191,74,129,4,192,17,98,191,229,36,0,82,219,230,179,134,6,60,147,193,73,20,0,31,129,165,199,211,32,231,89,40,104, 4,54,19,192,27,117,37,189,15,218,21,75,48,17,16,73,81,182,191,62,175,167,80,126,120,118,128,90,57,1,6,172,14,64,78,76,0,84,162,3,224,144,167,123,202,229,127,9,1,192,129,115,196,223,34,134,50,231,130,204,40,1,96,235,243,180,73,209,184,140,68,64,14,60, 17,39,75,204,72,22,221,234,229,216,16,8,141,63,102,251,167,80,4,20,169,218,54,184,14,171,3,16,38,0,170,75,141,178,50,247,63,244,104,136,69,192,228,31,0,158,155,122,2,32,93,49,176,245,122,142,102,210,113,201,44,1,208,235,25,242,89,67,35,156,156,142,128, 228,196,12,121,186,146,143,0,44,89,192,150,2,48,15,0,141,63,118,248,75,109,36,0,171,3,16,53,175,177,233,21,133,73,191,143,53,104,2,71,200,34,171,2,128,238,4,141,114,163,0,248,24,66,222,104,216,61,30,104,230,4,57,163,129,57,24,244,116,38,127,64,106,170, 64,168,155,147,200,252,70,242,235,33,145,18,227,143,158,255,191,21,1,216,54,24,81,242,218,138,39,214,255,107,203,147,79,0,28,242,244,64,72,10,176,234,179,41,185,168,156,6,66,158,168,131,56,185,157,153,116,108,184,76,59,89,147,173,206,195,114,18,1,121, 78,11,163,190,126,8,75,201,135,16,217,50,0,118,4,204,59,207,31,123,251,167,95,4,224,236,0,68,105,104,233,93,89,161,30,74,11,146,111,0,52,224,105,151,103,104,137,77,243,76,4,59,137,131,107,67,1,240,47,176,244,184,15,201,25,178,76,107,50,29,97,139,34,131, 129,116,107,87,17,79,16,243,0,242,201,248,99,182,127,230,80,252,1,17,96,82,169,58,0,103,7,228,15,82,44,206,188,255,100,111,191,88,92,98,9,128,114,194,255,180,188,221,222,239,61,28,207,176,137,179,25,39,0,172,221,158,214,176,55,234,144,213,16,72,12,194, 160,167,35,233,125,160,13,129,248,234,74,140,2,160,241,79,138,163,152,237,47,59,18,192,170,3,44,42,205,14,32,34,160,26,171,3,242,6,106,248,103,86,21,37,111,155,130,19,96,9,154,100,37,0,82,75,107,106,178,31,200,180,99,147,113,2,192,109,10,216,93,99,129, 86,94,198,50,128,70,195,65,175,171,53,249,131,82,90,12,218,165,139,48,15,32,231,141,191,168,162,231,191,23,218,48,219,63,41,17,80,164,106,78,0,86,7,228,197,117,68,46,164,2,189,22,166,41,177,254,239,237,130,128,232,37,70,115,106,102,147,86,30,136,33,41, 108,238,112,215,163,0,248,55,196,164,56,76,182,59,15,242,50,66,240,2,167,37,39,169,27,194,82,48,233,253,208,159,185,6,64,194,8,64,110,123,254,130,138,107,254,245,184,230,175,80,36,224,239,205,130,48,39,0,153,26,82,44,198,162,61,5,122,33,233,247,234,113, 53,201,139,64,208,9,128,246,112,55,113,110,71,50,237,248,112,153,120,210,198,155,156,123,227,50,18,1,88,30,64,208,204,234,52,147,69,119,250,42,208,20,21,210,133,31,188,139,114,205,176,164,160,206,31,179,253,21,22,1,102,20,1,136,12,135,50,30,135,153,149, 201,135,255,197,184,8,3,238,78,214,116,110,202,118,73,203,209,254,255,7,195,190,104,198,121,148,25,41,0,204,29,174,6,114,176,60,156,140,60,128,72,44,76,148,90,115,210,251,32,204,155,147,40,7,20,113,25,32,215,60,127,13,78,245,67,17,128,34,32,47,208,242, 60,204,170,78,94,0,76,250,135,143,173,255,107,167,110,100,121,13,140,55,59,118,103,226,241,201,72,1,224,158,8,76,186,70,3,205,156,118,234,187,71,163,0,93,206,166,228,119,130,231,64,127,198,106,128,8,10,128,92,50,254,170,103,251,227,154,191,250,34,96, 147,122,179,3,176,58,32,119,160,217,255,229,197,122,168,40,78,190,255,127,143,171,5,66,162,140,250,127,242,207,165,168,20,158,104,113,30,70,1,112,146,196,196,56,152,219,93,187,228,8,0,129,245,3,232,3,79,196,145,244,126,232,215,157,14,26,28,15,140,198, 255,36,140,63,102,251,167,78,4,116,88,212,235,24,136,213,1,185,37,0,102,85,21,1,167,64,249,109,151,179,65,118,255,127,151,41,208,97,235,247,14,102,226,49,226,50,245,228,153,154,29,187,228,24,94,58,162,209,19,118,64,159,187,61,233,125,160,131,129,248, 217,51,176,28,48,235,141,191,186,217,254,108,164,47,26,255,148,137,128,34,85,151,3,176,58,32,87,224,57,13,204,169,41,73,250,125,124,81,15,171,255,23,184,169,15,18,226,117,28,76,182,185,246,68,252,153,121,65,101,172,0,152,108,119,53,132,188,81,139,12, 209,5,177,120,12,58,28,71,146,222,7,141,65,15,186,211,87,67,60,18,193,187,41,171,61,127,181,179,253,209,248,167,35,18,160,110,78,128,1,69,64,150,123,255,37,133,58,168,45,51,38,253,94,180,251,159,51,108,101,203,203,83,182,33,26,13,76,180,56,183,103,234, 113,202,88,1,224,30,243,187,108,189,222,131,188,110,234,7,93,203,235,216,154,13,29,16,148,44,6,98,52,52,56,29,48,59,13,5,102,251,231,135,8,80,171,79,0,38,6,102,181,0,152,85,89,4,2,159,188,137,107,183,31,97,93,0,167,108,252,201,71,135,60,17,215,200,17, 219,33,20,0,83,189,193,201,29,62,214,96,223,198,203,24,12,68,75,53,44,193,49,24,246,246,36,189,31,186,83,87,2,63,115,90,34,140,140,100,149,231,143,189,253,243,68,4,96,159,0,228,31,13,27,241,188,235,166,37,31,254,23,227,81,232,118,53,129,86,78,248,95, 203,129,99,200,127,196,51,17,176,160,0,144,193,200,17,235,118,73,140,201,176,188,26,136,74,17,162,220,146,79,188,212,20,24,65,119,230,169,184,12,144,101,198,31,167,250,229,107,36,0,171,3,242,157,24,241,254,75,11,117,48,77,129,241,191,35,222,94,48,7,70, 101,181,255,165,205,236,70,143,218,222,165,73,237,40,0,100,96,237,246,116,187,77,254,118,94,86,53,128,0,29,206,163,44,31,32,89,140,151,156,75,206,38,143,213,0,104,252,19,217,254,104,252,51,82,4,168,94,29,128,34,32,43,16,137,0,152,83,83,12,90,5,194,255, 109,246,67,16,145,194,83,46,255,163,72,209,88,140,8,128,247,50,58,82,146,201,59,71,51,39,205,157,238,247,104,38,229,212,5,128,14,198,124,3,48,238,79,190,250,66,187,122,5,8,115,103,65,92,196,101,128,204,54,254,152,237,159,207,34,224,131,213,1,38,204,9, 200,91,104,246,255,252,105,165,201,71,18,136,243,216,102,63,194,156,201,41,27,86,65,3,126,107,168,139,216,175,246,76,62,86,92,166,159,204,129,61,150,183,228,60,113,169,98,163,141,27,218,28,10,44,3,24,244,96,56,239,76,128,48,46,3,100,182,231,47,168,104, 252,49,219,63,91,34,1,84,4,220,168,70,78,192,153,88,29,144,233,208,228,63,218,248,71,137,225,63,212,121,164,109,229,229,148,255,9,122,158,150,178,191,23,246,102,118,242,88,198,11,128,209,35,182,195,62,75,112,140,182,83,156,186,18,20,160,197,118,16,228, 204,21,248,71,12,151,158,71,132,128,1,151,1,50,214,248,171,24,246,199,53,255,172,20,1,44,39,192,171,160,8,48,96,36,32,27,4,0,77,254,155,106,27,249,143,162,197,126,80,86,247,191,227,23,98,223,174,201,55,50,253,120,101,188,0,8,56,195,126,91,159,119,155, 156,101,0,154,185,73,147,56,38,252,67,73,239,135,118,217,34,208,46,93,136,201,128,121,102,252,105,123,95,45,102,251,103,167,8,176,168,85,34,136,213,1,153,122,222,117,2,7,11,166,39,31,254,143,199,99,204,121,148,19,254,215,16,241,17,116,69,76,227,205,206, 247,81,0,40,192,224,126,203,102,186,166,50,229,19,65,126,5,69,63,52,89,247,43,112,164,56,22,5,192,114,192,204,50,254,170,151,250,225,154,127,86,139,128,14,172,14,200,31,239,95,138,65,109,121,161,34,189,255,71,125,253,196,121,236,147,25,254,231,192,220, 233,222,230,183,133,124,40,0,20,17,0,230,93,33,119,212,170,145,17,214,161,179,1,154,108,7,20,169,6,48,92,114,46,112,21,101,52,206,132,119,91,134,120,254,101,152,237,143,252,11,17,80,132,213,1,121,3,157,220,190,104,102,169,34,239,213,100,219,7,97,41,40, 43,252,79,157,213,254,61,147,175,102,195,49,203,10,1,224,54,5,92,147,237,174,93,130,78,222,112,160,49,95,31,81,115,201,55,5,226,167,213,128,254,172,211,32,30,14,227,221,150,86,227,175,118,182,127,35,102,251,231,152,8,80,179,99,96,37,46,7,100,128,241, 143,67,49,57,31,117,181,201,11,0,218,122,166,153,56,141,90,25,163,127,19,225,255,168,109,232,128,117,15,10,0,5,25,216,107,222,164,209,202,91,6,8,75,33,168,183,42,51,142,217,120,213,37,180,205,20,222,113,105,245,252,213,206,246,199,53,255,92,19,1,106, 118,12,188,10,103,7,164,29,81,138,195,188,218,18,48,232,146,111,219,62,232,233,32,78,227,32,240,50,4,0,13,255,79,182,185,182,121,38,2,78,20,0,10,50,184,223,242,158,220,101,0,58,27,128,42,186,72,44,249,27,95,127,198,26,16,22,214,97,50,96,58,30,228,152, 237,143,36,43,2,84,157,29,128,34,32,93,8,196,46,44,153,85,174,204,179,192,178,19,196,88,68,86,248,95,147,8,255,191,152,45,199,45,107,4,128,219,20,112,154,219,93,239,81,133,53,229,139,67,163,133,73,255,8,116,59,155,146,223,17,157,22,10,46,191,16,32,18, 197,187,46,197,198,95,131,217,254,136,82,145,0,28,32,148,67,222,63,77,254,43,128,26,5,106,255,105,210,120,171,253,125,208,241,250,169,27,127,34,66,66,174,168,121,232,128,117,7,10,0,21,232,223,99,126,145,19,228,237,114,140,252,58,108,222,166,200,126,24, 174,184,16,184,138,114,76,6,76,21,152,237,143,40,44,2,58,44,88,29,144,43,208,228,191,165,179,43,20,185,125,105,235,95,107,112,28,120,205,212,203,255,104,243,159,201,118,215,155,158,137,128,7,5,128,10,244,237,152,216,225,179,4,77,114,74,2,117,156,30,218, 29,71,193,21,182,37,189,31,44,25,144,24,162,120,40,132,119,95,10,140,63,246,246,71,148,22,1,88,29,144,43,198,63,49,248,71,137,214,191,148,67,230,237,242,26,255,64,98,252,111,215,214,177,23,178,233,248,101,149,0,240,219,195,62,83,163,99,11,85,90,83,254, 162,26,30,220,97,59,52,40,148,156,89,240,153,203,65,163,211,98,103,64,85,141,191,168,242,84,63,204,246,207,119,17,160,110,78,0,46,7,168,13,77,254,91,52,163,12,116,218,228,77,25,157,250,215,195,70,255,78,61,252,79,157,82,175,37,52,48,120,192,178,23,5, 128,138,244,108,159,120,142,217,92,25,15,109,218,26,248,176,121,135,34,61,1,116,171,151,131,110,205,74,136,227,124,0,21,61,127,65,213,193,62,152,237,143,34,64,205,234,0,236,24,168,242,249,35,39,208,160,229,97,233,108,101,146,255,14,19,239,223,31,245, 16,103,81,70,158,25,237,253,95,111,127,37,228,142,102,85,88,56,235,4,192,208,1,235,251,238,49,127,27,47,99,25,128,182,6,30,242,116,65,191,187,45,249,29,209,104,160,224,186,79,97,30,128,26,55,182,218,237,125,49,219,31,249,71,17,96,70,17,144,117,62,2,121, 246,206,173,45,129,210,66,125,210,239,69,43,196,142,88,118,201,242,254,233,115,36,38,197,165,246,55,70,159,203,182,99,152,117,2,32,26,20,197,193,125,150,231,229,44,3,208,181,157,104,44,2,7,38,222,86,100,95,12,23,156,13,194,162,58,114,245,96,20,64,73, 227,175,118,182,63,122,254,200,199,138,0,156,29,144,53,208,177,191,43,231,85,42,242,94,237,246,35,108,102,140,32,163,246,159,215,114,224,26,241,31,153,104,85,162,204,12,5,192,191,165,115,235,216,139,98,36,22,210,200,120,136,235,121,3,52,219,15,42,146, 12,8,122,29,20,124,246,10,136,99,73,160,66,234,14,179,253,145,244,138,0,172,14,200,14,104,233,223,172,170,34,69,198,254,82,246,79,188,37,251,181,212,25,237,126,111,252,153,104,80,202,186,132,176,172,20,0,214,94,111,191,185,211,189,157,215,201,75,6,116, 133,237,44,219,83,9,140,159,186,24,248,89,211,201,21,137,67,130,146,53,254,152,237,143,164,91,4,124,184,58,64,121,17,128,213,1,202,157,171,149,243,170,20,121,47,147,127,16,186,156,141,160,227,167,62,68,136,58,161,17,191,232,238,223,51,185,41,27,143,99, 86,10,128,24,185,129,186,182,154,30,231,101,102,126,210,30,207,7,39,223,97,203,1,73,31,192,146,98,40,184,230,50,136,135,112,62,128,124,227,127,60,219,255,118,204,246,71,50,66,4,36,114,2,90,177,58,32,19,189,255,88,156,120,254,133,48,167,166,88,33,239, 127,43,107,0,36,167,252,79,48,240,96,106,118,188,110,237,246,152,81,0,164,144,222,29,19,111,251,172,161,33,142,151,151,12,104,242,13,176,166,15,74,64,151,1,184,234,74,58,143,18,239,78,89,158,255,241,108,255,51,85,48,254,184,230,143,76,93,4,96,78,64,6, 159,31,34,0,78,153,87,169,200,72,22,95,212,13,71,205,59,101,117,254,99,17,0,158,131,206,55,199,30,203,214,99,153,181,2,32,224,8,7,6,246,154,159,211,26,229,15,127,216,109,122,93,153,131,72,140,127,193,85,151,64,60,136,141,129,166,116,35,171,26,246,223, 139,189,253,145,228,69,192,241,156,0,47,138,128,76,241,254,171,201,113,91,48,93,153,198,63,180,244,207,30,154,148,213,249,143,23,56,112,143,249,91,6,247,89,246,161,0,72,3,29,111,142,61,41,69,99,97,57,15,120,186,222,211,237,106,132,65,79,167,50,81,128, 47,92,11,92,101,57,70,1,166,224,249,171,155,237,95,15,90,52,254,136,82,34,96,163,58,145,0,28,37,60,53,98,212,251,175,171,2,78,1,247,159,14,252,217,55,254,22,8,156,78,214,235,5,3,7,61,219,198,31,11,251,162,89,155,0,150,213,2,96,178,205,217,51,209,234, 122,71,118,73,160,20,134,93,166,205,138,236,11,109,15,92,112,245,39,49,10,144,9,198,31,179,253,17,133,69,64,199,137,102,65,202,38,6,94,133,213,1,39,141,68,140,127,85,137,1,22,206,80,198,251,111,182,29,132,17,95,31,91,18,158,178,253,32,2,36,236,19,157, 109,175,141,190,144,205,199,52,171,5,64,76,138,67,235,107,35,15,201,153,13,144,136,2,24,161,209,186,15,44,193,49,101,162,0,95,196,40,192,201,24,127,26,246,47,195,108,127,36,139,68,0,171,14,56,150,24,104,194,234,128,52,9,128,24,172,158,95,13,2,207,41, 112,78,227,204,249,147,219,247,95,107,224,97,228,176,109,163,107,204,111,65,1,144,70,6,246,154,183,123,198,131,109,188,140,41,129,180,229,163,63,234,38,23,194,22,229,162,0,215,94,134,81,128,143,53,254,216,219,31,201,110,17,64,19,3,111,196,234,128,148, 67,215,254,107,202,10,96,209,204,50,69,222,175,199,217,4,61,174,102,217,201,127,177,88,92,106,223,50,250,112,182,31,215,172,23,0,97,111,52,218,179,109,124,61,45,199,144,3,109,12,116,104,114,27,184,34,118,69,246,167,240,203,159,5,190,166,138,118,170,192, 187,246,159,60,127,65,229,246,190,152,237,143,168,43,2,212,175,14,192,72,192,71,30,123,34,0,214,16,239,159,231,148,185,193,183,143,189,2,82,92,146,87,250,167,231,193,214,231,221,53,116,208,210,136,2,32,3,104,122,105,232,217,160,59,98,145,83,18,200,105, 4,112,133,173,176,87,169,138,128,170,10,40,184,225,42,140,2,124,240,230,197,222,254,72,174,137,128,227,57,1,94,21,34,1,37,24,9,248,144,247,47,197,96,90,69,33,44,80,104,237,127,200,219,5,173,246,247,153,243,39,235,25,47,104,160,245,213,225,251,99,82,246, 79,130,205,9,1,224,157,12,58,135,14,88,158,148,27,5,160,21,1,251,38,222,98,53,161,74,80,240,249,107,129,159,51,35,225,245,162,241,79,65,111,127,52,254,72,14,69,2,206,196,18,193,127,100,237,162,26,226,172,41,115,147,191,55,178,145,53,129,147,227,253,211, 230,115,158,137,96,123,215,86,211,214,92,56,174,92,174,92,32,13,207,13,60,44,134,99,65,57,223,136,214,128,218,130,147,176,119,252,77,101,14,106,105,49,20,125,245,122,28,21,140,217,254,72,62,136,0,21,167,8,230,123,117,0,157,248,71,59,254,205,85,168,235, 223,152,175,31,154,108,251,137,247,111,148,245,122,234,100,118,189,109,122,48,18,16,115,194,187,203,25,1,96,233,242,12,76,180,58,55,105,245,242,162,0,90,94,15,187,77,91,192,47,122,20,217,31,227,181,151,129,118,217,162,252,21,1,216,219,31,201,51,17,128, 213,1,202,67,215,252,79,95,92,171,216,251,189,55,186,17,194,98,64,150,247,79,67,255,62,75,104,188,121,227,208,179,185,114,124,115,70,0,196,227,113,104,120,118,224,62,208,104,100,101,223,9,26,1,172,65,19,236,49,189,161,200,254,104,244,122,40,250,214,151, 243,179,36,16,179,253,145,60,20,1,88,29,160,44,52,250,177,104,102,57,212,150,41,51,241,207,228,31,128,122,203,110,208,11,242,188,127,173,65,128,193,125,150,13,62,107,200,157,43,199,152,203,165,11,102,240,128,165,97,172,222,254,182,214,32,55,10,96,72, 68,1,162,202,68,1,12,23,173,3,253,186,211,33,30,8,230,207,3,17,179,253,145,124,142,4,168,84,29,80,153,103,137,129,49,114,80,141,228,152,158,190,168,70,177,247,124,123,248,5,8,73,212,251,159,186,217,163,141,127,34,1,209,213,244,210,224,250,92,58,206,57, 37,0,104,169,72,203,166,225,123,56,65,222,215,58,30,5,216,105,122,77,153,29,210,104,160,248,59,95,3,141,94,151,184,162,243,192,248,171,185,230,143,189,253,145,140,23,1,22,117,68,192,85,52,49,48,143,68,0,93,251,95,85,87,5,37,5,58,69,222,111,216,219,67, 188,255,93,178,51,255,117,70,129,14,160,251,155,181,215,51,137,2,32,131,25,58,104,217,109,31,240,238,226,117,242,190,154,238,88,20,192,29,113,40,178,63,218,21,139,193,120,237,229,16,15,4,114,252,142,85,63,219,31,123,251,35,249,44,2,242,165,58,128,182, 252,173,44,54,192,170,249,213,138,189,231,214,225,103,33,194,198,198,200,240,254,53,204,251,247,55,60,51,240,64,174,29,235,156,19,0,228,68,65,227,11,131,119,11,50,147,1,105,69,128,35,100,134,109,163,155,20,219,167,226,111,125,137,117,9,132,236,157,25, 241,111,141,191,154,83,253,48,219,31,201,86,17,96,194,234,128,41,19,139,199,225,204,197,181,160,19,148,49,79,189,174,22,104,178,202,207,252,167,19,103,199,26,237,207,90,251,60,131,40,0,178,128,206,183,198,222,182,247,123,247,9,50,163,0,244,66,217,59, 254,6,88,131,227,202,28,228,170,10,40,186,241,139,185,89,17,160,246,72,223,45,245,24,246,71,178,82,4,208,1,66,55,170,48,64,40,151,171,3,168,176,153,87,91,162,88,211,31,122,54,222,28,122,26,164,184,40,175,239,191,134,37,152,135,154,94,28,252,99,46,94, 171,57,41,0,162,33,41,222,248,194,224,93,188,94,222,215,227,52,60,120,35,46,216,58,252,156,98,251,84,240,217,43,65,183,246,148,220,234,16,168,122,182,127,3,102,251,35,89,43,2,138,78,148,8,170,83,29,144,107,163,132,137,227,15,122,45,15,103,45,157,166, 216,123,54,217,14,64,187,227,136,124,239,223,192,195,232,81,251,179,67,7,173,61,40,0,178,41,10,176,213,244,182,173,223,183,79,174,8,48,8,70,120,127,242,61,150,60,162,8,2,15,37,223,255,15,182,78,14,177,28,184,105,49,219,31,65,78,42,18,160,86,179,160,227, 163,132,115,69,4,68,164,24,172,174,171,98,235,255,74,32,198,163,204,251,215,104,100,154,57,13,243,6,67,71,159,238,191,59,87,175,209,156,21,0,209,160,24,111,122,97,240,46,65,199,203,60,247,28,68,98,33,120,125,240,9,197,246,73,187,106,89,98,78,128,63,187, 203,2,213,238,237,143,217,254,72,78,138,128,77,106,204,14,200,13,17,32,74,113,168,46,49,192,154,133,202,37,254,237,31,223,10,3,238,14,208,113,242,38,254,209,204,255,129,221,147,79,142,28,178,245,228,234,245,201,229,242,205,215,185,117,108,171,125,192, 187,83,110,66,32,13,27,53,219,14,66,139,253,160,114,55,237,77,95,6,161,110,54,196,35,217,153,15,16,199,108,127,4,145,39,2,104,98,224,70,245,218,6,103,179,8,160,183,251,186,229,211,65,203,43,99,146,104,47,151,183,135,159,39,239,39,175,140,144,214,253, 71,195,146,255,192,67,221,191,163,77,230,80,0,100,101,20,64,130,163,79,245,223,73,91,56,202,187,40,53,172,4,100,203,192,223,216,240,8,69,14,120,73,49,91,10,0,41,150,88,244,202,170,3,170,158,241,63,138,189,253,145,124,17,1,155,80,4,124,144,136,40,193, 210,57,21,48,187,186,88,177,247,124,103,228,5,176,4,199,64,208,104,101,189,94,91,32,64,239,246,137,13,182,126,239,80,46,95,151,92,174,223,120,29,111,140,237,26,171,183,191,65,75,57,228,64,195,71,131,158,78,216,99,218,162,216,62,233,47,90,7,198,79,93, 12,113,127,22,245,6,80,123,164,47,246,246,71,242,73,4,168,84,29,144,109,34,128,214,252,151,146,251,254,172,37,202,245,251,31,247,15,193,46,211,102,208,243,242,90,8,211,148,129,104,64,116,214,63,51,112,79,174,95,147,57,47,0,104,248,134,156,200,95,16,79, 94,118,17,62,109,14,180,117,248,121,112,134,173,138,237,23,141,2,240,51,167,101,199,200,96,149,179,253,59,176,183,63,146,111,34,64,181,234,128,121,89,85,29,64,107,254,105,232,223,168,23,20,123,207,205,3,143,65,64,244,1,39,51,249,79,87,192,186,254,221, 103,235,243,76,160,0,200,1,6,15,88,234,71,142,216,158,211,26,229,93,100,180,57,16,53,254,175,15,62,169,220,129,175,170,128,146,31,124,11,226,162,152,217,75,1,41,200,246,215,98,182,63,146,183,34,32,127,171,3,104,205,255,210,89,229,48,127,122,169,98,239, 73,71,253,54,88,247,129,65,102,217,31,199,107,192,111,11,143,29,92,223,115,127,62,92,139,121,33,0,232,140,128,189,15,116,222,41,69,99,126,154,220,33,7,131,80,0,7,38,222,134,30,87,139,98,251,101,248,228,249,96,188,242,146,140,93,10,192,108,127,4,73,129, 8,200,195,234,128,68,232,95,7,103,47,155,174,216,123,134,165,32,188,54,240,232,49,207,95,222,67,69,87,168,133,182,205,163,191,241,76,4,92,40,0,114,8,75,151,187,191,111,231,196,3,186,2,185,101,129,26,136,197,37,120,165,127,61,171,47,85,138,146,31,126, 11,132,217,51,32,30,201,172,165,0,204,246,71,144,20,137,0,21,171,3,50,117,57,128,6,61,207,93,57,3,10,20,12,253,191,59,242,34,140,120,251,64,203,201,203,252,167,243,99,236,131,222,214,250,231,6,30,207,151,107,144,203,167,27,110,255,131,93,247,4,156,145, 113,26,230,145,165,14,121,3,244,186,90,97,215,216,107,202,157,128,202,114,40,249,209,127,38,154,3,101,202,82,64,74,178,253,49,236,143,32,255,156,24,152,251,203,1,225,168,4,43,230,86,64,93,109,137,98,239,57,238,31,132,119,71,55,202,14,253,83,104,215,191, 134,103,7,110,15,185,35,145,124,185,254,242,74,0,120,38,130,142,230,77,195,191,20,100,86,4,36,68,128,30,222,28,122,70,177,57,1,20,106,100,11,191,112,45,196,125,25,176,20,144,178,108,127,180,254,8,242,33,17,112,44,39,192,148,195,213,1,172,225,15,217,151, 179,151,77,83,244,8,110,234,123,24,130,162,159,181,113,151,131,64,140,255,120,179,115,107,231,91,99,111,230,211,181,199,229,219,205,86,255,116,255,227,174,17,127,189,220,113,193,52,33,208,27,117,193,203,253,235,21,221,175,226,239,126,29,180,167,44,73, 239,172,0,236,237,143,32,105,23,1,55,170,84,29,144,110,17,64,3,156,60,167,129,11,86,205,2,157,192,43,246,190,251,39,222,97,205,218,146,241,254,53,188,38,242,254,163,61,63,137,134,164,188,186,238,242,78,0,68,2,162,248,254,35,61,63,230,181,242,191,186, 129,47,128,122,203,110,56,98,217,169,216,126,105,10,140,80,250,179,239,179,159,32,165,225,34,76,73,111,127,52,254,8,114,178,145,128,92,19,1,81,242,92,59,99,73,45,76,43,47,80,236,61,157,97,27,75,252,147,187,238,79,209,23,105,161,111,219,196,131,131,7, 44,173,249,118,205,113,249,120,163,117,189,109,218,49,124,208,250,60,173,247,148,11,141,4,208,40,128,39,226,84,108,191,180,203,22,65,201,247,190,9,241,96,56,165,199,3,179,253,17,36,3,69,64,14,85,7,208,146,191,186,105,165,176,102,65,181,162,239,75,147, 178,29,33,11,121,30,203,235,248,71,187,196,6,221,145,241,253,15,119,255,26,226,249,119,189,229,165,0,160,161,168,125,15,118,221,30,13,73,110,185,101,129,2,167,5,107,96,156,92,128,27,20,221,183,130,207,95,147,232,18,232,243,167,196,96,98,182,63,130,100, 166,8,232,200,145,217,1,180,228,175,164,64,7,23,156,50,83,209,199,0,141,194,190,63,185,141,149,104,203,118,186,140,2,52,60,55,112,135,115,216,103,207,199,107,141,203,215,155,204,210,229,30,110,121,101,248,215,186,66,249,81,0,122,225,237,159,120,27,26, 172,123,21,221,183,146,31,255,39,8,11,235,212,143,4,168,109,252,177,183,63,130,200,22,1,133,42,86,7,164,74,4,28,47,108,186,112,213,44,40,52,104,21,123,95,119,196,1,27,251,30,34,158,63,207,74,180,101,57,113,122,14,172,61,238,61,13,207,41,216,225,13,5, 64,246,112,248,241,222,251,93,163,254,38,185,249,0,244,194,227,53,28,108,236,125,144,37,6,42,118,82,74,75,160,236,127,111,1,141,65,79,211,102,85,51,254,234,133,253,247,66,7,246,246,71,144,164,249,112,78,64,246,85,7,68,201,243,235,140,197,181,48,187,186, 72,209,247,125,185,111,61,171,196,162,145,88,153,15,111,224,4,46,122,224,161,238,155,163,193,44,159,165,140,2,64,30,33,79,52,114,240,225,238,155,5,61,47,123,245,71,224,116,96,9,154,152,26,85,18,237,202,37,80,114,243,255,133,120,56,172,124,127,0,85,179, 253,137,241,223,92,143,217,254,8,162,80,36,64,237,217,1,85,37,234,136,0,186,238,191,112,70,25,172,93,84,163,236,51,198,178,19,14,78,190,3,198,36,66,255,250,2,1,58,223,26,187,191,127,143,185,33,159,175,47,46,223,111,176,174,119,199,119,13,238,183,60,154, 204,82,0,189,16,15,78,188,3,135,205,219,21,221,183,130,235,174,132,130,207,95,11,113,175,95,97,207,95,205,108,255,122,92,243,71,16,213,68,128,10,203,1,103,38,34,1,17,5,69,64,84,138,65,101,177,1,46,88,53,83,209,99,65,19,254,94,234,253,43,240,156,0,114, 31,50,196,243,135,128,51,50,176,255,161,238,59,243,253,218,202,123,1,64,231,4,236,250,99,219,207,130,174,136,73,110,135,64,122,33,210,11,242,165,222,7,193,30,154,84,116,255,74,110,185,9,244,23,156,77,68,128,47,249,239,26,142,96,182,63,130,100,187,8,80, 169,58,160,154,137,128,228,151,28,69,98,252,11,244,90,248,228,105,115,192,160,19,20,61,14,47,244,62,0,142,176,5,4,141,252,124,2,173,129,131,3,15,119,255,208,59,25,244,160,0,64,192,57,226,183,29,125,170,255,182,100,162,0,244,130,116,69,108,240,108,207, 125,228,102,85,46,100,175,209,233,152,193,54,92,124,46,196,61,222,68,203,96,57,15,16,127,0,184,242,82,40,191,231,231,152,237,143,32,217,44,2,44,199,68,128,194,145,128,171,207,170,131,89,85,197,172,85,175,220,85,71,42,32,78,204,33,40,49,40,250,253,119, 140,189,202,50,255,141,124,161,124,227,111,228,97,172,193,241,124,235,107,195,175,227,21,133,2,224,4,77,47,14,189,96,106,116,188,170,77,162,77,48,109,16,212,108,61,192,134,82,40,137,166,168,16,202,239,190,3,138,190,245,101,58,64,27,226,129,224,73,231, 5,80,175,159,182,24,214,159,125,26,84,109,184,155,253,84,220,248,99,111,127,4,73,125,36,64,225,229,0,58,152,231,42,34,2,78,91,88,195,62,135,46,9,156,172,16,160,165,126,244,223,207,169,41,129,79,159,179,0,106,202,140,138,126,239,17,111,47,188,218,255, 40,155,199,34,219,216,241,26,136,134,36,203,174,123,219,111,141,199,240,90,66,1,240,1,196,136,4,59,255,208,254,3,49,28,179,201,95,10,0,208,243,70,216,50,248,4,12,120,58,148,221,65,65,128,226,255,190,17,42,30,188,11,244,231,158,145,16,2,62,63,107,29,204, 26,249,208,208,29,221,162,34,196,67,225,196,223,145,159,218,69,117,80,118,231,109,80,241,215,187,128,159,59,75,97,227,255,193,108,127,180,254,8,146,30,17,160,92,117,128,192,105,96,221,242,233,112,237,217,243,97,254,180,18,118,91,71,162,18,91,211,167, 70,62,22,63,182,145,223,211,80,63,53,250,244,239,202,139,12,112,241,234,217,112,245,153,117,172,230,95,73,232,152,223,167,187,255,0,33,41,192,202,254,228,66,27,191,29,121,162,255,86,75,151,123,2,175,162,99,231,27,15,193,223,49,119,186,70,143,60,217,255, 147,115,191,187,228,177,176,87,222,120,94,58,139,58,34,133,225,169,174,123,224,199,167,221,15,5,66,177,162,251,168,59,117,37,84,144,45,218,209,11,225,125,135,32,210,218,5,210,132,133,24,251,196,67,128,214,245,115,213,149,160,93,186,0,244,231,156,14,250, 211,87,179,164,63,165,57,145,237,143,97,127,4,73,179,8,104,133,191,93,191,10,102,148,232,21,123,255,233,21,5,100,155,7,118,34,46,134,45,94,152,116,248,193,19,136,48,99,79,195,2,28,17,10,116,157,191,178,212,0,115,170,139,97,54,217,120,78,157,7,193,43, 253,143,64,191,187,131,60,75,229,151,18,210,134,63,99,13,142,205,245,207,244,63,131,87,15,10,128,143,165,254,233,190,199,235,206,173,190,118,218,138,178,79,71,131,242,18,98,232,196,192,81,111,31,188,216,251,87,248,230,178,159,170,178,159,218,229,139, 216,198,30,6,212,227,103,229,130,84,0,8,160,41,44,80,245,24,97,111,127,4,201,188,72,128,210,34,128,66,215,241,19,107,249,213,44,2,112,188,92,144,227,64,209,129,62,31,7,173,172,218,49,246,10,24,5,249,235,254,26,94,3,98,72,180,236,252,67,219,247,164,40, 198,254,63,228,176,226,33,248,48,98,36,70,151,2,190,151,236,82,0,189,96,247,143,111,133,221,227,91,84,223,103,218,48,136,54,15,226,202,74,82,96,252,247,98,182,63,130,100,168,8,80,178,58,224,31,161,30,190,129,124,22,221,82,97,252,39,2,35,240,124,207,253, 228,115,181,178,187,253,49,135,172,64,128,195,79,244,221,98,233,118,143,225,21,131,2,224,223,98,238,112,141,29,121,178,239,7,218,130,100,2,36,26,208,242,122,216,216,251,144,242,249,0,105,34,145,237,143,97,127,4,201,88,17,160,112,117,64,186,8,75,33,120, 162,243,247,224,139,186,65,208,200,127,14,83,227,111,106,114,188,80,255,204,192,179,120,165,160,0,56,105,14,63,222,251,220,224,62,243,179,201,148,6,210,132,149,72,44,124,226,66,206,122,227,143,189,253,17,36,59,34,1,89,46,2,54,246,61,8,189,174,22,150, 84,45,219,184,9,28,157,244,55,186,237,174,150,31,96,232,31,5,192,212,110,40,114,71,237,250,99,251,15,66,158,232,16,29,25,41,91,129,114,122,48,249,6,225,233,238,123,21,237,15,144,90,227,191,151,213,249,99,216,31,65,178,41,18,16,202,202,239,177,119,252, 13,216,101,218,156,212,186,63,133,150,116,31,120,168,235,59,246,126,175,5,175,14,20,0,83,198,57,226,183,239,190,183,253,38,65,199,199,146,49,124,244,66,62,98,222,1,111,14,61,149,149,198,159,102,251,163,231,143,32,89,36,2,88,179,160,86,48,101,89,36,160, 207,221,198,146,167,169,227,148,204,186,191,190,88,11,29,111,142,221,215,242,202,200,91,120,85,160,0,144,13,185,136,182,117,189,99,250,189,190,40,185,81,150,116,94,192,235,131,79,66,131,117,79,118,121,254,88,234,135,32,89,43,2,254,227,229,86,176,248, 35,89,177,223,174,176,13,254,214,241,91,136,198,194,192,37,81,239,47,232,121,234,188,213,239,189,191,243,103,120,53,160,0,72,154,157,247,180,253,175,173,207,187,95,48,200,191,40,53,228,80,107,52,28,60,221,245,71,24,243,245,103,252,119,110,125,249,8,51, 254,186,2,236,240,135,32,217,40,2,138,136,8,104,157,244,192,247,183,116,64,40,195,39,222,70,99,17,120,188,243,183,96,14,140,129,150,147,95,202,168,225,52,180,121,145,111,251,111,91,190,225,183,133,130,120,37,160,0,72,154,144,39,26,125,239,215,205,223, 136,137,49,135,38,137,210,64,58,47,192,39,122,224,209,142,95,131,55,234,202,216,239,59,209,58,10,77,47,30,2,45,107,239,139,214,31,65,178,149,98,189,0,187,7,29,240,199,189,131,25,189,159,47,245,61,8,109,246,195,96,16,146,43,99,214,23,9,112,228,169,254, 91,70,14,219,218,240,236,163,0,80,208,40,58,251,14,61,214,251,93,93,65,114,189,147,244,156,1,70,125,253,240,183,142,223,129,20,23,51,238,123,74,17,17,234,159,218,199,166,36,106,56,52,254,8,146,11,34,224,241,250,49,104,24,207,204,225,119,219,70,55,178, 65,63,201,38,253,209,138,173,161,131,214,167,223,127,164,231,17,60,235,40,0,20,231,200,147,125,47,246,238,152,120,32,153,210,64,10,157,102,213,100,219,207,198,7,103,26,131,123,187,193,222,103,6,65,143,77,34,17,36,39,30,242,68,199,135,197,24,252,245,253, 225,140,219,183,102,242,28,220,212,191,158,56,70,201,37,253,241,90,14,124,214,80,251,123,119,181,96,183,63,20,0,234,64,39,72,189,123,103,243,143,236,3,190,131,201,228,3,48,17,64,212,238,182,177,77,240,222,232,75,153,243,253,164,24,244,110,107,7,142,231, 241,100,35,72,14,81,160,229,97,239,160,19,186,172,254,140,217,39,58,225,239,111,157,191,103,9,11,201,36,253,209,72,37,39,112,254,237,191,107,253,170,199,20,240,224,217,70,1,160,26,97,111,52,252,222,175,155,191,34,69,98,214,100,90,5,83,181,75,151,3,54, 245,173,135,122,235,238,140,248,110,206,17,59,56,134,108,192,235,208,251,71,144,92,139,2,248,34,34,108,235,179,101,196,254,56,66,22,88,223,254,75,8,136,94,16,184,228,42,172,104,68,246,224,134,238,239,13,236,49,55,226,153,70,1,160,58,19,173,206,129,125, 127,233,252,166,96,224,227,201,228,200,81,213,75,43,3,158,236,188,27,122,221,173,105,255,94,214,158,73,16,67,81,204,250,71,144,28,132,142,250,61,58,150,254,142,164,65,209,15,27,218,239,4,115,96,20,116,156,252,78,127,52,114,64,235,253,123,119,76,60,120, 232,241,222,39,240,12,163,0,72,25,77,47,13,189,217,242,202,240,255,232,146,236,15,64,251,92,211,190,215,27,218,126,201,134,95,164,19,247,152,3,79,44,130,228,176,0,24,243,132,210,90,18,72,19,159,105,185,31,109,243,107,224,11,18,86,92,38,218,2,30,108,253, 222,125,59,126,223,118,75,150,54,89,69,1,144,205,236,190,183,227,215,163,71,237,155,244,73,38,5,210,186,87,218,4,227,225,214,255,97,63,211,69,216,19,196,204,127,4,201,213,135,189,70,3,254,136,4,193,168,148,182,125,120,182,251,62,168,183,236,78,58,227, 159,23,56,136,248,37,211,187,191,108,250,178,223,22,10,227,217,69,1,144,114,196,176,4,239,252,162,233,91,238,137,96,179,160,79,230,80,198,217,208,11,147,127,16,30,110,251,5,4,68,95,90,190,79,28,147,103,17,36,167,137,39,229,115,39,199,171,3,143,192,110, 211,102,40,16,138,146,122,31,186,236,202,235,184,200,206,63,180,253,159,201,118,215,40,158,85,20,0,105,195,51,17,112,191,251,171,230,47,74,209,184,45,153,161,65,20,26,18,163,161,177,71,219,127,197,166,8,166,26,193,40,64,60,142,177,52,4,201,73,227,31, 167,209,70,13,232,210,16,229,123,103,228,69,120,115,232,25,48,36,233,249,179,231,100,137,142,54,251,249,126,231,91,99,187,241,172,162,0,72,59,163,71,108,93,251,254,210,249,53,94,203,75,201,54,206,163,161,177,38,219,1,54,66,56,22,79,109,168,174,168,166, 20,112,45,13,65,114,19,137,40,128,234,66,29,20,166,184,199,199,158,241,55,224,229,190,135,137,240,48,36,85,235,207,140,63,29,242,179,117,236,190,131,235,187,215,227,25,69,1,144,49,52,189,52,180,181,225,249,129,155,13,165,186,164,223,139,134,200,222,159, 124,15,158,233,254,19,164,210,34,87,45,172,5,13,143,151,4,130,228,34,81,41,6,43,107,139,83,90,228,115,216,188,13,158,35,207,49,158,211,2,167,73,238,217,66,199,251,78,116,184,222,216,241,251,214,219,176,217,15,10,128,140,99,223,95,187,30,104,127,125,244, 207,180,31,181,18,34,128,206,196,166,163,49,83,69,245,226,90,40,170,46,134,152,136,55,23,130,228,26,60,199,193,69,11,42,83,246,121,116,242,233,19,93,247,176,82,103,94,147,92,115,49,58,225,47,232,138,180,188,249,211,250,175,134,220,105,204,98,68,1,128, 124,28,49,162,74,183,255,182,245,150,201,118,215,230,100,103,6,80,232,114,192,187,35,47,178,65,25,169,128,142,253,157,123,206,66,16,195,81,60,153,8,146,67,208,210,191,101,213,133,112,206,156,178,148,124,30,29,236,243,88,199,93,16,139,199,136,241,79,238, 89,72,219,252,70,2,226,196,27,63,173,191,222,109,10,184,240,108,162,0,200,88,200,133,26,219,114,219,209,175,186,70,253,135,105,200,42,25,232,122,25,77,154,121,103,248,5,216,60,240,120,74,246,127,233,149,171,193,88,94,8,49,9,163,0,8,146,51,207,37,114, 63,127,235,204,217,228,121,162,254,35,191,205,113,24,214,183,255,2,164,152,200,250,156,36,245,12,228,52,52,227,63,176,231,190,142,207,155,26,29,125,120,38,81,0,100,60,62,107,200,251,206,157,205,55,132,189,209,1,170,94,147,23,1,5,176,101,240,137,148,136, 128,194,234,98,88,245,185,51,18,29,1,17,4,201,122,188,97,9,46,93,88,5,215,173,168,77,137,231,191,190,245,23,16,149,34,73,183,248,165,9,213,196,137,138,239,188,167,237,27,237,175,143,238,195,51,137,2,32,107,24,111,118,140,190,241,211,250,235,136,253,182, 39,51,51,224,67,34,96,40,53,34,96,217,149,171,97,193,249,75,33,226,199,254,26,8,146,173,208,167,78,32,42,193,156,50,3,220,117,217,98,224,53,234,166,255,29,247,252,163,177,228,141,63,133,182,249,109,121,121,248,135,77,47,13,109,196,179,137,2,32,235,24, 61,106,111,222,125,111,251,231,121,29,31,212,40,33,2,248,2,120,125,232,73,216,212,247,176,202,79,14,13,156,253,159,151,192,172,181,117,40,2,16,36,75,241,19,227,95,83,168,131,245,159,89,9,179,74,13,42,123,254,135,96,125,219,47,21,241,252,41,116,192,15, 49,254,119,237,184,187,237,126,60,147,40,0,178,150,230,77,195,59,118,254,161,237,27,188,150,139,37,219,102,151,77,16,228,141,176,117,248,89,213,171,3,180,70,45,92,248,163,79,193,194,139,150,65,36,16,134,120,12,27,4,32,72,182,64,195,254,75,170,10,225, 169,207,175,134,85,211,139,85,253,44,154,237,255,80,219,255,18,207,63,172,152,231,63,124,200,246,200,182,187,90,254,31,62,119,80,0,100,191,8,216,56,244,82,253,51,3,223,165,77,44,146,45,194,61,158,24,248,238,200,11,240,116,247,31,33,14,234,37,235,9,6, 45,124,226,7,151,195,25,95,63,143,117,8,148,34,88,125,131,32,153,76,140,220,167,158,176,8,87,47,173,134,23,190,116,42,44,175,41,82,245,243,14,153,183,193,163,29,191,97,67,126,4,141,50,158,255,120,179,99,211,219,255,211,248,159,216,148,20,5,64,206,176, 255,161,174,245,205,155,134,126,202,68,64,146,28,23,1,187,198,94,131,199,59,126,11,98,44,162,234,190,175,248,204,90,184,248,167,215,64,65,101,17,68,131,17,60,153,8,146,97,80,191,34,44,198,128,22,239,220,126,193,2,88,255,217,149,80,89,160,85,245,51,247, 140,191,14,127,235,248,29,113,14,98,202,24,255,2,129,142,90,127,119,243,173,71,190,22,112,132,209,219,64,1,144,59,196,165,56,108,187,171,245,247,45,47,15,255,198,80,162,76,36,192,40,20,193,254,137,183,217,218,91,72,10,168,186,255,51,214,204,129,203,127, 117,253,137,188,0,12,205,33,72,230,224,33,246,114,122,137,30,30,189,254,20,248,239,117,115,85,255,188,119,70,94,128,103,186,238,101,221,253,146,173,243,63,110,252,29,67,190,3,91,110,61,250,185,160,51,18,196,51,138,2,32,247,68,64,156,137,128,59,90,94, 25,254,179,18,141,130,40,180,99,96,131,117,47,252,165,229,103,224,137,56,84,221,127,218,37,240,226,219,175,129,83,191,116,14,19,0,82,68,196,147,138,32,105,68,138,197,153,241,191,124,113,21,108,250,242,169,112,209,252,10,213,63,243,149,129,71,96,99,223, 67,32,112,58,34,0,248,164,223,143,118,249,11,56,195,245,239,252,162,233,51,228,167,7,207,42,10,128,220,22,1,191,105,249,225,240,251,214,13,74,44,7,80,104,199,192,46,103,35,252,169,249,199,96,14,142,169,186,255,52,145,113,245,23,206,34,66,224,106,40,174, 45,133,72,0,151,4,16,36,29,4,163,49,208,104,52,240,255,46,156,15,143,17,207,127,70,137,186,153,254,116,157,255,169,174,63,192,27,131,79,177,100,228,100,123,251,31,55,254,33,79,164,117,243,173,71,62,61,217,225,178,226,89,69,1,144,7,34,0,224,237,255,109, 250,142,169,217,241,152,174,72,153,72,0,45,17,28,245,246,193,125,141,183,193,160,167,83,245,239,48,99,205,92,184,252,215,55,192,130,243,151,64,52,24,197,249,1,8,146,194,231,7,77,244,91,82,93,8,207,124,97,53,252,215,57,115,85,31,240,19,20,125,240,112, 219,47,216,124,18,26,117,212,40,240,137,204,248,187,35,237,196,248,127,106,178,205,101,194,51,139,2,32,111,8,56,194,113,114,225,127,107,162,197,249,24,205,124,85,74,4,216,195,22,248,115,243,79,160,217,118,64,245,239,96,44,43,128,243,110,190,2,214,125, 247,18,208,21,234,48,65,16,65,84,38,44,197,32,68,182,111,172,157,197,66,254,103,206,42,85,253,51,237,33,51,121,166,252,20,26,44,187,153,241,87,130,99,158,127,223,230,219,142,92,75,140,255,24,158,89,20,0,121,71,208,25,1,34,2,110,154,104,117,62,166,47, 82,98,57,32,14,58,78,15,33,49,192,212,250,110,211,150,148,124,143,69,151,174,128,203,127,117,3,204,60,117,30,68,3,17,156,35,128,32,74,123,253,64,107,251,69,152,81,108,128,245,159,89,193,58,251,149,24,4,213,63,119,216,219,13,127,106,186,21,250,220,173, 44,233,88,17,227,111,96,158,127,31,121,246,93,73,140,255,0,158,93,20,0,249,44,2,226,91,110,61,122,211,120,139,67,33,17,0,172,25,7,13,208,61,211,125,47,188,220,191,158,60,60,212,207,216,47,157,89,14,151,222,241,105,56,227,155,231,131,160,19,216,178,0, 130,32,201,67,7,249,208,245,254,207,175,154,14,175,126,229,52,184,98,113,117,74,62,183,201,182,15,238,107,250,17,88,130,38,48,240,133,202,121,254,238,72,219,230,219,142,94,65,140,63,14,247,65,1,128,4,156,97,34,2,142,220,52,214,104,87,44,39,128,102,231, 234,120,3,188,53,244,12,108,104,187,19,2,162,79,253,47,66,84,199,242,107,79,133,203,239,188,30,102,174,153,131,209,0,4,73,198,235,143,39,188,254,233,197,122,248,235,181,203,225,79,87,45,131,154,34,93,74,62,251,189,209,151,224,225,182,95,66,80,12,128, 142,51,28,139,65,40,96,252,19,9,127,196,243,119,246,227,25,70,1,128,156,16,1,145,248,43,223,123,255,91,109,175,141,254,89,169,234,128,227,189,2,14,155,183,49,37,111,14,140,166,228,187,148,207,171,130,75,127,254,105,56,235,166,11,65,87,160,99,66,0,176, 109,0,130,156,52,33,49,198,214,251,255,207,154,153,240,234,87,215,194,53,203,106,82,242,185,98,44,10,207,246,252,137,181,26,231,200,243,67,137,214,190,20,109,129,64,141,255,209,99,9,127,184,230,143,2,0,249,167,155,47,28,131,109,191,105,254,97,203,43, 195,191,99,205,130,20,130,138,0,90,25,240,135,198,91,216,208,142,148,160,209,192,210,79,173,134,43,126,243,57,152,119,238,98,16,35,81,144,162,216,220,11,65,254,21,137,186,126,17,22,87,21,178,210,190,187,175,92,194,6,250,164,2,71,216,10,247,55,255,20, 182,143,190,114,172,204,143,87,228,125,89,147,159,65,239,62,52,254,40,0,144,127,3,13,251,189,119,87,203,237,68,4,252,92,137,217,1,199,161,55,52,109,20,244,215,214,59,88,120,47,85,148,76,47,131,11,110,187,18,46,184,229,74,40,158,86,138,93,4,17,228,163, 238,123,178,249,35,18,104,121,14,110,62,183,14,94,249,202,105,112,201,130,202,148,125,126,175,171,5,254,216,120,51,116,56,143,42,86,230,199,140,127,161,0,19,109,206,119,55,126,231,224,213,196,248,99,157,127,134,33,224,33,200,204,167,193,182,223,180,252, 154,136,1,247,170,235,230,222,31,241,139,138,24,77,45,167,131,88,92,130,23,122,255,2,38,223,32,124,113,209,247,216,76,129,84,48,119,221,34,152,182,106,54,180,191,90,15,93,239,180,178,101,1,58,113,16,65,242,29,218,195,95,36,55,251,165,11,171,224,182,243, 234,96,69,109,81,74,63,159,86,11,209,206,126,116,154,31,45,37,86,10,58,213,143,14,246,161,189,253,177,189,47,10,0,100,138,145,0,34,2,30,112,12,120,29,231,255,112,249,99,98,36,166,167,243,4,146,133,134,245,140,124,33,236,25,127,3,76,254,65,248,198,178, 31,195,204,194,249,41,249,78,250,34,3,156,246,213,115,97,238,185,139,160,249,133,67,48,86,63,200,58,11,242,58,188,12,145,252,67,36,162,62,16,149,88,67,159,31,174,171,131,79,47,175,73,233,231,135,165,32,188,212,247,32,19,0,90,78,207,54,69,208,36,194,254, 195,7,45,27,182,254,188,233,187,196,248,227,218,95,134,130,75,0,25,78,195,243,131,207,238,252,67,251,117,130,158,119,241,130,114,167,139,134,249,134,60,93,240,199,134,155,225,176,121,123,74,191,83,229,252,26,184,248,103,215,192,249,183,94,9,101,179,43, 33,26,8,99,39,65,36,111,136,29,203,238,47,212,241,240,163,243,231,195,230,175,174,77,185,241,31,39,226,255,222,166,219,96,231,216,107,108,121,144,87,104,189,95,67,140,63,93,186,108,123,109,228,174,87,126,112,248,219,1,39,78,245,195,8,0,146,20,205,27, 135,222,242,154,131,87,92,118,199,234,141,250,18,237,108,49,164,204,61,69,111,252,160,228,135,71,219,127,13,3,158,78,184,126,193,77,202,121,1,39,193,188,117,139,96,214,105,243,160,251,237,22,232,120,179,9,2,54,47,8,6,29,139,10,32,72,174,65,227,119,1, 226,12,235,137,144,255,194,170,25,108,106,95,93,185,49,229,251,241,190,249,61,120,177,231,175,224,139,186,20,235,236,199,140,63,185,111,181,70,62,222,180,113,248,230,29,191,107,249,115,28,83,125,80,0,32,202,48,176,199,124,232,245,159,28,189,232,83,191, 62,109,83,97,165,126,77,84,33,17,192,107,180,192,241,2,188,59,242,34,235,250,245,149,197,55,195,204,162,249,169,187,0,13,90,88,241,153,181,48,239,19,139,161,227,245,70,232,219,209,1,17,95,24,4,163,150,13,58,65,144,92,128,54,242,161,92,180,160,18,254, 251,156,185,112,70,10,90,248,254,35,52,228,255,114,255,6,230,245,243,156,192,28,0,165,224,181,28,221,252,59,239,105,187,177,233,165,161,151,240,140,103,7,184,4,144,69,152,26,29,253,47,126,107,255,165,214,94,207,219,74,150,9,210,140,95,234,9,244,185,90, 225,15,141,55,195,190,137,183,82,254,221,10,171,138,89,23,193,43,127,243,57,88,120,209,50,230,46,177,110,130,232,70,32,89,12,173,231,167,217,253,167,205,44,129,71,174,91,9,79,125,110,85,90,140,255,144,183,139,221,219,219,70,55,129,142,215,131,160,81, 206,247,163,13,126,196,144,100,122,239,55,205,87,162,241,71,1,128,168,136,103,34,104,223,124,203,145,79,15,236,53,111,160,173,131,149,116,146,169,71,16,146,2,240,68,231,221,240,120,231,111,193,27,117,165,252,251,149,205,169,132,115,191,127,25,92,246, 203,235,96,238,217,11,32,38,197,201,195,37,138,141,132,144,172,130,102,246,123,195,18,44,175,41,130,63,95,179,140,13,238,185,108,81,85,90,246,133,26,253,123,27,111,133,33,79,183,162,37,126,20,173,129,117,247,107,220,114,219,145,139,219,54,143,238,197, 51,159,93,224,18,64,22,226,179,134,34,175,221,114,228,219,151,252,244,148,193,149,215,206,249,173,68,60,140,152,164,140,133,228,137,103,192,243,60,236,31,223,10,3,238,14,248,226,162,255,134,149,149,103,166,252,59,86,47,158,6,23,254,248,42,48,119,152, 160,125,115,3,152,26,135,89,91,97,173,94,0,192,165,1,36,131,61,126,154,221,79,13,255,55,215,206,130,235,86,214,18,97,157,30,63,203,30,154,132,23,123,255,2,245,214,61,172,157,175,158,55,40,250,254,180,204,207,220,238,218,242,214,29,13,223,112,142,248, 157,120,246,81,0,32,41,130,150,4,110,251,77,203,239,156,195,190,254,79,252,215,178,71,52,92,188,84,138,42,149,73,79,91,8,23,130,53,56,14,127,105,253,25,92,50,235,122,184,182,238,27,138,174,25,158,44,181,203,103,178,109,178,109,12,58,223,106,6,83,195, 16,72,145,40,8,122,45,38,11,34,25,101,248,105,23,191,149,211,138,225,171,167,206,128,207,46,159,6,70,109,250,2,172,135,204,219,96,83,223,122,112,134,45,172,236,87,73,88,166,127,137,14,58,182,142,221,183,235,158,182,219,2,88,230,135,2,0,73,15,245,207, 12,108,116,12,250,6,47,251,249,234,103,140,101,186,37,74,37,7,82,104,227,160,56,196,224,237,225,231,160,203,217,0,95,88,244,61,88,92,182,58,45,223,115,218,202,89,108,51,119,142,67,247,214,102,24,171,31,98,205,132,4,131,64,132,0,174,100,33,105,16,225, 113,128,160,152,184,223,78,155,81,202,12,63,237,217,175,227,211,119,61,186,194,54,120,165,127,3,28,156,124,143,149,246,41,217,216,135,194,9,28,240,58,46,124,232,241,222,31,238,251,107,215,195,216,213,19,5,0,146,102,6,247,91,142,190,120,211,129,11,174, 249,253,218,191,85,47,41,189,50,236,83,110,205,92,3,28,155,37,48,234,235,131,63,55,255,24,46,153,117,3,92,53,239,43,105,137,6,176,136,192,178,25,108,115,12,88,161,251,221,86,24,121,191,31,130,110,63,8,58,45,123,56,33,136,218,72,196,242,211,172,126,26, 218,63,191,174,2,190,186,102,38,92,186,176,18,248,52,71,164,14,91,118,192,43,125,27,88,228,206,32,20,40,186,214,207,28,2,35,15,17,191,56,178,253,119,45,223,232,120,99,108,39,94,9,40,0,144,12,193,53,234,55,111,250,238,251,215,92,120,219,138,223,45,189, 124,230,109,180,87,128,82,121,1,20,186,134,24,139,199,224,141,161,167,160,221,113,4,110,88,248,29,88,86,126,90,218,190,111,197,252,106,56,231,59,23,195,202,207,172,133,254,157,157,48,176,183,27,188,19,174,132,135,162,21,0,112,117,0,81,152,40,185,159, 66,196,227,47,51,106,225,138,197,213,240,21,98,248,207,154,93,154,246,253,114,132,204,196,235,127,4,14,89,182,3,79,126,25,85,104,239,77,215,251,109,253,222,221,219,126,221,252,245,241,22,231,48,94,13,40,0,144,12,35,232,138,72,91,239,104,252,145,189,207, 219,124,246,77,139,255,194,243,154,82,41,162,92,135,61,78,195,177,44,226,68,52,224,39,112,193,204,107,224,154,121,95,131,34,109,89,218,190,51,29,48,180,230,75,103,195,242,107,214,192,208,129,94,38,6,108,125,22,34,126,36,204,19,64,146,134,134,249,143, 175,239,207,45,55,192,213,75,107,224,115,167,76,135,133,149,5,25,177,127,123,199,223,132,45,131,79,48,17,160,134,215,79,239,31,218,214,183,111,231,228,95,119,220,221,122,171,207,18,10,227,85,129,2,0,201,96,14,63,209,247,140,109,192,219,126,233,237,171, 254,86,88,165,95,77,135,9,41,137,142,211,179,220,128,109,35,155,160,221,126,24,62,61,255,70,56,163,230,226,180,126,103,93,145,1,22,95,118,10,44,186,116,37,76,180,140,66,255,174,78,24,111,26,134,144,59,8,156,150,248,69,90,62,63,47,6,77,90,94,154,245,208, 76,254,96,84,34,70,149,103,117,251,55,172,156,198,188,254,50,99,102,60,50,169,8,127,149,120,253,45,246,247,65,224,116,170,120,253,188,142,3,142,215,120,15,172,239,254,225,161,199,122,30,143,99,183,110,20,0,72,118,48,176,199,220,184,113,232,192,5,151, 220,190,234,254,57,103,86,125,77,169,137,130,127,55,14,28,123,232,216,130,19,176,161,237,78,56,90,189,11,62,51,255,63,96,122,225,220,244,218,59,226,177,204,88,51,135,109,222,73,55,139,10,12,147,205,57,108,99,101,132,130,78,0,13,159,39,185,2,196,125,165, 3,152,228,82,162,23,242,170,226,146,222,30,97,81,2,186,114,54,163,88,15,151,18,79,255,51,43,106,225,204,89,165,25,179,143,180,79,199,59,35,47,192,246,209,151,33,32,250,20,79,242,59,33,168,11,5,32,222,126,203,206,63,180,221,72,188,255,122,124,162,162, 0,64,178,12,231,136,223,253,234,15,14,125,125,221,119,150,28,90,251,229,249,247,196,98,241,2,37,151,4,216,5,68,188,15,1,226,80,111,221,13,93,174,70,184,116,246,13,240,201,217,159,83,237,193,52,21,232,242,192,41,215,157,14,43,174,61,149,69,5,134,246,245, 194,120,243,48,4,28,126,34,2,52,44,87,32,167,151,8,136,33,43,154,38,223,120,213,18,35,104,16,56,22,6,207,85,33,64,37,113,68,140,65,132,136,195,34,34,120,214,205,45,135,107,151,213,178,164,190,234,66,93,70,237,107,3,185,199,104,184,127,212,219,199,146, 112,213,184,199,232,253,160,47,18,96,232,160,245,201,237,191,107,253,129,107,212,239,198,39,41,10,0,36,75,161,6,127,239,253,157,15,78,182,187,234,47,188,121,197,250,162,90,131,226,75,2,52,30,64,31,70,81,41,12,175,245,63,10,245,150,221,112,205,188,175, 195,218,154,11,50,226,24,112,2,15,51,79,155,199,182,128,221,199,74,8,135,15,246,129,173,119,18,34,254,48,75,28,164,203,4,185,54,123,128,126,167,202,186,106,217,175,159,87,110,132,154,34,61,76,120,195,160,205,161,99,67,141,62,77,232,163,222,190,142,156, 251,197,213,133,240,201,133,85,112,229,146,106,88,81,83,148,113,251,59,234,235,135,215,137,225,111,178,238,35,215,104,162,42,71,13,88,200,159,211,120,15,61,222,123,219,193,13,61,27,148,118,22,16,20,0,72,154,232,221,62,113,104,178,205,121,254,197,63,57, 229,158,5,23,76,251,191,209,128,168,104,149,0,51,56,26,158,61,156,38,252,195,240,112,251,47,96,213,228,57,44,73,112,94,201,210,140,57,14,5,149,69,176,248,178,149,108,115,141,218,97,244,200,32,17,4,131,172,172,48,26,140,228,140,24,160,227,149,139,170, 139,161,124,158,124,1,80,164,227,225,212,233,37,48,228,52,131,86,151,221,57,20,39,140,62,237,38,73,188,220,185,101,70,184,96,126,5,92,177,168,10,78,159,85,154,214,218,253,143,195,19,113,194,123,163,47,193,110,211,150,99,225,126,35,168,149,153,65,179, 252,157,35,190,195,59,239,110,251,54,241,254,155,240,137,137,2,0,201,49,188,230,144,103,243,45,71,190,125,214,127,44,218,117,198,215,23,222,167,53,242,53,209,160,242,77,188,104,3,33,250,200,109,182,237,135,110,103,3,172,155,126,37,92,62,231,139,80,105, 168,205,168,227,81,54,187,146,109,116,153,192,222,111,97,93,6,105,203,97,154,47,64,155,12,209,92,1,154,60,152,141,203,4,98,88,132,89,107,235,64,107,76,110,104,20,157,83,255,90,135,57,59,141,62,177,250,52,180,79,55,106,224,231,150,27,97,221,156,114,214, 147,159,26,253,162,12,21,53,98,44,10,123,39,222,100,19,58,45,1,147,106,225,126,38,218,137,224,165,253,252,59,223,28,187,119,239,3,157,63,247,89,67,1,124,82,162,0,64,114,152,67,143,245,62,63,114,216,118,248,194,91,87,60,48,99,85,249,149,97,175,72,30,150, 74,119,244,74,44,11,208,222,1,52,97,169,193,178,7,46,158,245,89,184,112,214,103,20,157,65,174,20,149,11,106,216,182,234,115,103,130,99,200,6,19,45,35,48,78,196,128,99,208,10,33,79,144,125,31,42,6,56,234,41,102,184,30,160,201,158,250,34,61,44,190,252, 148,164,223,235,130,186,10,56,117,70,9,52,79,120,192,152,5,149,20,180,92,143,122,249,244,103,161,78,128,165,53,69,112,238,220,114,184,136,120,251,107,166,151,144,63,203,236,239,208,96,221,3,91,135,159,99,115,56,180,42,101,247,31,135,150,247,5,221,145, 161,189,127,238,248,126,211,198,161,215,241,201,152,127,104,226,105,26,183,26,137,68,96,201,146,37,48,52,52,132,103,33,77,208,100,159,117,223,89,114,203,170,235,230,253,138,78,4,22,195,234,181,244,150,226,34,241,196,194,48,163,112,46,92,58,251,115,176, 110,250,229,228,1,167,207,130,168,137,27,44,29,227,48,78,4,129,173,199,12,126,155,7,232,240,37,22,29,32,222,83,38,86,20,68,124,97,88,249,217,181,112,250,55,206,83,228,253,118,15,58,224,107,27,91,88,231,187,76,11,134,196,200,243,139,134,246,169,151,79, 59,241,85,21,232,96,101,109,17,75,230,163,134,159,10,0,109,22,68,112,104,171,109,106,248,59,28,245,108,249,73,167,226,189,193,241,26,208,18,227,111,106,180,63,183,243,158,182,91,45,221,158,73,124,26,166,143,13,27,54,192,77,55,221,132,2,0,73,15,243,214, 213,156,122,254,15,150,61,80,181,176,228,220,136,79,141,104,192,223,161,225,205,104,60,2,243,138,151,194,101,115,62,199,250,7,208,220,129,108,128,46,11,56,134,172,108,48,17,157,73,224,26,177,179,62,3,113,98,124,50,69,16,68,67,81,150,248,119,217,157,215, 17,15,79,57,35,242,203,237,125,240,208,161,17,40,51,164,55,104,120,220,224,71,143,149,180,210,82,197,186,10,35,235,197,127,206,156,50,22,173,152,94,172,207,154,123,143,122,250,239,142,190,8,77,214,253,76,36,39,38,246,169,39,88,104,59,223,104,72,154,60, 250,84,255,79,142,60,217,255,20,205,21,65,80,0,160,0,200,247,104,64,177,86,183,238,255,46,254,241,170,235,231,254,140,184,32,70,53,163,1,204,80,197,194,108,121,96,126,233,10,184,116,246,245,176,182,250,66,214,105,48,155,160,21,5,116,137,128,138,1,123, 159,25,220,99,78,8,121,2,32,145,135,42,71,188,78,238,152,32,72,85,66,161,72,140,127,97,117,49,92,122,199,167,161,116,86,133,178,247,43,17,57,255,181,185,3,222,232,178,64,105,138,68,0,125,52,73,199,12,190,24,35,199,148,28,71,250,217,115,202,140,112,202, 180,98,214,160,135,134,245,235,202,141,105,239,195,63,85,70,188,61,196,240,191,196,150,198,34,228,94,160,235,252,26,21,13,255,9,175,191,193,254,202,238,251,58,110,157,108,119,225,131,23,5,0,10,0,228,159,162,1,167,159,255,253,101,127,172,90,84,114,190, 210,205,131,62,242,58,32,15,191,248,9,33,112,3,17,2,231,103,77,68,224,159,4,129,195,207,162,2,54,34,6,236,3,22,112,143,58,200,159,249,152,87,78,187,204,208,222,3,52,135,128,78,47,84,52,177,144,38,187,5,195,80,54,171,18,46,184,237,83,80,62,183,82,149, 239,71,59,227,221,250,86,23,188,218,110,102,9,116,74,26,221,227,198,158,118,224,163,27,253,127,131,150,131,170,2,45,204,43,47,96,97,125,234,221,175,168,45,134,57,165,134,172,51,248,31,52,252,219,198,18,57,49,180,169,143,218,134,63,225,245,11,228,26,20, 39,234,159,238,255,201,225,39,250,159,70,175,31,5,0,10,0,228,95,69,3,248,117,223,94,124,243,170,235,230,222,65,172,113,169,24,82,127,220,247,7,133,0,77,22,92,91,125,1,8,156,54,171,143,35,245,200,125,22,15,56,137,40,160,101,134,180,236,144,118,39,12,186, 252,16,13,70,217,210,1,125,246,127,80,20,76,73,24,144,91,87,140,136,204,122,206,57,123,33,156,245,173,11,192,88,94,168,234,119,162,79,139,251,15,12,195,67,135,134,193,75,174,139,2,29,7,252,20,34,28,84,79,210,48,190,116,204,208,211,223,83,207,222,72,140, 125,185,81,203,188,251,69,149,133,176,172,166,136,108,133,196,187,47,128,202,2,109,214,223,83,253,158,118,150,12,219,98,59,64,12,127,16,244,156,129,213,244,171,9,39,104,64,208,243,96,106,114,60,179,231,79,29,183,79,118,184,198,240,233,134,2,0,5,0,114, 82,204,60,181,114,217,39,190,183,244,247,51,215,84,92,163,70,223,128,143,19,2,177,184,4,115,139,23,195,5,51,175,101,57,2,106,102,66,167,26,26,13,8,218,125,224,153,116,129,107,196,1,158,113,39,75,52,164,203,9,33,111,8,196,96,132,181,44,102,150,86,147, 16,4,116,57,225,120,43,62,122,191,198,99,177,19,109,141,171,22,77,131,101,87,175,129,185,68,0,164,146,118,179,15,30,62,60,2,59,251,137,184,33,98,134,138,0,129,238,43,221,79,77,66,41,80,143,254,184,177,167,80,175,157,86,18,148,234,5,214,101,112,22,241, 228,23,84,20,16,131,95,0,117,228,231,172,18,3,84,228,128,177,255,32,29,142,163,176,211,244,26,155,153,145,8,245,27,88,27,109,117,159,234,199,50,252,157,145,158,131,143,244,252,164,245,149,225,215,82,113,239,34,40,0,80,0,228,24,212,131,56,253,107,11,190, 118,218,151,234,238,212,23,107,231,70,2,98,194,56,169,109,40,99,17,98,64,162,48,173,96,46,156,59,253,74,56,103,218,101,80,166,175,202,217,227,28,9,132,33,228,10,130,223,230,5,159,213,3,126,139,135,252,244,38,132,129,39,200,234,250,169,93,229,137,241, 44,172,44,130,202,133,181,48,99,205,92,168,89,58,61,173,251,61,224,8,176,42,129,35,99,110,24,38,251,239,9,137,236,242,160,98,128,122,244,53,133,58,152,73,12,253,76,98,220,231,150,25,96,6,249,89,91,164,135,10,242,119,185,218,94,152,94,187,180,107,223, 238,241,215,161,215,213,66,174,99,233,152,225,215,164,228,126,229,120,77,164,115,171,233,254,131,27,186,239,114,155,2,78,124,138,161,0,64,1,128,36,69,213,130,226,234,115,190,189,248,127,23,92,56,253,59,113,41,198,139,225,212,172,35,178,170,1,242,64,45, 55,84,195,233,53,23,50,49,48,187,104,97,94,29,123,41,34,130,36,74,204,124,112,90,33,99,39,27,82,143,63,16,137,17,1,16,103,17,129,66,93,126,77,96,244,68,28,112,200,188,29,14,78,190,195,250,245,83,131,175,229,245,41,49,252,199,147,252,172,61,158,157,196, 240,255,180,111,231,228,97,124,106,161,0,64,1,128,40,202,162,139,167,175,35,66,224,174,170,5,37,23,68,137,183,23,19,83,115,253,80,47,42,34,133,216,114,192,242,138,51,224,19,68,8,172,168,60,131,24,26,236,101,133,164,23,58,154,247,224,196,59,112,212,178, 27,236,161,73,150,187,146,232,134,153,138,39,120,34,220,31,114,71,71,27,95,28,252,101,195,115,3,143,71,252,34,198,251,81,0,156,20,248,244,68,166,68,239,142,137,3,195,135,172,23,157,254,149,5,223,92,117,195,220,255,49,150,233,230,210,118,194,106,87,11, 240,108,206,64,33,241,45,99,208,104,221,3,77,182,125,48,167,104,17,156,53,237,18,86,66,88,97,168,193,147,131,164,206,129,33,98,180,213,126,136,121,251,93,206,70,8,138,126,208,17,111,63,149,249,42,130,129,167,249,33,225,222,237,19,15,30,220,208,243,59, 251,128,215,130,103,6,65,1,128,168,251,240,35,30,198,129,245,221,143,183,191,62,186,101,221,119,150,220,182,240,226,105,223,19,244,124,161,26,115,5,254,217,225,225,88,233,212,113,207,107,176,167,19,222,30,126,1,78,169,60,155,136,129,75,97,113,217,106, 38,22,16,68,13,198,253,67,112,196,178,19,26,136,183,63,238,31,6,154,16,147,106,195,79,167,246,209,181,254,137,22,199,235,71,158,232,255,69,223,238,201,6,60,51,136,172,231,41,46,1,32,201,50,235,180,202,229,68,8,252,124,198,234,138,47,210,210,54,49,197, 99,68,105,213,0,205,176,22,52,2,204,46,94,8,107,107,46,132,211,170,206,131,154,130,89,120,114,144,164,241,139,94,104,35,222,254,17,243,14,232,113,53,131,63,234,101,33,254,84,151,169,210,178,62,26,238,183,15,250,26,27,95,24,252,69,251,150,145,45,169,202, 197,65,212,3,115,0,144,156,96,197,53,179,47,62,253,107,11,126,94,89,87,124,33,237,36,40,69,83,251,112,162,201,103,52,105,144,110,197,186,82,88,84,182,10,78,175,185,8,150,87,156,14,197,218,50,60,65,200,73,35,198,69,232,119,181,194,81,235,110,102,252,173, 193,9,150,202,71,123,244,107,82,220,177,146,150,130,234,10,120,240,217,194,67,29,111,140,221,93,255,108,255,99,65,39,121,128,34,40,0,146,4,151,0,16,197,104,127,125,116,71,239,246,137,29,203,175,154,245,185,83,191,84,119,123,197,188,162,83,105,217,96, 170,18,5,89,214,53,241,204,232,22,145,34,172,191,122,163,117,31,27,67,76,69,192,169,213,231,193,162,210,85,57,213,87,0,81,86,64,14,123,186,161,201,182,31,90,236,239,195,184,111,144,85,160,208,16,191,225,216,178,83,170,13,63,235,221,31,148,108,29,111, 154,30,56,248,72,207,95,220,99,126,7,158,41,4,5,0,146,145,80,131,223,180,113,104,99,207,246,137,45,167,125,185,238,235,203,175,158,125,107,81,181,97,113,52,152,58,33,64,161,115,5,142,231,10,120,34,78,216,59,254,38,236,159,120,27,170,13,51,136,24,88,11, 171,170,214,193,162,178,83,84,155,179,142,100,7,116,30,133,201,63,0,45,182,131,208,74,140,254,136,183,15,194,82,144,133,247,143,111,169,183,252,0,58,214,190,87,242,118,110,29,219,208,248,252,224,159,205,157,238,81,60,91,136,226,151,26,46,1,32,106,82, 60,205,88,188,250,250,185,55,18,33,240,125,34,4,230,167,178,116,240,163,160,161,93,81,138,0,199,241,80,99,156,1,139,203,214,192,41,149,103,193,66,34,6,112,153,32,63,160,94,253,136,183,151,133,246,219,29,71,136,0,24,132,144,24,32,198,94,32,155,46,37,117, 251,31,103,248,181,6,158,118,125,12,14,236,49,63,121,232,177,158,123,137,225,239,197,51,150,219,96,14,0,146,15,66,160,116,245,13,243,190,189,226,234,89,223,45,172,50,204,77,183,16,56,33,6,136,49,160,149,5,21,134,106,168,43,89,14,43,42,78,103,162,160, 22,19,8,115,10,111,196,5,3,158,14,98,240,15,179,68,62,115,96,12,34,82,248,132,151,159,54,163,15,137,80,63,45,233,131,88,60,56,86,111,127,166,254,249,193,251,6,247,153,59,240,172,161,0,64,1,128,228,154,16,40,95,125,253,220,175,46,191,102,246,127,23,85, 27,22,166,122,105,224,227,160,141,134,168,24,160,235,192,133,66,49,204,44,170,99,66,96,73,249,26,214,111,160,80,91,130,39,47,139,160,137,160,180,100,175,215,221,2,93,142,70,24,246,118,131,43,108,99,21,35,212,203,231,137,183,159,78,163,127,220,240,211, 53,254,72,64,244,142,55,57,158,109,222,56,252,192,0,26,126,20,0,40,0,144,60,16,2,37,171,111,152,251,229,229,87,207,254,175,162,42,195,74,49,34,129,20,201,140,146,38,186,46,44,198,163,32,197,68,230,29,150,235,171,97,78,241,34,86,85,176,176,116,37,204, 40,156,119,34,191,0,129,140,57,103,150,160,137,24,250,46,232,118,54,195,160,167,147,253,63,13,237,211,124,16,102,244,51,164,63,4,107,219,203,12,191,100,239,219,57,249,100,195,243,3,15,89,186,220,125,120,22,81,0,160,0,64,242,75,8,212,26,13,11,47,154,118, 253,170,207,206,249,110,229,130,146,117,146,72,140,111,88,74,201,192,161,147,35,126,44,58,16,101,70,134,14,117,169,48,212,194,172,162,5,176,160,116,5,212,149,44,133,105,5,115,160,72,91,138,39,51,149,207,143,88,24,44,1,106,240,123,136,177,239,128,33,79, 55,51,248,196,153,102,127,47,104,180,25,225,229,127,200,240,11,28,51,252,62,75,112,116,232,128,245,177,166,141,67,143,17,195,143,35,122,81,0,96,25,32,146,159,120,205,193,80,227,11,131,207,182,111,25,125,118,249,85,179,174,88,122,197,204,255,154,182,162, 236,83,26,226,182,69,67,234,183,24,62,9,141,204,230,13,240,188,112,76,14,196,193,22,156,0,115,96,148,53,134,209,242,58,40,213,85,194,116,34,2,102,23,47,130,121,197,75,88,132,128,150,30,234,136,88,64,148,144,96,113,112,134,173,48,233,31,129,17,95,47,43, 213,163,137,123,142,144,5,66,82,128,253,27,122,142,104,35,168,140,171,234,32,250,67,208,113,204,248,123,38,130,205,221,239,152,30,109,222,52,252,28,185,238,177,156,15,73,59,40,0,144,204,240,232,18,229,131,111,55,109,26,122,123,193,249,211,78,95,113,237, 236,155,230,156,81,121,131,190,72,91,193,242,4,50,100,158,57,245,40,89,226,24,104,79,24,39,58,5,206,73,140,17,237,13,79,195,205,180,207,0,29,93,92,107,156,77,68,193,2,152,89,56,159,37,21,210,121,5,5,66,49,158,236,127,227,217,187,195,118,230,205,155,124, 3,48,70,182,201,192,8,216,66,19,172,3,31,141,196,208,99,204,68,25,39,100,108,25,39,91,223,55,240,16,139,197,99,246,126,239,123,173,175,141,172,39,198,255,141,144,39,26,197,179,140,160,0,64,144,143,118,247,160,127,247,228,81,186,77,91,81,246,171,37,151, 207,252,210,146,79,206,248,122,97,181,126,5,77,22,204,172,229,129,132,32,248,96,132,128,66,115,7,104,120,122,194,63,12,13,214,61,39,122,18,20,235,202,88,100,160,198,56,11,166,21,204,102,173,138,171,13,211,161,68,95,193,150,16,50,41,92,173,54,116,109, 222,19,117,130,61,56,9,214,208,56,57,86,35,44,170,66,167,233,185,35,118,54,92,71,36,199,81,163,57,118,124,53,252,137,38,79,153,12,175,229,88,175,254,176,79,180,145,107,248,229,246,55,198,30,27,220,111,57,18,19,177,101,47,130,2,0,65,78,154,201,118,215, 24,217,238,57,250,84,223,253,139,46,158,254,169,37,151,205,252,70,237,242,210,203,4,29,103,160,131,135,50,37,42,240,79,162,128,38,157,209,13,180,31,208,53,113,150,133,110,15,153,217,244,56,154,123,67,141,26,93,38,40,212,22,67,137,174,130,37,27,82,129, 64,55,250,123,186,21,17,209,80,164,45,33,2,162,32,107,134,28,209,137,141,180,196,206,23,245,128,95,244,144,239,109,103,223,157,46,157,56,194,102,22,186,167,94,62,253,123,26,194,167,94,61,133,35,223,143,126,71,142,25,123,61,219,178,1,42,82,4,3,199,188, 126,183,41,208,208,187,115,226,201,246,45,163,27,29,131,190,9,188,139,17,20,0,8,146,4,126,91,56,220,244,210,208,171,205,155,134,95,157,177,186,98,233,178,43,102,126,121,254,121,53,95,44,170,49,46,138,209,225,67,52,87,32,195,39,160,159,136,20,104,132, 127,48,150,116,9,193,197,140,228,144,167,139,9,3,250,43,145,185,174,101,73,135,6,190,16,10,180,69,172,81,17,141,20,208,173,88,151,248,61,93,82,40,20,138,192,72,54,42,38,244,124,194,112,106,201,79,186,38,206,49,131,202,177,159,199,247,227,223,27,112,242, 43,30,99,73,143,180,108,142,38,65,70,99,97,136,196,34,108,12,46,13,211,135,136,135,30,16,125,224,167,70,62,234,5,111,212,77,54,39,248,34,110,98,216,221,108,128,14,245,226,195,196,211,143,30,171,168,56,110,44,143,27,122,218,127,65,75,190,99,166,123,245, 31,115,66,129,23,18,83,249,34,1,209,49,114,196,246,70,231,155,99,79,15,236,179,236,12,123,163,18,222,181,8,10,0,4,81,210,179,140,197,193,212,104,239,34,219,255,20,62,98,248,237,162,139,166,125,114,193,133,211,190,50,99,85,249,101,58,163,80,202,6,16,209, 80,107,60,123,190,83,66,24,240,31,233,221,83,67,76,103,26,132,137,209,117,133,173,9,131,12,137,80,242,241,234,157,132,113,39,222,39,121,61,53,248,44,63,225,88,6,60,21,27,58,98,92,57,46,241,147,190,130,14,179,161,255,62,254,15,7,137,238,71,226,243,194, 240,247,202,135,8,49,252,137,225,74,18,107,154,36,178,242,200,68,69,132,116,66,36,28,127,47,106,220,169,81,63,177,79,244,23,249,169,211,16,79,62,75,188,249,127,7,157,200,71,141,126,92,138,199,157,35,254,3,61,219,39,94,24,216,61,249,170,185,203,109,194, 59,20,65,1,128,32,41,137,10,132,130,77,27,135,182,208,173,118,121,217,156,249,231,213,126,122,241,165,211,63,95,54,187,240,28,242,144,230,197,16,49,78,89,190,238,154,48,160,212,99,231,224,95,59,238,9,19,124,220,128,71,32,116,194,40,31,143,40,36,84,81, 194,200,255,171,112,73,226,243,78,124,58,253,131,99,31,173,57,254,39,199,146,240,56,128,60,201,89,96,157,250,244,28,59,54,62,107,168,119,172,97,242,53,226,237,191,100,106,118,28,165,75,81,8,130,2,0,65,210,132,185,195,53,66,182,7,142,62,213,247,192,140, 213,21,107,136,24,184,110,254,39,106,62,93,50,163,96,21,181,119,180,201,80,38,116,27,84,87,42,252,163,1,63,241,87,72,18,70,159,227,57,8,186,34,227,227,205,142,173,93,239,140,111,28,58,104,217,19,176,135,131,120,132,16,20,0,8,146,65,80,111,108,248,125, 107,19,221,222,127,84,119,231,156,51,170,206,92,112,193,180,107,103,174,169,184,170,168,218,176,146,26,67,218,109,48,219,150,9,144,20,25,125,94,147,168,217,39,63,131,238,168,217,212,228,216,62,184,215,188,105,232,160,117,151,107,204,239,196,35,132,160, 0,64,144,44,32,232,140,136,221,239,142,31,160,91,65,185,238,231,179,207,168,58,131,8,130,171,103,172,174,184,162,108,78,225,26,242,144,215,72,209,24,196,200,22,71,49,144,167,22,63,209,150,87,208,241,76,15,134,92,145,81,83,3,49,250,251,204,155,135,222, 183,238,117,141,250,237,120,144,16,20,0,8,146,197,4,156,145,232,113,49,160,53,242,119,204,88,85,177,122,193,5,181,159,156,190,170,252,138,138,185,69,103,234,10,132,66,42,4,152,32,144,80,13,228,180,205,231,52,137,90,125,178,145,243,29,247,89,67,29,19, 45,206,247,250,247,76,190,57,222,236,60,228,53,7,189,120,148,16,20,0,8,146,131,68,131,82,108,248,144,181,145,110,196,251,187,187,122,113,233,188,185,103,85,157,63,107,109,229,39,171,23,151,156,107,44,211,213,81,35,193,4,129,24,207,128,86,196,72,178,94, 62,45,215,163,205,121,104,126,68,200,19,113,216,7,188,71,71,143,218,223,29,61,106,219,110,238,112,181,133,60,81,17,15,20,130,2,0,65,242,8,234,237,155,59,93,67,116,59,252,68,223,83,197,53,134,130,234,37,165,107,230,173,171,190,104,218,242,178,11,203,102, 23,158,170,47,214,86,178,127,43,210,8,1,10,130,140,183,247,180,112,129,167,30,190,134,37,240,17,47,63,228,54,249,59,38,219,93,251,198,91,156,59,136,225,63,228,26,245,79,226,121,68,16,20,0,8,114,2,175,37,20,32,219,129,129,189,230,3,26,78,243,155,178,89, 5,181,181,203,203,78,155,177,186,226,188,218,229,165,231,150,207,42,92,161,47,33,130,64,3,172,170,128,70,9,98,212,144,160,45,73,159,193,231,52,172,54,159,122,249,244,188,136,97,41,24,176,135,186,173,189,222,131,19,45,142,61,227,173,174,163,214,30,119, 95,196,143,78,62,130,160,0,64,144,147,128,122,136,206,17,191,153,108,91,187,222,54,109,165,225,227,210,89,5,53,181,203,74,87,17,65,112,118,229,252,162,179,43,235,138,79,33,130,96,182,160,227,53,244,223,211,234,130,24,46,27,168,107,236,249,132,193,167, 63,227,49,128,144,55,98,115,141,132,58,109,3,222,195,227,77,142,131,230,78,87,163,219,20,24,12,121,162,120,18,16,4,5,0,130,40,32,8,226,113,112,141,250,45,100,219,214,253,238,248,54,250,103,69,53,134,162,178,217,133,11,103,172,42,95,93,181,176,120,109, 249,220,226,53,197,181,134,197,134,98,109,45,53,82,180,186,128,69,10,136,48,160,162,0,171,13,78,214,210,3,112,196,216,211,178,60,142,255,187,177,39,94,188,199,109,14,14,146,115,208,102,235,243,28,181,116,121,26,172,189,158,78,207,120,192,138,201,155, 8,130,2,0,65,82,134,207,18,242,145,173,105,172,222,222,68,254,247,73,106,244,139,170,141,21,21,117,133,117,53,139,75,87,150,204,44,56,165,106,126,241,138,226,233,198,133,250,98,237,76,157,158,55,82,163,70,141,21,21,4,9,97,0,121,27,49,160,30,61,109,40, 72,215,234,143,255,164,66,75,138,198,164,176,55,106,38,199,118,208,103,13,117,90,123,60,45,150,110,119,171,99,200,215,235,157,12,142,71,131,104,237,17,4,5,0,130,100,16,212,219,247,76,4,28,116,27,58,96,173,63,254,231,5,21,122,67,201,116,227,180,226,105, 198,186,202,249,197,75,43,235,138,150,24,203,117,139,74,103,22,206,209,26,249,25,250,34,109,57,17,15,26,106,16,227,82,252,88,228,32,209,159,32,17,57,56,102,239,178,105,198,193,177,14,132,52,33,143,254,158,138,35,250,27,234,217,179,89,3,116,180,115,72, 242,134,60,81,139,215,28,26,11,185,34,189,182,126,111,47,241,238,187,220,166,192,128,115,196,63,26,116,133,221,185,221,193,17,65,80,0,32,72,78,19,112,132,67,100,27,154,108,119,13,245,110,159,216,121,252,207,245,197,90,222,88,170,171,40,172,54,204,168, 152,91,56,147,252,127,93,213,130,226,217,186,66,97,94,217,156,194,105,188,150,155,110,44,211,149,11,122,190,152,136,3,3,45,101,75,180,242,255,123,226,33,253,253,7,141,36,251,43,137,206,64,248,168,30,192,39,177,12,161,249,184,137,129,241,99,30,187,230, 67,30,60,13,207,159,120,29,75,193,63,81,49,33,17,241,226,241,91,67,110,242,211,236,28,245,155,137,231,62,108,235,245,140,68,2,226,144,173,207,75,12,124,196,228,179,4,109,33,111,52,132,137,148,8,146,103,2,192,235,197,158,27,72,254,66,199,198,146,205,234, 26,243,91,77,141,246,230,143,248,39,58,190,2,138,180,70,168,48,148,232,42,202,231,20,86,199,164,120,109,113,141,161,178,100,102,65,53,49,177,85,134,18,109,25,249,125,105,92,130,98,242,239,139,5,3,103,44,252,255,236,221,75,106,194,64,0,128,225,104,226, 139,90,104,233,190,208,131,120,75,47,215,19,20,173,90,84,218,196,81,155,206,152,62,20,234,174,208,133,223,7,1,5,31,193,133,243,79,72,50,119,189,126,28,232,211,26,187,157,163,173,125,184,235,93,63,63,123,36,33,141,223,233,102,72,187,240,189,136,82,136, 91,90,237,38,196,193,61,196,125,173,226,140,61,45,23,184,110,229,217,186,92,132,213,122,82,46,227,27,103,241,125,207,211,199,229,60,126,196,244,117,182,153,174,158,222,94,222,247,217,60,76,178,101,124,189,123,231,195,25,33,132,203,11,128,162,40,178,241, 120,44,2,224,183,249,118,115,121,97,136,3,254,34,62,94,52,51,251,250,103,182,253,57,19,79,119,180,235,118,138,172,46,234,230,105,63,239,12,175,6,131,56,213,79,235,239,118,143,182,162,119,221,105,223,222,15,135,231,206,57,72,231,39,196,25,123,21,7,245, 144,53,153,80,197,45,93,63,183,137,223,183,41,119,161,42,55,135,127,171,109,154,237,239,110,246,217,182,191,255,58,64,144,213,15,205,145,137,195,145,130,188,217,209,188,104,157,236,47,112,106,52,26,253,219,119,183,106,167,38,3,192,197,105,251,9,0,64, 0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,128,0,0,0,4,0,0,32,0,0,0,1,0,0,8,0,0,64,0,0,0,2,0,0,16,0,0,128,0,0,0,4,0,0,32,0,0,128,191,246,33,192,0,100,235,173,153,70,62,64, 37,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; const char* juce_icon_png = (const char*) temp_binary_data_4; //================== juce_module_info ================== static const unsigned char temp_binary_data_5[] = "{\r\n" " \"id\": \"juce_core\",\r\n" " \"name\": \"JUCE core classes\",\r\n" " \"version\": \"3.0.0\",\r\n" " \"description\": \"The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.\",\r\n" " \"website\": \"http://www.juce.com/juce\",\r\n" " \"license\": \"ISC Permissive\",\r\n" "\r\n" " \"dependencies\": [],\r\n" "\r\n" " \"include\": \"juce_core.h\",\r\n" "\r\n" " \"compile\": [ { \"file\": \"juce_core.cpp\", \"target\": \"! xcode\" },\r\n" " { \"file\": \"juce_core.mm\", \"target\": \"xcode\" } ],\r\n" "\r\n" " \"browse\": [ \"text/*\",\r\n" " \"maths/*\",\r\n" " \"memory/*\",\r\n" " \"containers/*\",\r\n" " \"threads/*\",\r\n" " \"time/*\",\r\n" " \"files/*\",\r\n" " \"network/*\",\r\n" " \"streams/*\",\r\n" " \"logging/*\",\r\n" " \"system/*\",\r\n" " \"xml/*\",\r\n" " \"json/*\",\r\n" " \"zip/*\",\r\n" " \"unit_tests/*\",\r\n" " \"misc/*\",\r\n" " \"native/*\" ],\r\n" "\r\n" " \"OSXFrameworks\": \"Cocoa IOKit\",\r\n" " \"iOSFrameworks\": \"Foundation\",\r\n" " \"LinuxLibs\": \"rt dl pthread\",\r\n" " \"mingwLibs\": \"uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm\"\r\n" "}\r\n"; const char* juce_module_info = (const char*) temp_binary_data_5; //================== portmeirion.jpg ================== static const unsigned char temp_binary_data_6[] = { 255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,72,0,72,0,0,255,225,0,128,69,120,105,102,0,0,77,77,0,42,0,0,0,8,0,5,1,18,0,3,0,0,0,1,0,1,0,0,1,26,0,5,0,0,0,1,0,0,0,74,1,27,0,5,0,0,0,1,0,0,0,82,1,40,0,3,0,0,0,1,0,2,0,0,135,105,0,4,0,0,0,1,0,0,0,90,0,0,0,0, 0,0,0,72,0,0,0,1,0,0,0,72,0,0,0,1,0,2,160,2,0,4,0,0,0,1,0,0,2,128,160,3,0,4,0,0,0,1,0,0,1,224,0,0,0,0,255,219,0,67,0,2,1,1,2,1,1,2,2,1,2,2,2,2,2,3,5,3,3,3,3,3,6,4,4,3,5,7,6,7,7,7,6,6,6,7,8,11,9,7,8,10,8,6,6,9,13,9,10,11,11,12,12,12,7,9,13,14,13,12,14, 11,12,12,11,255,219,0,67,1,2,2,2,3,2,3,5,3,3,5,11,8,6,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,255,192,0,17,8,1,224,2,128,3,1,34,0,2,17,1,3, 17,1,255,196,0,31,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,255,196,0,181,16,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23, 24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167, 168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250,255,196,0,31,1,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1, 2,3,4,5,6,7,8,9,10,11,255,196,0,181,17,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67, 68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186, 194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250,255,218,0,12,3,1,0,2,17,3,17,0,63,0,242,134,136,238,249,23,229,163,201,254,229,62,52,163,103,205,247,107,251, 64,254,75,26,169,237,247,170,69,65,218,129,218,144,125,239,254,37,170,121,64,86,64,255,0,239,45,2,61,237,252,85,38,195,77,254,32,181,39,56,177,167,203,247,127,241,218,81,15,174,234,2,124,223,63,252,10,156,189,249,160,232,1,247,182,253,209,73,179,157, 212,238,58,124,180,111,231,41,65,206,11,141,198,157,228,154,85,77,255,0,50,209,65,208,5,62,110,159,122,158,169,131,239,71,251,159,53,59,170,255,0,122,128,18,52,237,247,105,193,1,234,41,190,245,38,209,234,212,0,155,3,168,167,121,43,248,83,184,200,95,226, 167,247,249,43,48,24,169,189,186,45,42,160,221,78,218,61,104,255,0,190,171,64,20,166,250,116,73,219,251,180,47,221,93,244,236,251,214,96,43,32,237,74,168,61,40,95,238,255,0,123,248,169,203,242,117,160,1,83,111,240,243,78,92,31,151,189,39,208,127,223, 84,253,131,222,128,5,65,187,154,93,158,223,165,1,54,82,236,31,237,208,2,170,14,56,161,83,31,240,42,117,30,95,127,252,118,129,138,169,207,221,165,217,199,189,73,229,251,209,229,255,0,112,212,88,124,200,110,197,219,239,74,19,127,90,57,67,75,249,226,149, 202,23,96,74,85,78,148,47,220,169,40,57,199,46,1,251,185,165,207,205,210,133,140,99,147,75,179,204,126,180,114,155,104,10,158,149,52,81,229,27,229,166,127,232,95,195,82,175,239,190,247,111,74,10,28,169,253,234,122,167,255,0,100,212,42,111,227,181,37, 102,64,254,237,75,179,125,27,62,95,106,40,44,118,207,147,248,105,99,79,246,104,95,210,158,191,35,117,160,3,253,202,115,32,39,165,20,191,43,208,0,200,61,62,245,57,81,121,163,171,47,240,210,231,146,180,1,23,69,255,0,122,156,157,63,224,84,158,255,0,195, 78,95,145,191,217,160,204,118,197,11,254,237,11,254,213,72,223,37,58,62,245,92,160,70,169,233,182,159,176,110,52,159,242,207,248,169,234,55,175,74,144,17,62,226,211,155,248,190,237,9,247,186,80,167,248,133,0,79,177,189,232,84,220,62,65,66,175,254,61, 75,247,241,205,104,3,21,6,223,246,169,202,159,53,44,127,119,253,154,85,249,62,253,102,1,247,219,118,41,202,138,127,218,90,60,177,247,127,134,150,128,29,228,135,85,230,157,228,47,173,44,123,121,20,244,79,74,211,148,87,67,22,29,253,233,207,31,205,214,158, 187,114,124,186,54,123,55,229,71,40,93,1,79,74,54,47,205,82,108,52,125,254,49,64,200,118,116,249,104,217,206,41,219,62,111,246,169,203,30,195,255,0,2,172,192,69,77,234,191,47,251,212,129,61,106,79,47,251,244,248,227,82,244,1,23,146,54,255,0,181,74,169, 242,212,193,19,230,249,62,229,47,145,239,250,80,4,111,31,201,252,127,37,59,202,111,74,147,203,253,198,54,211,158,63,147,238,208,2,8,196,188,145,218,150,158,159,35,123,209,252,91,104,3,231,133,69,117,221,159,187,79,84,84,90,119,221,106,77,155,235,208, 57,196,84,246,254,42,95,243,186,164,92,109,166,170,127,207,63,226,160,232,23,209,158,142,18,156,169,202,211,149,55,255,0,13,0,55,248,63,26,85,67,255,0,124,210,255,0,16,92,210,170,122,181,0,55,254,250,167,125,198,221,138,82,159,47,207,255,0,143,83,250, 208,2,42,29,188,255,0,58,23,110,239,159,117,59,157,180,171,252,71,189,103,184,13,95,187,213,169,202,141,197,42,166,207,151,20,237,155,214,128,19,253,202,113,239,207,205,252,52,4,249,176,63,149,59,99,56,229,168,0,68,251,216,249,170,69,219,38,229,249,233, 21,54,84,191,247,238,128,35,169,147,247,99,238,98,143,224,235,207,247,168,107,108,245,109,244,0,212,78,120,165,84,216,191,195,70,211,187,253,170,126,207,126,26,179,0,160,119,163,203,95,90,127,242,254,245,0,27,7,189,59,97,165,143,189,31,238,80,3,191,149, 46,71,165,11,31,190,230,165,242,253,232,1,180,237,159,188,165,242,248,99,75,179,231,247,169,108,164,130,141,128,55,251,77,78,84,31,46,105,87,238,212,148,10,131,229,167,170,117,161,83,218,156,191,126,128,27,179,251,148,245,78,86,157,221,105,87,247,109, 255,0,196,208,3,150,54,61,58,210,172,127,33,205,47,151,229,158,106,108,121,187,79,165,0,67,83,71,22,211,199,38,158,145,241,199,2,157,243,110,247,106,0,111,125,187,169,124,195,70,23,63,119,230,167,42,127,13,0,20,187,254,110,180,42,103,230,205,57,126,239, 207,182,179,1,203,250,83,134,118,251,208,169,177,126,65,186,157,207,189,0,11,247,169,81,251,83,149,50,212,80,0,191,237,237,161,126,239,90,95,45,126,93,148,42,124,180,0,191,247,213,59,29,26,133,251,148,229,79,238,252,213,161,152,15,221,245,167,46,82,145, 125,5,59,230,221,64,2,253,234,119,223,193,163,191,95,154,149,83,229,160,5,95,159,147,74,49,66,161,221,79,84,223,243,80,3,87,239,98,159,179,229,90,111,251,253,42,85,78,126,237,0,47,252,4,210,167,74,90,54,108,252,104,1,205,247,191,217,165,95,187,214,141, 131,222,157,23,244,160,6,255,0,22,234,147,98,238,254,237,34,253,62,106,114,231,230,254,42,0,68,228,244,167,47,175,254,133,66,246,199,222,167,236,246,253,40,1,187,57,246,167,42,31,248,13,56,39,203,254,207,247,169,251,27,229,160,6,236,251,219,5,42,71,187, 251,212,245,141,119,116,165,217,191,138,0,106,175,222,24,167,47,223,167,170,123,210,170,101,168,1,155,118,127,15,205,71,61,106,101,77,159,90,60,158,127,221,160,8,213,15,90,93,155,249,171,31,102,109,212,121,63,90,13,57,10,251,62,111,146,157,176,212,158, 79,183,233,66,163,118,160,204,249,223,217,133,46,193,79,110,130,149,176,245,216,97,97,191,197,210,142,126,106,86,255,0,108,208,191,124,208,0,19,230,221,82,46,31,191,205,254,237,27,13,47,166,250,10,176,159,197,214,141,155,207,240,211,249,70,165,111,187, 183,109,3,220,26,62,50,122,214,23,143,60,91,39,131,52,155,123,139,75,235,107,105,164,185,141,2,61,132,151,127,107,249,191,212,174,223,187,187,238,238,111,187,91,207,53,173,170,111,212,111,45,45,83,111,222,150,93,181,243,23,237,179,241,230,223,73,212, 98,210,52,107,189,81,82,201,119,74,177,183,151,109,52,159,194,219,190,246,229,251,203,252,44,173,95,11,197,252,77,132,203,176,117,232,70,178,246,182,248,111,175,225,177,244,220,63,146,98,113,184,170,50,246,127,187,254,99,215,207,198,203,237,83,197,150, 233,161,71,166,89,233,51,79,181,86,229,90,73,149,87,118,232,217,87,254,90,110,95,221,252,203,187,118,239,154,187,189,50,254,61,91,76,183,187,128,198,169,118,158,103,151,231,171,121,31,236,179,110,251,203,247,107,225,79,4,252,64,185,26,177,211,236,146, 230,70,182,155,204,88,214,227,115,72,202,191,119,229,109,173,187,251,219,126,245,123,86,149,225,235,127,21,71,109,101,226,57,18,59,29,51,84,143,84,212,174,109,151,109,165,236,109,11,73,229,201,39,203,183,238,178,255,0,119,230,109,213,248,206,69,226,46, 101,151,214,116,229,239,243,119,187,63,75,205,56,47,11,138,167,23,31,115,151,177,244,58,225,227,12,164,178,55,204,172,180,254,169,242,175,203,92,47,139,127,104,149,240,190,153,98,250,255,0,133,174,209,181,29,65,116,203,89,96,104,213,153,182,179,121,147, 42,182,213,86,249,85,85,126,238,223,155,239,87,93,63,136,172,180,239,11,221,107,94,32,159,251,42,198,202,38,154,118,188,253,203,70,171,253,239,246,171,246,252,175,140,112,120,232,181,89,58,115,142,241,107,245,63,50,198,240,230,39,11,43,210,92,241,254, 100,95,136,236,109,196,211,127,229,165,85,240,159,136,244,255,0,23,181,184,211,94,234,57,110,119,110,130,107,102,89,109,246,174,239,223,110,255,0,87,242,174,239,247,118,255,0,121,106,255,0,148,193,114,138,219,107,220,193,102,216,76,201,74,88,106,151, 255,0,130,121,88,188,191,19,131,229,141,106,118,4,219,156,80,16,239,253,229,79,101,102,250,132,162,43,104,154,105,159,238,133,95,153,171,2,111,138,30,26,176,181,55,18,234,214,151,118,203,114,182,147,189,180,235,34,219,200,219,182,249,141,252,63,117,182, 255,0,122,178,199,231,88,44,177,91,19,86,49,235,247,110,60,38,93,136,198,255,0,6,60,198,224,194,124,212,21,249,114,204,244,209,168,88,67,121,29,181,237,236,113,221,76,254,74,38,221,219,155,106,182,214,219,247,126,86,95,251,234,166,7,31,253,141,111,133, 204,48,248,244,222,30,106,86,236,103,95,7,91,13,202,171,71,150,227,19,6,156,191,112,209,229,224,182,79,205,79,64,119,46,202,235,57,196,254,53,167,42,117,160,13,231,154,93,131,210,128,13,159,53,28,123,83,149,63,224,63,239,84,171,25,221,207,252,6,149,199, 107,140,216,61,233,118,123,126,148,229,143,31,41,95,247,169,118,124,181,55,41,13,84,63,242,210,156,169,131,239,78,84,228,210,255,0,181,72,98,58,122,211,213,58,99,173,11,211,251,212,237,156,251,80,2,47,233,79,84,249,77,9,254,192,169,82,47,148,255,0,179, 64,12,217,199,189,73,12,89,249,100,206,218,113,141,165,9,229,211,146,46,57,92,126,180,0,108,255,0,190,169,234,153,20,245,79,81,75,176,127,181,89,146,162,39,240,175,11,71,241,251,211,246,108,92,209,199,90,10,27,249,226,134,93,207,79,45,157,172,223,122, 132,56,31,197,214,129,252,97,254,253,57,126,119,161,83,47,159,150,158,175,143,165,2,5,78,255,0,196,212,241,222,141,156,253,239,154,151,148,52,0,167,168,165,251,237,243,208,255,0,118,151,253,98,250,208,2,170,239,94,105,61,54,83,130,255,0,124,210,236,63, 53,104,102,68,127,134,158,169,242,253,218,23,239,82,170,125,223,151,154,204,7,241,239,66,253,234,126,206,244,229,79,149,171,64,18,60,83,190,250,208,169,242,183,254,133,79,9,235,64,0,76,246,226,157,198,218,85,251,212,253,163,208,254,117,153,160,205,131, 248,41,237,247,191,187,66,227,27,191,138,159,179,253,170,208,180,134,255,0,15,251,52,229,69,245,227,253,218,92,246,237,78,217,179,239,133,160,192,69,79,150,159,74,136,63,26,112,79,51,238,80,3,123,244,249,105,123,253,218,115,118,167,108,52,0,213,79,81, 79,84,223,245,167,108,52,161,61,104,0,84,249,186,127,246,52,245,76,138,114,39,28,110,167,70,152,219,254,213,0,51,111,0,83,213,56,31,123,229,167,121,123,219,53,47,147,245,160,8,149,63,138,158,169,179,248,106,95,43,98,237,167,42,42,103,255,0,102,160,232, 35,138,31,202,164,84,27,190,122,119,240,175,203,75,89,156,225,76,217,243,181,74,157,104,217,211,251,212,26,17,236,231,109,53,83,45,83,50,124,180,143,247,170,185,133,55,115,231,37,66,127,224,52,42,101,170,87,231,181,53,83,230,174,227,158,193,179,182,62, 237,10,159,220,235,78,116,245,165,84,255,0,190,104,24,213,140,247,167,132,46,170,168,57,169,0,59,78,202,198,241,214,177,46,129,224,237,74,238,202,43,137,166,134,6,242,227,133,89,153,155,254,3,243,86,24,170,242,195,210,149,78,93,145,173,42,92,245,35,31, 230,53,162,76,15,225,170,30,33,241,101,143,132,163,183,125,119,237,11,29,204,141,26,180,81,249,159,50,174,237,187,87,251,213,129,240,151,197,87,247,186,26,195,241,18,230,31,183,89,196,177,238,218,177,195,103,110,170,187,99,105,27,230,146,102,102,102, 111,246,86,188,183,226,167,199,153,117,79,6,107,77,117,101,111,172,69,165,222,204,178,217,91,43,43,73,111,185,86,54,142,104,219,114,178,174,233,27,238,252,181,240,24,254,58,194,83,193,41,202,126,206,171,251,59,253,254,79,208,250,204,55,11,87,150,39,146, 49,231,138,249,24,223,182,71,237,34,124,39,168,105,22,62,20,183,93,210,197,39,158,103,221,28,145,179,109,242,246,178,253,232,254,245,124,231,227,207,138,233,226,55,179,181,129,236,181,9,32,105,25,157,173,153,149,153,191,214,54,221,223,51,127,10,253,221, 187,86,177,111,60,77,168,248,131,64,180,134,59,24,18,194,222,105,33,180,39,118,251,120,228,109,203,14,223,225,85,254,26,245,239,131,126,31,208,60,107,240,247,81,181,241,38,157,101,109,173,217,71,15,153,170,199,3,110,176,101,147,106,254,245,91,247,155, 149,191,241,239,155,238,215,243,255,0,16,230,207,51,197,203,29,86,58,159,177,100,249,100,50,188,60,104,196,193,240,151,132,100,125,47,77,130,29,74,77,62,254,3,111,228,218,222,237,88,227,147,110,214,147,204,95,247,85,85,127,218,175,107,240,109,219,105, 222,27,211,44,52,111,34,43,139,107,59,75,79,16,37,201,107,135,150,104,219,108,246,251,119,46,230,102,221,26,201,254,210,182,221,191,45,51,194,30,3,211,60,61,54,173,165,120,155,79,138,77,99,75,141,149,100,181,187,146,25,46,85,126,104,100,221,243,124,191, 117,100,102,95,221,238,109,171,78,208,124,41,172,248,31,64,77,42,13,67,73,147,94,154,11,91,107,107,155,53,253,205,252,139,15,150,222,103,205,254,179,108,107,251,205,223,50,237,249,190,95,151,228,165,143,246,82,141,72,79,222,61,215,78,19,143,45,73,29, 71,141,124,103,167,120,146,43,93,73,116,253,91,76,212,44,174,85,172,231,182,150,54,146,213,99,243,21,154,72,100,220,173,35,126,237,151,114,252,202,191,237,85,47,28,124,80,159,194,26,111,136,180,247,212,44,53,57,153,163,146,238,89,32,105,86,54,95,46,69, 145,87,254,91,43,43,125,214,249,149,126,85,251,171,89,118,22,154,134,141,226,173,46,199,85,187,176,208,111,238,34,255,0,72,149,163,105,163,146,63,249,104,223,46,237,205,187,110,239,225,249,190,90,203,248,161,117,167,105,80,35,205,14,151,123,115,105,28, 158,100,113,171,52,171,10,254,239,229,95,155,247,123,99,220,173,242,182,218,197,230,152,153,87,246,149,42,73,200,230,142,30,148,33,203,24,251,167,113,240,214,211,196,30,54,134,223,87,241,59,234,118,250,6,131,58,175,153,167,193,251,203,185,154,101,143, 236,190,90,238,221,243,50,179,51,124,222,94,223,155,251,189,175,199,31,138,90,239,194,175,23,105,107,160,95,53,133,148,200,183,146,165,204,81,200,171,229,179,44,139,185,91,230,141,149,191,222,221,247,171,196,180,95,218,102,250,207,195,186,132,26,44,115, 104,186,92,13,186,218,206,41,91,117,237,187,42,174,217,23,254,88,127,117,100,251,223,119,238,237,175,62,248,191,241,54,239,226,29,168,177,241,78,181,29,158,143,3,121,127,217,214,113,238,191,135,119,239,25,191,231,155,51,72,204,222,95,241,54,214,111,189, 95,89,134,226,90,176,193,60,30,29,202,18,111,89,95,126,215,210,250,122,158,69,124,154,149,108,84,107,84,143,53,143,79,241,31,237,174,255,0,16,52,201,236,109,90,31,15,217,218,69,231,125,190,9,188,155,153,228,142,77,202,209,200,173,247,87,229,253,218,253, 230,255,0,118,188,187,70,189,213,245,73,227,213,38,213,39,212,174,174,110,214,238,54,9,28,109,60,107,255,0,45,36,143,229,86,104,217,155,253,223,239,86,126,165,240,42,226,93,54,253,252,117,101,115,165,232,169,246,118,129,100,141,126,215,34,179,55,202, 190,95,202,191,222,101,101,249,182,253,239,226,106,26,126,135,7,138,245,91,125,26,209,254,197,30,153,109,28,241,121,210,55,150,109,247,55,221,93,223,185,93,202,191,47,221,106,241,241,152,250,248,151,41,215,175,41,184,245,122,254,39,161,134,203,232,80, 92,184,120,198,49,62,163,253,158,180,105,191,225,48,213,117,95,138,134,214,227,88,109,75,205,105,94,229,151,204,133,182,180,13,11,127,22,213,242,227,255,0,105,190,95,187,94,233,173,93,91,232,177,92,92,106,19,65,105,101,110,173,35,73,44,138,170,177,175, 241,53,124,169,224,95,20,195,163,221,248,115,83,185,27,175,180,120,23,236,18,180,123,126,211,14,221,187,87,204,249,89,190,89,62,237,119,126,13,212,109,124,113,227,231,151,198,26,188,218,207,246,100,243,93,63,158,155,188,207,50,63,239,50,249,113,218,199, 26,171,110,221,181,164,254,29,219,171,239,56,15,143,163,147,47,170,98,37,104,202,222,243,217,125,223,240,15,147,226,158,24,254,213,81,173,79,236,253,236,247,36,117,146,36,120,93,100,73,21,89,89,127,137,90,158,80,198,23,7,150,249,171,206,188,87,241,161, 181,189,114,45,63,225,37,230,158,150,105,60,150,87,154,173,212,240,172,48,205,247,127,119,185,126,109,191,52,159,221,249,107,39,86,248,231,6,157,226,251,237,67,64,146,222,59,45,86,205,190,205,169,94,249,126,67,44,48,170,199,183,107,110,85,243,164,86, 102,251,205,95,171,215,241,63,41,165,203,201,62,101,223,111,157,189,123,159,7,75,130,241,149,185,156,163,202,122,244,107,187,146,41,219,1,56,174,51,224,127,139,237,60,65,224,155,11,87,213,46,245,61,70,24,191,123,121,114,191,53,238,213,95,50,77,223,197, 243,110,255,0,121,87,229,174,206,222,85,184,130,57,33,125,201,34,238,83,253,229,175,171,200,56,131,9,159,225,227,91,15,47,123,170,190,199,133,154,228,245,242,154,178,167,82,62,239,243,119,28,135,147,79,78,23,231,164,3,202,90,165,170,120,142,203,66,186, 179,93,89,252,184,110,36,104,231,157,89,89,108,191,119,35,43,72,191,123,107,52,123,127,224,85,232,102,25,142,31,44,163,237,241,51,229,137,195,132,194,85,198,207,217,209,143,52,141,28,174,41,20,101,191,121,206,107,157,209,254,44,120,119,93,186,88,116, 109,82,222,224,182,213,86,13,183,116,141,183,108,107,253,230,249,171,165,136,238,110,57,207,247,107,60,187,55,194,102,208,115,194,84,83,75,177,174,47,47,175,129,113,88,136,242,220,97,194,26,85,76,138,114,116,163,202,127,122,239,220,229,2,159,253,149, 45,57,56,110,106,68,140,253,225,64,13,88,243,187,251,181,36,49,127,21,31,250,5,73,64,10,126,250,252,212,168,158,173,188,209,255,0,124,211,168,1,195,233,79,94,191,61,37,47,150,187,190,79,248,21,0,42,160,117,249,255,0,134,157,71,241,123,82,47,253,243,253, 234,204,5,127,246,105,223,222,164,251,141,157,212,229,78,63,121,182,128,27,179,248,127,217,167,199,247,126,122,21,61,69,63,103,205,90,0,46,228,251,148,230,65,210,151,143,189,247,169,126,255,0,81,89,129,22,207,51,241,167,108,249,190,245,59,97,164,249, 144,240,40,51,29,228,255,0,181,75,229,175,173,27,56,205,72,187,191,131,117,105,202,43,161,191,236,211,169,223,53,61,95,210,131,81,171,247,105,87,238,83,149,14,223,147,165,58,52,222,122,80,28,131,85,61,55,83,213,62,90,21,50,41,251,63,184,55,80,52,131, 102,196,254,26,119,63,122,149,83,126,234,90,11,17,126,246,105,225,61,104,217,188,255,0,179,255,0,161,83,209,7,165,0,38,195,242,236,249,105,85,62,111,189,78,78,157,26,149,80,246,106,0,106,253,223,246,106,77,159,47,251,52,248,250,138,114,167,203,151,219, 186,131,156,72,211,210,156,169,243,238,167,236,30,244,162,31,90,0,106,195,243,124,148,244,135,143,122,126,204,255,0,192,106,77,133,55,111,160,232,35,88,127,191,247,106,85,135,229,160,125,211,79,254,31,150,128,5,69,219,205,59,167,252,10,155,82,174,59, 208,2,82,236,95,254,42,148,167,247,69,58,128,25,252,71,154,145,95,97,235,77,254,44,237,167,63,221,254,42,0,63,31,251,230,143,248,23,52,135,31,199,75,233,191,117,28,167,56,115,183,173,31,193,248,210,178,111,251,244,218,0,249,215,103,153,248,211,169,251, 127,139,31,45,38,205,237,247,107,208,51,27,255,0,160,210,175,201,218,165,217,242,143,238,208,190,253,107,48,19,119,28,154,165,226,93,101,60,55,225,235,203,217,162,185,155,236,241,51,42,192,170,210,51,127,13,105,36,108,100,0,6,175,34,248,247,226,207,20, 120,67,199,110,154,84,7,89,208,190,194,177,220,105,144,192,203,36,108,219,183,77,36,139,247,87,238,237,219,243,110,175,147,227,12,250,134,69,128,148,234,206,210,150,145,239,123,121,158,238,67,149,213,204,177,49,80,141,249,78,19,198,58,221,222,177,240, 190,45,41,116,157,85,117,91,73,225,185,105,47,101,243,163,182,107,175,245,139,11,125,239,187,187,203,109,172,172,173,92,86,175,171,248,79,195,107,167,75,225,185,164,208,238,103,142,79,183,91,24,228,145,165,147,229,86,147,204,95,150,79,149,118,178,255, 0,23,221,254,245,105,190,185,47,196,143,6,222,195,227,75,189,122,218,8,31,236,208,70,179,180,107,109,187,107,67,35,72,171,185,182,200,170,190,93,80,240,111,196,141,51,81,240,238,149,38,167,117,165,74,108,175,166,178,189,177,214,100,243,47,124,150,219, 255,0,30,204,223,121,182,174,237,187,151,248,155,117,127,35,102,153,189,124,193,254,246,95,114,75,244,63,126,193,224,97,132,141,163,212,199,209,62,18,120,107,195,126,43,214,53,191,24,233,182,87,94,23,151,201,188,134,232,58,199,13,172,18,125,237,168,173, 252,59,89,153,153,183,47,221,249,190,237,105,63,130,52,47,0,65,174,255,0,103,90,162,88,180,113,218,88,203,37,234,199,29,254,229,86,85,145,89,183,44,140,171,247,191,224,95,197,92,207,138,237,108,245,165,213,52,31,16,221,234,115,218,199,105,187,75,142, 89,86,221,164,221,54,229,146,77,173,252,59,119,42,253,221,191,122,183,62,0,124,59,187,213,188,57,53,214,163,113,161,195,111,108,210,65,37,221,215,239,60,245,220,187,86,6,221,251,182,101,95,149,190,235,125,213,249,171,203,169,86,115,165,239,200,244,35, 73,203,225,59,111,11,107,237,170,105,94,31,212,180,24,100,154,218,203,237,22,210,72,241,121,119,51,70,210,44,139,254,211,124,219,190,102,109,191,47,221,169,165,240,75,120,147,225,181,236,223,14,245,27,102,138,61,107,251,58,245,26,31,50,230,210,222,70, 102,104,227,105,63,119,242,254,241,100,111,246,118,215,53,240,191,196,102,210,242,215,196,94,5,130,210,24,157,153,90,11,153,90,69,187,249,149,103,242,183,55,203,30,223,155,230,90,179,226,191,143,218,156,210,107,183,222,21,214,52,173,47,74,117,153,103, 137,54,182,230,219,30,214,220,223,222,219,242,255,0,123,230,255,0,106,184,101,41,223,72,154,242,114,199,152,146,199,198,186,127,128,181,217,180,173,91,69,187,251,5,164,87,173,230,75,104,208,180,146,70,219,96,219,243,125,223,226,101,254,37,254,42,154, 207,197,90,22,138,173,168,106,22,179,73,62,168,219,110,119,76,177,253,182,53,86,104,227,137,126,243,127,23,203,242,171,47,222,251,187,107,136,215,126,36,106,222,26,240,44,119,126,34,155,84,150,242,71,242,100,150,88,99,242,109,213,155,247,30,91,47,239, 35,249,155,230,95,149,89,190,85,251,212,154,100,171,113,241,31,71,62,1,120,225,212,254,197,246,70,214,124,153,25,96,89,54,254,241,86,69,249,91,111,241,127,181,91,66,159,181,151,188,99,203,46,99,166,240,230,163,230,62,191,123,224,93,21,180,253,33,99,91, 213,75,187,111,50,127,57,182,238,141,150,79,155,110,216,255,0,135,229,220,181,131,227,135,22,123,117,13,23,77,182,211,60,77,226,11,181,185,159,207,151,206,157,97,109,187,154,61,203,186,24,217,118,201,183,119,222,251,171,93,135,142,245,164,241,52,186, 188,30,12,137,252,30,179,91,199,167,105,186,213,197,228,201,119,119,112,187,150,118,220,219,118,180,155,127,118,170,187,85,183,110,102,221,88,191,10,127,102,237,50,230,253,5,142,167,161,235,211,127,168,123,213,187,104,86,37,242,246,179,52,114,125,214, 243,25,87,203,102,249,127,138,186,169,66,60,206,210,255,0,130,105,203,203,30,105,20,117,173,110,231,68,240,167,157,97,170,44,242,77,100,173,242,34,200,210,182,239,155,230,111,149,124,181,219,247,119,110,255,0,199,106,174,133,167,95,124,91,212,47,92,216, 90,92,220,106,115,199,50,91,90,55,158,177,205,183,107,121,145,175,221,86,142,61,219,126,234,237,221,183,117,96,94,120,6,227,75,212,53,43,77,111,82,180,185,26,116,251,103,182,142,239,230,139,116,159,47,151,242,254,241,190,86,249,127,135,229,173,221,126, 13,83,79,212,53,84,240,228,63,217,82,92,222,195,229,181,130,200,210,75,30,229,251,183,63,238,183,205,242,175,221,109,219,90,180,150,14,52,57,189,227,74,113,139,143,52,78,230,91,27,255,0,27,120,227,69,243,162,210,180,205,55,195,240,53,149,219,75,230,47, 145,247,164,141,154,63,226,220,219,87,254,5,243,87,41,101,226,93,31,197,26,21,229,151,141,68,76,250,180,107,21,197,205,133,204,145,207,246,143,50,70,104,246,175,203,229,199,251,191,189,187,119,205,252,53,63,143,124,49,125,227,141,39,82,91,91,185,173, 237,236,63,112,150,141,60,155,164,181,221,181,154,79,43,239,110,219,187,108,155,149,171,139,213,60,31,167,195,225,171,56,100,104,254,223,6,217,103,139,237,108,223,188,102,242,219,108,74,191,42,255,0,23,202,219,91,119,204,213,205,78,49,107,222,14,88,204, 124,58,174,141,240,234,11,107,79,10,61,180,230,229,190,205,101,169,52,211,72,182,44,219,119,51,71,247,126,111,187,185,127,137,107,67,85,150,247,198,90,77,237,182,183,47,158,144,75,12,215,55,170,177,199,12,18,42,183,150,173,183,239,110,219,187,238,215, 17,125,37,174,131,174,36,86,182,179,253,150,198,85,107,184,230,147,230,69,243,54,170,182,223,151,239,43,42,178,215,85,240,155,72,79,18,216,108,178,86,185,130,127,58,70,129,85,124,182,109,205,181,174,118,183,239,118,171,127,187,243,127,121,107,166,84, 227,252,66,169,209,166,185,185,143,73,248,5,121,169,89,220,197,53,173,187,91,105,54,200,178,95,40,111,180,171,50,253,237,203,35,42,237,109,187,149,119,125,223,151,229,221,243,125,5,225,95,138,154,155,120,134,235,75,54,240,223,233,182,238,172,186,196, 243,237,146,72,228,253,231,156,208,170,238,95,238,199,14,223,153,190,93,223,45,121,12,63,17,238,191,176,231,177,240,220,218,102,219,40,100,147,77,210,226,137,174,25,228,218,173,181,190,238,229,218,187,126,235,124,204,223,121,86,185,111,14,126,214,81, 195,225,255,0,51,226,61,189,164,215,247,247,107,33,176,177,137,99,146,69,104,252,189,211,201,243,125,221,205,255,0,142,237,175,123,36,226,9,229,19,246,148,37,36,223,111,242,234,120,121,166,91,75,48,143,37,72,92,251,63,81,154,29,25,101,150,254,104,99, 138,63,189,36,146,109,95,246,126,106,249,79,246,185,190,213,39,248,157,167,105,222,32,73,108,35,186,139,237,63,241,44,93,223,111,142,54,85,93,204,223,121,149,153,127,119,254,213,101,252,95,253,170,159,199,126,10,77,19,116,107,104,171,229,195,20,226,57, 36,154,63,49,99,109,205,255,0,45,25,85,190,86,111,247,171,153,189,248,235,54,162,246,58,159,143,158,210,230,255,0,76,131,236,209,195,109,186,95,177,55,221,134,77,173,242,180,223,46,230,109,187,126,237,126,137,156,241,246,23,137,176,95,86,171,74,80,146, 183,94,189,116,252,143,143,203,56,74,182,75,139,250,196,101,23,29,122,26,31,8,188,85,109,225,233,126,221,13,236,150,250,171,201,117,97,44,239,31,149,29,132,106,170,222,94,214,111,221,204,187,126,243,47,202,205,254,206,218,250,77,127,104,29,35,194,30, 26,242,53,214,176,143,80,255,0,151,59,104,231,102,109,173,30,232,214,109,223,55,253,180,254,38,175,142,239,124,101,97,168,173,187,77,60,119,127,105,220,205,43,65,186,121,38,147,247,159,55,241,110,220,204,191,237,87,103,224,223,137,250,135,145,253,161, 226,121,225,185,184,242,38,182,88,153,124,201,227,101,102,242,213,163,219,243,42,179,124,171,252,63,237,87,192,229,185,230,55,38,173,237,112,210,146,71,214,227,178,122,25,149,47,103,90,55,62,205,240,103,136,127,225,47,240,234,106,70,206,226,193,102,118, 242,162,157,118,200,202,191,196,203,90,159,34,50,121,210,195,17,118,218,155,221,87,119,251,187,171,196,244,111,141,167,75,210,52,205,107,226,62,177,170,216,38,181,61,188,113,165,228,95,241,225,100,171,187,230,101,95,188,205,253,234,198,214,181,45,71, 199,63,18,52,235,139,203,225,119,99,101,103,53,196,18,238,251,52,139,110,170,176,204,222,79,252,177,243,25,183,51,54,230,104,215,229,95,154,191,120,201,248,210,115,192,83,230,95,189,254,243,187,249,217,46,135,229,153,135,11,114,98,229,210,159,247,79, 161,148,25,85,91,31,121,105,248,224,255,0,21,115,90,31,142,191,225,49,241,96,182,240,40,178,186,240,246,152,141,30,161,120,179,171,73,28,235,242,165,178,170,255,0,223,76,223,221,218,191,222,219,212,118,92,87,222,101,216,248,102,20,185,225,170,239,223, 208,249,12,110,9,224,167,202,247,7,251,212,164,182,239,187,186,157,179,248,119,109,167,108,53,222,114,12,227,218,164,141,63,185,214,133,251,180,255,0,47,222,128,26,137,233,82,170,115,247,105,41,222,95,231,64,8,191,122,156,169,247,169,85,50,212,231,235, 64,13,244,254,42,112,207,106,117,46,207,251,234,128,2,159,223,233,75,219,167,20,229,249,233,118,124,180,0,158,155,233,202,159,48,163,251,180,234,0,70,77,244,170,158,148,187,62,118,165,216,94,128,26,169,179,253,218,120,79,151,154,114,167,203,75,179,248, 158,128,26,159,34,102,164,84,222,223,63,241,81,75,179,13,254,237,3,66,175,67,75,176,123,210,211,182,108,250,80,85,134,211,246,116,161,81,183,98,159,254,213,3,14,120,167,108,249,190,245,34,199,130,77,73,176,123,208,3,124,189,159,50,255,0,23,251,84,245, 70,226,149,83,96,249,233,204,159,47,20,28,224,168,187,62,74,112,77,244,170,159,40,205,72,19,230,221,65,208,48,39,221,223,247,170,85,205,57,80,209,229,127,156,208,0,191,123,118,41,234,156,154,93,159,55,181,61,16,126,52,0,108,227,228,167,42,124,191,197, 79,239,242,83,104,0,216,127,6,165,216,188,47,241,83,149,48,125,233,202,159,45,0,11,242,26,115,117,20,145,166,90,151,30,212,0,125,213,165,165,231,222,158,169,242,255,0,232,84,0,222,223,61,59,223,20,170,159,45,13,233,64,8,201,252,36,81,247,69,20,238,92, 208,115,141,164,84,249,191,135,109,73,179,229,166,255,0,15,221,230,131,74,157,15,158,188,191,44,243,79,242,247,160,199,227,72,201,243,82,195,212,125,107,177,234,101,205,115,46,227,198,26,109,167,136,151,72,187,184,146,59,223,43,237,59,90,38,242,214,53, 86,102,111,51,238,255,0,11,127,227,181,21,215,143,52,91,32,141,38,171,102,205,36,235,105,10,172,187,188,201,153,119,42,174,223,189,242,252,223,47,240,238,170,127,21,126,25,143,137,90,29,188,54,218,149,238,145,123,107,58,205,109,119,108,223,52,95,222, 93,191,117,149,151,248,90,190,83,248,189,226,15,25,124,58,241,144,240,134,134,203,170,94,65,105,25,211,236,52,241,28,67,114,171,121,114,73,183,238,249,126,91,54,205,219,91,117,124,22,125,155,102,249,53,119,40,193,78,147,219,77,125,52,127,163,62,179,39, 203,48,25,172,57,57,185,106,71,207,241,59,159,143,95,182,166,167,240,226,250,61,3,91,180,254,200,214,34,213,15,218,174,237,97,123,136,162,178,86,220,146,70,172,170,204,205,183,230,95,189,243,54,221,223,43,87,142,89,252,82,180,248,141,168,120,150,95,15, 107,90,226,204,204,215,49,44,238,190,102,169,30,213,95,45,85,191,120,204,223,55,202,191,194,191,236,215,141,248,143,226,100,158,47,240,253,204,94,39,251,70,173,226,13,74,101,147,251,74,246,127,49,162,218,205,181,99,111,189,252,77,185,91,229,93,223,45, 117,254,11,248,143,225,253,43,76,181,79,25,232,131,79,241,10,249,113,195,123,4,108,131,119,152,173,28,211,71,247,155,238,109,86,95,187,247,191,189,95,207,124,75,153,98,115,153,41,86,114,113,91,117,229,63,100,201,242,138,57,100,61,200,251,210,220,244, 219,207,16,104,26,70,153,246,61,89,181,232,237,227,158,59,155,107,104,228,242,231,101,95,149,163,221,242,252,173,243,54,239,248,18,174,234,230,117,63,23,105,218,197,253,213,231,135,32,191,211,116,201,247,64,137,119,182,54,185,134,111,149,155,229,251, 173,247,87,229,251,213,137,227,27,67,127,171,220,234,26,224,181,211,158,123,233,35,11,10,72,182,209,47,147,231,109,93,155,183,47,204,171,253,221,204,223,54,229,219,90,94,6,215,229,241,68,18,221,37,150,169,119,53,205,167,145,109,29,164,106,171,28,159, 51,72,178,47,205,230,52,159,47,204,187,118,237,111,189,186,190,77,224,100,249,101,220,247,35,24,253,163,209,124,100,52,216,117,205,51,80,212,173,116,127,24,217,173,164,49,220,173,203,172,58,141,186,252,209,180,108,219,126,238,239,225,109,223,50,255,0, 179,86,244,105,35,210,53,27,119,240,195,125,174,198,123,69,251,52,90,125,204,115,253,166,77,172,202,172,210,54,223,251,231,230,249,126,90,206,100,95,15,233,146,233,154,186,248,126,11,251,248,99,212,103,185,211,110,86,111,57,127,229,156,126,114,238,102, 145,118,170,171,124,173,242,237,109,212,154,158,161,15,137,45,183,248,75,200,217,246,29,203,123,115,182,217,109,38,133,151,229,134,38,86,243,25,183,51,110,174,42,184,74,180,37,203,31,139,255,0,37,252,203,230,140,62,19,201,199,135,103,248,109,117,106, 124,121,119,168,54,171,124,126,219,101,99,20,82,111,218,204,210,51,121,219,190,89,60,197,101,101,251,203,243,110,95,153,107,172,240,215,135,53,95,138,214,118,122,143,136,229,183,177,109,86,245,102,182,212,100,143,117,173,180,95,123,115,42,255,0,172,111, 155,229,255,0,158,149,107,91,210,116,120,111,165,62,32,184,159,94,184,134,11,91,155,38,146,118,111,177,121,109,230,73,231,51,109,220,223,188,86,254,47,153,126,102,170,126,37,211,255,0,225,36,49,46,181,173,75,253,171,53,234,249,118,209,183,145,7,147,35, 54,219,141,203,252,91,99,255,0,103,239,124,181,180,170,252,49,251,69,70,87,143,186,103,234,115,106,182,83,181,190,187,170,5,211,90,29,243,77,29,179,70,176,67,247,163,243,35,102,255,0,83,252,74,223,54,221,173,183,230,175,64,127,21,90,248,122,198,227,77, 178,70,191,184,105,97,150,61,201,230,47,150,209,170,198,219,87,115,109,111,189,253,239,225,219,73,224,155,150,181,240,239,218,188,67,230,93,197,160,219,76,214,150,211,71,28,254,90,172,223,122,70,111,249,99,181,190,239,204,223,50,237,172,59,75,221,55, 195,122,229,166,165,160,193,37,207,218,101,154,230,123,251,185,217,90,120,219,229,101,85,255,0,150,112,238,111,150,63,149,190,85,249,171,9,86,140,227,40,242,236,28,203,151,222,59,173,27,92,139,236,215,86,208,90,174,184,241,197,12,241,6,185,95,150,109, 223,188,88,252,207,245,127,46,239,187,254,237,71,226,79,135,218,78,141,165,234,191,105,211,174,161,188,150,230,105,34,138,25,254,205,28,210,72,170,202,170,203,185,86,70,86,102,221,247,119,46,214,101,174,91,77,240,67,235,118,240,77,163,106,81,221,220, 91,180,147,77,37,205,202,172,118,18,125,163,204,141,85,118,238,111,246,119,110,173,47,137,191,21,116,173,51,64,212,95,65,213,35,212,238,175,227,111,179,91,65,35,74,182,77,181,87,119,239,23,230,143,107,73,247,127,137,127,135,109,103,78,83,132,189,206, 162,84,249,227,239,28,166,181,169,92,107,182,23,83,235,210,217,61,174,155,119,29,150,157,10,73,26,193,186,61,210,121,126,122,252,205,181,118,253,239,155,107,124,181,7,135,181,29,95,197,22,215,86,246,183,209,207,113,13,148,215,49,249,254,98,253,154,31, 149,164,88,229,111,225,95,189,254,215,221,111,154,177,188,49,166,219,36,19,94,120,203,78,182,190,210,174,213,99,109,191,42,182,223,189,183,111,205,185,119,43,51,46,221,223,237,87,117,225,223,134,246,215,22,118,179,93,46,163,6,148,222,100,182,145,199, 35,121,26,139,47,205,181,190,111,49,85,100,90,233,175,56,70,54,35,217,178,223,195,27,11,239,21,89,248,211,92,248,105,107,123,173,67,162,233,235,166,199,253,161,55,239,46,252,207,150,225,150,61,223,44,127,234,155,111,205,183,229,218,187,171,135,248,123, 224,173,27,197,94,62,178,211,117,79,51,73,215,31,117,179,53,236,77,36,50,92,55,250,181,101,254,31,225,249,155,248,153,107,219,108,53,168,53,41,52,155,75,38,180,210,165,123,191,180,216,221,89,64,209,253,175,239,52,219,163,249,124,201,60,198,251,205,254, 207,204,203,85,109,254,29,217,105,158,39,155,196,58,236,154,14,163,169,198,237,246,75,139,155,181,89,167,85,93,171,35,70,191,236,237,220,205,243,47,203,254,203,84,80,196,70,42,82,14,110,73,30,58,126,14,235,183,81,44,190,50,181,146,88,46,228,145,103,91, 105,89,127,120,191,235,21,164,95,155,114,252,172,219,153,153,107,217,191,225,17,151,225,207,135,110,147,83,119,191,189,241,31,238,47,82,206,230,24,126,205,181,89,87,204,218,187,85,118,198,171,186,61,173,185,191,189,185,171,31,197,190,62,183,248,111,5, 197,189,180,82,91,53,205,204,138,171,61,195,71,115,187,203,93,202,170,173,185,85,190,239,247,190,111,246,171,136,31,181,30,181,170,248,98,254,198,254,218,211,71,91,219,216,214,219,97,88,224,182,186,251,172,187,127,138,54,86,93,223,119,230,218,203,181, 170,225,81,226,163,104,163,79,107,30,95,122,35,190,40,252,115,212,116,127,17,77,101,161,105,113,248,126,203,229,107,155,68,101,184,251,171,186,63,186,191,43,50,182,223,151,248,89,190,237,120,174,187,227,219,141,111,80,249,63,209,226,85,84,134,53,102, 255,0,70,86,249,182,171,127,117,119,87,163,120,67,64,159,92,135,196,186,66,234,50,174,165,43,121,82,40,93,176,121,140,203,229,249,210,46,230,85,220,205,243,55,203,253,223,187,182,177,111,63,102,200,180,253,90,202,234,251,92,183,251,5,205,202,193,59,217, 238,157,237,35,242,255,0,121,253,213,102,86,249,118,253,214,249,91,119,240,215,110,30,84,169,75,150,70,49,148,121,138,62,28,209,175,116,244,182,186,123,16,177,59,53,165,178,181,194,238,185,145,87,206,218,171,187,114,182,223,251,229,90,173,92,248,118, 231,251,90,238,244,200,171,106,170,183,115,249,146,179,43,110,249,87,251,191,54,237,171,93,29,255,0,195,159,16,232,218,109,250,199,166,90,157,6,222,56,230,142,247,253,124,115,205,183,108,106,173,185,155,115,46,230,249,151,110,230,251,223,118,186,223, 9,232,241,120,87,195,41,54,187,31,147,44,240,254,239,116,159,105,104,161,102,253,220,158,107,127,19,55,152,190,95,222,221,242,253,223,154,183,85,180,246,148,199,63,124,212,240,7,194,187,95,17,248,67,254,18,77,86,222,237,82,8,35,185,176,182,93,171,37, 180,144,182,217,60,197,251,179,201,242,201,242,255,0,14,223,226,101,90,233,5,157,133,206,177,125,127,10,121,86,81,188,55,179,65,52,94,127,217,25,149,163,251,58,174,229,218,219,163,109,204,205,181,87,111,247,171,30,27,157,63,192,140,154,161,150,243,81, 155,85,111,59,251,62,57,252,207,179,109,109,177,182,230,101,243,36,145,190,93,191,194,172,213,153,169,233,9,226,40,35,177,187,139,254,17,111,15,106,118,75,123,37,253,235,54,219,152,218,69,253,243,127,117,90,77,187,119,55,240,252,187,150,189,76,70,42, 190,33,47,99,24,255,0,93,95,244,142,42,113,141,47,138,82,59,255,0,15,124,74,213,63,180,204,122,117,229,133,206,131,113,231,93,222,253,129,228,158,73,108,150,63,222,50,174,230,243,155,238,174,221,219,190,102,101,111,151,109,117,22,122,117,191,131,237, 245,23,155,80,93,56,199,109,12,178,172,222,91,108,142,102,86,142,73,190,109,223,187,249,99,85,249,127,218,86,251,213,200,88,139,136,180,137,173,124,35,111,246,141,55,195,113,178,234,42,177,173,148,145,171,42,183,151,185,182,249,114,109,146,54,85,254, 21,249,155,239,109,111,89,240,68,150,209,93,189,223,138,237,254,215,29,188,177,222,68,182,41,246,133,101,153,85,86,222,73,23,238,170,171,47,251,203,243,87,212,228,25,125,120,183,82,182,188,201,251,219,250,245,251,143,7,53,196,210,140,99,78,63,23,50,208, 233,237,254,35,203,160,44,207,225,139,93,58,225,174,252,155,107,59,43,182,251,35,73,34,183,239,38,146,79,186,204,202,203,181,118,238,249,90,189,61,163,249,193,140,109,109,191,55,251,223,236,213,37,208,237,38,116,138,241,45,175,103,179,111,150,86,72,218, 69,254,37,220,203,253,213,111,149,191,187,87,208,249,216,116,38,77,223,54,237,219,183,87,238,60,51,151,75,7,77,206,117,249,239,253,122,31,146,231,248,202,120,170,156,177,163,201,96,84,249,113,79,84,249,186,80,169,179,239,211,171,234,15,157,19,143,106, 118,206,62,74,116,95,119,165,40,251,130,128,26,19,214,157,143,151,162,211,246,10,114,250,10,57,192,102,195,74,189,122,83,252,191,122,23,239,115,214,128,15,245,124,211,182,127,15,203,254,245,34,253,218,114,255,0,123,181,0,37,63,96,247,165,255,0,119,230, 167,103,123,124,253,104,1,170,158,162,157,179,231,20,170,159,247,205,46,207,151,251,180,0,83,182,251,126,180,127,22,220,211,171,48,4,237,79,84,249,186,125,218,68,143,117,57,99,254,224,173,10,72,92,251,127,21,46,207,154,133,67,75,176,123,208,80,108,251, 191,122,133,76,31,122,120,79,90,95,186,180,0,70,159,239,84,180,197,76,138,122,253,104,0,217,187,254,3,79,84,216,223,39,90,23,59,151,210,159,254,229,7,56,213,249,41,251,62,106,114,167,63,118,151,102,205,180,29,0,19,214,165,84,251,212,197,27,21,106,109, 159,197,64,9,183,13,253,221,180,171,254,221,54,165,141,61,62,245,0,11,203,99,52,250,68,233,79,60,125,243,64,10,187,177,254,247,241,82,208,159,125,126,245,63,159,106,0,68,235,79,94,157,104,84,60,84,131,168,160,152,108,51,201,9,78,217,215,101,59,238,127, 251,52,4,245,160,161,169,254,197,61,112,56,254,42,93,139,252,29,104,41,206,234,0,27,169,217,75,243,109,249,105,251,14,218,111,241,49,74,0,54,251,126,180,34,109,160,33,29,69,47,57,194,117,160,231,5,228,255,0,19,82,58,111,251,159,45,42,174,255,0,185,214, 165,84,203,80,105,83,161,243,177,92,62,113,243,83,136,242,213,115,74,135,45,205,86,215,82,226,125,22,237,52,153,214,214,229,162,111,38,86,95,245,109,183,239,87,77,73,170,81,148,153,140,19,169,161,101,209,191,134,184,79,139,17,235,30,18,209,110,239,254, 16,232,26,77,238,165,124,90,75,247,149,118,177,218,159,43,55,203,251,207,186,177,255,0,223,63,221,175,9,215,191,110,127,16,252,36,212,116,205,31,199,186,82,95,139,73,86,61,91,80,129,126,242,238,111,150,29,223,43,124,170,173,187,253,239,238,215,71,241, 79,254,10,49,225,223,9,233,42,190,11,180,184,212,53,59,152,161,154,218,57,81,182,180,114,46,237,205,183,248,190,239,203,95,29,138,226,252,170,173,26,138,165,94,73,71,79,63,145,244,116,120,123,48,163,86,155,133,59,198,95,113,242,239,138,60,4,190,40,190, 212,117,29,74,218,210,109,87,237,222,107,233,178,207,10,199,12,140,204,178,149,88,255,0,133,89,163,253,219,127,119,230,221,187,109,71,241,127,225,108,240,232,122,102,169,173,79,230,179,194,182,183,54,113,196,174,243,55,205,182,72,227,141,119,8,219,248, 183,124,223,221,90,60,69,251,66,94,120,185,181,89,239,81,26,247,87,213,34,146,105,4,10,173,52,17,254,242,53,102,254,25,22,69,111,248,14,221,219,182,214,142,155,28,254,32,241,43,248,131,195,51,65,10,53,220,141,36,205,62,217,36,254,38,85,141,85,153,151, 111,221,102,219,252,85,248,118,99,91,13,141,147,250,173,249,116,191,234,252,207,217,48,17,196,210,140,125,180,109,252,164,103,79,211,97,211,46,236,117,116,190,154,225,99,142,218,238,234,238,105,35,146,53,145,86,77,191,42,237,218,223,44,126,91,125,239, 150,186,29,63,198,190,30,248,109,115,123,63,135,180,123,219,221,58,102,88,127,181,173,165,154,88,165,111,149,118,199,252,43,183,108,139,253,230,249,107,107,82,211,237,190,26,124,55,186,155,90,75,43,43,95,16,90,121,207,114,100,243,86,238,102,147,110,213, 147,254,89,194,219,126,247,254,131,187,109,88,241,41,248,97,224,87,148,252,98,213,53,51,246,164,50,67,111,165,58,197,19,182,213,253,223,146,173,185,153,89,87,230,219,185,119,127,180,212,255,0,177,233,226,233,218,53,227,24,245,230,210,219,252,255,0,15, 153,172,177,245,48,238,213,41,202,82,254,238,183,56,41,252,41,173,38,171,46,183,107,108,101,210,110,46,22,238,214,226,222,38,158,111,33,155,229,251,68,63,235,35,101,109,219,188,207,187,181,190,109,181,209,120,231,226,71,246,93,172,86,215,114,104,150, 78,177,110,143,202,189,89,39,127,226,147,111,202,222,94,230,254,26,229,188,123,227,185,252,77,174,171,77,171,105,175,19,92,165,214,155,169,218,184,181,242,87,203,242,228,142,105,22,69,86,133,119,124,219,151,251,223,123,115,87,158,106,115,203,170,107, 243,216,120,134,230,79,182,165,194,197,29,220,204,222,100,18,127,186,223,121,91,114,124,205,183,111,251,181,241,249,142,2,150,30,94,206,156,185,163,253,121,179,232,48,149,126,177,8,243,71,148,244,63,10,91,233,247,50,71,253,177,169,216,42,30,37,75,148, 145,164,118,155,238,200,138,191,55,151,203,47,153,254,203,87,73,224,159,7,91,235,87,247,166,246,245,110,173,237,231,111,34,54,133,149,175,99,85,219,255,0,1,95,149,127,135,119,251,63,53,120,30,169,226,59,168,245,147,6,137,36,150,175,1,107,101,158,41,63, 214,183,252,180,95,238,252,223,119,229,174,159,225,191,197,109,74,13,31,91,51,165,229,198,150,45,9,212,27,202,140,201,39,204,191,187,253,227,42,170,182,230,89,27,251,187,126,90,243,106,224,231,37,251,179,107,242,124,39,179,107,122,176,240,141,132,246, 90,69,133,213,178,106,139,52,243,67,26,199,30,232,246,172,109,183,116,159,234,246,253,237,191,194,191,119,117,115,145,248,42,243,87,188,211,239,245,20,153,67,43,65,119,115,111,47,205,185,87,248,183,54,213,143,238,255,0,223,63,222,172,47,12,107,175,124, 250,165,183,137,180,249,47,124,29,5,207,146,147,219,196,215,203,29,204,113,199,36,118,240,255,0,20,81,237,101,249,182,237,95,155,239,110,249,117,99,241,255,0,246,214,159,103,107,225,91,43,216,26,29,69,100,107,152,101,102,159,203,242,255,0,119,186,88, 254,93,205,34,237,111,225,219,255,0,2,174,85,129,171,8,243,36,18,124,167,83,31,196,43,125,51,195,113,38,167,164,164,214,22,31,189,187,91,25,85,100,145,118,255,0,203,56,219,229,111,189,247,183,127,192,171,145,241,199,138,18,11,71,26,101,205,146,88,193, 114,177,69,50,179,53,181,219,44,43,35,51,43,124,202,203,187,107,42,252,191,55,222,170,214,151,171,227,157,69,166,240,187,125,147,65,157,154,194,123,120,247,43,75,31,252,180,221,43,110,88,247,109,111,151,248,119,43,86,60,63,9,180,255,0,236,205,98,235, 196,122,132,150,87,112,150,147,77,178,104,217,222,230,31,225,102,218,219,164,109,169,183,251,187,190,106,154,113,133,47,139,226,52,140,163,19,171,240,149,194,248,227,83,131,94,125,37,236,44,18,72,244,196,181,183,211,230,134,206,230,21,85,105,26,31,151, 203,139,204,253,234,238,102,218,191,117,118,252,205,94,195,113,117,163,120,119,193,130,247,69,208,36,183,88,22,107,152,245,73,94,61,182,145,198,219,127,137,151,230,95,187,228,175,205,185,126,239,205,94,59,225,31,22,95,106,86,218,5,191,132,111,53,43,37, 129,126,204,208,199,59,42,180,59,149,150,77,172,222,90,172,127,50,171,47,205,182,187,233,60,9,174,107,119,23,250,46,189,175,45,205,221,253,179,44,145,43,44,182,203,38,229,221,36,76,202,170,219,149,85,191,217,101,221,92,248,185,70,62,233,82,173,19,123, 196,144,62,187,166,37,212,139,246,155,54,101,153,96,182,117,187,189,184,102,111,155,116,171,35,121,43,253,216,255,0,222,109,219,86,160,241,53,244,31,6,238,180,251,255,0,16,216,219,91,79,168,71,36,81,205,27,249,242,65,10,178,171,50,179,46,223,249,107, 187,204,147,230,249,106,151,130,252,27,166,252,55,210,181,61,10,202,27,219,123,219,157,75,203,189,213,164,141,91,201,85,141,154,63,37,87,251,178,109,93,202,223,119,114,183,203,80,107,247,119,158,41,150,27,40,90,91,153,154,56,219,79,154,11,70,111,189, 243,72,210,124,187,151,114,171,110,102,220,223,238,237,175,62,82,140,103,203,31,132,231,169,202,113,31,17,124,87,170,248,63,196,55,211,248,173,36,182,93,70,13,214,215,50,70,172,210,71,243,121,109,252,74,210,47,202,181,192,120,75,193,126,33,212,108,237, 111,188,61,115,109,229,60,77,119,27,93,221,175,239,246,174,217,62,242,183,247,153,118,255,0,122,189,178,231,68,190,211,225,93,63,86,176,209,245,121,237,174,90,238,210,9,66,220,205,109,230,55,204,187,100,219,185,127,121,242,178,253,239,246,107,51,199, 191,179,183,138,100,138,27,207,135,218,1,189,211,227,184,80,240,217,199,28,235,110,210,71,254,177,160,86,249,182,237,95,186,219,190,69,249,118,252,213,235,82,198,71,248,113,229,253,9,143,44,164,114,223,14,52,231,184,159,84,211,245,59,25,52,207,17,199, 30,228,213,23,81,146,63,180,46,237,209,195,37,188,109,228,204,172,171,242,183,222,249,191,133,149,90,161,134,201,245,77,113,109,239,110,45,52,189,46,209,89,90,89,87,116,54,146,72,172,187,89,127,189,242,237,174,75,195,254,5,241,22,165,169,220,88,79,121, 54,147,228,201,36,63,191,13,27,75,113,28,158,90,194,171,247,149,153,183,46,239,246,127,187,93,167,133,60,57,99,224,173,90,202,47,136,103,78,187,184,213,45,26,238,38,185,146,102,143,75,101,221,230,51,70,191,52,141,187,203,93,223,222,254,26,218,116,212, 167,126,99,104,198,199,77,173,90,93,248,163,195,15,119,61,133,150,147,103,105,36,50,52,241,70,210,237,141,151,106,254,233,190,236,123,85,191,224,95,238,215,61,224,139,109,31,85,241,60,215,94,43,213,47,87,79,178,150,107,243,136,213,154,230,72,228,86,129, 174,101,102,218,173,181,85,149,127,217,249,182,178,209,225,233,45,124,127,14,167,117,174,202,144,88,92,193,51,78,210,172,158,77,164,109,251,184,228,185,85,253,218,201,251,191,188,203,242,238,106,138,31,136,81,124,37,211,244,141,17,231,211,245,37,179, 130,75,121,237,210,217,88,60,123,151,203,152,73,183,247,141,52,108,187,155,254,89,249,77,85,66,212,162,227,19,78,94,95,178,122,87,138,19,72,127,137,69,110,160,191,93,37,87,116,62,101,162,238,187,142,77,178,121,109,30,221,219,127,214,127,186,202,187,91, 109,105,73,241,30,203,227,38,183,173,120,134,29,86,47,12,89,193,15,216,25,213,36,212,217,254,207,242,199,29,156,42,173,31,153,26,174,229,86,221,185,183,109,95,151,230,194,248,99,21,239,197,187,88,245,27,61,85,244,123,75,56,214,69,211,237,219,237,126, 116,113,183,202,178,72,202,223,121,182,252,171,253,223,246,171,208,47,206,173,44,54,18,120,112,200,211,249,177,181,204,16,90,125,146,75,102,145,182,237,89,62,111,50,29,191,117,191,229,154,179,110,102,174,154,89,156,240,239,151,221,249,156,181,40,66,164, 189,233,108,122,14,135,172,248,122,47,10,71,167,67,127,109,170,218,234,242,199,101,35,53,167,252,126,201,39,250,207,59,119,204,210,124,222,103,222,249,126,101,106,165,161,248,154,219,195,62,48,214,224,240,229,221,166,131,113,28,75,60,141,103,115,230, 121,158,92,155,98,86,249,87,203,95,155,255,0,29,254,29,181,195,107,154,77,222,155,105,14,171,52,118,218,52,23,243,201,111,119,124,151,63,218,45,4,158,115,44,139,108,170,205,243,110,249,188,207,246,183,85,173,11,193,131,73,214,18,118,241,9,159,79,158, 238,25,39,242,163,89,166,157,118,171,121,48,238,86,218,205,185,89,191,224,75,94,188,184,134,190,38,113,79,150,63,123,211,241,183,200,224,89,117,10,74,78,62,241,235,122,148,218,157,238,157,105,101,123,37,148,58,19,94,124,243,89,221,199,111,38,175,55,203, 35,121,141,255,0,44,227,251,219,155,248,182,237,254,42,246,155,84,138,59,72,133,151,151,228,236,95,47,103,250,189,191,195,183,253,154,249,235,194,222,30,62,54,215,180,203,175,17,255,0,105,221,105,90,85,245,194,201,167,219,68,222,92,114,121,139,26,172, 139,242,249,138,191,43,55,240,173,125,24,144,44,2,52,129,86,52,141,124,184,212,125,213,85,251,170,181,251,111,135,20,177,52,163,87,219,91,151,109,219,127,240,223,51,242,94,55,169,70,114,135,178,248,191,175,196,110,207,187,79,68,219,253,234,93,157,55, 154,114,253,218,253,76,248,1,148,245,76,31,122,120,251,223,61,30,95,189,0,31,247,205,57,126,122,93,131,43,188,80,191,122,131,48,110,71,74,122,166,90,133,79,239,211,194,125,223,238,208,104,51,253,207,189,70,207,151,238,212,138,157,55,210,236,52,0,213, 77,139,237,71,252,6,158,169,177,190,122,93,130,128,17,19,109,46,193,78,95,189,143,226,167,255,0,119,210,129,216,102,207,167,253,243,78,95,247,126,245,41,232,105,219,7,247,104,42,194,42,124,219,182,211,233,125,254,245,44,125,232,24,191,197,252,91,104, 84,83,187,101,57,126,245,57,83,230,254,28,208,79,58,5,69,86,197,46,207,155,238,211,182,26,85,65,65,136,159,158,234,93,131,222,158,185,249,126,90,63,139,109,0,57,83,254,5,69,61,81,191,143,165,46,207,111,210,131,160,21,61,41,234,139,183,109,10,135,119, 52,245,251,159,61,0,54,52,167,236,20,42,124,166,165,84,254,26,0,103,147,179,165,63,103,175,254,59,78,84,217,242,238,165,9,242,243,64,8,191,90,114,167,202,63,187,78,254,15,222,83,213,55,158,148,0,42,26,122,39,178,209,78,126,180,0,155,54,173,57,83,190, 234,21,57,235,75,254,253,0,38,207,154,159,229,251,211,105,251,62,92,189,0,45,11,243,245,235,182,133,251,143,74,191,222,249,87,229,160,207,218,14,95,159,173,34,167,247,41,222,95,251,95,173,61,83,7,222,131,49,158,72,217,77,217,207,181,77,179,251,227,154, 93,155,91,248,104,29,136,2,122,212,234,159,45,1,55,212,130,19,253,218,1,35,231,49,16,224,72,126,90,228,190,42,252,45,159,226,20,54,50,105,26,246,163,162,93,233,178,25,99,123,108,50,203,253,228,145,73,27,131,125,214,219,180,237,254,37,174,192,46,14,127, 138,149,98,32,231,189,109,138,195,71,19,15,103,53,238,133,10,179,195,84,246,139,226,63,60,60,87,240,99,198,218,93,236,218,71,138,244,244,146,211,66,185,184,184,91,221,65,188,187,38,133,183,121,107,28,159,51,66,171,247,85,126,111,189,183,253,170,243,231, 240,159,136,53,208,111,37,176,151,237,155,22,226,123,176,171,254,137,183,238,194,172,191,42,182,239,225,251,203,95,164,223,20,62,23,104,95,20,45,162,179,241,180,215,24,242,38,85,72,175,26,29,209,183,202,219,149,91,230,95,187,247,171,204,52,223,5,124, 62,177,248,45,13,183,128,44,34,189,26,21,219,221,217,219,95,187,198,215,23,49,183,252,182,111,188,219,155,230,81,255,0,45,63,218,175,202,51,79,14,240,181,235,223,218,219,78,250,254,93,17,250,94,93,198,149,35,70,211,167,255,0,146,233,249,159,12,232,95, 13,102,212,111,174,47,174,110,214,210,210,21,243,12,187,85,221,119,127,19,47,251,223,250,18,215,72,158,22,212,124,63,167,94,223,93,67,168,255,0,103,105,211,172,55,59,109,164,88,226,220,202,187,155,119,202,203,187,248,107,234,63,30,252,20,95,8,120,12, 120,157,154,255,0,194,11,246,168,245,45,66,222,218,209,111,110,175,38,219,181,86,72,213,74,196,171,252,74,187,155,239,127,21,120,231,197,219,79,22,254,206,222,23,213,97,248,140,98,215,124,37,226,77,58,75,29,54,24,175,36,99,11,201,182,69,254,29,163,106, 252,223,55,204,216,251,203,252,95,55,152,112,158,27,38,135,53,85,46,85,246,186,121,93,111,107,232,125,38,15,137,42,99,228,163,70,81,230,237,249,235,181,206,31,194,126,61,208,252,3,227,11,107,75,203,139,107,139,38,144,249,250,148,115,72,177,101,97,249, 109,163,142,63,148,118,220,210,110,218,203,253,218,189,227,63,218,35,195,246,118,23,154,55,194,168,218,43,43,177,31,218,239,173,29,173,238,46,36,85,145,124,181,141,190,234,178,200,223,46,239,149,151,253,175,151,136,155,198,218,28,63,10,117,13,27,76,210, 46,141,238,172,86,73,117,57,167,196,48,44,103,118,22,53,95,153,183,42,238,95,151,253,234,143,196,223,6,230,240,131,217,201,114,144,65,101,171,89,199,121,18,91,220,181,236,208,70,202,191,121,182,174,230,249,183,109,95,225,109,171,187,109,124,190,63,19, 39,66,84,232,198,50,135,218,148,86,215,233,119,253,121,158,238,27,14,189,170,157,103,40,203,215,127,59,35,133,215,53,89,108,162,70,180,73,218,8,228,102,89,25,151,239,55,241,54,223,226,219,242,211,45,32,107,237,86,23,158,118,91,134,143,118,232,219,230, 102,254,234,255,0,181,182,162,213,254,197,99,125,183,71,219,28,136,204,172,219,90,53,101,255,0,117,190,101,111,246,106,125,42,116,181,146,221,172,124,219,159,53,183,77,28,43,181,149,119,127,171,86,95,153,119,46,239,154,190,74,82,247,79,162,141,206,149, 53,100,240,117,165,134,183,166,220,88,61,204,15,133,138,234,210,59,155,125,170,187,149,66,236,219,34,237,249,89,90,175,105,118,247,31,19,52,135,186,215,33,240,239,135,108,238,238,38,150,218,104,52,149,134,206,73,204,89,242,213,97,111,221,244,111,155, 107,70,191,240,45,180,253,15,67,241,23,138,110,26,15,14,91,219,232,246,12,141,187,237,87,42,241,194,27,254,250,221,39,203,247,246,238,111,226,101,174,251,192,95,179,246,181,227,31,12,220,95,92,120,207,76,253,220,12,110,173,174,22,31,244,41,89,190,104, 228,140,175,202,219,118,183,203,183,204,221,30,214,93,213,199,60,68,41,70,242,145,170,147,143,197,35,157,210,190,39,232,254,16,191,187,125,14,211,80,211,52,219,203,24,226,120,62,214,110,236,154,237,64,142,89,35,145,126,102,135,108,107,183,59,164,95,155, 248,118,237,173,225,121,46,188,69,163,36,113,192,203,225,217,238,86,47,38,222,93,183,115,237,251,178,73,47,221,137,127,222,95,226,101,254,42,210,248,165,240,11,196,154,27,92,226,8,174,244,171,151,183,121,197,140,17,195,60,173,183,114,188,48,179,51,43, 55,241,43,127,119,254,250,230,190,21,120,154,125,7,70,185,142,230,107,19,61,169,204,16,220,237,95,45,186,109,143,229,249,164,221,242,170,183,241,85,75,25,42,180,185,105,202,241,65,42,81,151,53,88,252,71,172,120,38,61,47,196,122,226,105,48,221,92,218, 65,103,26,173,164,62,90,171,50,237,109,173,38,229,242,246,237,86,93,204,187,155,229,174,147,78,248,123,125,167,106,119,86,81,233,237,49,154,54,88,103,121,252,203,104,33,221,185,149,151,248,91,119,250,189,223,240,26,242,11,61,98,246,214,242,125,71,198, 247,12,166,21,242,150,9,39,219,115,43,47,240,183,241,43,43,43,124,191,236,237,174,151,73,253,166,224,190,240,102,201,172,39,55,19,68,214,151,179,193,43,127,166,183,222,221,50,253,221,223,197,242,252,203,252,53,227,98,48,115,158,177,141,204,87,47,41,220, 248,190,225,60,8,150,144,92,218,73,178,238,77,182,87,43,18,249,119,13,252,77,30,239,153,126,246,223,189,254,213,104,233,126,48,213,116,253,30,203,82,213,244,214,131,76,211,25,172,22,219,201,86,105,35,219,187,201,145,190,246,223,153,87,115,109,249,107, 134,248,109,226,77,99,196,122,223,246,102,23,91,176,187,187,133,109,174,215,114,217,66,191,242,209,119,72,219,86,69,141,126,243,50,252,180,207,138,158,45,127,10,120,218,125,35,196,90,132,246,154,106,203,242,180,83,170,173,206,214,109,171,230,178,238, 254,45,223,250,13,98,240,19,151,44,101,172,141,29,63,249,120,119,41,224,119,215,117,155,91,127,6,248,158,61,118,95,35,237,183,58,122,36,203,62,156,223,47,238,254,111,245,139,251,205,190,103,205,187,251,181,55,137,53,219,77,34,214,234,127,21,106,87,177, 106,54,83,171,68,145,73,229,249,234,203,186,77,203,253,223,45,149,85,190,246,230,109,203,92,14,159,241,88,248,119,79,206,153,226,197,141,85,150,77,63,236,16,42,197,20,109,243,51,121,139,251,205,171,39,240,179,51,127,21,115,35,74,150,123,223,237,123,47, 16,94,220,94,95,110,105,91,110,233,36,102,111,155,107,125,214,251,223,55,247,127,224,53,147,194,74,164,189,231,202,47,118,111,150,39,169,104,55,176,248,159,193,119,171,226,171,79,42,95,178,71,105,4,22,204,211,73,104,191,43,70,172,219,119,43,127,19,110, 255,0,103,238,214,212,63,23,117,95,10,232,87,22,54,186,109,183,250,3,91,201,3,121,146,42,195,30,239,151,248,182,178,182,230,254,247,222,174,51,192,218,238,147,119,225,52,151,74,213,46,36,189,142,6,219,105,255,0,30,205,23,203,242,254,243,204,111,49,182, 238,102,95,151,229,174,235,195,218,54,191,113,225,132,212,60,119,164,105,247,54,151,47,28,145,74,170,171,29,205,191,151,187,114,180,109,181,183,124,173,183,251,202,191,119,117,113,98,40,202,148,181,143,186,84,168,202,17,229,145,137,227,175,15,233,159, 16,124,119,5,222,175,126,211,61,139,67,123,124,190,100,151,45,53,195,46,213,102,145,126,85,249,149,87,203,219,253,223,225,102,170,247,31,11,252,55,63,136,60,54,208,37,221,166,183,36,19,53,205,219,198,214,219,149,100,102,95,220,73,185,100,219,243,110, 101,219,247,190,85,171,154,197,130,235,94,42,154,239,195,255,0,96,210,180,87,133,108,151,80,191,111,179,64,203,31,204,203,34,179,124,223,51,109,85,106,159,84,58,61,174,143,167,54,145,123,36,142,209,109,17,75,52,114,237,109,219,100,142,77,204,205,27,127, 18,255,0,13,105,26,181,253,222,83,40,211,148,189,227,102,215,226,9,209,124,65,20,122,212,246,242,52,44,191,102,86,138,63,47,106,199,251,185,36,249,87,116,44,219,191,224,91,191,138,179,237,62,5,248,123,198,62,50,91,223,18,232,182,18,207,36,126,101,204, 243,79,246,117,111,189,253,214,221,38,213,93,187,126,102,219,183,230,249,107,75,225,255,0,139,116,217,52,153,116,159,21,127,102,92,93,223,217,72,182,81,234,82,44,223,98,143,248,119,44,139,187,118,230,220,170,191,55,241,42,173,114,122,167,137,155,194, 154,114,218,93,207,231,234,82,121,154,124,95,197,246,159,45,182,253,161,127,217,254,29,172,170,223,236,237,249,171,166,156,107,83,253,229,35,94,94,120,232,118,175,227,61,62,239,92,72,60,33,172,127,103,106,19,196,176,45,205,148,91,126,85,102,147,201,243, 27,110,223,226,111,49,127,221,172,157,35,85,143,196,86,47,117,174,106,182,209,233,113,199,246,102,107,105,54,222,222,204,205,185,97,159,253,149,249,182,197,183,248,150,184,61,107,226,85,198,179,189,210,201,97,183,187,185,142,79,58,37,88,97,178,220,187, 100,85,141,126,111,239,109,93,223,197,254,213,85,209,124,99,107,160,248,133,227,177,210,165,185,191,86,103,182,178,135,114,173,132,59,118,171,51,54,230,251,205,242,175,205,247,190,111,150,181,250,172,166,189,242,61,140,79,95,184,210,45,252,101,167,91, 104,127,96,125,58,210,194,217,146,40,60,246,141,124,153,21,118,198,203,247,124,197,147,115,110,219,247,119,86,239,193,11,171,223,24,124,81,77,62,230,93,70,202,227,69,158,59,111,177,47,151,52,107,242,253,233,25,91,114,237,219,31,204,191,47,239,62,90,161, 224,43,75,125,1,39,188,241,213,204,23,127,219,49,45,134,155,12,151,141,104,219,151,229,150,109,171,185,110,213,149,86,61,191,117,118,255,0,121,182,215,217,63,177,231,133,190,27,252,86,248,41,227,105,109,167,208,180,15,25,104,183,54,49,104,151,78,176, 218,205,52,77,35,45,204,45,26,238,102,85,95,155,247,106,219,85,89,151,230,102,90,237,200,86,22,88,234,112,197,75,150,28,198,56,202,85,99,70,94,199,222,151,47,186,83,240,199,132,236,60,33,165,37,166,129,108,150,145,110,105,36,69,63,242,209,190,105,27, 254,4,219,171,81,87,3,111,97,93,129,248,23,226,59,248,222,95,11,90,88,248,146,24,183,51,62,135,127,14,161,229,175,251,81,171,121,223,249,14,185,91,253,54,227,74,186,120,53,91,107,139,57,227,109,173,20,241,52,50,47,251,202,219,90,191,179,178,156,199,1, 141,165,21,130,171,25,165,252,173,63,200,254,113,206,50,156,199,3,86,82,198,209,148,28,187,166,191,50,45,139,239,74,169,181,205,47,220,20,229,74,246,15,12,74,94,61,233,227,239,115,210,149,122,255,0,118,131,65,129,61,105,219,55,246,167,236,27,169,219, 115,150,160,204,106,245,235,79,242,253,232,143,189,57,126,122,13,1,126,79,255,0,102,149,83,34,157,31,222,249,5,59,239,154,10,72,102,207,251,230,141,156,123,212,170,155,254,180,187,62,245,3,176,205,159,194,244,4,223,214,158,137,233,78,31,244,204,80,49, 145,161,230,150,159,199,90,114,253,55,80,3,66,13,188,245,167,42,124,189,105,126,106,145,58,208,3,99,74,124,104,180,108,249,133,58,52,46,219,168,1,87,231,95,187,64,79,90,122,167,59,182,209,223,56,160,0,39,205,205,63,103,203,252,57,161,147,41,154,94,80, 208,0,188,237,90,147,103,201,77,84,249,114,244,255,0,47,230,194,80,0,49,186,156,184,221,140,210,236,249,154,159,26,43,170,208,2,1,177,105,235,245,167,108,227,20,42,111,237,64,9,176,123,211,182,124,212,187,115,255,0,3,165,84,247,160,7,42,29,216,237,78, 84,247,161,126,237,45,0,59,103,203,251,197,165,251,226,129,30,196,254,42,90,0,77,159,45,42,252,135,229,167,20,244,165,68,231,138,0,102,206,63,139,53,42,166,69,57,87,127,252,6,164,84,20,1,26,167,203,138,85,77,255,0,222,106,127,147,191,181,75,229,253,208, 159,250,21,6,22,35,68,244,169,85,27,191,241,84,138,159,45,63,103,183,233,65,185,30,207,95,252,118,141,130,79,191,182,164,108,35,237,166,178,255,0,23,247,104,39,152,35,65,252,20,229,69,61,105,23,238,211,247,252,191,61,4,31,56,199,30,25,179,210,146,226, 31,49,25,79,86,93,185,169,226,128,201,181,97,86,145,155,176,93,205,94,111,168,126,210,26,26,88,77,253,150,254,102,166,186,133,198,153,5,164,251,161,243,165,133,119,50,238,219,181,126,95,155,230,254,26,172,86,50,134,23,221,173,46,80,165,134,173,136,254, 20,121,143,20,253,183,215,90,240,109,158,143,127,113,38,160,150,218,43,78,33,191,183,142,79,244,120,54,174,214,145,149,190,93,219,190,102,251,191,47,221,175,53,253,158,190,34,106,95,10,26,93,79,78,211,190,217,123,44,49,170,217,78,191,235,247,124,219, 150,70,255,0,86,223,123,118,239,155,107,124,181,238,159,182,223,198,155,109,27,225,213,130,120,91,86,251,66,79,62,205,66,210,218,63,49,111,33,145,27,247,44,223,237,110,86,95,247,107,227,141,83,194,250,31,136,239,116,45,30,203,82,185,142,93,90,8,174,204, 250,154,201,186,107,166,101,143,201,109,223,117,151,253,90,179,124,187,171,240,110,46,204,39,75,51,250,206,91,94,237,124,236,222,154,126,189,190,227,246,30,24,194,66,174,3,216,227,40,217,51,232,77,107,246,222,214,124,69,166,219,216,220,233,26,68,223, 98,86,93,83,237,190,100,108,179,125,221,209,178,252,191,121,191,218,219,94,11,241,67,227,150,165,171,105,49,105,190,40,88,146,37,184,89,36,129,85,150,53,218,170,190,99,42,252,172,205,253,239,189,242,173,113,62,37,186,135,195,62,43,104,53,72,239,30,203, 78,157,130,236,189,220,251,227,147,15,243,47,203,187,114,252,203,252,53,135,168,9,124,75,113,117,43,201,118,226,121,218,89,154,71,86,93,205,185,151,238,255,0,179,254,239,205,186,190,51,29,159,230,184,152,202,158,46,191,52,79,168,192,100,24,12,47,189, 66,143,41,233,95,13,244,125,55,73,210,47,172,216,65,174,63,138,98,85,183,182,117,86,251,60,145,179,50,183,222,249,91,239,109,101,255,0,129,84,90,199,131,53,216,108,101,125,42,107,72,32,212,238,99,99,17,220,210,121,139,15,203,9,105,89,124,184,255,0,139, 230,95,188,203,182,185,191,14,248,27,70,125,15,116,243,39,250,100,114,67,50,249,223,187,180,111,249,103,36,159,197,255,0,1,251,181,215,47,197,27,103,211,116,253,38,249,146,237,225,145,96,251,67,70,205,20,235,247,89,91,119,222,251,205,243,127,119,238, 215,128,241,21,234,242,210,167,80,246,93,58,80,151,52,162,99,220,254,207,246,122,53,164,13,226,251,139,181,213,62,214,205,119,44,123,90,194,11,63,151,108,146,79,252,45,252,53,169,164,217,217,91,220,88,219,232,250,69,131,89,168,89,32,147,86,69,185,185, 130,21,254,40,254,109,191,54,230,101,95,188,191,240,26,239,252,80,254,28,214,237,188,143,5,93,107,151,122,229,206,216,230,243,34,242,237,36,86,85,142,70,220,223,221,218,187,127,217,221,187,230,249,171,157,215,252,21,115,240,230,33,107,99,45,164,119,86, 204,211,180,210,121,126,125,178,200,219,99,102,146,54,220,208,178,238,218,191,43,110,251,223,122,177,197,96,235,81,230,231,148,95,248,94,134,184,108,68,43,123,219,30,145,225,105,124,47,240,167,193,211,95,234,228,190,153,123,3,74,178,203,180,45,188,146, 73,182,54,142,111,154,53,220,172,223,43,55,241,110,251,223,45,113,31,19,167,151,71,241,245,166,177,246,43,155,11,217,34,88,226,134,107,69,141,90,29,202,202,173,47,221,249,153,149,183,124,203,243,54,223,239,86,159,193,255,0,218,182,127,129,63,108,142, 243,196,23,182,183,210,216,78,96,130,202,52,184,121,102,147,229,243,25,27,116,118,251,119,55,204,223,51,127,13,115,90,215,196,253,67,226,62,161,120,254,0,102,210,231,72,214,93,66,95,154,101,154,102,125,169,12,113,175,204,210,110,115,186,70,111,221,255, 0,21,121,20,50,250,211,169,164,110,118,77,211,229,230,57,159,25,124,69,190,150,52,183,190,251,77,176,182,155,200,142,41,38,243,126,200,171,35,110,86,254,41,23,111,250,191,248,23,247,171,158,134,113,46,161,62,181,61,172,69,172,110,86,104,161,58,114,207, 111,119,181,188,197,91,184,218,78,21,182,237,101,254,37,102,86,171,190,59,240,95,136,52,125,86,24,174,163,125,66,226,226,204,220,3,26,252,178,71,183,230,101,86,109,205,34,237,254,239,205,252,59,170,206,137,225,109,111,197,58,35,175,133,236,214,250,88, 33,142,9,218,27,136,213,165,143,115,109,85,139,239,55,204,191,239,53,123,120,124,174,124,220,145,139,230,244,57,37,139,141,15,126,60,167,163,91,248,35,225,207,237,29,240,237,188,70,222,33,135,194,94,50,211,111,91,251,91,194,166,201,147,75,212,45,217, 183,36,250,92,204,219,108,246,174,85,173,228,102,93,223,234,246,245,108,141,15,225,189,175,134,47,109,33,213,116,205,86,43,61,86,1,46,129,119,121,177,99,214,45,213,25,178,25,127,118,223,47,204,187,118,179,103,238,237,249,169,176,232,250,199,133,173,222, 47,10,42,220,172,82,45,163,91,180,82,93,219,94,201,181,90,70,86,111,149,90,63,247,91,230,220,181,210,104,94,23,241,92,58,213,203,248,162,240,61,150,168,146,92,203,164,182,154,183,171,112,177,219,201,36,106,202,203,242,249,114,109,251,187,119,127,23,251, 60,242,195,227,40,85,148,90,216,217,226,48,216,190,89,108,114,122,142,185,225,239,135,58,150,131,62,171,160,248,115,86,154,194,202,91,13,106,206,242,213,154,61,86,93,200,209,92,44,127,243,217,87,119,203,242,237,221,229,252,203,186,187,29,83,194,175,166, 205,246,141,93,180,235,29,70,69,147,81,180,146,218,117,142,120,22,72,126,89,55,124,202,202,223,117,96,251,170,202,219,107,205,165,178,63,24,53,24,202,233,154,181,175,138,52,203,120,69,222,154,173,53,210,198,176,175,239,238,191,125,181,162,117,102,135, 247,95,50,170,183,203,185,171,173,248,63,225,13,63,197,254,13,190,215,188,69,108,218,180,182,55,177,233,55,49,249,236,208,54,230,221,27,70,171,183,119,203,242,238,102,219,243,51,125,218,214,142,14,190,103,136,140,57,185,101,246,190,68,226,234,188,5,11, 203,222,143,249,156,22,169,125,123,227,111,17,182,180,38,130,238,227,106,173,204,183,172,187,164,254,236,146,170,170,170,238,168,238,238,255,0,225,20,208,2,104,209,234,205,171,79,44,109,113,36,46,99,130,221,150,70,111,38,24,85,119,55,203,229,179,72,255, 0,50,178,254,239,110,230,175,66,209,181,141,75,225,127,137,117,77,75,195,190,27,176,26,109,189,218,221,203,105,121,182,31,54,22,146,54,133,149,163,86,101,85,93,172,223,195,243,109,166,120,147,226,173,175,197,54,182,183,240,118,139,175,219,107,51,216, 205,21,245,208,104,254,197,14,239,155,116,106,187,95,106,170,44,123,89,99,110,91,238,179,87,161,83,5,77,83,147,117,125,248,253,150,153,201,75,19,81,184,184,211,247,76,207,217,207,237,30,33,95,20,155,141,22,243,196,182,250,180,112,217,76,99,152,32,154, 65,50,180,179,121,76,54,172,203,30,214,142,72,217,94,63,153,151,118,237,181,217,107,62,24,213,244,47,14,89,93,105,122,61,213,150,159,107,43,91,64,45,217,174,246,255,0,11,71,247,182,249,155,190,86,151,239,51,124,205,181,107,205,252,29,107,226,31,15,217, 75,127,240,235,74,185,182,107,79,178,143,46,91,150,89,18,123,169,26,24,167,134,9,182,238,102,147,103,221,111,221,179,47,240,215,75,167,124,117,211,124,41,225,157,100,203,127,226,139,15,16,105,207,29,173,190,153,117,114,46,163,151,108,141,28,249,184,218, 217,101,101,102,220,89,119,124,171,30,246,251,190,6,51,11,86,90,74,62,235,61,88,201,87,209,203,99,189,184,240,106,190,141,168,88,104,151,77,12,87,110,187,111,205,199,203,121,110,209,198,222,115,109,255,0,87,181,188,200,217,91,107,124,181,201,13,18,15, 9,73,18,120,163,76,213,47,211,77,185,111,183,237,141,188,185,228,147,229,135,116,138,219,182,252,202,202,219,191,222,254,42,137,63,104,75,223,25,104,178,44,250,117,173,244,211,164,171,123,97,125,167,180,147,75,104,89,72,242,23,106,181,194,42,161,221, 253,220,110,254,42,191,227,63,136,158,16,213,252,59,107,12,23,74,150,137,115,178,210,69,157,166,142,63,187,254,190,70,85,220,187,87,119,251,63,238,215,153,245,106,180,42,114,242,251,166,92,186,152,30,45,147,78,240,164,143,173,105,215,159,233,247,45,28, 118,150,155,119,78,202,205,182,73,188,207,226,219,253,214,255,0,107,109,103,235,214,90,199,136,96,155,196,218,13,134,161,97,100,144,66,243,234,55,177,121,127,107,42,222,92,127,188,85,218,203,185,130,175,241,125,237,223,55,203,78,241,158,137,165,107,90, 44,87,30,19,109,47,103,219,126,200,45,163,157,127,112,191,197,35,127,23,150,223,194,219,126,247,221,249,86,170,105,16,106,58,158,158,186,126,157,107,169,193,62,157,112,150,246,209,11,167,88,217,135,240,180,63,234,218,77,199,229,249,89,183,127,118,187, 97,126,83,79,238,151,252,101,38,171,163,217,217,232,118,80,193,96,205,47,219,103,150,43,221,211,69,187,107,42,238,251,173,230,47,205,181,126,239,251,45,93,191,194,143,14,55,246,53,173,239,136,124,171,72,86,88,109,11,197,23,154,214,209,179,109,86,86,254, 45,219,87,115,125,234,198,210,124,23,118,247,250,51,89,74,159,218,87,235,36,237,30,181,31,151,28,126,79,250,205,210,109,109,223,121,190,86,254,45,171,252,85,222,107,23,86,242,54,155,101,21,160,80,242,66,203,2,201,28,126,101,198,221,205,229,183,252,243, 249,126,85,102,221,89,85,173,201,27,68,207,99,209,124,39,225,125,62,218,100,105,174,53,27,219,59,121,218,22,150,214,211,115,70,178,77,185,90,56,254,111,45,119,47,203,183,230,251,223,196,181,218,235,158,20,182,134,29,30,29,50,15,62,238,234,229,154,86, 86,101,134,202,63,155,107,72,203,185,182,179,54,230,101,249,188,205,191,54,218,226,173,254,32,197,171,248,94,75,117,133,100,213,238,153,126,216,170,211,44,214,138,171,243,121,109,183,229,249,191,244,47,248,21,115,218,95,137,157,25,158,109,102,230,222, 39,129,163,210,236,167,159,200,251,76,202,171,229,178,179,124,171,251,197,95,188,202,181,225,86,167,86,172,254,19,101,55,71,94,231,216,190,13,248,119,240,242,206,239,195,58,77,167,196,15,19,248,71,93,254,202,187,181,186,55,11,155,40,46,214,79,244,61, 82,77,172,179,52,45,243,67,37,191,156,190,98,237,146,61,173,27,53,119,186,47,195,31,23,107,186,5,166,181,171,120,207,79,241,102,153,54,135,253,169,13,206,163,52,191,218,82,180,114,109,185,180,135,114,170,180,112,249,139,36,50,110,111,58,38,254,244,108, 205,240,111,130,224,190,240,189,229,181,223,196,6,191,159,236,82,201,53,229,204,235,31,153,36,155,87,203,109,205,254,173,85,183,42,178,255,0,232,77,95,75,252,13,253,169,238,52,207,17,189,231,142,108,175,109,173,181,127,54,205,98,212,238,227,184,183,176, 178,101,218,251,124,207,245,42,210,52,51,42,175,204,204,187,190,93,181,234,240,238,105,139,225,204,202,142,46,140,236,148,189,239,75,234,190,227,220,199,99,240,188,71,150,212,203,51,10,106,220,190,239,147,179,179,251,207,69,43,229,181,42,39,252,6,159, 113,9,182,157,146,98,172,87,229,37,89,89,91,253,214,95,149,168,95,238,253,218,254,234,163,85,86,132,106,71,88,200,254,50,173,73,209,171,42,79,226,136,131,235,78,84,249,126,90,93,133,58,210,236,82,223,37,108,100,25,232,212,245,79,152,210,236,52,232,211, 229,219,65,73,12,84,255,0,226,169,244,165,54,116,167,108,222,187,191,246,90,204,145,159,115,219,20,244,233,74,19,45,242,30,41,233,255,0,160,173,104,87,188,50,164,216,55,125,234,122,167,253,243,78,217,198,234,204,146,54,77,249,207,222,161,126,246,234, 123,39,205,251,186,112,79,90,208,208,141,83,13,158,245,38,197,122,112,69,219,156,127,189,78,217,253,254,148,28,227,21,48,125,233,223,54,223,158,164,84,200,160,71,177,43,51,65,138,157,191,187,79,84,249,191,217,167,42,123,83,150,31,154,180,52,25,179,143, 122,145,83,230,251,212,229,78,167,239,82,170,236,106,0,69,78,212,239,47,230,195,210,170,115,251,202,145,58,80,3,54,47,221,254,45,213,34,166,197,246,165,216,212,255,0,151,111,78,104,1,170,155,255,0,224,84,170,133,26,158,169,243,45,42,167,63,188,160,6, 55,221,234,212,229,79,239,127,251,52,245,135,248,147,173,61,83,229,249,232,1,139,247,169,127,229,167,74,118,207,111,210,164,160,6,182,123,208,185,235,82,42,47,252,10,151,103,205,243,208,3,17,61,42,77,135,125,57,83,123,124,149,55,147,245,160,8,33,74,151, 236,217,255,0,106,156,137,233,79,216,40,2,53,135,165,72,176,252,223,37,61,83,229,169,63,187,64,17,170,124,180,229,76,181,61,83,238,209,179,156,208,99,97,223,112,210,83,145,54,82,236,20,27,9,252,35,125,27,63,251,26,114,238,221,132,20,253,159,195,65,153, 30,207,150,149,83,229,169,4,123,23,231,90,54,123,126,148,1,242,103,197,255,0,17,195,225,31,1,94,77,119,168,73,164,203,63,250,52,87,104,173,251,153,27,238,179,50,253,213,255,0,106,190,54,248,197,173,248,139,226,133,251,45,213,206,149,225,228,190,154,75, 223,49,183,71,253,166,208,237,133,166,220,191,47,152,203,183,111,153,183,119,203,95,78,252,124,240,66,248,174,61,186,246,185,253,133,13,180,17,223,220,237,102,242,126,209,30,237,172,191,222,109,173,181,149,190,247,203,95,48,248,183,226,74,207,164,234, 37,180,125,59,81,180,241,37,171,105,23,6,198,109,182,237,27,127,171,142,219,111,205,26,255,0,123,119,241,121,141,186,191,10,227,156,214,158,47,27,47,106,189,221,163,247,95,91,121,219,241,63,86,225,108,178,120,92,63,185,191,244,136,252,73,2,218,124,59, 180,31,11,117,123,249,47,181,111,179,233,146,196,254,90,249,145,175,238,254,243,124,191,50,252,187,151,238,255,0,122,188,217,255,0,101,233,124,81,225,237,107,88,125,123,73,198,157,60,112,200,90,102,120,174,94,67,183,201,143,251,190,90,237,243,25,183, 127,187,252,85,216,233,122,206,143,225,125,6,219,67,211,96,134,229,238,33,104,101,187,150,95,222,105,219,91,230,146,56,246,254,242,70,221,181,87,254,5,254,203,122,135,194,207,4,104,159,7,60,47,226,72,252,37,121,169,139,189,103,75,146,254,215,78,213,221, 35,87,220,187,86,47,45,190,89,25,153,100,251,223,50,178,183,204,181,242,249,92,33,142,135,45,126,91,217,251,218,233,219,77,17,245,120,154,213,48,87,149,63,252,7,191,115,230,237,71,225,151,133,108,45,111,172,172,244,171,253,75,86,154,21,130,63,42,241, 161,131,78,249,89,86,104,247,46,235,134,243,54,254,237,155,107,43,47,251,181,79,68,240,18,253,146,125,43,88,211,32,254,218,73,252,150,88,213,99,100,145,190,85,143,119,221,147,119,254,59,182,143,137,122,206,159,171,121,87,26,36,80,90,219,221,205,18,45, 154,52,158,102,157,50,253,229,255,0,105,183,43,55,152,191,47,221,218,223,46,234,52,141,58,242,9,19,85,240,228,183,215,22,118,98,52,123,191,37,166,88,102,85,102,218,210,124,219,100,218,219,182,183,222,86,254,42,249,44,194,148,227,57,71,155,155,208,250, 44,52,221,88,197,179,63,226,61,157,175,194,255,0,22,255,0,99,93,68,179,24,17,124,249,45,252,200,22,88,217,89,150,57,63,137,25,89,191,135,229,106,230,52,75,159,46,246,89,109,97,105,244,246,184,101,93,205,185,89,182,252,173,253,239,226,251,213,187,227, 253,66,125,110,240,197,170,201,5,205,180,82,126,239,110,237,173,187,230,249,119,54,237,173,247,190,111,226,171,127,5,124,3,121,255,0,9,189,229,213,141,166,135,121,123,225,205,54,235,84,91,75,137,241,21,212,177,152,225,130,29,163,110,230,51,76,140,171, 242,238,100,95,238,212,97,212,185,99,31,180,110,163,18,207,131,124,77,55,133,173,219,94,212,172,175,39,210,172,157,116,201,101,183,120,213,100,185,145,26,77,155,90,77,205,182,61,172,202,170,203,183,118,237,173,88,154,143,140,53,31,28,234,186,119,217, 237,188,141,118,64,33,146,75,121,152,53,235,13,170,172,223,195,242,252,171,254,202,174,230,111,151,229,231,124,77,167,95,248,35,85,242,245,213,101,190,182,45,11,66,235,243,197,183,106,179,51,127,121,153,119,53,67,164,120,179,80,209,47,239,100,210,238, 82,198,59,235,102,134,234,32,158,116,119,16,252,173,229,72,173,247,149,191,224,63,118,186,99,132,133,41,254,250,34,246,202,81,247,15,97,181,210,173,111,60,60,218,127,138,238,116,199,187,210,175,101,151,80,91,59,15,49,117,22,81,229,164,49,220,43,237,154, 79,157,149,153,85,86,61,187,89,155,239,86,191,140,63,105,120,124,65,226,143,10,65,99,162,89,67,6,143,104,44,102,211,160,211,223,203,137,82,93,168,92,46,229,147,108,88,102,133,151,106,178,175,204,122,215,45,225,191,218,27,194,158,17,248,127,125,163,221, 104,23,247,242,188,109,105,14,251,181,130,222,59,105,62,102,242,214,63,154,25,25,191,214,50,255,0,179,94,73,225,175,20,107,222,31,183,187,187,240,205,205,236,40,35,104,100,184,133,15,200,178,157,167,116,155,127,119,187,238,255,0,15,181,125,63,215,227, 151,211,141,60,52,249,185,162,185,189,86,223,215,252,57,226,44,43,198,213,148,171,67,150,43,225,249,159,84,69,7,134,244,93,6,111,20,234,208,71,168,95,219,207,114,46,46,110,152,173,205,235,73,14,232,246,249,127,44,106,170,171,229,201,183,111,251,95,46, 234,243,7,254,199,30,37,155,82,212,229,58,156,54,142,183,107,120,186,114,188,119,177,40,85,143,201,101,10,203,251,207,149,183,47,240,255,0,181,186,185,175,135,31,24,245,127,134,158,45,135,83,86,73,110,225,182,104,85,167,30,116,114,71,183,239,71,187,229, 89,23,248,91,248,127,187,243,87,67,241,47,227,213,167,137,116,63,12,36,118,122,126,159,120,162,105,53,6,183,183,85,153,151,119,238,149,149,126,242,178,150,251,222,187,171,171,21,141,193,227,240,220,209,180,101,31,179,109,229,222,247,212,229,165,132,197, 97,107,242,203,222,140,190,215,242,158,129,225,127,138,186,118,157,126,250,86,158,100,91,107,214,255,0,77,150,29,191,186,220,203,36,139,11,124,219,87,119,251,95,187,251,191,195,93,183,136,252,123,224,173,103,195,179,232,243,60,26,117,204,150,173,44,239, 109,121,136,109,149,99,101,220,172,191,188,221,243,110,102,95,251,230,188,247,246,123,79,12,248,223,82,86,241,182,190,60,55,123,123,97,182,218,11,75,79,244,187,215,93,223,117,89,124,182,101,242,254,243,47,204,181,183,225,127,30,106,30,13,183,111,180, 222,105,94,91,222,71,253,143,53,222,149,28,22,210,91,170,180,111,36,219,85,154,61,203,183,108,127,55,223,249,153,183,109,94,42,53,175,87,154,188,226,227,203,252,169,219,183,93,62,243,74,184,73,56,123,156,202,95,119,252,57,192,254,211,158,56,107,255,0, 18,105,154,237,165,238,221,74,104,163,130,89,45,31,203,146,56,99,141,85,21,182,237,147,230,101,102,218,223,253,141,55,193,31,30,167,248,95,240,254,29,19,194,179,8,111,53,11,203,171,205,69,238,237,162,158,222,218,102,136,91,193,113,102,203,243,43,125, 159,122,183,153,187,231,195,42,237,205,47,199,223,136,26,199,197,15,134,19,222,234,167,78,101,211,181,144,229,205,160,183,151,123,180,145,126,235,63,122,62,119,121,99,118,223,151,238,237,174,111,224,47,134,52,207,28,248,142,238,203,198,214,183,151,203, 46,149,114,33,91,105,60,167,183,159,114,44,83,238,222,187,188,189,227,247,127,197,159,186,213,228,99,106,202,88,207,111,135,171,105,62,187,126,87,61,172,26,95,82,246,88,168,115,69,116,223,252,143,123,253,145,255,0,103,57,126,33,104,122,207,137,60,73, 52,55,122,141,197,148,109,4,151,115,179,91,195,27,50,170,249,204,173,185,153,154,38,218,191,221,221,252,85,206,124,121,209,146,206,229,244,223,11,153,151,80,176,182,183,254,210,182,146,79,153,87,204,153,91,203,111,189,38,214,86,243,35,254,21,219,183, 251,181,205,248,7,226,91,254,201,30,53,215,116,43,249,52,239,17,233,183,126,90,207,37,165,227,67,45,171,42,179,121,209,171,43,42,201,243,109,101,109,203,183,238,215,150,124,65,248,149,169,124,69,241,53,214,181,226,43,203,189,67,106,227,253,37,99,141, 158,53,95,186,203,22,213,172,167,152,209,116,35,70,52,173,83,237,75,249,138,134,91,85,214,246,177,169,122,127,102,63,202,118,94,36,214,127,178,124,59,123,169,248,115,198,118,26,155,25,252,136,173,71,153,37,196,143,36,127,59,194,178,124,169,9,83,251,201, 63,189,181,87,230,174,103,225,159,138,180,239,4,234,71,80,212,108,172,181,221,66,36,104,160,130,91,239,45,160,227,253,98,237,220,222,102,239,151,111,247,89,171,217,60,49,251,56,248,39,71,219,28,190,48,240,207,142,117,214,185,143,101,158,147,112,211,88, 73,27,70,178,109,89,23,253,100,139,243,43,43,127,223,59,150,190,170,248,127,168,248,17,124,53,99,225,93,102,227,194,250,30,171,166,216,42,216,219,94,61,174,159,117,127,10,198,178,42,219,205,50,170,172,155,126,111,46,70,86,251,191,47,205,70,15,47,133, 126,122,181,230,161,21,215,79,187,127,243,102,152,156,92,112,206,52,169,211,115,147,245,255,0,47,248,7,206,114,120,99,226,143,237,17,224,215,183,213,252,55,162,90,203,26,44,201,61,219,72,183,209,194,187,85,99,142,63,47,230,219,187,238,179,43,50,183,221, 174,35,87,240,87,138,116,107,109,55,195,62,33,208,52,187,187,245,191,146,215,79,213,158,255,0,200,181,181,147,116,153,134,229,148,152,209,149,183,42,172,159,223,95,222,53,125,83,103,251,68,222,105,250,53,236,95,10,110,109,111,252,65,60,18,106,158,103, 218,33,187,154,222,194,61,170,183,19,90,43,43,70,203,185,86,63,149,190,247,204,173,81,29,82,199,192,95,11,35,109,122,218,77,106,43,217,228,143,82,210,45,172,228,102,243,174,62,105,183,51,127,23,252,180,105,27,230,93,205,94,254,27,135,112,249,159,240, 170,185,105,118,251,118,235,127,83,195,173,158,87,203,191,137,74,222,71,201,87,154,116,75,113,51,205,225,249,116,152,160,211,182,150,211,99,91,155,9,26,21,101,146,70,218,223,187,154,70,69,86,141,119,47,203,187,248,170,231,130,252,78,47,181,59,13,59,67, 213,52,143,10,220,54,235,101,109,97,227,182,154,53,111,226,243,36,219,181,119,46,221,219,190,245,122,6,177,225,125,62,43,203,187,159,135,26,17,240,157,213,179,249,87,154,93,154,6,91,187,168,225,142,225,152,238,249,90,31,155,106,255,0,10,183,247,89,154, 177,62,45,120,174,31,20,252,64,58,79,140,173,109,110,165,179,104,164,212,38,210,132,108,207,27,127,211,22,101,104,100,101,127,187,181,155,114,255,0,223,95,53,142,201,229,133,124,178,252,180,61,204,54,97,79,20,189,164,87,255,0,36,95,209,108,33,213,172, 254,219,172,106,23,178,75,96,243,90,65,37,180,171,37,164,234,173,229,201,39,202,172,170,204,209,174,229,255,0,190,183,125,234,244,47,14,252,50,111,18,252,87,125,63,83,178,88,239,175,98,221,18,44,109,28,42,171,14,229,142,63,187,28,123,85,119,127,15,204, 187,87,239,87,153,104,126,1,240,135,135,181,148,187,248,89,171,149,187,22,145,194,45,239,116,217,151,117,212,123,183,43,92,249,123,89,155,114,170,199,252,59,119,87,97,31,142,53,207,26,105,151,80,121,186,118,167,21,221,255,0,153,5,182,189,52,211,73,97, 113,30,223,249,6,106,59,183,67,11,109,249,161,101,101,109,187,91,229,109,213,243,121,134,6,166,22,124,190,235,252,78,218,53,233,215,255,0,130,105,248,187,76,212,181,223,18,92,233,119,178,143,248,72,180,203,105,22,77,86,242,251,251,58,218,11,120,217,89, 154,246,105,62,95,151,204,254,29,205,181,190,236,155,106,31,236,43,111,19,216,191,246,109,199,133,141,245,132,234,166,27,109,103,237,16,206,187,87,114,252,203,243,70,205,254,173,182,254,243,204,249,182,173,115,77,225,143,11,93,107,75,24,118,182,190,210, 101,243,100,211,86,21,142,230,15,37,126,105,35,254,239,204,219,151,111,204,170,223,123,230,175,89,240,159,192,13,91,226,76,145,89,120,115,94,150,105,180,229,219,98,211,197,31,145,117,246,137,25,86,215,108,114,47,239,183,110,251,223,54,213,249,155,238, 181,113,199,150,49,254,240,125,175,132,210,248,101,112,158,56,182,26,117,205,158,161,171,220,222,220,181,164,150,250,116,191,106,186,154,69,95,245,205,255,0,76,252,198,101,249,118,174,213,249,127,189,95,89,124,18,248,15,224,15,6,124,28,212,47,188,67, 226,111,12,234,122,140,214,19,234,179,232,114,92,238,213,36,104,213,188,165,145,150,54,133,118,237,243,164,249,190,95,153,86,190,145,253,130,191,224,148,254,19,253,156,190,22,233,118,95,18,172,60,63,115,227,253,78,9,214,230,17,170,50,173,188,123,183, 45,188,62,76,209,204,179,52,108,172,223,187,147,114,182,229,221,183,109,124,185,251,110,92,120,135,246,80,211,165,95,4,120,87,195,126,34,13,127,119,112,94,93,26,93,99,88,208,44,153,102,95,45,164,143,230,181,183,104,246,200,215,82,70,203,183,229,221,27, 124,203,49,167,82,18,140,255,0,189,255,0,4,219,149,193,55,25,30,117,226,255,0,218,95,76,240,214,173,165,105,158,10,251,45,149,180,182,155,182,220,217,201,182,31,189,229,198,177,199,247,118,237,220,219,191,133,191,189,94,149,224,15,19,255,0,194,79,160, 69,113,23,156,195,110,209,60,241,121,63,108,249,126,105,163,141,190,101,93,223,222,175,138,60,25,114,60,65,33,143,93,186,211,33,189,212,159,237,178,234,127,107,153,164,141,124,181,218,177,238,255,0,87,31,222,111,246,155,251,213,239,159,10,117,11,205, 87,198,214,242,248,50,47,50,202,27,21,153,175,37,212,100,146,27,216,85,119,109,86,101,219,30,217,60,207,221,253,239,155,230,251,181,251,79,14,113,230,54,142,61,60,92,239,25,91,221,255,0,46,158,111,111,83,242,204,239,132,176,245,48,173,225,227,105,47, 180,123,206,206,14,250,80,159,32,172,63,2,141,101,108,230,30,62,212,52,171,171,201,231,145,160,91,53,219,28,112,255,0,12,123,183,55,152,202,172,170,204,181,208,42,124,181,253,3,131,197,71,23,70,53,99,215,250,232,126,61,137,195,75,13,82,84,228,34,125, 197,90,112,79,151,228,52,170,159,53,63,103,178,254,85,212,102,34,167,56,165,254,47,156,124,212,169,210,157,252,127,141,3,17,83,229,255,0,128,211,246,31,238,154,126,207,239,255,0,223,52,4,245,172,204,198,253,159,253,154,122,163,124,205,181,169,193,15, 222,254,26,84,135,229,247,160,4,216,105,85,63,239,154,93,130,164,216,61,232,1,155,59,210,190,125,105,227,160,167,108,53,161,161,30,197,226,158,169,242,211,182,15,122,84,219,248,80,2,42,96,251,210,170,124,195,154,127,220,219,242,173,56,115,149,29,104, 57,196,219,242,237,239,74,169,206,41,234,159,45,59,103,62,213,60,198,220,195,19,165,57,83,127,251,212,229,79,206,156,223,59,124,245,70,35,85,54,45,61,83,254,250,161,83,254,121,211,213,13,7,64,116,251,230,159,31,247,141,11,245,167,4,245,160,2,52,95,246, 169,251,13,10,159,240,26,113,232,104,1,29,55,210,170,124,212,42,127,150,169,23,239,127,21,0,55,103,152,213,46,197,231,239,80,137,233,182,151,248,255,0,10,0,23,182,206,148,245,251,223,222,166,170,127,127,165,72,191,126,128,27,143,155,165,74,157,41,21, 59,212,137,214,128,5,67,74,189,119,127,232,52,12,113,188,181,61,81,127,131,165,6,73,9,176,208,122,154,126,205,230,149,80,103,228,249,125,232,24,157,189,233,118,124,191,237,83,213,23,254,5,82,121,63,90,0,141,81,187,210,172,39,115,111,169,227,78,58,211, 188,159,111,210,142,115,66,45,159,53,59,96,167,121,7,166,41,86,19,253,218,0,252,213,248,185,251,65,107,35,193,58,229,200,178,134,219,75,182,101,91,73,38,242,119,73,39,241,66,209,171,55,205,187,239,50,252,187,107,229,255,0,137,159,20,109,60,83,168,202, 186,78,167,162,207,52,210,198,250,133,196,17,172,18,93,51,125,237,219,126,243,42,237,95,225,109,170,213,215,234,127,23,52,207,136,255,0,16,164,211,181,41,53,59,253,60,221,201,126,158,125,164,48,176,242,127,119,10,199,183,107,42,252,219,153,191,139,115, 47,221,251,176,248,125,244,111,142,154,166,157,103,226,59,13,45,140,49,249,12,208,92,71,28,118,16,178,174,200,214,70,141,124,205,191,121,163,102,249,119,51,54,229,175,230,124,126,65,75,49,196,74,84,113,30,145,151,174,186,244,220,253,235,9,142,169,133, 165,31,109,79,252,92,167,33,165,120,214,212,220,166,46,225,142,253,167,87,130,230,117,243,36,187,218,219,149,86,70,254,47,151,229,255,0,190,183,87,111,240,123,246,135,210,245,219,203,141,95,199,210,206,143,99,166,181,132,16,220,183,156,183,59,182,174, 230,102,254,38,220,204,205,243,110,109,204,223,222,175,44,248,143,224,121,124,39,241,38,109,26,242,230,218,43,67,36,113,89,203,53,194,189,171,219,177,221,230,53,212,123,150,55,93,172,173,242,252,187,126,235,124,187,155,227,127,12,216,120,79,79,187,177, 183,184,208,181,139,233,163,141,153,244,201,34,146,59,126,55,73,231,93,238,249,2,198,24,198,126,86,235,185,91,118,218,240,221,26,216,87,39,47,133,75,151,238,61,196,233,98,185,92,126,209,75,199,190,8,208,252,35,227,85,210,188,47,174,233,218,165,160,72, 84,77,20,138,246,209,183,151,247,126,247,240,178,253,239,246,191,224,85,139,31,196,77,79,194,215,178,46,137,61,156,112,60,106,172,222,94,223,151,111,241,124,223,123,254,250,172,13,99,195,246,3,69,146,228,95,95,216,223,91,198,142,214,247,118,133,35,189, 102,114,185,130,104,206,208,54,109,111,222,237,221,243,109,106,205,211,219,201,72,154,233,89,215,106,186,183,151,247,62,106,225,175,82,53,103,42,145,141,181,58,105,83,150,30,17,140,165,204,118,126,29,212,173,117,255,0,17,67,38,168,110,111,81,247,37,220, 126,94,233,86,53,93,190,103,247,87,248,86,186,89,254,42,232,218,103,135,151,73,240,173,186,105,151,151,234,208,27,230,16,191,151,12,127,188,95,225,221,230,52,159,46,239,187,183,107,110,221,242,142,111,195,208,182,141,161,94,146,210,163,106,240,170,191, 151,30,230,145,87,115,43,86,15,132,53,219,31,12,222,222,105,190,42,183,158,222,198,254,56,227,119,85,218,246,236,167,204,86,111,226,219,247,119,109,254,31,247,107,26,120,201,210,230,246,97,44,60,42,235,34,191,135,252,123,46,152,242,78,246,182,179,172, 165,101,105,37,86,154,72,164,207,250,200,220,183,203,39,205,247,190,109,213,159,174,234,246,168,8,183,137,163,145,173,82,41,62,125,251,228,92,102,76,55,220,221,199,202,191,119,111,251,85,191,226,79,9,73,45,197,237,221,204,207,28,214,210,134,187,153,163, 102,137,90,77,222,83,124,171,181,124,205,173,183,253,170,225,222,206,119,187,102,117,243,22,63,188,192,252,187,106,254,177,42,234,55,145,211,26,49,143,189,17,21,190,210,207,230,54,211,183,112,59,119,110,173,109,0,127,164,67,246,146,90,222,79,221,181, 186,202,203,246,157,191,194,202,173,255,0,161,86,124,119,194,25,182,217,133,84,184,219,31,153,44,127,50,252,223,121,127,246,106,244,239,135,90,94,155,224,191,11,234,90,246,165,225,225,226,203,37,157,45,145,230,10,150,241,16,217,249,191,229,164,101,155, 43,185,126,93,191,43,124,213,113,113,143,189,205,98,101,25,28,70,166,176,173,189,212,118,17,93,73,108,147,126,226,101,70,101,143,229,95,149,143,221,254,247,251,84,221,46,250,251,76,189,181,184,153,101,139,254,90,70,222,74,182,229,254,242,238,173,153, 76,94,36,211,47,190,201,123,14,149,165,155,136,218,222,25,25,164,141,155,248,153,85,87,230,101,95,252,119,253,234,234,62,5,124,63,208,124,119,241,82,93,31,198,58,165,205,174,155,36,127,232,154,140,241,44,107,28,113,253,233,36,134,70,249,87,107,110,85, 249,182,170,181,76,165,246,137,140,89,198,223,120,151,80,214,117,17,46,173,168,79,168,198,145,237,157,229,102,145,66,183,222,249,127,218,254,42,209,190,241,246,165,226,219,155,89,53,43,185,30,218,204,162,35,92,220,178,198,235,30,223,224,251,171,181,87, 255,0,29,254,245,122,119,194,207,132,19,195,225,71,212,37,26,94,161,161,235,183,207,230,159,186,215,86,214,179,180,97,214,79,249,101,23,202,165,190,246,229,147,117,113,190,63,248,119,39,192,79,139,48,62,184,230,222,197,46,60,231,141,45,217,150,219,248, 188,191,222,127,173,93,172,191,55,241,45,74,148,161,29,77,157,24,207,150,226,252,73,212,32,190,208,161,88,156,67,26,77,178,107,104,167,251,69,190,237,222,103,218,33,159,248,150,77,203,253,237,187,107,115,194,126,39,178,210,60,10,182,63,216,219,181,9, 60,198,180,118,86,243,27,253,165,254,31,188,223,123,230,219,242,211,126,48,120,243,64,241,151,132,117,27,143,135,150,118,214,81,203,114,178,220,67,26,170,172,81,182,213,249,87,229,221,243,110,111,246,119,85,79,133,73,46,175,103,119,173,223,222,218,59, 104,177,180,203,4,242,50,254,230,61,187,188,181,255,0,103,204,86,85,254,45,181,197,94,62,238,178,55,163,246,141,139,207,132,80,105,95,7,188,65,174,248,131,116,250,164,55,86,74,146,52,205,39,203,36,203,27,47,254,60,191,51,127,246,53,211,255,0,193,59,60, 25,166,107,159,24,117,75,255,0,24,61,172,113,232,214,13,117,108,147,200,171,28,147,51,50,252,203,255,0,45,21,85,89,153,87,251,203,92,207,196,31,136,209,107,94,3,150,221,108,33,180,142,230,104,214,50,144,170,180,237,28,155,155,115,43,124,219,99,218,191, 53,114,254,20,241,68,58,60,22,82,105,218,117,132,255,0,103,86,107,249,100,186,104,218,237,126,246,221,178,182,213,218,191,46,232,235,76,14,43,234,213,163,87,151,98,189,155,175,135,149,52,125,227,171,126,203,158,24,253,160,239,110,124,76,183,146,67,49, 149,160,210,46,244,24,190,201,119,107,26,255,0,203,79,51,248,151,115,46,221,219,183,42,237,219,243,87,155,124,79,30,36,253,142,188,27,113,31,196,155,237,23,226,31,134,60,89,109,46,129,37,205,236,108,154,189,188,152,146,225,69,235,51,55,218,21,99,222, 173,243,46,213,43,210,172,124,14,253,176,228,214,116,45,43,193,31,7,180,168,150,123,203,123,137,163,150,53,104,247,73,27,125,223,38,231,111,154,171,26,200,204,222,103,222,95,251,231,138,241,31,237,19,99,241,191,246,161,240,21,223,196,107,91,29,59,194, 222,8,129,174,46,36,73,87,236,186,180,155,119,44,139,183,114,252,202,209,249,107,185,155,253,106,238,175,180,158,99,150,85,140,92,52,175,223,236,171,239,247,43,239,242,62,114,24,92,109,41,90,95,194,237,233,254,108,247,47,134,222,12,248,89,241,27,64,176, 240,182,159,225,59,205,51,196,182,229,117,211,164,106,90,18,216,107,44,178,13,223,105,183,143,111,205,15,221,101,146,221,182,252,170,219,154,184,93,75,64,190,240,111,135,60,79,117,105,173,94,120,163,195,86,228,75,40,189,185,146,239,80,211,224,105,22, 57,46,225,221,251,203,173,190,91,172,144,201,38,229,95,154,61,172,187,91,71,94,248,251,225,189,126,194,235,195,47,165,75,175,120,51,75,144,199,162,200,151,175,111,172,120,2,105,150,53,142,109,42,249,91,204,91,3,181,22,75,21,109,170,173,251,173,187,90, 54,91,61,103,196,105,225,27,24,239,60,65,165,205,23,133,228,159,108,90,246,143,246,211,113,12,155,151,254,63,173,26,57,26,223,110,214,104,228,243,23,115,55,221,251,180,214,117,58,245,227,9,194,60,209,248,121,29,190,126,107,186,109,25,60,178,146,167,205, 9,203,150,95,102,90,252,191,224,157,183,195,221,39,225,71,137,23,89,241,39,134,245,137,53,107,91,72,154,238,61,191,188,134,210,63,47,230,86,242,247,109,85,218,191,51,125,223,226,111,189,94,11,241,39,226,175,135,188,111,227,205,43,75,214,244,139,107,77, 59,65,181,88,19,83,182,139,109,228,18,254,237,131,52,138,219,91,116,145,171,42,238,111,187,255,0,1,172,173,55,193,250,183,142,244,9,109,6,169,166,120,106,195,195,130,238,88,163,210,244,246,107,219,235,127,153,85,97,219,247,173,219,203,143,116,109,230, 47,238,227,220,187,150,160,214,191,103,47,21,69,226,8,188,61,227,221,122,214,235,81,215,165,181,187,180,91,121,62,217,253,161,52,202,204,203,51,109,95,38,230,56,99,220,208,178,237,219,181,85,171,62,32,227,26,149,104,66,143,44,97,252,222,127,43,182,60, 163,132,173,85,214,167,41,63,253,183,66,183,194,47,22,234,214,63,24,23,92,241,46,163,253,177,113,108,210,37,250,74,178,77,105,127,35,43,43,43,70,171,183,253,165,147,111,240,238,175,98,240,167,246,12,159,9,111,83,89,123,150,212,46,229,104,210,218,61,173, 52,50,44,139,186,105,25,91,229,251,191,43,46,239,188,203,34,238,106,243,105,126,8,222,120,47,193,18,125,154,255,0,90,213,44,244,121,238,30,107,171,29,182,246,243,60,109,251,214,91,152,247,72,85,124,182,255,0,150,159,185,111,221,182,214,219,186,27,29, 6,215,198,186,54,163,172,232,63,107,211,110,37,104,219,204,146,229,166,145,89,153,118,171,110,220,204,204,219,127,120,219,127,218,254,237,126,115,139,198,188,82,248,143,169,142,91,245,71,239,71,222,59,223,7,232,250,14,176,93,126,34,167,135,124,67,22, 85,141,173,244,95,104,251,68,209,238,141,87,115,47,204,191,50,183,240,253,213,255,0,106,189,43,193,223,12,252,43,171,201,109,107,225,253,61,124,7,101,170,105,239,182,243,76,253,204,208,207,242,172,55,179,110,249,100,145,190,243,43,124,191,47,205,186, 188,67,193,90,174,175,240,187,83,181,181,142,41,53,75,152,175,246,157,246,209,203,246,176,175,254,147,12,140,171,181,85,97,101,104,252,181,86,220,170,172,223,53,122,62,147,227,11,127,19,104,23,222,35,241,238,169,163,67,103,101,103,116,203,54,164,210, 42,234,45,27,124,182,176,195,242,172,51,55,205,181,126,101,95,247,171,203,170,170,71,222,132,189,209,197,56,47,117,159,65,124,40,240,252,254,27,248,165,121,225,175,0,120,127,193,166,127,30,8,111,166,215,6,170,46,53,22,129,164,104,237,154,223,85,153,87, 80,134,226,49,149,104,214,101,146,223,114,170,179,42,171,55,187,124,125,253,158,252,101,251,61,120,107,197,254,7,240,79,135,252,69,226,253,34,123,123,109,99,88,241,78,159,164,233,80,201,21,151,150,211,79,254,145,12,109,53,196,45,34,199,242,254,243,111, 204,210,127,122,190,19,208,124,51,226,255,0,218,2,13,34,255,0,246,98,240,207,140,181,221,58,40,23,78,212,111,46,45,227,146,231,70,142,54,249,164,102,143,108,106,178,43,124,170,223,51,50,199,243,125,221,191,171,254,30,253,160,254,51,126,199,63,176,167, 133,124,35,241,11,193,90,102,167,226,184,25,244,61,86,61,79,90,93,62,56,108,230,138,79,32,91,255,0,172,89,182,198,223,50,238,89,23,203,219,183,238,209,42,213,28,163,237,37,242,54,132,156,148,164,162,126,60,104,254,45,75,223,18,207,112,52,251,127,176, 199,168,73,253,171,5,164,30,78,232,219,111,238,227,141,126,93,187,85,91,253,230,249,126,245,123,92,226,79,23,233,15,30,133,55,246,102,150,177,44,154,110,158,166,53,154,229,154,54,249,164,141,190,95,45,85,155,248,190,242,210,89,220,166,165,226,31,8,221, 124,43,240,237,198,163,163,199,186,21,212,47,52,217,46,126,221,52,114,42,254,243,111,238,246,171,70,223,52,159,221,174,218,199,92,210,252,69,171,120,113,80,219,201,246,235,169,228,183,181,181,131,116,107,247,149,164,101,85,253,222,214,109,187,155,229, 251,187,126,246,234,253,46,150,65,78,172,210,161,91,218,43,219,69,166,182,243,62,55,17,154,212,165,7,237,232,242,59,115,107,191,228,80,253,156,188,81,225,251,157,122,223,70,240,157,166,175,51,232,54,114,91,165,213,220,170,202,176,180,159,194,191,195, 185,149,191,218,95,186,213,237,170,118,86,71,128,62,30,232,127,13,188,60,154,111,129,236,227,180,179,141,155,106,175,205,185,153,190,109,205,252,95,53,110,109,223,95,209,188,57,149,213,202,112,81,161,86,162,147,242,86,63,10,207,179,8,102,56,169,85,167, 30,88,249,187,141,76,154,114,167,229,79,163,102,127,217,175,112,241,130,156,168,189,169,85,54,55,78,105,85,62,93,212,0,108,249,190,74,42,85,225,85,135,222,165,217,242,252,148,0,158,95,181,59,96,247,167,132,245,164,254,30,126,83,64,13,217,242,244,165, 88,254,239,20,240,155,41,234,159,45,104,84,246,25,176,123,211,213,62,106,84,78,120,167,42,124,198,130,134,236,249,105,202,159,47,90,149,83,230,230,141,134,130,97,176,213,79,189,154,21,10,53,72,137,233,78,217,230,126,53,60,193,204,53,83,230,167,4,245, 165,217,243,83,252,191,159,21,36,141,84,233,74,19,230,230,148,118,169,2,122,214,134,131,85,55,253,250,93,131,253,154,118,207,153,191,217,167,4,223,64,13,84,231,222,156,201,243,10,92,255,0,179,79,31,34,255,0,189,64,8,169,214,157,233,191,173,42,228,246, 167,3,177,185,160,4,84,244,165,217,253,255,0,252,122,156,168,29,255,0,138,158,169,215,154,0,72,211,238,211,252,150,198,105,203,13,58,128,25,179,239,111,220,212,170,135,143,189,82,108,233,252,91,105,99,235,210,128,19,103,247,41,212,228,79,106,122,162, 245,254,245,6,73,88,120,143,123,82,170,100,83,246,124,223,37,63,96,247,172,205,72,17,55,255,0,118,159,26,115,75,176,62,234,112,79,90,208,0,39,247,255,0,244,42,54,127,13,61,83,34,159,28,63,188,160,6,121,59,213,170,205,165,191,175,74,33,133,177,86,33,182, 233,83,41,21,202,49,109,155,109,58,59,67,183,118,62,90,149,19,248,106,204,112,229,58,214,114,145,118,63,155,200,144,120,112,94,46,173,60,207,112,135,236,255,0,108,31,63,240,124,170,187,182,183,222,218,191,250,13,74,177,93,105,226,247,237,210,106,15,104, 199,117,218,199,110,209,44,203,183,248,164,251,170,191,54,221,171,243,127,192,106,197,174,191,124,190,36,211,239,180,3,107,164,194,194,104,109,238,96,178,135,204,86,242,217,100,105,9,86,243,87,157,190,103,251,91,190,90,139,89,214,239,245,13,19,236,114, 188,183,113,192,222,110,221,187,86,15,247,87,119,222,254,22,251,223,119,248,107,249,26,42,181,41,115,68,254,152,247,37,18,27,29,106,246,41,252,144,242,216,91,4,88,76,7,106,171,195,253,217,118,255,0,232,53,77,126,32,223,77,167,223,217,93,93,78,214,87, 67,228,130,21,141,99,45,230,249,155,159,229,220,203,187,115,109,255,0,107,251,191,45,63,87,240,197,221,190,159,6,162,171,53,205,165,216,91,86,148,68,193,133,195,43,55,148,176,191,206,205,181,126,242,174,223,246,171,2,91,115,103,164,137,30,215,83,138, 234,41,60,199,111,45,86,221,97,101,93,191,237,110,221,255,0,142,213,126,246,155,230,151,196,90,130,107,151,161,120,220,203,172,235,22,246,58,75,77,119,231,190,228,142,27,82,242,55,222,102,253,218,238,111,186,91,238,215,121,161,252,55,179,37,32,190,77, 102,75,157,77,149,173,163,146,22,137,108,161,86,102,146,73,183,125,229,101,249,85,151,111,205,254,245,112,126,9,187,125,43,93,179,191,240,204,247,240,107,17,93,168,179,150,19,229,170,201,219,159,189,187,115,5,218,191,194,126,111,189,94,187,125,246,73, 188,107,172,223,217,223,107,183,183,135,77,109,91,82,146,123,149,67,29,199,221,150,22,85,220,179,42,179,46,213,93,223,194,171,247,107,63,170,206,175,239,57,185,98,68,165,26,82,140,119,145,200,107,186,58,69,168,27,189,58,86,185,178,182,141,126,213,242, 183,238,54,179,47,221,251,219,155,114,182,218,243,155,203,57,117,89,229,43,231,186,130,197,191,143,255,0,30,175,75,180,214,238,117,217,191,113,109,60,246,191,50,171,67,247,93,163,254,31,151,255,0,65,173,79,6,252,34,241,119,198,239,22,105,126,6,240,157, 191,135,237,117,11,132,185,121,81,174,68,102,198,51,33,151,55,210,242,171,134,97,179,106,252,193,185,27,190,233,134,164,166,249,62,209,163,157,189,233,24,190,0,188,213,126,35,106,23,62,21,187,184,142,57,117,59,72,236,38,149,228,18,198,171,11,52,137,33, 254,235,43,109,249,150,180,60,91,251,53,183,128,188,61,111,119,226,45,78,194,75,183,129,238,158,210,202,227,237,55,80,66,173,181,166,154,31,45,124,152,89,137,101,109,210,110,85,106,236,236,252,57,164,233,45,103,105,240,243,195,58,122,207,111,102,177, 106,55,173,170,201,112,110,195,73,183,206,130,63,249,230,205,254,173,153,183,125,239,149,85,107,163,146,198,203,71,214,46,175,9,254,198,188,138,111,42,73,117,43,191,220,218,198,182,251,90,213,153,155,110,214,218,210,54,221,223,248,237,85,92,31,53,100, 163,87,221,239,111,181,229,176,161,138,229,135,187,19,148,248,63,224,139,91,13,53,239,181,13,31,71,189,178,179,133,211,84,181,190,211,102,125,69,93,163,147,203,134,222,54,249,89,152,136,100,249,87,238,186,183,247,119,102,107,31,179,239,142,188,99,100, 154,196,55,118,114,93,216,21,91,184,210,6,179,135,73,139,203,222,140,215,18,42,163,38,2,174,213,44,223,42,171,43,87,184,233,63,1,174,188,85,103,127,226,29,118,47,177,69,111,100,178,67,109,110,205,253,162,208,237,93,178,42,172,141,181,151,118,223,153, 126,238,221,219,127,135,200,252,81,240,131,89,240,255,0,128,18,247,197,183,51,175,132,181,157,65,77,173,252,87,223,109,142,229,89,179,185,191,134,61,171,243,110,255,0,158,204,171,252,75,68,178,234,148,36,249,233,59,216,215,235,209,156,121,99,35,202,181, 157,86,250,13,85,19,197,182,246,23,182,236,88,188,11,31,151,176,72,22,71,145,99,93,187,100,218,219,183,127,122,186,31,9,233,119,158,51,215,111,188,59,240,58,211,197,26,169,213,34,242,76,72,98,75,169,172,99,249,158,22,141,62,73,89,183,127,11,43,55,221, 95,189,182,189,75,225,39,236,239,227,77,103,85,83,226,40,227,211,98,251,21,205,233,128,172,103,85,158,27,89,214,18,190,116,178,50,199,35,110,85,221,243,42,238,254,31,189,89,90,207,192,203,111,135,23,144,69,160,222,234,186,111,140,5,234,189,183,217,39, 89,146,206,57,27,108,107,51,125,230,111,188,203,34,183,251,213,197,87,13,86,148,57,141,225,90,148,165,203,51,215,254,20,124,68,184,178,248,59,226,15,5,234,112,94,107,58,110,143,169,249,87,150,80,89,253,153,160,211,126,207,183,116,178,79,243,43,110,101, 86,141,149,100,253,219,125,239,226,181,164,124,78,135,198,146,106,86,151,90,126,147,167,127,103,207,246,77,74,119,139,115,44,158,78,216,25,153,151,253,157,190,102,239,246,107,199,188,125,226,223,137,63,13,190,37,67,115,251,66,221,31,17,105,242,197,14, 149,115,126,0,191,180,184,181,93,202,177,25,161,85,102,101,253,234,237,153,119,55,205,247,190,245,122,79,192,171,93,7,226,4,179,106,94,49,16,92,232,154,222,182,160,69,107,36,144,173,212,159,42,175,153,104,191,50,237,85,242,213,155,253,175,225,95,152, 194,207,150,92,181,165,103,255,0,146,133,74,115,247,165,79,88,159,55,124,120,240,206,129,163,219,233,215,158,15,243,108,245,11,169,38,135,83,178,50,52,145,2,173,186,57,99,45,252,45,243,43,71,247,85,149,118,229,126,102,151,224,239,135,165,215,174,224, 180,182,138,230,70,145,155,106,192,171,230,125,223,225,255,0,199,107,179,253,187,60,11,167,248,75,226,78,159,166,248,74,11,11,107,5,102,182,182,142,218,57,35,142,27,117,219,229,171,121,159,51,73,251,201,27,204,254,47,251,230,187,255,0,4,254,210,31,15, 190,21,254,201,62,40,240,14,173,224,249,199,136,188,81,11,106,58,62,184,85,86,242,205,225,88,214,217,247,174,239,245,204,146,55,153,242,199,26,212,226,167,236,116,140,121,141,176,177,85,99,46,105,114,159,52,107,144,92,234,58,249,141,227,154,22,138,73, 33,242,103,109,205,27,43,109,147,127,251,76,202,223,45,122,103,194,191,3,233,49,104,247,159,240,152,38,143,105,126,144,125,162,218,93,79,115,121,44,171,187,108,113,125,214,102,255,0,190,191,241,234,224,166,213,35,215,60,72,183,87,50,203,53,204,243,125, 166,237,164,95,189,38,237,204,223,237,110,102,175,163,255,0,101,255,0,15,248,83,226,15,142,174,44,117,187,73,97,183,91,107,171,153,117,77,64,121,205,105,182,21,104,252,184,255,0,231,163,109,109,191,47,203,255,0,142,214,56,106,111,17,82,49,248,69,140, 169,236,105,218,152,223,128,190,19,191,159,68,209,53,93,39,83,210,188,35,169,233,154,152,214,180,233,100,183,103,184,38,56,252,200,26,54,88,217,155,238,180,126,74,255,0,172,86,219,243,43,50,209,23,192,219,185,252,87,226,101,240,151,132,245,25,188,61, 186,93,66,85,178,212,26,199,237,177,186,25,99,146,56,166,93,176,178,180,141,182,54,93,191,121,118,173,122,22,173,169,195,240,187,193,90,54,191,224,139,139,120,103,251,108,154,45,181,179,252,219,108,36,184,89,164,142,238,70,249,183,50,192,191,50,237,146, 54,249,87,116,123,183,107,219,235,58,102,143,162,69,167,65,38,170,150,242,74,183,87,51,199,123,228,173,199,153,36,141,34,198,209,252,173,28,107,181,99,101,249,153,87,230,249,190,106,244,42,96,33,132,171,21,25,169,245,242,254,189,78,26,120,143,172,82, 247,162,209,230,95,12,126,18,219,91,233,198,243,194,118,87,26,156,115,180,214,201,168,218,90,66,215,108,222,75,73,185,109,164,255,0,87,36,106,178,43,110,86,251,173,242,171,124,181,165,240,195,84,190,248,47,165,219,205,167,105,26,118,189,225,24,252,55, 13,237,245,188,22,203,121,28,182,119,205,36,138,178,89,73,181,119,50,170,182,223,155,111,202,213,74,207,199,58,119,132,181,247,213,126,10,203,170,195,127,246,165,185,185,223,168,201,28,45,14,214,85,143,106,253,217,60,198,102,102,251,204,191,47,221,172, 8,188,75,172,105,90,77,198,175,164,77,246,121,35,111,46,254,238,6,102,95,51,230,219,28,159,221,220,170,202,191,121,126,95,225,109,181,229,99,177,116,231,40,251,24,242,255,0,55,252,3,167,15,207,75,226,103,160,248,167,227,125,223,136,62,19,88,234,95,10, 151,79,209,181,159,50,222,210,212,253,157,145,173,246,171,72,223,234,246,172,139,34,252,223,222,254,239,204,171,182,198,156,222,3,241,23,129,47,173,111,165,241,6,151,226,107,235,235,121,53,187,157,82,254,79,220,199,133,101,146,212,170,249,106,209,205, 229,178,182,237,170,171,243,42,180,149,227,154,151,140,101,177,211,180,109,82,231,74,212,238,252,45,46,235,141,73,173,145,143,216,230,142,79,223,50,170,252,177,253,237,203,27,125,237,204,203,247,183,86,175,142,124,95,167,105,254,34,212,244,242,117,148, 104,109,132,214,183,141,11,95,153,214,104,219,103,157,26,238,221,27,125,223,151,114,252,173,253,223,151,202,158,95,57,198,252,219,158,246,23,61,157,26,156,206,156,92,121,109,175,245,163,61,131,226,239,198,109,83,196,127,14,103,159,198,247,151,215,26, 126,139,35,89,65,61,178,65,10,106,219,153,90,72,238,163,143,203,142,27,166,88,227,249,149,118,201,242,252,219,119,45,122,103,236,167,240,15,195,30,47,240,226,223,120,74,118,211,141,253,143,238,231,159,82,143,110,157,115,35,51,42,204,187,191,227,222,225, 182,170,238,93,203,185,190,245,124,225,225,107,15,7,248,178,215,78,177,240,174,177,36,118,186,214,154,176,93,220,203,254,137,108,183,10,173,186,57,163,109,219,182,178,183,204,191,43,124,187,106,231,138,244,131,240,215,95,210,110,252,67,175,105,19,92, 233,73,253,149,37,214,141,230,67,168,249,63,43,45,187,76,187,91,114,175,239,62,111,225,249,126,111,150,185,171,101,146,140,37,8,206,199,165,14,34,161,83,19,25,226,40,222,62,127,230,122,31,197,63,133,190,29,240,52,119,246,122,142,137,173,104,58,238,153, 112,53,93,22,222,226,88,110,77,250,171,52,114,193,38,239,222,124,172,172,219,154,53,102,89,35,251,202,173,94,73,240,191,226,180,154,31,196,168,53,185,222,231,86,154,237,167,150,91,91,148,253,196,18,180,43,28,87,17,183,252,244,141,114,178,43,43,43,46, 214,255,0,102,182,126,44,248,194,13,123,67,130,249,252,70,200,214,179,73,42,68,218,153,159,84,180,183,221,182,53,154,224,254,242,101,155,239,44,140,222,102,229,147,117,115,94,26,248,173,97,172,234,215,90,157,253,236,118,214,254,30,101,109,19,79,91,56, 102,251,22,229,95,51,239,42,238,102,218,219,155,248,183,125,221,219,154,171,15,74,120,120,123,218,158,110,59,21,133,197,85,230,140,109,31,235,208,251,207,246,25,253,180,62,27,126,196,191,21,180,185,180,63,11,73,119,168,234,86,54,144,125,149,228,243,161, 91,182,86,145,174,247,43,51,73,11,70,177,180,127,46,239,49,91,229,95,188,184,159,17,191,224,165,95,18,191,104,15,136,126,41,135,227,86,155,225,183,208,60,65,172,70,111,103,254,204,146,235,236,241,175,203,21,178,205,230,47,217,149,99,220,191,50,201,181, 153,164,251,205,95,47,207,241,199,83,240,223,132,32,75,235,175,11,234,241,218,206,178,105,241,220,233,31,108,179,211,17,142,233,97,142,31,151,115,109,218,202,187,190,86,85,249,190,93,181,235,127,10,252,113,224,143,19,120,130,47,14,223,255,0,111,199,113, 174,74,214,208,69,109,7,153,36,150,255,0,55,250,116,211,54,230,91,133,109,190,98,237,253,231,251,213,193,39,238,243,73,26,170,88,122,210,140,41,213,183,245,243,55,190,28,124,84,212,46,239,174,252,51,224,141,110,243,78,208,102,102,89,116,251,27,198,107, 245,130,24,255,0,118,222,101,191,205,51,46,221,219,89,182,201,247,90,173,120,111,92,79,28,106,250,28,182,3,85,127,15,88,89,180,222,109,243,46,159,51,66,210,54,219,137,26,61,190,74,201,181,150,53,147,115,46,237,191,195,94,193,240,195,246,37,240,119,193, 253,66,107,79,15,157,75,81,241,155,65,2,189,235,38,235,139,117,221,247,161,179,93,219,97,186,88,102,104,100,184,101,85,145,124,182,221,94,199,109,162,105,246,23,210,152,173,244,217,154,218,47,58,91,135,182,133,163,88,213,182,201,52,203,181,109,173,213, 154,25,35,158,54,243,36,134,77,178,87,207,226,51,169,97,167,47,171,185,68,253,55,45,224,250,184,236,52,105,227,20,93,189,95,52,123,116,252,9,244,127,10,120,2,63,13,89,197,167,232,222,38,208,237,86,217,100,177,251,5,199,219,150,234,21,218,178,121,118, 247,75,246,134,104,119,47,153,183,248,89,89,89,151,118,216,83,225,166,143,169,220,207,111,225,191,22,233,107,115,107,63,217,229,183,212,160,146,197,173,230,218,172,177,201,50,249,144,44,141,27,44,138,190,103,204,172,172,181,105,163,138,210,225,228,182, 123,235,61,211,249,114,50,77,36,115,93,79,110,171,242,181,195,127,164,94,92,195,29,187,55,151,10,172,119,80,54,223,154,171,216,104,70,207,77,178,177,67,98,199,78,179,142,24,109,172,109,99,183,88,254,86,242,150,214,215,119,151,103,110,210,67,186,11,139, 134,105,45,228,221,27,124,181,246,57,79,140,60,73,147,66,48,250,207,60,127,150,105,63,199,127,196,224,205,60,20,225,76,230,242,150,27,146,127,220,186,252,54,25,113,240,35,197,48,219,164,218,102,148,218,181,188,137,230,36,250,92,209,223,71,34,255,0,121, 124,150,102,219,255,0,1,174,94,251,79,151,73,184,54,250,180,82,90,204,191,242,202,120,218,54,255,0,190,91,107,87,81,111,167,91,79,124,117,139,21,17,220,91,207,60,207,169,71,43,45,188,114,238,154,55,154,234,104,246,201,116,219,149,86,230,214,47,150,57, 21,100,93,191,122,186,187,95,26,120,159,79,133,52,169,245,109,118,251,13,34,181,158,169,5,190,161,112,191,50,182,217,150,101,242,97,88,213,183,46,230,221,113,6,230,93,210,47,205,250,86,85,244,136,171,255,0,49,248,52,255,0,189,7,111,193,223,243,63,50, 205,190,140,152,127,122,89,118,49,199,251,179,87,252,85,143,42,8,71,223,20,228,93,219,149,25,95,103,247,105,191,178,247,237,211,240,123,246,157,253,162,53,223,1,248,226,207,194,90,5,230,154,143,117,101,170,232,242,60,118,58,146,192,177,253,165,99,101, 145,163,101,220,223,187,146,69,143,204,93,223,42,178,252,222,195,241,115,226,39,128,254,34,120,173,44,116,171,51,166,105,218,92,18,67,13,245,140,123,166,130,56,215,115,201,116,191,119,106,238,221,229,182,217,60,182,243,23,229,221,183,239,33,227,126,80, 170,209,133,106,83,132,101,188,165,109,59,104,155,185,249,181,79,0,179,167,26,210,161,94,19,148,62,24,198,250,247,213,217,39,247,252,143,34,216,219,215,158,105,219,15,240,126,181,183,171,248,38,107,53,154,125,14,230,215,88,178,183,219,190,226,197,183, 121,106,203,186,54,146,63,245,145,238,95,155,230,93,187,126,235,53,99,236,13,26,148,251,191,123,114,154,253,111,46,205,48,153,189,40,215,194,84,140,224,250,163,241,156,211,38,198,228,149,165,135,199,81,148,38,186,72,79,190,105,76,63,220,219,75,179,127, 220,165,17,239,106,244,143,56,111,254,131,79,217,211,143,248,21,59,103,240,211,194,122,208,4,123,23,248,7,53,38,206,125,169,85,15,165,57,83,221,168,0,92,119,165,31,119,251,180,229,76,54,59,210,174,55,86,102,98,47,222,254,237,40,79,159,105,167,236,246, 253,42,45,90,254,223,74,210,110,238,245,119,146,59,75,104,36,154,118,95,188,168,171,185,153,127,218,219,186,138,147,246,105,204,222,156,61,164,212,7,199,52,34,226,56,190,211,106,175,51,249,104,178,207,28,126,99,127,117,119,53,117,90,231,193,223,16,104, 30,30,139,87,186,211,247,233,242,51,43,79,3,172,222,75,47,222,89,21,126,104,255,0,224,75,183,253,170,252,194,248,239,241,255,0,197,63,180,23,138,116,219,191,24,107,55,154,237,190,142,141,163,89,155,139,56,227,184,158,201,102,102,129,166,242,254,86,147, 110,221,205,181,89,182,174,230,109,171,94,173,251,62,255,0,193,76,126,32,254,203,62,52,240,230,157,175,231,197,126,25,176,150,56,227,176,191,79,50,113,109,185,90,91,111,181,252,205,246,118,251,205,28,139,54,214,93,209,237,219,95,206,25,183,141,184,220, 54,53,83,194,225,225,201,246,162,219,230,249,63,248,7,238,185,127,132,216,90,248,86,235,87,151,180,251,50,183,187,253,124,207,176,246,24,199,66,202,127,218,251,212,229,92,17,154,214,241,103,197,13,7,227,93,205,191,139,62,30,232,247,90,29,134,191,4,119, 159,100,127,39,203,86,111,249,105,15,147,242,249,50,46,214,95,149,91,239,110,85,172,208,54,200,55,116,175,223,178,92,197,102,248,26,88,213,7,30,120,167,203,45,213,207,197,115,108,11,202,241,149,48,178,151,55,36,173,205,18,63,47,222,149,83,159,222,84, 139,203,110,52,187,63,137,247,87,170,112,140,84,255,0,102,164,84,244,170,126,41,241,21,151,131,252,61,121,170,120,134,79,38,206,198,63,50,89,54,238,255,0,63,55,203,86,237,181,191,15,234,122,95,134,167,240,207,137,116,93,82,227,196,222,29,182,241,60,86, 48,202,223,106,179,180,184,102,142,63,180,71,247,99,109,209,200,187,119,124,219,90,188,220,86,113,131,193,226,105,225,43,85,81,169,63,134,61,207,75,13,147,227,49,88,121,226,104,211,148,169,195,226,151,97,195,233,78,84,59,185,251,212,237,155,255,0,26, 145,80,237,249,7,53,233,30,104,213,251,191,238,211,190,82,191,239,83,246,53,42,166,122,208,2,47,221,232,217,169,21,63,224,52,108,53,52,112,208,3,54,123,126,148,170,156,253,218,179,229,115,239,74,176,255,0,126,167,152,10,172,134,165,216,217,197,73,229, 251,209,229,251,213,7,40,213,67,185,169,219,62,110,148,225,14,239,246,170,69,139,238,239,160,8,213,63,185,79,84,27,190,74,126,207,239,211,149,2,127,118,128,17,83,213,120,167,199,15,205,83,170,111,61,42,64,156,141,181,60,192,34,166,205,187,234,69,64,15, 74,104,79,152,84,169,210,179,108,210,3,163,129,101,99,190,167,242,86,47,186,49,154,72,126,245,74,203,243,102,178,155,52,129,252,237,207,241,26,199,196,30,29,179,178,214,124,39,100,186,59,53,204,86,43,166,172,134,237,37,222,164,174,233,100,218,191,57, 220,87,230,223,242,238,94,62,106,90,119,194,116,241,80,88,60,47,113,46,165,123,22,200,214,238,11,200,238,173,21,164,44,169,231,73,247,163,98,115,185,80,50,175,12,205,181,183,14,202,15,132,26,247,197,31,15,166,149,170,90,201,225,91,41,245,8,228,181,181, 146,210,69,120,99,145,164,253,220,118,74,195,203,92,254,241,153,190,102,254,246,221,181,214,235,62,24,182,253,155,32,210,96,151,86,240,95,138,239,180,187,162,154,180,241,69,185,180,187,93,170,172,145,109,63,63,202,225,154,61,172,204,202,223,195,180,87, 242,246,15,217,86,175,251,239,132,254,146,175,25,82,165,238,124,71,113,224,79,216,199,194,30,4,248,109,46,161,170,248,250,211,86,241,42,90,199,113,36,169,58,220,216,233,119,18,200,33,150,64,191,196,209,174,237,178,22,14,219,6,223,150,188,91,86,248,83, 240,246,207,89,215,244,237,35,88,214,175,116,121,180,86,125,23,80,188,222,169,123,169,43,124,217,138,21,27,130,174,21,87,238,253,230,106,236,252,17,227,125,43,226,30,178,52,255,0,135,119,23,182,210,67,120,210,91,233,218,93,203,44,119,214,248,219,231, 94,25,62,101,145,85,130,172,127,117,87,253,165,249,124,211,226,127,134,181,91,37,209,116,107,233,44,237,150,209,154,8,97,89,21,30,73,60,207,45,155,229,220,191,248,247,221,175,91,56,204,240,183,139,194,80,74,11,221,235,254,127,240,116,60,156,38,23,18, 157,171,213,110,82,244,247,78,135,246,84,253,159,180,159,17,120,230,251,78,241,67,174,162,145,217,239,104,151,108,121,154,79,245,75,11,73,242,172,155,86,79,189,247,190,106,196,213,45,244,184,188,86,222,31,240,166,158,198,43,70,146,52,242,97,102,150,93, 172,223,235,87,251,219,151,248,107,146,241,31,136,174,154,91,157,58,218,252,207,106,197,97,189,147,106,180,51,188,39,229,109,191,197,180,47,251,223,45,96,233,126,38,147,67,188,123,200,241,35,203,38,87,46,223,50,255,0,18,249,159,121,85,191,241,218,249, 124,78,47,219,225,225,74,17,218,255,0,215,245,115,213,167,134,159,181,117,37,35,216,45,254,20,234,222,22,77,58,243,81,241,29,245,156,87,178,174,251,91,85,138,33,4,42,187,89,167,105,190,88,252,191,151,115,72,191,50,253,221,213,239,143,240,238,211,69,240, 102,143,160,252,29,159,74,180,209,74,181,230,189,125,20,209,173,197,234,205,11,42,249,146,110,221,38,239,149,155,115,42,170,252,181,224,58,7,142,224,241,69,250,193,165,219,71,123,109,226,39,142,13,82,227,82,89,164,158,210,57,164,142,63,220,201,252,76, 187,124,205,223,221,143,111,251,189,189,166,163,117,31,130,117,47,7,52,151,51,233,22,151,171,19,67,20,145,219,201,26,199,112,210,72,203,35,125,239,59,247,76,202,205,91,229,212,185,48,242,117,189,217,63,45,125,61,8,171,82,92,250,28,110,143,165,203,253, 185,22,163,101,126,214,215,95,107,146,15,58,221,118,193,30,213,101,141,149,126,246,230,218,223,244,207,110,218,213,240,223,138,239,161,240,221,157,150,149,109,166,221,205,168,206,208,97,190,109,147,47,238,214,111,33,183,42,201,181,85,119,47,204,223,238, 213,47,26,120,106,215,79,212,35,139,195,207,45,173,132,234,191,190,102,102,104,217,163,220,203,230,47,222,254,47,187,242,173,101,223,105,22,214,150,18,91,107,177,107,246,151,51,167,252,74,229,210,153,88,110,249,118,198,208,183,202,202,223,47,204,219, 118,255,0,187,89,67,15,40,212,180,180,143,245,249,154,66,191,185,104,157,202,248,223,88,248,105,5,212,154,61,134,169,127,166,218,126,243,89,158,226,117,130,219,201,109,171,185,159,110,233,164,111,151,203,85,93,173,185,182,173,71,240,171,193,90,167,131, 53,4,189,241,244,34,27,187,249,68,190,20,183,123,134,185,211,18,41,36,107,130,201,10,200,171,35,71,185,124,188,170,170,201,14,239,225,86,172,111,134,254,31,187,241,94,163,115,113,226,163,20,90,53,146,172,150,246,230,237,100,18,222,42,172,46,36,111,149, 91,107,124,170,204,203,183,114,237,86,206,230,245,45,31,67,179,182,241,0,208,181,166,253,253,188,80,234,186,84,86,42,177,220,88,76,177,201,28,140,191,196,209,175,202,191,243,207,247,159,123,230,174,234,18,149,53,31,123,111,230,249,255,0,75,81,84,113, 113,245,254,83,34,227,197,118,183,222,60,208,197,172,19,44,235,168,221,88,172,209,207,181,173,35,146,61,211,91,182,213,242,228,111,58,45,223,121,182,238,254,242,215,170,220,252,42,181,189,240,52,118,194,231,74,187,145,111,90,75,77,66,118,101,146,70,221, 181,161,89,21,127,115,27,124,209,252,191,55,203,252,45,243,87,145,248,15,192,215,191,21,188,125,162,90,88,248,124,219,95,219,205,117,169,236,133,90,218,230,118,140,254,242,24,164,86,219,42,238,85,155,106,174,232,246,237,221,229,182,218,250,47,193,151, 105,241,11,225,125,138,78,247,90,148,17,50,223,216,205,101,107,26,205,97,52,210,110,221,37,188,140,190,91,44,219,149,151,251,187,183,45,117,101,152,10,121,178,157,57,124,94,87,253,63,174,230,24,220,84,176,17,141,79,178,115,94,34,240,44,254,31,181,213, 116,204,120,118,235,195,250,149,226,193,125,13,221,166,223,53,99,142,61,208,194,203,185,191,213,179,50,174,214,243,21,119,110,254,22,241,207,140,95,178,149,247,236,241,226,139,79,28,120,2,194,77,66,207,78,212,163,187,159,73,18,179,71,122,187,247,46,221, 138,178,42,237,249,154,63,188,170,203,183,110,221,181,236,191,17,172,47,124,77,105,14,139,62,151,226,77,67,196,43,166,172,250,134,153,4,75,246,107,104,215,115,68,205,35,50,249,219,89,119,43,70,172,203,252,85,208,252,54,70,214,252,9,164,106,151,122,222, 173,168,153,239,45,175,225,102,190,85,158,242,54,95,180,67,110,208,204,219,85,150,61,214,251,153,190,102,93,223,197,242,225,136,200,213,58,191,87,81,150,187,126,189,44,237,229,177,166,23,54,106,30,217,75,111,136,243,111,142,31,179,20,31,180,63,236,63, 240,183,226,167,193,93,86,207,92,210,45,181,131,99,241,9,164,182,205,199,134,117,6,11,28,13,181,155,204,146,201,145,153,85,183,46,233,60,191,187,230,110,95,3,253,165,173,244,45,87,196,242,67,225,195,13,141,159,134,180,75,72,45,161,249,124,219,217,164, 145,163,255,0,199,87,116,140,191,194,181,235,127,179,95,199,251,31,216,199,246,238,241,79,134,181,187,171,233,190,19,107,250,173,222,151,173,233,113,177,88,174,108,174,33,243,34,102,143,248,188,182,145,126,95,246,127,217,219,94,71,251,89,232,126,4,248, 121,241,251,86,211,63,103,221,95,80,241,23,132,45,109,173,99,138,242,246,86,154,225,231,242,207,159,230,51,109,220,203,242,253,223,151,251,191,197,95,21,58,117,105,87,149,26,175,221,143,195,253,126,71,216,57,210,157,40,226,40,175,139,116,65,251,54,252, 18,63,18,36,212,47,245,88,147,251,39,73,79,50,86,101,251,171,252,77,183,248,190,95,252,123,110,239,239,84,250,255,0,130,124,65,224,127,19,105,246,54,69,238,175,110,221,100,138,53,141,190,210,172,179,73,15,150,223,243,205,191,115,243,47,251,181,235,63, 176,206,147,167,107,191,12,124,67,125,170,199,37,213,133,172,141,3,219,44,91,188,149,104,252,191,180,52,159,234,227,251,205,183,119,247,107,169,180,182,181,248,173,225,219,237,83,80,210,19,192,214,215,23,146,79,115,175,71,27,77,107,37,148,119,114,52, 106,210,73,187,111,205,185,150,54,220,219,100,218,187,190,245,125,110,15,42,88,154,52,189,140,189,231,121,75,93,173,220,249,60,126,96,233,212,168,234,71,221,92,188,191,51,206,52,143,128,30,38,214,180,173,103,86,241,23,136,45,52,189,79,195,191,104,158, 243,71,185,117,182,131,79,133,163,89,26,102,109,219,124,198,95,238,174,237,223,123,117,118,254,11,180,182,248,115,224,207,23,107,159,19,117,11,173,95,90,209,175,27,74,211,244,97,36,182,182,242,94,201,26,206,214,251,162,249,124,233,149,99,111,49,126,88, 119,50,183,205,187,117,109,27,194,55,254,27,208,53,24,60,5,113,168,235,26,76,114,249,255,0,105,130,54,104,239,100,141,149,188,198,93,191,44,113,237,249,124,205,204,219,183,109,254,42,196,213,60,91,123,227,75,86,184,185,186,85,178,86,105,45,188,177,181, 190,102,243,36,147,230,249,149,91,119,222,175,47,21,153,60,14,147,161,239,74,61,117,191,159,252,54,133,225,233,123,104,218,50,217,255,0,72,227,60,86,242,120,58,43,187,173,113,203,92,79,47,156,237,36,75,230,93,72,202,171,31,221,85,93,203,26,198,187,182, 255,0,14,230,254,42,175,224,111,13,95,220,221,36,41,119,6,146,53,219,184,236,26,24,238,219,203,102,146,104,215,108,223,194,170,205,253,237,219,107,15,197,158,71,138,218,218,234,208,220,173,174,155,230,60,54,114,124,171,118,191,55,239,21,155,239,80,214, 183,186,103,196,93,14,206,38,107,7,150,230,214,230,41,99,95,186,205,34,180,108,191,237,43,125,223,251,230,188,108,37,53,57,69,203,226,145,223,86,183,49,250,43,117,255,0,4,176,241,79,195,223,130,30,36,241,61,246,159,121,225,104,124,85,39,217,252,63,14, 178,26,72,117,6,154,53,142,25,46,38,183,105,35,179,186,243,55,109,86,86,220,171,30,217,21,155,201,175,153,117,239,217,251,226,111,133,108,238,116,219,31,15,106,73,23,132,100,91,132,210,102,123,72,154,219,237,210,52,159,232,243,179,126,241,164,153,89, 154,61,204,177,178,175,203,26,183,205,250,95,224,207,248,41,15,138,79,193,205,62,211,198,154,28,186,108,222,25,191,211,108,173,222,84,102,154,103,86,143,204,187,188,183,251,205,52,123,188,205,172,187,163,242,85,190,102,175,15,248,255,0,240,86,211,65, 248,163,226,125,58,206,226,194,239,196,126,42,186,251,92,22,215,135,109,174,153,12,147,71,246,153,21,183,43,125,161,174,21,102,102,111,245,114,77,242,174,213,101,95,91,27,135,132,99,203,75,225,57,104,202,95,104,252,252,181,183,215,254,31,124,74,147,82, 241,143,135,110,46,46,180,91,181,254,213,208,117,8,246,180,173,243,70,241,238,85,218,178,127,117,151,114,171,42,178,183,247,185,223,10,124,49,213,252,111,125,173,107,62,29,211,111,117,27,40,124,219,136,229,144,229,97,42,219,182,200,219,190,105,21,118, 175,153,253,237,205,242,238,175,122,248,229,240,139,226,30,173,107,226,185,252,94,154,156,242,120,33,109,52,131,22,129,109,12,150,51,76,178,55,149,105,121,228,182,237,210,51,51,44,202,191,43,124,204,172,191,45,112,223,7,244,31,136,127,24,116,121,124, 37,240,47,194,250,221,218,106,105,231,52,54,99,116,247,11,15,239,26,69,95,249,105,242,174,214,85,109,205,247,85,90,188,186,176,159,216,137,209,237,57,226,121,86,173,225,171,175,236,185,213,53,43,6,177,117,220,173,27,111,107,182,86,219,35,43,124,187,149, 127,248,154,127,128,188,23,119,168,104,233,170,189,255,0,144,46,89,160,138,54,93,211,51,71,243,125,223,188,171,183,248,155,229,175,114,183,248,25,115,169,248,54,205,227,240,196,145,203,118,242,52,17,221,201,53,135,150,219,91,207,134,56,218,63,221,238, 218,204,172,223,196,173,183,114,252,213,71,192,22,63,12,99,157,116,111,27,234,243,104,218,101,245,165,237,206,157,44,246,107,113,254,155,26,168,142,54,101,101,243,54,237,104,213,99,249,164,221,187,238,173,103,23,206,253,159,55,224,103,90,244,227,205, 202,115,126,27,214,52,123,45,57,96,158,233,90,230,254,239,116,12,99,242,218,118,111,249,120,101,159,253,175,247,85,107,212,252,11,240,154,247,193,254,50,159,90,241,188,90,158,203,139,233,45,172,239,44,111,45,215,119,152,191,187,147,247,108,222,98,254, 242,69,101,111,149,155,110,221,181,30,171,251,43,120,131,193,175,225,173,122,243,195,150,83,105,254,45,211,237,175,44,181,57,252,232,109,111,22,226,54,147,236,177,183,205,254,145,30,223,45,150,63,151,119,221,111,149,182,218,241,7,134,45,254,30,233,122, 125,230,165,5,220,183,118,150,202,176,91,79,35,42,199,243,55,202,187,151,119,203,183,239,47,253,243,81,12,186,88,137,58,48,167,121,25,253,101,81,143,180,148,143,100,248,55,241,163,197,191,8,117,205,35,194,30,12,151,194,218,148,186,196,178,69,107,164, 248,154,193,166,131,93,154,72,246,189,149,212,209,182,219,95,180,70,172,171,36,141,182,54,141,91,230,102,85,111,174,239,124,75,164,248,143,88,154,215,195,87,147,107,102,206,234,95,54,91,23,143,86,147,77,184,141,150,57,227,221,242,217,195,53,175,153,36, 51,125,230,154,31,153,126,101,106,252,151,248,105,107,169,124,96,248,155,169,89,124,64,188,91,189,26,239,116,237,108,176,170,199,3,51,124,172,191,238,252,181,247,247,236,195,241,147,89,248,153,109,55,131,60,123,168,94,220,120,227,194,80,199,52,187,237, 230,212,238,60,67,167,199,254,162,254,194,198,214,56,224,142,120,228,147,230,105,55,125,214,95,186,223,47,207,231,185,84,105,83,250,188,99,30,104,234,126,171,192,153,252,149,88,170,213,37,40,254,31,210,61,130,203,87,125,67,79,109,79,77,187,181,157,46, 214,8,90,242,219,81,111,46,21,147,203,104,163,143,84,147,247,147,127,199,196,146,91,53,170,170,253,232,89,150,164,211,53,171,45,71,64,104,53,45,58,205,116,189,87,51,8,167,179,104,109,238,150,225,163,243,230,254,205,86,251,68,144,205,37,195,71,114,183, 91,124,153,127,121,181,87,230,171,98,95,244,201,36,111,177,181,229,164,59,75,196,98,154,72,225,149,153,150,102,141,91,200,211,236,46,190,205,253,237,208,204,181,148,117,104,180,93,68,180,16,219,195,107,127,114,208,188,162,70,142,57,174,99,93,178,125, 162,102,253,229,229,218,172,44,173,28,127,187,184,139,230,251,213,249,252,169,77,251,172,253,206,150,34,148,189,255,0,235,250,254,153,110,47,18,231,86,45,115,113,169,91,220,233,178,254,255,0,30,84,218,166,151,178,56,89,188,235,143,248,245,179,158,24, 230,125,208,199,186,75,171,111,153,119,124,213,228,31,28,190,51,94,120,234,102,248,115,240,198,226,56,38,186,181,133,181,61,82,206,121,210,215,66,183,116,130,226,222,123,9,153,8,191,44,232,242,66,101,101,146,2,91,229,219,128,119,255,0,104,191,23,120, 159,225,255,0,132,163,181,248,19,225,75,173,91,94,185,104,109,52,152,76,17,181,173,148,63,188,100,146,27,86,101,88,225,93,191,184,184,157,183,110,102,134,77,191,45,126,100,104,90,135,196,255,0,129,250,124,218,94,139,101,168,232,118,55,175,114,127,125, 167,201,28,41,44,78,203,114,222,127,221,243,84,171,44,159,197,30,207,155,251,213,244,121,30,85,28,98,148,156,163,205,210,39,204,241,46,117,83,1,202,163,74,78,63,105,163,245,35,225,63,194,159,128,186,143,131,211,194,30,50,240,214,129,168,218,233,209,54, 246,185,211,218,237,151,115,110,121,38,184,218,204,210,52,141,185,153,155,230,102,249,171,212,44,255,0,98,47,4,248,162,213,164,248,27,227,175,16,120,126,116,178,142,198,214,59,45,77,53,11,109,61,99,251,141,13,141,226,201,28,114,71,252,45,183,117,121, 127,252,17,35,225,173,191,199,111,18,182,141,166,223,170,93,73,162,221,221,79,59,199,230,121,210,43,66,190,91,124,223,47,205,37,111,107,255,0,12,245,143,3,248,186,198,194,13,126,59,139,120,245,181,211,101,93,77,91,206,147,114,194,222,66,204,203,187,204, 218,205,181,188,207,226,254,42,253,11,3,195,245,170,81,228,171,203,41,46,146,63,32,205,56,178,24,124,71,61,9,74,49,125,141,47,21,254,201,31,20,252,5,173,205,173,248,70,255,0,193,254,48,213,45,108,98,177,211,166,184,146,231,195,250,166,197,98,207,28,218, 132,62,127,238,190,103,145,97,141,35,88,228,206,220,41,106,226,117,175,29,248,231,225,213,166,191,39,199,143,133,30,51,241,21,174,159,113,31,216,245,93,2,210,209,181,29,70,38,95,153,188,187,89,26,25,154,54,221,243,77,29,187,50,237,249,107,189,176,241, 167,197,15,9,106,55,214,214,118,250,183,217,44,245,22,181,93,183,45,39,151,15,152,203,186,72,228,243,21,89,118,170,178,252,191,197,247,107,183,215,254,51,234,127,14,180,203,72,124,103,29,158,169,168,106,77,254,138,214,118,237,11,51,124,219,99,101,93, 223,51,55,202,173,242,238,102,85,95,153,171,122,50,198,112,203,250,198,26,82,165,203,187,79,250,77,121,18,241,120,126,44,113,194,98,233,198,183,54,202,107,250,104,240,47,3,124,112,240,127,196,173,91,80,210,188,53,123,171,218,235,186,107,199,231,105,90, 142,156,209,220,121,108,172,222,118,232,217,163,242,215,110,221,205,183,230,249,107,170,49,97,189,205,110,92,248,154,206,255,0,83,151,254,22,68,22,50,77,113,186,75,157,78,221,254,207,117,164,195,185,163,131,204,243,63,119,52,109,34,237,104,91,108,150, 242,54,214,111,153,90,170,217,232,209,120,137,111,102,240,37,244,122,226,233,111,229,223,197,20,18,67,125,166,182,213,109,183,86,114,42,205,110,219,89,91,230,93,187,89,91,118,214,175,221,252,60,241,31,3,158,97,227,67,27,139,190,35,251,201,47,186,218, 63,207,200,252,43,196,191,10,115,44,131,17,44,86,7,5,254,205,253,198,231,110,247,189,218,252,188,204,197,251,180,127,31,225,82,170,111,231,118,224,223,221,165,88,107,245,212,211,87,71,225,206,46,46,205,13,68,231,138,114,166,69,61,83,230,255,0,217,169, 66,49,251,244,196,49,83,165,72,169,239,70,195,186,158,169,179,181,0,42,71,184,129,154,229,255,0,108,251,205,123,224,7,195,31,13,106,126,22,177,182,241,14,151,227,251,89,97,179,213,108,238,151,254,37,23,113,238,243,96,184,183,101,109,205,229,238,101,101, 109,187,163,109,202,191,46,238,169,51,183,105,249,191,217,174,98,63,19,233,63,180,159,140,53,143,129,154,86,185,124,53,111,23,232,95,218,254,31,138,234,213,86,247,195,154,237,148,204,223,102,154,22,111,245,119,16,249,141,27,70,205,28,202,178,50,178,238, 175,203,188,87,206,115,12,151,44,133,108,186,167,36,175,203,254,43,233,187,86,86,223,166,151,236,126,145,225,190,87,130,205,113,211,134,54,28,202,220,222,159,43,235,248,254,39,195,122,135,133,181,127,130,26,63,246,156,22,138,223,104,95,153,101,85,155, 247,109,254,247,221,147,255,0,66,174,139,246,119,253,153,191,225,171,124,65,22,179,226,139,152,236,60,61,225,189,74,63,183,65,36,27,174,47,36,88,214,101,141,99,86,242,246,182,229,86,102,220,187,85,151,107,85,79,140,63,8,252,73,240,227,226,102,157,225, 47,218,10,255,0,83,240,237,198,171,43,121,247,151,122,68,211,45,157,167,252,253,219,195,251,185,46,62,101,85,218,172,191,221,249,107,245,67,246,9,253,154,188,9,241,79,246,5,179,209,190,9,249,118,190,33,211,175,47,117,43,83,51,52,147,94,51,72,222,108, 50,77,39,205,185,190,86,242,219,253,78,229,85,220,171,186,191,147,56,85,225,112,220,65,71,253,98,86,114,147,78,91,91,254,7,244,143,232,252,254,173,111,236,90,159,216,237,115,114,233,212,242,56,237,146,218,36,138,217,35,134,40,215,108,113,162,237,88,215, 251,170,181,38,205,155,125,170,222,163,164,205,165,95,60,23,208,205,111,60,45,229,188,82,199,229,180,109,253,214,90,96,135,214,191,191,232,78,30,202,30,199,224,63,140,235,66,106,172,253,183,198,66,169,243,124,212,229,79,158,165,242,59,127,21,57,19,159, 122,233,48,60,183,246,177,248,70,255,0,20,126,20,93,199,165,65,115,54,169,99,182,75,101,133,217,90,69,220,190,100,123,119,109,109,203,253,239,238,211,191,99,207,136,67,194,63,179,77,239,194,63,17,104,222,4,189,208,181,173,68,106,215,23,15,36,114,106, 141,123,21,212,119,16,121,145,124,223,234,218,53,242,219,119,203,229,175,241,87,168,222,36,235,101,59,233,113,195,37,202,198,205,20,110,219,85,155,248,85,171,87,254,9,75,251,60,120,123,227,55,195,63,137,178,120,147,195,246,147,248,163,66,191,251,76,87, 81,41,142,226,56,230,141,228,242,119,47,240,249,209,201,242,255,0,187,95,154,241,158,65,128,196,227,48,185,174,46,82,253,212,151,195,179,179,210,231,211,101,92,79,154,96,48,143,42,192,70,50,246,156,222,246,173,165,109,109,169,152,235,203,111,95,247,169, 194,19,221,106,244,214,175,10,170,220,134,87,219,243,47,251,84,221,163,210,191,71,83,77,38,143,154,215,169,18,39,60,82,152,75,150,111,154,166,84,237,182,130,131,102,41,8,133,33,198,209,252,61,234,117,135,104,228,87,67,240,159,225,236,255,0,20,60,119, 167,232,122,97,149,100,212,29,144,50,166,76,65,85,155,118,223,238,252,171,255,0,125,86,86,181,161,93,248,111,85,184,176,215,237,229,179,191,179,118,134,104,92,109,104,93,122,173,99,245,154,82,173,245,126,111,122,220,220,190,70,191,86,159,178,246,220, 190,239,194,66,137,200,221,233,78,84,237,72,169,207,61,41,202,158,173,91,25,8,201,243,123,173,60,39,173,55,248,118,252,213,46,195,64,12,84,242,219,20,253,159,254,205,46,206,62,127,154,156,169,223,109,0,55,103,203,239,79,141,40,100,222,62,237,62,52,220, 40,1,161,61,105,235,247,169,99,135,242,167,152,91,119,200,181,45,154,9,26,124,173,157,185,169,225,141,79,250,207,224,164,142,26,152,39,148,63,120,115,89,182,52,174,22,255,0,42,145,252,53,55,203,187,231,106,134,12,34,145,82,73,219,174,42,102,89,252,252, 248,35,246,182,183,240,150,181,61,231,140,180,125,75,81,214,53,8,167,180,212,86,105,196,204,98,155,203,229,26,102,243,21,254,76,42,253,213,87,109,173,243,85,187,255,0,217,154,219,71,240,183,134,39,147,73,143,78,255,0,132,130,27,157,104,73,125,60,105, 115,107,165,164,42,86,87,43,251,189,190,100,129,155,115,44,139,24,85,101,249,154,186,79,135,255,0,179,69,207,128,126,34,234,86,62,48,93,34,250,56,101,144,27,155,219,150,104,91,203,184,242,36,159,27,91,150,137,119,127,14,237,222,90,183,222,106,143,246, 174,212,23,225,198,165,7,135,188,107,61,254,173,106,35,142,231,78,212,77,214,102,54,231,116,126,93,221,188,127,44,127,222,242,215,230,102,111,225,93,202,191,204,84,104,199,146,117,170,175,122,50,183,252,57,253,29,82,175,47,36,105,253,175,235,67,128,213, 62,52,106,63,15,205,230,133,165,88,248,122,75,123,109,55,236,17,75,109,10,199,27,197,36,194,101,187,89,20,238,146,89,62,93,202,223,46,221,171,183,229,249,184,253,79,199,115,120,198,37,154,250,113,231,219,47,238,218,105,27,111,202,191,222,254,41,43,3, 196,151,99,85,212,90,63,11,180,151,144,73,28,123,165,219,181,99,249,247,5,85,254,29,187,182,252,223,53,73,162,120,118,125,66,214,234,51,118,240,69,0,102,218,237,133,149,190,238,221,191,196,223,47,221,254,42,242,234,243,85,169,102,116,168,71,151,154,66, 88,107,9,169,223,36,90,137,158,116,159,253,98,171,109,255,0,119,238,175,252,6,187,141,31,225,121,212,222,59,125,93,110,180,221,65,103,183,104,224,104,215,201,184,183,111,238,249,123,153,89,126,243,51,124,187,71,251,213,236,222,10,248,105,225,253,0,232, 58,87,133,124,71,225,237,54,219,87,83,113,58,223,69,246,166,186,85,183,18,125,161,110,85,99,220,216,249,99,219,255,0,45,155,229,249,85,183,50,247,192,13,225,141,39,79,154,238,97,116,210,203,55,150,151,145,110,93,83,78,153,27,203,186,125,173,204,223,104, 145,99,111,187,181,161,251,191,50,179,119,79,47,246,16,82,82,188,140,233,226,163,86,124,188,167,63,22,153,45,141,204,154,135,133,165,254,209,191,176,213,54,92,59,90,44,118,55,23,91,151,253,34,13,173,185,188,184,221,254,102,221,183,106,255,0,118,182,239, 190,13,248,155,197,215,214,131,197,144,193,101,107,127,127,53,132,82,44,158,111,157,34,238,153,99,251,223,55,202,191,235,119,125,239,150,172,235,210,75,240,79,90,75,235,141,67,86,183,211,157,237,126,207,18,219,200,183,98,41,45,215,123,73,44,139,182,54, 219,186,61,191,197,27,44,159,238,250,87,129,62,63,104,204,150,90,71,194,5,184,187,73,145,53,59,72,35,143,110,160,46,90,54,89,99,188,147,111,151,242,175,203,186,54,219,247,118,253,223,155,221,202,178,252,54,63,247,56,202,182,149,246,220,241,115,76,77, 124,55,239,48,244,249,142,15,225,159,195,125,70,222,17,173,220,233,90,143,136,116,165,142,107,107,75,104,211,253,37,22,54,104,89,89,118,238,101,249,91,107,127,121,89,91,253,171,126,10,209,60,63,170,125,156,107,246,11,160,92,201,123,246,72,231,123,221, 235,242,172,127,188,111,225,218,202,178,110,255,0,105,163,249,190,237,125,85,225,79,130,141,172,106,109,172,120,238,251,203,187,133,150,107,123,107,25,218,59,123,13,202,219,190,86,255,0,88,172,170,177,180,159,242,209,153,155,106,253,234,225,126,61,248, 39,71,241,119,136,37,240,87,130,87,72,138,45,84,54,173,170,91,179,199,10,139,101,242,227,107,125,177,174,230,105,190,234,183,203,34,237,145,149,190,90,250,12,95,15,71,10,185,37,52,227,246,98,236,239,250,175,61,116,60,124,62,107,245,167,205,203,239,125, 173,253,223,243,58,111,131,191,11,237,180,239,132,186,60,87,238,182,203,169,233,173,117,30,205,49,90,104,26,109,205,251,198,88,217,126,236,155,149,191,189,253,221,181,228,159,21,60,0,94,234,225,124,29,173,174,173,169,44,159,186,143,86,146,56,110,60,149, 111,187,28,145,42,170,178,183,152,170,191,117,151,118,239,225,106,245,235,191,137,26,158,185,240,238,215,78,213,52,253,71,194,218,61,166,155,11,127,104,69,114,187,97,134,221,182,201,12,211,71,186,70,109,187,87,237,10,191,42,238,243,62,101,220,213,252, 61,225,88,245,159,135,118,90,151,195,200,46,98,91,73,227,103,109,62,239,237,82,93,249,63,43,43,73,253,221,187,190,95,189,252,63,45,118,227,114,76,6,103,79,217,209,166,227,40,47,62,111,248,63,214,135,29,28,219,25,130,171,41,213,151,52,91,242,183,252,3, 193,33,181,240,222,165,109,167,105,182,218,180,218,125,246,167,60,231,237,43,115,40,212,236,218,53,199,153,28,210,54,99,153,91,114,201,30,213,88,218,61,172,187,107,220,62,20,124,67,79,4,220,106,23,90,134,151,118,214,237,36,55,186,135,218,103,243,155, 78,86,133,99,221,242,252,173,11,121,109,181,183,124,171,183,119,247,171,173,159,224,133,135,197,93,62,219,86,212,109,45,46,110,228,182,86,129,146,215,236,247,109,251,205,204,204,223,194,223,221,86,254,237,121,246,177,225,57,62,30,252,97,211,151,195,90, 125,134,149,105,170,233,255,0,99,150,237,153,153,181,31,38,70,86,142,104,126,85,89,188,182,101,219,254,175,248,151,111,204,181,242,25,142,89,141,225,234,212,177,43,220,138,218,95,240,63,79,203,67,223,194,102,88,76,234,157,76,51,149,229,252,167,169,120, 251,94,209,252,107,225,75,123,253,38,211,85,147,80,209,110,163,123,59,155,101,219,121,111,59,50,182,232,217,191,133,190,101,147,119,202,202,204,172,187,90,184,63,130,235,15,132,188,76,116,125,75,75,159,80,184,183,145,172,174,231,149,214,27,125,49,164, 146,73,162,88,213,191,229,140,219,164,104,255,0,231,158,233,35,86,85,218,181,99,225,223,246,199,195,15,138,126,44,210,244,171,221,222,13,213,97,137,116,141,54,229,227,145,172,174,124,230,142,117,254,246,214,86,141,151,119,251,191,195,243,116,63,23,109, 124,63,255,0,13,9,253,145,226,75,93,35,86,63,16,180,5,211,158,245,183,42,199,53,155,72,223,103,142,70,249,153,153,110,153,85,182,255,0,203,38,221,94,229,76,115,206,168,208,199,70,181,235,193,165,45,44,175,231,235,167,157,143,51,15,133,89,77,90,184,57, 67,247,51,143,54,250,255,0,75,83,243,219,254,10,5,28,154,15,237,139,227,104,109,162,75,102,184,189,183,185,81,26,236,219,230,90,64,127,175,253,245,186,185,175,132,63,11,239,62,50,252,79,209,188,45,162,48,89,245,139,165,141,165,149,191,119,109,26,171, 52,178,51,127,14,216,214,79,248,22,218,235,255,0,224,161,58,5,238,135,251,78,207,105,171,151,18,195,167,89,198,179,49,27,167,133,85,213,100,245,79,186,203,181,190,101,219,247,155,229,171,63,177,118,139,46,175,241,31,80,54,158,82,220,220,233,114,216,217, 180,231,203,141,174,38,154,221,85,119,255,0,187,253,223,153,85,153,171,243,220,84,21,76,205,123,72,124,83,247,151,207,99,244,28,186,110,24,7,236,229,126,88,251,178,249,30,219,226,31,216,231,70,248,63,225,15,23,234,127,6,60,107,241,6,212,120,122,210,75, 178,241,234,48,136,110,124,159,222,109,153,97,253,204,139,242,253,217,23,230,220,213,23,133,46,252,87,240,231,193,58,126,163,226,189,43,86,241,118,139,127,41,191,151,125,237,188,50,71,28,203,230,121,139,104,187,99,85,221,252,74,187,191,134,189,163,226, 222,133,121,224,127,217,247,197,107,58,89,189,183,246,82,233,15,108,32,221,46,163,119,113,39,217,226,183,251,187,149,154,73,35,253,226,238,111,239,110,166,252,93,253,163,116,47,132,30,8,240,207,135,124,65,46,147,127,226,237,39,65,182,211,52,219,53,242, 230,119,104,225,88,210,105,22,61,222,94,223,153,182,183,222,249,190,106,250,252,239,38,203,176,216,174,89,191,101,30,78,109,61,126,127,240,79,142,203,179,28,110,47,15,204,253,247,207,203,248,127,94,135,130,248,195,246,214,191,248,163,165,221,232,58,122, 93,233,208,93,110,187,189,182,89,118,199,182,29,187,99,95,186,209,175,202,187,151,238,253,234,224,190,35,124,79,123,27,219,123,56,34,180,185,188,251,52,110,210,72,155,150,8,213,190,85,251,223,229,127,222,166,248,199,79,183,240,150,158,222,41,190,145, 45,188,81,37,236,151,118,179,218,198,170,178,92,201,35,72,205,228,201,185,124,181,102,102,88,219,114,170,237,172,45,47,196,240,195,124,215,31,17,124,15,225,95,21,77,169,196,193,164,67,62,147,123,28,138,11,125,161,102,183,63,235,57,253,231,203,181,254, 85,218,170,191,55,230,149,163,83,50,169,237,234,243,79,151,221,62,198,52,41,224,163,201,9,37,204,122,30,145,62,159,173,109,95,25,105,209,91,45,132,13,231,125,154,229,118,170,237,220,178,64,219,126,111,155,111,222,220,191,122,189,171,246,49,253,159,97, 241,103,237,93,240,230,227,77,157,13,134,163,226,141,14,230,13,236,179,71,28,144,222,195,34,249,139,255,0,60,254,95,221,255,0,180,245,243,29,253,206,141,226,75,40,87,192,247,26,153,146,69,147,237,58,94,165,110,191,107,178,142,61,191,188,243,35,253,220, 241,178,179,55,203,243,46,221,173,95,74,127,193,45,53,5,186,253,180,190,20,46,133,169,67,106,227,197,22,118,130,211,115,53,204,222,76,115,72,172,177,253,217,35,85,142,70,218,205,187,118,237,181,150,15,46,148,42,194,162,151,218,94,239,204,231,174,229, 8,202,50,63,95,127,224,173,222,20,248,115,251,59,252,43,241,199,137,245,205,22,15,16,201,241,62,9,52,125,91,195,150,86,187,174,117,54,146,6,141,231,89,35,249,163,101,88,227,220,205,242,178,174,221,203,94,33,240,203,246,132,211,181,127,217,118,227,198, 250,253,247,129,164,251,20,13,225,86,241,37,229,179,93,121,215,127,243,218,226,243,119,250,60,106,208,219,219,179,109,109,210,71,55,153,254,215,214,127,181,183,236,25,162,124,101,240,87,138,252,87,241,35,82,241,190,161,105,169,90,195,121,46,155,161,207, 228,220,93,52,49,175,239,23,116,155,97,249,85,191,119,30,221,190,99,50,252,205,94,9,240,115,93,248,97,241,131,246,125,93,118,41,245,59,205,71,196,122,228,250,221,173,152,211,188,233,166,180,141,99,86,176,153,118,175,150,205,28,123,164,220,187,190,111, 155,230,249,107,234,92,111,57,28,180,229,238,156,31,143,254,19,233,63,21,254,59,55,136,225,240,119,141,52,29,82,227,75,189,241,76,169,167,89,194,171,124,223,102,242,224,157,174,163,111,46,105,36,89,36,219,181,127,213,252,170,191,45,124,171,225,111,248, 39,198,171,227,47,139,122,54,177,161,172,112,223,232,118,113,201,227,205,39,195,90,156,222,102,130,33,183,142,79,237,91,57,215,203,243,167,95,180,24,218,221,89,126,101,221,185,119,54,239,212,239,20,126,217,30,26,248,107,241,46,81,225,191,7,107,151,154, 150,135,161,253,142,115,117,97,246,91,123,59,102,187,111,42,57,35,109,172,219,87,238,249,127,121,126,247,240,238,242,239,219,203,227,85,191,133,244,205,15,197,31,177,141,215,194,123,75,205,57,32,215,245,8,180,229,242,245,201,52,230,102,138,234,9,45,194, 179,73,28,236,173,181,89,85,91,236,237,30,229,102,86,94,28,101,56,242,73,200,234,163,45,98,124,31,163,217,120,27,226,151,194,63,20,91,222,235,122,180,137,160,199,119,97,117,174,233,186,133,234,221,106,26,117,197,202,249,95,51,110,133,89,155,203,109,179, 109,147,107,73,181,183,110,174,19,225,183,236,45,173,124,92,240,37,172,158,0,131,194,101,222,86,209,174,160,183,85,142,207,203,130,53,147,116,118,234,204,214,247,18,43,44,139,107,254,178,69,86,219,252,85,233,233,241,178,239,246,92,248,33,7,138,52,13, 74,218,79,21,124,76,181,154,253,252,51,62,153,28,218,29,198,155,117,117,46,229,186,181,109,173,230,71,230,70,202,204,204,223,55,202,204,171,91,240,255,0,193,65,117,223,20,120,14,255,0,195,237,109,160,233,214,122,237,213,150,161,30,163,164,233,144,217, 205,103,44,51,47,218,90,53,147,115,71,116,208,201,34,180,159,195,252,63,54,234,249,217,78,31,13,78,199,69,75,76,245,79,129,223,177,71,198,31,128,63,24,238,188,47,226,11,15,3,120,154,219,64,240,172,94,44,143,76,130,207,251,74,125,84,219,220,249,150,173, 28,55,63,187,181,191,146,102,218,173,242,237,85,220,223,236,252,167,255,0,5,31,253,163,245,159,218,71,227,5,214,175,227,81,166,164,250,58,73,225,235,91,93,46,47,38,199,77,142,210,105,35,154,24,227,102,102,243,22,227,237,11,35,51,124,204,170,203,242,237, 175,99,240,231,252,21,147,226,215,194,47,16,218,91,252,61,241,51,92,217,46,153,46,155,21,156,246,112,201,31,145,181,163,130,226,105,182,249,146,77,11,54,239,149,190,234,252,213,240,222,161,170,221,120,135,69,186,212,157,252,233,100,185,111,47,247,190, 100,151,27,126,105,102,147,253,150,102,221,187,248,153,154,189,172,155,31,133,133,120,199,154,223,215,115,201,204,57,229,79,150,49,56,221,6,246,239,78,215,99,254,204,154,72,26,77,91,77,143,116,127,197,27,93,70,172,191,240,37,175,181,126,38,248,3,85,212, 45,180,223,17,124,39,186,130,195,198,62,24,155,237,26,124,243,25,62,207,112,191,242,214,214,225,99,101,243,33,145,127,133,155,110,237,173,95,37,252,32,240,122,120,199,199,139,105,114,90,221,99,189,181,187,111,151,254,120,201,230,109,255,0,190,150,190, 228,209,29,166,211,100,47,242,252,191,247,213,120,156,71,56,199,27,120,255,0,90,35,221,201,229,40,80,140,162,103,252,48,253,184,118,67,62,159,226,207,2,92,233,118,218,112,105,134,152,214,219,116,155,127,51,106,207,2,219,195,30,217,173,228,93,205,229, 201,39,238,217,183,124,213,233,186,31,237,81,224,143,137,205,115,38,137,123,117,231,59,45,172,66,243,203,93,82,226,37,89,25,96,134,77,222,77,140,150,237,54,232,110,190,102,104,215,107,124,223,53,120,239,195,223,218,35,193,190,25,241,14,163,107,226,255, 0,237,27,89,188,207,37,101,91,102,145,85,87,239,125,223,246,171,210,180,246,248,79,241,95,17,62,169,225,171,217,155,238,197,115,229,172,138,223,240,45,173,95,37,245,124,22,51,94,104,198,161,250,30,7,139,177,248,21,201,40,243,64,238,97,241,22,149,59,234, 86,254,31,190,183,145,38,134,107,171,168,161,159,110,156,209,201,246,141,247,119,82,54,217,174,55,110,85,185,179,143,238,179,43,47,247,170,246,177,225,200,245,6,75,137,35,105,239,127,213,233,210,188,11,246,139,121,54,220,44,107,167,219,183,202,179,121, 108,203,13,228,159,45,196,127,185,154,188,255,0,81,253,139,244,123,248,90,227,193,218,142,171,167,59,182,229,123,29,70,69,85,101,251,173,252,75,187,230,172,171,255,0,130,191,16,252,47,103,115,15,131,188,101,54,38,129,173,223,237,118,126,103,153,19,125, 232,217,163,101,220,191,123,239,47,251,187,91,230,172,107,112,236,165,46,106,85,15,169,193,248,137,65,199,150,189,54,125,121,251,22,124,107,240,135,236,243,241,2,27,189,99,225,254,141,105,168,233,54,242,216,221,107,26,10,249,50,91,233,123,164,223,119, 168,55,203,28,158,95,217,213,100,183,93,210,218,183,247,163,109,213,234,127,180,175,135,181,15,139,58,133,134,167,251,63,234,191,14,188,100,150,94,34,211,238,30,207,89,150,40,167,17,249,13,159,178,185,242,219,204,103,242,218,54,243,27,119,205,243,124, 187,107,243,193,252,97,241,75,65,187,190,186,213,180,207,12,107,102,21,141,180,165,129,218,197,172,238,85,89,126,211,181,182,171,92,126,241,191,120,202,219,151,247,108,172,181,165,99,251,87,31,13,25,91,226,39,133,252,93,166,8,108,152,187,199,3,94,54, 167,35,52,155,173,26,227,107,125,158,219,116,222,100,107,14,214,133,151,116,109,183,247,117,244,56,12,211,53,203,99,105,211,246,150,62,107,49,203,56,127,61,171,42,180,107,251,57,51,244,159,196,95,4,226,191,248,159,241,58,239,92,240,110,161,165,219,182, 162,151,214,250,173,164,237,47,246,158,239,45,158,69,95,186,174,173,35,43,46,239,225,174,103,246,242,248,98,246,191,15,124,25,226,31,1,120,90,215,88,210,116,52,212,116,253,70,123,8,153,181,43,120,230,219,229,54,216,254,105,45,150,77,205,63,241,71,181, 100,95,186,213,242,63,129,191,224,160,246,22,127,218,81,252,56,248,153,54,131,117,123,100,53,43,165,1,225,107,13,190,102,214,251,59,127,199,213,234,238,141,89,164,111,46,225,126,246,217,22,189,179,77,255,0,130,135,124,67,179,177,185,132,95,105,190,33, 4,174,160,45,174,36,141,119,196,222,103,239,46,47,45,246,199,111,109,39,150,187,91,107,73,27,124,178,110,86,221,91,227,184,158,134,54,135,213,241,52,165,31,199,243,49,202,248,59,19,150,226,99,139,192,215,132,249,124,237,249,124,207,158,44,188,205,42, 40,230,130,24,54,91,203,31,145,118,242,125,170,59,27,153,163,101,88,227,102,220,183,215,178,44,155,86,234,79,221,221,43,121,109,182,74,173,226,79,14,45,245,197,244,154,109,244,154,69,245,186,199,51,94,91,94,201,111,53,154,249,158,90,220,77,125,254,179, 206,93,173,28,107,255,0,44,255,0,227,222,225,90,54,86,174,131,197,87,162,29,64,234,122,125,205,189,156,26,133,212,169,229,91,105,190,92,54,190,100,139,36,182,154,94,158,205,243,71,251,182,251,66,183,204,191,241,241,13,101,196,111,44,237,97,219,36,51, 79,100,241,148,6,234,59,139,125,30,89,163,142,56,218,107,166,220,183,151,178,44,146,44,51,109,242,238,151,247,51,109,147,107,55,230,181,97,44,52,185,233,74,209,63,113,194,215,142,46,22,175,27,73,244,35,135,226,77,238,131,162,105,208,252,83,211,117,79, 22,186,71,254,149,172,216,88,197,99,174,121,75,229,171,222,221,88,252,176,178,199,230,126,250,63,221,205,30,221,203,230,43,124,189,73,240,248,187,181,186,188,240,165,221,190,181,97,102,219,103,158,215,119,153,106,223,121,86,226,22,253,228,45,183,230, 249,151,110,223,226,106,231,111,180,185,221,113,99,109,251,185,17,117,24,163,186,153,173,247,121,109,187,237,183,211,55,239,35,134,63,149,85,89,124,203,86,253,220,138,208,182,229,201,62,20,183,210,124,109,167,120,171,72,137,163,241,52,62,102,157,166, 95,101,172,117,61,82,79,189,44,108,208,252,203,107,27,110,147,236,235,185,118,175,157,111,230,70,222,93,126,167,193,254,48,230,220,58,227,70,188,189,173,46,210,253,31,79,197,121,31,146,113,191,130,89,39,21,41,87,195,199,216,215,254,104,245,245,93,127, 7,230,116,234,153,85,219,247,126,245,42,70,92,114,127,138,172,104,254,54,143,84,75,231,248,158,150,237,107,26,196,182,26,246,139,6,233,181,105,217,89,158,25,52,216,85,150,102,218,190,98,205,110,203,231,43,54,216,247,46,218,181,30,151,30,165,225,232,245, 159,10,95,233,186,230,133,52,141,28,122,150,153,112,183,22,190,98,179,43,70,204,191,52,114,43,43,43,71,34,171,43,43,45,127,82,112,167,136,249,63,21,194,43,15,83,150,175,242,75,127,151,127,145,252,131,198,30,22,103,156,31,41,60,69,30,122,95,207,29,190, 125,190,102,110,205,153,249,105,193,62,110,106,83,31,63,118,151,96,205,125,255,0,49,249,205,172,53,20,70,87,38,188,239,227,119,236,205,162,252,104,185,135,83,23,154,191,135,124,77,99,19,71,99,172,105,55,146,90,93,67,247,154,61,205,31,204,219,89,183,47, 221,101,249,182,178,238,175,75,84,24,85,167,68,138,242,108,206,213,111,226,174,44,199,47,195,230,148,37,135,197,211,83,131,232,206,156,191,31,137,203,171,198,190,22,118,146,234,143,153,252,95,251,71,13,54,219,77,248,113,255,0,5,17,208,173,62,53,90,248, 59,247,54,30,47,180,190,184,210,188,77,163,172,203,28,205,21,173,227,51,121,139,254,175,116,55,13,181,190,93,210,53,126,149,255,0,193,60,190,40,124,30,241,63,193,237,47,75,253,159,60,117,103,123,169,105,55,17,65,28,55,112,71,99,170,90,238,109,209,197, 125,106,191,187,105,36,249,151,237,17,237,89,153,149,171,241,159,226,23,137,31,199,30,62,241,150,165,169,193,115,4,183,30,38,191,179,22,83,103,204,95,41,252,133,249,127,218,142,21,145,127,217,101,175,103,253,135,255,0,224,151,186,231,237,80,154,142,179, 225,47,30,234,31,14,245,251,11,191,179,233,103,78,30,100,139,42,167,218,21,164,219,243,71,26,180,112,182,239,154,61,223,121,91,110,214,255,0,60,56,191,13,132,161,156,98,48,244,116,165,9,184,197,74,239,151,91,124,143,236,172,145,214,196,101,180,170,85, 151,191,40,169,75,214,199,232,7,237,163,227,161,227,143,141,87,145,203,167,199,103,115,162,175,246,123,206,27,230,190,85,249,150,73,63,218,93,204,181,228,65,62,94,122,87,97,241,164,199,115,241,27,82,158,214,226,234,233,164,104,227,186,107,168,188,155, 136,238,214,40,214,120,230,93,171,182,69,145,89,190,238,214,86,86,95,149,150,185,67,31,36,15,188,43,251,159,195,200,209,135,14,224,150,30,124,203,145,117,190,250,191,196,254,83,227,47,106,243,140,75,173,30,87,204,255,0,224,126,4,104,159,63,11,205,41, 202,49,207,122,92,249,105,187,255,0,65,165,219,230,124,198,190,207,154,60,220,167,203,251,223,16,232,221,99,125,228,253,223,154,183,191,224,143,223,26,155,225,231,237,155,175,120,104,222,139,136,62,34,77,59,13,58,223,230,91,23,133,100,153,39,153,190, 234,177,93,203,229,174,230,249,151,117,124,159,241,223,226,23,138,60,95,227,93,83,66,209,103,146,195,69,176,159,201,217,11,121,109,62,213,249,154,73,63,246,90,169,240,10,234,95,131,127,21,124,49,226,61,18,226,65,121,162,234,150,215,128,192,219,112,171, 34,249,139,187,253,168,252,197,255,0,129,87,199,113,93,124,62,51,9,83,5,39,239,126,163,203,49,149,240,120,234,88,170,113,247,41,202,255,0,226,254,99,245,111,246,134,255,0,130,124,120,143,93,241,174,163,172,124,44,158,194,246,211,81,153,238,90,210,226, 79,34,88,36,102,220,193,91,110,214,93,223,119,238,215,204,158,56,248,123,172,124,53,241,4,218,87,142,116,219,141,50,254,21,220,99,152,125,229,254,22,86,251,172,191,237,45,125,85,224,191,248,41,231,134,117,163,136,245,24,100,0,227,146,181,206,254,218, 31,29,124,55,241,159,225,158,151,46,142,109,39,212,237,111,151,100,137,254,177,34,100,109,227,253,223,187,255,0,142,215,129,195,185,182,117,132,173,75,7,140,166,165,79,225,230,235,19,232,243,28,195,135,115,88,212,175,131,172,225,89,253,151,179,62,98, 10,184,192,235,65,233,243,210,132,249,5,40,63,43,115,218,191,80,62,96,216,240,63,137,117,111,1,234,50,235,222,11,186,251,45,254,153,12,147,68,81,151,204,147,229,249,163,93,223,222,93,213,99,226,175,136,166,241,111,142,53,13,83,80,188,107,251,139,230, 142,99,51,197,229,179,238,141,118,238,249,87,248,118,252,219,126,106,231,219,16,42,189,208,80,23,230,109,213,192,126,204,63,22,181,95,139,95,14,53,43,159,31,195,127,7,136,244,77,127,80,209,111,162,185,93,187,150,9,217,96,145,91,203,141,89,90,31,47,238, 238,249,118,252,205,94,5,88,199,11,152,66,181,71,252,75,197,104,180,210,251,239,209,159,65,79,154,182,93,82,49,143,193,105,75,87,233,177,232,75,200,0,83,255,0,143,240,165,69,199,241,124,212,164,242,121,175,124,249,241,171,201,233,79,141,54,45,31,222, 216,105,234,159,42,138,0,102,195,78,231,248,105,161,61,106,104,211,122,255,0,13,6,131,21,61,170,104,225,249,185,90,145,83,158,121,169,150,28,30,185,53,14,69,90,227,173,208,121,124,84,187,59,80,169,242,212,133,20,231,125,100,80,216,211,253,170,100,219, 118,212,191,238,127,192,106,57,19,126,104,9,140,216,63,241,218,114,167,167,90,62,225,2,158,168,223,47,221,160,204,252,67,248,161,241,199,196,190,27,210,100,211,245,72,155,78,178,215,172,188,203,53,185,211,173,210,234,210,53,147,114,195,14,213,220,204, 208,199,251,191,151,239,47,221,219,247,190,116,248,173,226,173,71,198,254,54,190,213,174,172,228,138,15,19,59,79,10,8,88,72,16,124,171,247,126,243,46,221,223,47,202,219,126,95,151,238,253,67,225,223,18,104,218,206,181,226,95,18,221,120,121,111,60,85, 111,105,107,127,162,93,221,92,73,127,108,30,59,125,173,36,159,55,221,141,100,95,49,87,230,249,149,127,135,230,233,190,44,126,213,246,158,52,186,191,240,255,0,194,239,9,165,196,238,98,186,177,215,224,185,134,69,142,79,45,124,196,157,153,127,118,171,27, 249,108,209,255,0,14,239,155,239,87,243,170,203,149,85,41,87,170,225,31,138,58,95,155,167,145,253,7,60,107,143,47,177,135,60,254,238,83,226,56,180,237,67,196,183,69,173,109,145,217,247,54,213,93,191,119,239,51,47,252,5,190,245,117,63,15,124,31,253,165, 226,8,47,181,129,22,161,101,28,127,107,158,29,203,230,205,26,237,111,45,183,125,223,49,126,85,255,0,217,107,127,197,122,103,138,245,63,29,234,86,218,58,93,220,234,23,115,44,151,49,216,90,125,153,154,102,183,143,204,141,127,186,171,27,42,255,0,119,254, 250,106,221,248,73,240,59,199,30,42,150,202,111,15,141,58,11,77,78,117,183,178,44,54,220,52,141,229,174,229,86,95,149,86,57,247,125,239,186,173,95,63,12,53,89,87,141,58,49,230,61,25,87,143,179,231,159,186,65,171,219,232,235,174,94,73,123,163,216,89,232, 182,81,70,144,68,242,164,167,73,158,94,100,118,105,36,221,229,172,129,126,239,204,191,47,240,173,117,30,31,241,92,250,95,195,251,189,35,197,176,218,234,22,190,54,137,153,110,46,110,94,234,238,221,33,63,187,147,204,255,0,151,120,213,79,203,252,44,205, 187,239,85,235,15,217,227,196,63,10,60,45,226,93,11,78,123,93,63,94,209,34,183,159,80,123,31,46,124,219,249,159,55,222,95,153,85,154,54,95,187,243,110,249,107,7,199,158,8,213,124,47,227,75,223,14,220,248,115,69,210,46,211,73,89,32,130,234,69,149,117, 9,225,249,167,154,54,220,173,230,76,204,223,43,124,171,182,79,239,45,122,53,48,181,48,235,222,248,189,59,223,79,234,222,71,37,44,92,106,175,119,225,45,252,77,212,31,226,15,141,237,110,244,45,35,91,241,69,165,180,144,193,109,165,199,185,160,133,150,21, 221,251,245,95,149,191,137,153,190,109,178,55,204,170,181,173,224,15,142,190,31,248,3,226,181,254,215,240,220,179,106,55,118,159,52,115,222,183,155,100,210,124,219,149,85,119,51,124,191,117,191,135,106,173,77,240,82,223,89,209,53,72,173,124,70,246,250, 113,182,141,109,78,141,108,22,59,203,229,85,111,54,70,30,91,47,150,187,161,221,35,51,46,224,223,197,182,189,35,196,255,0,7,52,47,142,26,236,13,162,105,114,216,90,160,88,230,190,211,109,191,125,123,26,170,178,200,179,50,182,216,86,70,218,205,185,155,115, 54,221,181,189,28,37,104,70,85,169,75,150,113,242,41,226,32,229,236,229,240,200,244,47,7,254,217,122,103,143,33,134,223,194,154,105,215,117,41,173,163,211,218,13,49,124,232,228,202,180,145,143,222,109,249,85,149,150,79,238,183,203,243,109,106,212,248, 101,224,185,244,207,16,120,139,82,241,28,205,53,246,183,119,34,207,42,198,177,200,242,109,141,100,93,172,191,117,85,85,87,251,170,187,127,188,205,228,223,5,254,5,235,95,7,227,213,159,194,186,236,94,29,107,203,118,125,61,238,165,93,208,71,28,204,190,98, 204,223,222,101,104,218,79,189,251,207,225,249,171,232,127,134,218,236,190,60,107,137,245,125,54,237,181,109,78,40,88,220,173,202,179,73,101,14,239,187,183,229,95,50,79,51,230,251,219,87,230,254,26,251,140,159,21,60,214,20,189,179,253,229,244,211,202, 215,245,62,91,52,194,195,43,169,82,116,227,251,190,93,126,251,219,208,244,107,111,4,91,253,150,222,217,161,143,251,58,214,5,134,40,214,93,173,253,239,188,191,121,119,125,223,226,174,43,196,63,13,147,64,215,44,252,69,240,134,117,181,212,172,228,146,27, 237,42,89,35,219,171,252,203,254,214,213,186,95,47,247,114,127,119,114,183,240,178,246,23,126,36,141,52,208,53,61,185,141,26,70,129,87,203,104,215,248,119,47,240,237,255,0,129,127,21,115,254,32,241,70,156,250,196,154,157,237,205,130,219,249,81,199,43, 121,76,219,155,115,44,113,238,255,0,103,115,54,239,246,150,191,65,197,81,195,210,164,161,29,37,252,219,53,253,125,221,15,207,232,85,196,226,43,74,164,190,31,229,232,203,254,29,241,118,148,116,152,188,75,162,61,196,86,183,234,203,115,111,52,109,27,71, 50,201,182,69,104,219,230,89,21,190,242,255,0,223,53,203,124,125,241,85,143,140,190,30,77,171,120,14,239,79,187,241,39,129,102,58,229,165,175,218,81,124,201,97,141,188,235,102,18,125,213,184,181,146,104,119,109,255,0,150,149,205,107,159,14,108,62,35, 120,205,141,148,173,17,135,82,130,223,205,180,129,109,53,22,253,219,50,249,155,155,108,145,237,85,93,191,118,69,86,221,247,171,74,255,0,199,179,120,121,97,79,139,62,3,254,211,181,184,71,176,254,209,211,237,173,90,54,221,242,179,73,105,36,222,116,106, 203,185,182,170,205,247,126,247,221,175,155,173,153,74,189,26,152,124,76,109,7,214,205,171,247,242,252,87,153,238,209,203,105,209,169,78,182,31,89,175,179,204,163,249,239,233,185,63,137,124,23,105,241,231,225,253,181,255,0,134,53,40,116,155,157,94,202, 27,189,34,254,57,87,253,6,70,95,58,63,151,114,179,47,204,187,151,229,249,119,87,159,124,44,212,238,62,42,120,247,225,245,255,0,142,100,211,247,64,186,197,188,86,167,78,141,110,180,173,90,203,236,233,37,236,51,47,238,238,35,105,23,247,107,229,171,55,156, 219,190,89,25,87,168,253,142,252,115,160,248,75,193,154,231,131,245,45,86,223,85,182,240,22,171,253,139,99,168,93,194,177,253,166,217,149,102,182,142,63,51,247,140,209,197,34,198,223,42,253,218,175,166,104,173,163,254,222,48,89,106,186,155,180,94,41, 240,196,250,215,134,138,109,251,53,189,196,210,198,218,159,150,191,243,210,69,183,182,109,223,236,183,251,85,224,188,179,1,86,84,49,184,37,30,105,201,70,125,185,188,250,110,173,231,123,246,61,184,98,113,52,103,136,194,98,57,148,84,92,161,46,191,47,151, 228,124,167,255,0,5,103,190,135,82,253,160,116,88,36,209,173,244,77,82,223,66,69,187,154,210,125,214,247,197,167,125,146,66,191,122,53,85,89,23,203,147,230,92,237,221,34,174,234,230,255,0,103,253,47,81,215,124,127,224,123,13,30,218,61,10,59,171,246,138, 73,237,11,121,107,28,214,23,17,75,116,60,198,101,221,229,150,111,151,229,221,90,95,240,82,203,89,117,111,219,114,246,199,85,157,26,206,27,13,62,56,222,37,243,89,162,217,44,135,143,226,109,205,37,63,246,124,241,181,215,136,62,62,120,27,73,138,11,137,244, 61,10,245,190,211,107,100,255,0,105,146,84,154,38,243,21,87,110,230,221,34,175,203,252,42,172,191,118,191,60,204,104,58,217,195,167,47,231,183,227,99,238,242,202,209,165,149,41,175,229,191,234,122,191,197,75,239,136,95,16,172,110,62,29,120,227,84,209, 180,163,224,73,116,235,217,245,61,2,121,33,188,214,102,150,95,38,202,101,253,222,216,100,102,99,39,202,236,222,100,106,202,187,90,161,253,162,63,100,189,23,225,31,136,188,65,241,15,66,213,224,131,77,138,210,59,187,219,107,171,102,131,50,40,88,164,251, 44,159,46,239,49,150,61,177,178,238,220,205,243,124,213,215,252,44,210,236,181,15,218,251,198,18,234,183,241,105,208,193,226,143,180,234,209,106,54,222,68,150,246,22,118,16,152,22,102,101,101,85,243,46,15,221,221,242,182,239,151,248,125,3,87,240,86,167, 251,75,124,85,134,95,20,89,44,158,18,240,108,219,180,221,62,41,21,99,189,212,21,183,125,174,233,151,254,88,194,190,90,197,15,241,109,220,223,236,250,52,176,145,226,60,124,233,87,148,165,63,133,125,253,109,217,47,191,212,243,231,137,89,54,18,157,90,81, 140,99,241,75,238,253,89,242,103,199,127,129,94,45,240,135,136,244,45,83,226,117,165,181,157,134,167,108,210,105,113,67,115,230,50,170,249,108,222,98,237,253,220,159,188,95,151,230,255,0,199,107,157,188,178,73,60,169,102,31,44,31,117,107,233,111,248, 40,173,141,206,131,169,120,62,203,89,153,102,185,242,46,166,147,203,86,219,181,188,149,254,47,247,127,134,190,102,190,189,51,171,108,251,181,182,97,149,81,202,235,207,13,75,225,93,206,92,30,101,60,202,140,107,84,235,252,166,62,182,142,110,32,186,177, 43,21,213,177,253,203,50,252,191,237,43,127,121,90,190,129,255,0,130,101,124,72,240,79,195,31,248,40,135,192,239,23,120,247,197,58,79,134,124,55,164,107,49,106,58,228,250,204,235,106,154,28,191,96,189,142,72,228,146,77,171,36,126,115,70,171,34,255,0, 207,69,175,4,212,83,207,143,248,254,95,187,95,64,127,193,33,62,17,232,159,25,63,224,165,31,9,244,47,136,26,6,137,226,125,42,254,239,81,91,189,43,86,181,91,139,93,74,37,210,175,127,113,36,108,172,173,243,109,111,155,248,163,254,246,218,241,103,133,114, 168,165,6,123,52,107,174,78,90,135,244,55,241,59,254,10,25,240,246,243,246,113,182,241,71,192,31,17,104,31,16,162,241,37,212,154,94,137,113,163,51,106,86,50,93,175,222,243,154,31,245,107,31,222,111,226,175,147,255,0,224,158,31,22,188,45,168,73,173,197, 119,54,187,12,122,196,246,210,106,150,109,98,209,219,173,255,0,155,52,205,115,187,106,181,172,115,71,12,123,188,198,242,213,90,53,101,220,205,95,157,255,0,182,215,236,245,162,126,193,63,21,117,171,255,0,217,75,226,52,90,95,136,116,77,78,75,191,19,252, 61,210,53,203,177,101,225,244,88,124,187,102,23,17,180,123,166,253,231,203,111,55,153,229,198,202,171,182,53,175,60,248,53,251,117,248,211,225,118,139,175,248,143,89,208,60,69,226,189,66,226,202,40,224,138,107,179,103,12,45,27,182,251,153,38,178,253, 228,210,50,204,178,51,77,11,47,152,177,237,101,106,227,88,190,74,158,244,77,163,66,54,247,100,126,193,107,87,94,2,255,0,130,139,254,217,126,42,176,253,154,215,65,188,213,252,57,225,232,224,186,241,44,55,171,123,103,163,73,35,73,19,199,28,43,251,185,46, 218,25,27,110,223,49,124,182,249,182,252,187,190,110,255,0,130,133,124,30,183,253,154,63,103,251,109,87,246,107,93,159,216,182,200,182,250,127,135,109,163,219,13,252,107,113,28,173,28,211,109,154,56,99,135,115,92,172,139,35,51,50,201,26,252,181,226,255, 0,176,79,252,20,2,47,129,31,105,212,252,7,240,79,71,240,6,179,123,115,14,155,117,226,6,149,181,43,139,123,134,134,59,139,152,213,149,149,163,251,69,187,67,34,238,218,172,205,185,190,102,219,94,175,225,47,218,59,197,223,181,119,135,53,175,15,124,76,181, 209,228,210,181,43,157,107,82,209,6,183,126,203,43,92,237,147,111,238,97,133,118,249,49,183,151,15,153,251,201,27,111,152,205,183,115,115,98,42,83,112,247,139,132,37,22,120,119,236,247,251,54,67,227,59,3,224,143,136,94,53,179,210,228,191,137,174,180, 13,22,105,218,25,22,127,150,79,180,53,196,138,177,252,176,238,85,85,109,172,173,187,239,125,220,175,218,71,246,21,214,63,101,239,0,248,103,199,119,94,34,209,190,32,120,103,84,158,61,43,110,151,117,230,125,134,245,149,154,88,166,85,251,170,178,43,47,222, 220,205,253,213,249,171,137,253,176,44,252,101,251,50,252,64,240,159,132,188,98,36,210,238,117,169,26,63,13,255,0,108,20,219,28,80,200,208,230,25,25,127,120,187,163,142,31,45,87,114,180,159,42,178,252,213,235,127,177,207,236,253,167,252,123,248,89,227, 11,95,142,62,43,190,240,239,134,188,47,109,109,53,198,162,145,70,150,113,249,243,237,157,164,254,21,242,215,106,170,252,219,153,107,197,246,52,241,49,228,228,247,141,234,211,149,27,243,116,60,103,198,218,143,135,100,241,206,159,121,225,171,187,41,116, 77,141,2,220,218,106,18,50,183,205,247,100,153,163,255,0,92,172,205,27,47,204,191,46,221,204,171,186,184,61,106,199,78,58,155,180,215,178,66,109,167,105,209,214,38,130,6,85,249,163,141,190,93,223,51,47,222,251,187,169,250,126,171,167,199,21,205,174,136, 98,142,213,95,110,149,60,139,255,0,31,235,187,108,113,237,255,0,208,191,187,93,6,181,161,219,104,193,238,32,185,89,110,86,89,23,80,149,167,141,99,104,214,63,149,86,53,95,189,252,95,51,127,13,121,145,228,165,91,216,226,41,255,0,224,39,44,156,156,125,211, 43,224,255,0,139,15,138,190,40,203,168,121,43,3,201,28,106,251,127,137,191,189,95,67,252,23,241,205,215,138,188,53,172,77,168,50,230,207,81,184,181,69,83,252,43,183,109,124,211,240,2,116,146,246,59,169,44,173,173,158,123,185,62,206,208,183,205,228,170, 170,254,241,89,183,110,102,220,213,244,199,128,116,203,127,15,232,70,61,37,22,56,157,164,153,255,0,233,164,141,243,110,106,203,56,157,47,111,251,184,251,188,182,61,92,183,155,216,123,199,71,121,251,62,105,30,51,178,75,187,171,69,89,166,93,198,69,249, 107,150,214,127,100,40,94,79,248,151,207,58,255,0,178,223,53,126,182,252,46,255,0,130,87,248,43,199,191,2,252,35,169,104,58,223,136,52,187,237,71,70,182,187,154,66,209,221,71,36,146,68,174,205,177,151,229,249,155,238,171,87,43,227,95,248,36,111,139,180, 166,119,240,110,179,161,107,113,47,250,181,151,204,179,155,255,0,102,95,252,122,184,229,146,97,177,145,230,149,61,206,202,120,234,244,31,44,100,126,86,217,252,16,241,167,129,228,103,240,142,175,117,106,99,251,190,68,242,71,255,0,160,252,181,177,103,241, 191,226,247,129,27,23,151,115,106,112,175,203,182,226,5,155,255,0,178,175,183,252,89,251,8,124,75,240,100,204,154,167,131,245,91,134,104,217,129,178,69,188,140,109,255,0,106,61,213,227,191,24,126,30,106,222,2,240,238,164,250,134,137,125,6,167,105,109, 35,65,107,117,107,36,109,36,155,126,85,218,203,185,191,224,53,201,30,27,116,159,46,30,180,161,243,58,63,181,165,47,227,83,230,60,175,195,255,0,183,141,237,147,121,62,56,240,221,172,159,47,239,60,173,209,183,253,242,219,171,168,209,63,107,159,135,58,205, 198,117,59,107,205,34,86,109,187,188,141,203,255,0,125,71,95,33,248,167,224,223,143,124,77,113,163,222,205,172,90,88,235,23,87,127,217,215,41,121,63,216,162,185,109,202,203,52,112,72,191,55,203,38,214,95,246,87,111,222,174,227,225,198,129,162,235,158, 38,139,72,213,166,142,253,46,36,104,98,149,85,150,104,228,86,101,249,151,253,229,219,254,203,54,218,233,197,229,249,198,87,24,218,167,55,248,145,52,113,216,12,84,185,121,121,79,170,21,126,22,124,96,140,164,154,167,135,181,23,147,238,199,119,229,180,139, 255,0,127,21,90,168,106,255,0,177,134,135,52,114,143,7,77,123,167,71,52,94,91,54,159,127,36,107,183,251,187,91,204,143,111,202,191,45,120,222,191,251,55,233,223,218,169,107,166,234,11,246,153,62,100,131,119,154,223,119,251,191,195,89,122,103,195,47,22, 248,45,188,239,2,107,87,112,162,179,109,251,45,212,145,171,127,223,45,182,184,191,182,49,244,189,220,78,31,155,252,39,109,58,116,63,229,205,110,83,219,111,190,19,120,251,70,134,229,116,111,27,234,19,75,54,156,186,91,62,171,99,246,166,242,85,153,163,219, 52,44,178,71,36,108,204,203,34,237,101,221,84,91,95,248,153,225,120,228,107,157,7,195,90,234,90,218,201,29,154,105,247,43,28,113,206,205,243,200,214,179,42,171,121,159,242,209,91,114,238,85,101,218,223,53,121,182,137,251,88,120,251,194,55,66,219,89,212, 109,245,86,143,229,100,188,72,228,111,251,233,118,181,118,122,55,237,220,142,155,60,111,225,117,96,223,121,173,103,251,223,240,25,23,255,0,102,172,165,154,229,181,125,220,69,30,95,241,71,252,174,123,24,108,207,55,193,175,220,87,230,249,223,243,47,143, 218,47,79,240,180,211,31,31,120,127,198,158,28,134,56,161,186,158,43,203,111,51,251,82,247,247,113,172,151,87,139,185,166,146,56,227,85,141,190,235,70,222,92,203,34,237,101,232,116,207,136,222,23,241,213,141,206,155,167,235,54,151,80,205,20,113,207,246, 59,166,183,109,78,47,224,138,21,95,154,206,206,57,36,102,220,173,230,90,200,187,163,102,143,114,179,188,63,251,83,252,53,241,92,123,117,59,139,221,29,219,170,92,192,202,171,255,0,2,143,114,214,143,252,43,15,135,95,21,213,167,210,174,60,57,169,188,159, 117,162,49,249,159,249,15,107,86,176,192,101,184,183,205,135,169,239,122,255,0,76,246,233,241,214,103,65,70,53,233,157,12,183,162,27,41,141,252,222,100,209,110,179,184,186,181,179,251,68,48,238,102,147,236,86,246,241,183,239,174,25,86,63,51,110,216,230, 255,0,93,110,209,200,172,171,14,135,101,127,165,173,226,248,62,250,227,194,218,171,198,178,75,45,180,177,201,30,158,146,124,169,36,210,55,238,239,46,36,111,186,210,47,151,54,223,46,69,142,101,86,110,27,89,253,140,109,237,154,105,188,9,173,248,155,66, 158,104,214,54,146,207,80,105,62,88,255,0,213,170,172,219,182,237,254,29,173,77,188,248,125,241,51,194,16,73,46,155,175,233,158,35,181,142,127,180,69,109,170,233,222,74,199,51,46,217,25,153,119,44,158,102,239,153,91,239,55,205,247,190,106,159,236,42, 148,39,207,135,169,169,236,211,227,204,38,38,30,203,23,79,79,188,244,29,79,226,101,191,135,244,109,62,95,138,250,77,212,115,201,180,94,107,30,28,211,94,107,120,23,59,62,219,113,166,171,52,214,246,236,219,119,121,108,205,11,54,217,163,85,95,50,186,93, 67,195,51,89,233,139,125,101,37,190,161,166,200,222,90,94,217,191,153,111,187,251,172,223,122,57,63,217,145,85,191,217,175,29,180,248,143,226,109,1,174,100,241,191,129,239,175,35,186,188,142,242,229,180,237,70,59,137,47,164,88,214,53,154,105,27,230,105, 35,85,85,219,183,108,145,254,238,69,101,85,218,253,19,246,132,209,124,43,227,171,31,18,13,67,196,30,27,213,237,161,146,223,81,19,197,37,165,174,185,242,254,238,218,226,22,221,11,90,46,239,221,180,138,210,91,253,213,102,141,154,191,82,225,127,19,243,206, 30,229,163,141,253,245,47,61,254,79,252,238,126,99,197,158,26,112,199,21,115,86,203,167,26,21,165,219,111,251,121,127,149,143,80,216,54,237,239,74,185,198,214,254,42,163,160,252,115,240,79,196,205,69,23,73,154,214,192,92,43,52,58,150,157,58,222,105,55, 18,47,223,183,242,213,154,226,25,151,251,177,172,208,237,249,149,191,133,119,191,176,231,146,199,237,154,76,150,218,150,159,183,114,222,88,78,183,86,251,127,189,186,63,187,255,0,2,219,95,209,92,61,199,121,79,17,211,139,195,213,229,159,242,75,71,247,117, 249,92,254,106,226,79,15,115,142,24,169,37,94,151,53,63,231,135,188,190,254,159,59,31,17,126,222,255,0,13,117,63,132,30,47,185,241,247,133,98,180,184,208,252,77,44,49,234,48,125,217,44,245,21,143,203,91,141,223,197,28,145,198,170,223,221,101,95,239,86, 39,236,203,251,100,124,69,248,91,226,61,47,196,122,110,175,115,6,154,147,199,35,193,107,26,198,172,187,190,111,247,190,93,223,51,87,212,127,181,151,193,185,126,57,252,19,212,180,93,17,237,254,222,146,71,121,104,178,73,182,57,26,61,219,163,102,254,29, 202,204,181,249,227,240,155,226,62,157,47,129,117,15,11,248,213,252,72,183,218,98,172,94,27,54,49,71,52,119,109,230,55,155,111,127,27,109,104,227,242,218,61,179,43,55,150,202,202,203,181,171,249,239,198,30,25,163,71,51,250,196,105,126,238,162,188,173, 252,221,127,71,243,63,90,240,231,58,169,136,203,99,74,83,253,228,61,221,127,151,161,251,39,240,131,246,144,79,248,40,143,141,244,63,35,194,154,142,147,225,246,180,147,74,127,18,194,209,176,191,213,60,191,53,35,107,118,147,206,145,99,142,25,149,100,85, 102,251,219,182,175,222,196,248,131,224,11,255,0,134,190,44,188,209,252,72,138,183,54,143,183,112,249,150,69,254,22,95,246,89,107,204,191,224,148,95,177,6,177,251,79,157,23,199,30,31,248,136,223,15,175,252,13,116,151,222,30,181,177,176,142,249,161,151, 230,142,73,38,142,70,219,229,201,182,104,217,87,107,55,205,243,45,125,85,255,0,5,0,214,245,91,77,83,70,147,226,30,135,246,93,122,221,99,181,151,84,178,69,254,202,214,213,164,88,255,0,115,35,55,153,28,209,238,86,104,100,95,186,223,44,140,171,186,188,255, 0,6,248,186,183,15,227,35,149,86,169,205,135,156,185,98,191,145,254,122,245,232,255,0,51,196,94,29,161,157,97,165,140,163,30,90,176,141,255,0,196,191,173,187,30,2,247,34,206,237,5,210,201,229,201,242,229,87,238,183,251,95,236,212,242,233,134,218,209, 126,216,233,243,49,251,175,243,42,255,0,121,191,187,89,218,134,165,97,51,148,186,184,243,55,43,73,228,176,221,27,109,251,223,43,125,239,248,21,67,109,170,139,125,55,124,247,18,106,22,50,42,199,27,35,47,218,22,61,170,171,187,251,223,42,253,239,189,95, 212,213,241,177,141,77,62,31,35,240,202,24,41,74,151,247,188,207,58,248,215,240,206,107,221,114,239,86,208,18,75,164,85,221,121,4,81,238,145,91,238,238,85,254,47,187,186,188,110,231,226,67,105,112,203,39,134,45,84,188,104,204,172,255,0,55,153,242,252, 187,155,251,191,238,215,213,26,126,165,166,235,26,157,243,166,219,123,88,252,168,76,115,51,70,171,247,190,86,255,0,190,149,126,106,248,251,197,58,149,188,62,40,191,130,29,191,103,142,246,104,127,222,85,145,150,188,58,153,117,60,67,246,241,214,231,137, 196,51,158,21,40,199,221,230,63,73,116,159,248,34,149,175,196,207,133,222,31,241,79,193,175,28,221,89,201,174,233,214,218,130,195,169,217,161,3,206,69,145,135,153,14,214,254,46,62,245,121,189,215,236,249,172,126,204,62,46,188,240,183,143,117,19,169,234, 209,62,94,100,105,26,22,143,203,86,95,39,119,205,183,230,249,191,218,175,208,159,248,38,47,142,159,226,15,236,21,240,191,80,190,144,73,113,30,133,13,148,199,253,184,1,133,191,88,235,204,127,224,169,191,1,47,188,69,167,105,126,50,240,120,22,194,199,253, 19,90,184,31,51,65,109,206,201,81,127,189,185,182,110,254,29,251,191,134,190,43,35,226,188,94,31,51,250,158,50,87,143,51,138,219,126,135,220,75,195,172,150,88,26,121,190,2,151,45,89,69,75,226,151,46,171,249,117,62,71,130,237,46,227,223,102,173,50,111, 104,203,47,221,59,127,187,253,229,167,188,177,61,178,186,58,236,102,218,27,254,5,182,161,46,182,178,8,225,113,26,99,116,106,170,191,247,202,255,0,192,106,165,158,172,100,212,37,71,69,251,60,49,180,142,210,55,203,187,118,221,177,183,221,111,239,87,236, 63,91,248,101,220,249,47,169,252,81,36,212,239,190,207,103,47,218,67,66,177,196,219,215,251,191,47,202,219,191,222,174,19,224,36,43,166,252,120,248,185,162,217,107,95,111,150,254,125,55,197,45,166,188,234,211,105,254,101,187,91,74,190,95,252,179,86,107, 85,147,254,218,87,89,226,251,169,37,240,145,150,206,99,106,147,50,198,210,220,254,238,56,99,102,93,210,72,223,221,141,85,155,254,3,95,153,159,176,71,237,21,167,124,14,248,223,227,159,26,120,131,88,93,76,90,91,94,201,60,55,55,19,111,215,173,150,226,73, 26,245,110,23,119,202,171,26,183,204,173,187,237,11,183,238,252,223,5,198,153,196,242,120,82,169,74,60,242,140,147,143,245,233,116,125,191,9,229,11,51,141,88,201,218,50,143,44,143,213,197,131,203,147,230,254,42,116,105,242,87,1,251,62,254,214,222,23, 253,172,116,7,213,60,0,98,136,194,171,230,219,165,220,51,180,127,240,24,254,101,219,242,253,229,95,189,242,238,175,69,17,247,113,95,99,144,102,235,58,192,211,197,199,78,109,215,103,213,31,31,156,229,143,40,197,207,11,252,191,145,6,204,238,167,236,254, 250,253,234,155,201,249,170,67,31,148,112,107,217,230,60,187,34,186,66,106,85,77,157,234,71,139,202,28,84,145,193,215,154,158,97,216,98,67,159,189,197,79,20,88,220,5,63,103,203,74,19,214,161,187,141,43,0,250,84,155,56,247,161,83,165,59,97,79,226,164, 49,61,57,168,229,76,101,170,101,251,171,73,39,222,28,124,212,4,196,100,231,228,165,84,249,119,83,130,122,211,168,3,242,175,82,248,125,163,93,124,29,135,78,210,124,59,119,166,105,210,74,171,113,11,180,150,87,17,121,223,53,163,67,26,255,0,19,109,85,101, 147,253,150,111,246,188,63,70,240,93,151,236,199,163,94,207,225,203,203,25,245,141,79,79,89,94,207,85,69,243,146,53,218,209,179,44,109,243,72,203,39,222,143,251,205,253,214,175,112,241,207,237,109,160,248,187,225,76,58,103,133,102,188,177,214,22,198, 29,3,76,178,138,230,59,155,139,86,153,150,206,13,69,164,251,173,39,239,33,219,14,230,242,215,204,220,219,155,229,225,97,248,3,225,141,15,193,154,198,225,22,139,172,53,229,196,215,75,29,199,153,123,111,117,30,216,226,183,88,87,229,95,155,110,229,251,223, 121,171,240,156,102,62,25,191,45,108,63,46,144,244,177,251,118,19,11,44,4,101,237,121,181,151,223,253,127,192,56,31,129,159,23,175,108,60,115,113,227,95,139,205,97,97,29,133,203,73,43,69,108,208,195,20,159,43,52,59,85,190,86,102,88,35,251,205,185,153, 183,110,219,94,244,190,33,208,188,63,240,247,225,77,165,197,229,155,107,186,5,221,190,170,209,90,46,229,179,185,146,53,103,220,173,181,150,29,179,73,26,171,124,205,185,87,248,107,203,252,111,225,191,18,172,94,12,240,223,143,96,88,238,238,239,45,45,217, 39,152,44,147,253,150,225,102,243,55,44,127,44,205,15,153,230,124,171,185,126,111,247,103,253,161,124,112,169,241,119,196,31,240,134,37,205,164,23,177,88,88,127,106,216,178,255,0,164,109,135,247,214,187,183,127,11,54,229,251,219,119,110,249,171,198,163, 155,44,182,139,172,223,52,155,94,187,223,244,71,173,83,4,241,51,84,254,202,191,166,223,240,79,166,188,83,241,211,194,222,27,215,53,109,49,211,74,184,212,19,79,107,103,73,110,99,142,226,22,102,102,142,75,150,155,108,113,182,229,145,163,251,204,219,126, 88,217,171,195,26,103,248,177,46,187,226,91,85,213,151,226,51,124,190,36,211,237,228,143,202,158,217,86,22,139,79,181,135,239,46,232,246,121,146,51,44,141,35,50,238,93,162,53,242,223,135,159,21,19,193,54,62,40,211,225,189,191,187,181,147,204,107,75,215, 18,77,36,146,110,219,186,79,51,116,159,243,211,253,99,124,219,118,174,223,150,189,175,193,95,24,35,211,62,12,73,103,240,211,68,209,52,237,102,68,142,215,88,213,228,186,143,79,131,78,146,70,104,237,60,191,221,255,0,165,93,54,229,111,46,61,191,237,50,179, 86,248,44,122,207,171,206,181,89,114,222,238,222,154,37,253,105,185,203,95,10,178,204,60,105,209,143,52,150,159,231,253,122,15,248,59,62,165,227,63,19,234,211,232,126,17,186,176,211,90,218,56,229,138,250,56,126,86,86,111,50,101,183,220,173,52,113,237, 218,190,99,125,229,102,220,223,197,217,120,143,195,58,188,30,14,183,151,225,229,165,237,254,171,114,173,107,30,159,29,155,67,27,109,93,222,114,201,181,163,85,251,204,210,52,155,126,85,218,191,53,118,254,8,210,44,252,69,225,136,231,208,230,134,61,75,89, 182,85,138,41,108,86,79,183,172,108,202,170,178,109,95,153,89,100,101,86,101,101,95,155,230,174,155,195,83,106,182,122,98,89,106,19,223,222,94,93,68,202,183,142,254,95,157,50,255,0,207,56,255,0,134,54,219,247,183,46,237,191,197,95,69,131,202,229,40,74, 148,149,227,45,252,159,109,191,205,122,158,86,39,26,185,227,46,110,89,71,225,243,183,245,234,120,250,124,23,155,195,151,176,234,126,39,176,180,129,32,178,141,85,252,143,180,42,180,219,149,99,95,50,63,189,185,87,251,171,243,54,239,239,87,171,252,61,183, 209,100,178,251,21,157,206,157,119,45,178,255,0,163,91,65,229,199,113,229,255,0,171,111,155,115,51,46,229,219,247,169,254,33,209,173,53,203,20,143,197,246,219,254,207,186,56,32,251,75,109,143,111,241,55,221,243,36,102,111,187,187,238,253,223,226,106, 201,211,124,49,167,120,22,120,255,0,225,25,179,249,252,184,218,123,229,150,111,221,198,191,51,121,141,255,0,2,221,183,253,239,239,87,177,151,85,195,229,24,136,211,163,202,213,173,173,239,248,232,121,184,234,53,243,122,18,149,78,104,251,223,100,235,111, 96,209,222,27,152,173,167,155,126,213,146,88,210,47,183,43,50,252,190,91,44,138,219,91,119,203,183,114,215,49,119,30,190,247,98,45,43,82,186,183,209,236,160,86,121,30,43,121,174,174,27,111,250,197,105,23,111,202,223,250,13,119,240,60,48,104,22,246,254, 22,104,97,182,153,124,184,147,103,203,181,191,139,253,237,172,205,243,85,73,124,37,246,155,56,98,79,50,27,109,219,149,17,183,43,47,202,203,187,248,164,251,187,190,102,249,119,87,232,51,161,28,90,141,69,167,166,159,169,249,250,172,240,50,149,57,198,254, 186,156,5,247,132,53,61,58,29,66,91,40,117,189,50,247,85,212,33,89,126,127,237,22,154,5,249,90,70,133,149,163,251,187,155,247,127,119,119,251,53,71,193,159,10,228,240,133,134,162,169,109,113,175,38,213,147,74,185,186,104,225,187,184,133,85,119,91,201, 230,124,191,47,222,93,190,94,237,205,242,175,222,111,107,142,206,241,102,99,28,241,236,254,29,232,223,55,251,203,84,245,175,12,77,168,199,42,90,204,214,236,205,247,162,85,85,111,248,11,110,249,191,218,174,92,71,15,211,171,172,121,148,190,95,240,223,129, 189,28,254,116,157,165,203,203,243,255,0,135,252,79,147,172,190,6,88,124,74,253,169,252,109,164,183,133,116,201,110,239,236,108,53,233,39,213,237,214,91,107,24,93,188,131,107,18,70,202,219,153,109,89,90,77,205,242,238,95,151,106,215,13,241,127,192,54, 191,177,159,198,111,12,106,254,33,241,45,219,63,135,32,158,251,194,90,101,230,161,35,105,241,48,145,85,225,142,233,149,164,141,86,50,203,36,115,110,93,183,59,163,111,221,178,215,209,223,28,126,21,106,122,23,196,63,10,252,64,248,111,108,247,90,231,130, 34,150,27,221,54,198,127,46,109,123,71,219,186,104,23,119,202,242,169,111,50,52,111,151,118,229,249,115,185,106,126,211,191,10,172,191,109,255,0,217,162,13,87,224,205,213,189,222,163,108,233,173,104,141,113,15,150,205,34,175,207,109,39,221,104,90,100, 98,140,173,247,119,125,218,252,247,31,194,244,161,66,181,26,60,223,90,140,156,226,255,0,157,94,251,109,163,236,180,118,62,219,11,196,147,157,74,21,229,203,245,118,185,101,253,217,109,235,170,253,79,137,63,224,164,222,50,187,181,253,179,53,77,115,195, 115,60,118,218,134,147,166,220,233,206,197,91,117,179,66,251,25,71,251,219,255,0,203,87,9,251,44,248,213,252,53,241,95,74,215,230,19,219,62,149,172,193,117,116,34,12,191,105,178,109,203,40,77,187,154,73,23,134,218,185,221,242,173,113,255,0,16,117,237, 99,87,214,236,108,60,127,102,214,55,158,27,179,131,65,22,166,216,219,77,109,21,179,62,196,153,88,150,18,170,187,110,63,197,242,255,0,188,221,95,128,126,17,120,135,226,119,136,180,253,55,192,240,201,35,93,74,177,197,51,78,176,70,172,172,170,173,185,155, 229,219,185,127,246,93,213,249,109,92,101,88,227,62,180,151,239,57,175,255,0,111,94,231,233,148,48,212,165,135,141,11,254,239,150,223,35,232,127,142,94,39,209,254,46,120,143,197,54,159,8,53,95,182,221,248,251,196,186,12,26,39,216,226,154,206,226,73,22, 223,109,244,210,55,252,243,242,35,242,228,86,254,37,251,181,246,215,135,116,251,79,135,22,22,22,150,13,19,65,101,107,229,203,229,197,181,119,47,250,181,85,254,31,226,106,248,67,246,61,209,117,91,159,218,251,194,90,126,185,5,180,179,105,241,106,208,234, 26,131,200,194,83,111,4,210,64,191,103,254,31,154,69,93,187,190,240,243,26,190,194,248,199,251,77,120,83,225,142,172,154,46,141,9,241,7,136,175,27,108,58,86,150,173,119,168,221,55,127,49,87,253,92,123,130,171,72,205,181,126,238,229,175,210,120,43,21, 67,11,71,21,154,226,45,26,147,159,244,146,221,159,159,241,110,26,173,121,97,178,218,28,211,140,99,255,0,1,54,246,60,3,254,10,95,117,119,115,227,255,0,10,73,169,194,176,188,218,125,196,241,67,230,249,141,26,249,144,171,47,251,63,117,89,151,255,0,137,175, 152,110,102,93,232,139,252,77,243,87,162,254,210,207,226,246,215,244,43,223,141,23,108,250,222,161,165,45,211,233,200,145,173,190,132,173,52,138,182,145,237,102,221,183,111,204,204,219,153,191,187,247,107,199,180,25,101,184,180,50,76,223,51,77,35,47, 251,187,190,90,241,115,124,83,197,98,170,86,112,181,251,158,150,87,132,142,19,13,26,49,151,55,41,165,173,234,144,105,209,174,246,221,38,239,184,171,243,124,223,118,190,144,255,0,130,39,248,214,125,23,254,10,123,240,238,242,211,253,17,116,216,53,41,131, 201,11,76,204,205,98,208,130,170,191,50,255,0,174,221,230,125,213,199,205,95,51,170,99,203,221,243,50,174,205,223,196,223,237,87,210,95,240,72,79,23,90,120,35,254,10,49,240,243,80,213,46,46,237,227,137,47,217,222,8,60,230,104,254,201,38,229,101,251,219, 89,127,137,126,235,42,255,0,14,234,249,232,41,197,167,57,30,220,92,108,227,202,126,195,248,39,254,9,215,225,45,23,70,241,66,248,217,63,225,35,215,181,59,153,245,45,91,81,241,36,16,106,18,69,53,204,251,124,203,136,118,172,119,77,39,150,177,198,203,181, 149,124,205,190,94,218,224,190,61,126,203,159,15,254,25,248,90,251,195,127,13,52,79,3,120,114,206,203,253,50,255,0,82,143,74,91,201,174,103,135,106,249,87,223,54,230,107,136,100,111,46,54,85,253,226,199,185,154,190,155,248,149,226,47,9,77,224,111,236, 191,135,30,43,182,142,231,207,211,117,102,190,189,213,55,70,176,44,141,229,205,112,205,187,229,143,203,105,35,93,203,185,149,107,204,53,223,217,239,226,79,143,124,31,175,120,139,95,209,252,23,241,70,243,71,182,189,183,211,35,188,179,221,14,185,27,121, 114,91,92,183,205,182,227,116,113,199,247,190,109,204,219,89,118,214,85,41,107,99,88,204,248,59,65,248,97,226,109,55,194,126,31,241,31,199,143,5,234,87,126,25,212,53,25,161,211,181,24,172,35,135,83,243,38,255,0,87,111,113,15,250,182,135,108,155,89,89, 182,170,174,213,242,255,0,139,210,109,126,17,217,252,36,241,238,132,254,5,187,142,223,79,208,37,58,205,246,157,162,79,246,203,77,94,43,150,85,150,91,171,121,166,88,86,11,101,251,203,185,124,200,21,188,181,121,22,58,251,135,94,248,95,241,107,226,223,195, 47,9,232,23,158,27,208,173,236,224,189,139,251,117,238,38,95,182,91,193,185,153,228,181,89,151,108,123,126,85,219,247,191,118,172,191,237,124,47,241,131,193,90,143,236,33,167,216,232,159,3,236,245,171,207,12,106,218,179,52,242,235,182,77,107,54,180,159, 55,218,109,38,86,249,154,221,161,221,11,54,221,178,121,159,43,43,87,139,142,167,28,42,149,79,178,118,82,172,228,185,79,183,111,254,44,175,237,43,117,240,168,234,62,33,135,79,212,244,91,213,251,125,182,153,109,167,71,98,203,52,75,26,69,51,95,44,179,67, 183,230,101,251,51,121,138,219,126,242,200,181,249,247,251,125,105,218,111,236,201,240,135,199,191,9,190,20,206,215,47,227,205,127,237,183,183,176,105,49,216,193,107,105,12,205,55,246,115,44,50,52,106,171,36,113,200,210,47,222,220,223,222,101,95,71,241, 151,237,61,165,120,69,116,235,13,43,194,26,77,214,129,166,234,145,204,215,122,22,189,12,214,55,19,77,10,239,182,101,184,143,206,154,209,163,86,93,209,238,253,231,205,187,229,175,143,191,107,31,139,22,159,18,60,77,121,62,149,101,35,219,107,58,175,246, 140,73,118,191,103,183,183,129,155,106,249,118,251,153,97,219,243,43,54,239,153,87,117,121,146,204,40,56,197,253,163,108,83,246,145,148,121,143,29,211,60,43,113,119,161,193,115,166,92,90,121,150,115,183,150,145,124,210,109,146,54,111,49,127,133,151,118, 213,101,254,26,236,188,45,226,13,59,94,240,174,143,164,147,101,14,167,126,241,172,250,124,203,229,218,249,159,117,124,182,254,31,153,183,124,203,88,81,73,15,140,224,154,86,178,147,74,75,11,152,218,40,238,229,146,217,175,85,126,111,221,198,191,43,55,221, 219,187,106,174,237,213,157,168,248,97,181,123,29,86,251,73,181,154,194,227,78,221,44,155,164,220,209,198,223,122,63,51,251,219,149,190,239,247,107,173,225,104,227,165,9,202,240,150,156,172,241,253,164,232,175,119,222,45,124,60,214,101,159,199,87,86, 186,140,86,159,106,178,159,201,243,97,93,191,44,123,163,219,254,210,252,191,122,190,143,211,181,61,154,73,84,102,249,109,217,155,254,249,175,151,62,26,248,130,227,196,190,56,158,247,87,127,50,225,188,181,103,254,38,255,0,106,190,147,240,244,222,116,49, 167,253,51,219,95,59,196,148,62,171,95,150,62,71,208,229,83,231,165,25,31,208,255,0,236,200,159,100,253,157,60,6,143,183,229,240,245,130,252,131,229,255,0,143,104,235,189,86,220,78,202,243,111,216,247,81,93,87,246,84,248,111,114,141,184,75,225,157,57, 179,157,223,242,237,29,122,66,38,204,237,233,93,184,89,74,48,137,85,62,38,73,94,121,251,81,248,30,215,226,55,236,235,227,141,27,84,150,8,18,255,0,65,189,132,92,205,23,152,182,172,208,63,239,118,175,205,242,253,239,151,230,244,175,64,99,184,10,198,241, 212,81,220,248,39,88,138,238,15,181,69,37,140,234,240,243,251,229,216,217,94,63,189,210,187,28,250,72,205,110,127,57,255,0,17,252,89,173,248,19,82,214,188,37,124,117,79,16,91,36,182,198,47,16,233,241,92,46,153,50,201,111,242,199,246,185,163,93,173,243, 121,139,27,109,102,218,219,119,109,221,88,127,7,190,24,218,120,23,196,58,94,167,241,59,85,212,52,251,207,23,220,90,44,77,125,109,181,100,105,36,154,105,36,182,85,255,0,89,31,147,251,205,191,43,110,221,187,109,108,254,210,255,0,181,22,143,241,55,225,244, 254,27,248,69,167,120,135,64,240,237,173,252,19,248,187,78,130,253,181,11,118,185,134,213,190,205,254,147,52,107,113,111,36,42,205,251,182,95,155,229,109,223,194,222,55,172,252,64,95,29,252,29,212,175,181,15,16,188,222,37,191,212,98,179,130,198,219,67, 102,134,13,27,106,195,44,145,180,43,182,222,79,59,119,222,93,178,124,210,51,109,86,85,195,50,168,229,55,21,41,56,253,147,206,167,104,212,254,241,232,146,124,29,248,245,241,243,227,14,155,224,159,129,250,86,155,226,15,17,62,143,101,127,167,92,232,218, 158,35,147,78,155,119,145,123,169,204,202,191,103,109,187,188,200,219,115,70,203,181,85,155,109,125,11,240,251,246,75,248,137,162,126,200,190,32,158,235,71,150,218,199,195,82,222,232,242,235,118,58,132,119,150,49,189,180,158,77,204,139,116,191,242,205, 100,89,23,204,218,170,172,173,253,221,213,137,240,155,199,154,15,236,49,240,11,196,222,37,178,210,175,117,203,111,138,246,231,193,122,141,189,217,183,131,84,240,222,211,112,201,119,45,196,44,187,163,157,97,251,68,115,109,220,190,118,230,218,203,229,215, 211,31,176,103,237,233,113,241,119,246,72,212,62,21,222,248,62,195,194,63,10,60,47,240,182,226,198,223,92,38,88,98,185,154,24,36,82,145,200,203,229,195,110,177,136,214,57,36,253,229,198,90,69,93,191,53,121,24,92,92,99,85,123,77,143,81,80,140,85,151,196, 124,6,159,177,83,222,107,90,14,176,39,212,230,189,129,54,200,109,90,59,136,239,252,182,101,139,206,184,142,77,202,205,181,99,102,218,219,149,126,111,154,186,127,130,62,17,189,185,157,116,191,137,246,214,210,93,179,121,114,237,129,163,93,219,89,150,69, 86,251,187,182,178,178,255,0,179,254,213,77,240,87,93,211,62,47,248,103,77,241,118,131,119,62,135,224,41,167,183,93,31,84,213,224,86,55,211,172,203,246,173,178,91,200,202,171,28,204,177,255,0,19,126,243,230,218,202,213,244,7,236,233,240,37,111,191,107, 175,9,120,107,226,70,187,99,175,232,218,166,171,246,89,162,178,212,102,105,33,218,211,46,214,220,171,36,45,185,149,107,234,51,60,30,3,31,131,157,120,211,247,145,231,224,113,120,154,53,213,57,75,221,103,154,235,255,0,179,14,145,121,11,75,107,15,150,223, 222,79,226,175,54,248,139,240,74,195,225,214,138,250,182,161,169,253,130,37,120,225,141,165,101,93,210,72,219,99,141,89,191,137,154,191,106,60,95,255,0,4,168,240,86,181,110,191,240,135,234,250,222,138,253,150,70,91,168,255,0,241,237,173,255,0,143,87, 197,191,240,82,143,248,39,76,223,2,190,8,255,0,194,75,227,125,106,211,85,208,45,53,40,45,202,218,90,143,180,43,75,186,52,45,28,159,43,47,205,253,237,213,242,145,225,156,46,50,164,32,233,242,220,247,163,155,87,195,193,203,154,246,63,59,126,30,126,213, 186,165,174,175,46,159,225,15,16,235,118,119,86,237,34,180,23,43,34,255,0,171,111,155,229,111,238,215,183,120,127,246,167,248,139,163,90,197,38,165,105,101,172,219,50,238,89,12,27,188,197,255,0,121,118,214,79,137,255,0,103,31,14,248,131,194,242,93,219, 44,26,69,239,138,45,158,75,123,201,109,164,183,151,81,138,210,69,243,89,166,141,155,230,109,177,179,124,171,247,85,126,101,174,135,246,118,208,167,211,52,235,237,51,83,154,214,233,109,89,89,164,89,21,163,102,249,149,182,183,251,91,85,191,222,102,167, 153,112,141,76,178,17,171,133,173,37,23,230,202,195,103,177,174,229,10,148,211,145,183,166,126,221,54,141,0,139,199,94,15,100,111,226,251,60,223,251,44,139,93,70,145,251,87,124,45,241,40,9,171,125,171,77,127,238,221,89,179,70,191,240,37,220,180,221,87, 225,149,134,173,30,255,0,178,194,223,248,245,114,218,135,236,213,164,106,106,237,246,65,27,255,0,121,126,90,242,99,71,54,195,191,118,164,103,254,37,254,86,59,22,39,7,63,138,50,137,212,207,240,219,225,31,197,221,78,222,251,68,62,17,190,213,173,55,53,181, 210,121,43,123,111,187,239,121,108,187,100,143,119,241,109,163,64,253,152,91,192,154,135,218,254,26,120,151,196,250,4,235,242,164,150,23,251,191,239,165,147,119,153,255,0,2,221,94,121,225,79,217,182,215,195,190,58,210,47,238,166,102,182,179,188,142,105, 210,68,243,23,203,86,249,191,241,218,250,18,47,22,55,140,46,38,180,209,237,230,211,244,171,93,187,94,52,219,37,198,239,246,151,253,95,251,191,123,230,175,166,225,156,6,105,196,24,143,171,42,86,151,243,116,249,156,57,174,109,134,201,168,125,97,215,110, 43,239,56,173,43,80,241,167,131,188,77,34,248,255,0,198,114,248,159,195,86,86,119,19,106,146,234,22,48,219,205,167,180,107,230,43,121,144,174,214,111,225,104,255,0,133,126,111,247,191,49,190,19,234,58,119,252,45,253,94,227,83,50,73,166,73,122,178,62, 216,247,50,219,53,194,180,187,87,251,222,79,221,95,253,6,191,65,191,109,143,25,222,218,254,206,158,40,209,126,26,207,107,99,168,92,90,52,108,242,15,50,56,172,190,245,222,223,47,115,121,141,111,230,121,109,253,234,252,209,209,188,51,116,158,46,183,178, 134,226,56,238,36,159,236,82,54,253,177,255,0,169,86,93,223,236,215,219,241,198,26,158,77,133,161,151,251,89,78,74,238,82,243,211,69,233,99,229,178,12,93,92,226,173,92,125,72,242,94,202,49,242,93,89,251,241,255,0,4,73,215,60,13,225,255,0,0,160,248,101, 126,44,46,60,91,29,221,237,134,145,169,95,71,37,227,195,5,229,220,105,36,113,174,214,219,34,254,243,203,249,182,255,0,121,190,245,122,47,252,20,27,89,255,0,133,157,251,58,107,58,156,54,145,255,0,104,248,115,203,190,95,54,86,141,87,49,193,43,55,251,59, 86,102,255,0,190,107,241,135,254,9,157,241,146,243,246,86,253,179,188,23,226,93,46,218,206,230,246,235,86,131,78,190,105,155,108,49,195,113,52,54,243,205,35,121,108,223,187,135,115,43,124,191,42,253,229,93,205,95,170,191,29,126,48,5,253,161,124,107,240, 202,41,214,121,245,29,39,87,48,198,143,242,198,173,101,230,65,255,0,2,253,222,239,246,182,215,225,49,199,44,151,48,195,202,53,62,220,95,228,143,208,233,224,255,0,180,104,213,230,143,216,103,202,254,14,212,36,214,54,54,155,28,205,125,173,93,51,75,44,204, 202,214,177,249,123,127,139,238,252,191,42,175,203,247,183,109,174,195,75,209,26,15,26,155,107,130,172,191,103,251,85,176,86,220,171,230,78,219,149,191,239,165,255,0,128,215,31,225,11,200,100,211,63,181,52,216,230,184,107,53,149,93,101,109,173,12,107, 242,201,36,140,219,191,125,243,127,15,247,153,168,214,252,101,52,158,9,91,205,94,238,72,226,85,157,101,91,57,153,102,188,242,127,119,229,195,254,244,141,252,95,121,191,217,90,254,201,193,227,161,28,27,175,89,237,242,219,123,236,127,63,226,176,85,62,183, 26,52,255,0,253,174,199,128,124,5,253,164,188,91,175,120,203,226,149,239,196,167,177,189,123,77,86,75,45,34,198,222,198,69,142,238,75,118,146,27,105,163,145,190,86,88,215,107,51,54,230,251,191,236,212,126,26,240,85,205,140,194,235,92,158,24,230,251,249, 117,89,27,119,247,182,253,221,213,211,90,89,221,92,78,82,210,6,181,143,111,50,55,203,90,122,126,139,30,156,251,193,105,165,255,0,158,141,247,141,126,121,155,120,159,131,200,169,74,140,43,243,202,77,190,88,235,191,75,236,151,227,228,116,210,240,231,49, 226,220,76,107,214,161,236,105,199,221,215,79,251,122,219,183,248,121,157,103,195,143,140,95,26,254,26,232,82,92,124,4,241,95,139,116,173,2,217,219,205,69,153,214,205,101,219,186,70,249,151,203,86,249,183,50,253,239,226,174,235,66,255,0,130,188,254,208, 218,53,179,105,250,206,169,225,239,21,91,60,64,75,111,168,105,240,93,121,200,223,41,86,242,252,182,101,106,250,163,254,8,195,226,7,155,193,158,59,208,110,25,10,91,223,218,234,66,39,27,149,86,104,90,35,255,0,143,65,95,83,120,251,224,127,128,60,103,42, 47,143,60,47,225,141,85,174,153,163,79,181,105,241,60,146,54,214,44,170,219,119,125,213,102,175,205,232,248,187,133,168,156,177,121,125,253,239,137,78,207,241,78,255,0,129,244,56,175,12,113,120,74,158,207,7,152,202,54,251,54,247,127,6,173,248,159,141, 62,32,253,178,47,245,237,126,207,251,87,193,105,160,70,110,163,11,21,132,178,44,127,123,253,92,107,54,237,187,155,238,174,230,254,237,125,9,10,45,215,136,127,210,97,242,90,27,56,230,104,25,183,121,108,210,55,222,254,31,221,237,219,95,87,124,95,255,0, 130,109,252,52,63,13,124,85,113,240,155,64,143,195,90,212,250,45,221,189,172,246,83,73,228,198,236,187,183,121,44,204,187,183,42,252,203,243,47,240,215,198,254,21,190,190,139,195,215,186,174,189,107,111,167,39,239,62,212,237,121,186,59,47,35,229,101, 86,145,85,154,53,111,57,183,55,254,61,95,188,120,121,198,180,56,162,51,169,135,140,249,99,101,203,43,62,239,167,163,62,15,61,225,92,102,74,163,245,170,145,151,53,254,31,119,183,249,152,127,25,252,47,105,241,183,195,215,126,17,212,22,75,157,55,198,118, 242,105,215,81,179,237,251,60,11,31,239,230,93,173,185,126,89,21,127,235,163,71,252,53,240,31,237,85,251,47,248,103,246,38,253,170,254,21,201,224,155,121,175,52,203,171,40,110,153,245,38,23,45,45,229,181,210,198,243,201,149,85,243,27,237,16,179,109,85, 93,203,242,170,215,219,223,7,60,107,170,107,16,15,18,106,154,22,163,255,0,19,191,155,79,159,202,219,13,173,131,72,205,18,254,242,69,111,223,127,174,111,151,118,233,21,126,236,107,95,56,255,0,193,103,33,189,213,60,39,224,93,105,244,247,141,180,61,74,238, 205,174,182,170,178,249,208,137,60,157,187,153,190,244,42,223,221,249,86,190,143,136,176,212,51,44,5,90,181,99,239,219,221,242,52,200,49,21,176,88,202,116,41,203,247,122,253,231,222,90,191,131,252,43,162,235,144,120,211,192,218,38,147,165,222,120,243, 78,131,80,213,165,178,183,88,228,190,157,81,98,103,147,111,222,219,229,170,255,0,192,191,218,171,58,117,202,106,16,36,214,103,204,70,174,55,246,126,248,131,111,241,23,246,60,240,54,179,48,89,34,209,161,242,75,109,220,190,92,144,238,221,255,0,1,242,219, 239,127,122,182,15,139,97,209,244,205,41,237,90,73,161,107,117,105,26,47,155,201,86,85,219,36,159,221,90,232,224,44,92,39,148,67,203,71,242,208,243,184,191,11,39,153,57,127,54,166,159,246,210,127,106,220,219,130,237,246,120,150,70,43,247,127,139,229, 221,255,0,1,106,213,138,15,62,52,116,229,92,111,175,61,240,62,189,22,183,105,254,174,56,228,213,239,228,146,233,90,61,187,149,91,229,219,255,0,108,214,63,155,253,166,254,42,239,215,91,182,123,155,120,227,145,100,91,165,102,141,215,230,86,255,0,101,107, 237,105,87,85,15,149,173,135,246,114,229,44,53,170,167,205,138,54,119,254,42,151,63,54,218,82,190,91,28,237,173,142,97,159,113,127,218,254,245,40,237,79,216,175,74,19,214,130,185,72,151,244,167,175,207,83,121,63,119,138,114,66,115,85,204,72,197,81,159, 158,157,179,171,61,63,96,223,247,168,216,106,64,128,39,31,119,239,83,215,211,183,247,85,106,85,65,158,148,229,65,181,104,3,240,79,224,191,196,29,55,246,118,186,151,196,214,182,182,58,157,238,169,101,117,105,228,43,195,28,118,19,73,181,99,155,200,219, 251,207,151,204,102,93,223,197,242,215,138,235,127,18,53,27,173,66,226,238,211,80,189,137,174,228,220,217,185,105,230,145,191,188,210,55,204,205,254,211,124,205,186,175,221,120,109,117,143,0,205,127,121,40,138,230,107,229,242,89,17,161,133,89,151,231, 111,187,181,182,199,242,172,123,191,187,252,53,153,173,248,87,72,107,165,131,66,251,117,197,213,172,16,65,147,19,70,207,113,187,231,44,167,239,121,139,187,106,175,221,249,126,245,127,29,66,82,80,141,57,202,246,63,166,99,8,191,120,245,63,135,31,180,22, 175,224,141,26,237,53,29,81,53,75,197,182,104,87,237,210,180,147,109,147,230,101,89,36,102,109,205,181,91,239,109,249,107,158,241,87,197,153,96,211,244,52,215,226,213,34,251,58,238,129,161,104,252,248,230,111,188,210,180,139,243,55,221,101,251,191,122, 176,245,107,123,63,5,93,218,68,243,233,183,179,205,36,139,52,70,77,205,106,173,181,155,204,86,255,0,86,220,42,171,183,204,223,121,126,90,229,124,75,227,43,166,154,119,182,36,155,134,104,240,23,112,79,155,119,251,75,242,255,0,192,170,125,249,74,49,145, 119,148,78,243,80,241,186,95,104,176,75,164,95,68,150,150,59,173,82,210,114,194,230,202,53,86,101,146,70,254,40,217,182,171,72,219,183,51,109,219,89,90,15,135,188,77,241,3,77,186,158,202,246,121,101,177,50,75,231,91,74,204,167,229,221,38,214,249,118, 252,191,250,5,114,163,86,191,147,81,104,53,136,26,43,123,150,218,208,198,203,18,252,171,252,63,194,181,233,159,179,133,149,214,171,175,182,161,117,119,13,222,157,225,168,255,0,181,14,159,126,235,28,87,91,118,175,151,30,239,221,180,141,242,237,254,47, 226,95,153,107,170,132,45,46,94,230,117,106,123,167,215,223,176,151,128,60,67,170,254,207,242,233,250,101,148,122,68,218,70,173,230,149,213,173,100,81,54,232,21,151,110,214,218,177,172,109,30,221,203,242,237,109,202,219,183,87,183,197,103,226,173,39, 75,132,248,98,226,206,118,142,105,36,212,117,57,226,145,161,146,209,81,191,209,151,247,158,90,205,186,67,34,201,26,249,108,170,202,204,187,149,151,75,224,95,139,52,255,0,137,26,94,155,14,155,164,201,5,220,155,175,167,210,175,22,105,33,181,242,254,89, 46,21,153,191,120,173,242,249,127,121,155,118,239,151,230,175,75,191,213,236,116,99,44,218,94,163,103,120,150,145,47,218,75,220,194,178,70,172,223,44,140,172,219,150,63,254,42,191,99,195,229,56,90,212,104,202,149,126,91,70,210,105,183,175,225,111,67, 224,113,25,158,39,15,86,164,103,71,154,242,247,98,210,255,0,131,115,200,53,59,83,174,120,231,70,93,43,89,211,91,79,105,214,72,154,54,154,223,115,71,27,124,211,44,59,149,87,116,159,196,223,50,252,181,212,248,91,224,252,210,219,236,241,44,54,90,135,152, 211,70,172,206,172,187,90,77,204,209,175,241,51,110,254,38,109,191,250,23,162,13,37,53,40,35,123,56,172,228,134,219,230,10,142,172,171,187,239,43,109,249,87,253,218,171,170,89,90,91,90,93,67,8,242,165,184,69,220,168,204,172,204,223,47,203,183,230,254, 21,95,238,252,213,233,174,25,165,134,189,106,85,121,239,175,244,207,63,253,99,171,85,251,26,148,185,44,80,139,65,123,33,111,246,203,105,124,187,88,182,193,20,83,254,238,57,63,233,167,247,119,46,223,226,111,186,213,190,168,222,99,238,88,246,43,109,76, 127,18,255,0,122,179,160,154,201,109,204,22,78,215,175,247,155,111,239,60,150,251,191,54,223,253,7,253,150,173,104,131,121,99,204,60,170,237,127,247,191,224,53,250,6,83,110,91,175,235,200,248,76,230,77,255,0,95,136,208,159,55,52,121,126,213,40,79,90, 95,44,123,215,174,124,226,49,228,142,226,235,82,73,190,193,229,203,12,141,251,221,255,0,51,46,223,243,247,171,231,63,139,254,22,241,31,236,163,227,31,16,120,255,0,225,46,129,121,171,120,43,87,97,168,120,147,65,211,246,219,203,167,206,171,255,0,31,246, 42,178,109,109,219,153,166,143,238,179,124,223,222,199,212,201,14,27,230,160,70,118,179,13,173,179,253,154,242,115,76,170,24,248,36,165,203,82,58,198,93,159,245,186,61,172,183,52,158,2,119,81,230,140,180,148,123,163,241,247,246,240,248,137,167,124,95, 253,168,47,181,239,6,77,246,205,46,247,71,210,254,207,118,209,170,201,112,191,103,220,210,73,255,0,77,63,121,243,86,175,195,77,126,95,130,118,26,119,137,239,228,189,134,56,239,227,153,224,138,201,124,205,71,201,85,111,179,174,237,177,170,238,218,223, 237,124,219,171,159,253,179,188,37,166,252,57,253,175,254,33,233,254,19,182,251,5,165,166,186,242,67,10,253,216,188,216,162,157,246,255,0,117,119,205,35,47,247,85,182,253,218,244,191,31,252,48,241,55,196,207,217,243,76,123,79,182,54,141,225,219,43,182, 134,102,79,34,222,202,230,102,141,183,77,39,247,127,139,251,202,191,239,87,242,214,113,94,165,44,109,74,181,37,239,243,203,252,55,185,253,43,148,211,132,240,80,141,56,251,188,177,255,0,192,108,116,255,0,177,79,194,59,255,0,218,83,85,241,70,189,39,136, 245,13,2,206,226,212,104,75,119,167,204,147,79,119,12,109,230,63,146,179,71,182,53,105,36,145,89,155,238,231,229,85,175,180,62,8,254,207,62,26,248,47,98,207,224,237,42,61,50,242,253,86,59,155,143,61,174,174,53,13,191,119,204,184,147,116,141,185,153,171, 19,246,72,248,47,167,124,10,248,3,164,105,94,27,183,55,86,144,92,75,115,45,203,182,100,191,103,220,198,79,153,126,235,125,237,181,232,87,190,52,131,203,154,73,94,75,119,133,151,253,108,13,185,190,101,249,153,87,248,118,238,109,213,251,23,13,97,50,252, 167,47,165,94,113,143,60,215,53,250,234,126,91,159,214,199,230,56,218,148,41,75,247,113,151,47,47,234,124,21,255,0,5,45,189,51,254,211,243,90,97,214,61,59,67,178,140,71,35,110,218,204,211,51,127,192,126,101,255,0,199,171,231,113,26,199,26,132,93,171, 252,63,45,123,95,237,231,226,52,241,47,237,85,226,123,136,90,54,142,216,91,89,70,200,223,46,216,225,86,255,0,208,165,106,241,105,6,207,153,235,226,179,58,209,175,136,157,78,237,159,81,150,209,149,10,16,167,47,178,134,200,224,130,119,102,189,83,246,19, 209,165,215,191,106,29,62,200,233,218,174,169,5,254,157,123,167,207,109,167,67,231,94,77,4,171,31,158,176,174,229,249,188,184,219,230,254,31,246,183,87,146,93,205,177,64,63,122,190,165,255,0,130,49,120,74,95,27,255,0,193,69,188,21,97,105,109,97,113,115, 29,134,163,117,109,29,231,250,137,166,16,170,170,55,204,187,89,188,207,189,247,190,86,219,94,69,88,243,190,88,158,157,61,249,143,210,15,131,31,178,197,181,247,193,141,71,85,191,183,214,161,190,177,251,37,140,22,186,189,139,106,22,255,0,96,243,55,79,230, 90,198,202,179,51,71,185,85,183,46,214,93,191,117,118,215,211,94,27,241,109,239,193,77,22,226,255,0,194,126,46,240,255,0,134,244,123,168,21,174,237,96,210,126,203,13,156,127,42,197,246,127,245,138,190,90,179,127,172,221,242,255,0,119,109,123,239,192, 191,130,154,71,236,241,111,55,134,254,31,104,144,233,122,74,195,4,219,214,254,107,198,154,86,93,178,175,239,55,54,213,101,249,126,111,226,173,207,22,232,154,77,253,147,166,187,161,217,220,109,254,39,183,143,255,0,66,169,167,74,229,74,161,242,207,237, 29,255,0,5,10,241,143,195,189,31,81,212,63,102,63,6,217,248,222,245,101,131,237,114,221,92,170,90,237,131,114,207,185,190,93,219,162,242,246,178,174,229,102,111,149,182,215,206,127,180,55,136,126,32,254,218,30,2,215,124,79,225,175,5,232,122,107,124,59, 86,188,154,204,106,170,205,13,165,197,187,108,104,102,218,202,209,182,221,204,202,219,191,217,254,26,250,63,226,47,236,175,240,235,81,241,4,58,111,196,159,19,249,218,166,180,207,121,163,37,235,44,59,100,183,102,101,102,251,170,219,124,207,187,181,126, 85,175,152,60,125,251,43,120,138,15,21,220,120,11,246,96,241,232,182,240,45,197,218,89,235,151,147,196,203,123,113,171,124,179,68,222,92,43,255,0,30,173,251,197,220,191,119,107,54,221,171,186,188,172,102,30,164,249,148,190,31,145,213,135,168,190,201, 225,31,23,255,0,102,191,2,124,19,240,125,173,181,245,190,177,171,107,250,63,132,224,58,175,140,174,82,59,120,109,53,27,169,35,91,75,88,217,190,86,186,155,206,111,150,53,218,202,187,190,95,151,119,202,90,39,141,172,109,228,91,15,136,22,211,178,52,173, 228,188,204,178,73,35,47,204,191,188,95,149,126,111,225,255,0,128,183,221,175,85,253,191,127,104,95,19,107,126,40,183,240,55,137,181,169,75,248,30,127,179,222,88,220,78,210,125,167,83,220,202,219,91,115,43,121,48,170,174,239,187,182,70,95,225,175,37, 211,188,123,52,218,222,153,108,154,36,51,92,106,114,52,151,50,110,86,251,90,180,108,171,36,139,31,205,28,159,119,230,254,45,171,252,95,53,124,254,35,1,74,126,236,186,124,141,101,86,51,143,186,107,222,248,140,222,105,98,251,195,243,216,121,86,223,185, 158,218,91,73,60,232,213,119,47,203,39,240,252,171,247,119,124,191,46,237,219,171,131,241,151,138,32,211,173,174,227,240,167,153,2,106,177,171,93,170,200,205,28,109,187,115,71,31,253,51,102,249,171,174,241,190,178,250,117,133,186,92,173,180,50,216,89, 198,182,209,69,100,209,198,222,99,50,201,36,139,255,0,61,54,174,237,205,187,230,106,242,157,127,82,71,12,187,190,103,251,171,94,254,65,149,208,113,246,242,95,15,194,120,216,202,242,82,246,113,54,126,13,223,121,30,45,159,203,111,225,95,187,255,0,2,175, 164,252,47,168,23,179,133,254,231,221,205,124,169,240,102,245,97,241,21,209,73,63,231,159,254,205,95,80,120,62,229,110,180,136,137,111,150,29,191,240,38,175,138,227,58,159,237,114,229,62,199,33,143,238,35,204,126,246,127,193,47,188,126,117,255,0,216, 55,225,100,146,195,48,251,63,135,225,181,103,251,219,154,28,196,223,248,242,125,218,250,18,15,19,91,188,14,241,63,152,209,134,37,20,124,255,0,47,109,181,242,183,252,17,118,236,234,31,240,79,159,6,139,145,184,67,119,170,66,188,127,10,223,220,87,189,124, 119,248,185,162,124,7,248,123,39,137,124,122,160,104,246,183,54,240,221,206,122,90,199,44,203,23,154,223,236,174,253,205,94,30,91,136,175,70,143,180,115,247,78,204,69,56,74,175,44,98,113,186,63,252,20,99,224,253,245,182,159,54,171,227,45,55,69,254,213, 212,219,67,133,117,54,251,27,127,105,44,171,23,216,25,100,251,183,37,221,118,195,247,155,63,46,107,193,127,224,174,127,181,95,141,62,26,248,23,82,95,217,179,88,187,209,124,95,224,203,205,58,120,173,225,81,113,38,188,47,12,145,24,150,223,107,110,142,53, 249,139,127,123,251,170,172,213,131,251,123,252,36,241,110,161,226,221,75,197,95,240,74,173,35,193,183,127,17,134,189,97,103,227,121,3,91,76,219,247,90,203,27,92,90,204,190,92,140,182,242,44,141,39,153,28,139,31,150,203,187,229,175,154,151,254,10,239, 119,225,207,218,247,226,15,129,127,106,150,211,60,101,225,187,200,34,211,70,157,162,220,218,92,125,150,238,29,223,109,120,102,221,186,70,141,97,102,88,126,111,46,79,51,107,124,202,170,235,99,241,88,152,58,107,89,47,229,254,191,173,138,84,40,211,229,147, 234,124,51,241,235,246,152,248,131,241,26,243,79,159,226,219,217,234,218,246,135,114,182,162,31,18,105,208,223,70,236,208,201,229,216,222,91,182,223,180,67,251,201,60,207,51,118,230,219,181,190,90,243,45,35,76,151,224,205,165,159,137,36,130,233,46,162, 177,18,207,109,52,202,137,34,220,171,51,71,110,201,242,253,158,57,36,109,170,223,234,225,88,215,230,175,65,241,39,195,27,47,137,227,196,158,46,240,166,179,226,93,51,68,134,206,223,91,119,241,45,180,55,243,94,249,119,50,44,113,199,36,50,46,213,143,247, 106,210,72,172,202,210,55,202,202,203,94,63,226,136,60,85,165,248,135,76,183,212,238,108,151,206,180,147,81,182,158,230,210,75,107,73,45,86,73,21,118,171,46,214,242,228,142,79,246,85,190,95,189,94,196,221,78,94,90,139,221,243,220,249,249,243,66,71,210, 223,10,60,104,250,183,237,37,224,189,127,226,158,167,13,237,174,179,172,219,73,171,75,107,101,253,157,125,103,4,126,94,233,227,243,149,161,88,252,198,243,55,109,253,226,194,209,249,127,51,53,122,191,237,109,251,93,120,66,215,246,248,248,159,23,132,34, 213,188,69,225,139,171,223,15,233,250,3,120,83,80,142,24,245,57,173,161,221,35,219,195,111,27,71,36,146,51,71,230,50,198,203,28,54,172,219,87,204,221,95,46,233,159,180,198,165,164,120,75,91,188,241,77,142,172,124,53,226,107,36,214,181,27,189,30,218,202, 226,255,0,85,134,23,93,183,49,173,226,180,49,172,108,190,91,110,93,205,10,170,174,214,145,90,174,252,31,248,151,160,126,207,218,188,94,55,248,79,163,106,58,150,129,111,99,41,210,197,252,107,97,46,131,171,93,194,241,207,115,63,217,219,230,185,146,220, 5,221,111,182,21,89,164,249,155,106,181,121,234,143,39,239,36,142,184,215,247,121,123,157,159,194,191,139,247,23,94,63,212,117,31,140,176,120,91,226,119,133,188,35,168,46,161,110,151,186,12,159,101,210,39,133,99,153,87,79,183,183,242,255,0,211,36,93, 223,52,42,205,247,190,245,125,237,31,139,124,61,123,251,106,120,115,95,240,159,135,245,15,14,188,158,35,91,201,254,209,125,36,158,98,201,115,4,155,188,153,23,247,45,251,205,219,85,153,126,106,252,160,248,89,225,200,60,107,240,234,242,238,231,198,122, 135,130,244,125,30,100,140,88,92,105,211,92,94,223,172,203,182,123,216,117,53,147,108,43,181,94,21,243,35,102,219,30,213,255,0,89,186,189,163,71,253,176,252,77,241,14,231,192,250,79,134,188,69,167,232,158,7,240,119,139,237,46,26,107,237,85,166,189,101, 133,109,230,158,225,99,101,249,173,228,93,214,234,203,242,249,223,46,223,151,117,125,7,215,61,150,14,180,38,247,139,57,105,57,70,164,37,46,231,244,203,20,197,226,60,16,84,227,154,241,127,248,40,23,133,53,31,23,254,202,30,37,181,240,158,143,166,107,250, 148,70,222,226,11,13,70,210,222,234,222,227,108,241,238,86,142,225,150,63,187,187,248,151,218,189,119,75,214,237,181,45,18,11,251,103,6,214,120,86,225,28,241,242,50,238,220,127,10,243,79,219,31,75,209,126,35,126,204,158,62,240,247,137,111,89,32,212,60, 59,119,60,137,104,35,154,231,200,88,201,50,71,11,29,178,125,223,226,249,106,240,181,227,25,83,110,93,142,217,69,234,124,75,240,119,224,70,189,169,248,67,225,106,107,31,11,188,45,171,105,146,52,255,0,218,48,61,131,71,54,141,29,221,132,49,183,217,228,105, 183,42,249,241,204,178,44,126,98,238,254,31,149,107,79,254,9,31,225,141,43,72,248,255,0,227,189,18,127,10,106,30,28,138,255,0,68,180,186,147,70,214,153,174,166,183,149,36,253,226,238,154,52,102,93,211,252,187,151,119,222,249,154,188,175,225,239,131,252, 53,255,0,9,31,192,244,240,71,197,86,181,209,117,27,127,178,255,0,100,234,54,119,250,127,246,180,145,220,220,219,172,159,185,105,33,89,22,73,161,85,86,111,189,26,178,215,121,255,0,4,182,62,33,240,119,237,89,167,105,127,17,188,83,105,226,251,246,240,228, 182,31,109,183,214,219,87,85,17,179,51,47,156,223,55,222,133,155,107,109,111,154,189,236,242,14,24,53,205,209,174,235,237,51,147,9,63,105,87,78,222,79,162,62,248,241,119,236,171,240,231,199,109,187,196,158,13,208,165,147,110,60,200,173,86,222,79,251, 234,61,173,94,93,227,95,248,37,247,128,124,64,25,188,49,119,174,104,110,195,238,199,58,220,71,255,0,124,200,172,223,248,245,125,37,27,0,131,38,156,91,222,188,56,194,14,60,214,59,57,153,240,159,136,191,224,145,154,180,98,119,240,183,139,116,203,151,251, 209,71,117,100,240,249,159,239,50,179,109,255,0,190,107,229,95,18,217,167,195,189,82,255,0,75,188,154,24,117,61,54,242,238,59,237,172,177,253,162,104,229,104,89,97,221,247,126,239,221,254,239,205,247,171,246,69,229,10,51,95,144,31,183,76,150,254,1,253, 180,60,91,5,236,183,159,107,183,215,154,234,198,8,160,243,55,71,119,111,12,210,76,223,195,26,174,233,21,89,182,253,214,249,171,235,120,47,27,28,22,34,173,165,210,255,0,115,255,0,135,60,14,32,194,125,114,130,208,249,75,254,10,79,241,9,124,47,240,180,91, 56,182,181,26,142,216,237,89,103,219,113,39,239,62,111,151,248,163,242,213,191,188,191,53,126,122,104,62,36,143,195,26,194,77,122,237,115,246,159,50,120,214,63,188,178,55,203,252,95,238,255,0,227,213,246,31,252,21,11,194,218,102,191,165,105,90,182,233, 33,212,35,190,254,206,182,85,127,51,237,30,98,180,146,255,0,186,171,229,174,221,191,123,119,251,85,242,47,197,47,4,65,100,52,248,244,245,101,138,27,104,255,0,139,230,243,27,255,0,138,221,95,61,198,248,202,152,204,197,170,146,188,121,108,123,252,53,133, 165,67,5,8,198,54,147,62,139,253,136,126,35,105,127,6,191,104,255,0,11,120,199,198,58,52,58,134,149,105,117,231,71,37,181,230,233,160,186,95,185,54,230,218,173,183,230,86,89,55,46,217,27,229,106,253,57,248,135,160,233,31,13,191,106,197,248,179,5,158, 177,172,232,159,19,44,224,190,210,238,108,98,251,67,104,143,28,11,4,246,204,177,171,110,142,53,147,206,249,191,134,73,63,134,58,252,151,248,87,240,35,196,122,39,195,36,241,69,149,164,218,174,155,99,27,73,169,91,71,27,53,204,48,180,140,176,204,176,237, 220,203,181,89,155,248,182,255,0,119,107,87,233,143,252,18,251,246,144,177,240,191,195,21,240,133,167,141,252,27,226,157,87,75,137,188,75,160,92,104,183,146,106,54,241,148,220,210,192,210,42,175,239,188,143,59,116,59,85,191,133,119,87,224,92,101,146, 227,41,56,215,171,25,70,13,199,150,93,215,54,150,243,254,153,250,46,73,143,161,14,101,75,150,95,20,101,19,128,208,231,255,0,132,30,66,254,86,235,75,155,207,38,11,155,101,107,136,99,88,246,195,45,251,51,124,177,237,251,222,99,110,143,230,90,139,198,86, 183,122,253,189,253,220,210,89,182,155,164,220,199,14,159,20,17,237,219,187,114,201,39,153,255,0,45,55,50,170,238,249,119,109,102,251,172,181,219,252,101,180,210,190,29,252,99,241,206,159,225,8,150,45,30,27,215,107,75,91,54,219,98,246,211,110,154,37, 88,255,0,229,225,102,251,83,55,222,219,182,69,93,223,187,175,53,240,205,206,161,123,225,203,189,3,85,19,105,147,104,154,116,44,186,107,218,51,65,37,188,59,182,181,172,202,222,90,237,220,190,100,127,195,181,126,85,86,220,223,213,89,141,85,152,112,212, 232,71,153,251,74,87,249,242,223,203,175,244,207,198,114,218,111,11,158,194,187,229,86,157,190,87,183,159,67,61,81,4,104,200,55,29,187,182,215,148,120,103,227,116,218,183,237,53,169,120,34,254,214,107,57,32,211,127,180,227,13,243,110,85,104,213,151,119, 253,180,86,175,89,211,163,105,98,42,115,242,238,221,94,3,227,141,10,239,73,255,0,130,131,248,55,84,210,45,30,230,45,83,67,187,181,189,145,10,170,195,24,85,111,49,183,125,239,154,56,215,229,254,245,127,44,101,84,169,226,157,72,207,249,101,203,254,40,234, 126,239,140,168,233,70,50,143,243,35,244,207,254,9,19,226,209,164,124,126,214,116,178,251,83,91,208,223,106,255,0,121,160,153,93,127,241,217,36,175,76,255,0,130,201,15,19,124,51,248,25,160,120,247,224,207,137,60,65,225,251,253,23,197,186,76,122,128,180, 190,127,38,230,218,73,30,221,85,161,109,209,171,44,211,197,38,237,191,54,221,173,185,126,90,249,167,254,9,249,226,150,240,151,237,97,224,105,27,132,189,187,147,79,115,254,204,176,200,191,250,22,218,251,179,254,10,83,240,235,80,248,151,251,8,252,77,211, 252,31,107,246,237,105,52,73,47,172,33,216,204,210,92,219,50,207,26,170,170,179,110,221,31,240,173,121,120,120,251,106,174,18,235,250,232,121,120,181,236,113,145,151,123,30,187,225,249,227,215,124,47,101,52,83,73,113,21,213,162,49,121,74,238,153,89,7, 204,219,118,174,230,221,95,151,159,19,180,139,29,50,226,207,193,110,141,246,159,17,248,162,250,59,251,85,218,210,125,154,222,245,154,229,166,85,251,177,178,173,188,109,255,0,95,17,175,241,87,232,103,236,143,226,153,124,95,251,48,248,39,81,190,142,72, 103,125,34,8,229,89,145,163,145,93,23,110,214,86,249,191,134,190,33,248,157,240,112,193,251,111,124,99,215,124,65,111,117,106,211,235,182,95,217,173,20,172,177,220,219,174,153,107,39,152,223,238,205,113,114,187,126,239,241,125,234,253,203,232,237,155, 78,158,101,87,7,205,252,72,47,194,235,245,63,43,241,47,3,25,96,29,103,255,0,46,228,96,120,242,11,209,36,87,22,22,50,73,5,172,241,205,42,38,214,243,35,86,220,202,170,191,252,77,124,221,255,0,5,71,211,160,241,7,236,171,226,19,165,121,76,186,82,89,234,240, 76,84,179,51,67,42,201,44,95,240,43,127,189,185,126,235,87,215,122,132,176,233,242,164,147,50,167,204,177,143,155,239,110,111,254,43,109,120,247,237,117,240,239,77,241,111,193,159,22,233,154,200,140,233,250,238,159,113,108,178,197,23,153,53,148,237,27, 47,221,221,254,165,191,139,251,191,238,183,203,253,135,153,225,227,90,133,88,197,239,19,240,188,154,188,169,226,105,78,81,251,71,152,255,0,193,33,190,32,175,139,255,0,98,239,17,232,23,247,141,15,252,35,101,132,155,25,188,207,46,31,155,255,0,30,86,174, 163,92,248,149,115,224,221,50,75,73,150,75,137,167,145,109,102,88,145,89,110,27,201,220,155,163,111,153,85,163,109,205,253,221,173,181,171,228,255,0,248,33,175,198,57,124,47,241,111,89,208,53,212,242,173,117,171,101,121,87,10,202,36,146,61,174,173,253, 237,181,244,167,196,139,105,188,61,241,43,85,182,141,87,16,192,215,54,229,215,239,71,39,203,230,70,223,46,230,95,46,101,254,29,219,190,95,189,95,146,112,206,54,166,14,149,122,80,248,148,147,255,0,192,180,253,15,210,115,172,20,49,53,41,206,167,242,191, 195,254,28,233,124,53,227,136,126,28,248,102,230,210,120,100,190,177,179,111,244,88,157,90,59,139,166,89,155,106,201,252,59,85,190,101,141,127,222,109,219,171,187,240,135,143,254,193,163,104,235,112,215,16,193,231,172,48,71,229,42,172,139,183,230,147, 253,152,247,55,222,254,47,248,21,121,31,133,124,53,103,15,134,247,120,250,127,179,165,157,180,115,37,154,94,45,197,196,147,174,213,251,69,195,124,170,191,55,203,229,255,0,192,183,55,203,88,94,43,248,136,154,124,186,133,187,223,52,151,122,131,109,75,107, 93,222,78,157,31,157,181,99,145,155,238,195,185,90,77,205,243,124,191,42,252,181,247,52,243,106,152,120,42,141,252,143,144,150,83,12,76,165,31,196,250,159,254,22,94,159,115,20,141,103,52,114,109,109,168,191,117,190,235,127,241,59,191,221,172,77,79,226, 103,246,253,132,18,120,110,242,59,115,231,197,110,242,227,253,173,210,237,95,226,218,171,255,0,143,87,137,124,55,215,91,197,30,25,154,105,175,225,146,197,165,137,90,230,127,249,120,142,73,149,99,104,85,190,102,249,126,243,127,117,182,252,205,90,80,107, 23,30,38,241,156,215,150,119,50,220,13,55,206,183,137,215,106,255,0,104,73,38,214,220,203,247,86,63,153,87,118,223,151,107,47,205,247,107,213,167,157,85,173,8,203,151,115,203,150,79,74,132,229,30,109,143,127,209,252,111,253,171,170,75,12,113,71,178,55, 242,247,239,255,0,103,118,223,247,182,253,234,233,2,228,154,242,111,132,58,170,222,88,54,157,97,115,13,228,182,173,28,49,203,20,127,241,245,181,126,125,171,252,43,230,110,220,223,221,254,247,240,250,236,97,182,126,247,110,253,191,195,247,107,221,193, 215,117,225,204,207,7,21,71,216,79,148,69,57,28,53,62,134,77,197,70,234,126,50,14,59,215,105,207,40,144,108,223,75,179,253,170,114,162,240,180,229,249,241,188,214,102,99,68,69,59,254,84,166,29,223,197,74,83,101,47,150,106,185,131,148,254,121,244,223, 136,58,71,141,191,178,252,32,210,105,58,46,141,162,204,215,215,87,10,172,235,170,60,27,93,86,56,59,73,35,44,106,209,255,0,22,217,36,102,221,94,105,227,93,110,73,188,87,123,43,219,219,193,38,176,202,89,18,77,171,105,30,239,188,172,191,119,111,247,191, 187,252,53,207,234,254,48,130,227,87,89,33,146,237,173,109,109,225,182,182,138,77,153,85,141,56,93,203,183,128,229,182,238,231,111,222,201,167,75,127,121,227,253,94,198,29,42,49,246,134,77,167,123,170,162,159,154,78,91,238,170,168,86,111,239,55,205,95, 200,181,34,234,79,152,254,155,140,37,0,212,47,109,124,219,184,239,226,140,72,151,8,92,199,247,92,237,11,133,252,139,127,192,170,199,134,188,83,20,118,215,177,66,12,75,118,171,136,151,111,202,203,243,110,172,95,17,235,198,252,178,197,229,162,141,177,109, 135,152,217,87,248,183,55,204,204,205,243,110,170,250,76,79,37,172,234,238,170,141,181,155,114,231,112,94,159,238,212,202,154,148,125,226,165,3,172,182,17,92,221,197,20,243,188,99,253,102,229,249,183,125,223,151,253,157,219,90,189,11,225,254,157,111, 31,138,109,172,97,190,188,180,180,154,57,60,245,153,149,149,126,109,205,183,111,222,255,0,217,171,201,116,185,214,104,192,242,165,103,102,93,191,55,202,219,126,246,218,250,11,224,255,0,128,245,111,23,248,118,59,173,34,251,77,138,45,61,188,168,210,123, 117,105,174,87,229,101,91,101,255,0,150,236,210,54,213,251,172,205,242,255,0,21,42,24,90,149,235,66,49,247,191,186,114,98,37,24,71,154,71,219,158,43,248,163,224,143,217,199,192,250,117,135,140,237,47,117,59,157,102,214,73,175,108,78,153,38,191,37,180, 155,87,125,187,51,72,173,12,108,210,110,88,89,126,85,102,219,181,87,106,208,210,255,0,111,127,6,94,120,46,107,125,31,192,222,41,179,214,39,88,111,183,31,8,44,208,67,117,26,170,170,171,70,187,166,218,191,42,255,0,19,42,175,205,95,47,126,215,63,23,190, 47,254,200,127,180,254,185,119,97,226,155,189,11,95,241,22,147,97,169,95,62,141,40,48,204,230,212,194,172,68,209,183,205,182,219,230,101,219,252,85,250,83,251,42,248,234,63,30,252,46,180,241,175,143,188,103,226,173,63,82,240,191,135,160,185,215,237,53, 27,169,183,234,119,127,103,89,36,187,147,44,139,106,190,103,239,35,88,217,89,155,238,174,213,85,175,181,197,241,101,108,190,83,140,104,69,91,75,89,187,126,54,252,15,39,11,195,244,113,180,227,82,117,101,43,251,220,219,126,159,169,224,222,38,253,179,38, 183,212,52,187,223,135,30,8,215,116,243,171,180,158,124,58,246,150,218,51,93,77,242,249,107,15,153,31,239,27,238,171,121,123,191,135,229,221,73,109,251,74,124,100,209,226,215,165,215,126,16,218,90,164,77,21,196,105,253,163,53,191,217,45,126,235,52,209, 207,26,179,72,223,122,61,170,187,183,127,179,185,188,155,227,55,237,13,226,143,139,255,0,180,78,131,227,15,21,234,158,32,213,166,210,53,171,13,66,194,211,85,213,167,188,142,197,109,174,99,158,40,227,243,153,182,252,209,171,55,241,55,221,109,219,86,190, 140,248,207,251,115,252,90,241,87,236,65,241,137,252,89,161,216,220,232,158,55,211,158,13,87,197,42,130,77,65,110,238,229,142,59,61,247,1,191,119,252,49,164,42,171,242,237,218,181,230,85,227,44,206,155,117,169,203,151,238,255,0,38,119,211,225,236,186, 172,21,41,211,230,251,206,107,77,253,189,45,188,59,100,18,251,225,239,141,45,26,222,61,182,177,55,217,219,202,255,0,174,204,178,252,204,205,187,230,93,223,123,230,167,93,127,193,73,188,57,163,109,75,111,5,248,218,230,230,226,54,146,101,107,104,227,91, 118,221,242,199,185,155,247,159,47,241,46,229,254,245,124,133,103,241,203,85,186,102,55,87,83,178,238,255,0,150,159,53,107,91,124,92,145,194,249,236,205,254,242,213,83,241,39,54,161,240,213,252,35,254,68,84,224,108,179,17,241,81,252,95,249,159,78,207, 255,0,5,78,208,19,202,95,248,66,124,95,3,179,73,189,167,16,172,112,109,251,187,153,119,125,239,225,218,173,254,214,218,231,111,63,224,177,186,69,139,44,114,124,49,241,171,149,85,249,132,208,40,221,252,95,121,183,87,135,207,241,107,201,177,119,211,237, 173,238,103,95,153,99,145,118,238,255,0,129,87,69,103,241,19,71,212,35,31,218,118,80,229,151,230,255,0,102,181,255,0,136,173,154,197,222,85,127,5,254,70,63,241,14,178,185,43,70,143,226,255,0,204,244,68,255,0,130,203,105,114,197,49,111,135,186,221,180, 182,209,25,63,210,53,75,100,243,155,254,121,198,191,54,230,255,0,103,253,154,246,207,131,127,181,86,191,251,76,235,109,166,254,206,190,5,159,198,23,246,144,53,229,221,182,149,170,199,113,37,180,91,182,180,140,187,87,229,86,101,221,254,213,100,127,193, 45,191,101,175,135,63,181,175,197,15,28,219,252,85,211,239,175,52,189,23,76,176,154,210,222,222,118,133,164,146,107,139,133,147,247,138,203,183,247,112,170,255,0,192,191,134,191,66,63,96,31,217,19,225,143,236,251,241,123,226,36,159,13,62,31,77,169,232, 76,139,164,221,220,220,201,109,169,181,162,172,81,220,98,73,25,153,166,249,166,101,88,215,115,127,123,251,213,149,111,21,243,54,227,25,87,181,252,145,209,71,195,188,174,28,210,246,63,139,63,1,127,108,59,77,79,90,253,186,60,116,190,54,210,47,52,45,84, 106,240,139,155,11,165,219,53,163,173,165,176,242,229,220,191,221,85,111,248,21,125,231,240,50,215,74,241,135,236,103,227,79,6,105,18,69,226,8,47,246,93,73,186,8,252,155,217,214,72,86,91,85,249,183,51,109,145,127,135,107,121,106,173,95,18,254,213,58, 46,143,226,79,248,40,111,141,224,211,173,167,210,116,107,237,123,204,177,183,91,147,36,209,67,36,80,121,8,100,254,243,6,141,190,111,186,173,183,238,170,215,235,55,236,235,224,255,0,134,223,13,62,20,252,62,240,62,179,166,219,120,187,89,213,30,216,94,197, 43,42,219,203,39,218,99,135,110,229,93,172,173,28,223,50,178,178,182,223,226,218,213,242,185,142,42,120,218,63,88,159,197,63,123,239,212,250,140,190,132,112,223,186,134,145,143,186,121,229,135,132,126,60,248,94,37,182,143,224,158,174,109,229,111,244, 117,151,85,177,86,154,61,170,170,204,205,55,241,127,189,183,229,255,0,190,188,215,226,223,198,255,0,137,95,5,252,67,54,155,241,191,192,218,103,135,245,29,75,75,89,172,244,235,221,74,222,226,226,245,90,101,88,228,135,201,153,151,247,146,55,150,209,252, 191,46,239,151,229,175,180,191,106,217,127,102,255,0,14,107,201,225,159,131,63,14,190,15,248,139,226,79,219,188,187,171,61,47,71,142,101,89,151,229,130,41,22,24,119,77,251,205,172,209,199,185,85,190,105,43,141,253,151,127,224,156,144,124,99,214,244,205, 103,246,144,209,60,39,224,223,248,71,146,230,235,198,145,233,166,54,183,211,26,242,85,104,244,232,252,181,242,86,238,234,54,142,73,150,63,154,222,57,35,141,89,164,155,204,174,63,245,179,23,94,140,112,252,239,150,63,215,96,121,70,26,21,125,178,143,189, 253,121,159,141,255,0,29,110,239,167,248,189,226,57,60,91,98,218,78,167,246,221,183,214,159,108,91,223,179,92,121,107,230,47,156,191,44,159,54,239,187,242,175,221,95,187,92,85,237,223,146,140,93,127,221,175,98,255,0,130,131,104,250,55,133,191,110,191, 140,250,103,195,141,62,211,72,240,222,153,227,27,251,13,46,194,210,37,134,27,24,33,17,194,176,199,26,252,177,170,180,109,242,175,221,249,171,195,124,207,60,252,255,0,119,118,218,251,156,53,126,124,61,57,119,138,62,78,188,57,43,75,252,68,206,3,185,105, 23,167,221,175,175,127,224,132,154,84,94,34,255,0,130,154,120,22,218,226,59,153,99,22,183,238,198,39,104,218,36,88,227,83,38,229,254,238,245,95,248,21,124,119,123,118,208,77,47,251,43,242,215,218,191,240,110,189,188,151,63,240,84,31,10,24,182,177,26, 6,179,33,221,255,0,110,149,209,65,165,81,16,213,227,35,250,58,211,94,219,74,133,45,93,85,126,202,158,92,91,190,238,221,191,117,107,27,199,250,234,88,104,179,221,39,203,12,113,52,142,203,251,198,218,191,51,109,95,253,150,170,94,120,153,225,183,187,150, 105,118,222,44,223,186,254,31,151,253,170,171,163,191,219,245,104,221,17,102,105,62,89,124,213,249,127,239,154,233,246,63,104,230,246,154,114,159,58,232,255,0,26,237,127,109,171,173,107,77,248,55,99,5,198,157,165,42,219,207,117,170,105,151,26,85,244, 108,205,182,118,181,107,136,254,85,85,249,91,106,253,230,219,185,107,146,187,253,150,215,246,68,248,27,226,93,55,246,68,209,124,77,171,120,202,77,58,230,245,127,179,32,89,175,53,123,141,172,169,52,144,252,191,188,93,203,251,197,101,111,149,87,238,215, 212,113,252,32,208,180,47,138,90,159,137,52,8,97,177,212,245,200,22,222,234,111,55,229,101,95,238,175,221,93,223,236,253,234,234,190,12,105,175,167,124,123,79,189,32,109,42,93,174,195,248,124,200,235,207,173,8,194,18,169,47,140,234,167,239,53,77,124, 39,224,79,138,255,0,98,207,9,248,67,79,191,139,227,57,241,173,167,136,244,255,0,16,193,161,235,26,149,189,202,94,121,122,157,210,253,163,236,242,50,255,0,172,146,109,204,187,182,252,211,121,145,175,239,23,109,121,31,237,45,251,61,248,143,246,85,213,45, 238,236,92,222,248,118,226,89,173,69,234,192,214,215,107,58,179,44,176,220,109,111,245,138,219,149,191,139,114,237,106,253,98,248,109,171,252,80,248,1,39,141,60,73,225,47,130,30,10,185,214,53,255,0,138,16,90,94,223,120,110,194,24,164,190,210,149,174, 110,150,234,233,172,230,155,204,101,184,154,70,109,203,31,239,36,102,101,86,109,213,242,183,237,239,224,109,28,233,159,26,124,59,224,95,15,234,154,94,159,167,234,23,179,218,65,117,169,73,124,183,23,127,105,145,158,226,221,164,85,101,220,223,195,185,191, 222,170,88,122,88,175,118,166,190,127,119,67,158,191,251,28,121,169,200,248,58,111,137,55,158,38,209,18,223,81,88,246,198,170,187,149,155,116,138,187,188,181,111,246,87,115,109,174,51,196,218,141,178,101,167,217,187,239,45,110,219,124,57,215,172,44,124, 187,173,45,173,190,102,249,165,185,133,126,95,251,251,89,218,207,194,253,82,229,103,146,238,111,15,194,176,35,73,44,175,169,43,199,10,172,107,35,51,52,74,219,85,99,101,102,111,225,86,86,251,173,94,149,58,116,48,180,185,41,40,168,158,119,180,117,42,115, 73,152,31,8,239,183,248,246,85,13,183,205,143,106,175,252,10,190,180,240,92,203,13,130,196,135,251,181,243,239,195,127,217,235,91,210,60,127,23,246,148,214,241,191,156,182,44,182,246,215,83,254,248,222,195,100,35,249,161,95,155,237,83,67,11,127,118,73, 21,90,190,146,176,240,69,199,135,52,255,0,63,196,13,113,13,180,17,194,204,255,0,102,219,187,206,105,150,63,149,164,254,38,181,184,95,251,102,213,249,47,23,225,167,91,17,205,74,39,222,100,152,152,66,143,44,164,126,200,127,193,32,62,44,232,95,10,127,224, 153,182,158,32,241,238,166,154,118,153,164,107,90,191,218,166,156,225,85,154,250,77,170,171,252,76,219,151,106,175,222,102,175,39,253,185,255,0,224,181,159,14,252,121,174,120,127,225,239,192,139,235,175,22,220,120,137,26,75,207,15,217,121,86,250,134, 185,111,186,104,229,182,70,184,101,88,91,108,109,34,179,110,73,54,237,109,191,51,47,27,251,33,252,94,248,51,168,255,0,193,51,239,190,28,254,209,151,22,126,35,211,46,60,67,44,178,233,218,100,237,54,173,50,220,92,121,209,92,91,199,15,205,31,151,254,179, 206,86,220,171,27,73,252,53,241,71,198,255,0,131,86,191,14,173,188,37,107,172,120,206,206,207,192,250,93,245,253,253,207,134,181,27,120,44,53,253,74,230,73,36,104,254,205,36,145,249,151,10,209,237,218,210,50,199,228,238,220,187,182,181,124,110,26,53, 33,15,99,91,225,254,191,174,222,103,174,229,25,75,218,65,156,167,195,95,248,40,119,141,127,101,255,0,218,3,85,241,111,195,251,155,175,16,233,58,165,132,186,21,253,166,163,60,204,215,145,52,44,182,141,35,71,187,108,203,28,138,190,98,252,190,98,178,170, 237,101,219,157,227,63,31,124,24,241,207,236,23,225,13,62,239,68,26,223,198,104,227,185,93,71,196,250,182,157,5,180,122,84,87,115,121,215,49,67,36,107,182,105,173,90,24,90,57,164,135,239,52,138,172,187,154,184,9,126,14,248,178,247,196,63,240,157,106, 30,20,101,109,95,77,147,85,104,236,226,146,73,60,137,174,22,24,252,200,99,93,214,139,185,85,124,233,62,93,171,185,126,85,249,116,62,54,232,186,63,131,116,187,157,20,252,52,189,159,198,90,140,171,170,235,94,46,131,196,119,19,90,61,130,201,231,8,33,177, 242,218,22,141,163,154,40,100,184,93,205,187,230,85,249,183,47,179,66,149,40,184,186,127,23,169,231,41,86,124,215,127,211,56,191,4,233,55,95,218,62,38,155,194,215,30,32,191,240,205,174,159,255,0,19,184,214,41,39,176,212,90,54,86,138,25,25,126,88,102, 255,0,150,138,223,195,181,190,247,240,244,122,191,196,200,180,143,135,118,62,18,212,126,193,127,117,103,164,91,233,145,106,86,146,201,5,181,221,167,218,46,38,101,153,102,249,87,204,142,111,187,15,203,187,114,201,243,45,112,126,17,189,241,31,192,223,23, 120,163,66,241,53,165,255,0,129,229,215,244,25,33,212,116,27,230,221,19,216,95,109,80,178,71,185,182,182,216,252,197,221,182,69,218,223,119,238,182,134,147,251,73,89,120,127,84,150,227,199,86,210,95,218,173,146,194,141,52,80,172,19,73,187,247,114,72, 172,173,185,124,191,149,118,252,204,205,243,125,218,246,43,197,168,114,173,79,59,155,145,114,157,103,135,60,1,97,226,223,17,89,24,53,152,83,108,126,69,206,231,146,27,109,86,198,53,146,79,223,66,172,177,220,45,187,52,146,124,223,54,239,45,87,230,101,90, 179,241,19,224,174,177,224,175,28,233,250,126,191,111,172,105,26,43,199,253,167,107,169,233,250,12,204,186,157,179,44,113,200,222,76,219,90,43,54,89,23,119,251,63,117,171,139,248,143,227,191,19,124,70,179,240,253,220,154,173,238,155,107,121,19,91,90, 37,203,70,203,111,229,201,186,21,142,24,87,118,233,36,101,249,190,235,51,43,124,212,216,116,95,18,252,57,212,180,221,123,197,62,41,212,32,109,65,254,201,63,136,77,197,221,212,154,86,214,85,218,191,243,214,53,89,91,247,48,238,143,107,50,237,93,223,55, 153,24,203,221,148,228,56,202,50,55,190,44,120,211,75,241,38,157,15,135,52,47,12,105,114,89,120,117,219,76,179,241,27,88,53,166,175,169,218,44,205,14,229,143,119,202,205,31,239,154,63,155,116,155,119,124,213,223,120,7,192,126,27,248,117,103,225,125,91, 194,77,114,124,75,167,197,13,236,54,151,23,144,221,249,182,127,102,154,22,107,168,252,184,214,22,105,36,243,182,198,223,187,218,171,181,190,106,230,254,3,235,48,248,127,192,159,16,252,69,174,234,22,48,65,168,216,94,91,233,147,203,166,121,141,101,52,146, 71,55,157,31,158,223,232,251,124,150,147,204,249,182,180,141,181,91,238,213,61,60,105,30,52,142,121,245,59,216,96,212,180,235,59,137,36,75,111,58,247,108,144,205,35,66,182,145,182,229,105,25,90,61,170,170,219,89,191,137,183,87,109,72,212,171,71,151,154, 61,133,41,90,92,209,63,114,52,79,248,40,199,136,110,252,93,174,120,107,76,212,124,31,54,149,170,248,63,77,241,39,132,110,117,57,151,236,154,196,2,40,160,212,68,59,126,102,182,142,73,23,116,204,204,219,164,101,85,218,181,197,252,8,253,147,181,27,207,136, 94,22,212,190,32,120,159,195,190,39,241,141,141,155,220,107,77,113,226,233,47,161,185,212,163,176,149,95,77,210,116,248,217,90,107,5,91,143,154,59,157,171,190,56,230,242,217,171,224,223,248,38,119,195,205,63,254,10,1,251,99,248,27,194,222,63,215,37,176, 241,63,130,188,23,111,53,140,151,193,117,11,43,177,100,173,31,147,246,95,221,238,85,251,103,218,22,77,223,185,154,24,219,116,141,182,191,101,63,96,79,135,63,9,172,255,0,102,141,39,75,253,158,164,139,196,214,159,14,191,180,188,28,158,39,191,182,134,109, 82,250,230,218,102,135,80,157,238,21,85,154,73,174,35,145,164,97,183,204,111,154,188,156,62,26,172,229,21,41,109,253,104,123,16,175,25,67,155,148,249,126,237,19,193,254,17,248,107,127,241,119,224,206,139,13,230,131,173,92,199,20,150,214,23,122,79,246, 119,239,173,174,60,200,252,150,219,181,164,102,102,221,242,179,71,92,199,192,239,136,94,26,248,119,255,0,5,69,209,52,63,135,90,86,169,164,170,205,113,246,161,117,169,45,226,200,210,95,205,108,222,95,202,173,26,254,249,91,107,127,123,229,175,70,209,254, 52,220,248,131,225,101,248,248,93,241,23,67,154,227,195,250,164,51,93,62,183,231,232,113,195,20,209,249,17,71,185,183,43,51,92,42,237,93,219,106,215,198,45,62,234,31,218,135,195,222,38,248,133,103,165,219,199,165,235,246,112,105,218,164,79,3,73,113,111, 117,37,188,141,31,153,31,205,181,164,85,251,223,221,90,253,3,55,246,147,193,84,143,149,254,237,79,55,13,201,237,151,187,253,108,126,137,69,180,17,138,121,192,239,89,209,217,57,144,60,82,186,224,156,175,102,169,140,51,103,228,101,34,190,118,142,38,124, 191,1,212,224,175,241,19,185,4,122,87,229,31,252,22,187,194,119,254,8,253,166,160,241,84,144,41,210,53,221,34,199,75,158,117,149,188,197,105,38,146,31,153,87,248,85,188,182,254,31,226,249,190,237,126,168,93,92,77,104,65,242,154,77,220,124,157,171,224, 31,248,44,197,253,190,163,123,225,251,75,155,59,161,115,38,154,209,253,172,34,202,182,173,37,220,113,199,251,150,249,91,230,243,62,111,155,106,215,187,195,85,225,83,31,236,165,163,179,252,21,207,59,51,139,142,30,254,107,243,63,42,63,109,109,94,194,203, 71,212,32,241,119,157,113,46,149,115,26,193,60,22,219,99,243,225,109,190,78,213,249,99,253,227,72,191,47,252,241,220,205,95,16,248,251,199,79,168,93,67,111,106,139,33,178,138,54,144,198,191,221,249,149,91,253,170,253,9,248,249,224,207,2,235,218,213,223, 135,188,100,53,159,19,105,158,27,213,90,238,219,80,26,131,71,110,22,72,214,56,237,117,22,220,178,67,38,230,101,141,155,119,152,170,172,205,186,70,86,249,11,198,223,179,164,126,3,248,219,172,232,198,27,152,224,89,218,230,8,188,134,134,69,89,63,121,28, 109,28,155,89,118,171,109,249,191,187,88,113,142,18,115,175,12,108,254,31,135,175,226,122,92,59,136,165,10,78,130,248,190,71,215,223,9,174,87,194,30,46,147,66,213,117,59,155,203,56,96,182,190,116,149,149,127,180,99,153,87,204,141,182,252,205,28,63,42, 175,151,247,149,153,164,254,42,220,213,204,31,0,62,57,120,71,198,159,11,227,181,185,210,110,124,77,101,111,107,111,108,204,208,219,95,221,73,229,172,11,35,124,171,13,194,201,181,151,254,89,180,138,219,118,215,71,224,191,131,150,126,62,208,150,255,0,225, 221,205,132,62,46,240,42,125,138,214,242,56,213,86,234,125,170,204,179,47,222,242,238,23,107,109,111,245,107,181,150,188,255,0,227,55,141,7,143,124,109,240,238,203,92,240,87,141,110,245,93,95,197,250,117,239,216,244,79,46,231,117,198,157,251,203,155, 107,118,102,85,142,243,206,88,119,71,50,198,204,170,223,51,71,243,87,212,113,55,13,225,241,220,53,56,99,181,138,143,52,101,31,178,210,239,211,93,31,123,159,49,146,231,51,165,157,37,135,254,110,89,71,107,167,229,248,223,165,143,166,127,107,31,132,122, 159,236,163,227,86,209,44,52,219,235,189,62,197,22,243,77,184,150,61,208,165,163,43,44,17,238,220,187,150,21,102,141,182,252,171,183,119,241,87,157,220,120,198,79,22,121,58,85,206,217,94,104,22,105,53,9,98,153,161,134,77,204,177,249,114,127,123,111,152, 187,127,186,223,55,203,95,83,126,208,222,41,241,159,237,49,251,15,207,227,255,0,136,122,68,30,4,210,252,49,121,246,102,181,213,35,89,53,162,173,251,151,138,69,183,147,109,191,250,79,151,31,150,219,153,90,61,223,236,215,203,63,12,188,27,123,226,255,0, 17,46,169,107,115,105,14,163,32,107,139,255,0,180,221,73,39,151,62,221,170,190,76,123,118,172,107,182,53,243,62,247,222,101,249,171,46,4,231,205,178,10,20,233,107,203,30,75,55,219,79,234,235,189,141,184,142,162,192,102,82,157,79,241,95,250,253,60,142, 111,66,77,210,202,191,221,254,26,205,215,62,23,105,126,35,241,214,139,226,45,67,237,127,111,208,22,101,182,217,43,71,31,239,62,246,229,95,189,254,237,107,91,64,250,119,140,245,27,75,151,243,37,134,89,35,45,253,230,86,251,213,168,35,49,163,21,94,43,249, 91,22,234,229,152,202,180,118,148,37,40,254,135,239,20,101,12,85,40,79,236,189,77,207,133,158,32,62,12,241,198,129,172,35,109,109,39,83,182,188,249,127,133,99,153,89,191,241,213,106,253,153,23,3,204,73,80,254,238,94,65,250,215,226,78,85,33,120,166,147, 230,101,101,85,255,0,121,107,246,43,224,15,140,96,248,135,240,59,194,122,204,115,43,38,165,164,219,72,255,0,55,71,242,212,55,254,60,173,92,120,121,243,84,124,167,143,157,83,248,36,118,19,36,114,75,180,50,231,189,124,111,251,113,120,101,252,57,241,162, 45,82,230,230,56,108,245,61,45,26,37,12,203,251,212,109,142,210,127,11,124,171,110,171,254,243,87,216,247,182,226,120,193,139,146,7,222,6,190,104,255,0,130,134,120,99,204,208,188,43,172,206,147,31,236,251,137,237,85,190,109,177,249,136,172,172,223,247, 239,111,252,10,191,78,240,195,25,245,14,40,194,202,107,123,199,239,95,230,124,31,19,80,250,198,87,94,11,183,229,169,242,62,161,175,207,125,110,247,23,74,171,10,249,141,181,182,238,147,229,249,119,110,251,191,117,126,106,197,158,246,215,196,176,230,206, 24,102,185,184,86,85,249,183,71,10,200,202,190,118,214,249,89,183,127,11,127,117,106,31,141,154,237,138,120,26,242,77,74,226,120,197,170,253,162,5,179,121,60,229,158,63,189,15,247,182,252,191,55,252,10,185,191,5,106,26,126,137,225,152,206,139,167,95, 234,145,173,155,127,164,89,193,35,52,210,249,139,35,55,153,38,216,247,50,252,223,240,45,191,195,182,191,177,30,50,162,197,251,57,206,241,229,249,159,139,75,13,5,134,82,165,27,75,152,252,219,253,149,26,227,224,231,252,20,70,235,70,97,34,77,105,173,106, 58,114,171,174,214,101,142,105,25,55,47,251,81,170,182,223,246,171,237,255,0,143,94,35,208,60,55,251,66,220,105,254,49,75,203,173,23,77,91,109,79,80,139,79,131,204,146,107,75,207,180,79,182,225,164,109,187,100,153,86,221,85,127,189,252,43,186,190,26, 253,170,239,117,15,131,159,240,81,153,181,255,0,16,180,98,230,247,80,178,215,164,49,46,216,237,197,196,126,75,70,191,222,219,28,39,230,254,45,223,117,126,237,125,121,251,94,124,107,209,79,193,72,62,207,172,105,214,218,151,137,96,178,134,89,36,185,243, 26,53,182,243,60,166,88,127,135,253,98,238,102,109,205,181,87,253,170,252,238,151,46,23,55,169,125,41,235,248,106,143,186,172,165,137,193,197,125,167,203,248,232,206,119,246,28,248,111,101,251,71,126,219,127,21,60,111,226,70,241,71,195,207,10,104,122, 78,163,227,25,95,77,16,223,61,180,177,253,150,27,104,100,89,62,91,134,111,222,201,181,126,101,242,252,181,109,187,89,189,119,227,47,236,213,162,124,8,241,69,135,135,60,117,174,67,170,89,235,105,6,169,111,175,79,60,155,117,168,54,253,164,93,195,31,250, 149,89,151,229,242,247,72,219,86,77,219,154,188,47,226,239,237,93,224,107,143,21,248,123,89,248,119,226,63,10,120,58,203,90,240,94,149,99,175,88,216,93,199,183,73,187,88,26,61,74,206,225,87,253,108,202,203,189,153,190,102,243,35,254,237,122,15,138,255, 0,109,93,47,226,207,192,187,15,6,201,227,159,11,248,166,31,15,120,130,203,76,248,119,121,109,109,36,215,151,182,74,223,191,209,239,22,53,218,190,92,107,111,44,19,43,51,109,99,242,255,0,123,166,134,101,135,193,84,157,119,47,118,166,188,191,203,127,47, 190,226,204,176,149,113,170,20,101,30,89,66,54,230,95,106,222,103,170,91,94,89,95,233,81,235,94,47,183,140,180,144,125,171,236,214,251,154,31,46,53,243,35,91,139,141,190,91,52,107,31,239,22,61,177,174,214,86,102,221,89,31,179,215,133,111,126,44,104,54, 154,245,228,23,80,232,211,65,29,251,197,107,242,199,170,93,180,140,210,72,173,247,154,24,124,197,88,252,198,93,204,191,42,237,85,221,198,234,154,109,173,188,218,46,139,227,95,16,172,211,107,151,81,201,115,109,109,114,182,182,176,219,53,238,229,111,47, 229,243,150,79,245,127,197,254,177,190,90,245,221,67,196,94,32,248,119,240,110,125,90,232,88,172,48,91,199,13,132,81,187,67,28,211,53,223,147,27,51,46,237,223,51,125,221,203,255,0,142,215,217,101,249,198,27,27,56,211,140,182,87,62,51,25,148,215,195,67, 159,151,121,88,215,248,53,166,104,191,14,126,40,248,203,86,130,227,80,178,135,90,104,149,116,215,43,37,141,188,176,198,177,188,246,251,190,104,124,239,151,116,127,113,188,181,111,188,205,187,219,172,38,107,203,100,149,226,104,94,85,220,200,223,122,63, 246,107,231,45,45,116,125,2,57,108,245,201,102,215,245,136,246,249,140,161,90,75,198,142,61,219,164,93,223,47,205,183,253,102,213,85,219,242,238,106,244,63,130,62,43,125,91,80,242,173,132,151,5,109,183,70,235,187,201,88,217,183,110,221,252,77,187,229, 255,0,119,255,0,29,250,140,187,48,131,124,177,248,89,243,25,142,6,86,231,127,18,61,7,196,250,147,232,154,52,183,80,196,211,121,35,204,104,227,93,204,202,191,123,229,172,219,175,25,69,61,157,157,205,162,92,108,184,220,193,118,237,249,182,183,202,223,238, 255,0,118,177,188,67,226,221,250,167,216,39,185,153,174,164,151,247,123,10,175,151,22,213,243,27,106,252,202,219,91,111,205,242,238,251,219,107,207,245,95,16,220,234,30,37,208,190,198,146,71,97,165,75,127,111,107,21,174,219,134,146,72,124,181,146,69, 219,247,182,249,140,171,187,254,90,51,51,125,218,245,107,98,185,126,19,207,165,132,230,94,241,235,177,235,175,103,21,181,180,63,233,87,18,109,249,231,127,47,239,50,255,0,15,222,254,47,252,118,181,181,41,230,181,183,205,156,62,119,207,243,175,247,87,251, 223,237,87,144,233,186,139,219,235,45,125,226,121,60,152,116,24,190,213,246,85,149,89,154,238,101,85,138,21,102,249,89,149,85,153,191,135,204,145,126,102,218,213,233,31,14,163,105,188,50,151,55,51,249,215,23,202,183,18,178,253,221,205,253,223,247,190, 247,252,11,229,249,118,211,165,137,246,143,148,202,182,31,217,43,145,218,120,235,203,32,235,9,12,106,202,223,42,54,230,93,171,186,79,247,182,238,95,238,253,234,232,108,174,18,226,61,246,174,178,47,247,151,253,170,242,237,71,89,134,63,137,186,213,157, 228,54,205,113,251,136,237,89,83,119,218,164,242,119,73,231,109,249,85,89,126,86,102,254,239,251,181,169,225,15,138,210,219,151,30,33,182,88,82,225,183,64,173,34,172,211,51,109,85,141,87,248,164,86,220,173,255,0,1,219,247,90,185,214,62,49,156,161,57, 27,212,203,231,40,70,81,137,252,205,92,89,230,238,224,66,203,159,61,163,82,175,230,41,229,186,63,241,12,119,239,94,165,224,47,141,127,216,254,7,210,188,47,39,135,52,25,172,116,157,78,109,78,246,107,224,210,67,117,51,195,36,49,125,162,54,59,92,70,100, 249,87,63,55,150,138,219,126,102,175,48,210,238,46,44,45,221,173,100,136,169,117,220,165,3,171,116,251,223,252,79,251,213,236,63,2,62,2,105,31,24,52,45,111,87,241,22,185,163,104,150,30,25,133,47,47,46,239,71,203,113,113,54,228,75,96,161,151,3,229,44, 187,86,77,236,54,175,241,99,249,142,151,55,51,72,254,135,149,190,39,208,243,27,255,0,5,206,52,105,53,93,61,39,125,33,175,22,218,23,152,98,105,114,140,225,153,71,31,117,89,190,247,25,244,59,171,34,75,177,36,27,114,21,80,103,105,255,0,150,149,210,252,77, 212,173,109,252,67,246,45,34,226,250,91,75,81,34,180,210,199,229,61,203,110,96,178,121,121,249,114,187,87,105,85,101,92,171,116,172,111,15,71,46,151,168,69,118,178,60,23,86,207,28,240,50,175,221,101,109,193,190,110,62,95,151,239,84,203,150,50,11,251, 188,210,59,63,6,124,53,191,213,108,98,187,137,98,18,203,20,215,48,198,141,251,233,124,189,172,223,187,111,225,219,185,183,46,239,187,247,107,234,95,248,37,63,128,60,37,169,124,123,221,241,4,71,30,187,102,30,255,0,195,247,17,206,222,84,199,230,141,160, 104,246,237,111,150,69,146,63,226,220,207,94,91,163,252,60,211,188,95,224,107,123,89,102,22,222,36,241,46,163,12,177,73,2,171,197,177,182,195,36,45,6,229,111,180,51,124,203,35,109,95,222,109,95,153,183,87,214,31,177,143,236,25,226,111,131,31,180,174, 163,169,124,81,142,234,202,13,22,217,110,109,117,43,121,60,184,238,214,69,138,72,227,54,237,187,108,159,44,138,203,185,153,118,237,86,226,190,179,133,242,250,139,49,161,85,83,230,141,253,233,116,90,126,22,220,249,124,235,23,31,171,85,92,220,178,229,249, 158,77,255,0,5,199,208,155,73,253,168,116,59,228,159,237,209,106,158,21,91,101,200,218,161,162,154,226,16,203,254,207,239,247,127,192,107,222,255,0,108,223,218,146,199,246,130,241,38,153,23,128,116,93,63,67,240,214,135,167,65,99,98,144,219,249,50,94, 121,112,198,173,52,223,237,124,191,42,255,0,15,251,205,242,241,95,240,92,29,9,117,47,26,124,31,190,177,180,9,21,211,220,233,146,62,230,204,141,246,139,73,84,127,187,129,37,113,211,196,207,26,163,237,207,221,90,224,226,156,52,40,230,117,215,242,203,243, 255,0,135,59,120,119,17,42,217,109,30,111,234,199,67,251,63,252,16,189,248,243,241,7,84,179,211,110,236,244,219,79,14,104,87,190,33,212,53,29,66,95,38,206,214,43,127,45,85,100,153,190,88,218,73,36,88,215,119,222,249,190,246,214,167,120,207,197,151,118, 191,179,63,142,124,59,109,35,166,157,171,220,232,215,82,197,134,93,183,17,95,70,222,102,223,225,102,141,124,182,254,45,191,45,125,117,255,0,4,206,253,144,63,183,188,28,158,47,240,247,129,47,190,36,248,183,83,117,107,56,245,27,137,44,252,41,160,121,51, 44,145,75,120,204,172,183,215,75,34,172,209,170,199,34,194,202,191,117,190,102,235,127,224,168,95,240,78,205,83,74,253,158,166,215,62,23,248,110,255,0,198,159,17,53,207,21,199,39,137,46,244,166,142,27,68,133,108,174,27,202,181,181,146,101,85,135,237, 30,79,239,25,154,70,145,190,102,219,247,126,38,190,55,223,149,5,212,250,170,120,89,70,49,173,216,252,87,185,212,245,75,91,56,90,203,93,138,57,39,187,218,173,37,198,223,151,111,221,93,203,253,230,90,239,124,119,226,141,83,194,62,34,179,179,209,44,44,174, 210,72,213,164,243,100,85,101,102,109,191,222,90,185,174,254,202,127,16,188,59,175,248,115,78,241,39,194,207,23,71,59,222,239,144,11,59,140,90,133,150,49,189,188,173,203,180,109,144,252,223,195,19,103,27,91,109,95,139,159,14,110,124,85,251,65,91,89,217, 120,107,197,58,149,221,154,219,59,62,159,103,45,196,113,170,203,185,183,34,194,197,118,229,119,54,239,226,254,26,234,88,88,201,71,152,133,94,95,100,181,224,127,25,106,126,36,241,116,218,118,163,160,219,219,89,39,153,254,148,179,110,251,173,181,126,95, 246,171,45,60,85,226,120,255,0,180,202,88,90,55,145,119,229,91,238,133,127,213,252,223,55,202,223,236,173,51,246,99,210,108,110,190,43,107,87,22,22,154,205,189,196,54,242,200,194,242,24,227,86,18,78,51,183,106,171,125,229,255,0,190,115,92,247,132,19, 70,212,180,150,154,196,234,133,46,245,150,86,207,217,217,149,188,189,223,195,183,229,253,231,251,213,207,87,9,11,252,38,144,196,203,249,143,216,175,248,32,6,163,107,225,191,11,252,86,184,180,142,198,111,20,234,67,77,211,236,22,246,117,183,179,181,135, 108,236,243,92,76,223,234,227,102,155,203,218,191,51,109,218,181,247,95,237,131,251,103,216,252,8,253,158,100,210,126,17,220,232,26,214,181,46,155,22,253,74,194,20,142,198,57,38,86,140,249,43,27,121,109,52,139,230,109,143,204,220,170,187,153,182,170, 238,252,181,253,146,191,224,156,254,29,248,210,186,13,223,199,223,24,255,0,194,63,224,189,110,8,110,154,198,40,60,235,173,102,72,89,119,67,14,237,209,174,217,153,87,115,43,50,253,229,218,204,173,95,89,248,107,246,84,131,225,71,198,61,23,225,198,147,164, 71,99,225,15,14,95,207,169,105,208,107,119,50,92,91,200,172,177,181,180,82,110,221,231,77,31,153,51,76,187,87,229,133,126,102,85,249,190,99,53,167,5,203,203,47,120,246,176,146,231,151,239,23,186,126,60,254,218,58,126,155,225,159,219,231,199,182,126,3, 186,19,89,89,234,144,67,111,114,151,107,119,177,86,198,203,115,9,23,239,54,237,223,238,237,219,252,53,244,31,236,171,227,13,103,199,95,180,103,195,223,1,235,90,180,214,58,55,137,60,83,22,154,215,162,15,50,107,105,166,143,107,73,111,30,239,222,55,151, 26,253,239,151,110,230,254,29,181,243,119,237,175,226,157,15,226,215,237,183,241,95,89,248,45,8,182,209,117,95,18,94,139,5,50,127,203,56,86,56,25,191,221,105,45,228,101,255,0,101,151,238,253,218,235,191,224,155,191,21,116,191,130,127,181,55,194,223,29, 248,214,27,253,69,60,55,172,201,170,37,180,82,175,218,88,199,107,113,28,106,222,103,240,238,153,126,111,246,107,236,227,24,253,82,49,148,126,201,226,115,63,111,253,222,99,246,239,246,170,131,194,255,0,240,78,237,10,111,9,254,198,62,4,125,83,226,215,141, 116,185,9,241,54,162,235,121,169,92,15,153,126,121,155,247,141,12,106,173,36,145,198,209,199,26,237,251,187,171,192,60,55,255,0,5,121,240,15,236,69,224,143,248,69,252,117,225,127,17,91,94,248,29,150,207,195,126,21,182,143,118,165,226,29,94,111,222,93, 234,58,148,145,178,194,179,52,204,205,230,63,203,31,153,185,119,54,221,190,107,165,126,208,191,17,252,123,226,221,87,227,119,196,27,189,79,65,240,239,135,244,75,213,213,60,66,250,111,155,105,166,89,44,158,114,197,103,27,110,221,51,50,198,187,155,204, 105,36,218,219,91,106,173,126,126,104,182,55,159,19,254,37,106,255,0,16,124,114,47,150,251,91,158,73,44,33,190,184,107,171,139,27,118,109,202,178,72,223,52,147,54,237,210,73,252,76,205,254,205,124,214,3,5,25,233,35,210,196,213,84,35,104,158,119,241,107, 199,55,127,19,190,46,120,179,196,26,132,34,218,109,123,95,212,53,137,226,70,222,176,205,119,123,52,230,53,111,226,85,105,182,238,254,45,187,171,149,191,186,91,89,194,231,131,253,223,225,171,90,206,162,146,107,90,147,70,223,47,218,230,255,0,209,141,88, 122,156,162,73,3,39,206,178,46,234,253,66,140,99,74,156,98,124,37,105,243,212,148,139,50,207,140,201,252,44,213,247,183,252,27,129,3,205,255,0,5,59,211,26,216,67,35,65,225,13,101,144,49,219,185,188,203,37,255,0,217,171,243,254,230,231,101,180,11,252, 91,126,106,251,215,254,13,176,89,110,127,224,165,150,226,208,172,114,15,7,234,161,95,229,204,108,102,178,195,42,255,0,23,221,174,140,52,121,170,162,36,249,96,207,219,79,135,63,16,53,95,141,94,16,176,241,30,141,123,164,105,233,124,210,195,60,11,106,211, 73,103,115,12,205,111,61,187,55,153,181,154,59,133,101,255,0,128,181,118,246,254,21,212,222,229,39,143,196,247,81,249,155,126,88,44,160,85,93,219,191,139,111,253,51,111,251,235,253,154,249,111,246,19,241,181,151,131,175,245,143,3,234,79,255,0,19,61,103, 88,215,188,83,17,72,153,99,147,118,175,10,221,109,95,187,30,233,166,142,77,191,244,217,171,234,253,30,228,121,113,108,101,195,44,123,89,91,254,187,214,245,167,204,175,19,130,30,235,146,50,239,188,37,114,246,254,117,254,173,174,221,124,140,203,251,229, 141,91,106,171,127,203,53,95,249,233,255,0,144,215,253,170,234,63,103,111,4,218,167,197,151,150,250,125,82,237,161,178,185,142,38,186,189,150,79,249,109,28,127,117,155,251,170,173,254,243,53,99,73,169,58,104,251,223,116,137,246,86,220,170,223,244,202, 58,238,190,6,72,7,197,86,12,126,102,177,187,255,0,210,152,235,143,25,47,221,72,235,194,255,0,21,31,158,26,151,134,254,21,233,55,218,194,219,55,141,188,59,36,222,42,130,242,68,223,5,210,203,114,218,93,252,255,0,194,209,73,183,247,109,38,223,239,42,255, 0,13,101,254,215,126,6,208,116,191,30,124,64,75,71,183,213,161,77,66,241,153,102,179,146,53,179,219,170,105,141,246,117,89,55,43,42,173,196,203,185,126,86,243,155,253,170,244,175,17,120,159,198,151,126,42,154,199,73,248,147,224,127,16,91,77,173,197,27, 89,234,151,150,254,103,151,253,149,170,254,233,99,188,183,249,164,105,163,141,182,238,255,0,87,12,141,187,106,178,183,17,251,108,220,94,91,124,70,248,181,253,189,103,99,102,97,58,132,144,125,142,56,213,110,35,221,163,204,179,54,214,109,210,54,214,220, 223,43,127,179,88,195,236,255,0,135,252,133,136,143,187,47,119,237,127,153,241,7,195,61,35,79,63,27,25,108,45,45,32,182,183,189,211,237,34,217,18,170,168,139,90,241,149,137,95,187,252,59,163,95,248,10,215,152,61,199,145,251,35,106,111,169,54,101,215, 252,44,100,83,252,76,79,194,248,36,255,0,208,172,94,189,71,195,249,209,117,249,174,54,229,165,241,205,189,144,249,191,213,238,248,143,171,192,223,248,237,229,121,230,128,171,168,252,27,248,125,163,93,133,18,92,120,118,192,73,183,191,153,224,45,114,211, 255,0,109,43,25,73,53,229,254,103,68,32,211,254,190,207,244,142,243,199,118,73,55,199,107,107,105,228,204,90,118,163,169,221,163,231,248,151,196,222,17,212,219,119,253,252,174,183,196,176,92,234,122,54,181,30,133,167,216,106,119,10,218,117,132,80,94, 92,253,158,29,203,226,47,16,218,182,233,54,182,213,219,39,254,131,94,109,226,45,66,226,215,226,31,143,245,121,129,146,11,93,63,196,23,3,150,109,172,116,95,6,93,174,223,251,243,35,86,63,199,175,139,205,105,226,143,18,120,113,97,143,81,210,27,85,212,99, 242,213,90,69,146,53,213,238,175,32,109,171,243,55,205,112,204,191,195,95,33,159,77,198,172,89,235,97,191,117,77,30,197,255,0,4,231,253,157,117,127,218,163,246,22,84,248,111,225,68,211,60,97,240,239,196,22,90,147,93,73,168,220,255,0,108,72,210,155,85, 88,35,212,118,249,109,28,202,179,110,133,183,52,42,202,171,242,237,221,230,191,240,80,173,47,198,95,181,255,0,237,103,169,248,147,194,86,16,92,233,254,16,211,219,69,190,214,116,221,62,238,109,59,66,180,210,190,209,251,185,46,38,218,215,94,94,246,86,101, 93,205,243,54,213,85,109,190,237,255,0,4,211,253,171,254,9,126,199,191,177,7,196,15,237,109,70,97,227,127,17,234,218,110,173,99,225,219,165,154,234,5,187,146,27,123,120,225,85,111,221,188,150,242,67,36,141,183,230,85,219,35,46,221,181,211,252,80,248, 79,251,27,221,252,91,215,224,211,245,203,175,14,248,102,206,247,237,145,234,146,124,70,187,143,76,215,174,110,210,105,101,157,172,227,118,86,141,90,71,89,163,145,86,70,219,39,203,229,159,155,226,107,98,29,28,68,170,56,203,91,244,242,95,222,61,250,46, 158,38,148,99,204,186,31,14,219,248,227,92,241,5,189,174,173,101,227,47,21,95,233,154,52,82,105,77,119,3,182,219,120,26,234,53,142,29,179,54,213,141,166,95,150,61,187,85,99,109,213,209,252,43,240,119,133,188,95,224,175,134,23,127,18,188,104,254,69,133, 221,214,145,168,36,114,71,36,94,28,129,161,146,225,26,206,222,207,203,184,145,90,77,138,178,72,205,251,198,101,249,87,108,117,209,252,99,182,240,79,194,77,126,230,127,216,87,197,250,239,136,162,212,173,97,187,190,183,240,133,188,58,127,134,172,229,179, 146,25,164,91,123,121,60,201,227,142,25,165,105,151,206,145,151,230,155,239,124,181,243,71,196,175,17,120,130,223,197,114,127,108,120,78,91,109,55,68,189,105,109,172,52,235,169,26,71,105,32,140,172,209,21,85,154,72,100,105,25,153,149,118,249,207,181, 86,187,240,240,120,159,225,233,249,156,88,138,110,132,189,221,73,126,32,248,118,127,4,216,92,107,255,0,11,32,212,252,17,112,96,154,27,229,213,245,133,188,190,213,188,233,54,202,178,49,243,26,53,104,118,172,155,89,183,54,230,249,119,43,87,49,163,120,94, 251,196,90,69,180,222,53,63,98,139,84,251,101,178,217,45,148,219,172,161,183,143,206,91,173,173,254,187,118,230,242,214,63,155,253,154,181,20,218,188,30,41,181,211,116,200,97,213,14,163,109,111,168,173,157,238,229,146,238,54,143,229,101,105,62,111,153, 155,247,113,174,239,49,149,182,215,163,126,208,94,45,127,10,79,162,232,254,48,211,180,141,59,80,240,142,154,186,68,115,69,106,214,119,50,73,228,238,105,166,85,219,185,182,182,214,153,183,52,159,221,175,89,87,148,99,201,35,206,142,191,20,76,47,217,175, 246,104,241,167,237,55,241,30,211,70,240,53,190,152,215,122,132,254,101,172,119,119,94,76,178,44,43,229,180,139,115,183,116,106,173,243,54,239,186,170,205,252,53,210,124,104,253,144,181,95,217,219,197,191,240,140,252,112,241,28,115,217,157,62,93,67,81, 254,198,241,66,94,218,69,36,146,109,134,202,221,85,75,51,73,38,213,101,134,31,49,188,197,218,187,191,120,190,117,105,241,59,92,208,228,131,90,240,21,230,162,53,47,179,55,151,254,157,34,174,214,86,249,182,252,190,99,55,204,181,29,215,195,61,55,195,87, 23,122,143,139,53,189,51,79,213,230,188,91,171,105,45,173,90,238,77,178,70,173,229,198,219,151,201,111,155,203,243,54,255,0,179,253,214,174,56,206,94,215,222,151,187,216,168,212,80,143,194,125,13,167,252,59,179,248,89,227,127,19,232,237,49,142,223,68, 208,53,173,54,52,19,121,151,23,134,234,209,102,139,76,85,102,101,134,70,221,28,109,113,185,118,249,123,183,47,153,242,249,183,133,190,57,233,158,12,149,225,93,18,219,81,135,83,180,107,91,136,32,159,203,147,204,102,218,211,125,166,63,154,61,187,101,101, 255,0,158,140,223,53,121,221,198,165,97,170,120,126,43,189,101,237,223,69,181,185,101,123,153,37,91,120,97,104,227,93,177,174,223,226,254,243,127,11,87,101,240,222,104,45,52,237,62,125,115,70,240,236,235,164,91,53,132,112,75,165,70,129,100,85,95,46,107, 171,132,145,126,217,116,204,203,185,164,254,29,171,254,245,82,155,165,5,204,99,203,237,125,227,223,255,0,102,143,30,248,83,246,97,253,146,188,95,121,224,255,0,20,120,190,47,142,154,253,252,158,29,208,244,187,21,105,45,87,72,157,99,19,137,175,25,66,252, 214,219,183,74,173,186,57,21,86,29,210,110,221,246,135,252,17,87,227,191,197,143,26,252,46,63,14,60,23,99,23,132,45,53,155,175,180,27,221,58,6,145,180,155,38,145,148,207,13,172,219,183,121,139,183,253,34,73,63,229,155,109,86,254,47,156,126,1,126,204, 255,0,10,60,15,240,46,63,18,126,221,222,37,248,147,162,106,214,58,180,210,201,225,221,6,201,155,203,146,27,136,99,107,181,153,119,44,204,170,223,45,188,44,204,171,35,43,47,153,181,87,244,231,224,247,252,21,31,246,116,253,158,127,102,207,12,216,120,7, 197,122,190,177,45,205,146,13,14,199,80,151,237,122,198,185,115,36,219,68,13,50,238,86,145,100,147,107,51,124,170,170,205,247,85,171,193,196,86,148,166,212,99,203,239,123,204,247,40,67,149,70,82,251,191,204,249,251,65,212,236,60,23,15,198,189,11,226, 7,194,169,52,216,180,29,30,123,169,36,130,125,71,77,254,219,142,195,80,141,163,153,90,79,49,85,182,175,157,186,61,219,183,124,203,182,189,3,246,133,185,240,197,205,163,235,126,24,26,245,190,171,55,134,244,45,113,17,229,130,107,86,142,222,109,191,235, 54,172,155,149,99,251,219,118,253,223,187,92,175,193,239,137,186,199,196,111,219,51,227,36,223,6,254,37,233,247,218,68,255,0,219,182,122,69,141,215,136,39,88,86,230,75,79,57,103,181,142,79,151,201,134,79,50,54,153,118,237,101,111,151,109,122,215,138, 52,143,27,252,64,253,153,60,61,63,140,96,210,117,201,110,60,17,119,111,170,106,118,171,105,124,223,105,133,247,110,142,234,31,225,101,220,223,47,203,254,202,215,235,20,234,71,19,131,247,101,188,124,250,175,248,7,139,240,213,244,151,151,115,244,7,68,212, 87,83,210,45,238,161,32,165,212,75,42,159,246,89,119,85,245,63,187,174,23,224,7,136,87,196,159,4,252,35,122,173,184,93,104,182,146,110,254,247,238,87,53,218,51,132,137,183,29,162,190,59,9,94,46,154,126,71,167,82,13,59,14,118,15,48,2,190,1,255,0,130,232, 193,30,137,240,235,195,250,197,213,188,13,151,22,254,124,161,89,97,219,119,111,39,221,111,188,219,119,109,95,226,111,150,190,234,143,86,16,222,48,153,215,39,32,127,181,138,202,248,149,225,13,31,226,15,134,166,211,188,105,167,89,234,122,116,203,251,200, 46,98,89,21,191,224,52,240,249,252,114,201,203,23,5,121,70,250,122,171,10,166,9,98,23,178,169,240,179,241,27,251,122,211,194,255,0,13,154,215,194,250,13,197,244,159,111,146,237,236,35,133,100,143,85,218,223,189,221,113,36,155,149,153,155,203,249,151, 110,216,255,0,218,90,240,31,14,124,60,215,126,50,126,217,118,218,39,195,79,12,107,94,50,185,240,244,80,92,234,246,70,120,236,225,209,108,99,157,188,200,238,175,27,106,218,194,187,164,85,102,102,145,118,178,198,173,229,249,107,250,253,251,71,255,0,193, 60,180,153,124,35,119,117,240,107,82,254,193,109,58,221,164,142,206,237,247,90,194,145,171,72,222,91,109,220,171,254,203,110,95,149,126,237,126,49,124,58,253,190,110,190,10,124,48,179,208,62,28,52,122,133,197,221,196,94,32,241,78,171,115,183,237,254, 39,249,154,72,32,153,149,190,88,119,55,152,203,183,230,109,170,187,85,118,183,94,123,197,208,226,76,174,52,178,246,253,166,206,250,91,238,252,63,18,50,172,174,57,102,34,85,107,175,119,167,153,250,138,255,0,176,119,252,33,254,59,143,92,213,124,109,225, 221,55,64,22,243,221,235,51,65,11,71,117,111,164,70,205,37,156,178,51,126,237,164,143,108,139,185,151,247,158,100,140,170,191,118,189,63,195,191,177,191,194,221,6,211,192,94,35,154,222,214,95,17,106,254,49,131,196,122,70,161,61,156,48,223,77,36,118,82, 66,190,119,247,155,236,127,187,102,251,219,118,255,0,117,107,240,195,199,31,240,82,223,18,120,131,225,255,0,139,147,199,222,56,189,185,213,126,32,234,54,250,142,173,190,118,101,69,134,77,201,109,28,127,118,59,117,88,225,143,111,241,44,106,173,185,153, 153,189,99,227,159,252,22,243,70,214,87,224,77,183,195,221,98,255,0,88,178,248,107,37,222,163,118,100,211,39,138,77,242,125,157,99,135,19,44,126,118,213,23,31,50,182,213,220,191,55,247,190,123,51,197,241,30,103,133,250,166,34,180,167,79,93,34,172,175, 110,189,95,93,206,252,38,27,44,195,215,250,197,40,114,203,191,245,242,63,125,124,119,240,226,215,196,58,87,136,60,51,169,233,145,174,149,227,219,118,243,238,86,37,145,86,241,81,118,203,36,109,252,91,99,141,183,124,219,154,58,252,173,248,160,111,254,16, 93,248,166,247,197,173,5,201,240,229,229,248,54,186,114,125,151,247,177,220,237,88,218,69,111,151,115,54,223,149,183,72,205,247,90,189,87,225,135,252,29,29,240,47,227,158,147,5,151,143,44,188,85,240,227,93,183,49,75,5,222,185,101,27,105,77,34,73,31,252, 189,91,201,39,150,173,185,151,247,138,187,87,115,54,213,171,191,240,80,38,240,223,198,79,17,94,120,163,225,70,165,107,113,225,237,71,236,218,173,212,86,18,46,217,110,155,247,114,180,223,47,222,249,97,145,89,90,190,147,129,51,90,220,55,12,102,19,145,203, 220,115,130,181,175,36,155,126,86,235,99,202,207,50,234,121,179,161,41,74,222,244,84,159,147,105,127,145,241,167,133,167,213,82,249,47,117,195,37,230,161,38,233,174,119,51,52,146,72,223,123,110,239,155,248,190,243,127,10,215,161,37,149,204,161,24,21, 142,54,251,202,191,122,175,105,58,101,189,173,178,166,159,18,198,15,247,106,238,197,104,248,95,154,191,156,241,184,234,184,170,245,43,86,248,165,46,105,122,179,246,138,20,105,209,167,26,116,254,24,153,54,186,95,217,81,190,94,127,138,191,75,255,0,224, 155,218,224,215,191,100,205,6,35,134,109,46,226,234,199,253,165,85,184,109,191,248,235,45,126,111,153,186,130,62,95,238,215,220,31,240,73,143,24,189,207,128,60,91,162,22,82,52,221,81,46,208,31,238,205,18,175,254,133,11,87,42,169,30,120,202,71,14,109, 79,154,135,187,246,79,173,153,124,193,133,224,173,112,255,0,180,215,217,23,246,117,241,164,190,33,158,222,222,210,207,73,158,233,238,46,95,108,118,254,90,249,158,99,55,240,237,219,94,97,255,0,5,10,255,0,130,152,252,53,255,0,130,110,252,50,182,214,254, 59,94,205,113,171,107,13,36,90,31,135,236,29,27,83,214,93,127,214,24,213,153,86,56,99,221,251,201,164,101,141,126,95,155,230,90,254,118,127,224,160,255,0,240,87,175,139,191,240,80,127,20,106,35,226,102,187,117,164,120,20,207,52,118,62,21,211,37,107,123, 8,173,154,67,229,253,170,61,223,233,147,8,194,238,146,93,209,238,83,229,199,31,222,111,209,56,83,34,198,99,49,20,241,180,189,200,193,169,95,211,178,62,43,25,90,16,135,36,254,209,244,111,237,9,255,0,5,7,248,125,240,251,94,189,212,245,109,98,251,196,190, 43,77,175,161,233,122,66,150,131,77,130,70,86,89,46,46,191,227,221,174,36,135,247,155,126,244,113,201,229,252,204,204,205,225,223,16,127,224,184,255,0,19,188,71,3,90,252,58,209,188,51,225,171,117,7,111,155,12,154,189,209,145,190,95,49,100,102,141,99, 219,185,182,175,150,202,181,241,172,240,249,16,43,169,101,50,179,55,202,191,196,205,185,154,170,111,150,73,213,163,127,221,237,254,31,189,95,209,207,137,241,147,77,210,151,37,247,182,239,230,124,15,246,22,25,52,231,27,219,249,142,187,198,159,25,124,67, 241,75,196,139,170,252,79,213,110,46,175,149,89,62,214,232,190,115,110,109,219,153,149,87,248,191,239,154,204,209,52,219,11,235,233,47,175,174,237,160,113,36,121,145,151,247,147,46,229,86,251,191,221,90,203,180,70,217,33,145,231,253,234,255,0,227,181, 213,248,22,241,60,47,173,65,113,117,20,250,133,174,221,179,70,209,174,230,95,187,251,175,149,190,106,241,170,226,106,213,114,148,165,121,30,172,33,8,123,145,59,175,24,235,95,107,139,72,210,190,30,90,105,186,182,135,10,249,159,103,107,102,102,185,243, 54,252,178,73,187,116,77,255,0,77,63,119,243,124,213,177,225,79,1,15,2,124,55,212,181,31,18,197,115,173,143,2,106,118,154,173,175,135,226,241,5,196,13,34,94,77,37,181,221,187,61,175,239,98,154,29,208,239,153,100,111,148,71,183,42,210,43,122,5,151,196, 20,209,190,22,218,222,248,159,194,26,117,222,155,123,225,216,109,117,11,77,65,126,204,173,35,124,205,117,14,223,189,187,229,218,173,247,126,111,154,186,175,216,7,224,191,136,254,62,124,92,241,141,222,141,164,75,117,165,106,214,137,29,242,89,92,53,239, 252,35,208,255,0,169,133,91,204,242,247,73,51,72,235,28,140,171,181,86,77,210,109,251,190,87,182,230,92,210,54,196,83,80,148,79,117,253,146,174,52,127,143,31,12,134,137,172,91,232,254,39,240,181,187,218,221,233,246,247,119,241,73,111,246,123,133,145, 101,180,101,101,243,36,104,218,25,35,154,57,150,61,187,86,77,223,51,87,164,120,51,246,62,209,52,157,98,107,15,1,221,248,163,193,183,86,241,249,75,115,162,106,173,107,29,149,204,139,36,144,75,113,109,28,147,217,205,28,205,51,126,241,161,145,124,197,102, 251,213,243,15,236,97,226,59,127,128,255,0,18,174,227,248,113,165,165,141,254,149,241,6,227,68,55,95,233,119,114,65,107,38,151,28,146,40,184,95,51,205,219,52,50,178,180,170,172,190,113,218,237,157,149,247,150,135,172,248,131,83,240,216,255,0,132,151, 88,240,244,127,217,122,199,157,20,177,233,11,183,83,143,114,178,171,42,255,0,199,188,222,99,121,127,122,69,109,187,151,253,103,203,229,84,175,44,44,237,26,156,191,202,117,225,92,36,189,149,72,243,30,91,163,104,247,151,94,24,184,179,240,149,229,135,219, 38,105,36,212,111,44,108,126,196,209,194,178,124,254,100,62,99,121,210,121,159,187,221,11,109,111,151,229,143,118,229,239,44,252,73,15,195,255,0,8,75,113,246,251,137,101,155,78,219,3,236,219,113,34,198,177,175,156,209,198,191,47,247,87,248,126,237,111, 120,223,225,116,94,46,208,110,181,123,88,172,124,39,120,178,199,125,61,172,118,171,246,61,176,220,126,239,230,147,230,134,69,220,202,223,194,203,183,253,218,242,45,87,80,183,254,209,127,15,70,151,26,205,254,158,209,233,129,81,218,79,180,76,202,205,27, 73,242,170,170,173,191,157,38,213,86,221,36,145,183,205,242,215,236,28,7,155,213,197,225,231,237,101,205,40,126,167,231,188,101,149,210,195,226,33,42,127,12,142,247,195,127,19,225,176,215,238,53,157,101,164,183,188,190,138,27,125,233,229,238,243,22,79, 154,61,205,247,149,164,218,187,191,137,87,117,83,240,23,137,211,70,248,57,7,136,117,169,76,83,111,107,139,235,232,155,247,54,241,92,73,34,188,118,242,127,20,109,36,219,183,109,85,219,253,230,174,25,236,77,223,196,97,125,163,109,183,130,215,76,184,210, 52,59,107,70,105,149,103,86,85,188,189,145,163,249,86,56,99,105,35,95,221,237,142,72,219,107,55,152,170,189,95,138,33,210,124,77,169,248,111,192,30,12,91,113,161,90,220,127,109,234,22,247,86,170,208,217,199,96,208,253,154,22,243,25,127,120,210,125,157, 149,91,248,97,221,252,85,250,38,23,19,81,255,0,19,250,125,15,134,196,97,233,41,123,191,9,185,161,104,122,190,161,106,117,171,253,54,27,53,212,39,154,53,129,160,243,154,72,35,141,99,129,118,253,239,245,106,172,170,204,170,191,51,54,214,109,171,221,232, 126,78,135,30,159,101,103,53,211,59,68,214,226,86,218,223,104,93,173,186,54,147,254,122,110,255,0,199,127,221,170,158,39,212,254,219,167,65,55,135,77,211,189,228,81,220,92,234,87,50,201,242,198,173,247,99,142,63,155,253,173,171,183,229,86,220,213,191, 125,225,93,43,199,214,49,13,66,105,150,230,24,219,109,226,126,230,101,145,91,114,201,242,255,0,10,183,221,221,252,63,240,42,244,169,208,149,229,105,123,199,155,83,17,204,163,207,31,116,241,100,240,222,171,174,248,199,196,73,108,179,45,180,119,214,214, 170,158,124,139,51,76,214,241,183,150,173,247,149,85,100,141,154,79,153,126,95,248,13,116,147,233,115,248,91,196,81,105,182,112,218,234,154,173,154,181,213,171,188,74,173,11,42,237,117,142,77,170,172,203,253,230,95,226,111,239,109,172,171,139,235,143, 2,124,106,213,180,189,79,90,133,174,117,153,227,85,184,107,102,146,75,85,242,99,242,214,63,45,85,124,201,163,134,79,155,111,238,252,159,226,220,181,45,255,0,129,229,241,195,223,222,105,208,221,91,197,165,249,242,68,254,108,155,166,129,99,85,242,227,221, 183,203,220,190,118,230,249,126,109,187,191,138,188,89,66,23,158,158,253,207,101,84,119,141,223,187,202,143,231,195,73,243,70,183,246,109,42,70,196,196,146,203,215,110,221,205,181,171,233,79,217,11,225,95,131,164,240,239,140,252,79,241,27,90,176,134, 235,194,214,209,220,217,137,158,48,101,153,226,102,142,53,89,62,239,152,219,85,89,89,119,49,43,183,229,90,240,207,134,30,45,182,240,111,137,236,245,93,111,77,210,117,139,13,22,57,109,167,178,142,236,217,201,170,9,21,240,198,100,27,155,203,102,70,221, 199,220,81,239,81,120,219,226,221,239,141,244,13,51,77,254,204,210,180,200,52,182,153,147,236,112,121,111,35,203,196,167,63,221,108,140,199,95,133,82,112,167,27,203,89,31,176,202,47,225,47,124,126,241,141,191,197,31,142,26,143,136,173,236,110,109,52, 141,118,229,110,236,237,55,38,228,181,225,66,170,174,66,255,0,171,97,206,91,251,197,155,44,121,59,237,73,46,53,41,38,140,202,229,229,220,165,155,238,199,159,149,127,239,159,150,153,175,235,71,90,191,141,161,2,52,134,8,173,162,82,126,109,145,168,85,102, 255,0,107,131,66,44,145,67,110,166,218,67,20,236,26,54,49,55,239,112,112,118,183,241,109,63,47,203,92,239,185,114,71,212,191,176,47,192,189,63,227,111,197,173,49,188,101,123,119,160,91,66,99,213,98,54,103,108,151,17,198,202,203,26,183,252,179,86,111, 149,126,109,203,187,229,175,216,31,9,65,36,150,147,94,95,29,182,241,237,243,119,47,239,36,102,221,183,253,223,151,239,55,251,63,237,87,229,143,252,18,251,224,164,63,23,126,55,92,95,94,221,106,141,164,120,90,40,117,55,134,222,111,150,43,173,223,37,188, 155,149,183,46,237,204,202,187,89,118,175,247,150,191,93,127,103,63,131,154,167,199,29,118,250,215,197,118,247,222,24,240,164,112,121,144,94,69,243,92,77,185,155,127,222,93,177,237,141,126,247,240,238,221,187,119,202,191,93,195,220,81,134,225,236,44, 231,87,226,111,225,91,252,251,31,59,153,228,53,115,170,145,141,62,159,205,177,242,207,237,253,251,48,248,147,246,159,178,248,107,167,252,26,211,160,215,46,52,31,16,61,230,161,186,85,133,108,162,104,29,22,73,164,111,149,85,165,242,215,251,219,155,238, 252,173,94,141,251,50,127,193,44,252,62,191,18,35,185,248,173,226,5,241,31,131,116,25,118,235,122,181,158,216,108,110,174,215,254,92,172,247,51,52,209,198,223,44,211,124,170,223,117,127,138,189,27,198,190,19,248,117,63,128,239,83,89,214,181,11,63,132, 186,109,195,53,150,163,127,119,182,235,196,237,27,124,182,218,108,107,247,161,243,62,105,47,36,220,205,247,99,251,204,213,215,106,222,58,241,103,237,19,240,126,223,65,255,0,130,123,252,55,190,240,247,133,228,219,111,55,138,181,133,91,123,88,255,0,135, 109,156,63,235,38,255,0,190,85,107,225,184,159,136,171,231,152,137,227,35,30,85,47,235,87,250,31,71,146,229,20,242,172,60,112,235,94,83,218,254,49,254,211,30,11,253,150,190,10,52,30,6,187,210,124,33,164,196,22,214,41,111,223,108,113,170,175,252,187,218, 175,239,166,111,225,85,85,93,205,95,9,254,216,223,181,206,187,174,252,51,240,213,214,131,161,124,69,210,91,89,89,218,198,255,0,197,54,203,107,14,177,15,157,100,205,45,141,154,252,214,241,172,138,171,186,111,222,55,251,172,173,95,72,252,9,253,150,124, 15,240,86,93,127,87,248,219,113,55,139,188,117,165,249,112,221,107,90,170,199,112,182,110,223,242,206,63,51,247,112,255,0,15,202,187,164,109,181,159,251,80,124,25,241,247,198,79,15,75,113,226,8,214,59,141,74,72,228,210,117,107,251,57,188,205,46,218,222, 104,230,95,221,172,138,170,178,73,26,182,221,172,204,171,243,109,254,31,152,195,212,165,133,159,180,168,254,103,179,136,231,169,19,243,26,231,77,248,137,241,47,199,126,17,125,99,80,26,96,128,218,205,123,28,23,27,103,190,89,99,153,90,225,182,252,219,100, 93,94,77,203,247,119,87,211,63,14,188,1,55,192,95,29,95,234,158,11,157,33,142,89,55,93,202,215,173,230,93,195,105,255,0,9,84,145,110,85,249,91,229,134,211,119,247,190,95,238,173,120,39,198,29,107,84,253,142,188,91,21,159,133,174,14,187,168,221,217,253, 146,89,226,211,100,143,236,241,249,214,242,71,243,73,185,91,115,90,70,202,191,221,86,254,245,109,252,63,255,0,130,152,248,27,79,240,211,233,255,0,16,62,25,124,65,188,212,87,77,184,73,239,180,173,98,195,253,54,230,75,73,237,217,218,27,133,95,47,115,93, 79,35,109,221,181,182,237,86,249,171,236,176,216,186,56,186,124,241,149,209,226,203,220,145,227,158,16,248,11,227,31,133,31,17,110,60,51,241,6,250,218,253,172,98,143,75,67,36,205,43,61,207,217,225,141,127,188,203,186,79,247,190,245,74,223,177,31,197, 79,135,210,248,115,73,241,52,16,223,234,26,132,13,120,90,4,155,230,134,63,38,54,147,247,150,232,219,119,71,115,243,42,237,109,203,243,124,223,47,83,175,254,217,126,28,241,23,237,19,109,227,11,207,12,106,209,233,13,226,136,117,217,180,187,169,85,174,26, 37,185,142,227,236,210,52,123,163,251,170,209,238,95,225,106,250,139,225,207,252,21,239,225,143,142,53,205,95,196,191,25,111,181,157,47,198,186,213,234,202,179,67,225,237,70,246,45,18,194,55,152,69,101,110,209,91,180,109,28,107,51,50,237,251,207,247, 190,111,150,177,204,42,212,143,47,176,215,185,182,18,52,170,185,123,73,88,251,119,246,1,253,150,252,47,224,223,217,43,193,23,26,222,147,52,126,45,181,138,77,121,230,146,38,184,186,211,103,146,89,21,97,251,44,223,187,102,109,171,15,147,181,119,47,205, 242,178,171,87,73,241,183,192,186,159,195,47,7,106,90,199,198,203,168,244,120,116,153,164,241,53,166,187,165,93,71,110,190,29,101,134,70,149,60,153,190,109,191,51,109,86,105,188,205,205,247,190,237,108,120,111,246,255,0,248,71,240,123,246,127,189,248, 205,241,23,197,75,38,155,226,43,134,109,37,93,126,213,168,106,63,43,52,118,150,177,237,86,150,102,249,153,182,175,203,181,183,50,170,215,200,191,10,236,62,34,255,0,193,124,60,126,218,175,237,25,165,106,158,1,253,155,188,49,35,75,111,163,218,52,139,255, 0,9,61,216,109,209,238,185,143,247,147,60,123,86,70,184,141,124,184,89,150,56,89,155,116,139,240,248,170,51,173,81,202,122,71,175,252,15,51,222,141,101,29,34,126,28,252,55,121,46,162,23,119,114,11,91,171,150,105,165,103,143,106,43,77,185,164,255,0,119, 230,102,249,127,224,53,245,159,236,11,251,48,233,255,0,26,63,107,79,133,154,103,136,97,158,63,6,107,222,34,107,27,253,98,235,111,151,28,80,233,151,87,46,29,183,46,213,255,0,71,95,189,242,252,213,243,55,217,180,207,3,252,83,241,29,180,48,13,70,215,76, 213,117,43,59,37,127,154,57,2,93,205,12,95,248,234,175,205,91,254,24,134,255,0,88,181,155,76,131,82,212,172,161,213,25,86,85,181,186,146,221,149,85,126,102,249,89,91,230,93,209,255,0,186,223,55,203,95,160,53,237,40,36,143,159,140,185,42,115,31,89,126, 222,223,183,213,247,237,95,241,122,111,15,254,207,215,218,134,131,240,67,192,72,218,22,146,154,117,244,214,191,240,152,143,149,100,186,188,88,217,86,107,118,219,182,56,219,114,180,123,153,179,230,46,223,37,89,188,152,70,245,219,182,188,215,226,175,196, 75,111,132,30,25,180,210,252,43,111,110,151,110,139,228,68,23,247,118,241,175,241,109,255,0,208,86,155,240,67,227,29,215,196,11,107,251,63,18,24,197,237,164,126,124,114,70,187,124,200,255,0,221,254,242,255,0,236,213,197,66,156,104,251,145,52,173,57,213, 124,210,60,135,87,157,109,117,43,209,27,172,138,215,19,13,203,247,91,230,106,173,112,255,0,36,64,183,59,126,106,53,17,12,177,193,45,150,229,243,224,86,147,116,155,191,125,185,188,207,247,87,238,237,90,161,44,255,0,54,5,125,92,37,238,31,62,225,239,18, 72,197,251,87,232,47,252,27,123,241,11,65,248,127,251,117,106,215,62,60,212,237,116,136,102,240,204,158,84,243,200,170,170,35,153,164,151,115,55,221,93,187,107,243,190,107,189,178,108,53,244,23,252,19,246,239,86,210,60,115,226,237,67,194,114,69,28,214, 186,7,217,155,204,10,207,55,218,110,22,63,38,53,101,251,204,177,201,243,127,10,174,239,154,185,235,227,62,167,78,85,23,67,74,56,111,107,46,83,245,103,196,223,181,143,135,254,9,234,214,94,33,209,53,75,73,175,52,173,102,238,105,227,85,146,79,180,89,77, 170,218,77,58,199,229,238,105,25,173,99,153,149,85,126,105,22,63,239,87,187,203,255,0,5,125,248,25,164,205,11,106,30,59,240,254,149,4,76,170,169,171,234,16,90,189,198,223,55,115,71,186,79,250,104,181,248,121,111,225,183,120,215,69,241,134,131,174,95, 141,23,109,205,149,221,141,219,44,150,138,223,52,11,251,152,247,50,174,237,219,191,231,155,42,255,0,13,79,161,124,55,212,190,209,48,212,109,109,214,13,66,85,130,107,105,238,215,108,114,43,124,173,183,255,0,102,106,242,163,156,78,127,100,233,89,60,57, 185,185,143,216,205,111,254,11,109,240,42,198,194,113,167,120,170,13,84,173,187,127,200,50,43,189,69,91,106,71,27,109,251,61,187,110,251,181,123,225,143,252,23,255,0,225,111,131,190,44,218,31,26,199,169,233,66,250,217,218,205,155,78,154,102,187,142,226, 85,146,54,85,220,187,87,247,108,191,53,126,61,222,252,7,214,60,119,28,214,190,15,107,40,161,211,36,101,187,158,54,93,208,43,51,44,127,55,241,51,109,219,185,127,224,75,95,89,126,206,95,177,183,236,225,251,53,124,56,178,241,63,237,159,226,93,58,111,19, 106,43,29,198,132,117,155,225,110,182,200,161,183,65,107,4,46,210,72,187,139,6,206,237,219,191,135,229,90,231,175,155,212,154,58,232,229,48,230,188,79,120,248,165,255,0,5,88,253,158,188,113,226,121,230,248,105,240,59,227,179,92,105,90,137,188,55,86,183, 186,93,149,173,212,139,13,205,170,179,45,213,227,180,113,178,223,76,223,50,171,124,202,223,195,95,44,254,209,191,240,84,187,223,138,190,37,241,174,185,224,47,15,232,222,31,211,60,107,169,205,105,168,195,170,107,54,183,26,141,157,204,150,182,208,187,121, 22,202,203,44,109,29,165,190,221,187,127,224,91,171,3,197,63,16,190,6,219,252,68,212,117,175,15,222,219,91,217,233,31,232,254,28,208,116,31,2,201,101,164,194,178,77,186,123,139,175,51,111,218,228,218,177,201,30,213,85,143,107,47,222,106,246,31,134,218, 207,236,227,251,102,124,66,186,177,241,15,131,243,226,203,152,25,180,139,155,123,233,52,131,101,181,126,85,133,85,99,145,153,118,175,202,222,98,200,172,202,202,213,202,179,170,146,151,44,101,247,51,162,121,76,36,253,232,31,34,120,155,246,141,241,229, 198,139,62,165,46,191,167,91,218,38,162,247,209,205,99,103,111,251,203,159,182,182,162,178,237,49,238,95,244,182,107,173,223,195,39,247,190,237,113,94,60,253,169,252,66,126,15,120,123,89,240,167,137,110,229,213,109,238,103,177,158,214,120,218,63,179, 45,190,232,237,154,217,163,242,213,163,242,110,110,62,86,86,249,102,101,254,38,86,247,15,219,215,246,74,127,217,99,74,143,197,154,86,141,167,106,222,26,214,93,109,173,254,215,122,205,126,223,55,153,251,197,85,221,229,175,250,182,147,248,91,110,229,95, 189,95,4,235,218,224,212,47,47,228,72,237,173,45,174,110,90,127,176,43,55,145,108,223,236,175,240,215,77,58,213,49,17,230,190,198,53,48,180,169,125,147,180,214,63,107,15,28,252,77,209,237,244,143,18,248,147,92,212,111,216,219,218,192,170,202,158,68,49, 238,220,139,229,170,252,184,102,202,182,237,202,171,185,153,87,21,135,225,239,140,186,198,133,171,173,205,158,185,169,64,234,191,187,151,204,93,223,238,174,213,249,119,87,27,230,165,171,163,216,249,95,106,86,109,190,90,55,203,83,106,222,100,241,68,111, 183,60,143,243,109,93,191,248,246,218,167,78,21,61,217,68,198,49,143,194,123,175,134,62,33,221,248,146,222,11,191,26,221,221,222,221,78,171,246,69,176,185,85,150,8,219,229,145,90,5,219,181,155,106,237,101,249,190,95,188,181,186,94,125,24,71,14,159,170, 105,108,150,40,205,115,51,92,179,47,147,39,222,253,219,47,250,205,223,46,239,246,171,231,239,2,120,194,72,53,216,22,234,86,91,88,219,230,218,191,55,254,59,247,191,187,90,158,51,241,93,228,154,245,237,166,143,60,178,65,60,219,60,197,102,118,149,191,222, 251,223,236,215,153,95,46,140,255,0,194,28,167,168,47,197,105,47,53,77,71,254,17,125,103,196,22,175,119,34,237,107,77,67,236,203,55,203,251,197,153,85,151,116,63,194,223,222,218,191,47,203,94,145,240,235,226,245,167,133,180,173,111,195,190,34,248,159, 226,205,31,72,214,86,8,181,169,244,221,45,174,174,60,65,2,178,237,69,107,173,222,74,198,219,182,170,237,220,171,185,107,229,253,5,209,35,242,195,90,249,200,191,188,89,149,190,239,251,223,231,238,213,245,146,105,227,18,106,119,49,199,108,219,163,105,25, 119,190,230,86,249,190,95,155,119,251,181,207,60,2,77,69,21,25,202,43,221,61,153,252,119,5,181,226,55,135,181,75,173,110,91,157,74,214,219,77,158,101,218,214,77,187,108,59,153,153,164,93,191,46,223,47,108,106,203,242,237,85,164,241,239,134,175,252,123, 109,5,204,199,85,241,15,136,117,29,75,110,173,44,229,162,147,206,88,254,88,231,158,77,210,52,141,183,230,102,249,188,191,155,239,109,175,43,248,119,3,105,158,47,211,238,238,237,109,174,237,116,233,99,189,150,41,181,9,44,154,120,126,238,213,184,85,243, 17,183,109,101,146,53,220,187,126,90,245,255,0,138,95,17,174,245,111,11,91,234,247,122,149,237,210,207,114,173,28,40,215,13,6,163,13,171,109,150,226,218,86,85,221,50,205,43,67,230,174,233,55,52,141,252,44,181,51,195,251,39,24,192,210,146,140,226,122, 103,198,255,0,24,232,7,246,137,248,136,222,11,214,173,101,209,101,213,162,143,64,212,86,217,236,224,129,22,222,55,185,242,237,97,249,93,102,102,154,217,151,238,170,171,52,123,89,183,87,156,124,68,248,133,225,237,22,97,172,88,92,253,179,80,153,98,180, 185,209,160,211,87,254,38,17,182,229,145,154,229,164,111,149,85,183,47,250,182,102,249,127,134,189,203,198,63,176,111,134,60,111,251,62,201,226,207,217,211,198,87,190,51,214,27,69,158,73,188,39,226,8,36,210,117,141,34,255,0,116,108,169,106,171,255,0, 31,139,28,43,55,204,223,187,153,164,86,86,85,249,151,137,253,158,126,21,252,41,213,38,240,222,179,241,207,195,247,26,135,134,108,116,203,109,107,237,154,69,197,213,219,107,113,101,150,233,164,95,49,99,134,75,38,16,203,37,187,126,242,101,221,178,54,251, 173,197,5,10,113,246,146,142,223,240,223,215,204,209,209,159,63,188,110,126,199,223,3,174,60,89,240,201,60,73,226,41,45,236,215,79,138,223,94,240,214,155,253,171,29,172,250,220,150,247,158,99,50,249,141,229,178,175,151,229,254,241,118,238,111,246,149, 171,119,246,166,241,167,132,188,118,124,63,121,240,226,243,86,187,188,147,73,109,71,91,210,174,180,245,120,116,230,87,146,69,135,206,133,182,201,112,219,183,50,238,111,151,201,254,244,117,234,186,175,193,205,51,194,122,199,142,244,171,61,91,194,90,188, 223,15,117,120,188,75,101,162,93,89,45,213,158,189,160,92,237,105,39,183,190,143,106,249,145,179,77,111,37,188,159,51,52,49,183,221,111,155,47,193,191,9,117,207,21,120,223,197,190,1,253,156,181,93,94,203,196,126,44,209,45,60,67,167,89,234,176,199,28, 154,196,81,172,210,106,26,114,200,187,149,110,173,219,236,247,74,209,179,121,203,12,138,187,124,189,203,226,84,173,42,242,148,223,248,163,169,215,40,168,67,217,242,156,247,129,127,104,77,63,226,111,195,95,11,197,226,79,13,79,173,235,62,30,191,86,214, 53,141,119,86,146,253,117,8,26,79,221,89,91,233,159,44,42,191,185,135,204,102,111,51,203,243,27,115,110,106,250,47,246,125,210,254,4,252,93,253,181,60,45,174,254,209,126,17,213,172,60,75,61,254,159,173,152,52,180,139,73,210,237,89,118,207,2,180,109,251, 235,171,117,184,85,142,21,253,218,180,109,187,111,247,190,80,241,223,195,95,24,201,240,127,91,241,182,173,45,134,139,166,107,58,94,165,170,64,151,201,10,223,197,170,91,90,125,182,43,41,172,212,36,144,201,50,205,38,214,219,181,182,178,182,214,218,173, 247,62,137,169,252,30,240,127,194,111,27,31,134,150,54,115,106,154,150,179,240,178,43,107,235,153,150,242,233,108,181,59,141,58,67,29,187,72,204,203,26,203,231,182,213,251,171,186,188,236,77,44,68,164,165,29,229,231,212,211,9,41,75,221,169,240,249,159, 120,15,216,170,203,225,231,198,125,91,199,62,21,248,103,21,172,151,114,222,204,241,120,127,196,241,67,111,116,183,9,36,111,35,89,221,91,199,28,114,50,187,72,219,100,219,230,51,127,122,190,112,180,253,173,62,11,126,207,222,14,240,175,132,44,117,31,20, 180,90,35,234,22,81,127,104,218,91,53,197,199,218,87,253,78,235,121,54,171,43,51,54,230,218,172,170,219,107,115,254,11,17,255,0,5,49,240,173,255,0,193,141,103,192,159,178,255,0,139,198,179,227,77,58,228,77,172,65,166,221,199,29,156,86,95,188,89,97,184, 187,111,245,114,52,123,154,56,227,109,204,209,237,220,191,53,126,70,120,3,246,134,179,215,124,55,226,111,20,252,82,68,212,239,45,175,63,180,96,69,129,150,221,161,142,53,95,223,109,101,145,182,254,239,248,182,171,127,21,125,126,85,155,215,161,134,140, 37,63,119,225,90,127,93,199,86,24,63,249,124,189,230,127,66,191,177,183,237,93,240,238,235,224,255,0,132,124,57,97,226,237,50,75,251,104,77,148,91,164,242,214,79,47,230,70,220,202,184,223,31,221,254,247,204,181,244,125,150,173,22,169,2,53,163,172,139, 185,149,246,149,96,172,191,194,213,252,205,124,49,248,241,241,34,41,231,240,246,128,44,55,221,90,222,223,105,150,141,183,26,85,205,189,196,18,74,178,72,223,44,146,53,173,228,82,70,173,242,254,238,190,212,255,0,130,89,255,0,193,67,46,254,11,120,35,68, 63,16,46,174,181,29,59,80,134,245,175,45,222,118,105,154,104,110,228,142,73,63,222,85,135,229,255,0,190,126,90,197,208,88,104,71,217,202,231,75,167,75,16,255,0,119,185,250,219,169,219,175,219,34,18,52,170,170,205,14,240,123,237,108,110,255,0,190,82,181, 46,183,90,232,238,110,203,79,54,205,238,16,125,239,93,181,240,134,133,255,0,5,1,143,198,159,177,135,192,255,0,22,248,27,81,185,107,255,0,137,30,43,208,180,61,66,89,238,126,203,54,159,37,195,125,162,127,51,206,86,243,27,201,142,69,101,255,0,128,238,249, 90,187,127,137,31,183,103,135,239,252,109,241,67,193,190,39,190,77,82,199,193,26,100,143,119,167,198,194,43,169,94,217,213,174,31,205,86,86,93,171,190,77,171,243,42,198,191,222,249,190,50,110,92,245,163,203,191,252,49,215,26,92,242,167,30,99,204,127, 224,183,223,26,190,37,124,51,253,136,237,245,111,217,251,198,112,120,70,45,71,196,214,26,78,181,168,37,180,115,221,127,101,222,207,246,76,218,137,85,148,183,153,52,44,203,247,154,63,49,85,148,252,203,248,249,241,251,254,9,217,251,67,120,50,241,238,190, 24,248,251,64,241,55,132,110,109,197,196,90,173,165,253,190,136,214,214,237,24,255,0,143,171,95,45,164,143,157,234,190,92,146,43,121,109,183,31,116,123,191,252,22,23,196,90,127,137,191,96,85,214,252,61,226,11,221,86,210,227,226,13,181,190,153,111,54, 189,53,221,189,170,219,219,219,44,134,24,217,155,230,89,90,237,119,127,10,171,127,18,238,175,136,127,104,95,219,62,95,136,255,0,177,143,195,255,0,4,234,119,115,223,107,54,243,95,13,75,127,38,24,33,185,111,179,174,239,189,251,228,101,243,35,221,229,183, 150,205,181,90,189,238,22,203,171,96,240,113,87,139,147,148,186,17,158,198,20,171,114,167,246,127,82,135,132,127,100,47,135,186,165,133,236,95,21,255,0,104,13,3,78,241,32,182,146,104,173,45,52,167,158,214,107,133,86,102,138,75,166,145,91,247,155,118, 172,155,71,204,202,204,173,210,187,143,5,126,207,95,178,158,155,175,52,63,19,188,111,241,68,91,223,233,214,90,165,149,196,90,142,149,167,73,109,29,212,57,242,166,140,238,142,73,35,145,100,12,209,179,43,41,95,246,171,228,232,236,181,43,171,31,58,9,81, 82,77,202,191,237,127,122,173,120,15,225,253,246,185,171,27,29,62,233,97,121,23,204,62,82,47,204,223,222,111,154,190,170,171,151,44,185,170,191,235,208,240,35,123,251,177,62,177,253,166,254,16,254,205,95,2,188,13,30,169,251,45,124,65,241,87,196,31,23, 94,121,105,101,22,169,37,147,219,233,31,222,154,101,181,141,86,70,85,221,183,204,220,187,149,126,90,251,63,225,183,237,238,62,52,126,202,17,107,18,105,146,107,122,188,235,253,151,170,199,5,204,54,255,0,99,186,91,120,149,37,242,219,239,44,139,26,175,251, 44,171,253,234,252,115,212,236,175,237,188,64,246,1,190,211,115,4,254,70,216,215,230,102,221,183,229,254,247,205,95,109,126,193,94,7,241,47,130,190,21,248,147,84,241,60,8,150,119,87,255,0,97,130,209,213,146,246,218,101,88,90,89,101,141,151,229,134,79, 248,247,249,190,111,50,25,62,90,224,198,226,42,101,212,189,189,41,123,233,61,255,0,188,172,206,156,34,88,154,209,163,82,62,238,159,129,246,167,133,188,87,12,218,113,154,21,242,215,13,43,110,106,210,180,213,154,228,219,202,204,201,230,68,204,202,223,239, 47,255,0,21,94,67,224,239,18,164,239,111,110,147,42,163,109,133,162,118,93,223,194,204,181,232,30,46,212,148,235,246,43,181,161,180,212,188,201,17,163,249,91,203,86,253,231,221,251,173,185,100,175,196,113,56,22,156,153,250,158,31,16,165,27,29,39,218, 134,230,104,254,101,86,219,186,190,159,255,0,130,84,120,190,61,59,227,103,136,116,137,254,238,175,164,44,233,183,248,154,9,113,255,0,160,204,213,241,63,140,190,45,104,254,21,146,47,237,109,70,195,70,177,142,6,154,119,187,157,86,27,56,215,110,230,102, 255,0,226,171,149,248,79,255,0,5,179,248,93,251,40,252,124,210,245,237,58,61,123,198,86,186,113,158,9,206,147,105,228,199,114,143,27,46,232,102,186,104,227,101,221,181,183,51,124,203,255,0,1,169,194,112,238,97,141,106,120,122,50,122,255,0,219,167,54, 99,143,195,198,140,169,206,165,164,124,71,255,0,5,45,253,167,188,73,251,82,254,218,31,16,188,99,241,66,89,229,191,125,98,243,72,179,181,118,33,116,219,27,59,185,224,183,181,141,25,191,118,170,177,238,97,252,82,73,35,127,18,237,249,222,107,182,146,238, 72,224,85,118,219,251,201,63,187,254,205,122,7,237,115,241,207,77,253,161,255,0,104,191,30,120,231,192,26,17,240,246,143,226,255,0,16,93,235,22,250,116,179,164,210,88,45,196,158,100,145,179,71,242,182,233,26,105,62,95,249,233,92,62,145,160,93,248,138, 72,226,210,96,103,87,249,153,153,182,42,255,0,180,213,253,31,130,165,236,168,194,28,182,180,126,19,242,236,77,69,57,182,80,211,163,216,204,219,101,158,109,191,42,214,150,149,161,203,115,112,173,36,82,183,241,124,173,181,127,239,170,191,6,155,165,232, 176,92,127,108,203,45,229,212,31,242,235,27,109,86,255,0,129,125,230,173,15,1,124,75,177,240,181,140,224,105,208,180,161,119,43,75,30,237,171,255,0,2,251,181,232,66,147,154,56,165,87,144,159,72,240,53,198,174,46,154,215,204,104,224,249,166,111,186,176, 127,181,187,117,122,39,193,255,0,130,158,45,248,138,251,62,29,233,30,117,186,199,229,180,183,83,237,134,63,246,127,121,242,238,111,225,90,243,79,26,120,155,84,241,28,22,209,75,97,61,145,141,154,77,155,90,45,203,187,114,182,223,247,127,138,189,255,0,246, 117,241,46,165,171,248,23,204,211,22,8,39,180,141,167,190,89,3,72,203,31,202,191,248,242,175,252,7,239,109,173,101,236,161,31,136,202,50,169,205,25,114,158,143,224,223,130,254,53,248,45,224,125,26,246,230,227,76,210,172,188,69,119,38,152,214,159,103, 146,219,81,249,127,213,220,51,71,254,177,119,110,219,243,47,204,187,91,119,222,174,54,61,11,82,253,158,191,106,155,207,14,120,135,196,107,225,43,127,25,104,82,104,113,222,199,167,25,162,117,102,97,102,110,98,105,55,45,188,141,179,116,139,33,104,219,100, 139,181,85,235,213,109,252,89,170,65,109,38,159,162,235,205,170,232,218,173,156,145,232,202,242,201,255,0,18,143,51,116,109,28,138,209,237,88,213,149,190,101,95,239,47,203,181,119,100,252,87,211,245,43,77,95,194,119,191,23,151,78,75,43,13,53,188,59,160, 221,217,234,16,238,130,70,134,72,219,116,140,178,52,113,174,230,104,252,229,255,0,89,183,230,249,149,107,198,157,74,52,121,164,164,117,86,172,221,47,120,247,139,95,3,105,186,127,141,124,55,170,88,235,214,158,40,210,117,137,108,47,181,27,168,137,251,46, 131,123,117,110,182,177,205,37,220,50,42,222,72,208,179,76,208,201,31,239,36,104,254,104,217,86,190,178,240,55,236,57,168,120,91,83,212,180,175,134,154,188,122,166,137,14,169,21,156,87,183,15,52,107,116,210,42,171,203,52,107,186,70,182,105,35,242,247, 43,109,85,249,190,101,221,95,158,127,2,124,119,119,227,239,11,248,115,91,77,71,87,135,69,208,163,134,15,33,167,242,126,223,115,110,178,71,246,134,253,220,123,155,203,102,102,135,107,43,121,106,219,119,109,106,251,47,246,126,255,0,130,132,222,88,248,215, 77,190,121,175,155,195,250,62,137,6,159,169,219,172,16,198,171,59,73,51,36,203,34,254,237,97,249,102,95,47,239,124,223,118,190,118,181,104,85,148,125,164,118,254,191,81,97,43,74,50,230,229,61,155,226,223,193,29,107,224,182,163,227,107,137,224,154,27, 13,70,206,59,111,180,35,125,162,198,70,143,203,111,150,225,164,109,172,191,187,251,203,185,124,207,226,85,218,191,43,124,101,89,252,17,240,179,86,188,248,125,168,106,145,120,186,242,91,86,213,47,108,94,40,228,158,73,38,143,116,150,172,209,178,172,144, 238,111,47,115,109,249,89,91,229,221,95,99,106,255,0,240,84,175,1,104,41,170,182,176,246,90,215,132,18,254,210,59,253,86,198,69,154,43,121,110,54,219,252,171,247,89,119,55,250,200,219,107,47,203,247,190,90,249,55,227,39,198,175,132,191,14,254,59,120, 135,192,159,16,252,69,225,237,30,9,30,47,236,169,239,110,166,184,182,213,116,121,224,221,107,115,12,146,126,237,89,191,121,242,171,55,250,183,249,151,238,215,232,156,9,142,195,224,234,85,167,41,219,155,229,102,121,220,75,135,169,143,167,78,165,56,223, 150,90,161,31,78,211,254,22,120,106,214,93,102,202,199,81,212,175,236,97,209,52,139,85,105,149,165,105,166,105,33,211,173,228,251,215,77,229,194,210,92,77,252,95,51,50,170,170,170,237,252,52,240,181,151,193,155,141,113,30,91,123,221,67,195,22,11,29,212, 241,105,242,51,95,234,215,82,125,170,237,161,251,222,90,255,0,199,188,106,173,187,106,252,171,247,107,131,253,157,109,102,248,113,225,136,181,173,78,121,190,33,235,154,114,199,166,232,41,99,115,111,52,106,204,205,10,220,70,203,242,194,178,66,182,241, 201,35,124,223,235,190,237,117,186,166,157,171,252,42,240,71,216,53,237,94,211,82,215,117,24,154,231,92,212,195,121,112,172,242,76,179,126,229,91,119,204,204,210,71,12,45,252,42,204,204,219,107,246,76,187,29,70,165,56,184,62,107,127,95,240,199,230,88, 220,13,74,51,148,38,183,61,167,225,118,157,121,169,105,18,193,168,70,218,125,183,217,26,53,79,149,90,54,145,87,253,98,238,221,185,87,229,219,187,238,178,173,71,168,220,91,219,222,99,117,212,154,165,188,190,77,214,154,173,187,204,221,243,43,121,155,119, 109,218,187,151,119,240,182,214,174,7,74,248,169,119,97,13,181,183,133,237,53,8,237,237,224,221,60,173,106,211,91,220,50,201,242,199,111,51,109,243,154,70,255,0,150,223,119,239,124,205,87,245,95,19,234,150,122,212,190,37,42,176,223,93,91,50,192,170,204, 176,220,66,171,242,195,39,203,185,163,243,36,95,222,47,241,47,203,185,90,190,130,158,54,156,161,110,167,207,203,5,87,154,221,201,188,65,225,235,15,18,120,135,88,111,6,197,36,215,203,225,216,239,52,232,252,198,183,89,38,130,238,226,69,249,151,230,95,153, 86,54,111,188,190,103,251,85,71,226,79,138,116,79,133,250,78,161,170,69,111,13,245,186,104,141,174,182,233,124,239,37,118,175,217,126,212,205,253,237,211,109,85,255,0,89,229,237,219,242,252,216,30,21,248,163,109,173,252,100,208,102,240,165,207,216,95, 84,209,181,38,188,179,190,101,107,143,42,22,181,242,228,141,85,190,104,219,230,109,223,117,153,190,102,95,187,94,91,225,63,23,233,94,57,241,30,187,240,247,196,250,252,90,235,207,226,107,109,43,77,179,138,54,147,236,246,86,158,93,196,178,200,191,54,229, 107,85,251,58,182,221,170,211,44,127,121,171,202,196,99,105,203,223,132,122,239,242,185,236,209,194,84,143,241,31,186,173,238,254,7,226,206,175,166,233,119,158,24,181,187,208,222,226,57,149,118,94,71,40,80,158,111,59,124,173,188,149,218,25,153,155,31, 55,202,181,147,21,207,145,32,6,49,42,175,203,26,73,219,253,229,90,233,60,43,224,61,67,198,246,214,90,87,129,244,251,205,83,88,185,144,72,240,91,110,145,130,241,134,108,124,177,245,251,205,183,253,234,253,37,255,0,130,111,255,0,193,186,254,62,248,235, 226,13,55,198,31,180,44,167,195,94,26,5,138,70,144,173,197,198,162,251,54,226,53,101,218,23,230,251,204,191,46,221,223,53,127,59,226,49,116,176,235,154,122,31,181,81,163,58,239,150,39,231,119,130,124,41,123,241,110,206,13,19,192,250,13,253,255,0,137, 111,175,63,119,22,159,110,36,89,97,242,85,118,44,63,123,121,149,67,51,125,223,155,170,215,235,223,252,19,195,254,13,203,180,212,124,63,6,185,251,114,234,141,168,218,232,234,179,91,248,95,79,146,85,179,142,230,109,173,228,77,120,219,90,102,111,151,116, 48,170,199,184,182,230,147,239,87,222,63,15,63,101,111,128,159,240,77,159,13,232,233,225,223,14,120,115,69,138,196,180,79,121,48,243,181,13,90,230,56,247,121,62,119,205,37,196,138,171,187,254,2,170,181,205,124,112,253,191,175,165,248,95,31,138,224,180, 139,225,30,131,226,173,69,172,116,253,81,172,228,212,53,187,248,213,191,229,206,215,111,151,27,54,239,149,191,120,205,247,126,90,241,49,25,156,241,43,247,26,68,244,233,225,105,208,254,38,178,59,205,87,224,39,195,143,217,203,195,90,85,165,166,141,162, 233,58,246,212,142,195,193,158,31,211,151,204,142,40,219,253,74,199,31,204,203,253,233,25,182,255,0,121,149,126,90,243,15,218,243,226,206,169,107,225,235,155,111,26,76,143,125,121,7,218,160,248,117,225,217,214,79,178,194,171,251,169,53,171,200,254,85, 141,126,243,67,185,99,102,249,127,121,247,171,204,254,22,120,243,199,223,183,119,195,127,18,73,240,213,238,254,26,252,41,210,109,90,243,89,241,45,212,173,55,136,252,107,46,233,22,56,230,186,101,220,155,124,182,221,10,252,177,238,85,219,90,95,180,183, 193,143,135,127,4,63,97,123,203,255,0,4,125,179,195,214,218,237,215,147,231,203,44,210,106,30,34,155,110,232,164,145,102,85,101,89,54,179,110,249,149,86,184,225,8,195,89,75,222,254,191,174,254,133,84,155,80,147,143,194,124,91,227,207,137,62,46,248,253, 241,2,197,60,75,120,218,206,169,242,218,217,91,68,191,232,150,171,187,229,142,24,254,234,198,181,250,35,162,126,211,26,87,236,95,240,23,66,143,227,215,143,116,141,26,224,195,179,237,23,146,52,254,99,36,123,154,11,27,27,127,222,93,73,242,237,85,141,127, 224,85,249,61,63,139,69,142,161,21,214,133,123,4,107,4,173,13,202,193,43,52,145,126,239,119,221,95,188,191,45,63,197,26,52,62,41,186,125,87,197,154,163,106,186,157,255,0,151,12,23,45,59,77,61,221,188,108,223,117,155,229,142,21,86,219,229,252,187,91,119, 221,249,154,189,204,69,58,85,220,105,79,72,158,37,28,84,168,115,75,237,31,90,124,75,255,0,130,222,104,158,27,215,69,207,236,223,240,194,125,99,86,91,169,174,31,196,127,16,47,85,191,126,223,118,91,93,38,205,154,53,93,191,47,239,36,142,69,95,248,21,124, 241,241,199,254,11,9,251,73,124,112,190,243,188,79,241,99,86,210,17,151,105,181,240,246,155,103,167,218,162,250,42,180,115,72,171,255,0,109,43,194,181,237,34,109,123,196,17,217,88,92,89,105,118,235,109,39,203,63,239,39,180,111,49,151,111,203,247,155, 229,255,0,105,91,119,222,175,24,248,171,103,119,224,148,179,184,188,212,47,46,237,174,227,86,143,253,100,59,155,251,191,55,222,255,0,128,215,163,133,194,224,121,116,143,234,76,177,181,106,251,167,172,120,239,227,79,137,60,117,171,189,247,143,252,81,174, 235,55,146,31,50,73,239,181,9,36,102,109,187,119,125,239,253,6,185,117,241,20,47,51,63,218,17,217,191,139,206,174,62,199,72,210,245,43,11,150,212,111,99,180,189,179,45,231,90,92,74,223,105,218,187,126,109,172,191,119,230,172,135,185,208,159,119,217,239, 38,125,159,123,253,31,238,215,116,99,66,31,12,191,242,83,25,78,167,242,158,178,254,53,190,189,210,225,178,125,70,238,91,43,119,105,34,131,126,232,226,147,110,214,101,255,0,107,109,69,105,169,189,173,199,152,143,243,255,0,22,239,226,175,53,93,58,217,52, 137,111,244,173,66,118,130,38,218,205,24,219,243,82,89,120,150,233,46,82,43,93,66,229,153,151,114,171,195,189,127,207,203,79,217,82,156,189,217,19,207,83,237,68,251,215,254,9,165,227,191,217,238,63,143,49,94,127,193,74,47,245,149,240,213,140,113,199, 165,89,139,25,46,180,105,37,146,79,222,54,165,36,106,205,13,186,237,86,219,242,194,219,153,166,251,171,95,208,207,132,60,117,160,248,243,225,254,155,175,252,3,184,240,254,177,225,153,108,115,165,222,104,151,49,73,166,203,15,151,242,164,50,71,242,178, 237,219,253,221,181,252,133,105,63,19,229,181,153,127,181,33,251,191,242,210,63,189,255,0,124,215,191,126,199,63,240,81,159,136,31,176,127,136,47,53,239,217,187,196,113,105,150,186,145,103,213,52,123,216,90,235,68,214,75,46,221,215,118,170,202,190,119, 220,219,52,109,28,219,149,119,51,42,249,117,225,231,28,50,241,171,218,115,89,175,187,250,254,172,122,24,28,205,83,247,121,79,7,187,180,18,248,243,90,242,54,69,183,87,212,31,204,127,151,106,173,236,191,122,189,95,195,90,148,9,162,233,210,218,89,109,129, 110,230,86,212,153,126,246,216,254,104,119,127,186,219,182,255,0,187,94,59,224,139,73,53,189,105,70,168,207,113,36,207,36,211,201,35,42,180,197,153,164,121,27,248,119,51,51,127,223,85,239,111,240,213,174,63,97,175,29,120,187,77,145,158,61,27,89,211,224, 182,243,83,106,197,111,115,63,217,36,101,111,249,233,186,69,221,94,130,253,213,11,18,211,148,175,19,230,47,30,248,166,111,25,248,170,243,83,157,190,91,153,63,114,173,252,49,175,221,95,251,230,189,143,246,62,208,252,1,23,195,111,139,58,175,196,219,191, 16,217,248,214,15,12,152,60,0,45,97,105,52,235,141,84,204,210,75,29,225,95,152,6,129,86,56,218,79,220,229,164,220,202,222,93,120,116,209,251,113,94,179,225,136,225,240,183,195,165,91,182,242,182,218,201,36,141,253,214,101,175,53,207,149,242,157,52,225, 161,229,83,77,20,107,254,138,89,162,31,234,217,191,187,252,53,86,75,143,45,219,149,221,187,214,171,172,205,4,16,175,241,109,90,107,221,71,105,181,174,14,214,151,229,90,250,41,86,211,221,60,53,72,155,204,243,103,85,234,107,215,255,0,102,205,123,196,26, 53,167,136,173,252,25,99,18,233,250,188,80,219,234,186,148,251,150,56,160,141,153,154,221,91,107,47,152,222,119,202,191,121,155,109,120,213,163,220,222,206,255,0,102,129,231,9,180,34,70,132,179,150,109,160,28,127,19,51,42,175,251,77,95,168,255,0,1,255, 0,224,151,119,186,175,195,109,37,188,115,169,199,225,29,35,193,26,84,49,234,122,180,150,19,94,216,95,234,215,13,231,52,83,71,12,202,219,161,141,85,188,230,253,220,106,203,187,119,221,95,43,31,139,140,96,169,239,115,208,195,97,165,47,120,241,237,34,226, 255,0,194,94,1,181,213,70,143,162,73,117,20,30,111,151,169,91,77,123,123,231,125,223,51,229,145,87,119,202,187,119,43,109,219,90,95,2,188,57,226,127,218,119,227,111,134,252,51,125,30,137,101,22,179,117,230,207,60,122,124,112,195,109,183,107,73,36,141, 185,126,111,155,238,179,46,230,111,189,95,79,120,67,254,9,82,159,20,90,254,227,225,239,196,139,15,25,73,109,168,253,142,230,127,14,180,114,90,217,238,135,237,17,195,113,113,247,99,145,163,242,219,107,127,11,127,180,187,190,132,255,0,130,120,255,0,193, 62,116,255,0,130,62,52,241,22,179,226,7,143,87,215,47,222,59,24,154,242,197,85,172,214,70,104,247,71,187,230,249,191,189,183,255,0,101,175,42,158,142,242,137,233,114,242,251,177,60,91,254,10,27,227,253,63,254,9,231,240,11,193,255,0,14,62,28,197,165,95, 107,55,246,171,34,79,115,107,187,236,208,71,230,43,94,201,39,222,186,105,55,44,106,179,109,147,118,233,25,155,107,87,227,255,0,142,254,57,94,125,190,86,240,178,220,222,221,162,172,115,106,87,78,210,188,187,87,111,204,205,243,73,255,0,2,175,173,127,224, 187,95,22,102,248,145,255,0,5,1,248,131,166,90,188,176,217,120,111,81,95,12,90,172,46,204,90,218,193,118,178,170,255,0,14,233,164,184,111,255,0,101,107,227,31,21,164,122,109,134,233,45,153,34,147,248,127,187,92,248,104,199,22,149,122,159,11,248,98,60, 69,105,82,126,206,153,204,234,31,20,60,73,125,56,121,245,43,136,207,240,170,97,86,174,232,191,27,124,69,164,92,196,215,55,9,124,33,112,232,179,196,191,35,41,220,172,172,187,89,89,78,8,108,252,181,139,246,102,187,145,152,38,205,189,21,170,9,16,62,237, 245,235,42,52,26,229,246,113,56,227,90,172,125,238,99,235,189,11,246,213,190,253,160,124,45,166,104,255,0,23,47,174,245,136,161,43,107,113,29,211,121,140,176,178,237,37,199,252,180,31,244,211,239,109,251,223,50,230,188,67,226,239,132,227,248,127,241, 19,81,182,211,33,130,234,210,71,115,97,230,196,211,171,70,204,216,102,221,252,75,181,191,218,95,149,191,138,184,15,3,106,18,105,62,51,210,222,205,153,89,174,18,38,219,252,74,228,15,253,154,191,67,126,11,126,204,211,252,69,211,124,253,51,81,104,103,243, 154,121,218,222,21,95,181,254,239,254,90,73,181,150,53,86,218,222,103,251,59,127,138,186,169,193,66,26,28,245,234,115,75,152,248,75,71,248,125,226,123,153,211,251,59,68,189,144,92,200,4,74,176,160,89,176,51,133,222,63,239,175,225,101,249,90,170,93,105, 6,213,254,205,168,193,37,164,241,51,44,192,178,238,86,254,234,170,255,0,118,190,137,248,85,226,27,233,254,34,235,159,240,156,107,171,126,222,30,158,226,214,222,95,35,201,183,212,87,115,47,156,187,190,101,86,219,242,255,0,19,43,127,181,95,63,252,84,211, 150,211,226,102,168,109,101,255,0,71,188,184,107,152,102,242,90,5,219,39,205,242,175,247,87,238,209,105,114,243,19,22,156,185,78,118,40,20,74,223,100,44,251,254,93,172,191,122,180,188,65,175,220,71,114,86,29,67,237,142,236,178,200,219,54,225,182,171, 110,86,95,251,231,229,254,237,76,154,231,218,47,154,242,249,45,118,91,125,232,213,150,47,63,253,218,137,164,183,159,83,73,99,138,95,178,44,123,182,171,124,203,253,223,154,137,26,114,147,120,63,197,179,195,117,47,217,173,98,156,186,183,152,27,230,216, 191,47,204,191,252,85,109,217,95,67,172,107,209,91,201,43,65,3,171,110,111,45,155,116,155,126,93,203,254,245,100,91,106,239,226,47,38,43,64,34,187,132,58,198,68,127,44,205,38,214,109,204,187,118,238,99,254,214,223,225,174,239,75,240,61,134,169,113,14, 149,162,234,246,211,79,38,154,183,109,229,178,255,0,199,210,198,205,37,188,140,219,126,235,43,124,203,254,205,114,212,146,136,114,255,0,41,83,192,218,165,174,163,110,240,106,19,74,215,201,117,28,246,234,168,191,52,158,91,46,214,111,188,171,247,126,95, 247,171,115,226,53,197,223,134,252,11,225,123,139,73,181,217,86,54,145,173,60,247,105,109,173,36,142,70,102,251,58,238,218,172,210,46,230,141,182,253,230,111,226,106,236,190,25,126,206,254,22,241,105,240,230,165,227,93,66,227,195,126,24,155,195,86,250, 214,175,170,219,234,81,205,113,60,236,210,44,233,10,74,172,168,202,202,191,185,219,252,77,243,87,81,241,171,254,9,125,226,111,9,120,178,234,195,224,70,167,97,227,13,50,250,8,47,108,119,222,45,157,246,161,230,126,237,130,194,118,199,36,170,219,126,85, 145,89,183,47,74,227,148,233,251,78,89,27,67,15,47,136,234,252,25,23,142,252,91,225,203,173,123,246,86,214,228,241,66,105,182,70,77,115,67,55,139,121,117,117,20,203,26,221,221,219,198,200,178,94,105,145,179,44,23,11,27,52,136,202,171,177,98,219,34,251, 110,161,62,181,111,169,90,252,88,26,125,182,135,225,127,17,90,71,105,173,193,163,15,58,222,25,228,218,178,67,169,50,249,141,36,211,71,28,159,101,212,87,111,152,167,201,249,102,88,214,78,27,225,103,129,60,23,31,197,11,63,13,248,168,220,252,31,248,161, 97,113,5,222,131,171,36,173,167,104,190,40,69,101,95,42,235,110,207,236,125,78,85,105,33,91,136,124,187,105,164,105,18,104,215,204,88,219,212,63,101,184,124,71,225,47,138,241,232,95,8,174,60,41,175,235,26,172,119,177,216,120,83,84,153,23,70,248,153,99, 44,143,246,237,18,225,85,140,86,58,172,109,27,51,64,191,242,222,51,60,27,155,206,138,111,23,23,69,215,127,185,248,123,239,254,119,252,206,164,253,151,248,143,48,248,242,154,231,131,180,72,227,138,230,194,45,111,225,242,205,113,164,105,237,2,221,193,226, 61,26,226,56,110,45,166,142,237,155,253,34,63,179,199,28,123,155,229,145,161,86,249,89,153,107,217,188,41,241,28,248,87,91,240,71,196,15,131,242,233,208,120,139,192,55,62,68,242,254,239,201,154,77,177,220,64,183,77,247,149,164,133,150,31,149,127,213, 204,213,225,191,181,23,133,116,127,2,47,135,60,69,240,226,251,90,212,254,24,141,90,247,66,178,183,212,202,175,137,62,31,106,11,230,77,117,225,141,90,54,255,0,150,150,242,44,211,69,39,73,99,243,54,182,239,245,156,199,134,245,219,207,13,94,204,19,80,26, 157,151,196,43,56,34,129,80,42,165,166,167,103,35,109,89,23,248,118,170,219,200,191,197,36,114,73,247,182,173,124,214,55,13,90,140,253,140,223,189,241,70,71,44,170,114,207,222,55,190,49,248,154,211,198,22,86,186,183,128,109,111,109,116,221,71,95,213, 52,232,21,211,109,196,54,90,148,147,92,90,67,35,125,239,244,121,150,107,53,221,253,221,191,197,94,23,168,124,74,215,124,59,224,43,173,47,194,151,242,193,165,93,199,166,73,129,51,111,89,237,36,107,139,93,173,254,178,63,37,164,147,111,150,203,183,238,255, 0,10,237,247,47,136,182,58,118,181,251,57,120,178,255,0,195,118,211,164,58,245,165,166,187,167,36,82,48,54,210,220,79,29,222,230,111,188,222,93,194,179,47,247,124,198,90,249,179,196,183,111,246,47,13,159,18,93,197,4,62,33,211,116,219,136,46,153,247,69, 28,46,102,69,105,62,238,223,39,111,207,183,118,213,93,223,53,122,24,85,42,210,147,135,196,165,255,0,13,250,156,53,97,41,251,209,59,207,141,94,55,151,86,241,127,218,93,98,185,178,187,157,110,214,11,235,149,154,75,171,173,203,28,141,119,183,230,93,210, 44,159,55,252,243,109,223,123,230,174,231,195,218,61,191,129,60,89,225,239,30,248,74,235,78,63,15,109,27,117,205,173,236,185,146,220,42,152,245,29,34,225,126,109,211,67,12,205,60,114,50,172,115,67,228,178,183,202,205,94,35,106,182,186,28,210,157,122, 19,121,123,102,100,158,3,27,121,176,95,201,12,141,26,174,229,251,209,200,187,153,100,95,225,218,223,197,87,188,35,226,185,102,190,138,202,244,45,191,135,239,255,0,119,169,45,178,171,52,118,234,222,103,218,25,191,189,28,159,50,255,0,192,151,248,171,87, 79,217,46,84,191,175,248,38,17,169,239,115,51,233,95,130,151,182,254,23,248,147,241,107,192,94,36,150,29,35,89,208,46,162,212,52,147,109,116,211,1,111,37,180,118,111,116,146,110,111,151,236,242,105,179,50,238,195,44,205,183,230,140,213,175,216,243,199, 81,120,119,194,218,69,150,187,113,172,55,137,44,181,173,94,202,226,61,139,53,172,151,140,209,223,36,106,223,194,191,103,105,163,221,242,174,230,85,254,37,175,25,211,116,171,143,11,105,54,23,218,61,221,130,107,30,18,73,188,39,122,141,11,70,179,216,76, 172,209,239,255,0,158,138,202,205,10,252,219,119,70,171,247,149,107,35,68,248,173,253,149,175,67,168,248,90,254,24,207,218,97,187,137,110,98,102,88,111,214,29,177,201,38,214,86,104,217,87,201,147,253,229,170,158,33,77,201,67,155,254,15,249,51,182,24, 169,194,92,209,62,140,248,223,241,69,191,103,207,136,90,15,195,221,27,91,215,103,208,254,26,95,54,183,161,90,177,219,107,29,196,118,240,201,108,223,236,170,219,205,34,238,218,219,89,150,185,72,126,50,106,186,37,158,165,160,120,166,73,238,245,47,21,233, 250,205,143,136,117,76,180,154,133,189,150,179,123,111,119,124,222,99,54,217,26,72,109,237,225,243,27,238,197,37,77,255,0,5,40,240,68,154,182,159,240,175,226,191,135,150,79,236,223,30,232,227,66,188,137,93,89,161,188,182,218,209,36,155,91,253,99,90,73, 36,108,223,197,246,21,254,242,238,228,245,95,10,220,107,246,90,86,168,247,40,215,26,255,0,194,7,180,112,187,188,197,191,181,134,75,121,228,255,0,115,116,54,255,0,188,255,0,105,171,153,97,231,8,66,163,171,109,191,15,235,82,170,98,234,223,220,60,167,227, 76,171,226,175,133,151,183,122,211,72,46,45,175,21,173,126,111,221,44,159,52,146,200,171,254,210,178,199,255,0,2,111,187,94,71,105,164,219,234,240,11,155,83,230,163,183,250,207,238,183,247,107,219,62,33,218,172,250,14,157,163,207,254,145,10,233,112,220, 181,178,174,217,60,233,163,102,151,230,251,223,42,170,255,0,236,181,228,159,15,252,41,117,162,234,183,127,109,137,154,210,73,213,99,145,151,106,204,203,247,153,87,252,255,0,118,189,44,166,124,148,101,7,45,98,44,53,73,86,248,196,180,240,229,198,157,112, 214,58,139,178,198,173,242,199,253,218,217,139,195,114,216,203,28,250,36,178,65,46,221,155,149,171,87,91,116,186,241,36,210,66,219,147,119,222,106,217,240,246,159,39,136,245,43,123,45,34,218,107,187,171,169,86,24,32,137,119,73,52,140,219,86,53,95,226, 102,106,250,122,52,35,203,205,51,73,75,151,225,62,170,255,0,130,38,127,193,31,52,143,248,40,190,189,241,26,247,226,222,169,127,167,120,123,195,150,159,217,144,205,97,57,142,254,61,90,225,35,184,130,225,126,244,114,69,28,108,219,163,147,114,200,210,47, 203,242,213,95,132,191,25,53,25,62,13,95,120,67,226,13,147,190,189,225,63,16,106,94,24,184,212,197,148,186,139,106,81,199,42,197,19,93,71,254,179,204,89,163,142,53,109,205,182,53,102,102,251,205,95,176,63,240,68,159,217,82,63,216,247,246,99,77,31,84, 242,100,241,70,189,116,218,206,191,177,149,148,93,200,145,170,194,173,183,230,88,97,142,56,85,191,139,110,239,226,175,199,223,219,79,193,122,231,236,251,251,126,124,89,211,254,27,91,234,18,91,104,255,0,17,174,181,171,168,39,185,251,50,223,45,235,173, 236,105,111,253,229,109,242,42,238,254,37,109,191,50,215,129,77,199,25,90,164,100,175,21,183,161,232,186,62,202,149,58,145,248,138,186,231,197,47,21,248,77,110,244,171,109,42,211,76,241,6,149,28,58,155,199,52,113,205,3,110,135,106,178,237,145,164,101, 242,217,118,178,252,191,188,111,238,181,80,248,187,227,109,107,95,184,213,116,207,18,106,218,211,68,179,44,218,106,219,197,37,147,91,249,150,235,52,54,251,87,230,104,219,107,70,223,222,251,205,247,107,43,226,167,139,52,79,30,233,190,28,214,161,150,59, 125,71,195,178,77,110,222,99,70,179,73,107,242,220,68,223,43,124,209,254,249,151,253,213,219,94,79,241,183,246,167,185,151,198,144,92,233,183,154,164,22,23,54,240,249,179,220,170,199,113,61,194,252,178,124,202,219,90,24,214,56,213,118,237,254,42,232, 250,173,38,249,169,211,143,55,167,234,77,76,125,94,94,94,105,16,248,159,194,218,147,120,97,180,203,137,44,180,11,25,89,110,53,15,42,45,242,92,46,213,147,204,105,217,183,77,38,232,254,242,175,221,141,87,119,240,183,158,248,163,225,198,153,103,225,11,139, 205,3,237,171,120,171,231,254,247,106,238,249,127,188,223,194,223,43,47,241,87,89,164,252,86,150,247,72,136,235,55,218,61,158,161,123,10,203,25,16,230,127,223,62,212,101,255,0,190,182,180,127,197,183,251,213,95,226,87,136,87,194,254,25,178,213,39,176, 150,249,228,143,251,38,245,77,206,216,230,147,248,89,191,186,203,243,109,111,226,218,170,213,219,70,117,233,202,55,60,215,57,85,220,241,255,0,1,216,65,172,45,204,247,114,237,48,76,173,183,110,229,101,255,0,122,183,117,143,29,36,250,27,89,233,177,61,176, 93,170,205,31,203,255,0,125,127,122,175,248,90,223,193,158,39,213,143,216,63,183,60,50,47,102,95,179,218,199,118,53,70,155,248,22,61,206,139,228,182,237,204,172,219,183,47,202,191,54,214,174,175,67,248,113,225,125,82,11,137,117,253,23,81,182,183,150, 238,75,33,123,113,168,60,107,12,190,74,178,200,241,175,250,177,187,230,243,54,225,119,109,249,191,135,208,150,42,20,57,165,34,126,201,230,158,24,211,165,241,118,176,201,231,198,178,186,252,203,52,140,155,150,189,43,72,240,198,157,108,206,144,248,114, 198,229,163,180,183,68,185,113,230,198,183,9,134,105,35,89,54,175,152,210,99,204,137,91,238,183,205,187,114,173,114,30,45,184,181,176,214,161,62,22,211,109,244,193,19,67,190,24,27,108,109,251,189,191,117,191,229,163,72,187,155,248,107,213,110,47,102, 176,248,30,176,120,143,67,251,115,106,147,199,113,102,179,234,31,232,214,243,91,237,243,166,251,62,221,173,242,170,253,230,85,219,183,239,50,215,38,35,19,57,114,255,0,41,113,162,229,31,132,232,190,29,248,135,78,209,154,195,196,94,52,151,73,88,244,187, 69,109,46,125,54,117,138,11,102,145,118,253,159,111,205,229,205,183,115,109,254,31,187,183,109,116,254,14,248,211,240,227,194,94,7,178,123,61,74,104,239,161,158,24,35,178,210,90,69,146,72,213,87,115,109,102,218,187,155,253,159,155,203,175,144,60,67,226, 125,79,196,58,172,137,169,95,171,71,11,237,11,11,117,221,253,200,255,0,133,182,214,191,132,244,223,236,187,70,186,154,6,181,219,242,180,211,55,221,255,0,190,190,106,198,166,83,44,71,189,42,146,94,132,74,71,218,26,55,197,143,11,124,90,241,37,133,151,135, 47,53,125,7,89,212,99,107,77,98,242,121,237,255,0,226,98,178,50,171,121,42,202,209,198,191,119,110,229,254,47,155,251,213,233,158,29,253,131,31,226,71,133,245,132,215,244,216,172,181,61,70,56,126,195,125,170,248,129,154,253,110,21,119,110,146,27,5,242, 119,43,44,123,151,230,95,238,179,87,195,95,13,62,52,105,62,26,213,18,88,162,221,117,27,67,34,222,207,111,36,144,105,190,92,155,155,108,112,124,210,43,46,229,101,255,0,118,189,114,239,226,167,140,124,27,227,157,118,218,195,198,62,46,50,219,91,70,46,245, 37,190,107,125,38,211,204,86,146,217,150,59,70,221,229,183,153,34,252,223,55,205,243,124,170,181,173,60,174,158,23,225,151,234,20,98,159,217,61,203,224,79,196,21,241,46,145,226,31,131,95,26,180,216,173,245,159,14,235,187,157,94,223,204,130,118,141,191, 213,178,201,187,247,62,91,44,145,238,218,205,30,221,223,197,94,239,225,127,131,58,53,151,138,124,81,107,241,131,78,93,71,195,62,33,138,56,94,8,237,163,91,91,245,255,0,82,176,201,27,109,253,226,201,39,203,183,114,237,109,203,95,149,63,11,190,34,111,241, 163,106,94,50,214,60,69,111,121,168,69,36,137,170,64,173,127,170,197,119,133,242,164,44,205,230,72,223,47,151,185,89,153,126,95,149,151,117,125,37,225,127,19,248,235,195,51,217,69,162,234,26,132,165,150,75,249,174,255,0,180,239,27,251,66,56,213,166,142, 104,217,164,107,127,58,54,85,95,37,161,93,205,185,151,110,221,180,234,96,28,174,162,255,0,194,116,66,167,187,202,122,103,140,124,127,97,240,55,198,30,24,208,62,40,193,14,155,225,40,124,75,61,133,246,235,102,91,111,178,127,103,72,209,70,209,198,202,172, 177,220,253,158,69,93,173,183,239,124,219,107,83,246,225,190,248,99,251,66,124,52,240,254,181,240,230,194,217,174,161,49,216,202,215,22,43,61,212,240,180,108,207,28,107,109,251,207,179,249,155,153,190,85,85,145,127,218,219,94,155,47,237,11,162,126,212, 218,122,248,163,246,190,26,110,189,169,205,121,5,197,165,183,216,33,142,242,193,161,85,220,214,236,205,182,31,58,56,100,85,111,226,243,190,86,93,181,243,14,179,226,196,241,191,132,165,240,231,193,97,169,89,106,218,45,204,154,175,135,154,91,25,172,181, 159,179,71,53,195,121,119,11,187,204,105,188,150,141,164,155,118,233,153,119,50,182,221,173,156,105,165,56,201,251,182,54,140,189,237,25,230,119,31,178,7,137,188,37,162,95,120,175,225,13,201,211,82,238,123,95,178,197,164,106,82,88,201,107,107,50,238, 142,105,35,141,150,73,33,109,173,182,95,186,204,187,126,245,106,191,237,107,241,151,224,134,171,37,181,151,138,117,205,111,75,209,227,89,213,117,235,40,238,149,230,251,191,187,102,93,219,190,109,191,123,253,154,244,31,129,255,0,181,76,237,170,90,203, 227,166,240,237,196,186,180,18,105,10,154,132,16,199,13,239,153,31,203,186,53,109,204,190,99,110,219,242,171,109,254,247,205,95,88,177,248,83,241,35,81,209,108,244,127,12,105,95,107,212,236,109,161,107,59,171,139,155,9,163,189,101,109,219,154,63,245, 113,249,158,100,108,219,127,119,229,171,125,218,232,161,139,196,80,148,175,63,184,37,82,157,95,118,180,34,124,223,224,191,248,44,183,141,252,61,226,59,121,62,51,120,39,70,214,175,173,237,183,77,45,156,204,179,65,111,255,0,77,87,238,255,0,123,229,255, 0,246,171,174,184,255,0,130,167,124,60,248,171,162,219,157,95,84,241,7,131,110,93,248,158,238,221,154,22,143,114,172,113,199,52,59,154,53,85,255,0,123,115,124,213,23,197,79,217,91,195,186,182,175,171,90,73,166,219,90,173,204,178,71,36,11,63,152,219,85, 153,118,249,159,43,72,171,247,119,127,21,121,231,138,127,99,120,238,53,235,41,147,118,251,24,252,187,107,105,85,124,136,217,191,139,109,125,101,44,251,52,165,78,220,252,209,60,186,185,54,87,90,124,209,167,203,35,233,45,71,197,186,23,197,200,52,201,63, 103,29,95,194,250,214,177,101,36,183,235,170,27,229,142,72,89,99,95,220,180,108,222,99,44,138,210,91,170,182,229,85,253,227,110,109,187,175,254,197,223,15,45,110,190,61,120,231,196,231,72,213,124,51,117,174,104,26,116,151,118,215,10,208,188,51,52,215, 74,32,107,165,218,210,121,49,165,180,123,163,147,107,127,117,190,90,248,55,196,127,177,194,120,119,92,183,150,233,175,37,186,145,26,119,153,89,96,243,55,70,204,170,173,23,204,171,254,205,99,120,107,197,191,23,126,13,79,111,15,134,124,113,227,61,48,71, 19,77,118,198,252,223,192,159,221,142,40,166,243,62,90,245,48,124,77,94,115,140,170,82,247,85,188,143,158,198,228,152,84,165,78,157,103,30,110,231,232,127,192,159,217,87,75,253,159,188,21,99,174,203,166,104,94,26,240,255,0,134,102,243,224,177,75,117, 102,190,156,42,175,218,110,55,54,233,155,253,169,26,190,180,240,31,252,20,61,188,113,240,82,242,199,70,212,230,131,77,181,139,236,42,116,136,87,251,91,86,153,164,104,229,138,22,145,149,97,88,247,110,146,102,254,31,153,127,134,190,64,248,163,251,64,104, 222,29,241,246,155,111,227,239,12,107,26,220,94,51,158,230,40,163,212,236,188,235,25,54,201,229,173,204,144,238,88,254,109,219,150,213,182,238,254,38,218,172,212,127,193,56,252,123,171,252,123,248,199,226,141,14,219,79,208,222,214,235,83,58,133,156,172, 145,180,122,89,81,30,39,86,202,194,205,28,74,191,44,139,229,198,204,202,190,102,221,205,249,77,84,177,81,230,145,247,148,170,62,111,103,19,145,248,155,241,47,84,240,247,142,117,15,1,126,206,87,50,107,183,250,46,237,70,207,196,151,254,35,145,147,72,134, 70,183,134,15,222,94,43,77,34,238,147,115,51,121,146,51,72,173,183,109,108,120,27,227,180,254,25,241,31,246,151,198,27,169,60,101,118,145,219,218,105,87,119,207,251,152,109,26,79,178,201,107,111,26,174,216,99,142,242,31,222,52,113,249,140,183,81,238, 102,85,90,244,95,248,43,255,0,131,62,22,124,43,177,209,180,57,124,61,169,90,248,139,79,213,161,134,242,226,219,106,194,116,219,136,102,153,53,63,59,204,243,21,154,226,61,173,38,230,109,203,36,108,170,178,43,87,195,215,122,238,171,38,185,246,95,138,183, 16,233,214,236,243,90,106,178,195,38,230,253,242,170,201,168,71,187,238,174,229,180,184,145,126,239,202,205,94,38,47,48,148,28,99,21,255,0,4,227,175,90,84,36,125,209,166,127,193,85,180,239,134,159,11,252,81,225,255,0,6,89,223,94,120,211,92,134,255,0, 73,114,177,171,67,103,27,79,230,91,74,170,187,149,166,251,28,203,28,141,253,235,95,246,171,227,79,218,203,246,174,215,254,48,25,60,89,241,91,81,212,53,235,152,211,253,18,6,249,164,101,141,91,203,142,56,255,0,139,253,239,239,54,214,175,62,241,148,186, 239,192,77,111,192,190,54,179,130,11,157,127,71,187,142,93,85,44,252,201,36,142,255,0,79,153,166,242,252,189,191,55,218,45,124,229,254,21,104,246,255,0,189,93,255,0,237,91,224,187,127,8,126,211,122,183,131,21,62,193,160,92,95,217,107,90,68,243,170,201, 11,105,186,172,106,194,120,127,231,154,199,251,232,246,253,221,214,161,182,252,213,216,171,172,52,57,220,127,225,174,191,204,205,214,149,88,251,199,154,124,104,241,77,159,130,53,255,0,17,205,225,208,178,223,233,90,21,150,158,215,161,22,75,27,169,149, 99,121,46,97,42,223,44,138,175,36,50,51,109,255,0,82,171,82,106,126,55,159,194,154,101,173,173,180,218,174,187,119,60,18,45,181,221,207,146,177,193,111,50,172,158,102,229,218,187,183,127,23,203,243,109,90,230,252,105,225,107,255,0,12,120,191,197,214, 179,67,115,109,46,151,175,73,163,79,109,230,110,251,59,121,109,230,55,205,247,188,205,172,202,223,221,145,118,213,207,10,120,214,111,21,120,50,241,127,177,109,53,139,63,13,89,125,165,173,27,230,251,92,107,34,199,247,126,85,221,183,119,238,246,237,249, 155,253,170,244,105,227,86,37,90,17,56,103,239,155,190,11,215,237,252,94,182,79,165,207,101,11,180,210,69,230,75,34,220,171,121,42,190,91,126,243,247,138,170,190,103,203,183,107,124,223,121,171,207,127,106,253,118,242,61,51,66,189,240,63,136,97,190,54, 215,87,26,93,204,118,115,45,196,241,200,202,211,73,230,42,199,242,252,191,43,109,102,249,85,126,106,234,225,241,110,149,171,120,203,82,251,46,138,218,94,153,20,150,177,234,18,68,171,6,214,141,190,93,205,27,109,141,91,106,253,230,255,0,150,123,126,111, 154,177,238,227,135,193,250,78,183,166,248,30,202,75,59,155,253,65,33,190,183,182,44,173,125,60,140,210,180,106,211,109,104,87,202,111,150,86,253,223,205,242,183,222,90,239,195,191,120,106,7,132,105,26,204,222,31,213,228,147,196,146,75,107,13,213,146, 93,36,159,187,154,89,17,254,227,199,157,223,123,104,251,223,53,114,250,94,167,36,95,108,242,18,38,150,88,213,85,91,110,223,189,91,151,17,216,248,155,87,213,164,180,211,159,77,138,13,222,92,113,201,230,50,109,251,223,240,45,171,183,248,169,154,14,164, 90,205,226,240,236,12,182,198,85,89,164,102,86,220,223,197,247,127,251,26,246,35,239,110,91,248,142,171,195,122,125,213,247,194,23,117,181,136,207,115,127,181,97,242,213,19,106,183,251,223,236,212,214,62,31,91,120,90,121,214,218,7,130,31,222,46,223,186, 190,95,222,86,255,0,121,170,213,183,141,44,35,240,92,58,125,157,156,235,18,191,205,183,238,183,241,127,251,77,95,65,124,3,248,89,103,240,215,225,71,140,190,42,120,215,73,210,173,239,236,116,139,221,55,195,81,248,134,230,56,45,90,230,107,41,188,185,227, 181,101,105,38,186,86,141,126,203,27,42,172,205,187,248,89,100,174,182,233,225,210,159,45,236,76,92,171,115,68,249,102,123,126,222,181,86,123,117,145,88,72,207,181,190,247,205,87,53,91,59,123,59,247,183,134,121,18,40,86,56,227,249,247,127,15,241,51,127, 232,85,149,13,227,73,118,168,230,55,221,254,207,204,191,247,205,123,114,204,240,213,169,202,50,137,229,199,7,90,19,230,140,142,247,225,101,171,62,174,211,218,205,28,30,92,62,103,204,172,222,111,205,243,47,203,255,0,160,215,212,222,42,241,127,134,238, 127,224,153,94,52,176,159,81,142,219,197,231,82,208,237,103,209,165,98,162,27,102,213,68,203,36,121,93,178,43,44,113,179,50,253,221,219,79,57,174,7,246,24,253,156,100,248,165,30,163,43,69,119,155,153,35,176,92,70,191,44,114,47,153,246,133,220,191,121, 118,252,171,247,100,111,150,189,191,254,10,183,225,111,3,124,24,248,12,116,47,4,220,73,115,226,40,94,210,11,131,230,43,109,130,59,136,238,188,150,255,0,182,126,78,223,247,107,229,43,213,86,228,81,62,146,141,57,66,50,159,217,63,62,108,237,62,213,169,69, 27,175,203,36,139,186,186,111,30,248,247,78,159,194,151,54,246,55,105,60,147,174,216,214,63,154,188,250,111,20,36,233,182,61,235,150,249,155,251,191,252,85,22,22,240,106,83,202,179,71,47,159,252,49,237,218,171,254,245,114,170,22,124,210,23,214,111,30, 88,153,211,235,18,65,41,30,83,110,111,226,90,191,30,147,43,89,199,60,233,188,178,238,220,219,126,69,255,0,102,182,78,151,21,172,81,169,101,149,226,249,183,55,220,221,88,218,162,51,220,52,142,249,249,119,179,110,174,169,213,148,142,120,198,39,107,251, 62,248,247,194,159,13,126,48,120,103,90,248,165,99,169,106,26,70,141,170,69,127,117,105,100,185,154,241,161,221,36,81,252,236,170,171,230,172,44,195,251,170,213,251,55,240,251,246,207,176,248,207,251,23,248,59,89,188,240,174,166,53,143,137,94,36,251, 55,135,116,11,135,104,45,60,182,186,251,44,146,55,151,182,63,39,236,251,164,249,124,205,205,182,191,8,52,251,43,143,16,248,146,210,219,70,183,186,187,184,157,212,69,4,49,238,102,254,47,149,127,224,44,223,238,173,126,225,127,193,33,255,0,100,15,20,120, 227,195,31,3,60,95,167,234,87,23,126,3,240,223,134,154,114,205,19,219,219,155,253,178,50,125,151,248,154,101,102,86,243,25,124,189,172,202,223,54,234,228,196,210,82,143,55,218,58,33,82,86,228,137,245,71,252,19,159,254,9,141,166,126,196,191,15,181,221, 63,225,6,189,170,193,6,191,52,87,183,54,250,129,107,219,123,121,17,48,210,71,110,205,26,174,232,21,99,220,203,230,126,239,118,239,187,95,77,232,30,1,183,155,226,22,143,113,52,247,11,113,113,123,106,173,116,242,171,121,203,28,159,34,183,222,249,190,247, 205,86,60,61,30,187,127,117,117,14,165,30,165,107,52,113,68,203,59,197,15,151,54,239,188,203,182,77,204,187,151,119,254,59,254,205,77,240,207,77,23,222,62,240,235,75,121,63,153,111,118,219,230,18,254,238,105,55,175,238,228,141,87,247,111,242,252,191, 245,209,190,90,229,154,189,45,78,168,74,210,63,151,223,248,41,22,187,125,115,255,0,5,11,248,201,53,247,238,231,95,27,107,209,50,170,238,255,0,152,157,214,223,252,135,182,190,127,241,39,137,223,82,149,150,7,103,143,110,213,102,93,187,171,221,255,0,224, 164,254,32,134,247,246,243,248,203,53,131,74,155,188,109,173,172,127,187,254,21,213,111,23,255,0,66,86,175,158,238,109,31,81,185,242,225,77,210,55,203,242,174,230,173,240,80,255,0,103,167,117,209,24,98,127,139,63,82,173,206,163,45,170,171,79,185,182, 255,0,121,107,38,107,230,154,118,4,240,205,198,42,254,181,163,222,105,126,91,106,9,113,110,37,25,140,205,27,71,230,143,85,221,247,191,224,59,170,190,153,166,164,238,255,0,104,101,59,79,173,117,71,149,106,96,88,240,196,77,31,137,108,36,31,188,242,174, 226,118,207,247,67,169,175,212,175,135,159,22,181,43,31,129,145,120,95,195,167,251,59,76,188,85,154,249,151,106,201,117,30,223,245,114,127,211,53,111,153,87,251,213,249,135,165,72,150,58,189,171,64,23,17,207,27,109,221,242,182,217,21,171,238,175,135, 23,50,222,232,49,75,108,151,114,66,210,70,210,237,111,149,153,190,85,219,254,246,239,187,93,120,109,78,92,71,55,217,40,93,232,254,28,209,252,103,170,92,188,112,67,121,127,30,233,90,79,149,118,238,111,153,119,87,200,158,52,209,111,124,75,241,139,80,210, 252,63,28,186,172,242,222,73,29,164,97,183,179,196,161,157,118,238,109,187,124,191,155,239,109,175,115,248,247,241,227,74,208,124,83,113,109,99,12,122,142,171,166,9,44,218,63,153,161,129,150,79,157,119,55,221,253,226,178,255,0,121,127,138,188,18,15,18, 65,164,120,131,84,189,142,239,125,221,218,254,238,73,33,254,38,249,191,139,248,87,229,95,246,168,196,127,116,88,120,202,226,220,90,127,103,104,6,198,202,37,95,57,86,111,50,56,254,102,101,86,254,42,99,235,182,223,99,10,45,109,154,23,101,10,179,47,154, 223,47,205,255,0,1,251,219,126,95,225,249,106,59,221,114,242,239,204,105,164,91,228,149,119,72,210,47,251,95,123,251,187,183,55,254,61,89,139,172,172,1,177,109,230,200,223,54,214,251,169,252,95,118,185,57,77,254,209,123,194,254,31,147,87,214,92,105,80, 197,111,28,77,186,89,38,111,150,53,220,55,12,183,203,242,171,110,219,247,155,111,203,94,144,255,0,13,180,139,157,118,77,63,225,254,183,111,226,25,174,245,72,116,107,91,235,17,37,155,234,141,113,183,202,242,237,238,126,112,173,187,203,101,147,107,43,42, 179,124,181,204,248,96,75,170,235,86,107,121,112,52,196,155,23,18,106,48,66,247,54,182,16,50,157,210,121,17,253,237,171,187,204,221,247,87,230,254,26,246,31,217,191,192,126,56,248,79,227,203,253,9,180,159,14,120,139,72,214,109,165,185,185,211,53,57,97, 158,223,83,130,53,101,91,136,119,127,172,220,178,109,249,89,91,107,124,222,95,203,92,120,138,234,146,179,248,187,29,20,104,243,251,210,216,220,248,35,224,61,67,246,110,241,237,244,95,18,128,211,252,69,164,222,160,183,210,238,172,154,75,29,75,205,132, 125,219,134,93,171,34,178,170,182,239,187,254,238,24,125,19,241,111,246,139,210,190,38,252,6,184,240,167,139,110,219,195,218,181,158,139,118,209,95,198,211,201,38,145,20,43,27,59,79,10,183,157,251,185,33,134,69,146,61,204,222,90,182,218,243,207,136,118, 214,191,180,95,134,244,187,57,245,123,123,120,85,34,254,192,155,80,157,30,104,175,96,142,82,246,26,133,199,202,203,105,50,230,59,121,155,116,139,36,141,27,110,89,60,182,117,207,199,255,0,14,120,155,225,175,141,124,77,227,237,41,206,167,226,93,10,238, 206,218,206,237,62,199,118,109,161,133,86,85,89,163,102,242,89,102,147,203,109,209,182,221,170,223,42,181,120,110,164,234,184,84,113,212,244,227,42,84,253,216,200,171,226,47,140,58,143,142,124,39,161,105,163,80,210,62,42,77,165,196,202,238,142,215,114, 233,151,17,206,205,21,230,157,120,202,179,55,153,183,204,146,213,150,72,91,203,218,219,119,51,55,17,224,61,108,107,191,16,38,154,210,37,241,46,185,127,124,178,92,232,158,123,105,83,107,119,94,99,51,71,13,196,123,126,197,123,110,203,27,67,242,249,139, 228,170,252,219,119,46,198,137,127,225,255,0,139,255,0,14,188,43,127,240,131,192,23,94,27,190,210,86,117,254,221,211,53,53,145,90,72,163,88,229,146,85,183,111,180,71,243,66,211,46,213,220,219,155,230,106,181,226,239,130,158,34,248,208,218,122,106,186, 150,149,227,77,82,237,113,120,247,9,109,105,170,152,182,182,223,50,109,170,211,70,191,54,213,154,29,219,155,239,127,119,141,77,225,170,123,218,121,127,95,240,63,203,203,197,74,83,159,52,77,63,219,163,246,131,210,62,60,90,218,235,62,44,211,117,231,248, 139,47,145,167,235,26,251,90,13,62,247,196,112,65,254,170,63,17,88,174,223,39,94,178,227,109,192,86,138,238,37,221,242,176,79,47,230,9,252,127,127,165,42,91,199,112,187,173,26,25,32,146,21,218,178,121,109,230,67,55,251,203,253,239,238,252,191,195,93, 31,237,7,227,111,26,107,186,244,22,159,21,47,117,77,66,255,0,75,137,180,248,110,117,107,102,93,69,224,70,249,34,146,102,95,50,226,56,217,91,203,105,26,70,93,205,182,70,86,174,23,66,210,47,188,127,101,61,141,140,218,127,218,45,100,107,212,89,151,203,154, 95,151,108,139,28,159,243,207,238,179,71,253,239,222,87,167,56,211,197,190,105,28,21,101,207,43,30,235,240,103,227,165,245,207,128,124,81,225,139,246,146,234,209,244,153,151,77,206,213,254,206,142,79,153,161,221,252,81,249,138,173,254,203,125,223,149, 182,175,153,95,149,214,245,31,10,253,138,27,159,220,179,105,172,70,100,42,178,92,162,179,34,255,0,11,42,187,127,187,89,190,12,72,180,159,134,190,36,213,117,119,65,113,36,145,120,126,210,212,177,50,23,152,52,242,203,193,7,247,41,26,237,221,185,89,155, 21,185,240,231,197,86,241,93,197,28,145,219,198,251,188,192,205,106,102,144,42,204,173,39,151,54,229,91,118,101,254,38,86,86,251,191,47,222,175,62,181,23,135,151,180,143,79,254,71,250,212,205,74,80,248,141,153,188,101,7,195,175,140,23,215,186,77,180, 173,166,233,151,215,176,105,81,92,249,141,228,219,200,210,71,185,119,55,239,55,66,204,173,254,211,53,94,248,53,240,218,195,80,241,208,211,72,93,75,77,214,237,252,166,209,108,111,90,57,181,155,69,86,97,53,188,157,102,242,118,201,230,219,252,178,109,12, 223,55,202,167,123,72,240,47,195,79,218,39,70,241,81,159,196,79,240,235,90,240,178,65,253,145,113,170,106,12,218,70,167,20,215,18,47,145,50,201,230,125,133,150,77,187,164,134,70,135,116,194,70,143,110,229,94,17,60,117,117,240,247,92,143,65,240,169,79, 14,234,76,12,90,160,187,182,69,213,46,15,146,88,52,210,237,109,209,237,113,183,203,219,253,229,220,181,172,33,53,20,213,254,31,235,250,252,139,84,227,7,205,35,173,212,147,80,209,188,25,174,232,247,86,23,58,135,136,228,115,225,157,82,219,237,102,57,196, 119,15,29,198,143,122,203,177,124,201,33,150,63,36,43,109,109,237,247,151,204,221,76,253,158,188,37,225,223,137,158,39,214,116,31,137,250,161,240,197,238,167,166,79,36,154,136,210,229,212,124,185,237,219,116,76,182,177,178,200,209,179,36,145,202,33,253, 244,109,177,182,178,238,219,155,54,173,111,226,95,42,15,20,222,93,65,170,127,163,218,173,197,245,231,145,115,12,127,43,53,171,74,219,190,208,170,194,59,136,110,25,188,200,219,42,219,85,107,95,195,190,21,241,119,130,62,37,90,70,154,33,215,252,77,111,226, 6,212,172,52,180,129,173,117,125,66,230,77,215,17,188,118,205,181,164,89,22,41,25,100,143,229,101,111,186,203,34,238,188,69,72,184,40,199,89,26,70,60,254,241,216,124,21,248,161,170,252,101,248,3,226,111,131,222,46,130,219,127,136,77,150,171,224,155,169, 174,85,163,143,94,211,45,225,102,211,35,145,191,118,130,246,209,54,43,110,85,243,191,189,230,214,159,133,180,155,253,103,224,221,133,163,69,60,151,246,154,39,140,188,20,209,176,111,58,59,171,150,75,200,35,100,251,203,242,187,252,181,173,241,35,193,190, 27,241,183,133,60,113,226,63,1,70,145,89,194,154,103,196,191,13,200,241,178,71,34,64,234,111,218,31,225,221,246,105,27,116,27,119,71,37,190,239,149,100,142,169,120,107,199,199,79,186,212,117,175,187,60,218,110,157,174,43,69,255,0,44,174,110,38,107,89, 100,255,0,121,154,63,154,188,236,70,54,180,41,198,84,105,234,190,47,252,151,252,203,246,112,140,127,121,47,120,228,124,51,241,11,83,95,22,106,86,215,7,251,57,52,121,46,35,213,110,227,137,102,189,134,21,142,222,221,214,31,225,89,23,236,222,94,239,186, 187,164,174,43,199,177,234,26,146,207,168,190,149,253,153,165,67,42,219,89,69,18,51,91,195,26,238,85,219,55,221,111,153,91,248,183,51,51,55,251,181,180,235,47,237,63,136,154,164,218,217,188,75,35,125,58,220,79,109,34,199,24,109,236,210,52,139,187,230, 86,101,219,181,119,124,204,181,214,252,78,248,149,55,141,124,51,123,165,204,151,86,242,172,67,87,104,109,128,91,57,85,100,142,53,134,72,190,236,109,28,34,54,93,191,121,153,190,95,189,92,180,101,203,140,130,81,213,239,229,253,127,91,149,78,113,183,47, 49,228,182,119,205,37,243,124,223,43,127,122,190,223,255,0,130,84,124,53,210,127,225,53,183,241,86,173,20,119,186,165,187,50,218,121,159,242,234,191,50,249,145,255,0,211,70,249,190,111,238,255,0,192,171,224,235,105,24,206,237,24,218,219,171,238,63,248, 37,175,138,86,220,203,109,36,251,101,243,153,118,255,0,22,223,239,45,125,182,54,254,195,221,54,161,203,207,30,99,247,15,246,91,241,68,118,150,8,237,42,174,229,88,223,253,150,255,0,106,191,49,255,0,224,184,154,93,183,130,191,224,161,250,156,154,45,189, 207,246,191,138,252,37,6,161,134,95,50,61,219,90,53,184,142,53,93,210,52,51,90,198,205,255,0,93,63,218,175,188,62,3,107,113,223,233,17,136,79,152,147,39,204,191,240,26,249,19,254,14,69,240,70,131,226,239,15,252,38,248,145,168,234,87,48,234,119,54,154, 134,131,5,170,161,133,46,182,152,238,217,190,211,187,247,83,70,176,201,229,255,0,123,113,175,151,195,191,246,152,165,212,247,106,123,216,121,31,153,31,22,124,83,163,195,225,255,0,177,78,176,78,47,44,124,237,94,24,164,22,83,69,60,50,153,145,161,27,62, 88,215,230,141,163,95,154,79,151,110,223,153,91,229,95,18,93,139,171,226,208,72,205,3,51,44,43,243,109,85,221,252,63,221,175,120,241,191,236,189,241,55,226,70,137,163,120,150,231,194,119,209,105,26,221,140,154,157,166,165,124,235,110,31,76,135,204,102, 212,46,89,182,199,13,167,222,95,181,55,151,28,146,127,169,89,63,139,205,245,127,217,203,199,122,109,160,187,189,240,174,181,111,16,180,251,95,239,109,154,29,177,125,213,125,178,109,145,75,5,253,218,178,171,201,247,163,86,90,250,220,58,133,37,202,228, 120,18,82,114,51,124,27,16,212,111,45,159,76,210,236,165,105,194,217,201,230,91,249,171,19,124,187,166,85,86,251,223,47,251,223,122,187,111,142,54,55,151,31,15,236,53,97,165,221,67,110,146,185,89,238,166,86,102,221,113,242,178,175,241,47,221,95,246,87, 109,114,222,25,240,119,136,124,18,215,23,154,190,155,169,233,40,97,32,77,36,94,79,217,164,242,214,69,124,183,247,87,239,127,189,243,124,203,182,182,245,31,142,105,172,124,63,111,248,74,180,40,110,100,191,155,204,183,221,63,153,27,109,235,181,27,238,174, 229,95,187,252,85,82,140,185,227,40,19,203,202,115,222,30,212,116,123,77,14,234,245,237,110,177,190,41,86,48,86,69,129,183,125,232,219,251,172,223,194,223,50,237,173,93,115,197,235,161,137,111,236,86,40,53,11,200,90,55,183,142,109,235,183,118,239,155, 253,166,254,42,194,212,124,111,170,248,160,139,107,168,237,182,197,31,148,187,161,88,182,85,141,7,192,16,106,49,25,245,27,149,117,86,249,183,125,207,251,230,143,99,237,101,205,80,57,153,202,89,235,97,245,38,107,177,60,131,107,42,180,127,222,175,68,240, 238,177,175,105,154,68,55,122,78,187,121,13,198,239,222,56,85,217,10,237,251,171,187,114,237,254,247,202,219,169,222,25,211,52,235,253,73,45,227,151,106,249,50,126,242,24,119,44,91,87,229,249,126,95,149,155,106,255,0,192,171,3,88,212,53,45,226,211,80, 218,76,13,229,24,227,147,247,106,203,247,182,255,0,122,186,93,62,104,243,114,251,161,237,62,201,175,117,226,232,225,141,60,167,23,178,91,25,26,217,100,85,88,173,188,198,221,39,151,181,119,54,230,249,190,111,252,118,172,120,183,74,211,60,75,224,125,59, 80,178,190,107,173,106,118,133,167,128,220,182,216,85,191,214,47,150,191,42,109,174,57,236,165,185,191,242,54,180,163,248,149,127,139,253,234,220,71,216,138,146,47,200,191,194,213,209,75,150,6,82,248,189,210,205,223,135,175,62,30,220,68,186,140,50,67, 246,136,22,226,25,20,252,187,100,95,151,230,254,247,222,220,191,121,127,138,180,175,62,61,248,147,77,240,149,183,135,180,157,74,242,211,75,149,164,100,176,182,242,227,183,180,73,27,247,165,99,85,95,154,79,226,220,205,92,103,137,126,35,203,114,179,89, 232,155,164,138,73,55,178,167,205,30,237,187,119,127,180,223,237,82,248,51,78,113,58,205,170,171,46,246,220,126,111,153,170,13,126,3,178,240,191,130,226,241,7,150,218,174,173,62,143,40,146,69,142,127,178,52,171,26,170,175,151,39,238,91,204,220,223,54, 237,173,242,182,218,217,211,111,47,124,27,226,139,29,71,225,245,209,215,111,244,91,102,105,133,220,18,223,195,117,39,205,186,111,179,200,217,102,249,254,239,240,178,172,139,243,51,86,37,222,189,106,241,196,154,116,13,21,226,238,243,153,102,220,178,127, 119,253,214,175,87,209,117,175,5,120,98,93,46,255,0,193,122,147,90,107,177,221,249,234,234,178,55,205,183,111,239,89,191,213,47,204,223,50,255,0,181,247,183,109,169,230,114,38,62,233,39,134,62,32,120,131,80,208,227,127,134,159,15,245,91,47,18,106,48, 201,167,220,106,19,219,79,253,155,119,231,42,133,142,8,223,108,118,237,242,110,89,91,229,86,13,183,118,230,13,245,110,143,240,254,59,31,9,88,120,187,195,30,36,240,220,30,46,184,158,222,193,245,235,145,182,27,79,248,248,243,237,227,183,105,55,70,190,100, 44,191,51,55,203,38,237,219,118,237,242,79,29,252,127,240,231,141,124,7,166,73,240,175,195,226,127,29,219,93,67,160,195,52,115,92,192,218,175,152,187,147,108,107,186,25,26,54,249,150,111,151,229,111,153,190,86,174,179,90,248,169,241,39,224,23,131,52, 205,111,225,182,179,225,155,175,22,106,87,90,175,134,252,73,109,49,134,226,210,68,154,102,85,88,237,36,219,27,76,178,43,55,157,187,247,127,221,251,203,92,88,133,57,70,60,167,85,24,198,247,145,193,252,5,241,31,137,188,61,227,189,102,223,69,181,240,236, 254,28,155,92,254,200,123,155,232,99,142,209,103,154,225,161,137,163,154,79,222,71,186,69,95,149,89,182,238,95,247,155,232,31,7,248,115,84,146,231,92,131,22,243,92,217,189,194,197,121,164,109,91,251,41,218,24,100,86,145,124,198,243,164,134,109,202,173, 30,213,253,226,238,86,86,220,190,1,251,33,120,123,199,190,1,248,185,225,171,63,14,104,16,106,186,95,138,31,78,187,187,26,159,147,50,92,89,91,221,249,114,93,51,72,203,181,99,107,137,60,201,23,247,159,55,251,59,151,235,79,16,248,30,222,31,18,106,47,224, 91,187,27,59,125,50,251,204,142,91,85,88,190,195,111,107,36,144,183,153,51,54,230,142,53,101,219,39,252,180,93,205,185,171,142,172,163,9,242,255,0,49,21,189,229,204,126,169,104,127,181,143,193,171,95,0,248,107,192,127,181,38,139,13,246,181,109,162,105, 214,243,207,62,129,253,161,107,124,210,64,155,100,141,227,89,29,85,190,111,188,170,203,181,191,222,172,203,159,216,43,246,115,253,164,174,37,151,225,13,232,176,130,234,61,214,211,120,127,82,89,173,183,71,242,186,249,50,121,139,242,238,95,151,229,101, 254,237,124,1,162,252,106,209,124,89,240,243,67,188,212,117,52,135,85,134,210,222,57,117,141,51,206,187,138,25,54,249,145,110,93,209,199,117,12,159,55,239,149,119,50,238,249,127,138,188,147,227,143,237,4,186,119,140,96,95,12,220,216,91,234,173,43,52, 183,246,19,54,157,113,104,222,94,214,147,206,135,107,46,213,111,51,230,102,249,91,248,153,107,90,24,151,73,70,17,232,122,20,249,57,57,186,30,165,255,0,5,45,253,151,52,63,216,207,197,16,221,120,115,93,212,252,65,103,171,219,121,48,75,62,152,177,195,97, 50,182,213,89,36,141,191,121,185,89,155,229,85,218,171,243,125,237,203,243,29,247,236,79,226,191,142,26,134,159,171,124,15,150,77,73,245,120,55,77,97,11,194,215,22,210,110,104,99,105,33,221,230,42,205,35,70,203,185,126,237,85,248,225,241,27,196,191,22, 155,66,159,226,23,139,117,127,24,92,75,165,73,105,103,109,121,116,215,118,205,27,121,145,171,50,192,203,10,200,171,186,54,109,171,35,42,174,237,213,244,175,252,18,107,246,214,210,127,98,63,24,248,211,93,248,219,165,248,166,253,53,184,97,179,128,89,203, 111,113,166,192,203,186,70,107,136,89,188,197,85,109,170,173,14,230,251,219,151,106,171,87,93,12,218,174,30,172,95,63,187,47,178,255,0,173,15,39,48,194,81,171,62,120,64,102,169,224,11,143,142,126,29,210,244,95,133,23,250,30,189,225,221,66,213,109,245, 207,16,248,134,254,222,198,215,236,205,36,113,74,172,172,187,86,25,22,105,54,199,229,254,243,201,219,230,42,238,146,185,143,217,207,246,167,240,167,236,121,240,219,198,218,47,195,31,11,93,235,90,23,140,126,38,217,248,87,74,215,90,91,123,137,173,109,22, 246,214,221,214,77,178,121,141,186,31,58,72,89,85,149,149,85,89,163,111,189,226,26,79,133,46,109,124,45,54,135,107,168,205,7,140,124,60,215,82,65,161,222,44,146,91,53,183,203,53,244,62,66,255,0,172,147,230,89,54,182,233,60,150,243,33,220,170,203,95,63, 120,159,196,154,118,131,63,131,236,33,212,229,210,237,227,241,19,94,203,52,119,30,106,217,91,44,191,44,171,52,123,188,205,171,243,71,253,229,219,187,110,230,175,140,167,152,44,84,148,35,19,170,173,111,97,203,40,245,63,69,255,0,224,164,214,144,248,115, 95,211,52,109,38,203,65,241,38,145,170,95,44,190,26,213,117,230,251,57,183,154,229,154,91,205,2,91,143,249,105,28,208,195,29,196,51,42,180,106,208,198,204,171,36,107,231,120,143,197,29,51,73,248,95,162,203,15,134,237,91,198,215,118,90,125,197,237,182, 171,61,170,201,28,118,80,200,203,44,107,11,50,249,211,90,238,219,185,149,91,203,145,89,99,101,90,228,254,13,126,212,86,95,24,188,47,226,221,23,227,159,141,159,199,190,31,134,246,43,96,154,141,138,201,103,117,104,208,52,112,125,174,75,117,89,173,26,54, 181,243,163,186,183,255,0,87,187,230,93,171,242,179,198,30,53,183,211,94,231,72,248,137,36,218,143,135,108,110,86,242,210,119,212,227,255,0,132,163,77,101,183,101,138,238,198,226,22,146,222,251,239,125,237,209,238,137,182,205,27,124,203,94,102,42,138, 169,53,10,191,103,250,254,191,224,156,245,165,237,101,205,19,147,182,241,180,254,58,248,67,97,240,255,0,199,243,193,115,162,95,202,218,143,131,60,77,167,202,193,117,121,85,154,73,45,46,246,238,145,110,150,61,204,171,247,100,218,209,255,0,18,215,147,126, 210,113,120,199,194,30,53,62,29,248,163,21,213,196,82,216,64,116,251,169,111,228,191,138,230,197,225,127,179,75,101,115,187,111,216,230,140,238,141,99,249,119,71,50,252,172,178,42,250,47,135,190,26,234,154,181,182,166,186,60,58,135,246,30,178,98,146, 125,54,56,220,11,185,35,102,111,180,105,222,102,211,166,234,113,179,71,55,217,27,111,153,255,0,44,219,119,202,187,190,26,150,211,227,246,155,107,240,159,227,30,173,28,58,209,184,146,231,192,126,35,116,16,172,211,205,38,233,244,214,105,191,213,195,119, 38,217,34,86,255,0,143,123,244,104,219,247,114,199,29,119,193,66,45,168,239,111,235,254,10,93,180,254,83,41,199,156,231,124,125,101,39,197,101,240,231,138,175,117,29,51,74,255,0,133,139,225,253,42,235,80,189,184,114,145,88,95,217,94,199,166,106,83,72, 122,175,149,231,67,36,159,197,229,171,50,230,185,73,52,152,237,44,37,211,124,58,150,82,67,101,117,230,93,186,196,171,246,155,123,125,204,173,185,191,233,164,107,34,183,222,85,101,106,250,31,192,191,11,52,141,55,75,211,188,53,113,167,121,58,29,238,163, 116,46,116,233,163,105,62,193,45,197,183,246,102,175,167,177,98,223,103,139,206,109,39,81,141,89,183,124,210,124,191,187,106,240,95,218,91,195,54,90,62,167,227,207,17,217,205,168,195,115,47,139,226,208,109,160,148,174,5,172,218,58,92,201,28,159,222,117, 242,226,143,233,73,255,0,180,165,245,105,91,78,111,211,240,185,207,86,18,94,241,202,217,248,91,90,213,161,120,188,37,164,221,200,174,191,104,212,34,177,129,160,242,91,114,237,221,252,63,123,251,223,196,204,223,222,175,24,146,202,226,31,28,181,222,167, 61,204,55,62,111,218,34,184,144,178,136,109,153,182,229,166,254,37,95,246,126,95,189,95,91,124,42,248,152,108,190,18,120,161,60,120,183,115,105,26,235,91,53,245,226,207,37,181,214,163,117,10,200,209,217,199,34,174,230,221,230,52,146,50,253,221,202,205, 252,42,218,240,126,206,151,95,182,69,133,205,199,134,108,108,172,244,77,27,79,176,240,190,154,205,42,195,246,6,220,210,79,37,172,44,171,230,52,112,249,108,203,35,124,170,219,149,164,102,242,235,108,179,61,150,14,95,191,219,250,254,189,7,66,92,254,233, 225,223,3,254,26,199,246,59,219,175,19,232,209,106,209,93,171,68,205,20,138,203,62,214,101,102,142,70,255,0,107,230,254,29,213,235,122,95,236,195,38,169,226,239,8,55,143,116,91,75,93,10,251,78,129,37,213,89,163,147,236,176,201,187,230,104,215,238,205, 181,89,119,109,111,226,171,254,34,248,11,15,236,247,115,62,149,225,89,81,52,199,105,159,79,251,84,219,230,146,53,111,149,153,190,243,42,255,0,123,253,239,238,215,208,158,35,253,170,252,45,227,141,99,195,94,9,240,238,141,23,136,44,244,107,123,101,185, 187,107,102,181,251,84,241,219,44,47,51,51,55,203,31,222,220,170,187,89,107,236,163,138,134,50,148,113,24,125,98,206,186,113,143,55,44,140,223,138,127,240,76,175,131,122,87,193,91,31,17,190,163,169,65,165,217,66,168,223,217,218,180,204,215,155,164,111, 222,24,85,150,52,111,155,110,208,191,195,252,85,241,199,197,95,133,190,12,210,181,77,89,254,28,107,122,151,136,33,137,201,180,55,214,115,25,130,255,0,171,95,50,73,25,153,91,111,203,243,46,229,88,215,248,118,170,254,136,235,223,6,188,99,227,223,132,186, 36,30,52,183,142,77,27,90,185,242,244,127,12,232,22,235,104,211,44,44,204,211,204,223,46,216,246,174,239,155,251,173,92,175,196,15,135,158,11,240,167,134,108,52,107,13,2,194,234,226,230,230,25,175,35,131,116,151,58,141,194,201,186,56,126,93,219,149,127, 217,249,155,238,253,221,213,228,226,51,120,101,138,245,234,115,27,212,165,30,95,119,67,243,102,247,224,110,171,61,162,106,150,246,177,44,45,62,214,102,86,88,237,190,93,191,43,125,217,23,230,220,213,71,199,127,179,231,137,190,26,104,186,94,181,226,91, 120,109,180,173,66,105,45,45,165,86,101,89,29,87,118,213,95,247,85,155,239,54,218,251,203,198,255,0,16,255,0,177,188,101,166,105,62,52,180,142,199,84,181,186,111,35,69,130,5,146,218,195,107,44,146,52,205,26,237,105,25,99,95,149,155,106,175,203,254,213, 120,71,237,247,170,106,87,114,120,110,13,111,84,150,254,59,253,87,81,212,237,96,107,121,45,213,119,109,86,101,141,190,234,254,251,106,255,0,15,205,90,101,217,203,199,206,49,229,177,132,99,3,176,253,142,191,106,29,115,224,247,128,116,223,14,248,18,211, 251,71,91,213,111,163,146,218,54,147,206,89,21,119,44,123,163,102,251,191,52,139,183,238,237,218,213,198,126,222,254,57,186,248,161,53,214,161,241,23,91,180,147,81,185,183,142,226,240,65,104,167,204,101,154,61,203,242,178,237,85,102,141,183,127,23,251, 181,235,191,179,55,133,244,223,129,127,179,133,254,191,115,99,167,95,248,131,85,180,107,75,88,202,172,146,92,67,231,67,230,66,171,247,151,119,222,109,191,54,232,255,0,133,119,87,140,248,147,193,167,226,79,196,123,9,124,69,60,232,151,118,87,58,52,250, 132,80,42,173,164,210,182,232,213,124,197,109,178,43,70,170,172,191,118,189,154,190,244,180,58,37,240,242,159,33,233,154,107,93,207,44,150,42,179,172,75,187,108,139,243,50,255,0,123,109,73,18,93,253,183,109,175,200,238,203,251,233,23,110,207,247,107, 244,107,225,191,252,18,231,193,214,203,225,157,103,237,26,133,214,165,45,196,97,173,108,238,38,104,230,220,62,235,121,155,118,179,110,219,183,253,95,205,254,213,122,55,134,63,224,153,126,6,120,174,160,241,47,135,237,174,35,151,23,150,210,49,158,222,234, 222,117,56,219,12,209,238,109,173,26,174,232,254,235,127,18,215,28,177,124,178,248,73,141,19,243,35,76,240,206,169,227,31,181,71,225,59,59,221,99,82,133,153,30,218,202,202,73,26,217,118,253,246,145,126,85,232,126,86,218,213,94,195,224,223,136,117,93, 122,29,34,238,222,45,62,240,192,215,2,13,74,85,183,51,58,178,175,146,155,190,244,141,187,229,135,229,111,189,247,107,245,134,227,246,104,79,8,120,126,75,15,15,37,213,182,153,28,31,100,142,11,100,243,62,236,139,182,59,137,21,126,235,50,255,0,203,77,219, 149,90,162,241,7,252,19,235,70,211,116,139,77,113,116,187,75,249,190,105,101,146,104,188,253,171,252,62,78,232,246,249,159,47,203,39,222,218,191,122,177,142,58,124,220,162,141,25,31,2,254,207,223,178,230,147,125,14,183,7,139,181,241,162,248,153,46,172, 109,116,253,61,238,35,141,175,89,110,23,237,176,72,171,28,140,202,208,201,26,171,71,34,252,197,150,77,203,242,215,244,133,251,41,107,158,13,248,109,240,207,194,158,29,248,79,174,71,103,160,105,90,77,165,158,153,106,150,241,201,111,99,26,195,254,175,237, 13,251,198,251,204,191,240,26,252,227,212,63,100,13,51,194,94,9,145,188,33,225,201,188,217,132,146,219,75,121,120,214,178,67,119,35,110,251,78,229,218,187,90,70,95,155,119,222,255,0,106,161,214,254,23,248,215,83,248,99,99,226,56,124,71,119,35,92,69,100, 177,121,122,237,214,239,49,188,184,218,56,215,206,219,185,190,235,47,251,84,213,126,126,110,98,227,78,80,63,92,116,191,16,68,250,46,170,247,154,134,151,39,246,122,55,159,26,65,31,152,202,187,190,244,123,191,186,203,181,151,239,87,45,240,151,199,122,15, 135,252,73,161,207,55,136,180,85,134,214,246,40,119,92,75,29,157,195,70,170,219,188,197,102,218,219,126,246,239,149,191,217,175,197,191,141,154,222,163,240,155,194,147,105,215,22,247,23,247,114,107,50,25,215,83,146,226,230,120,227,141,99,154,79,45,154, 70,218,219,89,182,170,183,202,191,50,255,0,118,190,163,248,37,240,231,79,255,0,132,118,195,93,209,180,155,235,203,181,118,145,98,159,73,183,89,190,101,220,178,51,121,123,118,178,182,237,191,234,246,183,251,181,159,50,156,125,153,164,42,71,152,252,175, 255,0,130,128,254,205,222,60,241,31,237,193,241,94,111,9,248,107,81,214,173,47,60,95,173,221,91,94,88,66,36,183,185,142,109,78,234,96,209,200,74,249,139,229,200,191,50,252,180,159,177,255,0,236,149,227,47,1,124,85,139,93,248,199,225,233,244,63,15,155, 11,196,150,234,237,163,216,172,60,175,188,170,205,183,173,126,174,120,183,193,94,26,214,218,231,90,241,213,156,138,45,237,182,178,207,115,29,187,90,174,223,187,251,182,85,249,155,254,249,90,249,123,246,161,248,223,160,67,98,116,31,135,15,36,183,58,139, 42,71,104,238,210,121,203,183,238,179,54,229,88,215,230,111,189,185,171,166,140,106,242,170,111,100,77,73,198,238,103,155,254,210,31,181,44,127,16,62,24,95,124,48,248,113,225,93,27,80,210,180,184,238,238,33,190,187,179,142,36,183,142,225,150,75,185,161, 155,110,229,95,49,85,190,111,151,114,215,195,55,159,7,239,109,181,169,45,87,78,243,100,220,208,44,49,73,242,238,85,249,153,91,248,149,118,179,87,209,95,30,60,87,225,143,11,248,105,244,251,141,98,239,83,212,228,95,44,45,164,49,203,164,180,114,42,200,210, 110,219,186,79,186,223,187,86,254,29,223,222,175,157,245,207,136,87,154,167,137,46,117,125,114,230,234,231,83,212,93,140,174,170,171,59,124,190,95,153,242,255,0,22,213,85,174,136,194,52,253,216,68,231,117,37,63,136,201,131,225,195,205,97,105,119,109, 127,105,47,218,103,145,97,182,70,221,60,158,90,238,95,248,11,127,13,110,235,223,27,188,67,101,166,46,153,225,189,74,242,218,40,228,100,6,214,70,89,153,182,237,101,86,254,31,238,255,0,123,253,170,231,229,215,218,245,163,179,208,52,244,182,72,174,60,232, 213,85,183,51,109,242,246,179,55,204,223,238,212,154,85,149,197,230,173,20,80,75,111,99,119,104,222,118,110,102,242,96,220,191,117,154,79,225,255,0,217,182,237,173,35,82,80,248,76,229,239,200,185,226,63,10,88,120,119,72,183,50,92,181,253,245,210,171, 202,239,27,34,66,119,110,219,16,111,153,191,218,102,221,185,170,156,86,250,85,148,22,211,153,26,243,80,50,110,107,120,213,118,175,203,242,171,110,255,0,106,186,205,19,195,246,186,223,139,218,239,198,18,174,168,100,141,167,183,145,145,188,185,36,85,221, 229,183,240,175,240,252,191,236,181,107,120,91,225,198,143,255,0,9,7,216,245,244,91,143,62,111,46,47,177,72,172,215,45,187,110,213,111,239,51,54,213,255,0,123,119,240,214,124,220,177,247,138,230,247,142,108,107,226,253,101,211,53,189,49,163,180,148,199, 36,49,71,230,57,243,20,114,205,242,171,55,118,219,183,229,106,231,96,65,225,13,97,63,183,160,187,137,47,150,72,154,43,139,102,66,35,220,21,126,89,62,109,189,62,95,247,107,208,124,83,240,231,86,248,105,241,34,226,24,230,211,103,185,211,99,243,230,221, 114,173,21,183,253,51,255,0,166,140,170,203,255,0,125,87,165,175,143,60,47,226,187,125,3,192,250,168,212,237,160,184,188,251,45,190,171,113,52,62,101,157,197,210,182,233,22,63,39,108,155,139,36,127,123,229,220,205,243,109,218,216,202,172,190,204,110, 84,99,30,111,120,229,127,103,221,47,194,254,11,248,133,14,161,121,226,91,173,54,91,121,35,54,183,150,100,77,168,105,210,143,153,90,27,93,202,211,47,204,203,34,194,204,219,126,95,46,69,102,90,251,63,193,255,0,14,60,37,227,237,2,226,215,226,157,191,135, 160,211,252,109,113,228,217,235,154,109,247,217,124,53,226,139,157,251,85,161,186,141,86,61,27,87,249,182,201,30,216,99,184,147,204,253,218,238,109,191,50,252,44,248,53,226,31,128,51,220,31,28,120,175,225,222,155,162,223,201,60,119,154,55,136,230,137, 244,205,89,225,13,24,204,141,12,170,242,54,223,187,251,134,255,0,106,182,254,24,126,209,154,79,131,117,118,139,224,190,177,107,240,170,109,126,55,181,213,252,53,226,230,109,103,192,222,39,86,4,121,82,110,243,62,206,140,191,123,206,95,149,66,172,114,42, 215,205,227,161,44,124,146,132,164,210,237,229,248,223,239,93,206,233,183,66,42,46,39,171,124,72,253,133,117,95,15,253,175,195,218,118,155,45,230,139,23,218,14,179,54,173,118,214,83,90,196,170,190,93,180,214,187,126,75,134,111,49,150,72,219,201,154,63, 154,57,62,85,221,243,7,140,117,43,255,0,133,90,243,136,27,236,73,246,143,182,71,53,202,253,169,174,188,185,62,73,36,18,43,110,154,63,245,59,155,253,98,171,44,138,204,181,246,87,132,255,0,106,127,29,252,41,241,246,141,225,127,139,95,14,124,57,162,252, 52,184,181,251,46,142,91,196,13,119,165,218,35,49,221,30,143,173,72,178,71,228,201,187,108,122,109,211,121,63,44,106,173,14,213,106,241,15,248,40,7,134,188,63,101,175,162,120,35,196,31,216,250,95,139,111,37,150,239,78,212,224,147,254,36,183,49,162,201, 185,89,155,116,49,204,177,167,238,118,182,239,188,172,203,251,202,229,195,123,104,213,246,85,117,139,254,186,117,48,173,201,40,251,191,17,75,224,55,237,13,171,207,241,99,82,241,93,190,167,163,105,97,237,54,106,150,241,104,246,182,86,247,182,145,35,121, 87,17,196,209,178,249,209,200,254,92,204,187,87,107,70,205,217,107,215,44,126,59,120,195,227,199,131,228,123,237,35,225,71,136,244,235,136,18,27,219,47,20,248,66,221,252,169,35,102,101,135,237,75,113,108,172,187,155,114,183,205,183,115,54,237,223,45, 124,51,105,46,161,240,249,116,157,75,84,129,26,227,77,12,230,1,114,179,193,115,104,219,163,157,35,216,197,91,115,179,43,40,251,175,134,111,148,173,105,222,234,186,68,190,57,211,172,252,95,225,251,109,99,65,9,12,214,118,141,121,228,54,161,111,42,162,198, 223,107,85,105,33,102,92,110,111,153,85,188,207,238,215,163,60,190,245,21,72,191,192,228,141,87,29,207,101,248,203,173,248,111,198,255,0,20,44,109,126,35,232,94,0,209,165,158,25,210,230,109,15,226,11,201,107,105,183,106,171,6,155,206,134,213,213,65,101, 183,251,179,52,159,55,221,175,22,248,159,224,203,95,0,248,252,92,124,34,214,14,183,97,106,22,246,218,242,9,35,186,107,70,254,237,196,144,175,146,172,191,240,21,101,111,246,171,162,241,230,153,224,239,23,120,163,92,182,248,5,45,210,233,86,75,166,88,104, 113,95,143,178,95,234,114,92,62,219,159,61,99,124,52,209,179,109,105,35,249,36,142,21,147,106,238,106,228,172,60,117,39,195,237,87,196,158,26,213,26,218,91,89,22,125,50,86,120,218,101,145,227,149,163,220,161,155,229,93,209,179,109,111,189,242,255,0,118, 182,88,119,77,123,171,250,183,245,161,139,87,103,41,226,239,25,63,137,124,66,111,102,180,183,178,154,72,163,89,86,21,218,173,34,253,230,85,254,29,223,221,174,151,195,23,144,92,105,238,206,210,66,173,26,198,197,62,247,251,76,181,142,124,11,117,227,107, 207,178,248,70,214,242,250,241,109,164,187,242,34,141,90,67,20,123,114,118,238,86,111,188,191,42,238,111,155,229,86,170,26,79,219,52,235,105,30,212,179,27,70,221,229,236,221,187,107,127,23,247,127,134,149,122,10,189,40,242,232,97,42,82,107,221,61,111, 81,253,159,181,31,15,77,97,107,52,86,183,173,121,165,69,171,218,89,207,113,28,114,77,29,198,239,47,115,55,203,36,219,85,183,44,59,182,255,0,192,171,107,225,143,141,109,60,47,241,11,72,181,248,183,226,29,75,73,210,109,237,150,221,188,61,113,164,181,236, 146,197,182,79,221,194,203,183,203,85,254,29,223,117,182,174,213,90,247,29,99,226,222,151,103,251,6,124,2,248,157,224,125,46,222,31,29,124,6,241,30,163,224,95,17,90,17,228,255,0,105,69,112,173,119,166,221,92,110,86,82,197,21,97,102,59,190,102,111,149, 118,141,189,86,145,241,54,211,226,142,133,23,196,255,0,135,150,201,226,47,22,216,73,12,178,90,94,105,80,74,154,245,164,37,164,91,86,86,95,46,91,251,54,105,21,124,182,143,237,80,254,237,219,204,85,146,184,235,82,120,103,203,95,94,111,186,255,0,167,174, 254,103,68,41,70,18,60,83,246,164,253,148,252,63,240,239,225,239,133,190,40,124,55,181,191,213,188,61,174,107,77,107,115,35,106,139,45,141,179,39,151,115,109,229,50,170,200,203,115,109,29,194,178,203,242,195,46,232,227,202,170,179,115,90,111,237,71,31, 134,252,109,226,59,173,59,195,182,122,238,147,127,103,5,134,147,15,136,222,89,181,31,9,172,18,51,216,205,165,223,197,38,235,89,45,100,121,60,150,143,116,126,75,121,76,191,46,229,237,46,191,105,164,248,173,175,91,78,177,232,58,55,133,37,182,130,216,216, 196,22,219,79,87,182,149,238,45,166,107,125,205,20,50,199,43,51,110,249,87,254,88,182,229,251,191,63,94,193,125,161,235,183,55,90,253,157,142,168,206,242,163,160,133,223,99,72,89,191,213,43,110,86,254,37,85,220,171,252,59,149,107,104,87,147,74,27,53, 253,124,255,0,49,212,230,79,158,7,211,191,178,191,140,53,111,136,138,190,27,240,155,53,228,90,126,171,38,179,117,167,221,221,194,191,110,210,181,24,228,183,190,93,210,21,95,50,25,230,105,254,242,182,201,252,191,153,155,109,121,43,120,150,243,193,58,94, 163,225,253,101,132,151,154,116,11,166,78,238,190,91,77,37,173,227,54,237,191,237,54,230,255,0,117,171,150,248,15,226,200,190,31,124,119,209,44,60,119,108,159,216,218,196,111,161,107,86,243,58,167,153,101,119,31,150,226,95,225,86,82,208,201,181,182,182, 232,85,126,245,71,241,211,203,240,143,196,93,99,75,184,215,173,188,87,113,163,95,73,98,218,173,170,60,41,168,152,85,99,51,152,219,230,143,149,101,101,111,226,86,254,29,173,92,216,140,28,234,36,101,55,39,27,145,31,22,110,149,131,252,227,204,220,251,127, 139,111,255,0,21,35,127,227,181,169,172,79,117,29,177,139,77,150,56,133,250,52,211,221,109,111,244,189,187,91,236,251,89,190,95,226,220,223,195,181,126,86,220,181,231,90,93,225,89,65,121,62,127,189,247,119,109,111,243,255,0,143,53,117,250,61,205,215, 136,172,82,202,48,210,52,118,210,45,172,49,219,121,155,228,95,225,249,126,235,55,205,186,102,255,0,199,190,90,230,250,170,161,82,50,72,197,123,146,230,50,109,163,242,46,37,7,248,90,190,141,255,0,130,126,120,165,244,159,137,130,40,101,134,53,109,173,243, 183,251,85,243,108,218,146,205,51,121,127,119,106,255,0,192,190,90,246,79,216,187,196,17,104,127,20,161,121,191,231,159,205,185,55,110,175,176,156,121,232,88,244,97,252,75,159,183,159,1,181,47,181,217,88,68,255,0,104,141,89,246,237,89,126,86,249,149, 149,119,127,157,213,209,254,220,95,6,60,9,241,171,224,31,135,47,254,58,104,86,190,44,211,126,27,248,189,117,184,116,107,194,173,167,222,73,44,18,219,121,119,139,185,89,161,85,184,243,188,181,101,243,36,142,53,111,149,154,188,187,246,102,212,166,186,209, 180,151,135,201,100,141,55,58,179,124,203,94,133,251,86,104,186,175,139,255,0,100,127,140,58,119,131,44,161,212,181,232,116,136,245,77,58,214,81,136,110,46,225,154,57,17,89,191,187,242,175,205,254,205,124,133,88,202,140,249,161,241,30,245,63,122,156, 162,124,167,251,65,254,221,26,53,197,133,253,239,196,187,45,38,246,72,174,160,186,243,101,187,221,111,36,246,209,237,138,229,173,228,141,163,221,28,158,91,64,187,124,155,125,191,185,143,119,239,43,224,255,0,141,159,240,80,251,77,95,91,17,120,106,207, 236,142,238,242,62,173,170,238,184,9,187,171,67,2,254,241,164,101,221,251,201,54,183,11,254,177,126,90,240,143,139,190,33,214,188,97,226,251,255,0,237,173,81,226,75,107,153,149,118,179,77,243,44,141,185,163,95,225,249,183,124,223,54,229,254,42,226,180, 253,34,56,53,84,54,241,79,121,114,210,42,130,227,230,149,153,182,170,252,219,153,153,155,238,170,175,204,213,219,67,15,27,115,86,151,52,143,157,149,73,115,88,245,27,31,138,26,30,170,235,46,161,121,119,173,94,221,201,133,186,213,98,141,230,154,77,223, 39,149,27,98,222,221,85,149,118,174,214,111,250,102,173,94,125,241,35,194,83,233,87,86,250,174,187,105,168,218,90,234,19,73,52,81,221,6,73,26,70,109,223,118,69,89,63,224,109,253,239,225,251,181,235,55,254,18,214,126,11,233,183,118,58,237,165,149,143, 136,46,86,59,137,108,116,214,221,52,112,178,255,0,171,187,187,85,102,89,63,233,156,114,46,223,151,230,174,99,198,178,248,143,88,240,44,203,241,7,64,212,52,123,89,153,102,180,154,229,124,136,217,119,46,237,173,59,121,210,54,230,95,153,119,43,110,251,223, 53,109,130,197,42,149,47,75,103,230,141,185,101,23,203,35,203,174,100,180,142,93,210,44,22,219,23,123,51,126,246,86,106,116,80,125,187,76,218,25,160,143,230,109,204,219,153,191,189,181,106,254,143,165,105,51,235,118,182,222,38,142,72,180,233,91,109,196, 202,222,87,149,253,214,221,253,221,212,223,136,87,90,59,107,178,15,8,220,27,187,15,46,60,71,27,51,71,20,159,196,190,103,241,45,125,76,33,46,94,99,63,181,202,82,254,210,91,20,70,210,103,158,57,93,124,165,88,228,111,149,127,218,164,214,49,101,168,42,198, 234,242,174,221,222,75,110,125,223,239,127,122,153,42,63,217,60,139,139,197,86,149,183,45,173,188,123,219,254,4,213,155,113,169,71,165,44,145,219,253,246,251,205,183,230,221,75,154,65,104,157,29,181,226,105,54,205,117,59,219,42,39,202,214,234,223,51, 127,189,88,247,218,229,215,139,175,89,70,245,133,151,107,55,221,220,191,221,172,216,17,181,153,255,0,226,99,247,127,186,205,182,180,151,83,182,130,213,161,141,165,243,54,237,142,24,214,162,14,229,124,5,171,107,59,61,38,32,146,109,86,168,245,127,23,66, 214,205,101,160,47,155,43,46,223,59,111,220,172,235,223,9,92,234,191,56,129,160,101,251,205,35,237,221,255,0,1,172,72,164,54,207,242,50,166,223,238,174,234,190,82,78,131,78,43,105,27,11,171,191,41,63,139,251,205,90,26,119,141,215,67,215,45,174,60,51, 30,102,134,69,150,25,39,77,202,178,47,241,121,109,247,151,253,234,165,111,224,237,71,91,210,197,231,217,164,107,56,164,95,54,229,153,81,99,220,219,87,239,55,205,243,127,119,117,122,5,143,192,223,13,120,98,91,73,254,33,107,247,19,219,223,9,86,210,15,14, 217,27,139,139,166,25,92,249,215,94,92,81,225,184,231,230,219,243,47,90,92,165,115,18,252,33,55,169,169,67,175,199,171,92,88,67,164,234,1,162,212,163,186,251,60,145,92,44,46,226,27,104,138,124,210,103,107,51,253,221,140,202,219,149,154,189,183,225,127, 237,4,158,59,240,199,131,252,51,227,27,153,111,188,83,15,137,191,180,147,84,16,67,36,118,26,125,197,151,217,230,89,155,102,214,85,105,38,184,89,21,183,55,153,181,182,170,238,94,191,198,95,10,52,79,131,63,2,244,221,42,95,2,248,82,242,211,68,190,149,175, 181,107,184,36,212,255,0,181,229,117,220,191,106,146,37,143,111,151,251,184,214,61,171,26,170,238,95,238,213,191,128,243,233,223,29,252,19,175,234,159,26,188,21,165,120,110,239,67,120,252,71,253,183,225,251,70,211,155,83,249,154,210,227,236,242,219,55, 151,186,19,52,62,119,239,188,207,155,119,204,187,163,174,58,146,124,156,204,211,224,55,190,27,248,195,81,240,143,196,109,87,196,246,250,197,228,112,139,233,162,185,150,63,181,125,154,107,127,149,99,221,247,161,183,102,142,56,102,242,99,85,111,46,79,238, 183,205,216,73,251,88,88,200,46,239,174,188,55,111,107,175,234,26,42,174,171,165,219,127,164,253,190,73,36,111,41,109,36,218,177,174,232,213,85,91,239,43,127,10,253,213,198,248,45,240,239,92,240,183,135,172,52,191,133,90,253,190,183,224,191,176,94,71, 170,216,220,64,169,185,177,36,113,93,67,119,14,214,183,153,85,155,108,209,252,172,171,39,203,181,126,94,147,226,119,192,191,27,234,23,151,90,150,153,105,225,253,111,78,188,146,53,181,185,48,46,235,181,101,93,202,214,187,126,86,220,204,219,87,119,205, 27,55,240,215,202,99,115,12,58,173,239,73,10,53,161,110,94,99,203,190,43,126,216,118,190,24,240,61,238,135,224,199,176,99,121,44,223,106,150,198,15,180,201,115,2,237,146,53,91,173,191,187,147,118,239,151,115,127,121,91,106,215,205,94,40,248,179,170,220, 248,179,126,151,226,27,155,185,117,175,244,203,205,38,230,52,219,110,85,85,191,121,39,205,181,150,52,86,249,100,95,186,191,222,175,93,241,63,236,167,226,45,52,76,158,29,139,76,189,213,44,45,60,201,224,242,228,89,231,141,155,114,237,105,54,171,54,221, 187,191,231,166,230,255,0,87,247,107,193,62,42,254,205,190,41,209,252,75,43,235,90,125,156,79,123,113,38,216,44,63,120,171,36,126,95,203,33,219,182,61,202,204,209,183,221,147,107,125,218,250,28,191,21,133,175,31,114,69,123,210,137,217,120,99,81,212,190, 35,235,17,143,4,106,210,76,193,163,251,53,196,122,60,140,171,35,47,221,146,79,53,87,118,229,218,172,202,171,230,124,170,223,53,125,65,173,252,87,176,214,100,186,185,180,135,81,186,104,228,243,163,146,230,229,164,107,191,221,170,206,179,121,139,185,126, 234,179,43,109,221,183,239,50,173,124,199,240,143,246,122,241,86,131,125,118,183,154,54,187,168,91,105,137,30,110,109,164,91,155,107,8,100,102,93,204,202,223,42,174,214,221,183,229,95,189,38,213,90,246,143,10,71,163,234,218,246,165,255,0,10,202,43,217, 180,248,85,162,188,179,187,158,225,190,193,36,155,99,91,57,230,255,0,151,166,111,47,119,155,27,55,202,209,255,0,11,43,52,98,253,245,205,77,251,177,10,117,61,151,248,142,3,225,231,237,51,52,202,52,111,140,158,32,179,177,155,69,86,151,194,94,47,130,215, 206,188,240,229,202,237,218,99,27,150,70,181,111,238,201,254,175,116,155,191,118,205,29,116,154,159,136,60,9,241,11,193,26,247,196,239,10,248,88,233,194,215,83,156,94,222,77,168,53,189,188,58,179,65,10,249,122,117,157,191,238,228,73,243,231,180,109,54, 213,105,190,109,195,109,124,225,227,125,99,194,158,46,183,184,189,210,180,57,124,39,173,50,157,214,86,238,215,122,36,239,176,124,214,237,35,121,182,109,187,59,99,102,146,37,85,192,106,200,215,254,51,107,186,223,195,159,15,120,54,103,138,61,39,195,247, 55,215,22,177,65,31,150,211,203,118,234,242,153,142,239,222,55,238,213,83,229,93,171,185,121,221,186,184,171,229,106,106,208,118,127,167,93,191,225,186,247,190,78,162,113,113,58,239,20,252,77,147,195,144,141,55,74,185,184,68,191,178,178,212,245,11,118, 129,173,218,27,227,33,121,70,237,170,210,42,172,139,181,149,182,109,109,169,133,221,87,52,47,24,105,186,207,136,210,239,69,182,213,228,210,224,181,180,251,124,55,211,196,178,94,221,175,157,153,55,70,219,99,143,230,141,190,246,229,104,255,0,139,238,183, 143,220,221,203,122,60,208,101,149,96,95,43,204,219,247,127,186,181,236,191,10,62,1,127,194,196,248,111,167,221,233,190,55,248,125,166,234,250,206,182,116,248,180,13,75,89,142,218,237,162,31,185,91,188,31,149,83,126,229,249,187,43,73,187,109,107,83,9, 23,23,37,3,154,220,231,187,248,63,246,172,139,73,158,65,224,13,126,81,97,246,95,59,90,159,196,80,70,154,157,218,199,255,0,46,113,249,42,177,222,76,223,117,100,85,89,21,126,234,179,87,115,171,124,26,178,253,176,188,27,121,255,0,11,15,76,255,0,132,94,227, 80,70,159,77,209,147,247,146,91,124,187,124,239,57,155,247,147,55,241,42,178,255,0,10,201,181,182,179,124,103,241,39,90,240,85,213,141,150,155,225,47,11,234,186,86,179,97,168,52,55,247,227,93,55,145,202,145,59,71,254,143,3,230,61,205,180,54,230,218,6, 224,168,172,62,106,111,134,63,105,127,29,120,111,195,147,105,250,110,169,119,37,144,57,183,158,100,13,61,147,127,126,25,27,118,214,101,249,91,127,153,254,206,218,243,177,89,92,170,168,186,114,229,151,126,171,208,214,51,138,248,143,166,60,83,251,88,94, 124,63,213,180,253,63,226,246,164,186,167,139,52,219,152,116,221,74,246,207,166,173,26,254,230,43,155,141,219,124,187,216,214,73,35,145,126,244,139,181,191,221,249,219,199,159,18,53,253,75,194,109,225,107,141,123,85,190,134,215,196,119,87,215,118,247, 7,229,123,152,96,91,79,181,183,247,166,104,99,242,217,191,139,119,241,127,15,153,120,150,243,86,189,213,238,37,241,36,151,205,118,167,99,253,168,185,153,127,139,107,121,159,49,111,247,190,111,239,85,255,0,9,131,229,249,247,242,249,123,139,109,222,107, 187,216,67,11,77,181,191,245,208,198,172,253,222,99,232,127,134,154,137,241,247,193,219,91,159,24,234,3,74,240,247,133,252,67,253,152,69,176,243,229,79,181,68,39,187,107,88,126,244,147,73,228,66,219,191,135,107,42,174,221,213,244,111,236,215,241,106, 243,86,240,108,26,31,134,116,109,87,195,158,14,209,173,164,142,234,234,222,91,118,189,186,154,107,143,57,150,107,137,149,150,222,54,249,99,253,218,180,139,26,252,187,118,173,124,87,167,235,250,151,140,46,172,255,0,225,27,183,130,56,188,51,0,185,2,219, 78,121,237,124,213,113,26,53,228,106,219,114,222,107,67,230,72,7,240,199,243,51,87,217,95,4,117,93,103,197,254,27,181,155,199,233,174,216,106,150,104,177,182,159,182,59,8,86,63,186,210,47,221,221,30,229,220,173,185,153,126,85,249,126,101,175,142,226, 20,240,212,227,85,117,252,63,175,192,207,15,30,105,115,68,219,241,87,192,173,83,83,209,53,93,107,71,142,43,27,171,219,43,143,42,93,85,166,134,194,194,29,205,181,164,184,147,115,52,108,204,172,223,51,51,44,107,26,175,205,35,87,219,222,13,253,159,126,5, 120,55,198,126,4,241,231,129,60,61,105,165,106,26,132,81,44,122,108,26,148,115,73,34,201,251,183,187,142,205,126,244,146,44,146,55,204,190,90,170,238,249,182,215,205,250,207,142,116,139,15,133,49,234,190,54,111,237,45,14,196,171,89,233,119,218,92,122, 197,228,151,123,214,52,157,163,147,116,126,100,114,50,182,233,63,115,14,213,111,155,111,203,230,223,30,63,110,235,239,132,250,85,196,223,12,46,116,123,223,17,95,59,105,113,106,183,69,166,146,6,88,252,198,145,97,105,55,92,51,43,54,217,62,88,85,87,253, 157,181,57,30,109,139,157,55,4,191,203,250,254,189,61,53,56,82,92,210,62,129,253,184,127,105,251,47,135,19,107,247,45,126,47,25,124,246,183,49,65,29,175,217,108,149,190,95,51,106,237,85,218,171,187,251,205,95,5,104,191,180,127,196,75,223,23,234,247,254, 23,179,212,237,53,72,211,231,206,153,112,215,250,116,59,124,207,45,119,71,251,150,146,54,86,218,171,230,73,27,124,187,151,230,174,15,196,122,255,0,141,126,44,248,134,41,252,75,164,222,248,204,221,42,219,73,123,19,173,253,141,200,221,195,203,246,115,182, 105,25,153,150,69,253,223,147,181,54,171,109,93,222,187,240,191,246,183,241,110,147,240,186,25,124,121,119,30,169,111,240,184,89,217,45,207,136,45,102,213,173,116,155,79,180,92,71,20,55,86,237,52,94,97,93,222,92,107,187,115,121,43,230,50,237,101,111, 70,25,116,83,231,175,62,106,175,207,111,242,56,234,85,246,178,187,145,228,250,175,132,188,111,225,223,30,136,117,40,37,151,94,9,46,175,168,216,203,119,182,241,32,85,93,243,73,47,252,176,255,0,88,173,183,111,203,185,127,221,174,83,197,90,206,173,241,23, 197,26,77,191,141,38,185,104,52,240,208,216,216,187,124,214,246,242,72,172,236,242,55,221,86,242,213,191,224,63,47,202,181,238,126,6,240,215,141,127,106,127,136,114,235,190,44,111,17,92,195,173,69,28,55,154,177,177,139,102,161,228,174,232,215,238,199, 10,175,239,25,149,99,95,37,126,238,214,175,7,248,139,166,72,223,180,78,173,162,216,92,241,165,94,71,167,69,60,242,254,237,154,53,85,146,102,111,225,93,204,223,119,229,218,191,45,123,89,36,165,58,252,144,93,13,233,211,140,35,237,34,125,109,240,43,92,209, 173,117,77,42,230,201,166,91,47,13,233,77,109,44,242,237,184,142,75,246,221,15,219,153,182,253,221,178,54,223,226,102,221,83,252,59,178,176,240,77,133,164,250,125,180,48,90,217,88,199,167,79,115,115,43,52,62,115,77,242,179,47,252,244,85,85,221,252,95, 190,221,186,181,254,4,234,190,26,211,254,11,222,232,154,54,155,113,174,219,195,228,106,122,134,216,219,247,209,67,121,27,50,180,219,127,189,34,199,252,59,119,53,92,150,234,203,225,167,140,252,71,169,104,250,133,230,167,12,119,209,205,109,105,4,209,200, 215,155,183,42,198,208,201,254,173,190,243,110,147,230,109,187,107,232,49,117,99,68,237,138,231,137,238,49,219,105,23,51,105,169,13,221,195,163,63,219,45,160,176,150,111,38,104,25,86,79,154,111,49,91,229,111,187,187,238,252,219,86,186,47,15,67,168,234, 190,38,254,209,211,52,104,228,177,104,237,164,91,171,251,150,243,173,85,126,242,199,243,109,221,251,205,191,237,124,181,194,233,159,19,52,237,59,73,54,158,50,241,62,159,97,170,234,22,118,254,102,153,123,109,28,127,235,45,213,190,85,254,238,223,149,150, 61,223,51,45,112,126,49,253,174,173,254,28,233,126,27,240,155,207,166,72,203,60,58,117,246,184,182,171,28,208,109,135,204,102,254,45,187,149,151,107,55,203,247,126,111,155,109,121,241,173,206,149,197,41,114,159,67,248,211,199,109,164,252,63,215,33,176, 210,150,198,24,23,237,87,18,162,198,210,50,249,155,183,73,27,42,252,191,47,203,181,190,247,252,10,177,62,10,143,17,252,112,240,133,182,189,226,88,35,182,182,212,86,70,211,173,190,211,251,153,33,86,218,179,109,95,249,233,247,87,111,221,175,4,190,253,173, 124,51,241,26,241,174,47,116,221,86,235,78,86,91,75,107,59,168,45,227,89,90,63,51,230,111,222,42,205,39,205,247,126,239,203,243,125,218,244,141,11,246,208,155,193,94,0,105,116,103,210,163,139,79,130,56,87,78,188,79,58,230,61,210,124,202,204,204,177,219, 179,124,187,87,110,213,249,153,154,184,163,136,143,181,228,152,165,89,54,123,127,196,139,43,219,111,5,180,90,60,211,106,87,118,114,220,219,181,186,94,204,178,73,60,106,172,177,237,105,62,88,247,127,232,45,94,35,240,235,226,63,138,53,139,95,9,120,91,86, 130,77,46,219,77,213,154,105,217,174,126,215,12,63,103,220,178,55,153,185,124,182,89,149,126,95,250,104,172,191,118,188,167,199,191,240,80,159,19,234,254,60,178,176,142,75,125,77,239,231,146,75,153,116,227,54,216,149,91,203,85,85,143,253,115,110,255, 0,150,158,102,213,95,155,251,181,228,154,207,199,223,19,65,241,43,197,26,39,142,181,173,83,83,211,230,186,158,194,241,47,167,134,218,210,25,166,253,227,34,178,237,220,171,110,209,252,205,230,73,186,102,249,155,239,87,119,181,247,253,210,95,53,121,123, 177,61,255,0,199,94,27,95,140,75,55,252,44,95,17,218,77,45,183,138,36,212,227,242,93,102,154,209,149,90,61,210,70,219,153,100,91,88,247,54,214,221,243,67,181,127,134,189,131,197,31,181,191,130,126,28,104,16,199,165,106,119,215,207,106,202,177,199,28, 81,175,152,203,26,170,179,54,223,151,255,0,101,175,205,63,24,124,85,241,87,128,173,124,113,47,135,181,72,244,91,141,26,215,79,183,181,120,101,89,5,156,141,59,121,182,113,180,200,204,219,161,155,133,110,241,238,227,229,175,155,62,33,252,93,213,126,44, 94,44,254,39,54,235,112,158,97,127,179,199,246,116,117,111,47,43,229,171,109,254,31,187,93,212,104,253,163,14,110,79,132,251,15,246,232,255,0,130,153,222,252,90,213,141,151,128,174,102,26,114,178,180,163,207,109,179,127,215,125,173,255,0,142,215,205, 23,255,0,22,117,31,21,207,12,62,33,189,187,143,79,71,104,222,230,220,110,154,93,203,243,52,106,205,181,87,251,170,223,123,229,220,213,198,105,22,169,119,167,150,187,93,177,179,127,172,243,182,179,127,121,127,218,171,16,136,254,205,37,150,149,246,121, 110,90,92,13,135,115,43,47,240,255,0,246,63,222,174,181,62,72,242,196,159,143,226,61,83,226,105,240,247,140,60,123,123,23,193,123,102,26,30,167,28,18,89,91,92,164,130,75,69,216,190,98,200,243,51,50,254,241,36,109,223,237,109,251,171,83,120,83,225,68, 22,16,195,113,119,111,61,202,206,171,228,199,101,15,153,231,200,223,118,53,219,252,95,197,254,237,97,104,122,222,137,224,255,0,2,202,143,103,103,123,226,11,237,170,207,51,54,235,69,93,202,209,255,0,192,155,110,229,111,238,209,240,131,198,26,247,131,175, 99,214,109,53,201,44,64,149,190,200,240,92,181,183,144,203,251,185,38,85,143,248,188,191,151,251,219,127,221,174,122,60,211,10,209,53,245,15,217,155,85,240,39,138,86,247,227,174,143,173,232,150,10,241,249,113,36,43,246,153,100,147,247,145,174,213,102, 249,154,53,146,79,155,251,159,54,214,249,107,143,214,52,215,213,111,53,13,90,206,210,107,43,107,255,0,146,215,121,200,109,129,191,133,190,102,85,225,191,186,223,122,174,120,223,226,102,175,226,141,74,250,226,77,83,90,187,75,210,217,187,212,46,90,75,137, 149,87,107,55,153,187,115,179,127,123,118,237,191,122,176,245,207,138,30,34,147,195,35,72,215,175,34,154,214,107,149,185,220,168,190,122,52,113,249,106,190,98,174,229,93,191,195,247,105,198,51,39,221,129,118,31,17,75,119,13,244,118,59,82,214,217,188, 249,44,124,214,254,239,151,242,238,251,223,250,23,205,93,183,192,127,140,82,124,0,215,99,241,62,156,176,182,176,171,228,90,91,191,252,187,71,34,252,210,50,252,203,247,126,93,191,123,248,119,42,238,106,241,152,52,171,187,155,193,115,166,207,22,237,223, 42,175,247,191,217,169,53,177,117,167,234,215,95,240,144,200,166,253,102,109,236,175,185,85,149,87,230,221,252,95,221,173,185,125,222,80,231,61,87,227,78,173,167,235,17,255,0,110,105,11,27,75,170,125,235,120,87,106,217,255,0,180,223,55,205,51,125,230, 101,249,127,135,253,170,224,244,31,30,95,232,246,87,118,182,173,24,254,210,129,173,166,102,143,204,105,33,109,187,149,183,127,15,202,191,119,107,127,181,92,244,126,44,243,255,0,227,250,57,101,220,222,111,202,219,126,106,234,124,31,107,61,189,130,89,234, 141,60,246,183,215,81,180,150,246,178,126,254,127,151,229,95,187,185,63,139,254,250,168,229,140,34,47,138,71,167,124,54,248,145,111,224,69,130,239,74,211,60,56,186,213,213,194,220,74,117,13,82,107,113,52,129,126,104,214,31,154,25,190,87,219,251,197,218, 187,215,111,251,53,190,30,124,75,255,0,133,33,103,168,106,190,4,185,241,175,131,181,155,207,244,123,59,109,53,108,111,244,213,141,87,164,141,113,186,86,255,0,123,203,173,102,186,143,225,236,54,23,186,79,132,97,214,6,133,101,246,181,184,185,157,163,251, 39,157,38,223,51,106,237,102,218,222,102,232,219,239,51,110,249,86,186,255,0,134,151,62,13,248,199,162,172,191,16,52,225,255,0,9,2,195,127,166,73,166,88,218,201,17,214,102,146,63,180,91,92,164,145,179,121,114,67,28,114,71,186,79,221,179,71,243,87,139, 94,167,47,188,163,120,253,163,179,217,202,74,47,152,169,240,167,198,147,248,131,193,179,219,252,110,240,173,214,179,161,107,229,157,117,104,188,81,14,156,138,210,43,121,114,53,141,195,253,150,101,251,191,123,107,109,251,191,117,86,188,123,226,116,118, 191,107,190,211,188,81,101,117,46,163,165,222,165,172,183,17,234,44,209,199,12,107,251,184,97,142,79,51,201,85,220,205,26,171,109,85,109,191,237,87,57,168,232,43,163,248,215,237,90,166,151,104,182,17,72,143,36,118,23,81,72,210,167,1,182,187,62,239,222, 16,91,230,249,151,204,219,217,106,123,237,98,59,29,20,197,164,105,81,120,117,175,86,79,53,97,186,153,195,91,150,253,220,115,198,203,183,118,214,93,178,127,203,69,93,223,45,105,12,60,84,185,233,75,126,223,240,230,18,110,122,24,26,189,253,191,135,181,36, 95,7,92,93,61,181,131,249,214,243,92,34,125,230,95,222,43,109,85,249,90,132,241,84,186,134,141,111,164,218,216,199,19,193,59,77,100,208,47,239,51,35,110,242,63,233,162,229,155,111,241,124,219,105,240,105,55,239,160,201,171,36,67,236,22,210,44,13,114, 219,89,124,201,23,114,198,203,187,119,204,170,205,247,105,186,97,115,172,95,199,118,45,173,229,97,228,7,120,252,168,237,164,102,85,13,183,239,39,252,7,255,0,29,174,228,189,223,120,206,71,188,126,199,26,142,151,166,167,136,252,51,241,27,79,138,199,80, 241,23,246,116,186,110,169,113,166,150,146,202,231,76,190,251,108,240,71,119,183,253,30,73,32,243,21,182,238,111,221,152,219,28,103,231,201,229,212,117,155,116,186,158,41,111,37,191,159,204,154,99,11,19,44,175,251,210,187,254,238,239,157,155,111,92,124, 213,211,39,142,226,178,248,127,253,135,225,203,251,151,146,231,84,87,189,180,188,145,158,218,114,21,182,202,177,187,109,81,146,185,111,189,187,230,45,183,2,181,124,25,241,6,95,132,58,63,246,85,221,135,134,252,79,28,90,131,92,79,167,235,214,141,127,103, 107,54,197,143,112,219,48,70,220,177,170,249,139,243,109,95,238,237,165,204,163,123,173,73,229,140,126,35,91,225,215,236,245,174,234,191,6,174,126,36,105,215,130,215,66,208,252,69,109,163,93,72,87,18,91,75,44,91,162,157,95,118,229,253,228,145,68,219, 126,101,243,163,147,112,13,186,185,187,27,171,141,80,66,214,242,249,119,23,170,176,52,106,170,202,205,31,251,63,117,190,95,254,42,190,183,241,7,236,143,39,140,63,101,159,25,120,135,246,112,184,154,211,76,143,69,180,241,31,142,252,59,127,165,177,26,5, 140,141,121,37,174,165,166,174,239,55,236,241,180,55,11,36,44,210,73,14,213,147,230,85,85,175,145,252,21,107,116,250,115,44,119,35,78,184,210,218,59,217,144,186,174,233,150,111,220,136,151,254,91,127,192,126,85,251,223,50,181,112,251,104,98,160,170,195, 160,234,81,116,246,61,11,224,239,198,123,175,14,254,206,254,58,240,87,136,60,69,37,159,134,124,96,176,93,4,133,157,225,185,214,236,29,110,44,30,72,202,237,85,85,105,161,154,79,225,89,35,220,223,42,215,97,251,23,120,185,254,45,252,95,139,225,119,196,79, 16,95,248,101,124,93,127,29,191,135,181,187,82,170,218,15,136,126,88,108,167,145,119,109,146,9,155,109,188,203,252,74,202,223,222,106,240,79,137,154,202,235,17,105,215,186,126,171,107,42,234,41,117,53,213,157,184,242,254,199,116,247,36,55,238,190,234, 172,170,177,72,63,188,171,254,205,97,120,107,81,77,58,120,94,192,172,19,35,42,69,33,145,163,242,100,111,149,36,86,95,153,124,182,242,228,220,172,191,50,173,117,74,130,173,20,230,18,145,246,223,237,19,240,171,83,248,119,168,38,179,226,207,9,234,87,126, 48,184,212,238,252,23,226,207,13,197,19,65,100,117,75,79,49,165,18,77,4,107,229,93,110,221,125,23,222,251,68,79,231,109,221,186,190,91,111,18,88,248,103,83,186,79,15,107,43,51,89,17,20,122,133,187,125,145,239,55,55,252,187,199,39,250,152,247,125,229, 249,89,151,119,247,87,119,219,191,182,63,237,125,225,47,137,126,22,208,117,13,23,195,23,186,103,140,124,65,224,149,209,60,65,165,37,237,195,53,223,139,180,178,214,240,106,246,242,195,183,237,83,52,127,104,183,187,146,111,189,27,42,179,55,222,175,128, 60,96,154,62,163,101,187,69,182,54,132,111,123,201,55,72,32,190,105,36,204,95,102,71,249,182,172,100,238,255,0,107,44,191,41,172,225,135,140,93,250,127,95,215,245,165,201,43,232,67,123,53,206,171,21,206,179,174,52,243,106,90,140,190,100,242,109,249,91, 251,205,187,251,213,85,117,95,237,3,147,33,115,252,91,190,106,234,44,117,135,212,60,54,211,120,118,206,125,70,250,222,6,147,82,47,10,37,173,156,10,203,28,83,5,139,248,118,237,243,25,190,235,54,237,219,91,117,115,150,26,30,177,241,11,196,208,105,254,18, 180,184,191,212,174,220,170,91,216,218,73,60,174,193,89,130,172,80,171,59,124,170,205,247,126,234,179,118,106,149,78,115,147,230,71,59,166,217,208,120,75,193,26,191,138,147,127,135,116,125,94,254,37,111,222,75,111,105,35,70,191,239,77,183,106,255,0,223, 85,237,223,4,254,3,39,134,60,127,163,195,251,66,197,115,23,134,53,143,150,113,225,219,171,93,82,250,22,221,186,54,158,195,118,235,184,215,203,111,50,24,255,0,120,209,238,242,217,100,85,86,228,191,102,13,83,67,77,118,217,254,38,69,119,173,248,101,52,43, 155,169,108,46,167,101,183,158,237,115,26,44,136,172,191,187,111,49,164,253,219,44,141,228,171,43,124,173,27,116,191,178,220,250,38,145,227,104,252,55,227,41,244,125,63,65,213,174,27,74,158,254,230,233,109,99,180,150,73,35,142,59,249,164,11,251,184,247, 44,108,211,109,253,223,152,172,219,86,54,175,59,19,78,112,105,161,66,17,95,17,228,254,57,142,222,195,199,218,220,58,96,83,106,151,147,36,4,71,36,67,202,73,164,217,251,185,20,72,171,229,237,249,100,95,49,126,236,159,50,181,119,127,179,101,255,0,246,127, 196,125,54,94,242,238,95,189,247,171,35,246,159,248,117,125,240,135,227,207,139,60,49,226,8,175,109,174,52,77,106,238,201,210,234,61,183,0,198,203,247,190,102,251,202,202,219,183,50,200,172,178,43,50,200,173,80,124,29,213,219,69,241,190,155,113,26,171, 121,114,175,251,85,244,84,249,165,72,233,95,17,251,81,251,33,248,134,68,240,205,151,218,89,151,203,218,206,205,247,100,249,87,230,175,168,165,240,220,158,41,208,117,235,73,159,247,62,32,240,253,222,158,205,19,109,147,119,148,209,174,223,246,190,101,175, 137,63,101,15,18,186,248,41,124,146,191,39,220,249,182,255,0,15,202,181,247,143,195,27,143,59,195,250,112,223,35,53,190,201,50,223,121,149,155,107,87,201,98,99,201,39,35,223,195,108,207,230,39,86,183,213,252,63,162,233,118,250,206,151,123,20,171,110, 139,50,176,91,118,105,86,53,87,86,103,251,187,89,126,106,212,240,119,137,238,126,25,234,214,26,142,139,97,167,88,120,146,120,228,150,43,153,228,102,138,194,54,249,124,197,243,62,86,155,111,221,219,247,119,87,171,254,221,240,223,252,22,253,164,188,107, 166,105,58,70,145,105,115,99,226,109,82,205,101,130,29,178,71,18,222,201,36,91,85,183,52,146,52,44,187,153,149,85,89,190,90,249,235,196,94,36,241,30,181,51,75,227,9,117,184,26,117,88,224,55,33,167,86,143,239,109,220,223,234,255,0,224,53,235,170,20,171, 171,236,153,224,186,124,178,229,61,43,194,223,27,237,254,21,120,216,71,240,239,195,119,218,199,138,110,100,107,139,157,87,87,221,116,205,35,54,230,107,120,100,221,26,183,205,254,177,191,217,251,213,205,124,96,241,197,215,196,191,16,205,168,120,210,223, 197,151,62,39,157,183,189,214,173,168,189,211,70,205,247,188,181,101,218,171,242,237,219,30,213,93,170,189,149,107,39,225,183,128,60,111,170,106,206,62,26,199,55,206,158,90,207,5,204,109,108,173,242,238,93,223,50,198,223,236,182,214,174,151,86,248,31, 227,255,0,12,89,203,115,226,203,203,29,58,221,93,165,73,36,213,213,182,127,20,141,254,206,237,187,171,162,134,19,11,70,124,244,229,251,207,241,127,193,252,6,220,164,121,158,167,166,201,118,202,175,187,114,54,207,222,55,204,244,251,171,88,109,116,216, 86,119,242,23,118,214,111,47,229,79,254,42,186,63,22,252,56,215,100,154,25,117,91,123,219,196,242,35,138,27,177,58,75,12,139,147,183,103,147,185,152,238,102,235,243,110,97,223,109,115,58,143,136,175,181,24,205,142,173,118,171,20,109,229,77,12,48,252, 255,0,43,125,214,255,0,107,117,122,220,200,153,70,70,110,165,124,44,236,188,173,50,70,217,36,159,52,203,30,205,223,240,38,168,52,77,40,95,202,223,100,140,207,39,240,179,86,156,90,108,17,235,2,45,89,246,193,228,239,143,237,18,110,219,72,110,197,130,180, 112,58,186,127,11,110,218,180,249,67,152,179,255,0,8,223,250,35,207,119,112,187,162,86,253,218,175,221,172,239,237,177,161,136,223,78,137,36,93,203,184,109,249,165,255,0,129,127,13,67,121,125,246,165,196,242,54,214,251,171,183,103,205,254,237,65,114, 151,63,104,142,36,87,111,238,170,173,87,32,115,27,55,190,53,190,215,52,153,173,175,76,22,150,146,47,203,20,107,185,159,254,5,84,116,40,45,99,190,95,59,200,158,72,190,242,77,30,229,102,254,238,223,226,168,34,123,203,73,124,155,116,145,36,221,242,175,151, 243,214,206,131,225,249,167,186,95,237,198,147,107,252,210,70,191,46,229,221,243,110,106,168,123,230,82,247,54,44,37,220,247,243,127,162,167,218,101,79,150,54,95,153,151,253,218,239,126,29,248,170,206,207,197,22,215,191,19,44,174,47,116,203,37,100,254, 206,211,238,126,205,39,221,219,181,100,111,153,87,114,171,55,247,170,158,167,172,105,94,22,210,254,73,99,182,88,62,235,71,243,110,255,0,102,184,75,255,0,30,75,169,187,46,129,31,150,191,117,167,149,126,111,248,10,213,206,4,195,83,244,119,227,71,198,127, 130,159,20,127,99,127,9,93,124,42,143,83,240,236,191,14,47,34,187,213,142,176,208,253,163,87,187,242,85,154,206,226,225,153,164,212,22,72,228,220,222,94,237,171,181,149,190,90,242,221,107,246,206,212,252,105,251,33,92,91,233,222,20,240,198,155,169,47, 138,99,93,95,196,26,84,55,39,87,177,138,54,130,246,9,21,85,126,206,209,55,238,237,36,102,104,218,70,88,119,47,205,94,43,251,26,248,19,197,159,22,181,93,119,70,248,80,186,54,167,226,147,167,253,178,194,207,85,180,91,145,124,97,195,60,86,237,47,238,99, 159,104,86,95,49,118,204,191,46,229,219,184,123,7,237,152,255,0,19,255,0,100,143,134,254,31,240,220,55,250,86,155,160,107,22,113,174,161,164,199,107,111,26,233,218,171,7,184,185,146,222,24,246,175,151,39,205,181,191,120,187,161,219,247,190,106,225,246, 90,198,9,29,138,74,172,125,15,124,248,17,241,198,199,226,47,236,129,23,246,190,169,30,153,37,180,150,250,23,216,245,132,109,54,123,136,227,135,203,142,75,91,169,62,105,26,53,101,86,101,219,185,153,153,118,237,101,108,207,138,255,0,16,53,143,132,62,44, 209,245,203,85,95,20,104,154,228,75,52,22,178,220,53,197,221,149,236,63,235,100,243,151,111,153,15,203,247,119,110,86,102,249,182,181,126,113,233,250,164,154,141,244,154,142,176,77,204,208,174,12,178,55,155,33,31,221,220,223,117,121,251,171,94,251,240, 215,83,155,226,255,0,194,221,88,234,154,222,155,163,143,13,199,13,221,158,151,28,119,11,13,196,18,43,44,140,247,17,238,218,209,249,106,173,30,223,187,34,182,229,175,38,190,69,135,231,149,73,107,115,40,210,132,223,44,162,125,19,240,235,227,125,199,237, 31,4,87,30,9,131,195,182,158,33,142,218,70,131,195,178,137,172,22,243,203,142,69,109,57,188,207,248,11,43,109,109,187,87,248,107,202,181,79,219,78,198,109,2,127,248,73,244,221,166,37,17,234,73,3,70,215,22,119,10,124,181,183,146,48,204,219,119,110,143, 204,85,219,242,183,221,174,123,225,7,130,236,127,104,63,15,157,39,225,221,220,214,190,32,209,244,249,231,182,212,158,111,46,78,155,103,243,228,219,186,56,219,126,229,219,230,110,88,255,0,224,85,243,119,136,52,77,95,193,54,183,94,30,191,159,78,187,183, 213,46,35,189,138,107,107,132,158,57,217,9,85,154,41,242,54,198,219,190,102,111,188,184,111,225,45,91,97,176,116,190,26,113,229,229,54,141,71,74,62,233,247,167,194,191,218,119,72,186,178,240,254,163,240,242,246,194,235,74,47,31,219,180,91,187,27,155, 86,178,185,242,219,204,183,243,149,89,166,86,86,249,100,141,153,127,121,243,47,222,170,150,31,29,60,30,254,37,213,91,195,58,6,155,225,33,121,42,219,15,236,57,33,88,18,237,79,250,219,203,101,249,154,105,29,161,86,104,227,93,202,170,223,119,238,252,225, 255,0,12,199,165,248,127,192,26,117,175,137,188,109,96,254,35,215,246,201,166,104,250,98,249,151,23,23,12,222,92,113,178,183,240,73,177,149,110,54,174,217,177,30,223,155,230,212,240,127,236,107,241,26,239,224,237,238,165,225,221,51,199,176,221,248,126, 249,96,213,86,231,75,251,60,54,49,50,44,194,226,15,155,237,82,109,147,229,102,141,91,230,218,219,149,90,183,149,10,110,60,178,145,141,74,188,241,254,241,209,120,131,254,9,191,45,200,148,252,40,248,137,163,234,236,129,73,146,235,193,94,33,209,96,147,118, 236,47,153,113,109,247,190,95,153,118,252,181,226,154,151,195,155,223,130,94,55,181,213,181,11,101,212,236,116,255,0,62,104,238,98,76,196,102,133,36,73,16,171,34,176,219,32,99,187,106,175,202,191,197,92,237,153,213,188,101,226,203,139,173,86,254,254, 238,125,56,75,168,73,119,117,43,95,109,88,118,146,227,206,102,220,223,58,255,0,123,239,47,202,213,127,194,48,88,139,159,26,62,184,137,13,193,240,190,160,202,224,224,205,55,153,10,175,254,205,89,40,221,218,247,230,51,86,230,247,78,22,107,123,205,29,164, 181,105,36,89,54,198,174,137,39,202,231,106,178,179,86,134,165,123,63,134,141,214,149,123,97,110,215,43,185,38,91,152,179,44,18,48,234,127,218,255,0,123,229,249,171,59,89,251,100,250,196,145,75,28,165,100,36,21,251,190,98,255,0,119,253,159,150,189,15, 227,127,141,237,254,34,120,95,195,190,37,145,237,47,181,139,221,52,105,90,199,152,27,237,17,221,89,186,162,220,245,225,167,182,91,125,204,193,190,227,175,117,174,142,86,220,121,138,57,229,209,111,5,159,246,197,212,50,255,0,101,11,200,237,206,166,240, 201,13,179,79,229,172,158,87,152,223,187,243,54,243,229,179,110,219,243,109,219,243,87,166,124,59,248,37,168,235,58,109,135,141,124,83,162,217,222,120,7,251,100,105,215,183,205,168,181,134,157,105,43,44,155,34,188,158,61,211,233,234,229,163,242,230,120, 252,182,202,174,237,165,171,47,224,7,199,239,29,124,22,211,221,126,10,120,179,88,210,100,158,105,191,180,116,169,76,119,54,55,146,236,85,134,73,180,233,146,72,228,95,45,153,90,73,35,202,130,193,91,104,219,94,139,227,143,218,119,65,214,60,121,103,170, 104,191,13,63,178,224,211,53,56,108,173,245,15,15,223,95,104,86,250,205,188,105,185,109,38,181,85,146,219,230,144,200,203,228,168,109,171,26,249,76,170,219,185,231,78,211,92,191,215,245,253,34,84,85,203,126,55,253,155,236,44,181,27,4,176,154,247,82,176, 214,33,123,221,39,90,188,2,27,173,122,208,42,153,110,46,35,18,178,198,214,251,190,89,21,153,111,115,28,145,200,176,238,174,63,224,38,131,20,183,16,220,205,108,173,111,169,202,223,188,144,124,210,199,185,188,189,203,252,63,119,107,127,188,181,234,190, 31,191,183,248,227,224,207,21,235,30,1,208,60,81,101,101,226,149,139,75,181,182,189,240,213,204,150,54,48,195,35,50,73,166,235,22,59,160,181,145,102,146,121,38,135,201,88,38,251,172,170,204,205,82,126,207,159,5,181,47,19,120,207,194,218,101,149,163,74, 117,152,174,167,211,252,216,252,149,189,183,85,154,77,202,205,181,89,124,181,86,220,172,223,239,87,205,113,5,87,67,11,55,47,235,250,254,187,35,216,243,203,67,213,254,30,252,54,79,20,94,232,83,248,131,79,73,180,253,67,79,120,228,182,50,180,106,183,234, 146,52,42,203,26,237,146,223,106,172,159,103,147,119,204,170,223,121,107,214,53,175,136,126,7,248,115,225,175,17,89,124,63,186,138,254,47,6,104,77,227,1,167,218,50,178,90,61,188,145,181,204,118,236,223,117,110,44,218,101,242,247,52,113,205,110,187,85, 126,109,222,103,227,223,218,147,194,147,120,7,74,248,99,240,74,245,53,253,90,246,84,191,213,60,71,102,190,101,133,135,149,247,230,243,191,231,140,127,44,109,34,252,171,242,174,237,223,45,121,63,192,159,17,120,3,225,165,173,157,239,195,139,127,16,248, 155,198,26,12,19,73,172,106,119,12,178,88,222,219,73,52,150,235,21,173,188,108,172,209,237,146,69,221,34,249,159,119,248,118,237,249,250,88,90,149,97,25,226,227,46,88,253,158,241,125,197,205,200,125,59,251,52,254,215,63,14,116,189,15,197,18,126,215,126, 29,209,254,33,55,136,252,207,16,105,119,54,54,95,97,214,44,108,87,108,126,101,157,212,45,30,237,177,178,201,37,191,253,116,93,223,119,119,9,241,55,225,46,139,226,223,13,252,83,183,248,97,164,166,189,169,120,186,215,78,179,178,188,130,216,207,53,173,180, 55,45,113,4,138,191,122,24,102,102,88,90,225,85,100,141,85,190,243,124,205,224,94,1,143,194,215,122,54,147,20,247,250,213,246,159,224,183,145,109,166,176,138,72,238,162,102,243,36,141,150,55,93,171,36,145,174,230,133,87,230,111,151,248,182,215,221,191, 16,252,121,103,251,19,126,199,218,103,219,109,236,252,27,227,79,20,199,47,217,180,93,46,242,27,166,209,44,149,150,24,26,102,249,163,186,187,93,171,51,54,239,46,54,242,99,95,221,198,204,218,86,164,240,114,139,165,30,87,25,114,223,78,250,45,55,239,169, 180,105,115,71,154,82,62,10,241,71,196,217,63,103,159,24,234,30,14,248,67,62,131,22,189,123,112,90,254,230,227,83,109,76,89,93,71,27,162,175,152,190,92,54,215,107,143,179,180,113,172,161,184,89,25,149,134,221,127,12,124,46,215,62,9,248,151,195,94,42, 248,133,172,233,90,167,218,228,181,213,244,253,67,79,111,183,195,52,115,76,223,233,10,204,223,50,199,50,171,51,73,31,222,101,249,87,229,172,47,9,124,14,209,117,11,81,226,29,22,242,123,91,77,30,221,91,81,241,21,219,79,125,29,220,146,73,36,114,106,50,66, 191,51,91,178,201,251,198,221,181,126,105,25,126,102,106,235,226,240,125,191,193,173,15,254,16,207,139,26,110,157,174,120,111,99,104,114,93,91,60,178,62,148,154,131,110,138,238,57,147,230,123,75,166,69,101,45,242,44,208,253,229,101,219,94,158,46,174, 26,171,246,73,202,253,95,46,186,118,127,215,228,71,178,139,124,199,211,223,16,101,210,252,81,161,107,158,32,241,78,141,166,233,122,130,88,173,211,248,159,123,93,233,22,114,109,147,247,119,86,91,191,209,252,182,85,145,166,183,93,191,197,36,107,181,171, 224,29,35,246,112,241,158,147,241,51,79,177,215,108,36,149,252,70,1,176,191,182,149,111,44,181,104,166,111,45,110,173,110,163,111,46,104,254,100,251,187,89,127,137,99,249,107,233,29,71,192,90,132,159,5,117,255,0,248,68,116,189,102,238,227,197,26,28,214, 247,113,70,170,177,222,69,243,71,230,125,159,204,93,222,103,150,219,90,21,249,190,109,173,252,85,231,63,177,82,248,191,195,83,234,26,71,135,199,138,44,116,59,210,211,110,187,149,100,181,146,120,213,155,204,134,56,247,44,50,121,138,187,164,141,149,155, 248,183,87,119,12,99,169,212,114,84,167,119,181,165,211,250,236,117,198,148,165,203,204,143,181,63,100,79,216,155,92,240,191,131,252,89,175,234,122,158,155,103,170,248,162,195,236,118,170,241,172,145,233,146,44,208,72,222,95,247,166,85,249,90,63,225, 86,221,254,247,145,205,227,11,63,29,92,234,179,90,190,153,168,88,221,69,113,30,164,146,172,63,43,90,237,243,35,105,151,230,109,178,51,42,183,247,166,147,248,87,229,251,95,199,58,62,169,127,251,61,106,86,159,14,227,188,182,188,150,214,59,168,47,11,238, 104,247,43,43,124,187,126,86,146,56,225,221,39,251,95,244,211,117,126,74,105,246,122,143,131,102,241,52,254,25,136,193,19,93,181,199,203,43,73,21,238,230,105,37,102,243,63,214,127,15,221,95,187,247,126,90,245,243,56,251,127,118,82,58,220,99,14,88,158, 153,227,8,111,188,95,241,63,88,255,0,132,110,61,47,99,79,107,60,126,126,213,109,203,12,42,209,171,110,253,231,238,227,221,242,252,205,182,188,147,226,47,139,252,69,225,111,136,62,45,181,240,240,185,58,172,250,163,79,167,1,28,42,141,100,168,25,124,184, 219,118,214,87,109,204,205,242,237,144,124,223,221,245,157,79,226,118,181,125,161,248,115,84,180,243,36,181,189,186,176,176,104,45,210,52,186,146,225,164,88,214,102,101,221,183,106,252,219,191,222,106,224,124,79,160,63,132,252,99,163,176,41,170,235,81, 94,127,103,106,77,99,63,238,227,154,22,104,230,105,153,191,121,229,183,151,247,118,237,111,151,248,90,188,140,52,189,143,189,82,39,61,90,109,163,10,217,117,207,17,120,134,222,206,25,52,171,91,27,104,86,123,219,137,102,216,222,116,210,55,149,229,178,179, 110,249,182,125,213,101,249,151,115,109,173,184,62,52,105,218,13,145,209,103,177,215,124,89,45,165,220,146,79,230,90,44,112,44,145,172,139,187,116,95,50,178,238,111,155,248,85,182,214,215,130,62,29,190,187,226,109,78,238,125,2,24,111,237,164,134,63,50, 70,95,49,99,249,149,118,198,204,202,173,247,126,234,179,109,101,254,238,218,232,180,152,244,63,2,106,214,203,226,171,104,254,203,108,90,85,187,254,211,134,206,5,118,101,216,179,51,124,204,204,204,171,247,118,182,229,254,42,169,85,140,212,121,99,112,165, 203,73,123,199,138,218,252,90,241,68,90,241,212,124,55,162,218,248,50,27,194,165,111,109,109,90,234,123,116,92,178,66,146,72,187,96,85,37,190,86,140,43,110,110,62,106,224,237,188,5,226,93,107,199,83,105,154,165,230,173,37,198,214,91,166,123,150,86,149, 118,182,223,189,254,207,222,102,251,191,222,175,163,62,32,222,232,62,40,241,5,148,18,90,216,92,218,197,115,36,250,180,178,200,214,214,214,144,199,34,178,201,185,155,115,54,217,21,151,107,127,11,87,147,248,175,198,63,100,213,181,75,175,0,106,55,87,16, 202,206,182,13,57,142,85,189,141,157,154,85,157,118,238,93,176,255,0,171,219,255,0,109,54,215,167,134,196,78,167,195,29,74,196,126,235,221,140,143,46,119,212,23,67,241,86,165,227,25,11,90,223,64,214,204,146,200,138,247,119,91,213,98,101,85,225,140,108, 170,204,223,47,203,243,13,219,171,138,146,88,181,157,79,41,108,205,44,178,109,85,83,181,85,127,187,183,255,0,102,174,151,80,212,181,63,18,199,246,150,211,165,142,202,38,102,142,56,99,111,33,228,254,38,85,254,26,198,211,190,211,14,170,174,96,105,165,243, 149,164,143,118,214,111,248,23,240,173,123,84,239,246,143,60,210,240,236,48,77,246,119,213,227,187,134,204,200,203,36,241,249,114,179,46,223,249,102,191,222,255,0,122,186,243,241,22,75,253,63,68,181,49,217,219,195,162,249,38,221,76,75,185,188,182,221, 30,230,95,153,153,91,230,249,171,46,77,18,226,202,11,125,44,233,31,102,184,89,153,188,201,36,223,44,190,103,205,255,0,160,252,181,82,239,254,36,150,242,75,8,137,174,62,109,187,87,102,223,238,212,182,84,98,116,55,26,110,163,241,135,199,58,173,218,218, 219,91,61,196,178,93,106,51,65,22,219,101,146,70,220,204,170,191,119,230,111,155,254,5,85,227,240,205,141,142,189,51,91,121,151,54,178,237,138,53,88,126,105,219,111,247,98,254,29,213,202,104,30,39,179,242,101,130,69,150,38,185,93,178,127,181,187,239, 43,55,247,127,217,173,187,91,171,169,46,223,124,247,82,88,219,70,190,117,186,238,131,253,221,172,219,91,229,173,163,30,95,116,153,149,245,248,213,44,222,218,72,60,137,21,89,126,109,191,46,223,239,87,27,119,169,103,228,157,254,72,62,85,219,94,149,241, 6,77,19,80,240,199,149,167,94,193,38,175,28,138,208,195,111,243,42,174,223,154,54,95,249,232,181,231,171,225,169,32,137,39,187,145,82,229,219,116,113,255,0,227,191,55,247,104,148,137,137,62,147,175,221,52,76,186,29,131,125,166,40,218,73,37,255,0,103, 248,190,95,248,21,102,106,247,247,55,215,225,53,56,91,114,255,0,203,53,12,192,124,191,194,181,163,29,245,223,135,70,223,223,197,42,175,203,229,253,239,246,107,232,111,217,251,246,125,214,62,34,27,15,19,124,60,30,5,241,175,136,163,136,92,106,62,21,187, 214,214,13,98,87,44,187,230,75,73,188,165,110,171,182,72,102,253,217,27,182,238,93,173,148,230,169,167,54,105,78,60,204,229,190,2,126,204,159,219,94,18,147,95,241,181,134,162,214,77,185,99,43,4,138,168,202,170,219,86,77,187,124,198,86,86,218,223,194, 181,237,218,23,192,27,79,134,183,118,247,118,119,250,94,183,166,94,164,45,97,60,86,75,5,205,171,50,172,158,92,202,219,153,100,95,47,106,178,179,43,127,15,247,107,111,226,231,138,163,248,27,165,93,106,62,20,211,252,119,224,75,251,137,210,223,87,240,182, 179,106,186,222,135,116,184,230,75,123,237,177,220,109,86,219,187,237,107,185,183,50,199,37,120,231,142,188,101,225,255,0,136,62,8,159,196,255,0,100,188,209,103,209,165,138,41,190,197,230,8,68,199,104,73,35,186,111,245,108,191,43,121,12,203,39,241,70, 205,95,39,91,23,139,196,214,188,127,135,47,159,245,248,157,105,83,164,125,15,166,205,240,150,223,68,212,33,241,172,247,54,150,254,43,178,150,199,83,158,242,214,54,214,60,60,215,10,99,75,173,50,77,190,77,237,158,229,255,0,72,179,111,153,151,247,145,178, 180,107,187,229,59,31,24,106,255,0,179,143,198,75,61,91,195,23,122,93,178,232,119,183,54,82,77,101,17,154,40,218,70,242,100,147,108,155,183,172,145,48,149,85,183,5,73,182,253,234,139,227,55,196,141,67,226,191,134,33,214,124,93,227,11,77,123,85,89,154, 218,84,123,36,135,80,72,227,221,229,201,39,151,181,90,54,221,183,114,175,202,203,181,190,111,153,185,11,79,139,90,159,252,43,93,91,194,151,74,183,218,86,161,115,30,165,43,72,94,73,32,150,24,252,175,50,60,127,171,253,195,52,50,127,122,50,191,119,110,230, 244,50,252,44,225,25,42,146,187,100,98,49,81,171,47,119,72,153,146,95,77,224,223,23,60,250,20,6,6,181,188,101,73,33,85,141,85,131,109,139,98,178,252,223,43,125,214,221,182,174,120,174,254,109,114,210,210,226,222,246,107,155,31,221,218,198,183,83,159, 54,21,84,202,171,15,249,107,28,123,118,249,159,119,119,203,88,222,41,248,132,124,67,171,105,151,143,101,109,5,237,164,86,145,204,83,115,125,166,88,6,223,62,64,255,0,199,34,170,110,85,227,228,163,83,241,25,215,225,22,218,132,239,113,4,55,119,55,81,112, 161,54,202,114,234,161,126,238,231,77,223,240,31,149,107,215,80,113,81,230,57,249,131,193,186,13,191,137,124,95,166,89,168,182,217,53,253,180,36,240,172,194,75,132,140,141,223,221,249,154,182,62,41,104,86,186,127,142,188,111,109,166,152,96,138,211,85, 184,134,8,35,125,219,81,111,222,48,187,191,186,169,183,31,74,234,254,15,248,55,64,159,225,87,138,181,173,126,88,109,145,27,79,211,132,146,91,27,153,237,173,167,186,219,115,118,160,35,8,182,170,170,198,114,29,156,50,174,238,86,184,239,12,120,118,215,198, 126,51,54,62,31,150,226,224,94,94,45,189,181,195,219,180,126,100,146,72,202,159,187,93,205,243,126,239,106,253,230,102,219,254,205,41,84,229,143,51,136,114,251,167,25,37,187,219,92,159,51,63,188,221,183,255,0,101,173,47,10,137,99,130,89,228,64,154,124, 127,185,184,109,184,95,222,47,250,189,223,237,42,215,65,241,167,225,238,167,240,171,226,143,136,124,57,227,11,120,109,245,221,27,80,158,214,242,40,154,55,134,39,77,187,182,121,108,203,252,65,182,238,254,45,191,123,117,100,79,16,188,128,88,233,211,197, 105,109,123,58,153,62,211,38,216,226,109,187,85,164,111,253,155,111,241,80,231,237,23,169,159,41,250,99,251,4,124,96,131,194,186,199,128,117,221,55,91,190,208,27,199,127,12,174,60,19,127,169,25,124,197,209,111,109,89,86,45,77,161,101,49,201,37,189,223, 146,205,28,159,122,9,174,153,178,177,178,183,151,126,215,63,240,76,15,21,120,107,224,5,167,198,189,59,193,203,6,144,34,71,241,69,142,133,108,210,105,90,20,140,171,182,230,213,142,237,182,141,187,110,214,109,176,229,190,234,171,87,153,127,193,62,245,200, 60,91,111,23,129,117,249,53,11,93,74,29,109,245,127,15,221,64,228,253,159,82,254,205,189,104,227,149,113,143,38,71,177,11,34,47,250,197,157,151,238,229,171,244,175,92,248,215,226,15,132,31,240,79,79,31,248,187,195,151,215,58,191,129,60,101,225,205,38, 254,116,91,22,146,200,248,127,87,147,251,58,237,133,188,202,203,35,67,55,155,36,138,223,119,114,171,125,237,213,243,238,157,122,56,168,210,229,180,91,126,242,251,237,233,111,197,29,17,187,143,41,248,183,172,232,223,105,157,162,240,235,238,118,220,171, 28,145,249,114,238,95,153,182,255,0,123,110,223,252,118,185,41,238,37,26,140,145,125,153,162,70,254,21,13,181,126,90,245,15,136,254,22,177,240,183,197,139,253,62,203,81,213,71,135,161,157,167,240,238,187,168,233,178,218,75,170,105,108,205,246,59,185, 33,101,87,219,52,59,89,155,251,197,254,242,171,86,16,215,44,117,155,229,179,241,133,172,107,101,111,35,73,111,113,103,182,73,237,149,84,172,104,147,21,249,237,149,136,111,39,0,182,27,107,43,109,90,250,8,62,79,118,70,82,55,180,255,0,16,127,99,219,104, 247,99,77,191,181,190,158,226,223,82,91,57,110,157,155,86,129,148,43,51,73,39,205,34,201,182,102,81,187,106,227,248,185,21,230,246,119,146,94,219,24,222,75,137,173,17,154,75,120,75,110,88,254,93,170,163,254,3,242,252,181,233,127,22,238,116,200,244,159, 6,233,154,149,196,94,33,111,11,88,77,165,95,220,216,77,178,210,250,212,207,44,214,77,111,62,210,223,42,92,74,173,185,119,46,205,173,235,92,143,133,252,39,123,226,95,16,105,186,38,142,98,75,141,100,198,17,151,229,199,222,98,223,146,200,219,127,217,85, 169,110,49,86,68,74,95,101,158,137,225,225,255,0,10,227,225,71,135,60,103,160,107,118,58,133,228,122,173,214,157,117,164,193,17,72,204,59,10,136,38,145,151,107,45,196,126,108,191,117,183,13,191,47,122,250,39,246,49,253,164,52,75,95,128,158,34,248,123, 225,175,11,65,169,120,147,194,55,81,120,155,192,126,48,211,163,123,111,17,89,221,92,21,87,211,218,199,111,153,123,107,188,191,152,176,201,231,71,18,153,32,87,144,43,47,205,118,176,166,132,124,25,167,248,250,234,57,244,107,157,58,59,203,120,244,251,209, 49,142,41,230,154,107,104,100,221,159,179,186,178,237,113,150,100,89,23,230,218,204,181,107,225,94,185,63,192,15,218,47,193,158,33,240,131,92,72,109,210,219,81,181,150,226,220,43,90,22,7,124,177,249,155,163,145,161,93,205,231,71,251,191,149,153,127,213, 178,212,194,42,50,146,229,46,50,61,191,192,87,179,252,106,211,34,208,190,13,120,111,78,210,252,107,226,139,187,45,35,197,22,55,192,193,109,125,58,53,213,220,23,147,121,59,102,181,185,109,169,111,35,124,177,204,39,101,117,86,111,151,138,147,71,210,160, 62,39,208,205,158,169,160,120,130,109,118,40,224,240,150,189,97,113,113,168,105,13,29,188,127,233,77,169,109,49,220,67,50,202,240,188,44,170,222,92,145,76,187,182,239,109,159,138,190,5,241,127,194,239,31,248,35,198,222,28,184,210,117,63,17,105,250,172, 218,69,197,213,141,212,115,173,254,189,36,211,222,190,212,86,143,206,179,145,165,105,97,145,127,229,166,248,247,46,213,199,119,227,75,105,255,0,108,143,9,248,111,198,119,62,56,241,37,231,199,173,62,88,116,13,95,79,191,182,142,214,120,100,111,55,17,72, 176,175,201,101,12,114,76,209,221,252,219,86,77,178,238,100,142,58,198,180,35,203,43,245,254,174,28,156,254,236,143,152,190,45,93,207,174,107,127,109,212,94,251,237,119,18,40,147,237,50,180,243,6,88,214,61,172,204,204,205,181,99,88,215,251,170,170,191, 117,106,183,132,167,93,54,226,23,25,59,101,93,219,191,222,173,47,139,62,28,212,252,39,226,73,116,95,28,216,73,166,248,131,73,184,123,29,86,25,88,179,61,212,127,43,77,183,248,86,69,218,235,253,229,145,89,126,245,115,246,210,52,113,253,229,199,251,53,213, 130,140,163,69,66,67,148,121,79,213,255,0,216,207,87,135,84,240,174,150,247,47,230,162,175,157,181,91,239,124,191,248,245,126,143,126,207,123,53,47,3,194,208,237,103,146,46,15,247,190,111,150,191,41,127,224,157,158,32,123,191,13,233,233,63,16,170,170, 170,171,125,223,225,219,255,0,125,87,234,7,236,215,174,37,180,12,151,50,54,36,117,143,107,59,124,191,221,93,181,224,99,163,239,74,39,179,131,151,187,19,242,19,254,10,73,240,191,195,126,25,255,0,130,236,197,166,252,114,254,212,143,193,62,59,241,6,133, 121,169,182,157,116,45,46,45,34,188,139,236,82,77,20,203,243,15,46,107,116,147,114,255,0,117,191,189,95,61,252,34,240,236,190,47,253,167,228,240,38,191,170,120,103,89,211,155,196,55,90,36,119,222,39,191,54,118,83,188,55,77,20,6,107,173,146,37,187,73, 229,167,204,209,249,108,210,42,238,77,213,246,71,252,28,121,240,71,73,155,246,194,248,107,226,79,16,106,239,163,217,107,94,24,185,75,187,200,182,202,193,172,111,1,79,38,54,63,188,145,127,180,91,229,95,153,191,133,75,42,231,231,191,217,107,225,31,195, 95,0,106,254,20,241,55,128,254,32,217,235,218,134,162,240,71,226,123,29,87,193,55,19,233,172,183,1,190,211,167,31,50,68,105,45,228,87,242,101,153,150,72,219,204,89,162,104,252,150,84,238,106,149,108,60,101,46,199,6,37,114,214,145,244,255,0,141,254,13, 120,99,90,240,101,207,128,254,34,248,75,67,211,211,206,147,68,210,60,67,163,71,111,111,121,162,94,197,243,79,100,205,31,202,178,71,34,174,232,219,116,115,70,187,151,204,143,117,126,113,31,133,94,28,211,60,97,168,54,167,241,163,195,190,29,241,13,165,196, 176,204,237,163,106,118,171,44,145,55,150,227,206,133,54,159,153,91,143,231,95,106,124,82,241,39,195,127,217,55,227,135,140,32,248,113,241,50,227,226,71,133,60,103,108,203,169,248,106,229,38,183,212,52,184,227,38,56,34,189,212,188,233,22,75,251,89,33, 85,134,69,95,59,203,242,102,89,36,86,109,222,125,225,79,216,118,203,226,55,194,201,108,252,1,173,201,99,31,141,108,27,83,211,222,123,72,83,81,241,51,43,44,142,205,113,54,224,208,36,140,167,203,129,98,86,12,79,205,190,188,15,237,8,229,114,148,42,212,146, 218,210,81,91,121,190,86,119,80,195,188,98,187,81,191,230,120,43,124,34,210,52,123,43,59,153,124,117,240,135,86,190,154,93,134,235,195,154,251,65,168,63,76,49,183,184,181,72,217,178,127,139,230,251,219,107,194,53,59,217,167,212,167,151,80,116,23,46,204, 179,253,153,118,171,159,226,255,0,190,190,247,252,10,189,119,227,135,192,57,126,17,252,70,142,194,202,255,0,196,26,109,204,101,101,123,29,71,76,189,211,174,172,63,133,88,27,129,186,85,102,221,182,69,249,127,135,230,175,59,79,11,139,221,82,27,107,203, 191,58,56,66,194,146,152,215,108,49,175,240,252,181,246,248,27,213,167,26,145,119,139,60,204,76,148,39,202,213,164,115,79,99,59,178,73,105,108,219,62,238,237,191,118,173,221,120,118,119,217,230,75,18,54,239,226,251,213,181,175,106,63,119,77,208,35,243, 215,238,252,191,126,79,247,191,187,76,135,194,82,166,239,183,73,243,124,187,99,143,230,255,0,190,171,174,124,176,48,29,164,105,90,124,247,107,246,120,150,73,221,124,168,217,100,218,170,223,237,87,69,225,201,244,79,10,79,28,146,105,203,174,234,113,42, 249,208,202,255,0,105,180,255,0,107,114,182,213,255,0,128,175,253,245,88,141,186,212,75,20,44,136,144,55,203,50,174,221,223,237,127,179,79,143,196,214,58,85,139,36,17,68,239,246,117,139,112,109,251,91,248,155,254,5,69,79,132,206,159,83,216,174,62,46, 124,40,241,4,151,22,241,252,18,146,194,107,176,231,237,58,87,141,111,45,229,179,254,31,220,219,178,201,11,34,224,55,150,223,46,224,203,187,111,204,222,67,241,3,89,209,173,60,72,203,240,209,117,152,108,35,45,12,177,234,183,81,93,179,178,247,89,35,69,253, 219,127,117,190,106,231,53,143,25,92,65,17,139,75,95,33,39,94,101,101,218,206,191,236,214,61,176,146,125,187,55,183,227,89,70,60,187,126,103,68,164,116,218,132,62,77,204,144,27,139,75,164,221,152,167,137,25,99,155,118,223,155,45,243,42,255,0,189,247, 118,215,103,225,239,217,238,11,242,255,0,105,241,167,132,72,81,40,3,78,105,181,53,141,214,61,209,249,143,24,72,227,86,127,151,127,240,253,239,187,94,117,103,163,62,162,200,206,255,0,115,251,205,90,247,30,54,182,210,76,112,232,45,119,115,60,114,111,222, 179,249,80,175,251,187,126,102,255,0,107,119,255,0,21,87,46,111,230,51,59,173,91,75,155,224,167,137,236,175,126,26,93,94,248,150,56,46,131,143,244,89,68,76,85,55,183,156,214,173,181,149,183,31,221,172,135,229,80,219,182,183,203,234,63,18,62,40,107,159, 180,87,195,91,237,46,231,77,251,5,199,151,28,107,111,36,22,247,127,107,109,173,36,115,44,222,92,109,105,39,150,170,191,46,237,223,51,51,53,112,127,8,124,93,110,254,27,138,202,251,197,154,230,137,113,118,223,100,143,78,210,109,246,77,35,72,204,219,150, 102,253,207,150,173,242,237,111,153,149,190,86,220,187,90,79,25,235,254,57,255,0,133,113,115,168,248,138,211,197,26,214,155,160,223,193,3,223,223,222,135,143,78,189,148,179,132,242,213,183,102,77,222,187,127,187,183,238,212,117,52,129,198,106,255,0,8, 181,45,3,193,201,226,72,175,180,123,235,43,75,136,109,47,45,236,117,65,37,246,155,44,170,219,26,107,114,191,187,220,201,181,91,149,221,183,251,213,233,94,36,248,131,163,248,151,225,232,214,180,159,5,65,100,215,114,180,58,230,161,101,167,175,216,228,189, 97,230,54,201,99,147,204,141,176,229,149,91,229,219,33,93,205,242,173,113,31,14,255,0,105,11,205,5,46,160,159,66,240,237,205,182,167,98,186,110,164,46,237,90,105,175,160,221,187,203,13,185,124,157,220,174,85,91,110,237,213,151,226,187,251,123,107,127, 18,15,135,231,91,181,240,238,171,36,45,54,152,243,147,185,55,124,182,179,110,249,166,104,228,97,182,69,249,153,118,179,127,122,142,94,111,136,47,202,119,26,194,223,252,39,248,155,225,219,63,4,235,154,42,38,185,99,105,170,233,247,154,118,167,246,200,244, 217,110,210,72,82,79,51,106,180,50,43,101,90,63,155,106,183,205,187,118,213,185,123,251,54,120,179,198,94,25,213,245,223,22,104,247,186,4,177,235,82,232,250,173,252,71,102,155,18,170,121,216,71,86,242,231,111,49,151,116,49,179,75,247,91,229,86,219,94, 62,151,186,191,141,245,235,189,97,236,238,98,123,203,173,151,19,65,31,147,2,21,64,26,63,48,237,17,201,181,87,253,175,155,253,161,95,102,120,123,196,154,87,197,207,217,231,198,43,227,251,221,28,106,58,166,161,30,181,4,26,45,234,198,151,66,222,194,29,182, 224,92,109,101,189,120,225,111,187,26,178,171,46,215,94,171,205,55,40,252,36,61,121,81,103,246,79,253,153,162,248,89,224,169,117,47,19,120,155,192,219,224,91,115,168,105,126,36,178,186,177,109,57,89,91,201,184,251,83,121,208,180,107,36,254,91,52,113, 174,213,111,51,114,237,173,15,30,254,222,146,124,53,215,214,214,250,227,81,95,16,120,90,121,109,254,213,166,219,91,201,98,85,100,88,231,219,29,220,139,51,52,158,84,159,50,255,0,172,89,126,111,225,101,194,253,150,62,45,233,158,38,179,142,95,139,218,129, 188,143,91,181,146,40,96,179,134,72,39,22,214,234,210,103,207,218,205,54,217,60,159,222,43,125,230,249,150,188,67,227,94,141,224,47,28,120,242,243,80,240,125,231,138,188,49,54,165,111,253,164,6,163,18,234,49,223,43,66,172,178,127,163,109,107,118,102, 86,95,249,105,26,237,174,76,60,101,58,178,246,218,154,251,56,148,252,41,125,105,241,163,192,112,232,86,58,125,143,132,110,237,67,79,62,169,111,13,196,246,247,80,90,199,247,86,222,16,210,171,34,204,205,187,118,213,222,223,55,239,62,90,86,95,13,166,211, 124,113,99,225,159,15,105,182,122,222,173,226,98,154,70,146,168,86,49,121,231,220,219,69,12,115,91,200,217,182,111,57,151,253,99,49,196,163,43,247,171,244,70,95,248,39,63,139,126,0,255,0,193,53,180,223,132,255,0,9,173,180,45,47,227,207,199,228,135,90, 241,168,213,245,97,107,121,163,120,127,44,214,26,53,188,155,78,217,102,109,178,79,30,223,153,164,153,62,238,221,191,60,252,27,248,19,97,240,179,254,10,33,225,239,17,254,217,41,170,252,60,209,252,51,172,104,186,254,161,37,230,153,36,182,179,125,153,173, 188,200,90,104,219,108,107,231,65,254,185,89,149,89,118,201,181,91,117,121,171,29,134,165,85,211,117,63,29,122,124,195,234,211,231,139,229,220,249,151,226,7,129,180,239,135,247,222,38,240,239,137,236,181,105,124,69,166,221,93,216,195,33,146,9,45,224, 185,130,242,72,60,153,157,85,85,134,229,101,102,95,149,152,238,225,118,215,47,123,240,70,246,231,225,5,223,139,244,235,205,54,234,59,45,82,77,47,80,211,109,252,195,119,167,124,187,162,184,145,126,232,183,153,188,200,85,183,127,173,86,143,107,53,125,59, 241,47,224,102,181,172,248,215,199,51,120,167,68,135,70,215,180,127,22,92,93,79,113,37,196,59,172,108,47,110,229,189,183,184,48,174,239,180,6,102,143,203,147,230,135,107,72,191,120,48,170,191,3,35,178,248,113,170,95,220,181,237,166,165,224,143,137,218, 77,207,134,188,81,163,155,102,221,113,35,203,189,174,34,70,101,88,218,222,229,97,154,38,95,154,54,202,198,172,210,86,241,205,48,244,100,226,229,126,189,253,61,47,208,74,139,230,60,187,246,101,241,38,155,225,15,11,235,26,167,196,95,16,233,23,182,183,17, 200,191,240,143,79,53,196,215,215,82,252,168,210,143,47,105,180,147,200,89,86,59,166,145,188,191,59,238,183,221,175,75,208,255,0,109,107,63,0,104,87,222,8,248,19,103,225,136,116,221,111,84,18,233,215,191,240,135,69,113,171,218,179,204,171,111,20,154, 134,163,35,18,97,86,142,63,57,109,247,54,55,30,245,224,159,16,116,235,111,14,120,150,226,79,19,104,122,198,140,226,230,79,55,79,185,184,145,214,57,190,108,171,71,34,199,34,42,182,207,150,69,221,77,240,228,86,176,234,250,117,198,137,34,92,89,71,119,12, 190,92,177,71,29,204,115,43,70,210,55,251,74,173,185,151,251,203,182,181,157,56,98,151,180,154,186,249,25,202,62,247,45,207,78,248,177,251,127,252,75,215,252,103,115,124,158,38,215,86,234,204,53,188,175,121,171,121,143,149,145,178,162,59,120,224,183, 131,159,151,104,132,255,0,227,181,239,233,240,217,60,1,226,125,19,80,248,177,169,148,240,246,151,240,131,75,179,156,52,147,221,65,23,219,103,158,222,238,228,39,152,222,75,201,111,166,220,110,219,183,230,101,102,219,180,215,132,254,214,62,15,185,31,181, 86,147,225,203,24,192,179,213,109,244,89,37,129,15,201,42,43,57,81,34,255,0,121,84,73,249,181,118,154,223,196,191,19,254,210,154,69,191,129,190,20,222,217,219,218,248,141,76,87,218,189,220,203,109,99,109,104,171,33,158,27,139,134,141,154,24,85,164,153, 183,21,220,205,34,249,123,163,102,90,227,168,162,146,132,35,101,47,139,250,251,194,156,117,229,57,95,139,255,0,19,116,31,135,62,51,210,237,254,24,125,185,252,63,226,200,45,124,79,172,207,11,175,219,181,165,185,89,228,72,25,183,98,53,133,219,98,195,247, 85,151,230,102,106,233,255,0,100,175,131,58,142,173,240,211,196,250,247,196,127,16,232,62,13,209,53,13,9,116,235,43,251,171,117,119,30,91,33,146,238,104,225,145,164,183,219,229,21,111,48,47,152,205,252,62,95,205,222,124,57,253,129,190,16,252,21,158,206, 227,227,39,196,139,175,28,248,250,217,237,238,147,66,240,188,176,90,216,71,46,245,120,33,147,80,184,141,164,108,180,123,183,5,139,118,223,187,181,90,188,255,0,227,47,237,201,101,224,239,20,223,69,240,15,225,39,194,45,5,175,229,157,174,245,117,143,254, 18,41,181,73,37,117,154,79,244,185,188,175,187,38,214,109,170,209,238,95,149,130,199,92,174,107,29,9,97,240,169,191,239,63,248,63,228,209,164,169,70,63,196,57,111,30,107,118,63,0,254,36,88,234,122,55,140,60,9,241,8,221,223,174,168,27,195,183,50,79,229, 67,242,249,112,201,35,42,249,39,114,178,249,59,89,190,101,111,226,101,172,31,138,95,17,60,119,226,239,138,58,230,131,241,27,195,143,173,203,37,164,186,116,58,102,233,100,109,45,85,68,136,108,110,23,115,9,33,105,19,118,213,111,49,153,149,151,230,90,179, 240,255,0,192,58,46,180,147,235,159,30,245,109,110,231,196,122,139,200,246,150,118,219,94,118,146,91,47,50,202,229,153,151,203,196,151,108,170,209,200,202,152,219,185,126,106,222,248,249,175,105,62,10,253,162,109,117,20,217,170,105,179,234,87,58,213, 147,125,182,107,107,173,37,188,187,69,154,103,249,190,100,111,38,73,10,231,230,249,135,31,117,186,40,225,233,42,209,77,95,221,223,205,91,211,207,162,20,105,251,188,223,100,226,63,101,171,251,111,12,252,82,26,140,218,222,175,107,46,143,109,119,59,253, 141,254,203,25,84,141,131,172,177,201,255,0,44,252,205,170,202,223,43,124,187,171,237,255,0,217,19,227,158,131,226,207,131,218,239,133,124,69,168,220,221,234,47,225,214,208,109,52,120,204,127,110,211,180,200,109,153,62,195,231,70,217,145,119,67,230,193, 117,185,94,54,93,178,127,22,239,128,44,174,181,155,255,0,20,106,114,120,37,231,212,175,181,213,185,211,164,181,22,188,206,146,206,110,10,44,108,191,117,146,53,249,126,242,170,237,255,0,102,190,152,253,133,254,40,222,67,161,255,0,99,93,232,145,197,175, 248,99,199,182,158,45,178,186,151,79,88,238,47,35,109,46,238,195,80,180,253,226,253,229,134,221,110,60,159,188,204,141,242,174,218,228,206,114,202,56,234,82,115,151,195,239,71,213,109,253,122,244,185,211,130,174,233,79,150,39,97,31,237,121,163,203,240, 183,192,80,124,69,86,127,2,197,97,54,149,169,205,101,112,176,106,122,53,143,72,110,237,109,87,248,183,73,12,202,172,204,191,232,243,42,171,51,45,63,246,88,26,194,254,208,122,150,149,241,91,85,251,78,183,107,47,146,53,203,104,82,19,121,102,170,205,21, 220,115,196,191,191,141,149,109,228,93,222,99,47,157,181,153,153,90,185,191,132,63,12,244,31,218,195,224,250,217,124,9,145,71,138,36,188,131,71,213,52,219,149,111,47,80,182,185,184,219,106,97,86,249,162,243,183,71,243,47,221,145,100,93,223,197,93,127, 194,207,135,214,223,177,215,141,53,111,13,221,221,219,248,193,252,49,170,93,233,122,186,105,45,53,244,58,67,121,177,199,229,79,115,11,44,107,110,178,70,209,179,124,171,26,194,219,182,182,237,177,147,212,193,96,171,78,19,135,37,79,78,253,124,175,248,252, 142,143,109,86,106,242,145,250,69,226,127,26,94,248,51,225,214,175,113,115,101,107,162,218,105,150,215,49,207,102,203,182,27,137,190,200,203,229,171,43,51,73,229,201,26,171,73,247,119,42,255,0,192,127,25,60,51,241,67,83,214,99,150,95,16,219,199,164,221, 173,170,233,134,254,92,73,43,95,199,229,195,30,207,47,106,42,70,203,50,201,181,85,126,111,150,191,72,255,0,109,143,138,183,126,3,253,152,60,95,240,207,87,180,58,79,141,117,223,13,121,49,91,13,74,222,75,203,88,238,45,217,188,201,217,87,203,219,39,218, 25,188,232,217,183,124,187,89,171,243,123,197,49,105,50,234,55,16,105,247,12,183,26,186,203,246,216,109,244,255,0,62,39,39,230,222,172,170,202,204,179,126,249,183,46,214,109,203,183,115,87,163,95,25,134,170,238,165,115,58,178,71,121,169,235,87,26,7,142, 116,91,167,213,117,63,179,106,214,139,115,52,186,122,249,118,155,163,143,114,201,181,149,150,13,173,26,171,47,241,44,140,219,190,93,181,169,227,189,105,245,61,115,74,211,244,217,175,219,85,157,124,233,161,142,5,255,0,73,89,23,118,239,221,174,229,101, 109,219,155,107,42,238,109,187,171,205,167,240,38,161,246,69,213,190,29,219,234,182,208,51,121,127,98,133,149,127,120,209,170,205,30,213,89,55,66,219,124,207,153,119,110,102,249,87,238,214,223,128,53,239,16,159,19,71,15,141,45,244,145,169,223,197,38, 157,109,118,47,22,61,70,211,115,110,142,75,168,124,181,243,45,213,85,97,102,251,219,89,89,87,106,215,149,58,244,177,17,229,167,82,60,195,141,42,188,188,202,38,197,247,134,63,182,239,44,100,240,244,186,173,166,143,253,160,176,232,218,165,148,112,172,243, 170,182,217,164,89,25,119,44,140,204,173,30,223,188,223,55,241,87,89,39,128,60,65,101,166,222,106,63,21,124,57,29,252,126,31,146,102,73,217,163,154,250,223,78,186,135,247,191,187,105,25,155,118,221,219,151,230,251,203,183,106,238,168,60,37,7,136,126, 33,124,72,143,237,113,232,186,156,186,107,253,183,90,180,186,211,153,108,183,44,141,26,199,101,123,28,127,188,143,111,150,222,98,255,0,19,50,252,187,118,213,15,218,223,246,137,208,244,164,213,244,77,42,93,102,211,81,71,183,251,48,191,139,201,180,142, 53,181,242,255,0,114,209,255,0,203,53,105,27,115,127,180,171,254,205,109,132,193,203,19,203,23,255,0,146,156,188,182,143,53,72,218,71,135,126,208,119,58,222,171,117,99,29,219,194,208,106,203,230,105,150,76,26,57,227,182,95,221,175,156,202,223,188,102, 219,183,119,203,187,111,251,53,231,186,231,138,239,60,17,161,91,105,58,244,173,114,144,202,211,195,109,37,162,197,61,179,50,252,202,204,171,185,183,127,189,242,215,115,169,124,117,215,224,240,229,228,190,27,23,54,77,123,47,217,175,47,45,162,141,190,213, 14,223,150,221,167,145,126,85,249,85,182,174,223,187,185,126,243,87,150,120,231,88,159,84,150,212,106,83,179,55,151,243,54,229,109,171,187,238,179,42,255,0,232,85,244,148,176,209,165,238,153,243,220,210,183,241,53,198,175,102,46,124,198,182,177,180,219, 45,188,27,150,41,91,253,223,246,127,239,166,171,158,11,240,213,254,163,174,37,206,191,111,121,4,73,34,181,187,125,157,188,166,111,246,191,189,253,218,236,62,14,95,255,0,194,5,240,255,0,91,191,91,125,30,226,109,82,193,126,193,30,161,109,28,190,84,138, 223,187,155,115,124,208,252,205,252,63,123,109,97,248,187,199,55,222,36,158,217,181,121,111,174,109,111,34,218,138,202,209,71,18,255,0,19,43,109,85,111,187,252,45,90,71,155,236,199,221,43,150,49,248,164,119,86,63,178,167,136,62,33,105,167,90,211,255, 0,178,180,248,149,124,153,109,218,230,56,213,166,141,85,166,242,246,238,221,247,151,119,251,77,94,83,241,3,194,209,232,186,244,22,227,88,143,80,188,242,215,237,11,10,179,44,13,253,213,147,238,183,251,213,211,201,241,95,85,211,239,238,181,157,17,111,161, 185,185,139,236,74,214,144,178,193,31,203,181,90,77,203,183,118,213,221,242,252,205,94,99,169,159,244,217,231,186,158,233,47,37,221,230,77,28,155,218,93,223,195,74,48,159,63,189,32,253,223,41,12,17,220,233,55,42,124,63,242,94,59,126,241,154,53,145,183, 110,249,118,255,0,118,159,173,61,214,169,101,44,250,221,212,237,47,203,242,195,30,212,172,251,143,26,93,105,241,143,236,200,225,130,62,202,255,0,49,95,247,171,46,215,197,51,90,44,202,194,57,188,222,185,95,148,127,187,93,118,185,149,132,142,93,70,48,90, 41,166,136,91,183,202,86,77,165,27,253,157,191,197,90,186,13,226,197,108,162,238,89,164,156,182,252,184,221,255,0,124,55,222,221,88,115,235,19,221,206,204,128,71,230,0,187,99,24,205,117,190,17,240,149,226,234,240,27,217,60,168,139,47,151,34,178,238,86, 254,31,189,255,0,143,80,193,158,129,240,155,224,246,155,226,171,235,11,223,24,120,150,219,73,150,67,6,160,144,190,133,62,181,246,128,206,172,169,37,189,187,101,149,151,239,46,214,249,91,107,109,175,171,60,107,240,111,195,87,38,193,116,91,223,217,158, 59,221,74,15,51,236,218,85,237,247,132,175,181,8,89,142,214,91,57,163,109,223,116,237,218,223,121,90,188,203,225,76,31,8,244,139,82,126,35,39,196,203,109,114,208,220,121,154,159,135,174,252,57,111,52,194,77,129,66,253,178,69,146,72,215,230,27,118,175, 95,239,114,187,201,115,251,45,120,186,40,180,205,115,93,253,163,236,100,141,86,8,174,175,236,252,43,117,111,1,95,153,119,249,109,230,99,253,161,184,243,94,54,57,170,254,227,110,203,165,215,233,249,29,75,220,71,51,170,248,158,235,195,154,229,246,131,168, 248,193,116,75,73,227,67,6,137,226,171,217,53,29,42,54,86,218,209,253,170,79,222,71,254,206,239,239,127,179,88,54,122,31,197,79,217,37,83,197,126,2,212,162,131,66,215,163,16,75,113,111,182,255,0,69,191,131,251,179,187,43,90,201,31,240,171,72,209,201, 253,214,93,212,207,139,191,3,124,23,123,104,183,159,3,254,45,232,90,244,23,51,102,43,61,118,238,211,73,212,237,67,48,85,89,4,114,72,178,62,79,221,85,69,140,99,230,109,181,204,120,115,227,47,139,191,100,189,113,127,225,94,252,66,213,180,169,148,121,144, 159,7,235,201,121,97,57,219,183,253,33,9,16,200,62,111,249,230,213,207,133,193,165,103,205,190,247,71,60,189,211,137,212,60,67,246,187,189,94,251,82,139,73,182,135,80,12,159,103,130,222,63,46,70,108,178,201,12,123,153,88,71,247,183,71,38,229,249,87,230, 172,109,71,85,210,146,205,108,46,96,23,83,91,126,237,53,27,75,141,145,186,111,44,195,110,213,220,165,24,167,205,243,6,233,187,165,83,241,191,196,109,79,198,122,230,167,173,248,151,80,139,82,213,181,247,51,95,59,91,8,218,55,200,203,124,138,177,238,127, 246,87,167,92,26,197,178,185,75,153,35,87,150,88,165,153,153,102,149,177,181,99,219,252,63,197,235,255,0,142,215,177,78,130,165,240,147,97,111,36,183,77,78,73,180,228,153,109,154,102,242,209,223,247,130,61,223,42,179,127,123,111,203,186,187,107,79,7, 105,247,63,4,117,93,102,61,92,195,169,233,58,221,172,49,105,23,74,136,210,89,221,67,35,45,196,109,141,210,237,150,37,86,219,242,237,33,191,136,87,156,134,121,163,236,14,56,207,99,91,158,38,107,93,75,90,147,251,26,41,96,211,226,109,150,194,229,210,73, 99,139,7,106,188,137,247,155,239,127,227,181,172,163,125,216,254,31,136,245,159,134,31,21,117,79,248,102,255,0,23,120,71,195,86,26,12,26,53,253,197,189,246,181,119,123,15,159,124,204,73,138,6,183,80,202,1,141,140,141,157,191,34,170,183,247,179,230,122, 101,198,161,99,123,125,255,0,8,125,195,255,0,196,188,155,239,54,212,249,68,36,18,238,89,85,131,110,93,187,131,141,173,185,115,254,205,39,132,164,187,143,89,88,116,73,133,188,12,241,51,49,42,158,99,32,254,22,147,133,145,183,50,237,111,148,239,218,126, 90,244,45,46,13,63,94,208,124,113,36,51,233,113,94,93,199,103,169,91,90,192,173,60,151,76,76,162,88,87,254,121,238,102,45,32,249,85,119,15,188,170,171,83,82,162,167,27,138,82,60,194,235,86,146,75,146,250,132,179,77,44,243,49,144,179,111,145,183,54,89, 190,111,188,204,223,54,230,251,213,123,236,194,238,242,255,0,236,177,198,235,181,124,189,173,247,89,118,215,107,241,23,195,250,76,177,248,115,71,240,158,154,214,16,67,106,151,215,247,73,108,243,93,41,147,110,230,144,31,153,255,0,119,137,62,82,187,190, 238,213,198,234,201,154,199,75,187,184,212,95,192,122,109,197,158,149,30,147,44,182,178,95,76,36,158,231,115,44,127,104,145,227,253,220,108,173,252,35,229,92,133,251,205,147,130,156,102,185,162,139,143,190,185,139,190,5,93,115,192,158,58,240,46,183,224, 203,57,102,215,33,186,181,212,116,209,110,128,205,117,254,145,229,136,130,15,188,197,215,203,219,252,91,171,244,75,246,23,253,175,109,47,191,100,31,10,248,83,227,110,166,52,79,6,233,62,35,241,15,195,11,139,219,27,184,210,75,109,59,94,178,77,66,43,123, 200,110,55,70,182,208,223,218,174,217,21,124,200,252,191,45,62,243,43,126,115,233,158,44,158,219,77,240,196,13,35,105,55,218,34,92,93,217,74,134,72,167,196,151,17,207,19,174,214,206,229,145,89,147,111,204,112,181,234,190,38,211,110,126,43,120,183,80, 151,199,126,42,127,10,234,122,253,234,107,26,228,191,99,146,72,101,191,242,216,73,114,97,182,219,28,115,110,102,155,114,175,203,36,141,183,248,171,42,248,138,84,21,171,108,20,239,23,204,117,31,181,93,237,151,196,159,217,23,225,238,173,226,221,82,210, 15,31,252,26,190,147,225,30,175,101,26,8,222,243,79,182,243,238,116,171,224,169,33,221,183,23,182,110,204,185,86,101,86,60,42,215,207,126,31,240,116,186,159,131,222,254,211,80,176,158,233,47,215,77,135,79,243,63,210,220,181,180,147,172,138,141,242,180, 109,229,180,127,245,208,255,0,181,94,195,251,86,124,23,241,135,139,231,155,226,106,222,248,127,196,22,222,41,186,183,180,187,155,66,179,142,40,225,151,200,143,236,209,52,49,180,141,31,218,22,29,202,191,121,165,142,69,111,222,50,171,121,119,194,183,182, 186,209,252,91,163,107,39,80,115,125,163,60,246,226,218,24,254,91,187,41,86,88,140,222,106,249,139,14,60,229,117,143,108,155,153,127,135,117,111,10,180,241,16,83,65,56,184,200,163,164,90,157,91,195,218,205,142,149,44,151,113,193,101,62,165,12,204,187, 60,228,128,6,47,135,249,151,110,89,118,255,0,23,205,253,234,179,163,106,183,190,15,190,30,34,240,101,190,216,172,46,126,205,31,218,63,120,202,205,14,239,155,111,203,242,183,247,127,217,171,31,179,6,130,158,57,253,160,180,239,15,95,200,209,195,171,92, 205,166,16,127,139,204,182,185,69,255,0,199,132,117,212,105,223,10,53,119,248,43,225,39,240,212,234,111,188,75,1,212,174,109,246,237,112,178,92,125,134,40,227,255,0,158,173,38,229,147,111,240,238,234,54,214,24,158,90,17,143,155,49,156,127,148,207,248, 61,240,150,227,198,222,9,215,103,131,73,179,213,101,209,180,57,238,109,163,105,229,138,226,123,159,58,217,67,196,139,197,212,138,211,164,126,79,221,147,127,205,243,42,212,159,27,143,142,252,38,60,39,225,95,16,89,221,232,135,194,49,222,77,225,182,54,194, 9,141,189,205,203,77,112,22,65,150,109,179,121,203,254,206,89,118,215,185,124,27,178,210,127,101,223,133,250,119,137,254,40,218,106,26,85,135,140,39,189,183,209,174,36,121,37,88,100,130,226,29,178,201,6,221,177,141,191,50,201,183,107,121,123,183,125, 221,217,223,27,101,188,241,246,133,38,163,164,232,9,173,95,194,235,246,125,107,125,213,229,230,163,242,238,105,164,221,185,109,237,227,221,35,44,113,175,151,230,72,204,205,184,181,121,240,204,37,26,220,146,94,239,243,116,46,49,62,97,209,102,190,208,45, 228,180,211,174,214,57,252,169,45,164,96,185,196,101,139,24,211,251,139,184,22,227,111,205,243,125,234,233,79,196,61,91,79,241,25,213,180,79,18,120,138,198,225,173,18,221,117,36,187,107,123,194,165,87,116,126,100,44,191,187,243,23,255,0,29,86,111,154, 184,207,25,106,45,253,168,82,205,99,243,228,105,60,245,81,181,85,191,206,239,247,106,182,157,162,220,234,76,214,233,117,0,145,35,220,209,153,85,54,175,247,183,53,123,118,78,60,210,47,222,61,99,227,31,199,205,111,246,130,241,109,190,187,227,251,185,175, 53,24,160,181,180,119,150,127,57,155,203,135,203,243,55,42,174,221,219,119,109,254,22,102,172,45,49,20,202,203,183,248,182,109,172,155,61,31,68,209,60,61,102,154,78,182,154,174,181,60,254,101,236,80,43,27,91,72,135,220,85,118,85,243,29,153,178,197,126, 80,160,175,187,107,105,35,253,33,154,53,219,159,188,212,233,40,166,21,46,217,246,199,252,19,195,198,18,172,134,214,101,111,46,6,93,173,242,215,235,7,236,193,124,147,94,163,252,178,121,138,191,121,183,124,222,98,253,223,252,122,191,24,63,98,141,106,91, 61,106,217,109,93,148,173,218,173,126,174,126,201,190,36,154,29,82,202,27,100,89,157,175,55,74,219,190,85,141,190,237,120,216,248,235,41,29,248,41,123,167,156,255,0,193,194,191,5,238,188,87,240,75,194,126,35,208,52,169,53,187,143,10,235,147,203,36,73, 104,46,241,12,214,76,204,25,87,247,138,172,214,241,35,52,106,205,207,221,219,185,151,240,246,93,76,106,122,162,203,224,219,120,116,13,58,240,203,246,86,123,134,186,156,69,187,152,97,111,154,71,219,187,238,175,222,219,247,149,171,250,11,255,0,130,247, 232,23,154,151,252,19,131,198,154,143,135,141,196,119,222,29,186,210,117,164,158,213,204,51,66,33,191,141,101,145,100,70,86,93,177,73,35,124,191,53,126,27,217,120,211,196,26,165,221,190,147,14,182,179,167,139,38,254,218,109,66,207,77,254,211,212,216, 172,30,81,133,146,222,20,45,44,107,0,105,17,36,101,92,238,111,155,115,82,192,199,154,135,53,174,70,62,62,249,235,31,179,167,252,19,159,198,154,244,126,5,241,71,246,94,159,166,120,127,87,212,99,134,215,86,213,110,195,221,177,76,52,145,218,216,199,187, 202,27,63,210,17,155,231,100,232,223,123,111,216,255,0,20,126,18,65,224,143,13,248,219,195,191,27,109,245,43,127,6,34,181,190,143,173,193,103,29,189,229,141,236,145,201,27,125,150,57,25,110,60,200,100,242,238,60,237,172,178,71,113,34,252,213,226,63,240, 71,123,219,45,119,227,212,198,77,27,227,23,137,110,175,108,97,131,78,188,129,45,45,237,21,100,221,231,173,198,87,13,111,185,161,219,36,109,185,126,242,182,214,106,253,80,208,255,0,101,47,136,191,24,252,113,105,174,234,90,13,165,159,138,52,248,33,208, 117,21,212,145,117,43,203,136,34,105,246,77,113,242,180,127,104,85,242,97,105,26,111,155,110,229,249,118,181,124,110,99,136,196,85,204,156,43,198,50,81,140,121,121,111,190,183,215,244,214,254,71,126,2,165,58,52,126,46,186,246,63,17,190,40,124,110,241, 31,143,254,27,69,240,203,246,161,241,77,207,137,160,208,110,110,174,124,45,174,234,86,247,55,154,141,141,193,85,142,88,173,245,9,153,154,227,78,152,70,173,36,27,219,203,111,45,149,149,148,45,124,252,254,25,104,109,82,27,231,131,121,95,222,121,82,249, 155,91,248,190,106,253,235,248,239,255,0,4,151,212,45,38,159,89,248,241,167,248,27,194,154,29,228,222,93,214,147,113,174,164,118,151,112,201,34,254,249,74,195,36,237,117,26,171,109,88,246,174,233,54,179,55,222,95,135,254,54,126,207,191,179,119,192,125, 96,11,47,4,106,26,191,151,52,130,40,181,207,138,87,90,5,190,160,172,216,69,85,95,58,101,249,127,121,183,239,55,241,109,175,176,193,231,14,54,133,72,75,238,75,243,229,127,129,197,95,15,25,235,9,31,3,65,163,91,232,218,73,154,89,35,182,133,7,207,41,109, 187,127,222,106,230,117,63,18,198,97,7,72,145,164,31,120,58,166,229,111,248,21,125,119,226,47,138,127,13,180,59,187,182,248,43,225,95,133,63,12,231,101,49,69,125,117,166,234,126,52,188,180,117,125,203,113,21,230,170,145,71,28,219,190,86,101,133,183,46, 223,238,215,132,124,74,240,174,145,226,143,24,201,174,120,211,226,222,155,226,107,187,249,119,93,222,77,167,201,0,147,106,174,220,109,102,86,249,87,110,213,85,251,181,233,211,199,210,159,196,191,7,250,35,155,234,250,222,233,156,143,132,62,14,248,187, 226,231,135,188,65,173,248,95,73,187,184,176,240,158,156,218,158,177,36,110,137,246,75,101,111,154,118,141,153,89,149,127,139,110,230,254,234,159,155,109,255,0,217,163,225,199,134,188,123,241,183,195,26,103,196,173,86,211,68,208,175,245,40,173,239,239, 46,166,88,214,24,127,229,167,239,27,247,113,179,42,249,106,205,242,238,101,251,223,117,189,67,246,107,253,175,161,253,138,190,34,31,16,124,47,213,109,124,89,105,172,192,218,126,189,163,201,165,188,54,87,122,127,120,208,72,171,251,245,221,35,36,145,252, 191,54,214,251,217,60,55,237,65,251,47,235,127,179,238,165,101,168,189,165,221,231,128,60,76,159,108,240,206,173,30,217,45,245,107,22,143,206,140,110,251,202,233,11,44,109,28,159,48,49,177,93,203,156,119,70,183,50,229,239,240,247,252,76,165,73,216,233, 63,224,167,159,177,206,139,251,36,124,123,75,15,134,26,184,213,124,37,170,217,9,244,201,38,185,73,174,35,104,206,217,224,184,219,255,0,45,21,154,54,221,181,85,150,101,219,247,89,171,231,72,38,22,177,124,229,85,155,238,175,241,87,117,227,63,218,43,196, 94,50,248,65,162,248,47,94,107,57,52,45,6,238,123,235,71,10,205,114,237,46,126,87,155,115,111,69,206,17,126,93,187,71,222,219,94,121,104,194,234,102,207,205,254,211,127,13,105,78,46,49,247,130,163,87,230,67,155,82,146,242,22,71,59,32,69,201,69,244,95, 239,87,70,124,7,127,161,235,87,58,126,189,100,246,23,150,114,40,154,9,49,230,33,101,86,93,216,249,113,181,149,190,95,239,86,60,118,42,135,247,236,187,27,239,110,90,232,236,254,35,218,105,48,255,0,164,201,61,204,143,243,73,38,230,146,121,91,251,204,205, 254,126,90,130,126,51,188,210,60,21,166,90,233,177,93,65,117,115,21,229,182,214,85,102,254,38,85,255,0,190,191,139,238,215,37,226,239,19,54,161,100,250,22,134,83,236,162,243,237,87,83,44,205,181,155,110,213,86,93,219,89,85,190,101,254,45,213,204,235, 255,0,22,117,61,85,26,59,28,218,65,32,218,118,157,207,39,251,205,255,0,178,174,43,14,198,43,171,249,149,35,223,137,27,110,81,119,21,255,0,128,173,86,168,175,116,236,229,188,210,52,13,61,22,226,70,158,127,51,230,88,254,244,191,231,253,170,234,190,0,248, 255,0,69,240,223,142,109,181,47,139,26,13,150,175,164,220,170,197,2,221,58,152,52,255,0,222,47,153,59,43,124,178,73,229,238,85,109,203,182,77,191,194,74,215,69,251,61,126,192,222,38,248,183,103,162,107,119,26,69,229,254,147,168,92,56,146,222,202,241, 86,254,238,31,35,204,19,194,95,16,133,12,71,222,149,91,228,108,173,104,254,210,127,179,107,124,23,212,180,253,10,214,68,212,244,152,222,220,92,53,144,105,47,116,249,218,54,255,0,71,105,27,247,127,52,142,219,89,190,89,55,71,181,190,242,215,28,177,20,170, 79,216,243,123,198,178,195,202,80,114,183,186,125,73,224,31,143,58,47,196,255,0,17,234,250,182,135,166,89,197,160,106,162,73,108,237,247,71,111,246,201,161,135,116,150,150,171,36,127,235,151,107,73,229,238,249,191,133,182,174,234,194,179,248,41,166,124, 65,182,210,53,95,217,103,196,250,158,137,28,55,82,89,92,201,120,177,219,222,217,217,237,242,228,219,28,127,44,211,73,52,107,185,182,171,110,88,219,230,219,181,188,75,224,143,135,245,159,130,74,53,104,237,47,188,79,162,248,110,23,241,4,240,233,151,48, 53,141,187,41,104,213,174,154,69,103,93,172,219,124,196,251,173,247,190,95,154,182,188,89,251,87,218,248,252,94,207,224,13,62,27,77,82,89,55,52,122,189,145,157,39,57,86,127,223,43,174,214,92,110,85,111,189,242,237,219,247,151,207,194,96,61,133,103,40, 75,221,50,163,65,82,143,239,15,85,210,126,27,248,86,195,225,140,17,120,231,90,189,241,38,171,45,253,222,167,119,109,117,127,12,119,182,23,179,51,121,147,67,229,249,106,223,52,155,155,238,179,44,141,247,190,237,120,143,198,223,131,30,28,240,190,139,226, 13,111,194,16,75,166,94,105,246,208,59,105,119,41,111,113,107,251,233,54,185,220,223,188,220,204,223,43,70,219,85,150,171,124,114,212,47,124,107,225,175,14,120,133,252,73,46,163,20,219,150,226,11,123,102,102,210,239,25,119,74,187,126,85,88,219,229,249, 126,102,251,219,183,43,45,121,253,229,242,91,104,154,132,90,238,167,107,18,220,121,48,75,109,120,139,25,149,99,101,101,86,254,37,219,39,252,6,189,136,193,69,115,21,30,88,200,253,48,253,186,62,17,248,63,246,176,253,169,53,15,25,222,252,87,248,35,55,137, 245,93,70,59,171,173,78,235,199,104,215,138,168,187,108,236,172,86,21,145,173,214,73,54,238,104,219,119,222,88,227,109,219,151,142,240,207,142,254,46,124,62,176,158,203,246,176,135,195,154,191,134,180,200,155,105,214,47,100,182,213,222,56,100,146,54, 146,205,164,141,102,184,133,100,143,106,199,52,107,54,221,172,204,173,183,116,95,5,63,224,169,127,6,255,0,103,166,186,147,246,48,248,75,241,83,226,143,141,101,134,52,139,196,94,48,241,5,157,186,105,138,55,110,146,24,109,22,72,236,76,170,205,186,76,71, 39,221,93,201,183,229,175,251,115,107,222,33,253,181,117,95,217,155,195,90,109,164,182,26,134,173,115,127,163,120,159,90,208,110,36,93,38,230,251,251,118,9,229,91,89,166,146,73,174,190,200,173,181,174,25,153,90,121,62,86,220,172,171,249,213,76,182,188, 165,8,99,121,125,154,235,43,95,190,150,219,239,59,37,30,104,254,238,91,253,159,83,230,159,139,95,182,14,175,115,240,11,95,248,115,164,232,215,26,79,133,252,53,125,104,186,52,218,141,236,143,117,99,103,105,55,155,29,162,179,127,172,149,164,93,219,155, 253,90,254,229,85,126,106,245,175,21,255,0,193,60,174,244,141,79,226,14,163,241,159,83,188,241,5,222,137,240,239,196,154,230,191,246,55,146,27,123,61,118,202,194,210,230,27,73,60,146,162,52,146,59,203,105,153,27,13,38,201,57,43,211,230,239,17,248,23, 71,213,63,105,93,89,190,30,232,43,121,162,120,119,93,251,13,230,149,127,169,73,168,202,45,210,247,200,158,249,188,206,124,151,115,230,51,110,111,45,216,110,220,185,106,253,119,240,159,136,38,248,191,226,207,248,41,95,195,93,22,63,177,255,0,103,232,247, 186,162,131,31,238,212,93,232,9,105,242,175,222,249,100,178,135,254,2,213,244,120,124,37,44,45,69,58,106,215,188,165,231,240,175,63,39,242,71,59,230,150,236,252,170,253,177,117,105,190,40,39,130,188,127,226,171,25,164,214,117,91,31,236,127,22,205,27, 5,125,79,81,176,141,118,94,237,111,150,57,103,178,104,26,72,246,237,221,3,47,251,222,89,241,79,198,26,29,199,130,100,183,211,244,107,86,184,158,208,199,14,162,177,129,38,242,233,35,50,54,67,50,237,65,30,217,23,247,123,164,219,247,171,214,245,237,110, 111,136,255,0,178,38,191,170,53,164,87,114,105,211,105,247,19,201,191,230,180,185,186,85,137,38,255,0,121,86,243,111,251,91,127,134,184,31,217,211,246,121,79,139,23,23,122,151,141,205,198,149,225,43,120,214,93,70,236,191,144,150,121,101,84,116,50,43, 36,155,115,35,52,109,247,99,86,102,249,85,86,79,66,133,68,226,229,46,140,152,211,114,124,188,186,158,141,227,217,180,253,103,246,195,209,175,116,15,42,230,91,255,0,12,195,121,169,63,154,210,253,146,101,179,186,149,219,44,223,186,219,229,194,185,254,21, 111,246,171,205,124,95,241,226,125,74,239,194,246,191,14,110,175,108,46,236,44,45,162,148,162,15,178,199,115,181,140,183,162,5,249,89,153,89,25,81,151,247,123,79,221,110,107,79,199,158,45,177,241,173,245,164,190,12,101,211,228,208,124,47,6,131,117,113, 17,85,254,209,88,20,194,210,182,237,173,35,50,200,219,155,111,239,23,203,109,171,243,110,228,86,27,173,55,196,80,220,71,109,125,163,105,183,151,17,36,190,68,76,38,186,95,151,247,112,157,187,164,146,69,218,87,254,186,47,222,172,105,198,50,106,241,247, 172,76,160,224,118,186,222,133,125,241,15,68,210,180,79,135,62,31,77,114,47,23,195,53,204,51,253,165,142,169,46,162,227,99,73,113,43,50,143,220,198,206,173,31,153,228,170,182,233,62,96,187,189,79,246,102,248,123,111,241,251,254,10,21,224,77,31,198,90, 135,135,188,88,111,47,173,180,141,65,224,142,5,176,105,188,147,108,191,102,142,111,221,205,111,12,159,103,221,36,139,182,77,178,50,167,250,189,222,115,168,120,238,111,22,104,247,222,23,240,222,145,120,182,246,54,23,112,75,167,202,235,51,218,63,219,35, 104,96,140,168,99,35,71,28,132,58,182,22,73,164,153,155,230,21,165,240,59,224,12,255,0,18,188,7,111,226,111,131,241,95,232,62,37,240,174,133,30,169,110,165,90,73,53,77,66,57,26,72,175,109,27,133,104,213,237,237,212,170,255,0,168,57,220,187,126,90,231, 196,205,80,166,253,164,185,33,223,215,173,202,167,25,78,113,138,141,207,160,53,159,216,203,197,95,1,252,121,109,225,109,114,206,61,110,13,93,99,211,174,25,44,166,183,251,100,182,11,113,111,36,178,44,223,188,95,50,57,89,150,109,219,118,219,170,255,0,10, 238,249,139,227,111,195,95,21,124,20,248,219,160,104,119,250,186,172,54,178,45,229,141,244,11,26,238,30,67,152,217,227,101,219,246,141,138,119,125,229,220,245,251,71,241,171,227,5,167,237,251,251,50,232,243,252,22,154,239,77,248,219,225,173,26,219,197, 62,14,50,198,187,181,171,107,171,86,146,227,71,145,100,218,185,153,173,239,45,213,89,190,89,237,97,111,226,249,191,20,254,48,252,109,213,190,62,252,94,240,211,104,122,100,122,133,238,154,4,246,243,105,234,86,59,200,137,86,50,199,12,172,222,82,170,41, 11,189,191,118,219,131,55,21,203,150,125,102,117,28,231,40,184,255,0,95,215,222,116,214,163,26,81,229,151,196,102,248,191,199,90,61,151,136,52,79,17,104,39,197,51,88,218,204,47,160,183,189,190,142,69,204,101,183,50,70,173,242,170,252,202,219,127,139, 238,252,181,238,58,191,237,35,226,223,132,190,40,208,46,188,91,62,141,226,223,19,201,39,246,223,250,121,133,181,61,26,72,227,120,76,119,141,106,21,101,121,45,159,116,106,203,185,163,102,251,187,154,188,150,235,69,209,173,124,29,53,198,172,203,171,233, 214,119,23,163,78,123,91,245,243,109,216,219,171,111,105,160,219,28,205,10,254,240,180,107,229,171,51,71,187,138,159,196,62,11,176,208,45,190,31,120,42,227,236,218,84,230,194,61,87,93,186,182,151,230,180,107,217,150,102,66,193,127,214,71,110,201,31,3, 247,127,47,222,221,93,152,154,80,174,148,100,142,46,95,103,240,159,101,127,193,57,244,43,47,217,231,199,190,35,248,237,111,164,233,86,122,39,129,39,135,195,30,13,130,123,20,141,245,79,18,106,108,144,55,150,187,188,201,35,181,180,105,118,237,83,185,174, 54,171,22,220,163,156,255,0,130,101,124,99,212,126,23,124,73,248,239,226,95,19,152,52,61,59,82,240,253,214,163,172,233,205,107,253,157,3,61,190,172,183,230,210,222,218,79,222,44,145,203,112,171,228,174,230,88,153,190,86,218,213,205,252,68,241,101,208, 253,139,244,86,158,216,92,233,177,248,187,94,212,138,196,217,84,91,8,225,141,230,223,27,43,71,50,178,238,86,95,226,93,203,92,103,132,173,45,252,77,251,60,248,146,222,232,221,95,120,139,198,186,229,197,231,135,174,46,47,89,254,203,109,102,144,89,121,146, 73,181,153,102,154,226,56,149,89,151,116,158,70,234,228,195,212,246,52,229,42,159,21,148,127,15,248,45,138,82,231,143,44,122,30,229,241,11,226,79,198,15,219,207,194,58,173,223,138,244,251,187,239,31,124,46,154,251,82,189,214,180,253,37,98,109,107,76, 146,88,103,242,108,194,66,206,210,88,77,122,204,144,199,187,109,165,211,46,217,153,107,199,110,124,17,241,130,29,10,215,196,154,229,165,206,165,225,151,184,147,79,130,240,217,194,176,202,209,163,51,71,186,53,253,220,139,182,69,104,228,88,217,154,54,249, 126,237,125,107,240,151,227,29,183,192,255,0,8,126,206,31,22,188,57,15,138,116,173,111,196,62,63,105,167,181,211,130,221,166,167,108,186,85,199,159,108,214,237,38,239,62,57,155,201,153,85,87,116,108,203,185,164,88,213,120,127,218,195,227,60,114,252,111, 214,102,253,157,244,72,60,33,105,161,69,21,221,134,149,117,98,222,103,136,39,142,214,105,39,251,82,179,42,205,231,91,200,171,182,109,172,173,110,202,173,187,238,249,121,182,30,114,211,221,247,175,203,126,250,126,103,85,42,73,191,126,94,167,142,124,25, 241,194,248,223,196,183,190,25,186,183,75,11,251,139,38,184,183,190,150,215,201,242,219,106,255,0,203,77,172,187,151,239,109,145,118,255,0,181,82,120,175,196,190,57,240,5,196,159,240,142,199,225,248,239,60,149,101,130,234,194,27,171,61,98,5,35,108,176, 79,229,183,217,230,220,100,255,0,71,243,27,126,221,209,178,170,154,192,211,191,107,141,51,226,94,189,165,105,126,22,130,225,111,203,24,173,109,230,149,124,235,100,152,175,148,109,100,141,25,166,93,223,42,172,159,55,239,151,119,221,219,93,127,237,95,166, 217,94,252,44,214,52,45,22,218,57,60,91,166,237,222,186,108,126,116,119,173,243,72,205,15,150,205,30,213,220,223,44,127,222,109,172,187,89,107,198,161,146,213,163,95,151,19,70,62,206,95,246,245,191,224,63,158,187,51,212,132,161,70,148,170,97,229,239, 175,145,207,234,31,22,95,226,126,178,141,241,58,107,29,2,203,78,85,176,206,153,125,36,111,169,68,187,153,90,53,220,222,92,126,118,229,218,202,219,91,119,222,221,186,188,66,95,21,127,194,195,187,134,215,199,218,149,220,210,216,121,150,77,169,235,23,173, 169,127,101,174,214,101,242,215,118,213,254,29,209,199,242,252,171,183,248,107,201,44,252,86,137,123,36,122,100,159,106,180,153,151,57,120,195,5,254,21,255,0,103,248,171,78,231,226,151,216,252,59,115,0,181,184,182,137,237,97,129,26,27,101,242,228,101, 251,171,187,253,165,249,153,190,86,102,90,253,31,3,131,134,6,17,165,71,68,143,27,21,138,158,50,124,213,62,34,207,143,124,80,131,94,107,125,6,107,181,176,153,219,236,81,207,58,198,210,124,187,119,78,170,219,127,133,190,95,188,170,202,181,7,130,126,195, 169,93,53,222,179,3,92,206,210,51,44,49,46,221,219,191,231,162,252,223,42,175,247,126,111,251,230,185,237,51,88,146,125,85,46,181,56,60,228,150,22,141,99,87,251,187,191,244,31,187,187,117,109,216,91,38,149,108,218,140,122,172,31,218,171,251,184,237,214, 22,221,42,253,230,111,246,87,248,127,189,93,170,63,104,231,248,141,157,107,199,183,30,55,241,44,47,121,115,111,60,26,77,154,164,111,117,18,196,178,172,123,85,97,97,252,127,40,85,141,127,217,102,254,245,82,241,38,176,218,134,189,125,46,177,50,220,219, 68,187,163,101,111,188,191,118,63,149,126,85,174,97,103,105,252,197,219,44,254,82,239,101,142,22,100,221,252,76,223,252,85,117,62,15,210,108,225,213,103,150,103,185,243,108,100,85,142,40,246,254,247,119,222,111,252,122,173,21,35,103,193,175,63,132,188, 53,54,183,118,47,236,167,37,190,193,243,73,242,237,249,90,79,251,233,182,238,251,191,50,252,223,53,112,154,131,181,238,164,219,25,100,146,233,151,107,43,109,117,111,248,23,221,175,66,241,230,187,226,6,178,176,109,66,84,254,198,129,150,59,72,219,247,74, 222,92,107,182,53,95,153,182,174,229,249,91,239,53,121,95,136,117,6,181,215,0,98,146,74,29,119,108,109,202,91,239,55,255,0,19,83,29,101,204,29,10,218,167,135,167,66,201,121,23,144,99,77,222,92,140,187,246,255,0,15,255,0,21,89,83,90,50,13,229,85,66,237, 231,251,213,212,88,220,199,169,89,222,79,170,137,103,121,100,101,95,155,229,95,149,153,153,191,239,154,229,111,175,94,237,223,113,96,152,218,7,247,86,170,12,161,182,59,228,186,62,83,109,108,51,103,118,218,245,191,5,201,167,88,216,186,207,230,79,125,229, 249,177,204,204,171,181,127,139,253,175,150,188,150,24,146,230,233,23,238,35,17,187,3,238,173,122,135,134,60,13,55,137,180,121,147,194,62,30,213,238,228,186,146,40,5,213,149,133,197,228,144,171,149,12,219,99,95,155,229,220,219,126,93,219,104,168,210, 87,108,158,89,74,86,137,238,158,14,253,168,244,8,62,31,233,171,166,124,50,240,174,165,169,232,170,37,142,123,221,66,252,198,178,249,45,27,92,236,137,195,102,77,210,110,135,253,90,174,221,178,53,113,191,20,255,0,105,120,252,93,46,151,165,120,119,195,222, 25,211,45,20,68,145,199,103,225,245,210,23,205,85,85,104,227,105,46,164,221,31,221,95,153,119,109,219,82,234,54,26,239,193,11,91,20,221,173,104,122,165,151,156,186,86,163,46,142,214,55,247,42,168,209,150,242,101,93,222,92,138,236,187,164,86,219,187,229, 102,174,155,225,119,196,207,11,252,35,240,150,163,31,139,53,61,6,203,86,23,70,117,132,248,118,91,171,221,78,21,59,150,214,227,205,135,204,107,102,218,21,146,70,132,249,109,242,183,205,186,188,138,138,156,165,207,21,204,109,172,189,217,31,60,234,227,85, 241,23,136,36,176,183,13,168,106,7,114,52,86,78,215,68,109,220,204,171,28,123,155,229,85,111,251,230,179,245,207,11,73,167,93,105,177,234,218,165,160,93,70,8,238,11,249,204,241,218,35,238,249,102,10,185,87,92,124,209,128,118,238,94,121,175,105,248,227, 241,230,239,226,4,154,116,62,30,182,210,116,232,39,102,135,77,91,72,163,181,142,218,41,100,102,147,201,145,124,191,179,198,223,187,249,87,118,213,143,239,53,121,87,196,95,132,122,167,195,121,52,163,226,171,25,32,180,212,132,194,198,254,0,173,107,124, 177,72,84,181,187,46,223,49,121,140,254,243,107,126,241,91,110,214,174,170,19,115,87,113,177,140,169,242,234,114,154,134,129,40,212,26,45,40,92,95,54,126,95,46,221,149,155,251,191,187,251,203,187,239,84,26,86,151,117,115,5,220,241,68,205,13,168,88,228, 127,225,141,164,109,171,159,201,191,239,154,185,163,71,123,121,169,75,45,133,224,129,227,183,150,105,158,91,147,23,238,212,101,151,127,92,183,11,181,121,108,237,173,27,175,20,77,226,125,3,78,209,224,176,89,181,24,231,72,163,184,89,119,204,241,168,101, 142,5,79,186,170,187,253,126,240,221,223,158,187,177,92,230,62,207,231,79,229,193,243,39,99,91,158,27,176,150,255,0,83,58,126,139,108,215,183,23,170,208,197,10,219,180,146,23,219,185,118,170,252,222,103,202,219,118,238,235,93,167,134,191,102,127,27,235, 183,10,52,111,8,106,208,159,179,198,93,222,88,213,11,99,110,255,0,50,71,85,80,205,206,223,225,219,93,198,129,240,47,71,248,107,111,168,195,226,143,26,218,91,248,218,211,81,54,150,137,225,221,82,222,233,109,98,137,79,158,210,72,187,93,184,63,187,104,152, 71,185,91,115,110,90,227,158,54,146,78,210,191,166,191,145,183,177,169,214,35,124,21,255,0,4,192,253,160,62,36,233,23,58,135,133,126,11,252,81,187,177,183,224,205,255,0,8,236,233,19,103,184,55,30,89,252,150,189,15,225,255,0,252,18,127,246,134,240,151, 252,77,46,252,5,113,164,77,52,69,76,58,205,204,54,38,37,89,62,97,58,205,42,170,127,23,241,59,109,249,182,214,246,139,255,0,5,20,212,126,20,120,158,27,251,79,23,124,76,215,245,184,34,102,251,13,182,184,182,186,116,70,57,6,35,242,99,102,85,139,118,239, 153,86,73,190,95,153,154,188,231,227,135,252,20,79,226,71,197,232,181,72,110,181,239,20,91,248,82,242,251,237,166,27,187,229,184,144,59,110,103,109,207,185,188,198,249,190,235,109,95,186,187,107,193,173,60,223,19,62,90,46,156,105,255,0,121,55,47,253, 41,95,238,70,238,56,88,71,94,102,107,124,97,253,140,252,73,240,159,224,212,190,57,241,135,142,188,25,38,149,166,95,166,133,96,154,30,183,253,172,45,110,36,149,85,237,154,101,141,22,63,37,84,51,110,105,62,85,218,223,221,111,106,147,246,80,240,169,248, 91,170,91,47,139,116,93,118,95,24,120,55,86,215,116,189,39,78,181,63,188,189,211,149,100,149,100,155,239,91,201,247,118,175,204,204,172,205,242,174,213,95,43,248,197,227,4,185,253,139,32,240,52,158,44,210,236,180,255,0,5,235,186,125,165,174,137,12,34, 75,205,123,80,187,15,121,127,127,116,253,162,135,206,130,52,233,185,254,78,138,161,184,161,241,211,198,127,5,117,127,135,186,230,171,97,125,168,104,222,4,209,36,211,99,183,112,209,68,18,242,9,214,230,9,166,27,132,114,76,179,6,231,251,169,133,102,221, 92,146,194,227,241,144,138,157,110,86,229,39,21,29,47,27,46,94,151,223,226,179,235,163,58,41,203,15,74,90,71,221,210,255,0,169,233,90,214,143,240,91,225,135,138,45,252,61,241,171,192,191,16,60,57,229,105,246,177,167,137,252,61,170,199,60,235,55,150,178, 25,102,179,155,117,181,194,249,114,43,126,239,247,141,243,109,93,203,94,235,226,191,217,111,193,208,124,17,209,60,71,224,56,188,27,171,248,91,90,189,178,188,240,255,0,140,167,176,146,45,70,234,69,249,103,130,238,25,63,227,221,100,142,83,113,27,124,223, 190,183,86,145,126,85,243,60,255,0,246,102,210,111,60,97,255,0,5,4,240,199,134,255,0,104,123,203,77,94,219,88,240,167,246,214,151,97,101,103,228,218,234,119,118,250,69,218,217,172,177,52,140,176,178,198,215,18,51,55,202,205,110,159,222,249,107,254,195, 127,180,21,231,194,175,217,7,73,241,22,187,61,197,199,133,62,21,248,146,27,61,110,222,237,29,237,47,52,173,114,209,173,167,12,168,172,100,48,205,113,36,203,242,231,247,59,87,230,172,158,18,164,233,209,159,51,117,35,203,213,217,243,93,126,106,218,233, 173,236,103,120,66,109,202,62,235,208,237,191,102,141,47,195,26,199,143,117,75,95,21,120,77,172,98,138,253,188,31,241,27,195,150,139,228,54,209,59,79,97,168,219,198,191,47,156,178,70,210,219,178,237,251,205,26,179,109,135,62,33,251,91,252,16,127,216, 219,227,153,241,31,194,109,106,73,239,180,77,96,219,141,66,232,125,165,117,107,123,139,118,146,207,87,85,101,85,146,43,187,107,134,142,69,93,171,29,204,82,70,187,183,110,175,214,27,175,216,3,195,63,12,252,67,229,216,199,121,226,121,252,111,225,155,159, 3,248,166,40,91,159,17,92,195,100,218,215,134,245,195,116,191,61,189,198,221,58,230,209,110,254,86,107,133,133,151,107,109,175,138,255,0,107,223,11,47,198,95,130,90,95,138,109,180,243,121,225,137,244,56,52,219,159,17,70,170,209,93,233,146,200,210,219, 220,8,254,86,135,111,153,111,120,138,208,255,0,162,207,22,161,110,191,44,145,238,245,48,179,158,22,81,147,248,103,248,127,159,231,107,118,100,202,138,159,187,115,243,227,224,151,131,98,31,29,244,120,228,215,227,240,197,180,55,49,136,245,86,211,103,187, 251,27,156,71,27,52,16,254,249,151,229,232,187,153,119,110,249,190,106,250,135,225,55,194,13,107,225,133,175,129,53,251,43,203,45,115,195,112,199,226,11,88,175,173,157,154,214,225,180,105,36,138,19,14,239,152,121,151,77,111,50,171,46,239,46,188,47,225, 116,90,44,145,203,103,241,34,197,103,213,99,187,242,238,49,120,246,138,246,230,37,81,36,109,183,114,72,178,168,145,119,47,151,42,50,171,117,221,95,66,252,68,248,239,107,105,240,151,195,51,105,119,218,134,141,226,61,6,226,27,103,121,108,90,77,58,234,111, 181,173,227,220,71,111,187,118,237,182,159,55,204,223,43,47,247,126,109,241,216,158,106,144,166,255,0,152,233,165,151,74,116,101,89,30,121,251,68,120,138,195,198,62,38,209,62,16,248,2,197,174,225,210,245,75,93,43,76,188,68,89,25,45,132,113,192,234,210, 4,86,145,141,196,109,114,211,109,85,100,110,205,243,87,169,254,201,19,232,63,30,188,115,115,240,235,193,179,106,54,159,219,90,22,167,224,205,32,218,220,110,159,68,213,44,161,186,186,176,213,108,158,54,79,50,11,136,236,238,33,154,22,111,153,152,47,204, 172,173,94,7,251,35,106,113,193,251,78,120,62,79,136,236,183,215,154,174,168,183,186,156,55,19,237,150,226,43,129,42,201,179,134,253,230,249,124,207,151,248,99,53,202,126,198,95,18,174,126,12,120,231,79,241,238,157,171,219,233,250,223,129,245,141,50, 235,70,137,221,164,58,132,168,210,135,130,56,207,222,89,99,219,27,127,10,172,219,187,87,103,177,139,167,239,45,173,255,0,14,121,156,174,50,229,50,188,67,251,50,38,149,175,157,70,251,196,218,101,207,131,133,180,55,227,93,141,100,195,197,40,13,20,43,107, 39,239,62,210,201,183,109,187,103,229,218,204,219,121,110,35,197,126,36,178,188,144,89,248,63,79,54,154,53,145,196,17,74,85,166,157,179,254,186,226,69,255,0,89,35,123,124,139,247,85,118,141,205,222,252,99,211,173,188,71,225,45,30,239,69,190,189,159,85, 107,139,147,119,167,168,99,97,162,70,210,31,46,11,111,225,17,170,133,95,239,40,194,125,221,187,124,247,76,240,97,185,191,141,124,65,43,44,50,159,224,93,187,191,224,85,219,135,155,156,57,156,174,76,164,175,98,159,134,174,26,61,81,119,149,220,255,0,221, 90,244,24,25,19,127,247,191,189,88,90,230,131,167,104,51,249,90,40,255,0,84,170,222,102,221,204,205,187,238,238,255,0,217,171,90,210,79,145,100,99,243,125,234,210,50,231,38,39,185,126,201,218,251,105,190,39,72,145,155,230,145,91,255,0,30,93,213,250,141, 251,38,120,140,197,226,13,38,238,75,137,25,38,157,33,218,251,124,191,225,93,191,55,251,213,249,11,240,83,94,151,69,241,92,50,194,87,239,127,236,187,190,237,126,156,126,202,190,53,150,239,194,250,101,197,154,42,92,69,182,125,204,191,197,242,253,239,246, 190,90,243,243,8,157,88,73,125,147,238,207,248,40,31,129,174,254,33,126,194,255,0,19,116,237,1,140,122,133,231,134,47,99,182,104,242,174,38,251,59,52,102,54,31,196,173,26,183,251,203,95,135,127,24,101,248,169,251,49,120,119,194,126,35,240,55,196,169, 181,127,5,120,181,160,241,39,132,53,152,116,104,163,133,132,247,30,100,215,9,54,214,142,198,245,110,90,120,103,182,102,57,45,39,203,229,190,213,253,252,212,102,155,91,248,103,114,151,59,88,73,102,187,213,191,229,154,183,247,191,189,242,183,205,95,147, 154,79,236,129,225,47,137,191,181,63,140,126,12,248,207,81,184,240,223,139,60,95,120,211,120,83,81,143,204,183,211,124,29,226,107,73,86,91,125,58,75,88,246,219,201,97,127,11,47,147,51,46,232,228,84,218,205,36,139,183,199,193,213,228,106,140,186,179,183, 21,8,202,60,199,156,120,23,72,248,173,251,55,252,67,240,229,230,133,226,205,22,125,11,226,79,218,53,95,15,106,118,122,121,211,172,111,103,134,40,217,173,164,181,104,255,0,208,231,95,49,150,75,54,251,190,95,153,247,126,101,247,223,218,11,254,10,59,241, 238,79,5,131,161,252,66,241,7,132,236,32,131,253,50,61,18,85,133,163,88,227,85,243,26,63,45,164,147,238,253,232,228,93,171,247,191,189,95,54,221,234,31,19,62,6,252,66,215,60,11,226,253,63,87,248,135,225,159,18,106,241,217,248,202,199,196,26,75,56,209, 181,91,107,185,25,103,141,93,97,107,59,216,237,227,45,13,194,178,199,36,109,229,179,52,62,87,151,232,223,180,239,195,145,174,104,158,24,214,126,31,120,210,199,198,122,30,183,36,223,98,212,162,181,251,4,144,61,195,67,229,51,71,35,127,161,221,70,170,222, 117,172,203,252,42,209,179,46,234,242,113,153,91,167,140,142,38,141,73,66,62,90,126,189,123,127,195,27,97,156,99,135,149,62,95,123,250,254,180,62,118,248,145,226,47,137,95,26,181,89,46,245,143,23,223,120,142,118,69,145,110,181,95,16,199,37,195,180,146, 44,113,201,26,221,54,214,249,164,95,151,119,221,220,205,242,173,111,120,127,226,79,136,45,173,188,73,160,89,248,7,72,189,178,241,100,179,90,92,232,247,215,18,45,182,149,186,61,187,109,36,219,186,31,245,108,203,243,125,237,223,195,182,186,255,0,132,26, 110,189,240,94,116,156,205,224,187,1,115,60,114,197,109,121,123,101,117,30,139,113,12,155,167,183,101,102,101,242,124,197,153,127,186,203,35,42,182,223,45,170,79,142,255,0,4,252,45,103,161,120,87,199,191,179,111,137,124,55,162,223,181,255,0,147,225,217, 46,46,252,187,88,245,8,110,204,141,162,76,171,181,90,56,89,124,187,123,133,255,0,89,111,36,106,219,149,153,155,111,99,85,205,185,111,252,220,191,159,252,57,205,236,92,61,232,200,243,47,25,126,204,186,199,142,46,165,147,199,22,70,233,188,55,160,196,103, 215,141,226,69,231,216,36,111,34,77,117,35,121,159,234,213,38,95,180,47,205,242,237,147,118,218,241,79,31,124,44,248,113,2,27,173,11,226,6,171,4,109,24,100,136,233,19,234,130,73,127,137,99,154,21,138,63,45,127,132,238,106,253,76,248,141,241,227,225,79, 133,188,7,162,235,62,60,213,116,255,0,3,120,142,227,195,235,113,164,217,94,110,182,188,134,25,25,150,230,194,101,95,151,247,55,80,237,111,153,182,180,43,255,0,61,62,111,202,255,0,27,124,46,240,222,159,226,221,106,223,194,255,0,18,188,18,190,31,212,46, 167,150,202,48,46,238,252,165,98,90,35,229,199,22,216,221,21,188,173,219,155,166,61,151,208,201,232,98,165,239,87,175,47,149,185,101,247,166,117,98,165,66,20,237,78,156,95,55,123,233,249,28,55,136,60,24,190,21,81,117,61,228,55,250,76,237,182,214,254, 9,99,120,238,127,188,168,170,205,229,73,242,253,214,249,150,189,31,224,239,237,169,226,191,12,223,248,115,73,241,52,169,175,120,27,64,212,237,53,27,127,13,234,8,178,91,110,134,88,228,5,126,235,121,155,86,77,170,210,121,126,99,125,218,201,179,248,3,224, 150,148,92,31,139,94,29,159,207,69,149,146,31,14,234,147,76,71,125,209,198,55,113,252,91,190,101,246,169,100,248,85,240,251,71,241,92,118,122,143,143,181,141,78,21,137,140,177,105,30,20,158,210,230,57,62,95,148,255,0,104,72,171,247,119,87,212,115,194, 81,187,252,143,30,210,230,247,78,147,254,10,35,105,224,47,16,252,124,189,241,79,193,15,16,232,90,183,133,60,106,139,172,193,21,156,138,39,211,229,101,81,60,83,194,191,53,171,110,42,222,91,252,219,154,70,175,152,37,148,217,59,70,155,152,142,23,253,218, 250,30,243,195,223,6,236,175,35,146,100,248,183,127,47,201,24,130,226,215,70,140,73,184,109,95,154,57,247,127,18,237,171,77,251,53,248,17,239,175,154,251,199,190,21,179,178,80,94,221,181,125,81,237,175,237,29,87,13,111,61,188,49,170,200,219,203,43,52, 109,251,189,191,197,202,213,42,208,138,140,80,77,57,62,99,230,119,185,154,227,130,88,251,87,77,240,203,225,38,169,241,83,197,182,58,55,135,99,205,213,252,171,18,51,252,137,25,110,141,35,54,21,87,254,5,254,238,230,194,183,164,63,193,111,15,105,119,78, 91,198,95,8,29,64,3,111,246,214,163,116,1,254,242,132,133,119,119,249,115,252,85,164,158,15,240,53,143,150,191,240,156,248,62,27,105,0,121,68,90,22,171,123,151,85,246,11,242,238,206,223,238,255,0,122,174,83,75,250,102,118,103,160,124,62,255,0,130,99, 234,122,78,167,179,226,228,119,80,219,193,28,173,122,240,201,176,217,109,198,36,11,181,183,46,241,242,180,140,177,200,173,185,126,111,150,162,241,151,134,180,79,128,31,31,211,75,248,111,225,109,55,85,182,211,173,224,75,171,173,86,230,70,88,100,145,153, 165,219,35,50,180,109,228,253,217,23,230,92,175,240,171,86,239,137,63,106,251,203,72,38,254,203,248,221,113,43,197,20,107,105,246,111,3,222,41,128,132,69,207,250,67,54,229,194,125,214,56,221,181,187,87,146,93,248,255,0,194,190,32,241,13,197,207,136,181, 95,21,107,119,178,136,247,203,99,163,217,64,164,96,110,220,47,90,73,55,110,223,243,125,223,155,235,92,177,167,41,127,22,87,251,205,239,24,252,39,216,126,11,248,221,167,120,248,248,147,78,248,87,167,90,107,55,250,84,82,107,54,186,59,95,92,105,209,222, 91,195,229,172,182,177,172,108,177,181,199,151,39,153,27,47,222,109,209,183,247,155,197,238,191,104,175,2,252,82,248,94,215,54,190,26,215,230,213,96,50,182,162,162,54,185,71,181,93,205,20,179,201,185,149,163,79,153,182,183,239,21,151,238,237,174,59,64, 248,207,163,248,111,80,211,117,127,236,239,31,92,105,150,215,229,158,43,171,93,41,109,238,217,87,230,70,251,60,113,186,255,0,15,204,173,83,104,255,0,180,71,131,60,59,171,219,94,219,55,197,107,211,36,141,37,238,155,119,125,166,67,103,118,185,101,216,254, 88,89,25,70,238,237,247,171,56,224,233,69,243,69,26,253,102,175,47,41,200,91,254,212,211,38,171,172,216,141,30,242,251,69,215,116,233,116,75,168,69,204,146,92,197,110,202,202,173,20,177,198,187,164,141,183,50,172,155,163,145,100,101,145,91,229,101,231, 224,248,63,171,73,241,6,93,23,225,236,154,135,138,45,101,146,51,5,204,54,23,54,233,50,50,171,121,146,35,115,11,46,233,21,163,99,157,193,182,238,220,181,220,248,239,246,137,240,175,139,60,66,247,154,119,134,124,127,101,28,128,9,44,109,252,94,214,246,204, 255,0,223,84,8,205,31,240,254,237,126,95,238,213,59,95,218,50,199,76,210,53,91,51,225,141,82,234,218,253,99,150,73,110,124,105,121,53,197,182,195,149,104,229,88,247,70,184,147,107,127,11,13,187,191,132,215,108,90,135,195,31,203,252,206,89,94,95,104,138, 127,8,120,163,72,146,29,14,238,211,85,157,45,117,31,54,75,139,91,107,134,88,155,238,171,71,62,223,153,118,237,109,203,254,239,251,53,165,167,104,222,46,248,109,15,135,46,254,15,120,107,90,131,95,211,110,110,230,191,212,103,137,110,173,53,19,230,21,182, 242,225,152,237,242,214,22,146,54,249,87,115,62,230,254,22,174,82,111,140,231,196,254,42,180,131,195,126,19,210,245,23,157,62,206,182,218,214,165,119,173,198,236,62,101,218,183,18,39,150,85,67,87,71,227,223,248,74,245,15,10,201,169,248,211,193,94,0,138, 215,72,88,192,84,209,84,207,28,11,157,171,185,37,109,177,70,172,191,46,239,186,163,211,146,124,178,247,100,133,31,117,145,107,158,52,241,231,237,38,109,23,197,47,127,31,134,214,41,218,48,208,71,167,105,209,195,111,254,177,158,56,99,88,86,24,126,85,95, 149,190,111,151,230,109,213,219,252,56,253,186,215,225,111,236,95,225,207,9,203,163,220,106,26,215,133,124,97,168,106,154,94,166,190,108,48,233,186,101,253,144,89,109,199,150,126,93,215,168,101,141,31,248,151,119,12,170,203,39,197,45,114,215,246,125, 253,136,180,253,51,196,159,233,254,50,241,220,191,217,240,139,130,68,186,110,137,106,219,165,141,27,248,124,217,155,102,239,189,181,164,61,154,190,109,240,214,179,169,107,247,113,193,225,187,121,154,235,81,152,194,200,136,26,25,100,42,222,92,78,27,228, 111,148,54,221,255,0,119,12,195,111,222,175,23,7,8,98,169,182,225,251,180,253,223,151,82,169,206,116,36,229,18,207,193,15,27,255,0,194,37,241,31,69,212,164,180,158,238,29,26,234,45,67,80,88,36,88,229,185,182,138,88,100,153,114,231,111,205,12,110,165, 79,202,219,190,109,213,250,141,251,48,254,223,154,55,198,127,219,103,246,145,241,239,134,218,235,65,209,190,33,120,67,196,27,223,80,10,131,79,181,143,236,162,6,184,198,60,232,35,83,243,110,249,163,105,164,95,186,181,249,135,226,175,134,211,120,55,85, 23,122,181,148,122,76,236,68,182,240,219,163,75,107,38,114,196,219,206,192,171,237,235,128,204,121,24,108,10,210,240,151,198,37,240,95,134,224,131,68,77,86,222,250,88,36,179,189,156,220,162,218,77,13,195,21,186,130,69,69,59,161,146,53,69,101,111,238, 255,0,14,213,53,223,90,132,43,70,235,115,90,85,121,126,35,210,124,9,101,168,104,127,177,167,137,100,158,123,136,164,214,165,77,38,123,120,163,138,68,54,235,103,12,145,172,170,121,143,253,38,220,43,50,254,241,91,111,221,172,63,25,124,74,189,248,127,225, 13,87,194,158,6,51,233,190,29,241,115,90,248,142,4,89,73,146,56,25,119,121,59,71,221,101,184,142,101,111,226,218,187,126,235,83,188,105,174,207,160,252,19,93,22,13,87,80,131,247,179,92,172,114,218,32,62,74,72,100,134,214,234,94,102,243,150,105,36,104, 246,182,214,141,155,173,65,240,143,195,90,55,198,63,137,126,26,240,205,189,209,79,13,197,35,195,109,45,229,202,199,119,110,151,77,254,161,164,85,242,247,45,198,27,118,221,187,25,191,186,213,205,56,198,210,168,190,31,235,252,141,161,119,40,198,30,130, 120,52,104,254,31,240,86,179,226,43,205,46,249,245,57,173,252,157,34,213,228,50,69,243,52,62,101,207,152,223,55,152,177,249,202,187,87,238,183,241,55,203,94,223,240,198,214,207,224,87,236,209,226,63,136,254,61,241,8,185,241,204,55,199,194,254,10,211, 46,37,105,198,147,125,115,0,121,239,227,202,180,107,246,91,124,124,219,126,243,44,107,183,106,173,113,94,63,248,109,162,124,57,240,70,145,111,163,107,182,151,83,88,253,169,175,103,101,221,45,132,208,221,71,30,223,45,89,149,188,237,178,73,15,205,242,170, 238,109,173,187,119,41,226,15,22,94,203,240,255,0,194,122,157,196,205,6,147,225,109,98,91,107,123,105,23,207,123,187,166,79,181,203,51,175,221,144,51,24,119,124,191,51,190,223,186,191,55,157,119,139,113,106,90,95,239,93,141,49,144,250,183,187,35,232, 15,24,252,12,240,215,236,221,251,52,126,207,119,241,219,75,123,227,175,137,182,17,120,242,230,225,192,104,236,44,111,47,164,210,227,183,50,124,173,255,0,30,247,80,72,223,223,149,67,183,5,183,123,79,193,143,135,236,223,177,110,187,170,252,56,190,179,240, 164,255,0,8,252,95,123,162,248,110,235,95,159,202,146,93,59,86,178,133,117,8,237,110,155,229,105,163,191,179,184,188,95,59,204,219,31,153,252,44,173,92,31,237,171,240,186,227,227,94,163,251,31,248,51,70,58,180,182,159,240,162,124,37,53,205,190,143,34, 79,168,92,23,135,81,186,150,59,59,125,191,52,222,93,188,141,185,183,40,101,79,249,231,243,113,118,63,180,94,139,241,83,86,177,135,197,186,158,149,165,120,69,44,227,177,240,167,133,44,245,87,179,209,252,39,30,232,218,221,132,123,188,155,171,233,34,89, 86,225,164,243,25,164,147,114,201,26,172,107,81,142,86,167,82,117,93,218,191,187,190,151,118,252,52,249,178,104,114,171,43,31,66,120,243,68,241,7,130,188,61,164,77,240,239,197,154,61,141,173,223,147,226,159,14,73,123,107,228,125,161,102,154,59,198,184, 183,101,95,244,57,161,191,183,86,242,230,86,102,186,142,111,46,21,89,55,87,231,159,199,79,218,134,79,141,31,30,117,237,99,87,211,33,139,71,213,245,185,117,187,221,34,198,221,116,251,59,171,153,102,47,60,140,216,105,19,115,51,183,239,60,205,187,153,118, 45,125,199,251,86,120,190,239,197,31,15,52,207,10,248,107,195,90,86,183,115,225,105,45,111,252,63,127,97,109,52,151,113,199,47,203,125,109,117,30,214,143,247,141,12,18,52,219,149,90,72,86,70,219,183,204,111,133,62,59,120,7,89,212,60,125,168,191,140,90, 198,31,16,235,98,107,217,45,52,82,183,163,119,27,83,203,141,153,97,133,178,60,166,243,27,247,113,252,219,91,229,169,200,177,24,92,69,59,194,223,215,226,107,153,42,148,249,92,217,15,141,126,57,233,94,62,185,182,211,244,143,11,232,190,25,211,227,138,61, 50,11,161,123,62,166,208,64,170,201,152,213,138,172,167,247,146,51,124,172,210,49,218,221,119,47,123,241,98,53,248,185,241,199,79,143,192,26,109,255,0,132,124,21,46,161,5,143,134,237,181,100,149,46,46,237,252,232,227,220,90,69,89,38,146,73,188,201,27, 248,119,73,229,253,213,175,53,248,125,241,247,92,182,214,116,248,188,31,55,135,180,121,154,198,215,72,58,132,214,200,130,4,135,229,138,225,166,109,239,25,65,243,51,125,223,151,238,55,202,149,237,250,159,237,43,165,90,252,24,155,225,223,236,243,127,100, 250,215,139,244,233,180,125,107,196,254,39,49,172,247,182,170,178,75,115,59,76,235,254,138,46,26,54,183,134,17,186,72,225,31,52,158,101,199,203,234,226,40,206,28,170,156,126,215,126,157,207,62,42,50,95,17,221,126,211,159,179,166,177,240,147,224,199,128, 180,155,157,123,73,183,211,126,33,120,83,254,19,91,105,146,127,177,73,48,212,166,153,146,202,104,100,86,221,182,56,246,182,221,173,187,203,85,85,86,101,168,124,33,224,207,15,248,43,198,254,22,79,13,93,120,182,242,25,173,32,215,116,192,255,0,98,182,211, 47,244,197,153,33,6,72,23,115,254,242,234,54,195,36,145,172,139,28,173,252,53,196,254,209,118,55,31,24,53,125,29,126,42,106,122,156,119,254,26,240,165,142,143,102,108,231,251,85,188,118,146,121,127,217,211,172,223,199,18,173,197,244,146,71,187,204,89, 98,104,215,229,249,155,181,191,177,214,254,28,126,212,127,15,252,67,224,91,59,173,77,31,195,118,58,78,145,166,207,110,178,219,222,42,105,151,214,239,106,150,178,73,230,126,237,102,183,109,170,173,181,164,50,54,223,189,94,101,92,4,103,205,7,83,222,247, 187,126,63,160,229,82,17,126,236,69,31,181,207,139,252,103,165,105,218,183,252,43,223,7,248,114,223,195,23,58,134,187,167,141,35,75,144,216,120,74,226,107,159,42,241,97,181,111,58,24,225,105,163,145,127,125,34,238,105,182,171,55,203,187,98,219,194,191, 16,124,109,225,123,84,215,181,69,185,186,215,98,146,93,45,158,214,57,174,47,21,85,174,214,59,117,105,63,125,185,90,73,22,54,109,204,171,35,71,254,173,150,190,86,185,241,47,137,53,75,9,124,73,225,248,188,83,163,232,222,42,176,181,210,175,47,163,188,104, 32,214,46,99,133,76,194,71,95,221,187,238,143,206,88,91,238,237,243,23,107,19,183,233,255,0,216,199,246,149,240,231,141,62,14,94,124,54,253,167,52,251,187,182,210,116,184,110,116,159,22,88,92,92,201,168,104,247,13,118,183,54,210,92,74,140,199,204,134, 99,186,29,203,182,53,89,33,145,91,239,73,231,103,121,93,74,176,85,233,203,85,241,105,123,122,122,105,166,151,58,112,117,57,165,200,206,223,67,253,153,252,97,225,137,237,117,47,132,126,60,209,117,77,46,43,43,107,235,52,255,0,132,66,223,251,94,24,217,119, 73,29,196,63,43,90,180,50,44,202,203,181,153,89,126,234,181,69,240,115,196,62,14,248,181,62,184,124,77,46,145,226,8,116,152,150,101,127,53,97,146,222,5,145,155,247,138,170,173,14,230,150,109,173,183,251,223,55,240,215,212,95,20,190,30,235,127,20,225, 211,60,69,240,198,215,78,177,251,4,82,105,210,201,170,220,125,150,70,150,57,22,71,154,197,163,93,179,126,239,247,139,38,229,93,204,171,247,151,109,124,65,251,109,95,124,59,248,57,225,77,75,79,248,123,226,109,115,196,186,214,169,61,207,144,89,86,55,182, 131,106,249,134,234,72,149,99,249,166,111,149,85,90,79,187,187,229,221,94,94,85,131,169,154,168,202,186,146,111,182,159,126,215,61,60,68,169,224,31,44,61,227,192,63,107,247,177,241,7,199,123,221,15,193,179,88,255,0,194,37,164,32,185,180,130,206,218,4, 251,50,249,40,178,199,28,171,26,180,210,126,235,239,62,239,153,182,237,249,91,119,133,199,55,219,151,202,105,238,30,218,38,62,68,5,153,194,169,57,221,183,238,231,248,155,223,117,118,127,17,181,221,59,86,17,92,120,62,210,254,210,105,34,99,60,115,71,254, 234,174,217,21,183,63,202,140,219,170,167,193,175,11,217,248,147,198,90,125,191,136,229,180,211,244,192,119,92,222,93,59,71,10,133,70,112,140,201,185,183,72,201,229,170,255,0,19,124,191,45,126,141,134,164,232,195,217,246,62,110,83,230,148,164,122,159, 193,15,129,119,18,248,18,251,197,62,52,211,224,180,240,229,165,149,196,214,211,220,206,176,127,104,220,42,178,172,113,237,221,35,109,109,191,54,221,191,195,243,125,218,242,221,124,198,233,168,203,170,201,117,61,233,101,220,203,30,213,221,242,238,102, 254,21,93,219,151,109,122,23,197,43,47,13,15,10,120,119,86,240,117,156,118,22,215,6,226,209,99,128,200,179,70,129,188,207,47,247,219,153,89,91,43,247,191,241,234,243,38,211,102,158,125,214,138,203,4,107,251,232,214,102,111,55,230,249,119,87,100,41,242, 19,205,206,95,138,233,180,13,28,253,172,180,13,43,110,142,54,184,242,227,149,89,190,111,225,251,191,42,212,218,61,245,229,149,220,243,221,93,90,105,77,4,223,45,189,194,238,105,25,151,115,46,223,238,237,254,245,83,209,60,9,115,226,171,47,62,213,150,8, 173,149,154,242,73,155,202,141,87,119,203,181,191,138,179,245,123,143,236,251,80,182,183,179,79,59,62,230,105,126,102,142,79,246,127,139,111,203,252,84,1,175,175,235,186,151,136,229,131,75,125,82,238,239,75,178,145,165,138,38,151,247,22,219,149,85,164, 85,254,29,219,87,254,249,90,231,147,195,47,168,248,178,59,105,238,21,81,91,230,146,65,247,87,255,0,102,170,241,234,140,250,103,149,229,196,219,166,221,230,70,191,59,84,54,183,94,69,226,202,37,102,127,187,242,182,214,172,195,156,191,226,75,171,113,168, 78,52,43,119,135,204,95,46,93,210,110,223,253,230,255,0,103,119,203,242,213,27,189,17,134,147,20,224,111,23,43,230,22,69,221,229,109,109,187,89,169,241,206,147,41,18,172,108,127,218,251,205,243,127,241,84,235,201,111,231,178,184,179,141,229,134,208,74, 183,15,110,70,221,146,237,242,247,50,183,205,187,5,150,156,190,16,231,54,62,27,120,118,93,122,226,43,116,181,89,31,206,95,47,98,238,102,111,238,215,184,120,215,224,167,196,31,128,218,102,155,172,234,178,235,254,12,181,191,149,188,187,168,238,35,242,238, 27,248,163,253,196,140,187,190,247,203,34,255,0,187,253,234,240,223,134,154,132,58,14,169,109,115,119,61,162,60,50,179,8,238,224,243,173,219,247,127,122,72,247,46,229,233,255,0,124,238,175,101,215,244,223,7,107,222,28,133,244,79,19,193,7,137,175,17,81, 52,77,35,194,23,22,177,220,203,141,205,36,147,201,242,49,80,27,238,174,234,243,51,58,179,140,35,26,127,63,119,155,254,27,230,117,96,220,121,165,41,127,145,133,167,252,87,208,162,212,174,245,63,139,182,254,33,241,221,225,181,54,246,191,218,26,150,232, 131,5,218,162,70,145,153,154,21,251,219,87,230,251,213,230,222,48,248,151,168,248,158,221,227,11,36,72,91,50,98,242,226,229,157,118,237,88,217,166,145,153,149,106,247,138,230,182,211,117,13,83,78,186,87,91,187,38,85,71,118,102,145,100,86,249,163,85,93, 202,204,219,190,102,254,29,191,45,115,23,147,121,240,121,179,68,219,119,109,95,151,111,205,79,15,30,85,170,49,169,39,47,120,101,205,218,69,160,71,111,25,132,200,102,123,153,51,9,243,35,249,85,66,150,232,85,134,230,219,236,51,77,178,241,173,253,172,136, 183,83,220,93,69,20,82,199,12,83,76,207,28,109,34,133,44,170,73,254,234,244,235,177,106,95,177,53,206,171,121,4,75,35,188,86,228,168,67,243,29,170,191,45,98,8,140,139,144,1,7,145,93,209,180,150,164,162,85,212,217,11,29,170,75,127,179,247,127,221,254, 237,91,138,202,107,235,155,68,182,143,204,123,143,148,32,27,152,109,235,185,127,221,255,0,199,126,106,171,28,40,131,47,156,251,213,159,48,91,70,138,172,202,219,183,127,181,243,83,147,236,35,126,107,227,39,133,197,175,136,175,245,25,18,221,218,59,107, 103,111,220,66,23,110,211,179,118,63,189,252,63,240,42,222,240,138,127,194,69,106,151,23,58,212,118,223,100,149,85,146,237,27,17,197,183,203,142,79,51,238,183,240,198,177,237,249,126,247,221,90,228,60,58,111,53,219,201,33,210,236,223,82,187,17,50,44, 94,75,92,72,217,27,119,170,175,205,185,126,93,191,221,226,159,170,120,123,80,210,172,226,147,89,179,188,211,163,46,169,27,220,90,203,26,179,48,221,195,50,170,238,218,219,191,221,172,103,79,155,221,8,220,237,181,207,30,95,223,120,97,180,168,238,26,120, 154,249,18,9,18,104,124,213,117,128,67,39,203,26,252,208,52,75,181,54,252,189,27,230,102,106,119,129,60,117,164,199,169,89,217,120,174,202,17,110,242,125,156,92,110,109,162,48,237,34,180,145,238,218,204,178,22,109,223,238,238,95,150,143,129,118,218,94, 161,241,187,195,239,227,180,180,151,195,118,119,98,91,200,111,38,142,40,165,134,56,158,103,142,70,102,219,181,188,144,173,187,254,122,109,254,42,228,188,41,36,90,239,139,252,235,139,59,71,182,2,123,199,181,25,72,246,237,102,242,148,15,155,134,101,85, 81,233,208,214,94,205,74,45,15,151,222,62,166,248,123,225,251,57,191,224,158,250,230,165,109,166,89,92,94,252,68,248,177,163,120,114,238,242,100,204,150,214,86,218,124,154,146,164,123,78,213,105,37,184,111,50,70,221,242,175,253,243,243,239,198,191,137, 26,143,140,252,127,117,111,115,116,223,98,179,149,180,194,177,183,201,119,4,23,83,180,77,52,121,219,35,15,51,248,191,224,56,172,93,15,199,58,182,141,225,111,236,184,245,173,94,11,11,123,245,188,22,49,205,34,219,155,165,137,162,23,30,95,221,243,86,54, 49,227,239,109,109,181,86,255,0,194,31,217,126,37,146,29,102,234,54,177,182,186,142,41,238,173,164,13,242,48,87,102,85,110,126,233,249,119,124,187,190,90,184,81,132,106,69,246,255,0,129,255,0,0,183,87,153,88,250,119,224,175,198,171,111,10,126,212,159, 179,231,139,45,60,65,102,36,179,210,180,29,30,246,121,109,148,199,105,19,73,115,166,222,36,223,62,119,71,12,251,178,126,246,123,87,173,124,10,241,143,134,188,51,7,197,175,217,237,46,52,143,21,217,235,99,196,102,210,57,35,100,178,185,190,210,53,95,181, 233,255,0,55,43,229,205,29,181,215,221,102,218,175,95,159,47,122,214,2,111,236,117,83,111,30,255,0,46,224,69,178,86,229,182,55,94,27,238,183,251,63,240,26,250,79,226,23,237,89,170,252,51,253,171,180,79,137,126,30,210,52,107,139,237,87,75,209,53,153,33, 187,211,227,154,57,115,97,29,181,207,151,187,229,85,153,34,145,89,153,88,238,145,190,233,174,122,248,24,237,29,218,118,249,109,248,179,104,214,187,247,207,188,191,99,175,248,40,160,209,188,59,240,15,196,218,213,235,167,133,225,120,126,12,120,138,91,137, 15,250,44,182,243,46,169,225,45,70,69,254,54,134,44,195,51,110,95,151,206,175,152,245,47,218,195,89,248,23,169,252,69,240,237,135,133,116,225,225,237,87,196,58,218,232,218,46,166,194,236,105,131,251,65,255,0,180,244,166,68,109,179,88,72,167,202,110,126, 86,88,230,85,45,247,126,111,210,191,104,189,95,193,145,248,138,231,225,196,81,217,233,94,33,212,197,213,222,154,35,88,98,211,218,59,137,36,181,104,85,127,118,165,96,154,91,125,191,119,203,249,71,203,182,177,124,99,241,239,83,248,129,62,147,168,248,214, 238,59,175,176,220,192,147,222,71,22,219,199,142,56,35,131,124,202,127,214,60,144,197,26,180,159,197,229,175,247,126,103,60,52,95,186,227,183,230,105,9,171,105,35,189,240,55,131,53,175,141,191,21,116,184,32,131,84,159,76,138,3,167,70,111,108,218,227, 236,150,210,111,217,21,228,191,42,220,121,126,115,109,109,219,182,237,106,244,221,90,253,188,83,226,247,180,241,150,170,154,149,239,135,33,212,95,82,191,215,163,141,68,147,179,69,167,90,169,242,213,124,182,98,39,218,223,55,221,95,246,183,121,102,131, 251,69,94,61,159,246,78,129,172,233,250,141,172,214,146,237,138,107,89,173,46,45,7,204,177,238,145,85,191,120,169,183,247,209,255,0,179,254,245,116,127,4,188,37,125,251,64,93,107,195,197,23,54,137,111,173,218,65,113,119,62,151,39,156,164,219,179,72,210, 72,173,243,47,204,173,39,203,255,0,45,25,153,171,205,173,207,23,42,149,190,19,214,163,40,56,242,209,151,189,246,140,15,135,86,80,233,159,18,180,223,27,248,254,107,139,13,18,219,84,154,11,253,68,126,239,236,219,98,145,85,161,145,85,182,220,124,138,35, 93,191,197,255,0,124,242,62,37,138,195,196,30,40,190,241,95,135,89,109,108,154,235,237,209,89,69,19,34,89,253,214,13,36,203,182,53,147,118,199,101,95,226,147,229,249,85,89,189,59,225,223,194,107,217,117,15,51,195,158,33,154,235,73,138,73,203,91,37,155, 42,205,14,227,185,113,251,200,217,190,117,249,153,119,47,240,255,0,21,73,226,159,2,104,144,94,233,90,183,194,109,73,97,185,211,111,188,253,106,27,97,29,244,22,3,236,237,230,76,182,167,111,152,209,143,189,15,222,218,172,171,185,182,237,84,243,40,83,171, 24,203,102,121,149,232,243,124,36,90,79,195,113,171,105,26,47,136,237,36,135,92,26,236,87,19,221,105,145,105,172,214,226,68,221,251,143,152,55,219,111,38,141,188,229,109,187,97,145,89,155,115,38,230,224,252,77,240,211,254,17,59,91,169,188,85,127,165, 90,75,106,124,173,59,68,184,189,107,141,90,70,243,21,85,110,33,137,127,118,171,243,171,73,35,42,179,43,50,175,204,181,210,248,187,92,186,248,57,227,107,255,0,15,120,27,196,141,99,225,253,40,254,226,43,65,53,195,5,154,53,121,33,13,242,201,185,89,155,239, 50,237,86,95,150,185,43,47,13,120,107,202,45,111,174,120,159,195,215,183,168,110,180,232,117,157,62,222,59,77,80,125,221,202,208,253,237,205,242,171,42,183,204,191,236,215,69,42,210,124,220,178,247,95,107,255,0,94,191,161,207,42,113,131,229,251,70,46, 191,172,233,30,126,183,4,154,71,155,49,146,69,177,32,205,26,66,172,65,251,76,155,79,239,30,29,172,177,171,101,89,92,238,251,171,148,179,42,246,241,136,254,239,247,106,15,23,248,90,231,195,179,79,7,140,110,65,213,164,242,208,25,29,174,26,65,242,176,242, 213,126,102,251,202,191,236,227,254,3,73,163,75,230,43,103,248,127,189,94,157,31,130,58,152,157,119,195,173,67,251,63,198,54,50,191,69,149,87,238,253,234,253,49,253,137,39,251,126,156,45,224,86,77,211,252,170,191,117,118,252,223,122,191,49,60,28,138, 158,43,183,105,247,109,137,188,197,255,0,121,126,237,126,147,126,201,58,196,79,167,164,54,104,219,214,29,210,42,253,239,153,126,95,151,253,170,231,204,35,238,155,97,254,35,245,103,65,214,6,155,240,246,107,189,75,110,44,236,188,201,218,37,86,111,149,119, 124,171,95,27,127,193,76,159,198,127,7,52,253,127,226,15,192,184,52,221,127,194,254,56,240,190,159,31,136,244,123,171,36,188,187,210,214,201,154,218,61,87,78,147,229,146,221,163,155,203,243,36,86,253,220,139,110,223,47,222,175,169,254,18,220,175,136, 126,20,221,197,181,154,59,171,6,86,117,127,186,222,94,221,171,186,190,65,253,163,124,59,226,207,137,127,14,117,233,190,10,125,151,84,241,135,193,29,46,239,197,118,186,12,209,221,15,248,75,60,63,127,3,91,106,186,74,180,75,139,133,105,108,214,111,179,252, 204,178,45,187,127,18,215,131,70,159,63,186,142,236,71,189,8,158,63,251,99,254,209,90,159,252,20,3,246,45,210,62,38,252,44,211,180,49,241,79,77,176,107,127,136,250,121,181,89,147,196,145,233,72,209,220,220,91,171,44,158,92,159,102,187,142,230,75,127, 245,210,90,220,52,145,179,53,179,45,121,119,236,165,251,67,124,63,248,121,225,77,86,47,29,233,62,39,54,151,46,250,151,137,37,210,226,178,184,54,107,112,170,200,147,89,203,251,185,22,40,214,220,44,222,102,229,85,93,172,205,185,171,203,188,53,241,231,195, 127,5,126,33,223,120,143,225,174,179,170,91,232,186,228,250,95,137,180,163,27,135,139,194,250,177,70,89,98,188,194,253,209,3,24,228,184,93,209,205,5,214,221,204,148,203,63,143,122,39,194,153,254,39,233,154,167,131,90,195,87,241,139,92,77,21,244,113,201, 42,105,13,55,239,33,154,203,203,147,111,202,191,44,109,243,71,229,237,95,186,187,104,199,123,90,208,140,101,79,222,254,187,28,222,209,82,247,163,45,142,179,197,191,177,111,133,254,57,120,179,78,215,254,15,94,89,88,233,54,26,117,164,106,52,120,173,150, 107,187,105,21,188,191,46,31,59,106,238,218,91,119,204,172,170,203,181,182,173,112,30,31,240,241,248,15,241,35,70,240,167,196,75,41,181,255,0,135,222,39,213,237,188,63,170,253,182,202,54,211,110,45,217,161,91,43,200,211,118,22,234,221,164,93,223,42,238, 141,89,126,238,213,92,159,137,255,0,181,37,183,197,93,122,45,66,246,91,173,34,243,108,107,37,222,131,160,219,233,146,92,237,95,189,36,219,154,70,109,223,240,29,223,54,218,198,178,248,109,97,62,148,46,116,221,106,109,118,97,229,190,117,93,66,234,105,139, 109,254,47,38,221,126,111,155,111,222,169,195,226,170,209,186,169,169,79,17,74,175,195,31,120,250,247,65,253,154,236,254,34,248,7,194,254,5,253,169,245,104,60,103,117,224,29,114,109,63,67,241,21,141,218,249,154,206,147,115,27,43,52,141,34,183,221,146, 24,102,135,239,73,186,53,86,102,249,153,190,93,248,169,251,39,77,251,42,254,211,158,15,208,190,41,233,211,223,105,186,222,161,115,21,149,251,52,45,105,168,217,200,146,195,7,221,85,219,112,173,37,171,72,167,229,243,27,247,127,45,125,5,240,71,68,184,155, 68,107,93,47,92,210,180,75,43,68,142,59,127,244,77,77,164,183,219,34,182,217,36,185,95,222,42,249,107,247,87,248,89,151,110,234,227,63,107,159,11,201,227,205,94,215,91,241,15,143,124,59,99,119,163,248,134,223,89,59,44,175,110,96,107,164,16,91,91,199, 108,172,203,229,199,35,66,187,151,238,238,145,154,140,155,21,106,181,40,78,95,107,243,61,44,101,40,85,161,26,177,143,244,142,11,246,157,240,238,147,224,221,38,79,236,157,37,173,211,88,179,147,118,183,20,63,242,13,251,60,222,114,219,175,151,31,238,252, 200,229,104,217,164,101,95,37,153,127,189,95,58,124,12,241,6,149,162,126,208,126,18,213,124,85,100,53,173,56,106,246,177,223,199,117,27,109,184,142,79,220,50,178,201,247,182,249,139,243,125,223,221,173,125,223,241,87,192,222,23,241,102,139,167,207,105, 171,106,90,125,212,49,76,242,255,0,161,201,53,158,179,107,36,43,12,182,82,70,210,42,178,252,177,237,102,251,191,55,247,171,231,95,142,191,178,111,130,252,41,224,93,11,196,222,11,241,109,254,143,103,168,75,104,175,166,222,233,152,123,117,154,72,194,253, 158,111,49,155,204,95,153,153,159,127,205,253,213,90,247,233,213,138,253,204,186,158,76,233,203,226,67,63,224,162,127,178,53,247,236,185,241,55,86,147,195,145,73,121,225,139,118,75,253,55,84,10,162,24,210,70,89,35,130,73,23,229,89,21,246,199,183,253, 133,254,245,118,127,180,127,192,221,55,226,74,120,107,90,240,182,173,166,120,98,125,118,200,181,236,215,216,179,211,46,190,104,227,142,72,100,218,209,199,50,188,209,175,146,219,86,69,144,50,183,200,213,246,85,206,189,225,77,75,75,185,210,252,68,158,43, 185,219,108,177,218,219,73,117,27,67,117,247,119,44,203,229,252,170,203,187,230,93,223,238,215,43,241,111,246,120,240,143,142,252,27,109,225,125,105,245,125,2,198,29,70,29,78,24,44,238,252,229,145,99,86,143,203,145,154,54,85,133,119,43,109,143,248,149, 126,106,226,167,89,165,8,203,226,137,210,232,167,205,40,159,14,235,255,0,179,13,132,126,58,179,72,103,123,118,183,186,146,210,231,66,191,63,102,191,215,110,109,14,101,143,76,86,249,102,138,225,118,237,109,219,163,105,62,86,117,41,156,166,248,23,162,216, 248,135,80,187,142,210,251,90,177,123,88,47,32,240,172,110,32,241,29,133,156,237,26,180,151,10,202,54,201,6,224,86,69,103,220,187,124,205,161,153,151,237,127,28,126,202,191,14,188,123,225,223,14,233,23,26,215,136,110,44,124,37,105,61,182,158,18,89,22, 107,116,150,225,110,15,239,182,171,46,214,134,21,93,173,251,181,141,85,126,95,150,159,241,19,246,115,240,159,141,126,48,90,252,67,141,181,105,252,87,165,155,115,109,37,178,201,11,55,146,155,35,146,69,86,85,111,151,114,182,239,189,252,76,213,213,28,79, 187,239,24,202,139,143,67,224,189,127,224,132,17,90,106,26,95,194,45,254,61,189,190,190,100,86,211,99,146,59,141,12,198,196,24,231,133,185,111,51,108,168,204,236,17,153,119,70,219,151,230,202,253,137,102,183,178,253,165,52,203,47,21,93,139,59,61,78,41, 236,165,105,149,190,99,183,114,171,255,0,119,253,91,127,187,95,115,120,63,246,102,240,47,195,47,16,248,131,80,240,246,159,226,152,245,11,171,9,30,230,226,41,231,152,92,91,220,178,200,242,51,121,223,232,251,166,133,126,111,151,248,191,189,95,62,124,69, 248,49,224,47,134,223,181,23,130,111,188,33,168,107,159,105,213,245,153,110,38,211,102,242,188,171,116,17,59,103,114,175,152,187,164,97,247,183,110,203,86,254,213,87,132,233,152,186,110,30,241,237,62,55,248,13,225,223,21,120,83,89,211,76,11,175,197,113, 52,114,161,87,251,60,214,42,191,51,221,219,200,202,223,190,142,61,204,170,203,182,79,154,54,249,90,188,131,246,109,248,111,225,255,0,29,252,58,241,60,94,8,209,180,239,19,248,93,116,169,4,215,58,151,217,173,117,253,27,81,184,204,113,60,43,113,251,152, 218,101,202,199,243,121,123,149,182,182,229,106,250,110,203,82,210,60,61,125,178,231,71,91,187,43,251,105,35,242,231,149,167,129,150,69,219,34,200,173,242,178,252,223,50,253,218,213,178,240,231,134,62,31,232,83,234,158,28,240,254,145,167,11,247,142,61, 86,11,75,101,134,59,214,141,154,104,213,182,175,240,238,220,191,221,221,185,107,205,133,73,40,114,157,181,34,166,227,238,159,21,252,100,248,117,224,79,3,92,120,103,89,241,163,201,30,133,127,36,186,95,134,239,172,152,219,75,28,22,171,26,99,85,181,118, 89,60,235,73,228,104,219,203,111,51,229,249,183,109,92,236,120,203,224,140,90,92,182,218,119,135,111,124,53,103,241,15,196,50,90,216,234,55,182,23,162,75,5,23,145,172,165,94,203,110,216,163,184,135,254,90,47,203,36,191,41,88,217,151,111,213,190,52,248, 213,225,8,103,146,219,195,158,17,209,166,121,188,198,138,234,73,228,89,44,153,191,215,199,229,201,186,57,60,237,219,154,70,249,183,87,39,55,139,34,215,108,148,165,165,188,49,42,121,49,200,187,183,47,221,218,170,223,238,173,118,66,164,237,169,148,160, 162,207,206,33,3,252,58,241,253,173,196,235,58,46,145,168,163,150,154,54,87,150,40,229,218,95,230,249,182,178,43,55,255,0,21,95,116,75,166,69,226,159,13,92,67,162,172,54,23,55,176,52,113,93,197,26,255,0,163,51,47,203,38,223,187,254,215,205,247,191,137, 107,140,253,180,237,116,191,19,120,33,100,135,192,241,107,58,251,40,130,210,230,45,50,121,110,35,194,238,31,60,100,183,151,247,190,86,249,126,106,245,191,1,195,226,155,255,0,10,233,147,232,246,23,214,81,220,91,67,117,20,31,97,218,204,172,191,234,217, 89,127,118,203,183,230,86,219,90,214,151,52,99,35,42,107,146,71,207,222,41,208,52,63,139,95,24,52,127,2,254,208,151,122,148,190,34,179,138,216,24,180,171,232,162,105,117,9,90,40,206,158,209,204,187,90,79,152,126,243,204,140,238,153,190,238,90,186,111, 137,223,240,78,127,29,254,199,30,38,189,213,254,31,198,250,214,147,112,165,161,178,80,171,168,199,32,63,36,51,90,220,40,243,54,110,148,121,144,180,155,184,249,119,117,248,255,0,197,94,45,30,57,241,213,206,169,33,189,58,132,251,95,99,183,218,62,217,56, 193,145,221,155,110,221,220,182,223,152,238,249,119,127,21,125,185,240,183,246,161,248,209,125,166,89,233,190,12,241,197,132,126,13,212,35,88,44,46,117,119,73,159,82,157,85,124,248,97,180,96,254,114,199,50,200,25,218,20,218,168,205,185,171,231,177,180, 115,12,190,20,167,132,148,109,246,163,39,167,200,245,176,63,85,197,83,156,106,41,42,159,102,202,255,0,121,242,207,196,47,19,248,191,197,158,41,22,31,19,97,214,236,44,188,41,106,146,221,104,210,121,240,197,165,70,161,97,121,163,211,231,101,242,23,108, 145,13,168,191,55,252,9,182,241,154,119,132,245,159,12,169,213,180,109,218,134,142,46,254,198,215,16,124,194,102,147,127,150,90,62,191,62,194,203,247,190,101,219,247,190,83,250,5,173,31,17,124,88,240,244,150,95,180,167,128,62,23,120,214,213,217,164,134, 231,65,213,70,155,169,44,109,185,68,176,219,204,187,81,155,110,229,104,222,21,255,0,106,171,248,55,246,61,212,252,75,29,245,167,194,65,164,223,120,99,92,79,176,234,122,30,167,167,199,97,125,182,69,93,219,100,86,242,217,151,108,109,230,70,203,243,46,237, 204,223,122,87,24,224,232,251,149,229,21,37,253,229,37,255,0,3,231,99,142,190,95,94,140,173,56,200,248,11,196,30,57,212,46,116,143,236,187,201,165,34,64,36,38,69,216,200,255,0,118,84,110,79,247,118,253,213,233,247,87,109,97,248,126,241,173,30,73,165, 104,154,208,20,89,237,252,239,45,238,20,176,220,131,212,113,207,247,67,102,190,238,253,177,255,0,98,43,77,11,251,122,243,198,145,75,165,120,150,198,221,181,155,155,233,45,218,52,187,181,134,37,89,167,101,85,219,246,143,245,44,202,171,182,70,86,219,247, 155,111,197,126,11,240,141,238,167,174,137,172,244,197,191,49,145,60,177,57,217,10,21,63,54,233,55,124,171,185,126,242,215,185,130,204,176,248,218,62,218,159,194,113,198,18,85,52,61,95,81,241,29,156,223,4,18,210,234,40,118,220,94,46,162,39,102,155,204, 211,62,102,221,103,15,203,229,178,205,230,52,141,230,110,111,221,125,239,155,229,131,226,101,247,218,255,0,101,79,9,46,159,113,103,60,66,239,81,125,65,91,137,162,186,187,149,90,24,194,255,0,17,75,120,3,55,240,170,186,215,51,115,224,157,71,227,95,197, 45,59,72,210,225,180,183,182,190,116,178,141,172,244,241,99,111,52,203,27,59,170,36,141,247,182,153,63,122,223,121,134,230,237,93,239,237,5,175,105,190,60,189,208,244,15,134,106,109,60,63,11,220,106,209,76,96,221,45,199,157,26,155,121,25,81,124,205,222, 93,162,183,151,252,62,100,127,237,109,151,74,211,135,222,86,34,162,170,217,245,247,195,139,177,251,76,248,118,207,227,103,198,159,3,221,232,154,23,133,254,31,174,147,225,123,79,15,234,143,103,167,109,240,244,114,164,247,119,76,187,102,102,88,218,233, 132,123,86,41,159,116,125,183,85,143,135,90,31,134,244,31,20,252,75,209,124,5,225,75,207,7,252,71,75,75,189,65,116,43,201,30,88,181,184,35,182,251,96,93,194,57,154,25,38,176,189,75,191,179,195,243,111,142,101,95,226,175,40,253,143,190,28,248,155,226, 181,245,223,236,213,172,106,243,235,243,252,71,240,236,63,240,138,234,154,60,198,88,116,11,201,32,150,100,182,98,193,127,208,166,219,45,188,209,156,42,204,203,36,127,49,102,30,205,251,119,126,210,218,59,126,208,250,207,142,190,5,90,89,105,154,190,139, 167,248,111,196,151,186,77,244,141,6,161,164,107,150,22,45,97,169,216,77,157,219,149,45,236,109,99,146,56,199,205,29,215,203,159,50,190,114,121,109,106,245,171,84,175,57,41,115,123,150,147,81,229,211,75,108,237,213,90,250,118,106,254,165,57,70,60,188, 175,221,113,247,187,169,117,127,214,135,129,248,255,0,197,94,54,241,103,131,244,173,67,195,62,34,62,15,178,210,180,91,125,82,197,52,27,153,100,211,245,29,173,36,119,150,113,183,220,109,170,33,154,59,114,178,121,138,210,127,172,254,31,30,240,223,196,187, 77,95,197,23,55,250,125,182,131,160,248,174,11,9,132,80,233,214,62,93,173,220,144,150,92,220,91,194,223,235,164,102,95,154,221,126,102,143,118,223,225,174,201,255,0,107,41,127,103,223,17,205,47,192,235,15,10,223,124,63,213,82,123,229,240,222,183,165, 253,186,43,168,46,159,230,211,53,11,105,36,84,153,109,230,105,18,51,30,214,85,80,203,47,205,34,212,23,127,29,116,191,137,95,18,180,213,248,8,154,207,193,127,13,107,183,199,79,75,107,25,206,171,105,164,92,109,105,37,251,28,222,92,19,201,11,55,217,130, 199,60,155,97,105,27,247,158,90,241,238,199,7,205,23,36,191,79,209,220,243,171,74,105,251,54,253,223,235,99,95,226,7,236,173,168,248,135,246,143,241,78,167,224,61,55,205,240,213,172,118,17,67,170,235,118,139,99,166,45,211,105,214,211,110,105,35,59,100, 145,85,100,147,203,95,153,155,239,109,251,213,205,252,59,253,159,163,212,188,123,167,139,1,99,169,170,106,118,218,158,165,36,247,144,75,36,240,71,121,28,178,172,118,209,159,149,124,189,205,229,183,205,243,109,221,218,190,135,214,60,95,240,163,193,62, 1,186,146,13,72,234,54,30,25,134,27,73,165,131,85,186,212,100,212,37,144,172,82,150,111,50,72,227,145,139,51,50,175,202,223,52,106,204,213,210,126,199,62,62,241,29,244,58,238,189,227,13,31,195,94,21,240,61,212,27,180,107,56,52,245,93,79,106,255,0,170, 145,164,102,249,99,145,127,188,187,153,153,118,237,219,243,124,182,97,196,24,250,113,117,41,211,229,167,31,135,155,78,111,69,187,252,23,152,167,74,52,223,47,218,60,255,0,84,182,182,240,79,133,188,68,117,77,62,121,244,41,188,251,171,45,99,86,180,154,27, 123,56,33,154,75,135,142,201,126,109,171,27,77,54,216,246,174,239,47,111,204,187,107,196,127,104,111,138,154,143,134,188,105,111,162,105,119,7,90,211,116,169,227,16,59,100,73,186,5,143,111,149,121,31,204,171,229,178,198,209,175,252,11,117,125,211,251, 65,77,225,175,218,19,194,154,7,131,124,55,123,103,167,62,132,151,50,93,60,186,125,210,201,171,93,220,75,252,50,44,106,170,176,195,39,203,185,182,183,239,63,138,190,44,95,217,84,216,120,171,84,209,60,79,123,231,104,158,84,183,86,151,150,18,253,158,75, 89,218,49,8,103,221,242,236,86,133,214,104,254,102,221,229,178,252,173,242,153,78,39,218,127,181,98,165,105,127,95,143,161,207,63,229,137,155,240,199,225,39,136,190,60,252,31,241,110,167,162,218,197,164,120,111,192,210,234,62,38,188,55,90,130,195,105, 37,178,218,67,45,205,149,180,109,254,186,241,132,139,60,113,178,170,178,9,21,100,95,153,107,214,124,13,224,81,224,95,133,58,245,223,134,252,57,53,230,174,45,108,46,96,190,89,36,155,251,111,78,153,100,142,38,253,218,200,208,133,242,150,70,145,163,101, 141,150,227,230,95,189,94,31,226,15,217,147,72,248,89,241,123,69,180,188,241,118,153,226,47,8,106,247,141,19,106,136,178,89,220,53,178,237,255,0,72,117,111,245,17,199,48,218,204,205,182,63,188,223,236,253,21,163,248,123,226,175,128,190,36,65,225,219, 79,248,74,44,78,158,246,48,61,158,180,233,97,169,105,82,180,178,93,193,105,115,119,111,243,77,104,171,48,184,142,69,243,163,102,145,214,79,188,203,94,206,58,81,175,78,46,148,180,255,0,210,181,216,232,194,205,83,149,228,116,127,182,7,196,127,26,106,63, 1,254,22,105,186,45,214,189,240,219,65,48,220,204,52,20,187,181,26,132,139,116,169,36,18,198,144,200,223,47,250,237,176,179,43,109,145,89,87,114,170,215,197,191,26,53,29,79,226,143,141,209,190,36,203,111,162,205,106,145,196,240,164,111,246,217,35,242, 213,135,155,27,99,99,109,219,187,204,207,204,223,53,125,251,241,254,210,15,143,222,18,209,117,205,3,192,30,21,208,230,131,83,142,198,61,117,244,229,146,218,210,233,87,114,220,105,247,209,254,239,253,34,80,27,201,145,87,230,249,150,79,151,203,175,134, 127,107,31,0,53,151,237,69,226,59,107,123,216,245,152,222,228,74,47,108,100,150,75,75,176,176,70,206,240,201,39,240,121,140,241,237,249,182,188,111,243,127,119,179,38,171,70,116,162,163,246,111,238,245,143,145,190,46,18,148,249,187,253,199,7,168,105, 23,122,134,141,53,222,155,45,234,232,218,42,199,111,18,78,85,216,43,55,151,27,54,223,151,115,110,219,89,126,14,248,141,107,225,221,82,88,155,79,142,123,11,171,38,177,157,75,183,153,181,155,230,147,253,169,63,239,159,225,170,126,57,248,163,54,191,167, 67,167,232,209,199,97,167,162,198,37,138,221,118,173,220,145,238,217,51,55,222,102,249,171,146,140,159,63,146,217,246,175,123,15,205,24,243,72,243,235,66,50,124,177,61,127,196,26,253,166,165,164,196,154,147,207,20,186,119,238,45,237,221,153,165,101,101, 86,89,164,95,187,230,55,247,163,218,191,222,174,37,98,45,116,211,148,135,236,201,254,178,73,27,127,203,253,221,191,197,88,119,58,141,212,215,6,73,36,47,51,124,204,115,185,171,107,70,184,131,237,81,127,108,74,204,241,170,249,123,138,237,86,219,187,119, 251,53,209,31,126,70,51,58,27,15,136,55,173,224,59,237,55,70,182,54,255,0,105,120,230,23,1,188,164,182,218,223,118,49,183,115,110,86,11,243,55,203,242,237,174,87,76,211,227,180,146,119,187,156,73,62,230,92,147,187,115,127,189,91,122,86,173,28,144,50, 223,51,220,202,202,222,114,238,251,251,190,238,218,231,47,175,88,22,17,133,140,231,119,203,243,85,202,62,233,150,164,209,31,50,217,10,43,171,121,127,123,119,222,175,92,248,117,251,29,235,62,62,183,158,107,91,189,50,229,133,178,234,16,91,196,236,94,238, 217,161,86,89,195,47,250,181,220,202,187,89,119,110,254,242,252,213,228,126,29,212,34,109,118,21,185,211,23,88,87,142,66,214,187,164,143,121,242,219,230,13,31,204,187,126,246,239,246,126,111,151,154,239,188,43,241,222,227,225,30,163,231,124,47,213,231, 185,183,154,27,57,165,75,136,118,238,185,91,127,46,69,101,254,40,213,89,213,127,135,255,0,66,174,42,254,213,71,247,63,17,82,71,166,104,31,12,252,57,240,219,195,87,186,133,245,131,91,233,122,109,228,83,38,173,171,33,134,230,246,47,45,165,81,109,28,159, 44,119,11,50,52,123,149,118,178,183,203,243,55,203,197,248,223,246,119,213,110,190,27,89,248,222,107,133,206,182,151,122,181,204,119,36,180,159,188,149,77,186,46,197,44,100,144,72,220,55,202,89,113,186,189,71,192,222,37,184,248,223,240,70,226,245,52, 235,43,67,225,221,86,29,85,133,181,170,205,109,51,199,247,163,111,49,153,163,249,38,101,111,239,41,175,97,212,124,51,104,60,2,190,31,209,117,219,123,79,248,71,60,189,58,218,39,243,25,109,153,102,143,230,145,183,110,219,34,172,18,124,205,242,255,0,123, 229,175,156,173,154,79,8,249,101,241,115,106,97,237,121,79,139,172,191,102,255,0,24,69,97,165,220,221,104,198,222,199,88,154,40,173,46,46,46,99,137,143,153,27,72,146,50,242,209,163,44,103,230,101,24,219,183,27,170,127,135,190,33,181,208,53,123,139,198, 177,180,158,56,163,104,109,161,185,79,60,121,159,47,239,55,55,252,179,86,86,101,95,187,185,183,110,175,177,44,60,43,55,137,62,29,105,218,95,140,180,233,245,121,238,37,55,11,51,207,229,181,156,247,75,181,161,141,183,47,151,229,196,205,31,157,247,149,166, 221,253,237,222,43,241,103,246,8,212,244,109,98,45,98,198,93,14,61,21,225,140,219,89,90,235,75,36,145,141,163,115,72,223,55,151,182,77,187,149,119,127,15,221,251,171,190,27,53,88,167,40,213,247,78,140,60,103,93,243,114,158,31,226,8,193,178,121,236,60, 139,72,110,36,109,177,219,109,249,153,155,118,229,255,0,103,230,174,107,81,181,254,202,242,165,158,65,60,155,86,83,4,168,204,161,91,248,91,118,223,252,118,189,46,15,11,197,167,93,95,90,197,170,73,253,170,173,246,107,69,211,160,91,223,180,179,124,173, 251,221,202,177,171,46,237,173,252,95,236,215,29,226,175,6,95,88,248,165,52,221,66,218,238,109,86,70,82,168,103,91,217,138,149,249,97,111,45,153,119,127,22,213,251,170,203,93,216,89,63,180,117,86,166,115,82,7,158,55,189,158,89,82,89,165,216,170,3,47, 152,191,197,243,127,179,242,174,218,162,94,102,192,82,216,111,246,154,182,117,91,41,219,78,182,154,121,173,164,5,124,181,134,45,204,214,203,243,252,178,124,187,85,184,45,183,239,55,222,172,228,188,242,36,101,28,238,137,161,95,246,119,87,160,164,206,114, 175,157,230,103,150,109,180,71,54,235,157,231,107,109,249,170,213,205,148,17,233,182,207,103,60,179,77,38,246,158,63,179,236,88,112,126,79,155,119,239,55,47,205,254,207,74,165,30,82,70,14,54,213,21,240,157,199,194,47,22,218,248,123,196,132,235,87,55, 26,108,165,119,90,234,150,178,60,119,58,84,191,51,44,208,178,252,219,247,5,95,239,109,251,191,237,75,255,0,11,3,81,143,64,138,195,198,201,121,170,218,11,161,119,18,207,168,202,10,76,170,177,182,221,236,209,186,237,202,224,175,241,125,237,191,45,113,104, 142,246,210,185,93,193,8,118,111,226,93,223,47,254,133,69,185,146,117,242,139,249,118,229,190,108,174,239,47,253,229,172,249,16,238,203,190,35,241,74,106,247,242,207,109,101,99,105,11,57,43,29,181,178,195,133,220,74,238,85,249,73,250,86,209,240,244,250, 86,154,247,51,196,39,8,248,141,163,43,36,76,203,243,110,255,0,119,229,101,255,0,123,229,254,42,231,181,53,182,134,235,44,200,99,143,11,18,33,221,230,42,244,102,60,109,13,255,0,125,86,167,130,175,239,110,62,213,99,99,36,137,109,120,143,20,133,160,121, 210,221,75,43,121,138,171,247,89,89,99,249,255,0,135,117,55,20,214,130,145,211,232,186,141,159,137,222,198,223,197,112,91,105,214,208,93,43,220,94,218,217,253,170,72,224,28,143,58,21,109,215,73,157,170,14,229,224,159,155,239,87,67,226,223,6,90,248,163, 75,213,36,211,90,236,106,22,144,199,116,130,212,127,104,90,73,31,205,242,199,44,106,210,68,223,47,221,155,238,182,229,93,223,45,99,120,87,207,210,52,123,6,23,86,182,179,90,134,183,189,138,102,251,52,144,199,36,155,188,185,28,124,203,183,254,3,242,252, 187,107,189,240,215,135,181,73,244,187,61,74,215,236,23,58,118,35,130,215,109,213,196,115,67,243,52,123,150,85,93,210,109,101,249,149,190,85,220,173,252,63,47,5,122,190,201,220,214,141,20,254,201,229,90,159,195,27,253,15,78,213,174,37,251,36,145,233, 196,71,44,75,43,121,214,187,182,237,184,219,183,253,90,179,42,255,0,192,171,91,226,207,140,52,223,19,55,134,147,195,171,170,195,166,104,250,68,118,182,246,154,140,191,104,251,41,13,185,191,121,252,81,179,52,140,171,187,229,86,85,249,118,215,89,241,199, 225,190,167,99,225,205,30,235,81,22,211,74,12,159,219,55,211,47,250,93,173,211,72,203,44,115,72,54,179,91,124,203,52,106,223,54,221,223,195,182,171,252,110,240,222,129,161,120,138,95,15,120,126,239,85,183,212,180,228,123,118,138,254,45,171,113,34,198, 173,12,191,50,252,170,235,183,106,175,252,244,93,213,188,113,42,92,178,248,139,149,55,21,99,115,195,191,8,180,255,0,26,248,195,193,54,246,183,30,30,100,38,214,226,125,42,79,18,155,117,91,123,135,103,102,146,227,203,251,71,238,209,100,51,237,86,146,8, 209,112,27,117,121,79,198,232,52,143,7,124,84,214,52,175,1,106,58,102,181,164,233,119,175,13,182,161,104,178,155,93,70,37,108,111,143,206,253,227,66,223,195,230,124,204,187,91,248,235,235,63,131,127,9,252,125,240,35,246,31,248,151,241,15,195,190,43,240, 29,182,153,227,255,0,6,163,94,232,87,176,172,250,132,186,83,106,31,101,142,248,51,178,253,134,237,166,105,26,211,230,102,145,68,156,110,85,11,240,230,161,114,111,117,25,188,227,26,60,179,55,204,27,229,30,191,240,31,246,171,90,79,218,55,33,74,30,206,10, 61,207,176,127,224,141,31,179,198,153,241,235,246,178,187,93,103,72,209,60,65,165,120,107,195,82,235,215,26,110,183,161,141,94,202,228,164,240,198,208,77,110,178,43,42,186,153,35,91,133,221,228,180,145,179,41,249,171,67,93,248,15,241,15,197,190,36,182, 240,191,236,217,225,253,127,195,255,0,103,181,213,109,53,189,26,43,184,69,214,153,119,109,127,52,119,54,151,23,153,85,145,76,109,111,181,164,147,18,46,253,197,150,189,199,254,9,125,251,52,252,98,253,143,63,102,95,138,223,17,109,60,35,115,103,169,252, 87,248,107,62,145,225,11,207,182,236,185,181,105,164,222,147,53,190,194,193,164,109,158,91,54,35,85,141,154,70,85,251,220,23,237,49,251,80,31,135,158,40,241,71,132,252,32,109,60,115,241,7,88,185,125,75,93,150,13,59,118,145,109,124,233,26,36,118,241,175, 207,125,51,51,91,175,152,203,183,230,143,111,221,242,235,199,198,215,156,230,225,65,115,62,159,221,183,86,254,103,165,135,143,178,167,239,104,125,75,255,0,4,211,253,155,45,63,99,207,19,66,126,63,233,63,11,124,103,172,106,186,116,55,22,30,31,153,23,88, 188,211,164,142,21,105,218,73,63,213,172,107,185,126,86,102,95,153,127,189,94,203,251,87,120,207,70,248,243,101,169,120,87,193,158,23,209,116,40,117,15,47,202,131,73,211,96,133,149,153,151,203,218,176,199,183,115,51,47,252,5,151,251,213,242,22,159,125, 163,124,31,241,189,255,0,128,181,13,86,251,81,155,194,126,29,255,0,132,219,227,63,137,165,184,17,234,26,170,90,237,145,52,59,83,30,229,142,38,184,149,32,104,227,249,118,188,191,51,59,49,173,189,51,226,14,175,227,239,217,239,193,190,56,95,19,201,105,175, 248,207,90,213,53,215,182,134,233,109,148,207,28,243,44,90,118,229,249,191,209,154,198,221,99,88,255,0,214,72,177,238,249,89,149,191,62,196,228,216,156,203,23,25,201,218,50,151,111,139,71,103,233,166,139,123,89,189,194,127,187,132,191,152,242,121,190, 20,218,248,186,237,211,226,109,214,152,250,187,47,239,68,246,202,209,205,183,110,230,254,31,187,230,47,251,75,187,119,221,173,61,71,225,190,173,225,79,0,207,161,124,41,212,97,211,91,84,179,146,195,88,130,222,40,213,181,91,104,238,26,226,218,15,46,101, 111,150,54,146,70,221,28,145,182,230,221,187,248,107,194,60,55,175,107,254,39,208,87,195,209,91,220,197,227,45,31,76,111,19,194,39,89,45,154,235,236,172,219,150,51,35,47,152,235,9,146,31,50,21,242,230,141,100,95,155,104,219,216,252,37,248,197,168,120, 147,65,211,229,55,118,183,222,25,212,247,71,103,44,229,100,125,34,231,239,53,141,215,241,70,187,91,116,50,125,214,93,187,89,126,85,171,196,229,57,134,84,165,60,45,73,114,175,179,111,201,125,230,49,138,159,47,153,231,158,56,248,25,14,181,174,91,89,235, 122,133,214,131,126,151,168,101,213,53,73,29,150,214,230,102,84,86,154,70,111,57,97,102,101,102,155,115,121,108,187,155,118,214,175,42,214,180,11,143,6,120,179,88,209,117,86,13,119,163,95,207,99,57,37,100,253,228,115,52,108,55,43,50,182,237,187,183,110, 249,176,173,252,85,245,215,137,245,237,74,222,210,230,219,199,118,54,186,238,135,26,200,211,125,177,87,237,16,195,185,86,77,222,103,205,38,214,101,86,86,249,151,229,109,204,191,53,124,141,227,13,58,223,195,223,21,188,65,167,105,22,226,222,198,11,214, 22,241,21,219,229,198,192,72,171,183,251,191,55,253,243,95,83,194,153,173,124,116,101,74,182,235,250,245,189,255,0,174,248,226,104,184,251,220,182,46,233,23,102,11,180,149,131,110,219,253,218,251,255,0,246,25,189,139,90,130,32,254,99,43,89,238,93,173, 253,214,220,171,187,254,249,175,207,147,112,214,242,110,25,175,170,127,98,95,27,127,96,182,216,165,158,67,229,237,142,22,143,238,175,241,55,252,5,126,106,250,204,92,121,160,115,83,151,44,207,219,15,217,215,81,58,175,195,25,173,173,149,99,63,234,247,110, 255,0,103,239,110,175,142,191,224,161,255,0,24,124,109,251,34,221,105,126,52,253,157,238,116,251,31,20,216,69,169,120,114,89,166,211,254,217,114,214,87,107,28,205,228,199,185,126,104,230,180,181,155,254,217,215,208,191,177,7,137,91,196,30,13,242,34,118, 86,181,157,102,127,149,127,125,31,240,237,255,0,199,107,200,191,224,165,159,5,124,73,241,187,251,51,225,255,0,194,91,75,93,74,227,198,190,46,176,211,110,237,174,154,72,98,184,180,249,175,36,95,182,70,222,101,158,223,177,110,243,151,119,202,172,187,91, 117,124,245,41,123,58,183,236,122,178,247,160,126,73,126,217,115,232,30,33,248,231,113,226,43,32,222,7,159,95,149,103,125,46,217,36,146,215,75,105,35,51,78,214,151,1,130,221,88,27,134,145,149,23,230,138,57,85,120,8,21,120,61,79,71,188,210,68,22,31,21, 225,134,216,216,64,100,211,175,237,36,91,152,146,37,254,24,255,0,134,72,21,164,203,67,185,90,61,219,151,27,128,175,175,60,55,240,120,254,211,254,42,190,240,255,0,236,186,154,122,248,115,199,77,169,107,80,203,170,197,53,189,151,136,14,144,209,207,111, 167,71,52,136,205,12,246,240,220,59,125,177,127,227,227,108,141,34,178,176,85,243,63,217,155,225,21,215,195,127,21,107,94,10,214,53,207,179,107,227,82,26,94,165,225,221,94,3,103,110,146,200,35,91,61,66,41,21,89,173,254,105,86,218,86,219,39,150,183,81, 73,36,109,109,187,111,169,74,183,181,135,247,143,50,165,55,23,239,30,33,240,255,0,80,143,89,188,154,221,175,180,88,38,134,55,117,142,109,66,77,63,237,18,127,207,24,214,120,228,95,51,251,177,182,221,223,222,175,68,211,181,93,14,215,64,150,79,16,253,191, 66,193,242,90,125,87,76,146,226,215,118,229,218,100,186,179,145,227,69,86,110,241,173,63,198,159,179,247,134,60,43,227,165,179,241,38,167,168,20,107,181,183,180,176,138,206,40,53,187,130,178,180,23,86,251,85,154,222,222,238,202,93,139,45,171,110,141, 151,107,66,219,126,85,236,127,100,183,188,208,53,171,221,30,230,43,93,47,87,240,202,92,72,247,215,34,75,120,100,249,188,153,35,155,248,173,89,90,77,173,187,206,143,115,124,202,181,228,99,234,209,195,167,42,145,243,243,254,191,174,229,80,195,202,171,143, 41,208,254,206,222,44,240,110,159,226,93,58,223,93,150,220,220,234,247,17,88,218,223,120,110,226,59,219,89,46,36,117,17,198,205,15,217,238,35,102,111,151,253,91,46,230,219,186,189,227,227,174,149,240,195,81,188,188,210,124,105,46,183,113,170,27,133,55, 218,46,169,103,246,123,167,104,188,182,255,0,83,121,181,153,151,114,183,247,190,101,109,191,54,234,241,219,191,217,102,243,82,241,85,171,120,65,116,143,11,120,178,7,101,48,248,130,8,97,211,245,239,144,180,145,174,163,110,173,107,52,222,95,221,134,120, 109,230,101,93,223,50,252,213,218,124,113,241,215,137,188,113,224,255,0,15,120,119,199,250,140,122,6,174,182,158,101,165,183,137,196,119,26,79,136,225,221,229,71,246,29,90,95,49,109,229,95,149,86,25,26,56,219,127,151,242,183,204,191,39,94,164,42,99,105, 206,131,146,140,187,107,255,0,7,230,159,173,149,207,168,203,169,184,80,169,10,208,252,215,203,183,222,77,161,254,213,127,2,225,211,215,254,71,217,188,185,127,113,2,90,193,182,31,239,124,205,27,55,222,219,94,121,241,187,227,151,192,31,140,115,219,63,139, 252,51,227,189,78,227,76,102,242,163,143,86,54,49,182,239,188,204,177,178,174,239,246,171,198,162,185,189,240,253,203,218,199,97,20,23,39,204,121,25,222,53,95,189,181,183,127,236,191,222,172,187,79,237,47,50,233,124,136,35,117,253,252,146,47,204,223, 123,238,237,219,95,91,65,85,94,244,35,248,191,243,60,106,149,35,205,105,114,159,82,248,123,254,10,55,224,191,11,207,29,198,153,224,189,122,121,33,95,45,91,251,91,247,159,119,111,222,254,47,150,180,117,63,248,43,55,133,4,242,172,31,10,175,37,191,155,114, 203,60,250,195,183,218,35,102,220,209,178,175,247,153,85,191,224,53,241,254,169,107,171,90,200,139,107,29,181,203,125,230,242,247,125,223,239,81,121,107,127,106,232,176,188,23,200,208,121,219,87,229,102,251,170,171,243,55,203,247,171,72,210,169,63,123, 148,95,91,140,116,137,244,213,215,252,20,119,74,154,246,105,116,239,134,90,70,152,179,73,185,183,106,55,127,240,47,151,109,108,127,195,125,252,55,211,44,54,233,158,24,241,111,218,167,79,46,118,77,71,201,134,69,254,37,109,210,110,219,255,0,178,215,202, 17,137,238,117,105,32,158,206,41,101,129,87,204,146,75,150,109,171,255,0,124,214,166,155,168,173,222,232,180,248,45,188,216,182,238,142,69,147,248,171,40,170,209,151,194,87,181,83,248,143,162,224,255,0,130,129,120,50,206,27,187,75,15,0,106,179,37,242, 42,207,17,241,11,254,251,254,186,109,251,213,203,106,255,0,31,254,24,234,254,46,183,215,111,126,3,233,23,90,173,169,142,72,46,174,53,139,169,26,54,143,230,93,191,43,125,214,249,171,201,47,180,251,219,27,75,203,196,123,105,74,178,179,42,196,222,126,223, 225,219,243,124,203,254,237,87,208,181,221,83,91,81,246,41,99,84,86,242,255,0,121,110,219,183,110,219,253,234,124,216,136,124,33,207,77,196,250,63,81,255,0,130,133,220,95,219,164,86,191,9,188,37,229,70,205,179,115,73,251,150,111,226,85,88,191,217,90, 230,181,31,219,179,197,254,32,154,85,183,240,191,133,35,242,246,171,127,160,252,170,202,191,237,55,247,107,198,252,109,37,239,135,116,79,182,93,222,44,235,4,141,28,209,193,20,113,180,95,47,241,127,123,248,126,106,167,29,149,196,58,43,54,157,123,47,239, 255,0,121,36,63,47,202,191,197,81,5,90,113,230,254,191,34,253,180,96,122,212,191,183,111,196,15,37,154,218,203,194,22,219,191,135,251,50,29,223,250,21,67,115,251,113,252,82,242,34,68,212,244,155,79,180,175,203,229,90,70,187,171,193,239,245,25,127,181, 173,32,181,178,255,0,71,190,218,158,103,157,247,126,86,221,252,63,238,215,89,31,195,245,145,98,184,243,103,101,85,249,87,205,111,149,127,188,181,172,168,207,226,50,250,194,132,185,78,230,231,246,183,248,178,165,222,31,19,188,108,223,197,18,199,255,0, 198,171,7,85,253,165,190,38,106,220,221,120,187,85,146,89,27,110,213,157,151,119,253,242,181,202,233,186,61,204,190,36,107,45,97,22,72,54,238,87,86,147,230,95,247,183,86,148,254,12,130,27,5,218,177,43,237,220,178,50,238,249,191,186,212,123,57,64,175, 110,231,240,200,249,179,193,190,8,214,60,87,226,219,29,63,64,178,184,146,238,250,101,134,13,235,242,134,218,78,119,127,117,85,89,191,221,90,250,87,225,132,115,120,99,246,108,178,214,117,173,126,125,39,77,155,92,141,52,109,114,206,100,146,75,25,45,163, 253,250,195,8,253,227,72,203,28,81,172,127,119,99,52,159,54,237,181,230,94,26,248,94,116,79,16,233,165,60,93,246,45,42,123,214,183,184,213,172,97,184,156,90,164,106,226,57,99,242,215,127,204,174,209,172,123,190,243,252,217,81,94,207,251,35,222,248,103, 225,247,196,123,200,191,106,239,13,203,119,225,157,115,67,212,52,139,43,27,113,31,219,109,77,194,195,29,175,155,181,151,116,112,170,200,205,26,178,183,153,38,239,155,248,125,12,101,122,120,152,71,146,87,254,188,206,124,44,221,2,47,7,254,222,62,34,248, 43,224,75,253,111,224,126,171,172,92,92,253,181,44,190,223,168,71,31,217,244,208,98,145,247,218,219,178,179,68,191,50,143,153,182,179,55,203,31,240,215,217,31,240,79,125,103,196,159,31,252,115,46,137,241,223,199,90,215,140,188,109,115,102,247,195,69, 181,210,225,251,46,146,119,170,238,188,190,183,141,68,210,175,153,31,238,99,101,88,252,205,173,189,185,95,205,79,139,209,75,117,9,240,255,0,131,110,245,185,210,218,242,105,87,69,138,54,104,229,59,124,193,41,142,62,146,44,106,187,129,254,21,222,187,112, 203,93,215,252,19,207,80,215,173,126,44,67,166,233,90,132,250,14,155,174,105,211,255,0,105,234,230,121,160,254,197,208,162,221,115,168,203,27,46,213,137,102,142,220,69,230,113,181,164,249,126,102,175,149,207,248,59,1,156,96,106,90,60,149,37,246,249,98, 231,247,202,58,124,172,123,121,86,113,39,93,71,18,165,56,118,187,178,249,92,251,183,246,165,212,33,248,237,15,196,31,132,94,20,214,180,205,118,235,193,250,55,151,168,234,23,119,10,223,217,243,92,204,208,69,13,170,174,230,145,149,190,105,62,109,171,31, 205,185,171,229,47,20,254,201,122,207,133,126,30,89,93,248,63,195,137,119,1,242,151,84,75,187,233,22,57,68,139,180,205,39,202,202,170,178,55,221,251,187,89,119,124,171,91,31,176,47,139,245,95,139,63,29,126,49,248,227,193,86,77,23,136,181,95,15,95,174, 151,118,194,31,177,248,90,41,176,194,233,149,134,214,104,45,160,72,150,53,31,51,5,221,181,79,153,95,93,222,204,158,8,248,101,241,93,188,98,108,19,66,248,117,111,165,217,207,114,242,173,226,234,17,220,105,214,178,74,172,171,254,179,107,92,43,54,221,203, 181,190,246,239,150,190,43,21,12,127,5,251,44,38,5,123,74,113,228,230,139,109,203,153,242,166,244,181,147,109,114,250,61,23,92,150,30,57,131,149,90,90,61,127,11,254,136,252,180,241,246,175,168,255,0,194,101,175,233,158,52,211,102,211,46,181,73,35,177, 146,27,136,214,107,141,26,210,57,246,204,176,242,219,89,138,183,221,234,177,157,191,43,45,125,21,224,57,116,239,138,62,51,240,221,215,135,172,52,173,43,69,209,111,245,169,38,190,111,222,205,172,199,118,179,197,106,36,140,198,165,101,183,178,107,84,88, 219,111,203,243,125,239,150,188,243,80,253,151,53,143,248,71,180,143,17,106,26,182,171,127,226,255,0,22,91,220,95,221,196,52,169,27,203,18,67,38,203,111,181,72,203,28,147,179,71,41,111,153,126,85,93,191,47,221,206,253,153,188,81,166,219,120,243,225,209, 241,12,58,100,22,49,106,150,54,119,87,208,94,8,222,1,61,200,137,154,225,88,110,243,21,101,105,55,125,221,177,255,0,180,181,250,221,10,180,241,113,94,202,95,15,110,251,30,109,58,106,155,147,169,31,120,247,255,0,217,95,199,250,254,179,241,70,95,136,159, 7,162,95,1,127,194,168,241,79,130,199,136,116,45,46,234,91,104,245,13,19,237,176,8,167,104,37,81,39,150,146,7,105,19,229,85,91,175,156,178,133,174,143,254,10,71,251,68,120,39,226,167,199,143,137,58,30,137,5,190,153,173,220,107,83,232,150,163,72,188,91, 200,245,155,107,123,137,36,91,189,66,54,218,177,172,145,180,106,190,92,158,100,139,39,204,171,228,43,87,158,124,10,210,239,190,1,126,208,127,21,124,61,226,251,187,61,79,75,248,179,225,175,21,252,55,146,234,21,102,143,253,30,85,137,110,221,182,249,106, 145,73,103,108,22,79,155,247,146,54,223,150,190,104,209,35,208,60,87,174,95,221,194,60,67,107,117,196,171,107,4,80,88,195,111,183,31,186,133,79,153,34,133,195,110,217,183,229,13,218,186,113,24,106,56,153,115,75,226,143,245,250,4,107,78,132,63,196,93, 241,71,130,180,29,255,0,106,241,20,30,48,158,222,35,186,88,34,185,177,132,34,29,199,203,183,109,211,121,96,51,103,107,28,253,238,172,213,137,97,121,224,210,130,201,60,51,226,219,232,55,249,144,193,113,173,198,134,2,253,84,170,197,180,238,249,119,54,221, 223,45,122,15,195,159,4,223,124,85,241,29,162,124,56,240,101,143,137,35,220,129,46,100,214,110,47,45,82,96,60,230,142,225,15,146,147,51,71,242,180,108,223,119,248,169,255,0,19,116,171,207,16,248,135,85,58,79,133,188,22,141,167,89,61,157,202,248,115,71, 134,194,8,167,223,181,81,63,124,251,164,109,191,52,139,247,87,255,0,30,193,227,35,78,94,194,82,247,189,109,250,254,103,44,169,181,15,104,119,31,6,190,9,104,87,31,0,117,47,28,104,218,71,134,161,185,208,188,87,29,132,55,154,214,167,52,137,12,80,233,102, 237,246,200,177,252,235,181,139,52,45,181,91,107,127,187,92,183,130,127,109,43,125,91,92,241,93,183,198,102,142,235,195,186,228,145,221,91,219,219,219,72,147,91,93,198,10,197,117,105,34,159,244,85,82,177,72,208,182,232,219,238,237,12,25,171,219,126,46, 120,71,92,248,51,251,11,120,139,194,122,54,161,28,182,119,186,202,221,222,64,32,134,217,38,120,236,45,210,127,221,199,243,47,205,229,175,151,187,254,61,214,53,251,204,213,240,5,207,136,38,135,81,35,89,183,249,151,134,81,242,214,120,120,82,204,35,38,149, 255,0,174,151,57,229,41,70,92,167,211,127,25,63,111,207,18,248,199,196,154,176,248,81,246,173,19,65,186,184,251,68,16,147,16,184,50,52,81,198,205,54,214,104,217,191,119,183,248,191,118,177,175,247,171,157,248,95,226,95,21,252,84,212,165,142,242,226,229, 182,254,254,243,108,82,76,211,71,252,94,119,150,203,186,63,250,102,187,86,188,143,75,189,209,110,246,253,174,248,169,31,124,56,201,30,187,119,109,255,0,199,107,223,254,23,124,42,180,210,60,33,127,172,89,201,54,32,141,90,95,177,220,249,51,6,219,242,172, 126,98,172,109,39,240,252,210,127,178,173,187,229,175,47,49,194,81,192,209,228,167,79,150,79,250,234,116,224,40,251,90,241,155,61,127,195,94,41,240,117,229,252,90,119,139,181,88,116,203,189,8,249,208,95,218,233,145,219,201,102,210,43,71,187,108,138,219, 87,108,141,27,121,138,202,219,171,234,235,45,39,89,248,135,103,240,215,83,248,125,113,166,248,195,90,240,141,206,159,119,123,38,173,59,88,253,174,230,194,85,251,30,165,107,53,190,239,46,230,75,47,244,107,152,228,86,138,117,142,45,170,155,159,63,8,120, 66,219,81,190,158,95,14,95,182,183,225,241,153,53,21,150,242,213,2,94,60,106,177,202,47,33,157,127,119,32,133,70,230,181,151,107,99,119,150,223,46,239,167,254,6,252,76,208,188,19,240,206,227,197,62,15,212,47,174,124,95,166,235,191,97,139,195,58,212,43, 111,182,193,173,54,202,209,200,205,182,105,35,146,72,228,141,163,109,190,92,138,173,28,114,47,205,241,25,174,27,48,203,35,25,101,245,172,214,252,214,107,242,211,228,215,223,99,217,160,225,140,171,58,181,190,19,191,255,0,130,138,254,205,150,58,167,140, 188,121,173,254,205,150,26,159,252,32,62,41,222,218,215,132,227,134,238,234,214,198,237,155,237,30,101,189,186,252,214,191,233,13,230,44,208,198,203,28,158,98,182,229,104,246,254,68,120,223,91,212,116,219,59,251,61,125,53,20,243,238,54,219,165,211,190, 235,127,47,229,145,118,183,221,109,223,43,47,202,203,252,75,243,87,235,167,194,15,219,134,219,196,126,24,209,116,175,31,95,189,204,55,18,221,182,157,61,226,172,55,18,72,173,228,75,246,118,93,172,210,71,39,202,210,71,243,125,213,145,107,131,253,191,127, 224,153,50,254,208,31,12,46,62,32,252,33,215,237,236,47,77,251,47,136,44,111,238,153,180,235,155,229,77,145,79,44,187,119,105,151,13,23,238,246,204,190,68,219,163,100,100,102,220,221,124,31,196,117,240,88,153,97,51,143,118,82,248,94,190,139,167,202,239, 201,29,217,158,14,158,46,140,101,129,247,163,31,235,250,71,228,212,26,76,183,9,186,52,44,145,237,243,100,7,229,143,117,107,199,164,173,163,195,115,110,145,221,188,139,39,153,252,74,191,195,247,107,127,198,159,7,188,83,240,247,88,187,208,252,99,162,106, 26,76,214,179,178,186,92,39,238,221,151,229,253,220,139,185,36,255,0,182,108,203,91,218,222,137,167,94,248,123,79,130,197,154,61,78,209,85,117,27,153,38,104,252,165,242,254,235,42,174,229,221,243,43,55,247,182,253,239,225,253,122,165,72,198,39,199,202, 50,230,229,145,200,120,107,68,107,233,147,236,59,36,105,23,247,146,74,187,150,6,251,181,31,139,52,8,244,221,57,34,178,219,61,196,159,52,155,126,101,139,254,5,91,223,100,255,0,132,99,195,130,238,105,35,120,181,230,142,224,198,168,223,105,179,249,155,134, 103,249,91,229,95,189,247,91,253,154,167,161,217,38,169,173,75,230,36,55,16,61,188,145,132,112,217,131,118,229,71,146,29,202,219,190,84,254,45,191,48,174,120,84,146,114,151,217,51,229,81,57,135,154,239,74,142,50,222,91,46,205,195,159,187,80,121,63,107, 129,165,220,152,147,170,179,124,213,234,247,62,5,209,124,75,170,44,0,234,222,28,240,245,170,25,46,117,13,90,209,102,153,79,203,27,37,186,66,170,178,54,224,219,97,102,220,216,221,242,253,214,143,198,118,191,11,60,41,112,240,120,45,117,159,16,38,205,230, 235,83,34,38,151,230,82,177,198,182,231,108,59,151,204,86,102,220,202,195,254,3,91,199,19,125,149,202,167,25,74,60,210,60,183,79,107,184,153,161,208,101,127,54,239,247,47,28,13,181,164,95,189,183,63,221,173,255,0,14,124,63,185,158,254,43,43,91,39,212, 111,101,101,118,91,51,231,45,184,111,148,137,89,126,85,219,252,75,184,99,114,252,213,216,124,53,253,150,188,87,241,163,225,247,136,252,93,224,45,58,194,219,195,250,13,244,86,179,61,205,226,174,199,152,238,72,163,221,134,153,150,63,222,72,223,195,24,221, 203,124,181,236,191,179,159,193,73,60,19,98,215,51,195,55,137,5,205,143,207,22,153,113,246,121,108,182,183,204,203,42,178,201,183,107,54,237,187,153,118,255,0,189,187,12,78,42,20,98,239,35,162,150,30,85,186,28,175,194,95,9,124,71,240,87,135,226,125,35, 77,213,180,223,13,121,147,21,188,150,63,177,126,242,79,155,116,138,159,188,86,218,172,171,230,127,123,229,249,126,239,71,240,83,198,177,106,30,48,214,180,189,78,57,117,235,141,94,72,90,123,153,127,227,229,110,188,197,253,242,255,0,10,170,237,220,223, 238,183,222,221,94,209,169,248,227,66,131,194,118,158,27,150,251,65,241,234,106,154,63,219,236,173,147,197,126,108,246,209,218,204,191,232,255,0,110,134,61,209,180,155,153,149,118,179,110,251,191,42,237,91,183,223,177,220,30,31,241,7,135,117,191,131, 218,244,122,103,134,141,204,214,247,49,106,94,103,218,173,54,180,44,176,220,67,39,239,33,146,79,49,86,63,225,147,107,55,202,173,181,190,91,31,138,143,189,237,163,203,205,253,122,254,134,179,192,82,114,247,78,55,198,159,23,239,254,10,248,122,234,95,27, 219,127,111,36,177,77,166,75,20,144,47,151,119,229,171,72,223,51,124,191,234,219,115,124,191,117,118,237,109,202,181,230,58,148,158,53,248,237,227,2,60,59,105,253,185,12,75,38,153,99,97,124,214,235,109,167,2,209,220,24,237,209,153,99,85,251,172,190,91, 124,205,31,205,187,109,125,157,226,127,134,81,222,124,43,187,183,213,151,78,186,146,222,209,174,44,227,146,218,63,45,127,119,181,155,106,253,239,151,230,102,221,230,46,223,154,184,125,111,224,6,151,4,87,73,240,177,237,110,53,43,139,40,117,88,45,167,93, 183,26,100,205,28,203,42,195,35,43,124,223,188,111,222,109,249,119,109,219,252,85,207,151,227,233,83,141,185,125,227,174,158,87,58,81,60,119,225,135,236,205,166,248,130,210,27,31,142,81,248,238,251,81,158,57,146,31,10,248,93,44,164,188,19,41,102,144, 221,44,223,55,217,219,229,111,57,36,239,34,199,247,85,155,231,255,0,136,191,15,63,225,87,106,242,171,127,102,152,68,241,220,62,153,166,95,60,203,107,19,6,62,77,197,226,170,149,145,83,106,176,219,150,220,178,127,122,190,210,248,27,105,170,233,254,10,182, 183,69,125,11,88,240,213,188,2,24,173,238,100,183,142,56,153,149,153,163,243,25,100,181,143,107,55,203,187,230,85,85,254,47,151,197,126,46,124,61,23,218,237,238,141,42,206,186,181,150,167,182,45,63,236,177,199,166,91,89,77,108,210,71,47,218,89,119,121, 255,0,106,125,170,172,205,30,62,111,245,155,107,211,195,99,31,180,148,37,177,205,58,41,68,249,74,254,246,242,237,82,202,47,54,27,127,57,165,134,204,72,202,129,155,174,213,111,188,219,118,252,212,255,0,15,248,82,227,90,214,99,211,172,150,204,221,204,221, 101,153,98,17,182,237,187,119,55,203,187,255,0,29,175,163,254,18,124,34,147,227,31,135,151,195,95,11,237,161,62,42,215,93,103,184,214,111,225,120,109,225,138,32,205,229,69,12,219,182,238,12,174,126,236,146,124,204,170,85,119,47,17,225,239,133,190,28, 240,166,189,47,134,254,42,62,153,160,234,26,103,218,172,47,110,230,185,154,107,118,45,14,235,125,70,54,80,190,100,30,100,107,26,198,173,243,125,161,89,191,137,107,217,134,33,74,240,95,17,205,42,110,62,241,231,26,135,134,237,224,177,211,3,73,3,205,230, 92,71,36,41,110,96,118,218,126,125,215,18,126,238,109,184,97,242,244,251,189,214,177,188,75,162,141,2,91,25,36,49,204,215,246,73,116,81,186,66,92,190,19,254,2,170,191,238,215,113,241,99,198,154,86,189,226,193,255,0,8,102,169,171,166,139,164,233,182,246, 90,106,106,236,183,55,17,69,179,100,241,249,104,190,92,59,87,126,35,206,118,170,252,204,216,198,223,237,17,224,141,103,225,94,161,111,225,255,0,31,233,75,99,171,90,104,49,90,63,157,52,83,53,212,19,121,119,86,119,113,180,108,202,222,100,18,131,185,91, 248,27,118,214,86,85,222,18,118,92,198,51,143,43,208,242,11,43,22,191,98,32,203,170,238,223,183,254,89,175,247,191,217,251,181,213,218,120,121,60,49,162,107,250,87,137,188,47,117,117,174,77,107,111,113,28,236,178,111,211,34,73,60,217,165,104,199,59,100, 129,227,249,138,252,170,193,184,221,154,196,190,215,238,190,206,218,106,94,31,236,231,184,91,179,16,111,221,200,254,90,174,237,202,187,155,229,249,127,246,93,213,189,226,79,136,50,120,158,218,208,248,70,208,104,205,111,165,88,233,151,193,46,55,190,161, 52,17,152,252,230,56,221,251,194,235,242,253,223,151,107,110,171,212,70,7,196,79,10,235,94,15,241,149,246,145,227,219,3,99,172,233,243,155,107,136,152,38,85,246,175,200,124,191,148,156,21,251,190,181,183,240,194,93,43,65,141,111,124,76,46,190,208,211, 72,130,24,174,100,140,220,64,97,220,194,79,39,247,177,171,54,197,89,23,114,243,38,229,249,106,111,135,43,225,155,95,16,105,95,240,155,182,161,178,73,158,215,82,17,129,4,48,66,206,177,176,143,203,86,119,101,14,210,55,221,221,183,106,182,230,171,183,158, 37,178,209,31,83,143,68,208,180,27,217,2,182,156,183,23,118,205,127,20,163,162,203,1,102,194,204,193,85,183,124,205,181,191,217,162,115,183,187,97,252,70,46,187,227,87,241,4,118,118,90,36,119,183,210,91,187,75,9,186,97,113,119,243,47,207,30,81,127,120, 187,147,204,221,94,135,224,111,20,107,154,255,0,132,165,211,244,213,132,199,46,151,230,77,13,236,50,40,181,137,164,85,134,104,164,109,171,26,171,159,190,187,149,149,219,229,109,181,193,120,47,226,94,185,224,75,75,235,15,15,107,90,206,135,5,211,43,95, 166,159,55,217,228,145,99,249,126,99,181,91,119,252,9,107,162,248,115,99,226,47,136,86,179,201,164,120,93,188,65,103,167,68,241,173,193,2,205,225,194,153,21,124,240,203,25,104,213,89,150,223,248,148,179,109,101,21,207,93,71,145,202,81,209,27,81,187,118, 137,216,235,127,18,142,149,171,217,94,75,33,177,137,100,153,90,21,187,254,208,142,57,35,109,191,50,252,171,39,152,202,172,173,243,109,93,223,238,215,158,248,131,226,165,175,217,103,182,185,123,141,113,204,119,1,111,30,118,13,28,187,127,209,158,24,219, 152,68,3,43,212,22,83,183,27,99,90,127,139,62,36,75,173,124,63,135,76,155,77,182,84,211,218,70,142,230,83,186,229,97,146,53,85,93,235,183,114,252,187,182,237,254,42,199,248,31,166,92,107,159,26,124,45,105,166,233,246,218,132,151,26,165,180,66,194,120, 247,71,118,175,50,163,195,39,31,50,178,51,238,255,0,103,119,165,24,90,73,70,242,136,58,146,153,219,234,63,23,47,60,41,251,53,203,224,152,173,109,160,26,158,162,46,181,25,166,185,115,120,100,134,95,54,52,242,223,238,195,137,33,249,126,95,153,89,191,141, 171,204,254,27,232,178,248,163,199,218,116,86,182,9,168,5,153,102,123,87,86,40,209,70,124,199,86,17,252,219,10,43,6,111,246,171,233,63,138,31,179,44,63,19,62,35,107,211,233,13,97,170,106,154,45,165,199,218,52,139,43,226,186,182,185,109,107,230,36,119, 246,81,48,219,49,91,120,227,105,23,141,205,111,38,212,102,146,188,59,194,86,254,42,240,151,130,37,213,244,41,110,244,253,26,210,82,98,189,14,109,132,237,43,249,44,32,147,104,105,129,104,151,114,169,101,0,124,195,239,86,209,146,148,111,18,220,28,101,239, 31,171,63,21,126,37,234,254,47,253,156,124,59,251,51,254,200,250,125,228,254,48,93,91,74,213,60,123,175,189,254,248,52,104,47,46,110,238,226,209,214,105,25,154,63,47,101,173,186,199,181,149,163,219,27,110,249,171,227,159,134,31,2,124,79,240,255,0,198, 218,193,248,117,169,248,94,211,95,240,158,177,47,134,173,230,107,227,115,169,95,235,12,235,63,149,167,226,37,89,228,137,163,128,198,211,52,126,76,137,186,65,181,120,209,255,0,130,58,254,208,26,206,135,241,166,243,194,118,183,54,49,201,241,22,251,73,148, 106,58,172,251,84,203,165,234,39,84,151,230,255,0,158,146,66,183,72,172,223,242,213,211,119,222,174,15,246,240,209,225,248,105,251,81,124,101,240,223,136,111,117,73,244,251,31,136,250,165,236,26,111,218,119,90,55,155,43,186,200,87,115,98,86,89,18,54, 145,148,182,205,171,244,242,36,165,10,238,135,75,39,231,123,235,250,29,241,170,167,239,179,153,241,7,237,49,45,151,194,79,24,120,127,194,118,179,13,75,199,154,212,23,186,253,213,204,77,54,200,172,167,121,237,160,142,119,102,109,173,115,36,215,19,200, 223,51,55,150,187,155,230,101,238,252,45,241,3,194,183,233,166,71,127,113,171,93,248,99,192,30,24,214,117,139,136,39,182,88,22,41,102,100,123,43,56,252,175,151,113,189,54,242,180,139,213,215,239,124,141,95,56,232,119,55,122,130,106,50,89,155,155,91,89, 109,39,137,146,218,79,42,24,97,102,79,51,112,254,56,215,43,186,63,188,223,47,165,122,38,191,226,178,62,31,105,126,12,240,33,109,107,81,241,142,143,100,186,140,112,233,174,183,31,105,23,242,78,240,47,221,86,242,214,8,85,155,230,243,24,43,101,118,181,122, 50,166,155,143,145,231,212,151,52,164,207,39,215,126,40,248,131,91,104,87,82,213,174,238,5,163,177,135,231,249,96,37,74,145,16,235,26,252,205,133,93,170,187,142,213,90,194,183,150,91,117,15,25,149,17,193,140,176,206,24,119,95,66,61,170,254,181,109,99, 109,171,249,122,51,93,172,1,17,95,237,49,133,117,125,163,127,203,253,221,217,199,124,98,156,154,13,205,215,134,222,226,221,174,30,59,105,55,152,68,114,50,199,27,15,154,124,227,104,92,160,86,63,238,215,114,181,140,110,207,98,248,9,251,67,107,186,239,137, 175,60,43,227,253,125,206,153,226,251,104,236,13,206,165,31,218,154,198,242,56,89,108,110,227,127,188,172,146,44,113,238,221,243,70,251,100,44,170,43,137,211,238,103,190,241,5,211,234,170,209,92,153,24,205,20,139,177,145,199,14,158,219,74,178,255,0,186, 181,197,233,129,209,190,80,169,38,238,25,242,187,88,99,110,210,62,227,123,215,165,120,143,64,211,180,93,127,79,95,15,191,136,8,190,211,98,186,185,93,98,209,32,157,103,147,119,42,209,179,44,208,178,237,101,155,239,55,205,187,238,215,47,178,165,74,119, 167,27,73,149,42,147,154,179,145,59,57,218,187,250,87,189,254,197,186,132,35,196,55,63,218,101,90,56,81,91,102,239,245,155,155,229,255,0,129,87,207,204,227,248,191,138,189,27,246,118,214,147,76,215,46,87,123,47,154,170,191,55,240,183,205,90,78,60,240, 51,234,126,218,255,0,193,59,188,67,22,173,166,235,13,103,187,110,35,194,36,123,188,182,93,203,183,119,252,6,163,255,0,130,138,235,250,167,132,254,6,248,223,95,240,86,181,169,104,250,254,153,167,219,106,118,215,22,44,171,52,59,127,117,44,123,155,238,172, 145,205,36,108,223,123,108,141,183,230,218,213,230,31,240,76,175,30,206,117,248,109,173,164,142,17,117,28,49,203,108,203,243,72,170,191,195,255,0,197,87,189,254,221,62,17,183,241,223,194,189,122,217,85,188,173,111,195,215,182,206,203,242,238,101,143, 114,183,253,244,181,243,127,194,173,204,122,212,229,207,3,242,223,224,87,193,111,17,252,76,248,110,7,134,100,191,210,116,255,0,6,235,87,88,157,38,88,236,237,180,155,171,56,237,103,85,143,238,183,152,203,228,237,255,0,101,126,93,223,45,115,255,0,183,47, 236,228,60,25,103,162,248,146,255,0,196,86,62,35,187,211,136,240,254,159,169,92,93,249,151,30,37,210,173,237,86,226,9,174,227,111,153,90,77,58,225,173,217,151,229,147,200,102,95,238,175,209,95,176,191,196,205,47,64,248,98,254,9,212,228,89,181,239,27, 105,119,48,199,115,37,183,218,35,183,251,68,159,108,182,142,101,95,150,73,33,88,87,114,238,95,188,223,55,205,181,118,127,108,31,139,9,251,64,234,58,55,194,159,133,255,0,15,108,175,93,172,237,182,155,43,111,181,53,132,150,214,159,100,95,179,199,26,171, 109,88,89,153,99,254,29,213,230,67,55,182,35,217,194,93,222,229,209,195,70,165,55,42,135,202,190,37,248,113,171,235,254,0,188,131,92,178,181,185,187,215,229,93,95,73,214,150,73,102,185,178,187,130,72,214,125,10,242,242,77,178,53,212,42,208,181,189,196, 141,251,232,110,23,230,104,228,102,90,31,15,252,89,7,130,53,221,71,89,30,31,125,102,56,85,99,214,173,111,32,145,154,238,25,163,242,228,242,230,251,202,205,185,151,108,159,123,229,86,254,22,95,127,240,159,236,159,241,67,72,254,208,211,46,190,31,248,182, 254,214,234,217,109,39,177,188,180,127,178,78,203,109,246,117,186,242,217,149,86,225,97,218,190,103,222,219,28,127,221,90,185,101,251,1,252,77,210,116,227,45,231,195,127,24,202,151,182,141,97,60,247,46,187,164,89,25,100,219,254,179,230,253,228,106,219, 171,162,181,53,138,148,101,85,171,125,171,59,124,247,239,243,70,84,229,10,14,92,159,145,243,190,189,173,106,223,11,237,245,13,14,206,230,254,231,67,241,38,145,111,60,45,43,126,231,89,180,101,89,32,146,69,254,22,93,187,163,147,239,70,202,219,89,126,235, 115,183,255,0,16,245,61,79,76,26,103,138,37,93,78,203,203,111,157,147,247,242,127,179,39,205,182,70,249,155,107,109,221,247,183,51,87,213,87,63,240,78,31,139,62,50,240,237,157,186,252,58,189,142,43,37,146,59,55,150,238,222,54,88,100,109,205,27,110,155, 230,143,118,230,95,238,238,111,239,85,107,47,248,36,79,197,155,223,221,31,7,105,173,229,170,238,221,168,193,242,238,251,191,197,79,253,146,143,36,95,43,148,126,214,133,123,122,242,114,248,185,95,217,62,63,176,255,0,66,109,147,66,178,65,36,107,28,139, 242,179,71,254,247,251,63,195,87,116,59,40,180,187,216,38,141,224,158,222,88,155,204,249,190,101,111,225,255,0,121,126,106,250,151,193,95,240,72,223,139,26,214,185,12,135,79,240,149,172,49,179,43,125,179,83,219,243,124,203,243,109,141,171,208,135,252, 17,235,226,60,54,76,243,94,120,30,213,213,183,54,219,233,155,255,0,65,134,187,41,99,232,243,114,243,254,103,60,232,207,254,125,159,8,89,172,118,83,199,44,12,177,202,241,249,123,153,91,203,111,153,190,235,127,179,187,254,5,94,229,251,7,248,127,192,122, 127,140,38,241,15,197,205,70,231,81,210,111,35,191,240,204,250,45,143,134,111,117,123,201,36,188,134,63,244,191,244,111,221,217,52,63,54,214,147,115,55,239,54,170,253,234,250,43,193,95,240,72,159,19,107,254,45,211,161,241,174,191,225,168,244,239,181, 67,246,207,178,153,154,102,131,119,239,22,63,149,118,179,46,229,86,254,29,219,171,245,19,225,239,195,191,13,252,58,208,108,244,207,4,104,250,126,149,167,88,175,151,28,22,145,42,199,183,238,255,0,15,222,249,127,138,178,199,102,144,131,140,41,235,205,242, 43,11,129,157,89,115,75,161,252,233,63,134,237,33,241,181,236,16,204,151,246,179,198,170,179,196,172,171,51,47,221,145,127,187,187,239,109,171,186,55,195,228,210,38,158,120,209,89,229,101,102,101,111,149,190,93,191,240,31,150,188,219,246,189,241,6,167, 240,247,246,149,241,183,135,126,209,62,159,39,135,117,187,221,36,69,26,121,72,177,195,117,34,197,255,0,125,67,228,183,252,10,188,206,227,226,94,167,31,203,46,181,169,43,237,251,170,237,181,191,224,75,94,173,60,36,165,24,203,152,120,142,88,206,81,62,186, 109,59,77,254,195,255,0,79,93,183,17,71,181,126,85,86,255,0,190,191,246,86,174,53,237,52,109,18,209,224,179,123,101,136,47,250,181,117,249,127,189,95,52,205,227,235,169,246,239,212,239,101,111,226,86,149,170,187,120,203,231,86,154,75,183,101,254,244, 149,209,245,110,121,115,57,126,7,63,61,56,71,148,250,141,180,91,127,21,219,178,120,111,200,99,52,109,230,110,101,88,228,85,251,219,153,190,86,165,241,7,130,31,192,254,13,77,95,94,104,23,77,154,86,183,89,98,157,102,221,54,223,245,109,183,238,253,218,242, 159,129,94,41,125,127,79,184,134,121,102,104,237,25,155,203,222,219,91,119,222,109,181,235,31,240,80,123,111,17,94,252,25,248,43,226,143,26,235,19,235,79,170,232,154,134,157,45,196,86,246,240,133,251,45,234,172,16,179,66,170,178,52,112,201,181,89,191, 121,183,248,190,245,112,82,148,85,127,99,40,155,242,243,71,154,50,56,109,99,198,30,28,42,207,101,115,22,229,254,21,254,42,91,95,143,154,77,138,109,116,157,182,253,221,170,187,107,192,174,53,81,31,27,37,118,111,159,230,106,170,151,174,110,15,239,118,174, 239,226,175,66,158,18,17,251,71,44,170,115,253,147,232,11,223,143,58,52,219,154,214,206,229,89,155,119,222,85,249,170,199,135,62,38,219,120,150,230,72,45,215,202,111,189,186,70,175,158,191,180,103,73,23,200,149,127,221,90,234,190,16,248,154,91,63,22, 199,29,212,155,99,149,118,252,223,195,83,95,13,24,211,230,167,241,23,74,167,217,145,255,217,0,0 }; const char* portmeirion_jpg = (const char*) temp_binary_data_6; //================== teapot.obj ================== static const unsigned char temp_binary_data_7[] = { 35,32,77,97,120,50,79,98,106,32,86,101,114,115,105,111,110,32,52,46,48,32,77,97,114,32,49,48,116,104,44,32,50,48,48,49,10,35,10,35,32,111,98,106,101,99,116,32,84,101,97,112,111,116,48,49,32,116,111,32,99,111,109,101,32,46,46,46,10,35,10,118,32,32,53, 46,57,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,53,46,56,51,50,48,51,49,32,52,46,52,57,52,49,52,49,32,48,46,48,48,48,48,48,48,10,118,32,32,53,46,57,52,53,51,49,51,32,52,46,54,49,55,49,56,56,32,48,46,48,48,48,48, 48,48,10,118,32,32,54,46,49,55,53,55,56,49,32,52,46,52,57,52,49,52,49,32,48,46,48,48,48,48,48,48,10,118,32,32,54,46,52,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,53,46,51,56,55,49,56,56,32,52,46,49,50,53,48,48,48, 32,50,46,55,52,55,53,48,48,10,118,32,32,53,46,50,57,55,49,48,48,32,52,46,52,57,52,49,52,49,32,50,46,55,48,57,49,55,48,10,118,32,32,53,46,52,48,49,54,48,50,32,52,46,54,49,55,49,56,56,32,50,46,55,53,51,54,51,51,10,118,32,32,53,46,54,49,52,50,48,57,32,52, 46,52,57,52,49,52,49,32,50,46,56,52,52,48,57,50,10,118,32,32,53,46,56,52,56,52,51,55,32,52,46,49,50,53,48,48,48,32,50,46,57,52,51,55,53,48,10,118,32,32,51,46,56,57,57,54,56,56,32,52,46,49,50,53,48,48,48,32,52,46,57,55,48,48,48,48,10,118,32,32,51,46,56, 51,48,51,53,50,32,52,46,52,57,52,49,52,49,32,52,46,57,48,48,54,54,52,10,118,32,32,51,46,57,49,48,55,56,50,32,52,46,54,49,55,49,56,56,32,52,46,57,56,49,48,57,52,10,118,32,32,52,46,48,55,52,52,49,52,32,52,46,52,57,52,49,52,49,32,53,46,49,52,52,55,50,55, 10,118,32,32,52,46,50,53,52,54,56,55,32,52,46,49,50,53,48,48,48,32,53,46,51,50,53,48,48,48,10,118,32,32,49,46,54,55,55,49,56,56,32,52,46,49,50,53,48,48,48,32,54,46,52,53,55,53,48,48,10,118,32,32,49,46,54,51,56,56,53,56,32,52,46,52,57,52,49,52,49,32,54, 46,51,54,55,52,49,50,10,118,32,32,49,46,54,56,51,51,50,48,32,52,46,54,49,55,49,56,56,32,54,46,52,55,49,57,49,52,10,118,32,32,49,46,55,55,51,55,56,48,32,52,46,52,57,52,49,52,49,32,54,46,54,56,52,53,50,50,10,118,32,32,49,46,56,55,51,52,51,56,32,52,46,49, 50,53,48,48,48,32,54,46,57,49,56,55,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,49,50,53,48,48,48,32,55,46,48,48,48,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,52,57,52,49,52,49,32,54,46,57,48,50,51,52,52,10,118,32,32,45,49,46, 48,55,48,51,49,50,32,52,46,54,49,55,49,56,56,32,55,46,48,49,53,54,50,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,52,57,52,49,52,49,32,55,46,50,52,54,48,57,52,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,49,50,53,48,48,48,32,55,46,53,48,48, 48,48,48,10,118,32,32,45,52,46,48,48,55,54,53,54,32,52,46,49,50,53,48,48,48,32,54,46,52,53,55,53,48,48,10,118,32,32,45,51,46,56,53,57,53,55,50,32,52,46,52,57,52,49,52,49,32,54,46,51,54,55,52,49,50,10,118,32,32,45,51,46,56,52,55,54,55,54,32,52,46,54,49, 55,49,56,56,32,54,46,52,55,49,57,49,52,10,118,32,32,45,51,46,57,49,55,51,55,49,32,52,46,52,57,52,49,52,49,32,54,46,54,56,52,53,50,50,10,118,32,32,45,52,46,48,49,52,48,54,50,32,52,46,49,50,53,48,48,48,32,54,46,57,49,56,55,53,48,10,118,32,32,45,54,46,50, 48,57,48,54,51,32,52,46,49,50,53,48,48,48,32,52,46,57,55,48,48,48,48,10,118,32,32,45,54,46,48,52,50,49,54,56,32,52,46,52,57,52,49,52,49,32,52,46,57,48,48,54,54,52,10,118,32,32,45,54,46,48,55,50,53,48,48,32,52,46,54,49,55,49,56,56,32,52,46,57,56,49,48, 57,52,10,118,32,32,45,54,46,50,49,55,54,55,53,32,52,46,52,57,52,49,52,49,32,53,46,49,52,52,55,50,55,10,118,32,32,45,54,46,51,57,53,51,49,50,32,52,46,49,50,53,48,48,48,32,53,46,51,50,53,48,48,48,10,118,32,32,45,55,46,53,57,49,48,57,51,32,52,46,49,50,53, 48,48,48,32,50,46,55,52,55,53,48,48,10,118,32,32,45,55,46,52,54,52,52,50,49,32,52,46,52,57,52,49,52,49,32,50,46,55,48,57,49,55,48,10,118,32,32,45,55,46,53,53,48,49,51,55,32,52,46,54,49,55,49,56,56,32,50,46,55,53,51,54,51,51,10,118,32,32,45,55,46,55,53, 53,56,50,50,32,52,46,52,57,52,49,52,49,32,50,46,56,52,52,48,57,50,10,118,32,32,45,55,46,57,56,57,48,54,50,32,52,46,49,50,53,48,48,48,32,50,46,57,52,51,55,53,48,10,118,32,32,45,56,46,48,55,48,51,49,51,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,32,32,45,55,46,57,55,50,54,53,54,32,52,46,52,57,52,49,52,49,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,48,56,53,57,51,56,32,52,46,54,49,55,49,56,56,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,51,49,54,52,48,54,32,52,46,52,57,52,49, 52,49,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,53,55,48,51,49,51,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,55,46,53,50,55,56,49,50,32,52,46,49,50,53,48,48,48,32,45,50,46,55,52,55,53,48,48,10,118,32,32,45,55,46,52,51, 55,55,50,52,32,52,46,52,57,52,49,52,49,32,45,50,46,55,48,57,49,55,48,10,118,32,32,45,55,46,53,52,50,50,50,55,32,52,46,54,49,55,49,56,56,32,45,50,46,55,53,51,54,51,51,10,118,32,32,45,55,46,55,53,52,56,51,52,32,52,46,52,57,52,49,52,49,32,45,50,46,56,52, 52,48,57,50,10,118,32,32,45,55,46,57,56,57,48,54,50,32,52,46,49,50,53,48,48,48,32,45,50,46,57,52,51,55,53,48,10,118,32,32,45,54,46,48,52,48,51,49,50,32,52,46,49,50,53,48,48,48,32,45,52,46,57,55,48,48,48,48,10,118,32,32,45,53,46,57,55,48,57,55,55,32,52, 46,52,57,52,49,52,49,32,45,52,46,57,48,48,54,54,52,10,118,32,32,45,54,46,48,53,49,52,48,54,32,52,46,54,49,55,49,56,56,32,45,52,46,57,56,49,48,57,52,10,118,32,32,45,54,46,50,49,53,48,51,57,32,52,46,52,57,52,49,52,49,32,45,53,46,49,52,52,55,50,55,10,118, 32,32,45,54,46,51,57,53,51,49,50,32,52,46,49,50,53,48,48,48,32,45,53,46,51,50,53,48,48,48,10,118,32,32,45,51,46,56,49,55,56,49,50,32,52,46,49,50,53,48,48,48,32,45,54,46,52,53,55,53,48,48,10,118,32,32,45,51,46,55,55,57,52,56,50,32,52,46,52,57,52,49,52, 49,32,45,54,46,51,54,55,52,49,50,10,118,32,32,45,51,46,56,50,51,57,52,53,32,52,46,54,49,55,49,56,56,32,45,54,46,52,55,49,57,49,52,10,118,32,32,45,51,46,57,49,52,52,48,52,32,52,46,52,57,52,49,52,49,32,45,54,46,54,56,52,53,50,50,10,118,32,32,45,52,46,48, 49,52,48,54,50,32,52,46,49,50,53,48,48,48,32,45,54,46,57,49,56,55,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,49,50,53,48,48,48,32,45,55,46,48,48,48,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,52,57,52,49,52,49,32,45,54,46,57, 48,50,51,52,52,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,54,49,55,49,56,56,32,45,55,46,48,49,53,54,50,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,52,57,52,49,52,49,32,45,55,46,50,52,54,48,57,52,10,118,32,32,45,49,46,48,55,48,51,49,50,32, 52,46,49,50,53,48,48,48,32,45,55,46,53,48,48,48,48,48,10,118,32,32,49,46,54,55,55,49,56,56,32,52,46,49,50,53,48,48,48,32,45,54,46,52,53,55,53,48,48,10,118,32,32,49,46,54,51,56,56,53,56,32,52,46,52,57,52,49,52,49,32,45,54,46,51,54,55,52,49,50,10,118,32, 32,49,46,54,56,51,51,50,48,32,52,46,54,49,55,49,56,56,32,45,54,46,52,55,49,57,49,52,10,118,32,32,49,46,55,55,51,55,56,48,32,52,46,52,57,52,49,52,49,32,45,54,46,54,56,52,53,50,50,10,118,32,32,49,46,56,55,51,52,51,56,32,52,46,49,50,53,48,48,48,32,45,54, 46,57,49,56,55,53,48,10,118,32,32,51,46,56,57,57,54,56,56,32,52,46,49,50,53,48,48,48,32,45,52,46,57,55,48,48,48,48,10,118,32,32,51,46,56,51,48,51,53,50,32,52,46,52,57,52,49,52,49,32,45,52,46,57,48,48,54,54,52,10,118,32,32,51,46,57,49,48,55,56,50,32,52, 46,54,49,55,49,56,56,32,45,52,46,57,56,49,48,57,52,10,118,32,32,52,46,48,55,52,52,49,52,32,52,46,52,57,52,49,52,49,32,45,53,46,49,52,52,55,50,55,10,118,32,32,52,46,50,53,52,54,56,55,32,52,46,49,50,53,48,48,48,32,45,53,46,51,50,53,48,48,48,10,118,32,32, 53,46,51,56,55,49,56,56,32,52,46,49,50,53,48,48,48,32,45,50,46,55,52,55,53,48,48,10,118,32,32,53,46,50,57,55,49,48,48,32,52,46,52,57,52,49,52,49,32,45,50,46,55,48,57,49,55,48,10,118,32,32,53,46,52,48,49,54,48,50,32,52,46,54,49,55,49,56,56,32,45,50,46, 55,53,51,54,51,51,10,118,32,32,53,46,54,49,52,50,48,57,32,52,46,52,57,52,49,52,49,32,45,50,46,56,52,52,48,57,50,10,118,32,32,53,46,56,52,56,52,51,55,32,52,46,49,50,53,48,48,48,32,45,50,46,57,52,51,55,53,48,10,118,32,32,55,46,51,52,55,54,53,54,32,50,46, 49,54,50,49,48,57,32,48,46,48,48,48,48,48,48,10,118,32,32,56,46,49,52,56,52,51,56,32,48,46,50,51,52,51,55,53,32,48,46,48,48,48,48,48,48,10,118,32,32,56,46,55,49,52,56,52,52,32,45,49,46,54,50,51,48,52,55,32,48,46,48,48,48,48,48,48,10,118,32,32,56,46,57, 50,57,54,56,56,32,45,51,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,54,46,54,57,53,50,54,52,32,50,46,49,54,50,49,48,57,32,51,46,51,48,52,48,53,51,10,118,32,32,55,46,52,51,51,57,56,53,32,48,46,50,51,52,51,55,53,32,51,46,54,49,56,51,54, 48,10,118,32,32,55,46,57,53,54,52,57,52,32,45,49,46,54,50,51,48,52,55,32,51,46,56,52,48,54,55,52,10,118,32,32,56,46,49,53,52,54,56,56,32,45,51,46,51,55,53,48,48,48,32,51,46,57,50,53,48,48,48,10,118,32,32,52,46,57,48,54,52,52,54,32,50,46,49,54,50,49,48, 57,32,53,46,57,55,54,55,53,56,10,118,32,32,53,46,52,55,53,48,48,48,32,48,46,50,51,52,51,55,53,32,54,46,53,52,53,51,49,50,10,118,32,32,53,46,56,55,55,49,52,57,32,45,49,46,54,50,51,48,52,55,32,54,46,57,52,55,52,54,49,10,118,32,32,54,46,48,50,57,54,56,56, 32,45,51,46,51,55,53,48,48,48,32,55,46,49,48,48,48,48,48,10,118,32,32,50,46,50,51,51,55,52,48,32,50,46,49,54,50,49,48,57,32,55,46,55,54,53,53,55,54,10,118,32,32,50,46,53,52,56,48,52,55,32,48,46,50,51,52,51,55,53,32,56,46,53,48,52,50,57,55,10,118,32,32, 50,46,55,55,48,51,54,50,32,45,49,46,54,50,51,48,52,55,32,57,46,48,50,54,56,48,55,10,118,32,32,50,46,56,53,52,54,56,56,32,45,51,46,51,55,53,48,48,48,32,57,46,50,50,53,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,50,46,49,54,50,49,48,57,32,56,46, 52,49,55,57,54,57,10,118,32,32,45,49,46,48,55,48,51,49,50,32,48,46,50,51,52,51,55,53,32,57,46,50,49,56,55,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,49,46,54,50,51,48,52,55,32,57,46,55,56,53,49,53,54,10,118,32,32,45,49,46,48,55,48,51,49,50,32, 45,51,46,51,55,53,48,48,48,32,49,48,46,48,48,48,48,48,48,10,118,32,32,45,52,46,51,55,52,51,54,53,32,50,46,49,54,50,49,48,57,32,55,46,55,54,53,53,55,54,10,118,32,32,45,52,46,54,56,56,54,55,50,32,48,46,50,51,52,51,55,53,32,56,46,53,48,52,50,57,55,10,118, 32,32,45,52,46,57,49,48,57,56,54,32,45,49,46,54,50,51,48,52,55,32,57,46,48,50,54,56,48,55,10,118,32,32,45,52,46,57,57,53,51,49,51,32,45,51,46,51,55,53,48,48,48,32,57,46,50,50,53,48,48,48,10,118,32,32,45,55,46,48,52,55,48,55,49,32,50,46,49,54,50,49,48, 57,32,53,46,57,55,54,55,53,56,10,118,32,32,45,55,46,54,49,53,54,50,52,32,48,46,50,51,52,51,55,53,32,54,46,53,52,53,51,49,50,10,118,32,32,45,56,46,48,49,55,55,55,51,32,45,49,46,54,50,51,48,52,55,32,54,46,57,52,55,52,54,49,10,118,32,32,45,56,46,49,55,48, 51,49,50,32,45,51,46,51,55,53,48,48,48,32,55,46,49,48,48,48,48,48,10,118,32,32,45,56,46,56,51,53,56,56,57,32,50,46,49,54,50,49,48,57,32,51,46,51,48,52,48,53,51,10,118,32,32,45,57,46,53,55,52,54,49,48,32,48,46,50,51,52,51,55,53,32,51,46,54,49,56,51,54, 48,10,118,32,32,45,49,48,46,48,57,55,49,49,57,32,45,49,46,54,50,51,48,52,55,32,51,46,56,52,48,54,55,52,10,118,32,32,45,49,48,46,50,57,53,51,49,51,32,45,51,46,51,55,53,48,48,48,32,51,46,57,50,53,48,48,48,10,118,32,32,45,57,46,52,56,56,50,56,49,32,50,46, 49,54,50,49,48,57,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,48,46,50,56,57,48,54,51,32,48,46,50,51,52,51,55,53,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,48,46,56,53,53,52,54,57,32,45,49,46,54,50,51,48,52,55,32,48,46,48,48,48,48,48,48,10,118,32, 32,45,49,49,46,48,55,48,51,49,51,32,45,51,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,56,51,53,56,56,57,32,50,46,49,54,50,49,48,57,32,45,51,46,51,48,52,48,53,51,10,118,32,32,45,57,46,53,55,52,54,49,48,32,48,46,50,51,52,51,55, 53,32,45,51,46,54,49,56,51,54,48,10,118,32,32,45,49,48,46,48,57,55,49,49,57,32,45,49,46,54,50,51,48,52,55,32,45,51,46,56,52,48,54,55,52,10,118,32,32,45,49,48,46,50,57,53,51,49,51,32,45,51,46,51,55,53,48,48,48,32,45,51,46,57,50,53,48,48,48,10,118,32,32, 45,55,46,48,52,55,48,55,49,32,50,46,49,54,50,49,48,57,32,45,53,46,57,55,54,55,53,56,10,118,32,32,45,55,46,54,49,53,54,50,52,32,48,46,50,51,52,51,55,53,32,45,54,46,53,52,53,51,49,50,10,118,32,32,45,56,46,48,49,55,55,55,51,32,45,49,46,54,50,51,48,52,55, 32,45,54,46,57,52,55,52,54,49,10,118,32,32,45,56,46,49,55,48,51,49,50,32,45,51,46,51,55,53,48,48,48,32,45,55,46,49,48,48,48,48,48,10,118,32,32,45,52,46,51,55,52,51,54,53,32,50,46,49,54,50,49,48,57,32,45,55,46,55,54,53,53,55,54,10,118,32,32,45,52,46,54, 56,56,54,55,50,32,48,46,50,51,52,51,55,53,32,45,56,46,53,48,52,50,57,55,10,118,32,32,45,52,46,57,49,48,57,56,54,32,45,49,46,54,50,51,48,52,55,32,45,57,46,48,50,54,56,48,55,10,118,32,32,45,52,46,57,57,53,51,49,51,32,45,51,46,51,55,53,48,48,48,32,45,57, 46,50,50,53,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,50,46,49,54,50,49,48,57,32,45,56,46,52,49,55,57,54,57,10,118,32,32,45,49,46,48,55,48,51,49,50,32,48,46,50,51,52,51,55,53,32,45,57,46,50,49,56,55,53,48,10,118,32,32,45,49,46,48,55,48,51,49, 50,32,45,49,46,54,50,51,48,52,55,32,45,57,46,55,56,53,49,53,54,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,51,46,51,55,53,48,48,48,32,45,49,48,46,48,48,48,48,48,48,10,118,32,32,50,46,50,51,51,55,52,48,32,50,46,49,54,50,49,48,57,32,45,55,46,55,54,53, 53,55,54,10,118,32,32,50,46,53,52,56,48,52,55,32,48,46,50,51,52,51,55,53,32,45,56,46,53,48,52,50,57,55,10,118,32,32,50,46,55,55,48,51,54,50,32,45,49,46,54,50,51,48,52,55,32,45,57,46,48,50,54,56,48,55,10,118,32,32,50,46,56,53,52,54,56,56,32,45,51,46,51, 55,53,48,48,48,32,45,57,46,50,50,53,48,48,48,10,118,32,32,52,46,57,48,54,52,52,54,32,50,46,49,54,50,49,48,57,32,45,53,46,57,55,54,55,53,56,10,118,32,32,53,46,52,55,53,48,48,48,32,48,46,50,51,52,51,55,53,32,45,54,46,53,52,53,51,49,50,10,118,32,32,53,46, 56,55,55,49,52,57,32,45,49,46,54,50,51,48,52,55,32,45,54,46,57,52,55,52,54,49,10,118,32,32,54,46,48,50,57,54,56,56,32,45,51,46,51,55,53,48,48,48,32,45,55,46,49,48,48,48,48,48,10,118,32,32,54,46,54,57,53,50,54,52,32,50,46,49,54,50,49,48,57,32,45,51,46, 51,48,52,48,53,51,10,118,32,32,55,46,52,51,51,57,56,53,32,48,46,50,51,52,51,55,53,32,45,51,46,54,49,56,51,54,48,10,118,32,32,55,46,57,53,54,52,57,52,32,45,49,46,54,50,51,48,52,55,32,45,51,46,56,52,48,54,55,52,10,118,32,32,56,46,49,53,52,54,56,56,32,45, 51,46,51,55,53,48,48,48,32,45,51,46,57,50,53,48,48,48,10,118,32,32,56,46,53,51,57,48,54,51,32,45,52,46,56,53,55,52,50,50,32,48,46,48,48,48,48,48,48,10,118,32,32,55,46,54,55,57,54,56,56,32,45,53,46,57,53,51,49,50,53,32,48,46,48,48,48,48,48,48,10,118,32, 32,54,46,56,50,48,51,49,51,32,45,54,46,54,57,55,50,54,54,32,48,46,48,48,48,48,48,48,10,118,32,32,54,46,52,50,57,54,56,56,32,45,55,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,55,46,55,57,52,51,51,54,32,45,52,46,56,53,55,52,50,50,32,51, 46,55,55,49,54,56,48,10,118,32,32,55,46,48,48,49,53,54,50,32,45,53,46,57,53,51,49,50,53,32,51,46,52,51,52,51,55,53,10,118,32,32,54,46,50,48,56,55,56,57,32,45,54,46,54,57,55,50,54,54,32,51,46,48,57,55,48,55,48,10,118,32,32,53,46,56,52,56,52,51,55,32,45, 55,46,49,50,53,48,48,48,32,50,46,57,52,51,55,53,48,10,118,32,32,53,46,55,53,50,51,52,51,32,45,52,46,56,53,55,52,50,50,32,54,46,56,50,50,54,53,54,10,118,32,32,53,46,49,52,50,49,56,55,32,45,53,46,57,53,51,49,50,53,32,54,46,50,49,50,53,48,48,10,118,32,32, 52,46,53,51,50,48,51,49,32,45,54,46,54,57,55,50,54,54,32,53,46,54,48,50,51,52,52,10,118,32,32,52,46,50,53,52,54,56,55,32,45,55,46,49,50,53,48,48,48,32,53,46,51,50,53,48,48,48,10,118,32,32,50,46,55,48,49,51,54,55,32,45,52,46,56,53,55,52,50,50,32,56,46, 56,54,52,54,52,57,10,118,32,32,50,46,51,54,52,48,54,51,32,45,53,46,57,53,51,49,50,53,32,56,46,48,55,49,56,55,53,10,118,32,32,50,46,48,50,54,55,53,56,32,45,54,46,54,57,55,50,54,54,32,55,46,50,55,57,49,48,49,10,118,32,32,49,46,56,55,51,52,51,56,32,45,55, 46,49,50,53,48,48,48,32,54,46,57,49,56,55,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,52,46,56,53,55,52,50,50,32,57,46,54,48,57,51,55,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,53,46,57,53,51,49,50,53,32,56,46,55,53,48,48,48,48,10,118,32, 32,45,49,46,48,55,48,51,49,50,32,45,54,46,54,57,55,50,54,54,32,55,46,56,57,48,54,50,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,55,46,49,50,53,48,48,48,32,55,46,53,48,48,48,48,48,10,118,32,32,45,52,46,56,52,49,57,57,50,32,45,52,46,56,53,55,52,50, 50,32,56,46,56,54,52,54,52,57,10,118,32,32,45,52,46,53,48,52,54,56,55,32,45,53,46,57,53,51,49,50,53,32,56,46,48,55,49,56,55,53,10,118,32,32,45,52,46,49,54,55,51,56,51,32,45,54,46,54,57,55,50,54,54,32,55,46,50,55,57,49,48,49,10,118,32,32,45,52,46,48,49, 52,48,54,50,32,45,55,46,49,50,53,48,48,48,32,54,46,57,49,56,55,53,48,10,118,32,32,45,55,46,56,57,50,57,54,56,32,45,52,46,56,53,55,52,50,50,32,54,46,56,50,50,54,53,54,10,118,32,32,45,55,46,50,56,50,56,49,50,32,45,53,46,57,53,51,49,50,53,32,54,46,50,49, 50,53,48,48,10,118,32,32,45,54,46,54,55,50,54,53,54,32,45,54,46,54,57,55,50,54,54,32,53,46,54,48,50,51,52,52,10,118,32,32,45,54,46,51,57,53,51,49,50,32,45,55,46,49,50,53,48,48,48,32,53,46,51,50,53,48,48,48,10,118,32,32,45,57,46,57,51,52,57,54,49,32,45, 52,46,56,53,55,52,50,50,32,51,46,55,55,49,54,56,48,10,118,32,32,45,57,46,49,52,50,49,56,55,32,45,53,46,57,53,51,49,50,53,32,51,46,52,51,52,51,55,53,10,118,32,32,45,56,46,51,52,57,52,49,52,32,45,54,46,54,57,55,50,54,54,32,51,46,48,57,55,48,55,48,10,118, 32,32,45,55,46,57,56,57,48,54,50,32,45,55,46,49,50,53,48,48,48,32,50,46,57,52,51,55,53,48,10,118,32,32,45,49,48,46,54,55,57,54,56,56,32,45,52,46,56,53,55,52,50,50,32,48,46,48,48,48,48,48,48,10,118,32,32,45,57,46,56,50,48,51,49,51,32,45,53,46,57,53,51, 49,50,53,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,57,54,48,57,51,56,32,45,54,46,54,57,55,50,54,54,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,53,55,48,51,49,51,32,45,55,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,57,46, 57,51,52,57,54,49,32,45,52,46,56,53,55,52,50,50,32,45,51,46,55,55,49,54,56,48,10,118,32,32,45,57,46,49,52,50,49,56,55,32,45,53,46,57,53,51,49,50,53,32,45,51,46,52,51,52,51,55,53,10,118,32,32,45,56,46,51,52,57,52,49,52,32,45,54,46,54,57,55,50,54,54,32, 45,51,46,48,57,55,48,55,48,10,118,32,32,45,55,46,57,56,57,48,54,50,32,45,55,46,49,50,53,48,48,48,32,45,50,46,57,52,51,55,53,48,10,118,32,32,45,55,46,56,57,50,57,54,56,32,45,52,46,56,53,55,52,50,50,32,45,54,46,56,50,50,54,53,54,10,118,32,32,45,55,46,50, 56,50,56,49,50,32,45,53,46,57,53,51,49,50,53,32,45,54,46,50,49,50,53,48,48,10,118,32,32,45,54,46,54,55,50,54,53,54,32,45,54,46,54,57,55,50,54,54,32,45,53,46,54,48,50,51,52,52,10,118,32,32,45,54,46,51,57,53,51,49,50,32,45,55,46,49,50,53,48,48,48,32,45, 53,46,51,50,53,48,48,48,10,118,32,32,45,52,46,56,52,49,57,57,50,32,45,52,46,56,53,55,52,50,50,32,45,56,46,56,54,52,54,52,57,10,118,32,32,45,52,46,53,48,52,54,56,55,32,45,53,46,57,53,51,49,50,53,32,45,56,46,48,55,49,56,55,53,10,118,32,32,45,52,46,49,54, 55,51,56,51,32,45,54,46,54,57,55,50,54,54,32,45,55,46,50,55,57,49,48,49,10,118,32,32,45,52,46,48,49,52,48,54,50,32,45,55,46,49,50,53,48,48,48,32,45,54,46,57,49,56,55,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,52,46,56,53,55,52,50,50,32,45,57, 46,54,48,57,51,55,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,53,46,57,53,51,49,50,53,32,45,56,46,55,53,48,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,54,46,54,57,55,50,54,54,32,45,55,46,56,57,48,54,50,53,10,118,32,32,45,49,46,48,55,48, 51,49,50,32,45,55,46,49,50,53,48,48,48,32,45,55,46,53,48,48,48,48,48,10,118,32,32,50,46,55,48,49,51,54,55,32,45,52,46,56,53,55,52,50,50,32,45,56,46,56,54,52,54,52,57,10,118,32,32,50,46,51,54,52,48,54,51,32,45,53,46,57,53,51,49,50,53,32,45,56,46,48,55, 49,56,55,53,10,118,32,32,50,46,48,50,54,55,53,56,32,45,54,46,54,57,55,50,54,54,32,45,55,46,50,55,57,49,48,49,10,118,32,32,49,46,56,55,51,52,51,56,32,45,55,46,49,50,53,48,48,48,32,45,54,46,57,49,56,55,53,48,10,118,32,32,53,46,55,53,50,51,52,51,32,45,52, 46,56,53,55,52,50,50,32,45,54,46,56,50,50,54,53,54,10,118,32,32,53,46,49,52,50,49,56,55,32,45,53,46,57,53,51,49,50,53,32,45,54,46,50,49,50,53,48,48,10,118,32,32,52,46,53,51,50,48,51,49,32,45,54,46,54,57,55,50,54,54,32,45,53,46,54,48,50,51,52,52,10,118, 32,32,52,46,50,53,52,54,56,55,32,45,55,46,49,50,53,48,48,48,32,45,53,46,51,50,53,48,48,48,10,118,32,32,55,46,55,57,52,51,51,54,32,45,52,46,56,53,55,52,50,50,32,45,51,46,55,55,49,54,56,48,10,118,32,32,55,46,48,48,49,53,54,50,32,45,53,46,57,53,51,49,50, 53,32,45,51,46,52,51,52,51,55,53,10,118,32,32,54,46,50,48,56,55,56,57,32,45,54,46,54,57,55,50,54,54,32,45,51,46,48,57,55,48,55,48,10,118,32,32,53,46,56,52,56,52,51,55,32,45,55,46,49,50,53,48,48,48,32,45,50,46,57,52,51,55,53,48,10,118,32,32,54,46,50,53, 57,55,54,54,32,45,55,46,52,48,48,51,57,49,32,48,46,48,48,48,48,48,48,10,118,32,32,53,46,51,53,49,53,54,51,32,45,55,46,54,52,48,54,50,53,32,48,46,48,48,48,48,48,48,10,118,32,32,51,46,49,48,55,52,50,50,32,45,55,46,56,49,48,53,52,55,32,48,46,48,48,48,48, 48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,55,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,53,46,54,57,49,54,56,53,32,45,55,46,52,48,48,51,57,49,32,50,46,56,55,55,48,53,54,10,118,32,32,52,46,56,53,51,56,54,56,32,45,55,46,54,52, 48,54,50,53,32,50,46,53,50,48,53,56,54,10,118,32,32,50,46,55,56,51,54,52,56,32,45,55,46,56,49,48,53,52,55,32,49,46,54,51,57,55,54,49,10,118,32,32,52,46,49,51,52,48,52,51,32,45,55,46,52,48,48,51,57,49,32,53,46,50,48,52,51,53,53,10,118,32,32,51,46,52,56, 57,50,49,57,32,45,55,46,54,52,48,54,50,53,32,52,46,53,53,57,53,51,49,10,118,32,32,49,46,56,57,53,56,55,57,32,45,55,46,56,49,48,53,52,55,32,50,46,57,54,54,49,57,49,10,118,32,32,49,46,56,48,54,55,52,51,32,45,55,46,52,48,48,51,57,49,32,54,46,55,54,49,57, 57,55,10,118,32,32,49,46,52,53,48,50,55,52,32,45,55,46,54,52,48,54,50,53,32,53,46,57,50,52,49,56,48,10,118,32,32,48,46,53,54,57,52,52,56,32,45,55,46,56,49,48,53,52,55,32,51,46,56,53,51,57,54,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,55,46,52,48, 48,51,57,49,32,55,46,51,51,48,48,55,56,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,55,46,54,52,48,54,50,53,32,54,46,52,50,49,56,55,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,55,46,56,49,48,53,52,55,32,52,46,49,55,55,55,51,52,10,118,32,32,45,51, 46,57,52,55,51,54,56,32,45,55,46,52,48,48,51,57,49,32,54,46,55,54,49,57,57,55,10,118,32,32,45,51,46,53,57,48,56,57,56,32,45,55,46,54,52,48,54,50,53,32,53,46,57,50,52,49,56,48,10,118,32,32,45,50,46,55,49,48,48,55,51,32,45,55,46,56,49,48,53,52,55,32,51, 46,56,53,51,57,54,48,10,118,32,32,45,54,46,50,55,52,54,54,56,32,45,55,46,52,48,48,51,57,49,32,53,46,50,48,52,51,53,53,10,118,32,32,45,53,46,54,50,57,56,52,52,32,45,55,46,54,52,48,54,50,53,32,52,46,53,53,57,53,51,49,10,118,32,32,45,52,46,48,51,54,53,48, 52,32,45,55,46,56,49,48,53,52,55,32,50,46,57,54,54,49,57,49,10,118,32,32,45,55,46,56,51,50,51,48,57,32,45,55,46,52,48,48,51,57,49,32,50,46,56,55,55,48,53,54,10,118,32,32,45,54,46,57,57,52,52,57,50,32,45,55,46,54,52,48,54,50,53,32,50,46,53,50,48,53,56, 54,10,118,32,32,45,52,46,57,50,52,50,55,50,32,45,55,46,56,49,48,53,52,55,32,49,46,54,51,57,55,54,49,10,118,32,32,45,56,46,52,48,48,51,57,49,32,45,55,46,52,48,48,51,57,49,32,48,46,48,48,48,48,48,48,10,118,32,32,45,55,46,52,57,50,49,56,56,32,45,55,46,54, 52,48,54,50,53,32,48,46,48,48,48,48,48,48,10,118,32,32,45,53,46,50,52,56,48,52,55,32,45,55,46,56,49,48,53,52,55,32,48,46,48,48,48,48,48,48,10,118,32,32,45,55,46,56,51,50,51,48,57,32,45,55,46,52,48,48,51,57,49,32,45,50,46,56,55,55,48,53,54,10,118,32,32, 45,54,46,57,57,52,52,57,50,32,45,55,46,54,52,48,54,50,53,32,45,50,46,53,50,48,53,56,54,10,118,32,32,45,52,46,57,50,52,50,55,50,32,45,55,46,56,49,48,53,52,55,32,45,49,46,54,51,57,55,54,49,10,118,32,32,45,54,46,50,55,52,54,54,56,32,45,55,46,52,48,48,51, 57,49,32,45,53,46,50,48,52,51,53,53,10,118,32,32,45,53,46,54,50,57,56,52,52,32,45,55,46,54,52,48,54,50,53,32,45,52,46,53,53,57,53,51,49,10,118,32,32,45,52,46,48,51,54,53,48,52,32,45,55,46,56,49,48,53,52,55,32,45,50,46,57,54,54,49,57,49,10,118,32,32,45, 51,46,57,52,55,51,54,56,32,45,55,46,52,48,48,51,57,49,32,45,54,46,55,54,49,57,57,55,10,118,32,32,45,51,46,53,57,48,56,57,56,32,45,55,46,54,52,48,54,50,53,32,45,53,46,57,50,52,49,56,48,10,118,32,32,45,50,46,55,49,48,48,55,51,32,45,55,46,56,49,48,53,52, 55,32,45,51,46,56,53,51,57,54,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,55,46,52,48,48,51,57,49,32,45,55,46,51,51,48,48,55,56,10,118,32,32,45,49,46,48,55,48,51,49,50,32,45,55,46,54,52,48,54,50,53,32,45,54,46,52,50,49,56,55,53,10,118,32,32,45,49, 46,48,55,48,51,49,50,32,45,55,46,56,49,48,53,52,55,32,45,52,46,49,55,55,55,51,52,10,118,32,32,49,46,56,48,54,55,52,51,32,45,55,46,52,48,48,51,57,49,32,45,54,46,55,54,49,57,57,55,10,118,32,32,49,46,52,53,48,50,55,52,32,45,55,46,54,52,48,54,50,53,32,45, 53,46,57,50,52,49,56,48,10,118,32,32,48,46,53,54,57,52,52,56,32,45,55,46,56,49,48,53,52,55,32,45,51,46,56,53,51,57,54,48,10,118,32,32,52,46,49,51,52,48,52,51,32,45,55,46,52,48,48,51,57,49,32,45,53,46,50,48,52,51,53,53,10,118,32,32,51,46,52,56,57,50,49, 57,32,45,55,46,54,52,48,54,50,53,32,45,52,46,53,53,57,53,51,49,10,118,32,32,49,46,56,57,53,56,55,57,32,45,55,46,56,49,48,53,52,55,32,45,50,46,57,54,54,49,57,49,10,118,32,32,53,46,54,57,49,54,56,53,32,45,55,46,52,48,48,51,57,49,32,45,50,46,56,55,55,48, 53,54,10,118,32,32,52,46,56,53,51,56,54,56,32,45,55,46,54,52,48,54,50,53,32,45,50,46,53,50,48,53,56,54,10,118,32,32,50,46,55,56,51,54,52,56,32,45,55,46,56,49,48,53,52,55,32,45,49,46,54,51,57,55,54,49,10,118,32,32,45,57,46,48,55,48,51,49,51,32,50,46,50, 53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,49,46,52,48,54,50,53,48,32,50,46,50,51,50,52,50,50,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,51,46,49,51,50,56,49,51,32,50,46,49,48,57,51,55,53,32,48,46,48,48,48,48,48,48,10,118,32,32,45, 49,52,46,50,48,51,49,50,53,32,49,46,55,55,53,51,57,49,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,52,46,53,55,48,51,49,51,32,49,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,57,57,50,49,56,56,32,50,46,52,50,53,55,56,49,32,48, 46,56,52,51,55,53,48,10,118,32,32,45,49,49,46,52,55,53,56,51,48,32,50,46,52,48,53,52,53,55,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,51,46,50,57,56,56,50,56,32,50,46,50,54,51,49,56,52,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,52,50,49,54, 51,49,32,49,46,56,55,55,48,49,52,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,56,48,52,54,56,56,32,49,46,49,50,53,48,48,48,32,48,46,56,52,51,55,53,48,10,118,32,32,45,56,46,56,50,48,51,49,51,32,50,46,56,49,50,53,48,48,32,49,46,49,50,53,48,48,48, 10,118,32,32,45,49,49,46,54,50,56,57,48,54,32,50,46,55,56,54,49,51,52,32,49,46,49,50,53,48,48,48,10,118,32,32,45,49,51,46,54,54,52,48,54,51,32,50,46,54,48,49,53,54,51,32,49,46,49,50,53,48,48,48,10,118,32,32,45,49,52,46,57,48,50,51,52,52,32,50,46,49,48, 48,53,56,54,32,49,46,49,50,53,48,48,48,10,118,32,32,45,49,53,46,51,50,48,51,49,51,32,49,46,49,50,53,48,48,48,32,49,46,49,50,53,48,48,48,10,118,32,32,45,56,46,54,52,56,52,51,56,32,51,46,49,57,57,50,49,57,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,49, 46,55,56,49,57,56,50,32,51,46,49,54,54,56,48,57,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,48,50,57,50,57,55,32,50,46,57,51,57,57,52,49,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,53,46,51,56,51,48,53,55,32,50,46,51,50,52,49,53,56,32,48,46, 56,52,51,55,53,48,10,118,32,32,45,49,53,46,56,51,53,57,51,56,32,49,46,49,50,53,48,48,48,32,48,46,56,52,51,55,53,48,10,118,32,32,45,56,46,53,55,48,51,49,51,32,51,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,49,46,56,53,49,53,54,51, 32,51,46,51,51,57,56,52,52,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,52,46,49,57,53,51,49,51,32,51,46,48,57,51,55,53,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,53,46,54,48,49,53,54,51,32,50,46,52,50,53,55,56,49,32,48,46,48,48,48,48,48,48,10, 118,32,32,45,49,54,46,48,55,48,51,49,51,32,49,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,56,46,54,52,56,52,51,56,32,51,46,49,57,57,50,49,57,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,49,46,55,56,49,57,56,50,32,51,46,49,54,54, 56,48,57,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,48,50,57,50,57,55,32,50,46,57,51,57,57,52,49,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,53,46,51,56,51,48,53,55,32,50,46,51,50,52,49,53,56,32,45,48,46,56,52,51,55,53,48,10,118,32,32, 45,49,53,46,56,51,53,57,51,56,32,49,46,49,50,53,48,48,48,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,56,46,56,50,48,51,49,51,32,50,46,56,49,50,53,48,48,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,49,49,46,54,50,56,57,48,54,32,50,46,55,56,54,49,51, 52,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,49,51,46,54,54,52,48,54,51,32,50,46,54,48,49,53,54,51,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,49,52,46,57,48,50,51,52,52,32,50,46,49,48,48,53,56,54,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,49, 53,46,51,50,48,51,49,51,32,49,46,49,50,53,48,48,48,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,56,46,57,57,50,49,56,56,32,50,46,52,50,53,55,56,49,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,49,46,52,55,53,56,51,48,32,50,46,52,48,53,52,53,55,32, 45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,51,46,50,57,56,56,50,56,32,50,46,50,54,51,49,56,52,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,52,50,49,54,51,49,32,49,46,56,55,55,48,49,52,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46, 56,48,52,54,56,56,32,49,46,49,50,53,48,48,48,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,51,55,53,48,48,48,32,48,46,49,48,53,52,54,57,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,51,46,55,53,55,56,49,51,32,45,49,46,49,50,53,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,32,32,45,49,50,46,54,55,49,56,55,53,32,45,50,46,51,53,53,52,54,57,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,49,46,48,55,48,51,49,51,32,45,51,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,52,46,53,56, 56,48,49,51,32,48,46,48,48,55,48,53,48,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,51,46,57,48,57,49,56,48,32,45,49,46,50,55,53,49,52,54,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,50,46,55,50,52,57,55,54,32,45,50,46,53,52,48,56,54,51,32,48,46,56, 52,51,55,53,48,10,118,32,32,45,49,48,46,57,57,50,49,56,56,32,45,51,46,54,48,57,51,55,53,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,53,46,48,53,54,54,52,49,32,45,48,46,50,48,57,52,55,51,32,49,46,49,50,53,48,48,48,10,118,32,32,45,49,52,46,50,52,50,49, 56,56,32,45,49,46,54,48,53,52,54,57,32,49,46,49,50,53,48,48,48,10,118,32,32,45,49,50,46,56,52,49,55,57,55,32,45,50,46,57,52,56,55,51,48,32,49,46,49,50,53,48,48,48,10,118,32,32,45,49,48,46,56,50,48,51,49,51,32,45,52,46,49,50,53,48,48,48,32,49,46,49,50, 53,48,48,48,10,118,32,32,45,49,53,46,53,50,53,50,54,57,32,45,48,46,52,50,53,57,57,53,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,53,55,53,49,57,53,32,45,49,46,57,51,53,55,57,49,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,50,46,57,53,56,54,49, 56,32,45,51,46,51,53,54,53,57,56,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,48,46,54,52,56,52,51,56,32,45,52,46,54,52,48,54,50,53,32,48,46,56,52,51,55,53,48,10,118,32,32,45,49,53,46,55,51,56,50,56,49,32,45,48,46,53,50,52,52,49,52,32,48,46,48,48,48, 48,48,48,10,118,32,32,45,49,52,46,55,50,54,53,54,51,32,45,50,46,48,56,53,57,51,56,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,51,46,48,49,49,55,49,57,32,45,51,46,53,52,49,57,57,50,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,48,46,53,55,48,51,49,51, 32,45,52,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,49,53,46,53,50,53,50,54,57,32,45,48,46,52,50,53,57,57,53,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,52,46,53,55,53,49,57,53,32,45,49,46,57,51,53,55,57,49,32,45,48,46,56,52, 51,55,53,48,10,118,32,32,45,49,50,46,57,53,56,54,49,56,32,45,51,46,51,53,54,53,57,56,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,48,46,54,52,56,52,51,56,32,45,52,46,54,52,48,54,50,53,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,53,46,48,53,54, 54,52,49,32,45,48,46,50,48,57,52,55,51,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,49,52,46,50,52,50,49,56,56,32,45,49,46,54,48,53,52,54,57,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,49,50,46,56,52,49,55,57,55,32,45,50,46,57,52,56,55,51,48,32,45, 49,46,49,50,53,48,48,48,10,118,32,32,45,49,48,46,56,50,48,51,49,51,32,45,52,46,49,50,53,48,48,48,32,45,49,46,49,50,53,48,48,48,10,118,32,32,45,49,52,46,53,56,56,48,49,51,32,48,46,48,48,55,48,53,48,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,51,46, 57,48,57,49,56,48,32,45,49,46,50,55,53,49,52,54,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,50,46,55,50,52,57,55,54,32,45,50,46,53,52,48,56,54,51,32,45,48,46,56,52,51,55,53,48,10,118,32,32,45,49,48,46,57,57,50,49,56,56,32,45,51,46,54,48,57,51,55, 53,32,45,48,46,56,52,51,55,53,48,10,118,32,32,55,46,52,50,57,54,56,56,32,45,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,57,46,56,50,56,49,50,53,32,45,48,46,49,57,57,50,49,57,32,48,46,48,48,48,48,48,48,10,118,32,32,49,48,46,56,54,55, 49,56,56,32,49,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,49,49,46,52,51,55,53,48,48,32,50,46,55,51,48,52,54,57,32,48,46,48,48,48,48,48,48,10,118,32,32,49,50,46,52,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,32,32,55,46,52,50,57,54,56,56,32,45,49,46,51,57,52,53,51,49,32,49,46,56,53,54,50,53,48,10,118,32,32,49,48,46,48,49,49,50,51,48,32,45,48,46,54,55,55,49,50,52,32,49,46,54,55,54,48,55,52,10,118,32,32,49,49,46,49,48,49,53,54,51,32,48,46,56,52,54,54, 56,48,32,49,46,50,55,57,54,56,56,10,118,32,32,49,49,46,55,50,51,49,52,53,32,50,46,54,50,57,55,54,49,32,48,46,56,56,51,51,48,49,10,118,32,32,49,50,46,56,57,56,52,51,56,32,52,46,49,50,53,48,48,48,32,48,46,55,48,51,49,50,53,10,118,32,32,55,46,52,50,57,54, 56,56,32,45,50,46,56,49,50,53,48,48,32,50,46,52,55,53,48,48,48,10,118,32,32,49,48,46,52,49,52,48,54,51,32,45,49,46,55,50,56,53,49,54,32,50,46,50,51,52,55,54,54,10,118,32,32,49,49,46,54,49,55,49,56,56,32,48,46,50,51,52,51,55,53,32,49,46,55,48,54,50,53, 48,10,118,32,32,49,50,46,51,53,49,53,54,51,32,50,46,52,48,56,50,48,51,32,49,46,49,55,55,55,51,52,10,118,32,32,49,51,46,57,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,57,51,55,53,48,48,10,118,32,32,55,46,52,50,57,54,56,56,32,45,52,46,50,51,48,52, 54,57,32,49,46,56,53,54,50,53,48,10,118,32,32,49,48,46,56,49,54,56,57,53,32,45,50,46,55,55,57,57,48,55,32,49,46,54,55,54,48,55,52,10,118,32,32,49,50,46,49,51,50,56,49,51,32,45,48,46,51,55,55,57,51,48,32,49,46,50,55,57,54,56,56,10,118,32,32,49,50,46,57, 55,57,57,56,48,32,50,46,49,56,54,54,52,54,32,48,46,56,56,51,51,48,49,10,118,32,32,49,52,46,57,54,48,57,51,56,32,52,46,49,50,53,48,48,48,32,48,46,55,48,51,49,50,53,10,118,32,32,55,46,52,50,57,54,56,56,32,45,52,46,56,55,53,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,32,32,49,49,46,48,48,48,48,48,48,32,45,51,46,50,53,55,56,49,51,32,48,46,48,48,48,48,48,48,10,118,32,32,49,50,46,51,54,55,49,56,56,32,45,48,46,54,53,54,50,53,48,32,48,46,48,48,48,48,48,48,10,118,32,32,49,51,46,50,54,53,54,50,53,32,50,46,48, 56,53,57,51,56,32,48,46,48,48,48,48,48,48,10,118,32,32,49,53,46,52,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,55,46,52,50,57,54,56,56,32,45,52,46,50,51,48,52,54,57,32,45,49,46,56,53,54,50,53,48,10,118,32,32,49,48, 46,56,49,54,56,57,53,32,45,50,46,55,55,57,57,48,55,32,45,49,46,54,55,54,48,55,52,10,118,32,32,49,50,46,49,51,50,56,49,51,32,45,48,46,51,55,55,57,51,48,32,45,49,46,50,55,57,54,56,56,10,118,32,32,49,50,46,57,55,57,57,56,48,32,50,46,49,56,54,54,52,54,32, 45,48,46,56,56,51,51,48,49,10,118,32,32,49,52,46,57,54,48,57,51,56,32,52,46,49,50,53,48,48,48,32,45,48,46,55,48,51,49,50,53,10,118,32,32,55,46,52,50,57,54,56,56,32,45,50,46,56,49,50,53,48,48,32,45,50,46,52,55,53,48,48,48,10,118,32,32,49,48,46,52,49,52, 48,54,51,32,45,49,46,55,50,56,53,49,54,32,45,50,46,50,51,52,55,54,54,10,118,32,32,49,49,46,54,49,55,49,56,56,32,48,46,50,51,52,51,55,53,32,45,49,46,55,48,54,50,53,48,10,118,32,32,49,50,46,51,53,49,53,54,51,32,50,46,52,48,56,50,48,51,32,45,49,46,49,55, 55,55,51,52,10,118,32,32,49,51,46,57,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,45,48,46,57,51,55,53,48,48,10,118,32,32,55,46,52,50,57,54,56,56,32,45,49,46,51,57,52,53,51,49,32,45,49,46,56,53,54,50,53,48,10,118,32,32,49,48,46,48,49,49,50,51,48,32,45, 48,46,54,55,55,49,50,52,32,45,49,46,54,55,54,48,55,52,10,118,32,32,49,49,46,49,48,49,53,54,51,32,48,46,56,52,54,54,56,48,32,45,49,46,50,55,57,54,56,56,10,118,32,32,49,49,46,55,50,51,49,52,53,32,50,46,54,50,57,55,54,49,32,45,48,46,56,56,51,51,48,49,10, 118,32,32,49,50,46,56,57,56,52,51,56,32,52,46,49,50,53,48,48,48,32,45,48,46,55,48,51,49,50,53,10,118,32,32,49,50,46,55,56,57,48,54,51,32,52,46,51,51,53,57,51,56,32,48,46,48,48,48,48,48,48,10,118,32,32,49,51,46,48,53,52,54,56,56,32,52,46,52,48,54,50,53, 48,32,48,46,48,48,48,48,48,48,10,118,32,32,49,51,46,49,51,50,56,49,51,32,52,46,51,51,53,57,51,56,32,48,46,48,48,48,48,48,48,10,118,32,32,49,50,46,57,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,49,51,46,50,57,49,48, 55,55,32,52,46,51,52,54,50,51,55,32,48,46,54,53,57,49,56,48,10,118,32,32,49,51,46,53,50,53,56,55,57,32,52,46,52,50,50,55,50,57,32,48,46,53,54,50,53,48,48,10,118,32,32,49,51,46,53,51,50,56,57,56,32,52,46,51,53,48,51,53,55,32,48,46,52,54,53,56,50,48,10, 118,32,32,49,51,46,50,52,50,49,56,56,32,52,46,49,50,53,48,48,48,32,48,46,52,50,49,56,55,53,10,118,32,32,49,52,46,51,57,53,53,48,56,32,52,46,51,54,56,56,57,54,32,48,46,56,55,56,57,48,54,10,118,32,32,49,52,46,53,54,50,53,48,48,32,52,46,52,53,56,57,56,52, 32,48,46,55,53,48,48,48,48,10,118,32,32,49,52,46,52,49,51,48,56,54,32,52,46,51,56,50,48,56,48,32,48,46,54,50,49,48,57,52,10,118,32,32,49,51,46,57,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,53,54,50,53,48,48,10,118,32,32,49,53,46,52,57,57,57,51, 57,32,52,46,51,57,49,53,53,54,32,48,46,54,53,57,49,56,48,10,118,32,32,49,53,46,53,57,57,49,50,49,32,52,46,52,57,53,50,51,57,32,48,46,53,54,50,53,48,48,10,118,32,32,49,53,46,50,57,51,50,55,52,32,52,46,52,49,51,56,48,52,32,48,46,52,54,53,56,50,48,10,118, 32,32,49,52,46,54,49,55,49,56,56,32,52,46,49,50,53,48,48,48,32,48,46,52,50,49,56,55,53,10,118,32,32,49,54,46,48,48,49,57,53,51,32,52,46,52,48,49,56,53,53,32,48,46,48,48,48,48,48,48,10,118,32,32,49,54,46,48,55,48,51,49,51,32,52,46,53,49,49,55,49,57,32, 48,46,48,48,48,48,48,48,10,118,32,32,49,53,46,54,57,51,51,53,57,32,52,46,52,50,56,50,50,52,32,48,46,48,48,48,48,48,48,10,118,32,32,49,52,46,57,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,49,53,46,52,57,57,57,51,57, 32,52,46,51,57,49,53,53,54,32,45,48,46,54,53,57,49,56,48,10,118,32,32,49,53,46,53,57,57,49,50,49,32,52,46,52,57,53,50,51,57,32,45,48,46,53,54,50,53,48,48,10,118,32,32,49,53,46,50,57,51,50,55,52,32,52,46,52,49,51,56,48,52,32,45,48,46,52,54,53,56,50,48, 10,118,32,32,49,52,46,54,49,55,49,56,56,32,52,46,49,50,53,48,48,48,32,45,48,46,52,50,49,56,55,53,10,118,32,32,49,52,46,51,57,53,53,48,56,32,52,46,51,54,56,56,57,54,32,45,48,46,56,55,56,57,48,54,10,118,32,32,49,52,46,53,54,50,53,48,48,32,52,46,52,53,56, 57,56,52,32,45,48,46,55,53,48,48,48,48,10,118,32,32,49,52,46,52,49,51,48,56,54,32,52,46,51,56,50,48,56,48,32,45,48,46,54,50,49,48,57,52,10,118,32,32,49,51,46,57,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,45,48,46,53,54,50,53,48,48,10,118,32,32,49,51, 46,50,57,49,48,55,55,32,52,46,51,52,54,50,51,55,32,45,48,46,54,53,57,49,56,48,10,118,32,32,49,51,46,53,50,53,56,55,57,32,52,46,52,50,50,55,50,57,32,45,48,46,53,54,50,53,48,48,10,118,32,32,49,51,46,53,51,50,56,57,56,32,52,46,51,53,48,51,53,55,32,45,48, 46,52,54,53,56,50,48,10,118,32,32,49,51,46,50,52,50,49,56,56,32,52,46,49,50,53,48,48,48,32,45,48,46,52,50,49,56,55,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,55,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,48,46,54,51,50,56,49,51,32, 55,46,54,50,56,57,48,54,32,48,46,48,48,48,48,48,48,10,118,32,32,48,46,53,53,52,54,56,56,32,55,46,48,51,49,50,53,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,48,46,48,56,53,57,51,55,32,54,46,50,57,50,57,54,57,32,48,46,48,48,48,48,48,48,10,118,32,32,45, 48,46,48,55,48,51,49,50,32,53,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,48,46,53,48,49,52,49,52,32,55,46,54,50,56,57,48,54,32,48,46,54,55,48,50,53,54,10,118,32,32,48,46,52,50,57,50,55,56,32,55,46,48,51,49,50,53,48,32,48,46,54,51,57, 51,57,53,10,118,32,32,45,48,46,49,54,50,48,50,57,32,54,46,50,57,50,57,54,57,32,48,46,51,56,54,57,54,48,10,118,32,32,45,48,46,49,52,55,56,49,50,32,53,46,54,50,53,48,48,48,32,48,46,51,57,50,53,48,48,10,118,32,32,48,46,49,52,48,52,56,57,32,55,46,54,50,56, 57,48,54,32,49,46,50,49,48,56,48,49,10,118,32,32,48,46,48,56,52,56,52,52,32,55,46,48,51,49,50,53,48,32,49,46,49,53,53,49,53,54,10,118,32,32,45,48,46,51,55,48,56,55,57,32,54,46,50,57,50,57,54,57,32,48,46,54,57,57,52,51,52,10,118,32,32,45,48,46,51,54,48, 51,49,50,32,53,46,54,50,53,48,48,48,32,48,46,55,49,48,48,48,48,10,118,32,32,45,48,46,52,48,48,48,53,54,32,55,46,54,50,56,57,48,54,32,49,46,53,55,49,55,50,54,10,118,32,32,45,48,46,52,51,48,57,49,56,32,55,46,48,51,49,50,53,48,32,49,46,52,57,57,53,57,48, 10,118,32,32,45,48,46,54,56,51,51,53,50,32,54,46,50,57,50,57,54,57,32,48,46,57,48,56,50,56,52,10,118,32,32,45,48,46,54,55,55,56,49,50,32,53,46,54,50,53,48,48,48,32,48,46,57,50,50,53,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,55,46,54,50,56,57,48, 54,32,49,46,55,48,51,49,50,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,55,46,48,51,49,50,53,48,32,49,46,54,50,53,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,54,46,50,57,50,57,54,57,32,48,46,57,56,52,51,55,53,10,118,32,32,45,49,46,48,55,48,51, 49,50,32,53,46,54,50,53,48,48,48,32,49,46,48,48,48,48,48,48,10,118,32,32,45,49,46,55,52,48,53,54,57,32,55,46,54,50,56,57,48,54,32,49,46,53,55,49,55,50,54,10,118,32,32,45,49,46,55,48,57,55,48,55,32,55,46,48,51,49,50,53,48,32,49,46,52,57,57,53,57,48,10, 118,32,32,45,49,46,52,53,55,50,55,51,32,54,46,50,57,50,57,54,57,32,48,46,57,48,56,50,56,52,10,118,32,32,45,49,46,52,54,50,56,49,50,32,53,46,54,50,53,48,48,48,32,48,46,57,50,50,53,48,48,10,118,32,32,45,50,46,50,56,49,49,49,51,32,55,46,54,50,56,57,48,54, 32,49,46,50,49,48,56,48,49,10,118,32,32,45,50,46,50,50,53,52,54,57,32,55,46,48,51,49,50,53,48,32,49,46,49,53,53,49,53,54,10,118,32,32,45,49,46,55,54,57,55,52,54,32,54,46,50,57,50,57,54,57,32,48,46,54,57,57,52,51,52,10,118,32,32,45,49,46,55,56,48,51,49, 50,32,53,46,54,50,53,48,48,48,32,48,46,55,49,48,48,48,48,10,118,32,32,45,50,46,54,52,50,48,51,56,32,55,46,54,50,56,57,48,54,32,48,46,54,55,48,50,53,54,10,118,32,32,45,50,46,53,54,57,57,48,50,32,55,46,48,51,49,50,53,48,32,48,46,54,51,57,51,57,53,10,118, 32,32,45,49,46,57,55,56,53,57,54,32,54,46,50,57,50,57,54,57,32,48,46,51,56,54,57,54,48,10,118,32,32,45,49,46,57,57,50,56,49,50,32,53,46,54,50,53,48,48,48,32,48,46,51,57,50,53,48,48,10,118,32,32,45,50,46,55,55,51,52,51,56,32,55,46,54,50,56,57,48,54,32, 48,46,48,48,48,48,48,48,10,118,32,32,45,50,46,54,57,53,51,49,51,32,55,46,48,51,49,50,53,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,50,46,48,53,52,54,56,55,32,54,46,50,57,50,57,54,57,32,48,46,48,48,48,48,48,48,10,118,32,32,45,50,46,48,55,48,51,49,50, 32,53,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,50,46,54,52,50,48,51,56,32,55,46,54,50,56,57,48,54,32,45,48,46,54,55,48,50,53,54,10,118,32,32,45,50,46,53,54,57,57,48,50,32,55,46,48,51,49,50,53,48,32,45,48,46,54,51,57,51,57,53,10, 118,32,32,45,49,46,57,55,56,53,57,54,32,54,46,50,57,50,57,54,57,32,45,48,46,51,56,54,57,54,48,10,118,32,32,45,49,46,57,57,50,56,49,50,32,53,46,54,50,53,48,48,48,32,45,48,46,51,57,50,53,48,48,10,118,32,32,45,50,46,50,56,49,49,49,51,32,55,46,54,50,56,57, 48,54,32,45,49,46,50,49,48,56,48,49,10,118,32,32,45,50,46,50,50,53,52,54,57,32,55,46,48,51,49,50,53,48,32,45,49,46,49,53,53,49,53,54,10,118,32,32,45,49,46,55,54,57,55,52,54,32,54,46,50,57,50,57,54,57,32,45,48,46,54,57,57,52,51,52,10,118,32,32,45,49,46, 55,56,48,51,49,50,32,53,46,54,50,53,48,48,48,32,45,48,46,55,49,48,48,48,48,10,118,32,32,45,49,46,55,52,48,53,54,57,32,55,46,54,50,56,57,48,54,32,45,49,46,53,55,49,55,50,54,10,118,32,32,45,49,46,55,48,57,55,48,55,32,55,46,48,51,49,50,53,48,32,45,49,46, 52,57,57,53,57,48,10,118,32,32,45,49,46,52,53,55,50,55,51,32,54,46,50,57,50,57,54,57,32,45,48,46,57,48,56,50,56,52,10,118,32,32,45,49,46,52,54,50,56,49,50,32,53,46,54,50,53,48,48,48,32,45,48,46,57,50,50,53,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50, 32,55,46,54,50,56,57,48,54,32,45,49,46,55,48,51,49,50,53,10,118,32,32,45,49,46,48,55,48,51,49,50,32,55,46,48,51,49,50,53,48,32,45,49,46,54,50,53,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,54,46,50,57,50,57,54,57,32,45,48,46,57,56,52,51,55,53, 10,118,32,32,45,49,46,48,55,48,51,49,50,32,53,46,54,50,53,48,48,48,32,45,49,46,48,48,48,48,48,48,10,118,32,32,45,48,46,52,48,48,48,53,54,32,55,46,54,50,56,57,48,54,32,45,49,46,53,55,49,55,50,54,10,118,32,32,45,48,46,52,51,48,57,49,56,32,55,46,48,51,49, 50,53,48,32,45,49,46,52,57,57,53,57,48,10,118,32,32,45,48,46,54,56,51,51,53,50,32,54,46,50,57,50,57,54,57,32,45,48,46,57,48,56,50,56,52,10,118,32,32,45,48,46,54,55,55,56,49,50,32,53,46,54,50,53,48,48,48,32,45,48,46,57,50,50,53,48,48,10,118,32,32,48,46, 49,52,48,52,56,57,32,55,46,54,50,56,57,48,54,32,45,49,46,50,49,48,56,48,49,10,118,32,32,48,46,48,56,52,56,52,52,32,55,46,48,51,49,50,53,48,32,45,49,46,49,53,53,49,53,54,10,118,32,32,45,48,46,51,55,48,56,55,57,32,54,46,50,57,50,57,54,57,32,45,48,46,54, 57,57,52,51,52,10,118,32,32,45,48,46,51,54,48,51,49,50,32,53,46,54,50,53,48,48,48,32,45,48,46,55,49,48,48,48,48,10,118,32,32,48,46,53,48,49,52,49,52,32,55,46,54,50,56,57,48,54,32,45,48,46,54,55,48,50,53,54,10,118,32,32,48,46,52,50,57,50,55,56,32,55,46, 48,51,49,50,53,48,32,45,48,46,54,51,57,51,57,53,10,118,32,32,45,48,46,49,54,50,48,50,57,32,54,46,50,57,50,57,54,57,32,45,48,46,51,56,54,57,54,48,10,118,32,32,45,48,46,49,52,55,56,49,50,32,53,46,54,50,53,48,48,48,32,45,48,46,51,57,50,53,48,48,10,118,32, 32,49,46,50,49,48,57,51,56,32,53,46,49,55,57,54,56,56,32,48,46,48,48,48,48,48,48,10,118,32,32,51,46,48,53,52,54,56,56,32,52,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,52,46,55,49,48,57,51,56,32,52,46,53,55,48,51,49,51,32,48,46,48,48, 48,48,48,48,10,118,32,32,53,46,52,50,57,54,56,56,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,49,46,48,51,52,49,52,49,32,53,46,49,55,57,54,56,56,32,48,46,56,57,53,51,57,49,10,118,32,32,50,46,55,51,53,48,48,48,32,52,46,56,55,53,48, 48,48,32,49,46,54,49,57,48,54,50,10,118,32,32,52,46,50,54,50,56,57,49,32,52,46,53,55,48,51,49,51,32,50,46,50,54,57,49,52,48,10,118,32,32,52,46,57,50,53,57,51,56,32,52,46,49,50,53,48,48,48,32,50,46,53,53,49,50,53,48,10,118,32,32,48,46,53,52,57,51,55,53, 32,53,46,49,55,57,54,56,56,32,49,46,54,49,57,54,56,56,10,118,32,32,49,46,56,53,56,52,51,56,32,52,46,56,55,53,48,48,48,32,50,46,57,50,56,55,53,48,10,118,32,32,51,46,48,51,52,51,55,53,32,52,46,53,55,48,51,49,51,32,52,46,49,48,52,54,56,55,10,118,32,32,51, 46,53,52,52,54,56,56,32,52,46,49,50,53,48,48,48,32,52,46,54,49,53,48,48,48,10,118,32,32,45,48,46,49,55,52,57,50,50,32,53,46,49,55,57,54,56,56,32,50,46,49,48,52,52,53,51,10,118,32,32,48,46,53,52,56,55,53,48,32,52,46,56,55,53,48,48,48,32,51,46,56,48,53, 51,49,51,10,118,32,32,49,46,49,57,56,56,50,56,32,52,46,53,55,48,51,49,51,32,53,46,51,51,51,50,48,51,10,118,32,32,49,46,52,56,48,57,51,56,32,52,46,49,50,53,48,48,48,32,53,46,57,57,54,50,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,53,46,49,55,57,54, 56,56,32,50,46,50,56,49,50,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,56,55,53,48,48,48,32,52,46,49,50,53,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,53,55,48,51,49,51,32,53,46,55,56,49,50,53,48,10,118,32,32,45,49,46,48,55,48, 51,49,50,32,52,46,49,50,53,48,48,48,32,54,46,53,48,48,48,48,48,10,118,32,32,45,49,46,57,54,53,55,48,51,32,53,46,49,55,57,54,56,56,32,50,46,49,48,52,52,53,51,10,118,32,32,45,50,46,54,56,57,51,55,53,32,52,46,56,55,53,48,48,48,32,51,46,56,48,53,51,49,51, 10,118,32,32,45,51,46,51,51,57,52,53,51,32,52,46,53,55,48,51,49,51,32,53,46,51,51,51,50,48,51,10,118,32,32,45,51,46,54,50,49,53,54,50,32,52,46,49,50,53,48,48,48,32,53,46,57,57,54,50,53,48,10,118,32,32,45,50,46,54,57,48,48,48,48,32,53,46,49,55,57,54,56, 56,32,49,46,54,49,57,54,56,56,10,118,32,32,45,51,46,57,57,57,48,54,50,32,52,46,56,55,53,48,48,48,32,50,46,57,50,56,55,53,48,10,118,32,32,45,53,46,49,55,52,57,57,57,32,52,46,53,55,48,51,49,51,32,52,46,49,48,52,54,56,55,10,118,32,32,45,53,46,54,56,53,51, 49,50,32,52,46,49,50,53,48,48,48,32,52,46,54,49,53,48,48,48,10,118,32,32,45,51,46,49,55,52,55,54,53,32,53,46,49,55,57,54,56,56,32,48,46,56,57,53,51,57,49,10,118,32,32,45,52,46,56,55,53,54,50,53,32,52,46,56,55,53,48,48,48,32,49,46,54,49,57,48,54,50,10, 118,32,32,45,54,46,52,48,51,53,49,54,32,52,46,53,55,48,51,49,51,32,50,46,50,54,57,49,52,48,10,118,32,32,45,55,46,48,54,54,53,54,51,32,52,46,49,50,53,48,48,48,32,50,46,53,53,49,50,53,48,10,118,32,32,45,51,46,51,53,49,53,54,50,32,53,46,49,55,57,54,56,56, 32,48,46,48,48,48,48,48,48,10,118,32,32,45,53,46,49,57,53,51,49,51,32,52,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,54,46,56,53,49,53,54,51,32,52,46,53,55,48,51,49,51,32,48,46,48,48,48,48,48,48,10,118,32,32,45,55,46,53,55,48,51,49, 51,32,52,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,32,32,45,51,46,49,55,52,55,54,53,32,53,46,49,55,57,54,56,56,32,45,48,46,56,57,53,51,57,49,10,118,32,32,45,52,46,56,55,53,54,50,53,32,52,46,56,55,53,48,48,48,32,45,49,46,54,49,57,48,54,50, 10,118,32,32,45,54,46,52,48,51,53,49,54,32,52,46,53,55,48,51,49,51,32,45,50,46,50,54,57,49,52,48,10,118,32,32,45,55,46,48,54,54,53,54,51,32,52,46,49,50,53,48,48,48,32,45,50,46,53,53,49,50,53,48,10,118,32,32,45,50,46,54,57,48,48,48,48,32,53,46,49,55,57, 54,56,56,32,45,49,46,54,49,57,54,56,56,10,118,32,32,45,51,46,57,57,57,48,54,50,32,52,46,56,55,53,48,48,48,32,45,50,46,57,50,56,55,53,48,10,118,32,32,45,53,46,49,55,52,57,57,57,32,52,46,53,55,48,51,49,51,32,45,52,46,49,48,52,54,56,55,10,118,32,32,45,53, 46,54,56,53,51,49,50,32,52,46,49,50,53,48,48,48,32,45,52,46,54,49,53,48,48,48,10,118,32,32,45,49,46,57,54,53,55,48,51,32,53,46,49,55,57,54,56,56,32,45,50,46,49,48,52,52,53,51,10,118,32,32,45,50,46,54,56,57,51,55,53,32,52,46,56,55,53,48,48,48,32,45,51, 46,56,48,53,51,49,51,10,118,32,32,45,51,46,51,51,57,52,53,51,32,52,46,53,55,48,51,49,51,32,45,53,46,51,51,51,50,48,51,10,118,32,32,45,51,46,54,50,49,53,54,50,32,52,46,49,50,53,48,48,48,32,45,53,46,57,57,54,50,53,48,10,118,32,32,45,49,46,48,55,48,51,49, 50,32,53,46,49,55,57,54,56,56,32,45,50,46,50,56,49,50,53,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,56,55,53,48,48,48,32,45,52,46,49,50,53,48,48,48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,53,55,48,51,49,51,32,45,53,46,55,56,49,50,53, 48,10,118,32,32,45,49,46,48,55,48,51,49,50,32,52,46,49,50,53,48,48,48,32,45,54,46,53,48,48,48,48,48,10,118,32,32,45,48,46,49,55,52,57,50,50,32,53,46,49,55,57,54,56,56,32,45,50,46,49,48,52,52,53,51,10,118,32,32,48,46,53,52,56,55,53,48,32,52,46,56,55,53, 48,48,48,32,45,51,46,56,48,53,51,49,51,10,118,32,32,49,46,49,57,56,56,50,56,32,52,46,53,55,48,51,49,51,32,45,53,46,51,51,51,50,48,51,10,118,32,32,49,46,52,56,48,57,51,56,32,52,46,49,50,53,48,48,48,32,45,53,46,57,57,54,50,53,48,10,118,32,32,48,46,53,52, 57,51,55,53,32,53,46,49,55,57,54,56,56,32,45,49,46,54,49,57,54,56,56,10,118,32,32,49,46,56,53,56,52,51,56,32,52,46,56,55,53,48,48,48,32,45,50,46,57,50,56,55,53,48,10,118,32,32,51,46,48,51,52,51,55,53,32,52,46,53,55,48,51,49,51,32,45,52,46,49,48,52,54, 56,55,10,118,32,32,51,46,53,52,52,54,56,56,32,52,46,49,50,53,48,48,48,32,45,52,46,54,49,53,48,48,48,10,118,32,32,49,46,48,51,52,49,52,49,32,53,46,49,55,57,54,56,56,32,45,48,46,56,57,53,51,57,49,10,118,32,32,50,46,55,51,53,48,48,48,32,52,46,56,55,53,48, 48,48,32,45,49,46,54,49,57,48,54,50,10,118,32,32,52,46,50,54,50,56,57,49,32,52,46,53,55,48,51,49,51,32,45,50,46,50,54,57,49,52,48,10,118,32,32,52,46,57,50,53,57,51,56,32,52,46,49,50,53,48,48,48,32,45,50,46,53,53,49,50,53,48,10,35,32,53,51,48,32,118,101, 114,116,105,99,101,115,10,10,118,116,32,32,50,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48, 48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,49,46,55,53,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,53,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48, 48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,50,46,48,48, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46, 50,53,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46, 57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 49,46,48,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32, 49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,55,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48, 48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48, 48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,57,53,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55, 53,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,50,46,48, 48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49, 46,53,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49, 46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,49,46,48,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48, 32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,57,55,53,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48, 48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,48,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53, 48,48,48,48,32,49,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,57,53, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46, 48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46, 57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 49,46,55,53,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32, 49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,49,46,50,53,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,50,50,53,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48, 48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,54,55,53,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48, 48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53, 48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,52, 53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48, 46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49, 46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,50,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48, 32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,49,46,53,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,50,50,53,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48, 48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,54,55,53,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48, 48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46, 55,53,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46, 52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 48,46,50,53,48,48,48,48,32,49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32, 49,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,48,48,48,48,48,48,32,49,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48, 48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,53,53,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48, 48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,56,53,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50, 53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,52, 48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49, 46,48,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48, 46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48, 32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,48,46,50,53,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48, 48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,53,53,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53, 48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,56,53, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46, 53,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46, 52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 49,46,48,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32, 48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,55,48,48,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48, 48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48, 48,48,48,32,48,46,53,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,56,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,55,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,53,53,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48, 48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,51, 48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49, 46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,49,46,50,53,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48, 32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,49,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,48,48,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48, 48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,52,48,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48, 48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,49,48, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46, 48,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46, 51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,50,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 50,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,55,53,48,48,48,48,32, 48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,49,46,53,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48, 48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,48,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48, 48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,52,48,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55, 53,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,49, 48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48, 46,50,53,48,48,48,48,32,48,46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,52,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48, 46,51,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,50,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,49,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,56,55,53,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48, 32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,48,46,56,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,53,48,48,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48, 48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,48,46,54,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,55,53,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48, 48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46, 53,48,48,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46, 54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 48,46,50,53,48,48,48,48,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32, 48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,49,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,56,55,53,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48, 48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53, 48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,50,53,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54, 50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53, 48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48, 46,53,48,48,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48, 46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,48,46,51,55,53,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,49,50,53,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48, 32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,51,55,53,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48, 48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48, 48,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,52,53, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46, 55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46, 48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 48,46,56,55,53,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32, 48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,48,48,48,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,54,55,53,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48, 48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,50,53,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48, 48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,57,48,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53, 48,48,48,48,48,32,48,46,52,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,54,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57, 53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48, 46,54,50,53,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48, 46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,48,46,55,53,48,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,57,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48, 32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,49,46,48,48,48,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,57,55,53,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48, 48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,57,50,53,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50, 53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46, 51,55,53,48,48,48,32,48,46,57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,50,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46, 57,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,57,55,53,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32, 49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,56,55,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48, 48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,50,53,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48, 48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53, 48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,48, 48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48, 46,50,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48, 46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48, 32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,49,46,48,48,48,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48, 48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,50,53,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50, 53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46, 53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46, 48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 48,46,51,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32, 48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,49,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48, 48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48, 48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,50,53,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55, 53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,55, 53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48, 46,54,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48, 48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32, 32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48, 46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48, 32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118, 116,32,32,48,46,50,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,53,48,48,48,48,48, 32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48, 48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48, 10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48, 48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48, 48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,50,53, 48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46, 56,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48, 48,48,48,48,10,118,116,32,32,48,46,56,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46, 55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,55,53,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32, 48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46, 48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,54,50,53,48,48,48,32, 48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116, 32,32,48,46,53,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32, 48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48, 48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10, 118,116,32,32,48,46,51,55,53,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,53,48,48,48,48, 48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,51,55,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48, 48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48, 48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,49,46,48,48,48, 48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49, 50,53,48,48,48,32,48,46,50,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,49,50,53,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48,48,48,32,48,46,48,48,48, 48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,55,53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,53,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,50, 53,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,116,32,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,35,32,56,48,48,32,116,101,120,116,117,114,101,32,118,101,114,116,105,99,101,115,10,10,118,110,32,32,45,48,46,57, 54,54,55,52,50,32,45,48,46,50,53,53,55,53,50,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,57,54,54,56,50,52,32,48,46,50,53,53,52,52,51,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,48,57,50,48,53,50,32,48,46,57,57,53,55,53,52,32,48,46, 48,48,48,48,48,48,10,118,110,32,32,48,46,54,56,50,48,53,48,32,48,46,55,51,49,51,48,53,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,56,55,48,51,48,49,32,48,46,52,57,50,53,50,49,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,56,57,51,48,49,52, 32,45,48,46,50,53,54,51,52,53,32,45,48,46,51,54,57,56,56,50,10,118,110,32,32,45,48,46,56,57,51,52,51,55,32,48,46,50,53,53,57,57,54,32,45,48,46,51,54,57,49,48,50,10,118,110,32,32,45,48,46,48,56,51,56,55,55,32,48,46,57,57,53,56,52,51,32,45,48,46,48,51, 53,53,48,55,10,118,110,32,32,48,46,54,50,57,55,50,52,32,48,46,55,51,49,56,54,48,32,48,46,50,54,48,52,51,57,10,118,110,32,32,48,46,56,48,51,55,50,53,32,48,46,52,57,51,51,55,48,32,48,46,51,51,50,53,56,52,10,118,110,32,32,45,48,46,54,56,51,52,48,55,32,45, 48,46,50,53,54,55,50,56,32,45,48,46,54,56,51,52,48,55,10,118,110,32,32,45,48,46,54,56,51,53,51,49,32,48,46,50,53,54,48,54,56,32,45,48,46,54,56,51,53,51,49,10,118,110,32,32,45,48,46,48,54,52,57,50,53,32,48,46,57,57,53,55,55,54,32,45,48,46,48,54,52,57, 50,53,10,118,110,32,32,48,46,52,56,49,51,57,57,32,48,46,55,51,50,52,54,57,32,48,46,52,56,49,51,57,57,10,118,110,32,32,48,46,54,49,52,56,48,52,32,48,46,52,57,51,57,57,55,32,48,46,54,49,52,56,48,52,10,118,110,32,32,45,48,46,51,54,57,56,56,50,32,45,48,46, 50,53,54,51,52,53,32,45,48,46,56,57,51,48,49,52,10,118,110,32,32,45,48,46,51,54,57,49,48,50,32,48,46,50,53,53,57,57,54,32,45,48,46,56,57,51,52,51,55,10,118,110,32,32,45,48,46,48,51,53,53,48,55,32,48,46,57,57,53,56,52,51,32,45,48,46,48,56,51,56,55,55, 10,118,110,32,32,48,46,50,54,48,52,51,57,32,48,46,55,51,49,56,54,48,32,48,46,54,50,57,55,50,52,10,118,110,32,32,48,46,51,51,50,53,56,52,32,48,46,52,57,51,51,54,57,32,48,46,56,48,51,55,50,53,10,118,110,32,32,45,48,46,48,48,50,56,52,56,32,45,48,46,50,53, 55,56,54,51,32,45,48,46,57,54,54,49,55,55,10,118,110,32,32,45,48,46,48,48,49,57,50,51,32,48,46,50,53,52,55,51,54,32,45,48,46,57,54,55,48,48,57,10,118,110,32,32,45,48,46,48,48,48,50,54,54,32,48,46,57,57,53,55,51,52,32,45,48,46,48,57,50,50,55,48,10,118, 110,32,32,48,46,48,48,48,48,50,52,32,48,46,55,51,49,50,57,53,32,48,46,54,56,50,48,54,49,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,48,46,52,57,50,53,50,49,32,48,46,56,55,48,51,48,49,10,118,110,32,32,48,46,51,55,57,48,53,56,32,45,48,46,51,53,57,51, 48,48,32,45,48,46,56,53,50,55,55,49,10,118,110,32,32,48,46,51,55,55,49,49,48,32,48,46,49,52,57,48,56,53,32,45,48,46,57,49,52,48,57,49,10,118,110,32,32,48,46,48,50,55,53,48,50,32,48,46,57,57,50,48,56,49,32,45,48,46,49,50,50,53,53,50,10,118,110,32,32,45, 48,46,50,54,49,48,49,48,32,48,46,55,50,54,55,54,50,32,48,46,54,51,53,51,54,55,10,118,110,32,32,45,48,46,51,51,50,52,56,53,32,48,46,52,57,50,53,52,54,32,48,46,56,48,52,50,55,49,10,118,110,32,32,48,46,54,54,51,53,52,56,32,45,48,46,52,49,48,55,57,48,32, 45,48,46,54,50,53,50,54,52,10,118,110,32,32,48,46,55,49,50,54,54,52,32,48,46,48,55,51,55,50,50,32,45,48,46,54,57,55,54,50,49,10,118,110,32,32,48,46,48,57,57,55,50,54,32,48,46,57,56,55,53,48,57,32,45,48,46,49,50,49,57,56,51,10,118,110,32,32,45,48,46,52, 56,55,51,50,48,32,48,46,55,50,51,55,53,52,32,48,46,52,56,56,53,54,57,10,118,110,32,32,45,48,46,54,49,53,50,52,50,32,48,46,52,57,50,54,48,50,32,48,46,54,49,53,52,56,52,10,118,110,32,32,48,46,56,56,48,48,50,56,32,45,48,46,51,51,50,57,48,54,32,45,48,46, 51,51,56,55,48,57,10,118,110,32,32,48,46,57,49,55,50,55,54,32,48,46,49,54,55,49,49,51,32,45,48,46,51,54,49,52,57,51,10,118,110,32,32,48,46,49,49,51,53,56,52,32,48,46,57,57,50,51,54,53,32,45,48,46,48,52,56,48,55,48,10,118,110,32,32,45,48,46,54,51,52,49, 53,48,32,48,46,55,50,55,53,48,56,32,48,46,50,54,49,56,56,57,10,118,110,32,32,45,48,46,56,48,52,49,50,54,32,48,46,52,57,50,54,51,52,32,48,46,51,51,50,55,48,53,10,118,110,32,32,48,46,57,54,54,54,57,48,32,45,48,46,50,53,53,55,51,56,32,48,46,48,49,48,52, 53,52,10,118,110,32,32,48,46,57,54,55,52,52,50,32,48,46,50,53,50,57,54,50,32,48,46,48,48,56,49,48,51,10,118,110,32,32,48,46,48,57,51,52,51,54,32,48,46,57,57,53,54,50,52,32,48,46,48,48,49,50,56,49,10,118,110,32,32,45,48,46,54,56,50,49,54,55,32,48,46,55, 51,49,49,57,54,32,45,48,46,48,48,48,51,52,51,10,118,110,32,32,45,48,46,56,55,48,51,50,50,32,48,46,52,57,50,52,56,51,32,45,48,46,48,48,48,48,53,52,10,118,110,32,32,48,46,56,57,51,48,49,52,32,45,48,46,50,53,54,51,52,53,32,48,46,51,54,57,56,56,50,10,118, 110,32,32,48,46,56,57,51,52,51,55,32,48,46,50,53,53,57,57,54,32,48,46,51,54,57,49,48,50,10,118,110,32,32,48,46,48,56,51,56,55,55,32,48,46,57,57,53,56,52,51,32,48,46,48,51,53,53,48,55,10,118,110,32,32,45,48,46,54,50,57,55,50,52,32,48,46,55,51,49,56,54, 48,32,45,48,46,50,54,48,52,51,57,10,118,110,32,32,45,48,46,56,48,51,55,50,53,32,48,46,52,57,51,51,55,48,32,45,48,46,51,51,50,53,56,52,10,118,110,32,32,48,46,54,56,51,52,48,55,32,45,48,46,50,53,54,55,50,56,32,48,46,54,56,51,52,48,55,10,118,110,32,32,48, 46,54,56,51,53,51,49,32,48,46,50,53,54,48,54,56,32,48,46,54,56,51,53,51,49,10,118,110,32,32,48,46,48,54,52,57,50,53,32,48,46,57,57,53,55,55,54,32,48,46,48,54,52,57,50,53,10,118,110,32,32,45,48,46,52,56,49,51,57,57,32,48,46,55,51,50,52,54,57,32,45,48, 46,52,56,49,51,57,57,10,118,110,32,32,45,48,46,54,49,52,56,48,52,32,48,46,52,57,51,57,57,55,32,45,48,46,54,49,52,56,48,52,10,118,110,32,32,48,46,51,54,57,56,56,50,32,45,48,46,50,53,54,51,52,53,32,48,46,56,57,51,48,49,52,10,118,110,32,32,48,46,51,54,57, 49,48,50,32,48,46,50,53,53,57,57,54,32,48,46,56,57,51,52,51,55,10,118,110,32,32,48,46,48,51,53,53,48,55,32,48,46,57,57,53,56,52,51,32,48,46,48,56,51,56,55,55,10,118,110,32,32,45,48,46,50,54,48,52,51,57,32,48,46,55,51,49,56,54,48,32,45,48,46,54,50,57, 55,50,52,10,118,110,32,32,45,48,46,51,51,50,53,56,52,32,48,46,52,57,51,51,54,57,32,45,48,46,56,48,51,55,50,53,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,48,46,50,53,53,55,53,50,32,48,46,57,54,54,55,52,50,10,118,110,32,32,48,46,48,48,48,48,48,48,32, 48,46,50,53,53,52,52,51,32,48,46,57,54,54,56,50,52,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,57,57,53,55,53,52,32,48,46,48,57,50,48,53,50,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,55,51,49,51,48,53,32,45,48,46,54,56,50,48,53,48,10,118, 110,32,32,48,46,48,48,48,48,48,48,32,48,46,52,57,50,53,50,49,32,45,48,46,56,55,48,51,48,49,10,118,110,32,32,45,48,46,51,54,57,56,56,50,32,45,48,46,50,53,54,51,52,53,32,48,46,56,57,51,48,49,52,10,118,110,32,32,45,48,46,51,54,57,49,48,50,32,48,46,50,53, 53,57,57,54,32,48,46,56,57,51,52,51,55,10,118,110,32,32,45,48,46,48,51,53,53,48,55,32,48,46,57,57,53,56,52,51,32,48,46,48,56,51,56,55,55,10,118,110,32,32,48,46,50,54,48,52,51,57,32,48,46,55,51,49,56,54,48,32,45,48,46,54,50,57,55,50,52,10,118,110,32,32, 48,46,51,51,50,53,56,52,32,48,46,52,57,51,51,55,48,32,45,48,46,56,48,51,55,50,53,10,118,110,32,32,45,48,46,54,56,51,52,48,55,32,45,48,46,50,53,54,55,50,56,32,48,46,54,56,51,52,48,55,10,118,110,32,32,45,48,46,54,56,51,53,51,49,32,48,46,50,53,54,48,54, 56,32,48,46,54,56,51,53,51,49,10,118,110,32,32,45,48,46,48,54,52,57,50,53,32,48,46,57,57,53,55,55,54,32,48,46,48,54,52,57,50,53,10,118,110,32,32,48,46,52,56,49,51,57,57,32,48,46,55,51,50,52,54,57,32,45,48,46,52,56,49,51,57,57,10,118,110,32,32,48,46,54, 49,52,56,48,52,32,48,46,52,57,51,57,57,55,32,45,48,46,54,49,52,56,48,52,10,118,110,32,32,45,48,46,56,57,51,48,49,52,32,45,48,46,50,53,54,51,52,53,32,48,46,51,54,57,56,56,50,10,118,110,32,32,45,48,46,56,57,51,52,51,55,32,48,46,50,53,53,57,57,54,32,48, 46,51,54,57,49,48,50,10,118,110,32,32,45,48,46,48,56,51,56,55,55,32,48,46,57,57,53,56,52,51,32,48,46,48,51,53,53,48,55,10,118,110,32,32,48,46,54,50,57,55,50,52,32,48,46,55,51,49,56,54,48,32,45,48,46,50,54,48,52,51,57,10,118,110,32,32,48,46,56,48,51,55, 50,53,32,48,46,52,57,51,51,54,57,32,45,48,46,51,51,50,53,56,52,10,118,110,32,32,48,46,57,49,53,51,50,49,32,48,46,52,48,50,55,50,53,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,57,52,49,56,48,56,32,48,46,51,51,54,49,53,49,32,48,46,48,48,48,48, 48,48,10,118,110,32,32,48,46,57,55,56,54,57,48,32,48,46,50,48,53,51,52,50,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,57,57,55,56,48,52,32,45,48,46,48,54,54,50,52,48,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,56,52,53,52,51,56,32,48,46, 52,48,51,53,52,54,32,48,46,51,52,57,56,51,53,10,118,110,32,32,48,46,56,54,57,57,57,54,32,48,46,51,51,54,56,53,57,32,48,46,51,54,48,48,52,55,10,118,110,32,32,48,46,57,48,52,49,57,51,32,48,46,50,48,53,55,57,49,32,48,46,51,55,52,50,56,48,10,118,110,32,32, 48,46,57,50,49,56,55,57,32,45,48,46,48,54,54,51,55,48,32,48,46,51,56,49,55,53,50,10,118,110,32,32,48,46,54,52,54,56,48,50,32,48,46,52,48,52,48,57,54,32,48,46,54,52,54,56,48,50,10,118,110,32,32,48,46,54,54,53,54,53,53,32,48,46,51,51,55,51,53,49,32,48, 46,54,54,53,54,53,53,10,118,110,32,32,48,46,54,57,49,57,50,51,32,48,46,50,48,54,49,50,48,32,48,46,54,57,49,57,50,51,10,118,110,32,32,48,46,55,48,53,53,52,51,32,45,48,46,48,54,54,52,56,48,32,48,46,55,48,53,53,52,50,10,118,110,32,32,48,46,51,52,57,56,51, 53,32,48,46,52,48,51,53,52,54,32,48,46,56,52,53,52,51,56,10,118,110,32,32,48,46,51,54,48,48,52,55,32,48,46,51,51,54,56,53,57,32,48,46,56,54,57,57,57,54,10,118,110,32,32,48,46,51,55,52,50,56,48,32,48,46,50,48,53,55,57,49,32,48,46,57,48,52,49,57,51,10, 118,110,32,32,48,46,51,56,49,55,53,50,32,45,48,46,48,54,54,51,54,57,32,48,46,57,50,49,56,55,57,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,52,48,50,55,50,53,32,48,46,57,49,53,51,50,49,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,48,46,51,51,54, 49,53,49,32,48,46,57,52,49,56,48,56,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,50,48,53,51,52,50,32,48,46,57,55,56,54,57,48,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,48,46,48,54,54,50,52,48,32,48,46,57,57,55,56,48,52,10,118,110,32,32,45,48, 46,51,52,57,56,51,53,32,48,46,52,48,51,53,52,54,32,48,46,56,52,53,52,51,56,10,118,110,32,32,45,48,46,51,54,48,48,52,55,32,48,46,51,51,54,56,53,57,32,48,46,56,54,57,57,57,54,10,118,110,32,32,45,48,46,51,55,52,50,56,48,32,48,46,50,48,53,55,57,49,32,48, 46,57,48,52,49,57,51,10,118,110,32,32,45,48,46,51,56,49,55,53,50,32,45,48,46,48,54,54,51,55,48,32,48,46,57,50,49,56,55,57,10,118,110,32,32,45,48,46,54,52,54,56,48,50,32,48,46,52,48,52,48,57,54,32,48,46,54,52,54,56,48,50,10,118,110,32,32,45,48,46,54,54, 53,54,53,53,32,48,46,51,51,55,51,53,49,32,48,46,54,54,53,54,53,53,10,118,110,32,32,45,48,46,54,57,49,57,50,51,32,48,46,50,48,54,49,50,48,32,48,46,54,57,49,57,50,51,10,118,110,32,32,45,48,46,55,48,53,53,52,50,32,45,48,46,48,54,54,52,56,48,32,48,46,55, 48,53,53,52,51,10,118,110,32,32,45,48,46,56,52,53,52,51,56,32,48,46,52,48,51,53,52,54,32,48,46,51,52,57,56,51,53,10,118,110,32,32,45,48,46,56,54,57,57,57,54,32,48,46,51,51,54,56,53,57,32,48,46,51,54,48,48,52,55,10,118,110,32,32,45,48,46,57,48,52,49,57, 51,32,48,46,50,48,53,55,57,49,32,48,46,51,55,52,50,56,48,10,118,110,32,32,45,48,46,57,50,49,56,55,57,32,45,48,46,48,54,54,51,54,57,32,48,46,51,56,49,55,53,50,10,118,110,32,32,45,48,46,57,49,53,51,50,49,32,48,46,52,48,50,55,50,53,32,48,46,48,48,48,48, 48,48,10,118,110,32,32,45,48,46,57,52,49,56,48,56,32,48,46,51,51,54,49,53,49,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,57,55,56,54,57,48,32,48,46,50,48,53,51,52,50,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,57,57,55,56,48,52,32, 45,48,46,48,54,54,50,52,48,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,56,52,53,52,51,56,32,48,46,52,48,51,53,52,54,32,45,48,46,51,52,57,56,51,53,10,118,110,32,32,45,48,46,56,54,57,57,57,54,32,48,46,51,51,54,56,53,57,32,45,48,46,51,54,48,48, 52,55,10,118,110,32,32,45,48,46,57,48,52,49,57,51,32,48,46,50,48,53,55,57,49,32,45,48,46,51,55,52,50,56,48,10,118,110,32,32,45,48,46,57,50,49,56,55,57,32,45,48,46,48,54,54,51,55,48,32,45,48,46,51,56,49,55,53,50,10,118,110,32,32,45,48,46,54,52,54,56,48, 50,32,48,46,52,48,52,48,57,54,32,45,48,46,54,52,54,56,48,50,10,118,110,32,32,45,48,46,54,54,53,54,53,53,32,48,46,51,51,55,51,53,49,32,45,48,46,54,54,53,54,53,53,10,118,110,32,32,45,48,46,54,57,49,57,50,51,32,48,46,50,48,54,49,50,48,32,45,48,46,54,57, 49,57,50,51,10,118,110,32,32,45,48,46,55,48,53,53,52,51,32,45,48,46,48,54,54,52,56,48,32,45,48,46,55,48,53,53,52,50,10,118,110,32,32,45,48,46,51,52,57,56,51,53,32,48,46,52,48,51,53,52,54,32,45,48,46,56,52,53,52,51,56,10,118,110,32,32,45,48,46,51,54,48, 48,52,55,32,48,46,51,51,54,56,53,57,32,45,48,46,56,54,57,57,57,54,10,118,110,32,32,45,48,46,51,55,52,50,56,48,32,48,46,50,48,53,55,57,49,32,45,48,46,57,48,52,49,57,51,10,118,110,32,32,45,48,46,51,56,49,55,53,50,32,45,48,46,48,54,54,51,54,57,32,45,48, 46,57,50,49,56,55,57,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,48,46,52,48,50,55,50,53,32,45,48,46,57,49,53,51,50,49,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,51,51,54,49,53,49,32,45,48,46,57,52,49,56,48,56,10,118,110,32,32,45,48,46,48,48, 48,48,48,48,32,48,46,50,48,53,51,52,50,32,45,48,46,57,55,56,54,57,48,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,45,48,46,48,54,54,50,52,48,32,45,48,46,57,57,55,56,48,52,10,118,110,32,32,48,46,51,52,57,56,51,53,32,48,46,52,48,51,53,52,54,32,45,48, 46,56,52,53,52,51,56,10,118,110,32,32,48,46,51,54,48,48,52,55,32,48,46,51,51,54,56,53,57,32,45,48,46,56,54,57,57,57,54,10,118,110,32,32,48,46,51,55,52,50,56,48,32,48,46,50,48,53,55,57,49,32,45,48,46,57,48,52,49,57,51,10,118,110,32,32,48,46,51,56,49,55, 53,50,32,45,48,46,48,54,54,51,55,48,32,45,48,46,57,50,49,56,55,57,10,118,110,32,32,48,46,54,52,54,56,48,50,32,48,46,52,48,52,48,57,54,32,45,48,46,54,52,54,56,48,50,10,118,110,32,32,48,46,54,54,53,54,53,53,32,48,46,51,51,55,51,53,49,32,45,48,46,54,54, 53,54,53,53,10,118,110,32,32,48,46,54,57,49,57,50,51,32,48,46,50,48,54,49,50,48,32,45,48,46,54,57,49,57,50,51,10,118,110,32,32,48,46,55,48,53,53,52,50,32,45,48,46,48,54,54,52,56,48,32,45,48,46,55,48,53,53,52,51,10,118,110,32,32,48,46,56,52,53,52,51,56, 32,48,46,52,48,51,53,52,54,32,45,48,46,51,52,57,56,51,53,10,118,110,32,32,48,46,56,54,57,57,57,54,32,48,46,51,51,54,56,53,57,32,45,48,46,51,54,48,48,52,55,10,118,110,32,32,48,46,57,48,52,49,57,51,32,48,46,50,48,53,55,57,49,32,45,48,46,51,55,52,50,56, 48,10,118,110,32,32,48,46,57,50,49,56,55,57,32,45,48,46,48,54,54,51,54,57,32,45,48,46,51,56,49,55,53,50,10,118,110,32,32,48,46,57,48,48,49,56,50,32,45,48,46,52,51,53,53,49,51,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,55,50,57,54,49,49,32,45,48, 46,54,56,51,56,54,51,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,54,57,51,57,53,49,32,45,48,46,55,50,48,48,50,50,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,55,57,51,57,53,48,32,45,48,46,54,48,55,57,56,51,32,48,46,48,48,48,48,48,48,10, 118,110,32,32,48,46,56,51,49,52,51,55,32,45,48,46,52,51,54,49,56,48,32,48,46,51,52,52,49,55,57,10,118,110,32,32,48,46,54,55,51,53,49,50,32,45,48,46,54,56,52,54,54,54,32,48,46,50,55,56,53,57,52,10,118,110,32,32,48,46,54,52,48,51,57,57,32,45,48,46,55,50, 48,57,50,52,32,48,46,50,54,52,56,55,52,10,118,110,32,32,48,46,55,51,50,57,52,57,32,45,48,46,54,48,56,57,57,53,32,48,46,51,48,51,49,54,55,10,118,110,32,32,48,46,54,51,54,48,57,50,32,45,48,46,52,51,54,55,55,56,32,48,46,54,51,54,48,57,50,10,118,110,32,32, 48,46,53,49,52,57,54,53,32,45,48,46,54,56,53,50,57,48,32,48,46,53,49,52,57,54,53,10,118,110,32,32,48,46,52,56,57,54,53,49,32,45,48,46,55,50,49,52,52,54,32,48,46,52,56,57,54,53,49,10,118,110,32,32,48,46,53,54,48,53,53,53,32,45,48,46,54,48,57,53,53,52, 32,48,46,53,54,48,53,53,53,10,118,110,32,32,48,46,51,52,52,49,55,57,32,45,48,46,52,51,54,49,56,48,32,48,46,56,51,49,52,51,55,10,118,110,32,32,48,46,50,55,56,53,57,53,32,45,48,46,54,56,52,54,54,54,32,48,46,54,55,51,53,49,50,10,118,110,32,32,48,46,50,54, 52,56,55,52,32,45,48,46,55,50,48,57,50,52,32,48,46,54,52,48,51,57,57,10,118,110,32,32,48,46,51,48,51,49,54,55,32,45,48,46,54,48,56,57,57,53,32,48,46,55,51,50,57,52,57,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,45,48,46,52,51,53,53,49,51,32,48,46, 57,48,48,49,56,50,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,45,48,46,54,56,51,56,54,51,32,48,46,55,50,57,54,49,49,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,48,46,55,50,48,48,50,50,32,48,46,54,57,51,57,53,49,10,118,110,32,32,45,48,46,48,48,48, 48,48,48,32,45,48,46,54,48,55,57,56,51,32,48,46,55,57,51,57,53,48,10,118,110,32,32,45,48,46,51,52,52,49,55,57,32,45,48,46,52,51,54,49,56,48,32,48,46,56,51,49,52,51,55,10,118,110,32,32,45,48,46,50,55,56,53,57,52,32,45,48,46,54,56,52,54,54,54,32,48,46, 54,55,51,53,49,50,10,118,110,32,32,45,48,46,50,54,52,56,55,52,32,45,48,46,55,50,48,57,50,52,32,48,46,54,52,48,51,57,57,10,118,110,32,32,45,48,46,51,48,51,49,54,55,32,45,48,46,54,48,56,57,57,53,32,48,46,55,51,50,57,52,57,10,118,110,32,32,45,48,46,54,51, 54,48,57,50,32,45,48,46,52,51,54,55,55,56,32,48,46,54,51,54,48,57,50,10,118,110,32,32,45,48,46,53,49,52,57,54,53,32,45,48,46,54,56,53,50,57,48,32,48,46,53,49,52,57,54,53,10,118,110,32,32,45,48,46,52,56,57,54,53,49,32,45,48,46,55,50,49,52,52,54,32,48, 46,52,56,57,54,53,49,10,118,110,32,32,45,48,46,53,54,48,53,53,53,32,45,48,46,54,48,57,53,53,52,32,48,46,53,54,48,53,53,53,10,118,110,32,32,45,48,46,56,51,49,52,51,55,32,45,48,46,52,51,54,49,56,48,32,48,46,51,52,52,49,55,57,10,118,110,32,32,45,48,46,54, 55,51,53,49,50,32,45,48,46,54,56,52,54,54,54,32,48,46,50,55,56,53,57,53,10,118,110,32,32,45,48,46,54,52,48,51,57,57,32,45,48,46,55,50,48,57,50,52,32,48,46,50,54,52,56,55,52,10,118,110,32,32,45,48,46,55,51,50,57,52,57,32,45,48,46,54,48,56,57,57,53,32, 48,46,51,48,51,49,54,55,10,118,110,32,32,45,48,46,57,48,48,49,56,50,32,45,48,46,52,51,53,53,49,51,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,55,50,57,54,49,49,32,45,48,46,54,56,51,56,54,51,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,45, 48,46,54,57,51,57,53,49,32,45,48,46,55,50,48,48,50,50,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,55,57,51,57,53,48,32,45,48,46,54,48,55,57,56,51,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,56,51,49,52,51,55,32,45,48,46,52,51,54, 49,56,48,32,45,48,46,51,52,52,49,55,57,10,118,110,32,32,45,48,46,54,55,51,53,49,50,32,45,48,46,54,56,52,54,54,54,32,45,48,46,50,55,56,53,57,52,10,118,110,32,32,45,48,46,54,52,48,51,57,57,32,45,48,46,55,50,48,57,50,52,32,45,48,46,50,54,52,56,55,52,10, 118,110,32,32,45,48,46,55,51,50,57,52,57,32,45,48,46,54,48,56,57,57,53,32,45,48,46,51,48,51,49,54,55,10,118,110,32,32,45,48,46,54,51,54,48,57,50,32,45,48,46,52,51,54,55,55,56,32,45,48,46,54,51,54,48,57,50,10,118,110,32,32,45,48,46,53,49,52,57,54,53,32, 45,48,46,54,56,53,50,57,48,32,45,48,46,53,49,52,57,54,53,10,118,110,32,32,45,48,46,52,56,57,54,53,49,32,45,48,46,55,50,49,52,52,54,32,45,48,46,52,56,57,54,53,49,10,118,110,32,32,45,48,46,53,54,48,53,53,53,32,45,48,46,54,48,57,53,53,52,32,45,48,46,53, 54,48,53,53,53,10,118,110,32,32,45,48,46,51,52,52,49,55,57,32,45,48,46,52,51,54,49,56,48,32,45,48,46,56,51,49,52,51,55,10,118,110,32,32,45,48,46,50,55,56,53,57,53,32,45,48,46,54,56,52,54,54,54,32,45,48,46,54,55,51,53,49,50,10,118,110,32,32,45,48,46,50, 54,52,56,55,52,32,45,48,46,55,50,48,57,50,52,32,45,48,46,54,52,48,51,57,57,10,118,110,32,32,45,48,46,51,48,51,49,54,55,32,45,48,46,54,48,56,57,57,53,32,45,48,46,55,51,50,57,52,57,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,48,46,52,51,53,53,49,51, 32,45,48,46,57,48,48,49,56,50,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,48,46,54,56,51,56,54,51,32,45,48,46,55,50,57,54,49,49,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,45,48,46,55,50,48,48,50,50,32,45,48,46,54,57,51,57,53,49,10,118,110,32,32, 48,46,48,48,48,48,48,48,32,45,48,46,54,48,55,57,56,51,32,45,48,46,55,57,51,57,53,48,10,118,110,32,32,48,46,51,52,52,49,55,57,32,45,48,46,52,51,54,49,56,48,32,45,48,46,56,51,49,52,51,55,10,118,110,32,32,48,46,50,55,56,53,57,52,32,45,48,46,54,56,52,54, 54,54,32,45,48,46,54,55,51,53,49,50,10,118,110,32,32,48,46,50,54,52,56,55,52,32,45,48,46,55,50,48,57,50,52,32,45,48,46,54,52,48,51,57,57,10,118,110,32,32,48,46,51,48,51,49,54,55,32,45,48,46,54,48,56,57,57,53,32,45,48,46,55,51,50,57,52,57,10,118,110,32, 32,48,46,54,51,54,48,57,50,32,45,48,46,52,51,54,55,55,56,32,45,48,46,54,51,54,48,57,50,10,118,110,32,32,48,46,53,49,52,57,54,53,32,45,48,46,54,56,53,50,57,48,32,45,48,46,53,49,52,57,54,53,10,118,110,32,32,48,46,52,56,57,54,53,49,32,45,48,46,55,50,49, 52,52,54,32,45,48,46,52,56,57,54,53,49,10,118,110,32,32,48,46,53,54,48,53,53,53,32,45,48,46,54,48,57,53,53,52,32,45,48,46,53,54,48,53,53,53,10,118,110,32,32,48,46,56,51,49,52,51,55,32,45,48,46,52,51,54,49,56,48,32,45,48,46,51,52,52,49,55,57,10,118,110, 32,32,48,46,54,55,51,53,49,50,32,45,48,46,54,56,52,54,54,54,32,45,48,46,50,55,56,53,57,53,10,118,110,32,32,48,46,54,52,48,51,57,57,32,45,48,46,55,50,48,57,50,52,32,45,48,46,50,54,52,56,55,52,10,118,110,32,32,48,46,55,51,50,57,52,57,32,45,48,46,54,48, 56,57,57,53,32,45,48,46,51,48,51,49,54,55,10,118,110,32,32,48,46,54,50,51,56,54,48,32,45,48,46,55,56,49,53,51,54,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,49,55,55,50,57,49,32,45,48,46,57,56,52,49,53,57,32,45,48,46,48,48,48,48,48,48,10,118,110, 32,32,48,46,48,52,57,50,48,55,32,45,48,46,57,57,56,55,56,57,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,49,46,48,48,48,48,48,48,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,53,55,54,50,51,48,32,45,48,46,55,56,49,56, 48,49,32,48,46,50,51,56,50,49,55,10,118,110,32,32,48,46,49,54,51,54,50,56,32,45,48,46,57,56,52,50,48,56,32,48,46,48,54,55,53,50,55,10,118,110,32,32,48,46,48,52,53,52,50,50,32,45,48,46,57,57,56,55,57,50,32,48,46,48,49,56,55,51,54,10,118,110,32,32,48,46, 52,52,48,52,49,54,32,45,48,46,55,56,50,51,52,56,32,48,46,52,52,48,52,49,54,10,118,110,32,32,48,46,49,50,52,57,48,51,32,45,48,46,57,56,52,50,55,54,32,48,46,49,50,52,57,48,51,10,118,110,32,32,48,46,48,51,52,54,54,50,32,45,48,46,57,57,56,55,57,56,32,48, 46,48,51,52,54,54,50,10,118,110,32,32,48,46,50,51,56,50,49,55,32,45,48,46,55,56,49,56,48,49,32,48,46,53,55,54,50,51,48,10,118,110,32,32,48,46,48,54,55,53,50,55,32,45,48,46,57,56,52,50,48,56,32,48,46,49,54,51,54,50,56,10,118,110,32,32,48,46,48,49,56,55, 51,54,32,45,48,46,57,57,56,55,57,50,32,48,46,48,52,53,52,50,50,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,45,48,46,55,56,49,53,51,54,32,48,46,54,50,51,56,54,48,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,48,46,57,56,52,49,53,57,32,48,46,49,55, 55,50,57,49,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,45,48,46,57,57,56,55,56,57,32,48,46,48,52,57,50,48,55,10,118,110,32,32,45,48,46,50,51,56,50,49,55,32,45,48,46,55,56,49,56,48,49,32,48,46,53,55,54,50,51,48,10,118,110,32,32,45,48,46,48,54,55,53, 50,55,32,45,48,46,57,56,52,50,48,56,32,48,46,49,54,51,54,50,56,10,118,110,32,32,45,48,46,48,49,56,55,51,54,32,45,48,46,57,57,56,55,57,50,32,48,46,48,52,53,52,50,50,10,118,110,32,32,45,48,46,52,52,48,52,49,54,32,45,48,46,55,56,50,51,52,56,32,48,46,52, 52,48,52,49,54,10,118,110,32,32,45,48,46,49,50,52,57,48,51,32,45,48,46,57,56,52,50,55,54,32,48,46,49,50,52,57,48,51,10,118,110,32,32,45,48,46,48,51,52,54,54,50,32,45,48,46,57,57,56,55,57,56,32,48,46,48,51,52,54,54,50,10,118,110,32,32,45,48,46,53,55,54, 50,51,48,32,45,48,46,55,56,49,56,48,49,32,48,46,50,51,56,50,49,55,10,118,110,32,32,45,48,46,49,54,51,54,50,56,32,45,48,46,57,56,52,50,48,56,32,48,46,48,54,55,53,50,55,10,118,110,32,32,45,48,46,48,52,53,52,50,50,32,45,48,46,57,57,56,55,57,50,32,48,46, 48,49,56,55,51,54,10,118,110,32,32,45,48,46,54,50,51,56,54,48,32,45,48,46,55,56,49,53,51,54,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,49,55,55,50,57,49,32,45,48,46,57,56,52,49,53,57,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,48, 52,57,50,48,55,32,45,48,46,57,57,56,55,56,57,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,53,55,54,50,51,48,32,45,48,46,55,56,49,56,48,49,32,45,48,46,50,51,56,50,49,55,10,118,110,32,32,45,48,46,49,54,51,54,50,56,32,45,48,46,57,56,52,50,48, 56,32,45,48,46,48,54,55,53,50,55,10,118,110,32,32,45,48,46,48,52,53,52,50,50,32,45,48,46,57,57,56,55,57,50,32,45,48,46,48,49,56,55,51,54,10,118,110,32,32,45,48,46,52,52,48,52,49,54,32,45,48,46,55,56,50,51,52,56,32,45,48,46,52,52,48,52,49,54,10,118,110, 32,32,45,48,46,49,50,52,57,48,51,32,45,48,46,57,56,52,50,55,54,32,45,48,46,49,50,52,57,48,51,10,118,110,32,32,45,48,46,48,51,52,54,54,50,32,45,48,46,57,57,56,55,57,56,32,45,48,46,48,51,52,54,54,50,10,118,110,32,32,45,48,46,50,51,56,50,49,55,32,45,48, 46,55,56,49,56,48,49,32,45,48,46,53,55,54,50,51,48,10,118,110,32,32,45,48,46,48,54,55,53,50,55,32,45,48,46,57,56,52,50,48,56,32,45,48,46,49,54,51,54,50,56,10,118,110,32,32,45,48,46,48,49,56,55,51,54,32,45,48,46,57,57,56,55,57,50,32,45,48,46,48,52,53, 52,50,50,10,118,110,32,32,48,46,48,48,48,48,48,48,32,45,48,46,55,56,49,53,51,54,32,45,48,46,54,50,51,56,54,48,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,45,48,46,57,56,52,49,53,57,32,45,48,46,49,55,55,50,57,49,10,118,110,32,32,48,46,48,48,48,48,48, 48,32,45,48,46,57,57,56,55,56,57,32,45,48,46,48,52,57,50,48,55,10,118,110,32,32,48,46,50,51,56,50,49,55,32,45,48,46,55,56,49,56,48,49,32,45,48,46,53,55,54,50,51,48,10,118,110,32,32,48,46,48,54,55,53,50,55,32,45,48,46,57,56,52,50,48,56,32,45,48,46,49, 54,51,54,50,56,10,118,110,32,32,48,46,48,49,56,55,51,54,32,45,48,46,57,57,56,55,57,50,32,45,48,46,48,52,53,52,50,50,10,118,110,32,32,48,46,52,52,48,52,49,54,32,45,48,46,55,56,50,51,52,56,32,45,48,46,52,52,48,52,49,54,10,118,110,32,32,48,46,49,50,52,57, 48,51,32,45,48,46,57,56,52,50,55,54,32,45,48,46,49,50,52,57,48,51,10,118,110,32,32,48,46,48,51,52,54,54,50,32,45,48,46,57,57,56,55,57,56,32,45,48,46,48,51,52,54,54,50,10,118,110,32,32,48,46,53,55,54,50,51,48,32,45,48,46,55,56,49,56,48,49,32,45,48,46, 50,51,56,50,49,55,10,118,110,32,32,48,46,49,54,51,54,50,56,32,45,48,46,57,56,52,50,48,56,32,45,48,46,48,54,55,53,50,55,10,118,110,32,32,48,46,48,52,53,52,50,50,32,45,48,46,57,57,56,55,57,50,32,45,48,46,48,49,56,55,51,54,10,118,110,32,32,48,46,48,48,55, 55,56,54,32,45,48,46,57,57,57,57,55,48,32,45,48,46,48,48,48,50,49,54,10,118,110,32,32,48,46,48,51,57,49,51,56,32,45,48,46,57,57,57,50,51,51,32,45,48,46,48,48,48,57,56,57,10,118,110,32,32,48,46,49,55,57,53,49,50,32,45,48,46,57,56,51,55,52,54,32,45,48, 46,48,48,52,51,54,57,10,118,110,32,32,48,46,54,49,50,50,57,57,32,45,48,46,55,57,48,53,53,55,32,45,48,46,48,49,48,52,54,48,10,118,110,32,32,48,46,57,56,54,49,53,50,32,45,48,46,49,54,53,55,48,56,32,45,48,46,48,48,54,54,55,48,10,118,110,32,32,48,46,48,48, 55,48,51,57,32,45,48,46,56,49,50,52,57,53,32,48,46,53,56,50,57,50,54,10,118,110,32,32,48,46,48,51,54,49,50,55,32,45,48,46,56,51,55,50,53,55,32,48,46,53,52,53,54,49,52,10,118,110,32,32,48,46,49,54,49,56,52,54,32,45,48,46,56,49,48,52,50,49,32,48,46,53, 54,51,48,52,56,10,118,110,32,32,48,46,52,56,50,51,54,53,32,45,48,46,53,57,53,49,52,56,32,48,46,54,52,50,55,52,54,10,118,110,32,32,48,46,55,51,56,55,50,48,32,45,48,46,49,49,52,53,57,52,32,48,46,54,54,52,49,57,57,10,118,110,32,32,45,48,46,48,48,49,57,48, 57,32,48,46,49,54,50,49,50,49,32,48,46,57,56,54,55,54,57,10,118,110,32,32,48,46,48,48,50,55,54,50,32,48,46,48,49,55,49,48,55,32,48,46,57,57,57,56,53,48,10,118,110,32,32,48,46,48,49,48,53,51,51,32,48,46,48,55,51,51,57,56,32,48,46,57,57,55,50,52,55,10, 118,110,32,32,45,48,46,48,54,54,48,52,49,32,48,46,49,51,48,48,55,48,32,48,46,57,56,57,51,48,51,10,118,110,32,32,45,48,46,48,57,52,52,50,55,32,48,46,48,49,54,53,57,52,32,48,46,57,57,53,51,57,51,10,118,110,32,32,45,48,46,48,48,57,50,48,51,32,48,46,56,55, 49,53,48,57,32,48,46,52,57,48,50,57,51,10,118,110,32,32,45,48,46,48,52,56,54,48,54,32,48,46,56,52,48,54,48,57,32,48,46,53,51,57,52,53,55,10,118,110,32,32,45,48,46,50,50,51,50,57,56,32,48,46,56,48,50,56,56,48,32,48,46,53,53,50,55,51,57,10,118,110,32,32, 45,48,46,53,57,54,51,54,53,32,48,46,53,53,57,57,55,49,32,48,46,53,55,53,49,51,53,10,118,110,32,32,45,48,46,56,48,51,51,51,55,32,48,46,48,54,56,50,51,54,32,48,46,53,57,49,54,48,51,10,118,110,32,32,45,48,46,48,49,48,53,54,49,32,48,46,57,57,57,57,52,52, 32,48,46,48,48,48,49,48,51,10,118,110,32,32,45,48,46,48,53,56,55,57,56,32,48,46,57,57,56,50,55,48,32,48,46,48,48,48,55,49,48,10,118,110,32,32,45,48,46,50,56,48,55,49,48,32,48,46,57,53,57,55,56,55,32,48,46,48,48,51,50,54,57,10,118,110,32,32,45,48,46,55, 52,57,55,50,51,32,48,46,54,54,49,55,51,56,32,48,46,48,48,52,50,54,56,10,118,110,32,32,45,48,46,57,57,55,51,53,49,32,48,46,48,55,50,55,49,52,32,48,46,48,48,50,48,53,57,10,118,110,32,32,45,48,46,48,48,56,55,57,50,32,48,46,56,55,49,52,57,51,32,45,48,46, 52,57,48,51,51,48,10,118,110,32,32,45,48,46,48,52,54,52,57,52,32,48,46,56,52,49,49,55,56,32,45,48,46,53,51,56,55,53,54,10,118,110,32,32,45,48,46,50,49,55,57,48,57,32,48,46,56,48,54,56,48,55,32,45,48,46,53,52,57,49,54,49,10,118,110,32,32,45,48,46,53,57, 55,50,57,49,32,48,46,53,54,48,48,50,54,32,45,48,46,53,55,52,49,50,49,10,118,110,32,32,45,48,46,56,48,52,48,48,48,32,48,46,48,54,50,57,49,51,32,45,48,46,53,57,49,50,57,50,10,118,110,32,32,45,48,46,48,48,49,56,48,54,32,48,46,49,54,49,54,57,49,32,45,48, 46,57,56,54,56,52,48,10,118,110,32,32,48,46,48,48,50,48,51,49,32,48,46,48,49,52,53,53,53,32,45,48,46,57,57,57,56,57,50,10,118,110,32,32,48,46,48,48,57,50,49,53,32,48,46,48,54,48,48,54,57,32,45,48,46,57,57,56,49,53,50,10,118,110,32,32,45,48,46,48,53,57, 51,51,52,32,48,46,49,49,51,56,54,53,32,45,48,46,57,57,49,55,50,51,10,118,110,32,32,45,48,46,48,56,54,56,57,57,32,48,46,48,49,50,50,57,48,32,45,48,46,57,57,54,49,52,49,10,118,110,32,32,48,46,48,48,54,52,49,56,32,45,48,46,56,49,50,51,55,57,32,45,48,46, 53,56,51,48,57,53,10,118,110,32,32,48,46,48,51,51,55,56,51,32,45,48,46,56,51,55,53,49,50,32,45,48,46,53,52,53,51,55,51,10,118,110,32,32,48,46,49,53,55,49,49,51,32,45,48,46,56,49,49,57,52,55,32,45,48,46,53,54,50,49,57,48,10,118,110,32,32,48,46,52,56,52, 52,48,54,32,45,48,46,53,56,57,51,54,54,32,45,48,46,54,52,54,53,50,56,10,118,110,32,32,48,46,55,51,56,56,55,48,32,45,48,46,49,48,49,51,50,48,32,45,48,46,54,54,54,49,56,55,10,118,110,32,32,48,46,57,52,54,53,49,50,32,48,46,51,50,50,54,53,48,32,45,48,46, 48,48,51,51,53,55,10,118,110,32,32,48,46,56,50,53,56,51,48,32,48,46,53,54,51,56,55,48,32,45,48,46,48,48,55,52,53,50,10,118,110,32,32,48,46,54,53,48,48,49,49,32,48,46,55,53,57,56,57,51,32,45,48,46,48,48,54,57,51,55,10,118,110,32,32,48,46,53,51,50,52,50, 57,32,48,46,56,52,54,52,53,57,32,45,48,46,48,48,53,50,52,53,10,118,110,32,32,48,46,55,50,53,54,48,56,32,48,46,50,53,57,51,53,49,32,48,46,54,51,55,51,54,49,10,118,110,32,32,48,46,54,52,53,57,52,53,32,48,46,52,54,49,57,56,56,32,48,46,54,48,55,55,49,57, 10,118,110,32,32,48,46,53,51,49,54,49,53,32,48,46,54,51,54,54,54,48,32,48,46,53,53,56,54,49,52,10,118,110,32,32,48,46,52,50,52,57,54,52,32,48,46,54,56,49,55,49,55,32,48,46,53,57,53,53,52,48,10,118,110,32,32,45,48,46,48,52,57,53,54,50,32,45,48,46,48,49, 57,55,53,53,32,48,46,57,57,56,53,55,54,10,118,110,32,32,45,48,46,48,51,55,56,49,54,32,45,48,46,48,51,53,54,50,52,32,48,46,57,57,56,54,53,48,10,118,110,32,32,45,48,46,48,51,55,57,49,52,32,45,48,46,48,51,54,53,49,50,32,48,46,57,57,56,54,49,52,10,118,110, 32,32,45,48,46,49,54,56,56,53,52,32,45,48,46,50,57,55,57,52,53,32,48,46,57,51,57,53,51,48,10,118,110,32,32,45,48,46,55,52,50,51,52,50,32,45,48,46,50,57,57,49,54,54,32,48,46,53,57,57,53,50,51,10,118,110,32,32,45,48,46,54,49,57,54,48,50,32,45,48,46,53, 50,57,52,48,54,32,48,46,53,55,57,53,48,50,10,118,110,32,32,45,48,46,52,56,51,55,48,56,32,45,48,46,54,56,53,55,54,48,32,48,46,53,52,51,56,51,55,10,118,110,32,32,45,48,46,52,52,53,50,57,51,32,45,48,46,55,57,52,51,53,53,32,48,46,52,49,51,49,55,55,10,118, 110,32,32,45,48,46,57,50,54,53,49,51,32,45,48,46,51,55,54,50,53,56,32,48,46,48,48,49,57,57,54,10,118,110,32,32,45,48,46,55,53,51,57,50,48,32,45,48,46,54,53,54,57,53,50,32,48,46,48,48,52,51,49,55,10,118,110,32,32,45,48,46,53,54,54,50,50,52,32,45,48,46, 56,50,52,50,52,52,32,48,46,48,48,51,52,54,49,10,118,110,32,32,45,48,46,52,56,49,56,48,52,32,45,48,46,56,55,54,50,55,55,32,48,46,48,48,49,56,53,48,10,118,110,32,32,45,48,46,55,52,52,54,55,53,32,45,48,46,50,57,52,52,50,53,32,45,48,46,53,57,56,57,55,55, 10,118,110,32,32,45,48,46,54,50,49,57,52,57,32,45,48,46,53,50,56,49,49,52,32,45,48,46,53,55,56,49,54,53,10,118,110,32,32,45,48,46,52,56,49,49,55,49,32,45,48,46,54,56,56,51,52,48,32,45,48,46,53,52,50,56,50,56,10,118,110,32,32,45,48,46,52,51,56,48,53,53, 32,45,48,46,55,57,55,48,51,53,32,45,48,46,52,49,53,55,52,52,10,118,110,32,32,45,48,46,48,52,52,51,51,55,32,45,48,46,48,49,55,48,53,54,32,45,48,46,57,57,56,56,55,49,10,118,110,32,32,45,48,46,48,50,54,49,55,54,32,45,48,46,48,50,56,49,54,54,32,45,48,46, 57,57,57,50,54,48,10,118,110,32,32,45,48,46,48,50,53,50,57,52,32,45,48,46,48,50,56,51,51,50,32,45,48,46,57,57,57,50,55,56,10,118,110,32,32,45,48,46,49,53,55,52,56,50,32,45,48,46,50,56,57,51,57,50,32,45,48,46,57,52,52,49,54,55,10,118,110,32,32,48,46,55, 50,56,50,52,52,32,48,46,50,53,50,52,49,48,32,45,48,46,54,51,55,49,52,50,10,118,110,32,32,48,46,54,52,55,48,53,53,32,48,46,52,53,57,55,50,53,32,45,48,46,54,48,56,50,53,52,10,118,110,32,32,48,46,53,50,50,57,57,52,32,48,46,54,52,48,54,53,55,32,45,48,46, 53,54,50,49,55,48,10,118,110,32,32,48,46,52,48,57,57,55,56,32,48,46,54,56,50,56,53,55,32,45,48,46,54,48,52,54,54,57,10,118,110,32,32,45,48,46,50,51,48,55,56,55,32,48,46,57,55,50,57,56,50,32,45,48,46,48,48,54,53,50,51,10,118,110,32,32,45,48,46,53,52,56, 57,51,54,32,48,46,56,51,53,56,54,51,32,45,48,46,48,48,49,53,49,49,10,118,110,32,32,45,48,46,56,55,53,54,55,49,32,48,46,52,56,50,56,48,54,32,48,46,48,48,57,56,57,51,10,118,110,32,32,45,48,46,56,55,55,53,53,52,32,48,46,52,55,57,48,57,55,32,48,46,48,49, 57,48,57,50,10,118,110,32,32,45,48,46,54,57,54,49,57,48,32,48,46,55,49,55,52,51,57,32,48,46,48,50,52,52,57,55,10,118,110,32,32,45,48,46,49,53,50,56,55,55,32,48,46,54,56,55,50,49,49,32,48,46,55,49,48,49,57,48,10,118,110,32,32,45,48,46,51,49,54,55,50,49, 32,48,46,54,51,55,55,53,48,32,48,46,55,48,50,49,49,51,10,118,110,32,32,45,48,46,54,48,49,48,54,55,32,48,46,52,55,49,52,53,50,32,48,46,54,52,53,51,51,48,10,118,110,32,32,45,48,46,54,51,53,56,56,57,32,48,46,52,52,54,48,57,48,32,48,46,54,50,57,56,48,49, 10,118,110,32,32,45,48,46,52,51,53,55,52,54,32,48,46,54,48,49,48,48,56,32,48,46,54,55,48,48,49,49,10,118,110,32,32,48,46,49,49,49,49,49,51,32,45,48,46,48,56,53,48,55,48,32,48,46,57,57,48,49,54,48,10,118,110,32,32,48,46,50,50,51,51,49,48,32,48,46,48,48, 54,53,52,48,32,48,46,57,55,52,55,50,54,10,118,110,32,32,48,46,49,57,48,48,57,55,32,48,46,49,53,52,57,54,52,32,48,46,57,54,57,52,53,56,10,118,110,32,32,48,46,48,48,53,50,55,49,32,48,46,49,56,57,52,56,50,32,48,46,57,56,49,56,55,48,10,118,110,32,32,45,48, 46,48,49,49,55,53,50,32,48,46,50,52,54,54,56,56,32,48,46,57,54,57,48,50,52,10,118,110,32,32,48,46,51,52,51,57,48,54,32,45,48,46,55,50,50,55,57,54,32,48,46,53,57,57,52,49,50,10,118,110,32,32,48,46,53,55,50,52,56,57,32,45,48,46,53,54,55,54,53,54,32,48, 46,53,57,49,54,50,55,10,118,110,32,32,48,46,55,56,55,52,51,54,32,45,48,46,50,53,54,52,53,57,32,48,46,53,54,48,53,49,50,10,118,110,32,32,48,46,54,52,55,48,57,55,32,45,48,46,51,48,54,51,55,52,32,48,46,54,57,56,49,52,49,10,118,110,32,32,48,46,52,50,55,53, 50,56,32,45,48,46,52,57,57,51,52,51,32,48,46,55,53,51,53,55,54,10,118,110,32,32,48,46,52,49,48,57,50,54,32,45,48,46,57,49,49,54,54,56,32,48,46,48,48,49,50,56,52,10,118,110,32,32,48,46,54,55,49,53,50,48,32,45,48,46,55,52,48,57,56,54,32,45,48,46,48,48, 48,56,57,57,10,118,110,32,32,48,46,57,50,50,48,50,54,32,45,48,46,51,56,55,48,54,48,32,45,48,46,48,48,55,50,53,51,10,118,110,32,32,48,46,56,52,54,57,49,48,32,45,48,46,53,51,49,53,53,54,32,45,48,46,48,49,51,56,53,52,10,118,110,32,32,48,46,53,51,53,57,50, 52,32,45,48,46,56,52,52,50,48,49,32,45,48,46,48,49,48,53,48,53,10,118,110,32,32,48,46,51,52,49,49,56,56,32,45,48,46,55,50,50,56,50,51,32,45,48,46,54,48,48,57,51,49,10,118,110,32,32,48,46,53,55,56,54,54,52,32,45,48,46,53,54,49,49,51,57,32,45,48,46,53, 57,49,56,51,56,10,118,110,32,32,48,46,55,56,52,56,54,57,32,45,48,46,50,53,49,48,50,48,32,45,48,46,53,54,54,53,52,50,10,118,110,32,32,48,46,54,52,50,54,56,49,32,45,48,46,51,48,50,50,53,55,32,45,48,46,55,48,51,57,57,48,10,118,110,32,32,48,46,52,49,56,53, 56,57,32,45,48,46,53,48,48,48,52,50,32,45,48,46,55,53,56,49,49,55,10,118,110,32,32,48,46,49,49,53,56,48,54,32,45,48,46,48,55,57,49,51,57,32,45,48,46,57,57,48,49,49,52,10,118,110,32,32,48,46,50,51,50,56,49,49,32,48,46,48,49,50,53,54,53,32,45,48,46,57, 55,50,52,52,49,10,118,110,32,32,48,46,50,48,54,54,54,50,32,48,46,49,53,51,54,48,49,32,45,48,46,57,54,54,50,56,48,10,118,110,32,32,48,46,48,50,52,53,48,48,32,48,46,49,54,49,52,52,51,32,45,48,46,57,56,54,53,55,56,10,118,110,32,32,48,46,48,48,51,51,56,50, 32,48,46,50,49,49,49,49,53,32,45,48,46,57,55,55,52,53,53,10,118,110,32,32,45,48,46,49,51,52,57,49,50,32,48,46,54,56,55,52,57,49,32,45,48,46,55,49,51,53,53,49,10,118,110,32,32,45,48,46,51,49,57,53,52,48,32,48,46,54,51,51,48,55,51,32,45,48,46,55,48,53, 48,54,51,10,118,110,32,32,45,48,46,54,48,51,57,48,50,32,48,46,52,54,49,52,52,50,32,45,48,46,54,52,57,57,48,51,10,118,110,32,32,45,48,46,54,51,49,56,49,53,32,48,46,52,51,55,49,54,57,32,45,48,46,54,52,48,48,55,50,10,118,110,32,32,45,48,46,52,50,52,51,48, 54,32,48,46,54,49,50,55,48,54,32,45,48,46,54,54,54,55,53,48,10,118,110,32,32,45,48,46,52,50,53,56,48,49,32,48,46,57,48,52,55,53,51,32,48,46,48,49,48,56,48,53,10,118,110,32,32,48,46,48,50,50,48,52,54,32,48,46,57,57,57,55,53,54,32,48,46,48,48,49,54,50, 51,10,118,110,32,32,48,46,57,57,57,53,57,56,32,48,46,48,50,53,56,55,53,32,48,46,48,49,49,53,53,54,10,118,110,32,32,48,46,55,48,57,53,56,55,32,45,48,46,55,48,52,53,53,50,32,48,46,48,48,57,54,55,50,10,118,110,32,32,45,48,46,50,53,57,56,53,56,32,48,46,55, 57,49,57,51,55,32,48,46,53,53,50,53,52,56,10,118,110,32,32,48,46,48,48,57,53,51,57,32,48,46,57,57,57,55,50,48,32,45,48,46,48,50,49,54,55,52,10,118,110,32,32,48,46,52,49,48,49,53,55,32,48,46,51,51,50,57,49,50,32,45,48,46,56,52,57,48,56,50,10,118,110,32, 32,48,46,53,52,49,53,50,51,32,45,48,46,53,52,56,54,49,57,32,45,48,46,54,51,55,48,48,49,10,118,110,32,32,48,46,48,52,54,51,49,49,32,48,46,52,53,53,50,50,51,32,48,46,56,56,57,49,55,50,10,118,110,32,32,45,48,46,48,49,48,54,56,56,32,48,46,57,56,56,55,57, 52,32,48,46,49,52,56,57,48,48,10,118,110,32,32,45,48,46,48,52,52,51,55,54,32,48,46,54,56,50,57,52,54,32,45,48,46,55,50,57,49,50,48,10,118,110,32,32,48,46,49,50,50,56,50,52,32,48,46,48,48,57,50,51,51,32,45,48,46,57,57,50,51,56,53,10,118,110,32,32,48,46, 52,56,49,56,51,57,32,45,48,46,49,56,48,52,52,48,32,48,46,56,53,55,52,56,48,10,118,110,32,32,48,46,52,53,53,50,55,50,32,48,46,55,51,54,55,53,50,32,48,46,52,57,57,57,50,53,10,118,110,32,32,45,48,46,50,50,48,53,52,50,32,48,46,57,48,55,49,57,51,32,45,48, 46,51,53,56,50,55,55,10,118,110,32,32,45,48,46,50,51,53,57,49,57,32,48,46,54,53,55,50,53,48,32,45,48,46,55,49,53,55,57,55,10,118,110,32,32,48,46,55,50,56,48,57,52,32,45,48,46,54,56,53,51,48,48,32,45,48,46,48,49,53,53,56,53,10,118,110,32,32,48,46,56,56, 56,55,51,56,32,48,46,52,53,56,49,49,50,32,45,48,46,48,49,54,54,55,57,10,118,110,32,32,45,48,46,50,54,48,48,57,56,32,48,46,57,54,53,53,56,50,32,48,46,48,48,48,56,48,48,10,118,110,32,32,45,48,46,51,55,49,54,49,49,32,48,46,57,50,56,51,55,56,32,45,48,46, 48,48,52,52,49,56,10,118,110,32,32,48,46,52,56,48,49,54,53,32,45,48,46,49,55,56,51,54,50,32,45,48,46,56,53,56,56,53,51,10,118,110,32,32,48,46,52,56,56,49,48,50,32,48,46,55,49,54,56,48,50,32,45,48,46,52,57,55,57,52,55,10,118,110,32,32,45,48,46,50,50,50, 48,48,52,32,48,46,57,48,53,51,57,57,32,48,46,51,54,49,56,57,50,10,118,110,32,32,45,48,46,50,51,53,52,48,53,32,48,46,54,54,51,49,56,48,32,48,46,55,49,48,52,55,55,10,118,110,32,32,48,46,48,53,56,55,50,48,32,48,46,52,51,55,55,48,50,32,45,48,46,56,57,55, 50,48,48,10,118,110,32,32,48,46,48,48,49,51,50,54,32,48,46,57,56,54,52,53,57,32,45,48,46,49,54,52,48,48,50,10,118,110,32,32,45,48,46,48,52,52,49,57,48,32,48,46,54,56,49,54,55,53,32,48,46,55,51,48,51,49,57,10,118,110,32,32,48,46,49,51,56,56,48,49,32,45, 48,46,48,51,52,49,56,56,32,48,46,57,56,57,55,51,48,10,118,110,32,32,45,48,46,50,53,56,56,57,48,32,48,46,55,57,55,50,48,54,32,45,48,46,53,52,53,51,56,48,10,118,110,32,32,48,46,48,49,50,50,55,48,32,48,46,57,57,57,55,51,57,32,48,46,48,49,57,50,56,55,10, 118,110,32,32,48,46,51,57,56,54,51,50,32,48,46,51,53,52,56,57,48,32,48,46,56,52,53,54,54,51,10,118,110,32,32,48,46,53,51,55,53,54,52,32,45,48,46,53,56,49,51,57,56,32,48,46,54,49,48,55,51,56,10,118,110,32,32,48,46,48,48,48,48,48,48,32,49,46,48,48,48,48, 48,48,32,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,56,50,52,53,52,48,32,48,46,53,54,53,56,48,52,32,48,46,48,48,48,48,49,55,10,118,110,32,32,48,46,57,49,55,55,48,49,32,45,48,46,51,57,55,50,55,50,32,48,46,48,48,48,48,51,52,10,118,110,32,32,48,46,57, 51,53,50,54,57,32,45,48,46,51,53,51,57,51,57,32,48,46,48,48,48,49,49,51,10,118,110,32,32,48,46,55,56,48,55,49,50,32,48,46,54,50,52,56,57,48,32,48,46,48,48,48,48,55,53,10,118,110,32,32,48,46,55,54,50,54,52,48,32,48,46,53,54,53,48,51,53,32,48,46,51,49, 52,56,50,53,10,118,110,32,32,48,46,56,52,55,57,56,50,32,45,48,46,51,57,55,57,57,56,32,48,46,51,53,48,48,51,52,10,118,110,32,32,48,46,56,54,52,49,52,49,32,45,48,46,51,53,53,50,54,49,32,48,46,51,53,54,52,52,49,10,118,110,32,32,48,46,55,50,48,57,57,50,32, 48,46,54,50,53,54,50,53,32,48,46,50,57,55,57,51,51,10,118,110,32,32,48,46,53,56,51,51,53,55,32,48,46,53,54,53,49,54,53,32,48,46,53,56,51,51,51,56,10,118,110,32,32,48,46,54,52,56,52,56,53,32,45,48,46,51,57,56,55,50,54,32,48,46,54,52,56,52,52,56,10,118, 110,32,32,48,46,54,54,48,56,55,50,32,45,48,46,51,53,53,56,57,52,32,48,46,54,54,48,55,52,56,10,118,110,32,32,48,46,53,53,49,56,54,50,32,48,46,54,50,53,50,57,48,32,48,46,53,53,49,55,56,48,10,118,110,32,32,48,46,51,49,52,56,50,52,32,48,46,53,54,53,48,53, 49,32,48,46,55,54,50,54,50,57,10,118,110,32,32,48,46,51,53,48,48,52,53,32,45,48,46,51,57,55,57,55,54,32,48,46,56,52,55,57,56,56,10,118,110,32,32,48,46,51,53,54,52,55,52,32,45,48,46,51,53,53,49,57,57,32,48,46,56,54,52,49,53,51,10,118,110,32,32,48,46,50, 57,55,57,56,51,32,48,46,54,50,53,53,49,53,32,48,46,55,50,49,48,54,55,10,118,110,32,32,45,48,46,48,48,48,48,49,55,32,48,46,53,54,53,56,48,52,32,48,46,56,50,52,53,52,48,10,118,110,32,32,45,48,46,48,48,48,48,51,52,32,45,48,46,51,57,55,50,55,50,32,48,46, 57,49,55,55,48,49,10,118,110,32,32,45,48,46,48,48,48,49,49,51,32,45,48,46,51,53,51,57,51,57,32,48,46,57,51,53,50,54,57,10,118,110,32,32,45,48,46,48,48,48,48,55,53,32,48,46,54,50,52,56,57,48,32,48,46,55,56,48,55,49,50,10,118,110,32,32,45,48,46,51,49,52, 56,50,53,32,48,46,53,54,53,48,51,53,32,48,46,55,54,50,54,52,48,10,118,110,32,32,45,48,46,51,53,48,48,51,52,32,45,48,46,51,57,55,57,57,56,32,48,46,56,52,55,57,56,50,10,118,110,32,32,45,48,46,51,53,54,52,52,49,32,45,48,46,51,53,53,50,54,49,32,48,46,56, 54,52,49,52,49,10,118,110,32,32,45,48,46,50,57,55,57,51,51,32,48,46,54,50,53,54,50,53,32,48,46,55,50,48,57,57,50,10,118,110,32,32,45,48,46,53,56,51,51,51,56,32,48,46,53,54,53,49,54,53,32,48,46,53,56,51,51,53,55,10,118,110,32,32,45,48,46,54,52,56,52,52, 56,32,45,48,46,51,57,56,55,50,54,32,48,46,54,52,56,52,56,53,10,118,110,32,32,45,48,46,54,54,48,55,52,56,32,45,48,46,51,53,53,56,57,52,32,48,46,54,54,48,56,55,50,10,118,110,32,32,45,48,46,53,53,49,55,56,48,32,48,46,54,50,53,50,57,48,32,48,46,53,53,49, 56,54,50,10,118,110,32,32,45,48,46,55,54,50,54,50,57,32,48,46,53,54,53,48,53,49,32,48,46,51,49,52,56,50,52,10,118,110,32,32,45,48,46,56,52,55,57,56,56,32,45,48,46,51,57,55,57,55,54,32,48,46,51,53,48,48,52,53,10,118,110,32,32,45,48,46,56,54,52,49,53,51, 32,45,48,46,51,53,53,49,57,57,32,48,46,51,53,54,52,55,52,10,118,110,32,32,45,48,46,55,50,49,48,54,55,32,48,46,54,50,53,53,49,53,32,48,46,50,57,55,57,56,51,10,118,110,32,32,45,48,46,56,50,52,53,52,48,32,48,46,53,54,53,56,48,52,32,45,48,46,48,48,48,48, 49,55,10,118,110,32,32,45,48,46,57,49,55,55,48,49,32,45,48,46,51,57,55,50,55,50,32,45,48,46,48,48,48,48,51,52,10,118,110,32,32,45,48,46,57,51,53,50,54,57,32,45,48,46,51,53,51,57,51,57,32,45,48,46,48,48,48,49,49,51,10,118,110,32,32,45,48,46,55,56,48,55, 49,50,32,48,46,54,50,52,56,57,48,32,45,48,46,48,48,48,48,55,53,10,118,110,32,32,45,48,46,55,54,50,54,52,48,32,48,46,53,54,53,48,51,53,32,45,48,46,51,49,52,56,50,53,10,118,110,32,32,45,48,46,56,52,55,57,56,50,32,45,48,46,51,57,55,57,57,56,32,45,48,46, 51,53,48,48,51,52,10,118,110,32,32,45,48,46,56,54,52,49,52,49,32,45,48,46,51,53,53,50,54,49,32,45,48,46,51,53,54,52,52,49,10,118,110,32,32,45,48,46,55,50,48,57,57,50,32,48,46,54,50,53,54,50,53,32,45,48,46,50,57,55,57,51,51,10,118,110,32,32,45,48,46,53, 56,51,51,53,55,32,48,46,53,54,53,49,54,53,32,45,48,46,53,56,51,51,51,56,10,118,110,32,32,45,48,46,54,52,56,52,56,53,32,45,48,46,51,57,56,55,50,54,32,45,48,46,54,52,56,52,52,56,10,118,110,32,32,45,48,46,54,54,48,56,55,50,32,45,48,46,51,53,53,56,57,52, 32,45,48,46,54,54,48,55,52,56,10,118,110,32,32,45,48,46,53,53,49,56,54,50,32,48,46,54,50,53,50,57,48,32,45,48,46,53,53,49,55,56,48,10,118,110,32,32,45,48,46,51,49,52,56,50,52,32,48,46,53,54,53,48,53,49,32,45,48,46,55,54,50,54,50,57,10,118,110,32,32,45, 48,46,51,53,48,48,52,53,32,45,48,46,51,57,55,57,55,54,32,45,48,46,56,52,55,57,56,56,10,118,110,32,32,45,48,46,51,53,54,52,55,52,32,45,48,46,51,53,53,49,57,57,32,45,48,46,56,54,52,49,53,51,10,118,110,32,32,45,48,46,50,57,55,57,56,51,32,48,46,54,50,53, 53,49,53,32,45,48,46,55,50,49,48,54,55,10,118,110,32,32,48,46,48,48,48,48,49,55,32,48,46,53,54,53,56,48,52,32,45,48,46,56,50,52,53,52,48,10,118,110,32,32,48,46,48,48,48,48,51,52,32,45,48,46,51,57,55,50,55,50,32,45,48,46,57,49,55,55,48,49,10,118,110,32, 32,48,46,48,48,48,49,49,51,32,45,48,46,51,53,51,57,51,57,32,45,48,46,57,51,53,50,54,57,10,118,110,32,32,48,46,48,48,48,48,55,53,32,48,46,54,50,52,56,57,48,32,45,48,46,55,56,48,55,49,50,10,118,110,32,32,48,46,51,49,52,56,50,53,32,48,46,53,54,53,48,51, 53,32,45,48,46,55,54,50,54,52,48,10,118,110,32,32,48,46,51,53,48,48,51,52,32,45,48,46,51,57,55,57,57,56,32,45,48,46,56,52,55,57,56,50,10,118,110,32,32,48,46,51,53,54,52,52,49,32,45,48,46,51,53,53,50,54,49,32,45,48,46,56,54,52,49,52,49,10,118,110,32,32, 48,46,50,57,55,57,51,51,32,48,46,54,50,53,54,50,53,32,45,48,46,55,50,48,57,57,50,10,118,110,32,32,48,46,53,56,51,51,51,56,32,48,46,53,54,53,49,54,53,32,45,48,46,53,56,51,51,53,55,10,118,110,32,32,48,46,54,52,56,52,52,56,32,45,48,46,51,57,56,55,50,54, 32,45,48,46,54,52,56,52,56,53,10,118,110,32,32,48,46,54,54,48,55,52,56,32,45,48,46,51,53,53,56,57,52,32,45,48,46,54,54,48,56,55,50,10,118,110,32,32,48,46,53,53,49,55,56,48,32,48,46,54,50,53,50,57,48,32,45,48,46,53,53,49,56,54,50,10,118,110,32,32,48,46, 55,54,50,54,50,57,32,48,46,53,54,53,48,53,49,32,45,48,46,51,49,52,56,50,52,10,118,110,32,32,48,46,56,52,55,57,56,56,32,45,48,46,51,57,55,57,55,54,32,45,48,46,51,53,48,48,52,53,10,118,110,32,32,48,46,56,54,52,49,53,51,32,45,48,46,51,53,53,49,57,57,32, 45,48,46,51,53,54,52,55,52,10,118,110,32,32,48,46,55,50,49,48,54,55,32,48,46,54,50,53,53,49,53,32,45,48,46,50,57,55,57,56,51,10,118,110,32,32,48,46,50,51,54,53,56,51,32,48,46,57,55,49,54,49,49,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,49,55, 51,48,56,52,32,48,46,57,56,52,57,48,55,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,51,55,57,55,48,51,32,48,46,57,50,53,49,48,56,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,48,46,53,50,54,54,55,51,32,48,46,56,53,48,48,54,56,32,48,46,48,48, 48,48,48,48,10,118,110,32,32,48,46,50,49,55,57,55,56,32,48,46,57,55,49,55,55,53,32,48,46,48,57,48,50,49,54,10,118,110,32,32,48,46,49,53,57,53,56,57,32,48,46,57,56,52,57,55,55,32,48,46,48,54,53,57,54,49,10,118,110,32,32,48,46,51,53,48,52,57,56,32,48,46, 57,50,53,51,49,49,32,48,46,49,52,52,55,52,48,10,118,110,32,32,48,46,52,56,53,53,57,48,32,48,46,56,53,48,54,53,51,32,48,46,50,48,49,52,55,52,10,118,110,32,32,48,46,49,54,54,54,51,49,32,48,46,57,55,49,56,51,56,32,48,46,49,54,54,54,51,49,10,118,110,32,32, 48,46,49,50,49,57,48,56,32,48,46,57,56,53,48,50,54,32,48,46,49,50,49,57,48,56,10,118,110,32,32,48,46,50,54,55,54,54,56,32,48,46,57,50,53,53,56,53,32,48,46,50,54,55,54,54,56,10,118,110,32,32,48,46,51,55,49,51,49,53,32,48,46,56,53,49,48,50,57,32,48,46, 51,55,49,51,49,53,10,118,110,32,32,48,46,48,57,48,50,49,54,32,48,46,57,55,49,55,55,53,32,48,46,50,49,55,57,55,56,10,118,110,32,32,48,46,48,54,53,57,54,49,32,48,46,57,56,52,57,55,55,32,48,46,49,53,57,53,56,57,10,118,110,32,32,48,46,49,52,52,55,52,48,32, 48,46,57,50,53,51,49,49,32,48,46,51,53,48,52,57,56,10,118,110,32,32,48,46,50,48,49,52,55,53,32,48,46,56,53,48,54,53,51,32,48,46,52,56,53,53,57,48,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,57,55,49,54,49,49,32,48,46,50,51,54,53,56,51,10,118,110, 32,32,48,46,48,48,48,48,48,48,32,48,46,57,56,52,57,48,55,32,48,46,49,55,51,48,56,52,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,57,50,53,49,48,56,32,48,46,51,55,57,55,48,51,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,48,46,56,53,48,48,54,56, 32,48,46,53,50,54,54,55,51,10,118,110,32,32,45,48,46,48,57,48,50,49,54,32,48,46,57,55,49,55,55,53,32,48,46,50,49,55,57,55,56,10,118,110,32,32,45,48,46,48,54,53,57,54,49,32,48,46,57,56,52,57,55,55,32,48,46,49,53,57,53,56,57,10,118,110,32,32,45,48,46,49, 52,52,55,52,48,32,48,46,57,50,53,51,49,49,32,48,46,51,53,48,52,57,56,10,118,110,32,32,45,48,46,50,48,49,52,55,52,32,48,46,56,53,48,54,53,51,32,48,46,52,56,53,53,57,48,10,118,110,32,32,45,48,46,49,54,54,54,51,49,32,48,46,57,55,49,56,51,56,32,48,46,49, 54,54,54,51,49,10,118,110,32,32,45,48,46,49,50,49,57,48,56,32,48,46,57,56,53,48,50,54,32,48,46,49,50,49,57,48,56,10,118,110,32,32,45,48,46,50,54,55,54,54,56,32,48,46,57,50,53,53,56,53,32,48,46,50,54,55,54,54,56,10,118,110,32,32,45,48,46,51,55,49,51,49, 53,32,48,46,56,53,49,48,50,57,32,48,46,51,55,49,51,49,53,10,118,110,32,32,45,48,46,50,49,55,57,55,56,32,48,46,57,55,49,55,55,53,32,48,46,48,57,48,50,49,54,10,118,110,32,32,45,48,46,49,53,57,53,56,57,32,48,46,57,56,52,57,55,55,32,48,46,48,54,53,57,54, 49,10,118,110,32,32,45,48,46,51,53,48,52,57,56,32,48,46,57,50,53,51,49,49,32,48,46,49,52,52,55,52,48,10,118,110,32,32,45,48,46,52,56,53,53,57,48,32,48,46,56,53,48,54,53,51,32,48,46,50,48,49,52,55,53,10,118,110,32,32,45,48,46,50,51,54,53,56,51,32,48,46, 57,55,49,54,49,49,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,49,55,51,48,56,52,32,48,46,57,56,52,57,48,55,32,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,51,55,57,55,48,51,32,48,46,57,50,53,49,48,56,32,48,46,48,48,48,48,48,48,10,118,110, 32,32,45,48,46,53,50,54,54,55,51,32,48,46,56,53,48,48,54,56,32,45,48,46,48,48,48,48,48,48,10,118,110,32,32,45,48,46,50,49,55,57,55,56,32,48,46,57,55,49,55,55,53,32,45,48,46,48,57,48,50,49,54,10,118,110,32,32,45,48,46,49,53,57,53,56,57,32,48,46,57,56, 52,57,55,55,32,45,48,46,48,54,53,57,54,49,10,118,110,32,32,45,48,46,51,53,48,52,57,56,32,48,46,57,50,53,51,49,49,32,45,48,46,49,52,52,55,52,48,10,118,110,32,32,45,48,46,52,56,53,53,57,48,32,48,46,56,53,48,54,53,51,32,45,48,46,50,48,49,52,55,52,10,118, 110,32,32,45,48,46,49,54,54,54,51,49,32,48,46,57,55,49,56,51,56,32,45,48,46,49,54,54,54,51,49,10,118,110,32,32,45,48,46,49,50,49,57,48,56,32,48,46,57,56,53,48,50,54,32,45,48,46,49,50,49,57,48,56,10,118,110,32,32,45,48,46,50,54,55,54,54,56,32,48,46,57, 50,53,53,56,53,32,45,48,46,50,54,55,54,54,56,10,118,110,32,32,45,48,46,51,55,49,51,49,53,32,48,46,56,53,49,48,50,57,32,45,48,46,51,55,49,51,49,53,10,118,110,32,32,45,48,46,48,57,48,50,49,54,32,48,46,57,55,49,55,55,53,32,45,48,46,50,49,55,57,55,56,10, 118,110,32,32,45,48,46,48,54,53,57,54,49,32,48,46,57,56,52,57,55,55,32,45,48,46,49,53,57,53,56,57,10,118,110,32,32,45,48,46,49,52,52,55,52,48,32,48,46,57,50,53,51,49,49,32,45,48,46,51,53,48,52,57,56,10,118,110,32,32,45,48,46,50,48,49,52,55,53,32,48,46, 56,53,48,54,53,51,32,45,48,46,52,56,53,53,57,48,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,48,46,57,55,49,54,49,49,32,45,48,46,50,51,54,53,56,51,10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,48,46,57,56,52,57,48,55,32,45,48,46,49,55,51,48,56,52, 10,118,110,32,32,45,48,46,48,48,48,48,48,48,32,48,46,57,50,53,49,48,56,32,45,48,46,51,55,57,55,48,51,10,118,110,32,32,48,46,48,48,48,48,48,48,32,48,46,56,53,48,48,54,56,32,45,48,46,53,50,54,54,55,51,10,118,110,32,32,48,46,48,57,48,50,49,54,32,48,46,57, 55,49,55,55,53,32,45,48,46,50,49,55,57,55,56,10,118,110,32,32,48,46,48,54,53,57,54,49,32,48,46,57,56,52,57,55,55,32,45,48,46,49,53,57,53,56,57,10,118,110,32,32,48,46,49,52,52,55,52,48,32,48,46,57,50,53,51,49,49,32,45,48,46,51,53,48,52,57,56,10,118,110, 32,32,48,46,50,48,49,52,55,52,32,48,46,56,53,48,54,53,51,32,45,48,46,52,56,53,53,57,48,10,118,110,32,32,48,46,49,54,54,54,51,49,32,48,46,57,55,49,56,51,56,32,45,48,46,49,54,54,54,51,49,10,118,110,32,32,48,46,49,50,49,57,48,56,32,48,46,57,56,53,48,50, 54,32,45,48,46,49,50,49,57,48,56,10,118,110,32,32,48,46,50,54,55,54,54,56,32,48,46,57,50,53,53,56,53,32,45,48,46,50,54,55,54,54,56,10,118,110,32,32,48,46,51,55,49,51,49,53,32,48,46,56,53,49,48,50,57,32,45,48,46,51,55,49,51,49,53,10,118,110,32,32,48,46, 50,49,55,57,55,56,32,48,46,57,55,49,55,55,53,32,45,48,46,48,57,48,50,49,54,10,118,110,32,32,48,46,49,53,57,53,56,57,32,48,46,57,56,52,57,55,55,32,45,48,46,48,54,53,57,54,49,10,118,110,32,32,48,46,51,53,48,52,57,56,32,48,46,57,50,53,51,49,49,32,45,48, 46,49,52,52,55,52,48,10,118,110,32,32,48,46,52,56,53,53,57,48,32,48,46,56,53,48,54,53,51,32,45,48,46,50,48,49,52,55,53,10,35,32,53,51,48,32,118,101,114,116,101,120,32,110,111,114,109,97,108,115,10,10,103,32,84,101,97,112,111,116,48,49,10,102,32,49,47, 49,47,49,32,54,47,54,47,54,32,55,47,55,47,55,10,102,32,55,47,55,47,55,32,50,47,50,47,50,32,49,47,49,47,49,10,102,32,50,47,50,47,50,32,55,47,55,47,55,32,56,47,56,47,56,10,102,32,56,47,56,47,56,32,51,47,51,47,51,32,50,47,50,47,50,10,102,32,51,47,51,47, 51,32,56,47,56,47,56,32,57,47,57,47,57,10,102,32,57,47,57,47,57,32,52,47,52,47,52,32,51,47,51,47,51,10,102,32,52,47,52,47,52,32,57,47,57,47,57,32,49,48,47,49,48,47,49,48,10,102,32,49,48,47,49,48,47,49,48,32,53,47,53,47,53,32,52,47,52,47,52,10,102,32, 54,47,54,47,54,32,49,49,47,49,49,47,49,49,32,49,50,47,49,50,47,49,50,10,102,32,49,50,47,49,50,47,49,50,32,55,47,55,47,55,32,54,47,54,47,54,10,102,32,55,47,55,47,55,32,49,50,47,49,50,47,49,50,32,49,51,47,49,51,47,49,51,10,102,32,49,51,47,49,51,47,49,51, 32,56,47,56,47,56,32,55,47,55,47,55,10,102,32,56,47,56,47,56,32,49,51,47,49,51,47,49,51,32,49,52,47,49,52,47,49,52,10,102,32,49,52,47,49,52,47,49,52,32,57,47,57,47,57,32,56,47,56,47,56,10,102,32,57,47,57,47,57,32,49,52,47,49,52,47,49,52,32,49,53,47,49, 53,47,49,53,10,102,32,49,53,47,49,53,47,49,53,32,49,48,47,49,48,47,49,48,32,57,47,57,47,57,10,102,32,49,49,47,49,49,47,49,49,32,49,54,47,49,54,47,49,54,32,49,55,47,49,55,47,49,55,10,102,32,49,55,47,49,55,47,49,55,32,49,50,47,49,50,47,49,50,32,49,49,47, 49,49,47,49,49,10,102,32,49,50,47,49,50,47,49,50,32,49,55,47,49,55,47,49,55,32,49,56,47,49,56,47,49,56,10,102,32,49,56,47,49,56,47,49,56,32,49,51,47,49,51,47,49,51,32,49,50,47,49,50,47,49,50,10,102,32,49,51,47,49,51,47,49,51,32,49,56,47,49,56,47,49,56, 32,49,57,47,49,57,47,49,57,10,102,32,49,57,47,49,57,47,49,57,32,49,52,47,49,52,47,49,52,32,49,51,47,49,51,47,49,51,10,102,32,49,52,47,49,52,47,49,52,32,49,57,47,49,57,47,49,57,32,50,48,47,50,48,47,50,48,10,102,32,50,48,47,50,48,47,50,48,32,49,53,47,49, 53,47,49,53,32,49,52,47,49,52,47,49,52,10,102,32,49,54,47,49,54,47,49,54,32,50,49,47,50,49,47,50,49,32,50,50,47,50,50,47,50,50,10,102,32,50,50,47,50,50,47,50,50,32,49,55,47,49,55,47,49,55,32,49,54,47,49,54,47,49,54,10,102,32,49,55,47,49,55,47,49,55,32, 50,50,47,50,50,47,50,50,32,50,51,47,50,51,47,50,51,10,102,32,50,51,47,50,51,47,50,51,32,49,56,47,49,56,47,49,56,32,49,55,47,49,55,47,49,55,10,102,32,49,56,47,49,56,47,49,56,32,50,51,47,50,51,47,50,51,32,50,52,47,50,52,47,50,52,10,102,32,50,52,47,50,52, 47,50,52,32,49,57,47,49,57,47,49,57,32,49,56,47,49,56,47,49,56,10,102,32,49,57,47,49,57,47,49,57,32,50,52,47,50,52,47,50,52,32,50,53,47,50,53,47,50,53,10,102,32,50,53,47,50,53,47,50,53,32,50,48,47,50,48,47,50,48,32,49,57,47,49,57,47,49,57,10,102,32,50, 49,47,50,54,47,50,49,32,50,54,47,51,49,47,50,54,32,50,55,47,51,50,47,50,55,10,102,32,50,55,47,51,50,47,50,55,32,50,50,47,50,55,47,50,50,32,50,49,47,50,54,47,50,49,10,102,32,50,50,47,50,55,47,50,50,32,50,55,47,51,50,47,50,55,32,50,56,47,51,51,47,50,56, 10,102,32,50,56,47,51,51,47,50,56,32,50,51,47,50,56,47,50,51,32,50,50,47,50,55,47,50,50,10,102,32,50,51,47,50,56,47,50,51,32,50,56,47,51,51,47,50,56,32,50,57,47,51,52,47,50,57,10,102,32,50,57,47,51,52,47,50,57,32,50,52,47,50,57,47,50,52,32,50,51,47,50, 56,47,50,51,10,102,32,50,52,47,50,57,47,50,52,32,50,57,47,51,52,47,50,57,32,51,48,47,51,53,47,51,48,10,102,32,51,48,47,51,53,47,51,48,32,50,53,47,51,48,47,50,53,32,50,52,47,50,57,47,50,52,10,102,32,50,54,47,51,49,47,50,54,32,51,49,47,51,54,47,51,49,32, 51,50,47,51,55,47,51,50,10,102,32,51,50,47,51,55,47,51,50,32,50,55,47,51,50,47,50,55,32,50,54,47,51,49,47,50,54,10,102,32,50,55,47,51,50,47,50,55,32,51,50,47,51,55,47,51,50,32,51,51,47,51,56,47,51,51,10,102,32,51,51,47,51,56,47,51,51,32,50,56,47,51,51, 47,50,56,32,50,55,47,51,50,47,50,55,10,102,32,50,56,47,51,51,47,50,56,32,51,51,47,51,56,47,51,51,32,51,52,47,51,57,47,51,52,10,102,32,51,52,47,51,57,47,51,52,32,50,57,47,51,52,47,50,57,32,50,56,47,51,51,47,50,56,10,102,32,50,57,47,51,52,47,50,57,32,51, 52,47,51,57,47,51,52,32,51,53,47,52,48,47,51,53,10,102,32,51,53,47,52,48,47,51,53,32,51,48,47,51,53,47,51,48,32,50,57,47,51,52,47,50,57,10,102,32,51,49,47,51,54,47,51,49,32,51,54,47,52,49,47,51,54,32,51,55,47,52,50,47,51,55,10,102,32,51,55,47,52,50,47, 51,55,32,51,50,47,51,55,47,51,50,32,51,49,47,51,54,47,51,49,10,102,32,51,50,47,51,55,47,51,50,32,51,55,47,52,50,47,51,55,32,51,56,47,52,51,47,51,56,10,102,32,51,56,47,52,51,47,51,56,32,51,51,47,51,56,47,51,51,32,51,50,47,51,55,47,51,50,10,102,32,51,51, 47,51,56,47,51,51,32,51,56,47,52,51,47,51,56,32,51,57,47,52,52,47,51,57,10,102,32,51,57,47,52,52,47,51,57,32,51,52,47,51,57,47,51,52,32,51,51,47,51,56,47,51,51,10,102,32,51,52,47,51,57,47,51,52,32,51,57,47,52,52,47,51,57,32,52,48,47,52,53,47,52,48,10, 102,32,52,48,47,52,53,47,52,48,32,51,53,47,52,48,47,51,53,32,51,52,47,51,57,47,51,52,10,102,32,51,54,47,52,49,47,51,54,32,52,49,47,52,54,47,52,49,32,52,50,47,52,55,47,52,50,10,102,32,52,50,47,52,55,47,52,50,32,51,55,47,52,50,47,51,55,32,51,54,47,52,49, 47,51,54,10,102,32,51,55,47,52,50,47,51,55,32,52,50,47,52,55,47,52,50,32,52,51,47,52,56,47,52,51,10,102,32,52,51,47,52,56,47,52,51,32,51,56,47,52,51,47,51,56,32,51,55,47,52,50,47,51,55,10,102,32,51,56,47,52,51,47,51,56,32,52,51,47,52,56,47,52,51,32,52, 52,47,52,57,47,52,52,10,102,32,52,52,47,52,57,47,52,52,32,51,57,47,52,52,47,51,57,32,51,56,47,52,51,47,51,56,10,102,32,51,57,47,52,52,47,51,57,32,52,52,47,52,57,47,52,52,32,52,53,47,53,48,47,52,53,10,102,32,52,53,47,53,48,47,52,53,32,52,48,47,52,53,47, 52,48,32,51,57,47,52,52,47,51,57,10,102,32,52,49,47,53,49,47,52,49,32,52,54,47,53,54,47,52,54,32,52,55,47,53,55,47,52,55,10,102,32,52,55,47,53,55,47,52,55,32,52,50,47,53,50,47,52,50,32,52,49,47,53,49,47,52,49,10,102,32,52,50,47,53,50,47,52,50,32,52,55, 47,53,55,47,52,55,32,52,56,47,53,56,47,52,56,10,102,32,52,56,47,53,56,47,52,56,32,52,51,47,53,51,47,52,51,32,52,50,47,53,50,47,52,50,10,102,32,52,51,47,53,51,47,52,51,32,52,56,47,53,56,47,52,56,32,52,57,47,53,57,47,52,57,10,102,32,52,57,47,53,57,47,52, 57,32,52,52,47,53,52,47,52,52,32,52,51,47,53,51,47,52,51,10,102,32,52,52,47,53,52,47,52,52,32,52,57,47,53,57,47,52,57,32,53,48,47,54,48,47,53,48,10,102,32,53,48,47,54,48,47,53,48,32,52,53,47,53,53,47,52,53,32,52,52,47,53,52,47,52,52,10,102,32,52,54,47, 53,54,47,52,54,32,53,49,47,54,49,47,53,49,32,53,50,47,54,50,47,53,50,10,102,32,53,50,47,54,50,47,53,50,32,52,55,47,53,55,47,52,55,32,52,54,47,53,54,47,52,54,10,102,32,52,55,47,53,55,47,52,55,32,53,50,47,54,50,47,53,50,32,53,51,47,54,51,47,53,51,10,102, 32,53,51,47,54,51,47,53,51,32,52,56,47,53,56,47,52,56,32,52,55,47,53,55,47,52,55,10,102,32,52,56,47,53,56,47,52,56,32,53,51,47,54,51,47,53,51,32,53,52,47,54,52,47,53,52,10,102,32,53,52,47,54,52,47,53,52,32,52,57,47,53,57,47,52,57,32,52,56,47,53,56,47, 52,56,10,102,32,52,57,47,53,57,47,52,57,32,53,52,47,54,52,47,53,52,32,53,53,47,54,53,47,53,53,10,102,32,53,53,47,54,53,47,53,53,32,53,48,47,54,48,47,53,48,32,52,57,47,53,57,47,52,57,10,102,32,53,49,47,54,49,47,53,49,32,53,54,47,54,54,47,53,54,32,53,55, 47,54,55,47,53,55,10,102,32,53,55,47,54,55,47,53,55,32,53,50,47,54,50,47,53,50,32,53,49,47,54,49,47,53,49,10,102,32,53,50,47,54,50,47,53,50,32,53,55,47,54,55,47,53,55,32,53,56,47,54,56,47,53,56,10,102,32,53,56,47,54,56,47,53,56,32,53,51,47,54,51,47,53, 51,32,53,50,47,54,50,47,53,50,10,102,32,53,51,47,54,51,47,53,51,32,53,56,47,54,56,47,53,56,32,53,57,47,54,57,47,53,57,10,102,32,53,57,47,54,57,47,53,57,32,53,52,47,54,52,47,53,52,32,53,51,47,54,51,47,53,51,10,102,32,53,52,47,54,52,47,53,52,32,53,57,47, 54,57,47,53,57,32,54,48,47,55,48,47,54,48,10,102,32,54,48,47,55,48,47,54,48,32,53,53,47,54,53,47,53,53,32,53,52,47,54,52,47,53,52,10,102,32,53,54,47,54,54,47,53,54,32,54,49,47,55,49,47,54,49,32,54,50,47,55,50,47,54,50,10,102,32,54,50,47,55,50,47,54,50, 32,53,55,47,54,55,47,53,55,32,53,54,47,54,54,47,53,54,10,102,32,53,55,47,54,55,47,53,55,32,54,50,47,55,50,47,54,50,32,54,51,47,55,51,47,54,51,10,102,32,54,51,47,55,51,47,54,51,32,53,56,47,54,56,47,53,56,32,53,55,47,54,55,47,53,55,10,102,32,53,56,47,54, 56,47,53,56,32,54,51,47,55,51,47,54,51,32,54,52,47,55,52,47,54,52,10,102,32,54,52,47,55,52,47,54,52,32,53,57,47,54,57,47,53,57,32,53,56,47,54,56,47,53,56,10,102,32,53,57,47,54,57,47,53,57,32,54,52,47,55,52,47,54,52,32,54,53,47,55,53,47,54,53,10,102,32, 54,53,47,55,53,47,54,53,32,54,48,47,55,48,47,54,48,32,53,57,47,54,57,47,53,57,10,102,32,54,49,47,55,54,47,54,49,32,54,54,47,56,49,47,54,54,32,54,55,47,56,50,47,54,55,10,102,32,54,55,47,56,50,47,54,55,32,54,50,47,55,55,47,54,50,32,54,49,47,55,54,47,54, 49,10,102,32,54,50,47,55,55,47,54,50,32,54,55,47,56,50,47,54,55,32,54,56,47,56,51,47,54,56,10,102,32,54,56,47,56,51,47,54,56,32,54,51,47,55,56,47,54,51,32,54,50,47,55,55,47,54,50,10,102,32,54,51,47,55,56,47,54,51,32,54,56,47,56,51,47,54,56,32,54,57,47, 56,52,47,54,57,10,102,32,54,57,47,56,52,47,54,57,32,54,52,47,55,57,47,54,52,32,54,51,47,55,56,47,54,51,10,102,32,54,52,47,55,57,47,54,52,32,54,57,47,56,52,47,54,57,32,55,48,47,56,53,47,55,48,10,102,32,55,48,47,56,53,47,55,48,32,54,53,47,56,48,47,54,53, 32,54,52,47,55,57,47,54,52,10,102,32,54,54,47,56,49,47,54,54,32,55,49,47,56,54,47,55,49,32,55,50,47,56,55,47,55,50,10,102,32,55,50,47,56,55,47,55,50,32,54,55,47,56,50,47,54,55,32,54,54,47,56,49,47,54,54,10,102,32,54,55,47,56,50,47,54,55,32,55,50,47,56, 55,47,55,50,32,55,51,47,56,56,47,55,51,10,102,32,55,51,47,56,56,47,55,51,32,54,56,47,56,51,47,54,56,32,54,55,47,56,50,47,54,55,10,102,32,54,56,47,56,51,47,54,56,32,55,51,47,56,56,47,55,51,32,55,52,47,56,57,47,55,52,10,102,32,55,52,47,56,57,47,55,52,32, 54,57,47,56,52,47,54,57,32,54,56,47,56,51,47,54,56,10,102,32,54,57,47,56,52,47,54,57,32,55,52,47,56,57,47,55,52,32,55,53,47,57,48,47,55,53,10,102,32,55,53,47,57,48,47,55,53,32,55,48,47,56,53,47,55,48,32,54,57,47,56,52,47,54,57,10,102,32,55,49,47,56,54, 47,55,49,32,55,54,47,57,49,47,55,54,32,55,55,47,57,50,47,55,55,10,102,32,55,55,47,57,50,47,55,55,32,55,50,47,56,55,47,55,50,32,55,49,47,56,54,47,55,49,10,102,32,55,50,47,56,55,47,55,50,32,55,55,47,57,50,47,55,55,32,55,56,47,57,51,47,55,56,10,102,32,55, 56,47,57,51,47,55,56,32,55,51,47,56,56,47,55,51,32,55,50,47,56,55,47,55,50,10,102,32,55,51,47,56,56,47,55,51,32,55,56,47,57,51,47,55,56,32,55,57,47,57,52,47,55,57,10,102,32,55,57,47,57,52,47,55,57,32,55,52,47,56,57,47,55,52,32,55,51,47,56,56,47,55,51, 10,102,32,55,52,47,56,57,47,55,52,32,55,57,47,57,52,47,55,57,32,56,48,47,57,53,47,56,48,10,102,32,56,48,47,57,53,47,56,48,32,55,53,47,57,48,47,55,53,32,55,52,47,56,57,47,55,52,10,102,32,55,54,47,57,49,47,55,54,32,49,47,57,54,47,49,32,50,47,57,55,47,50, 10,102,32,50,47,57,55,47,50,32,55,55,47,57,50,47,55,55,32,55,54,47,57,49,47,55,54,10,102,32,55,55,47,57,50,47,55,55,32,50,47,57,55,47,50,32,51,47,57,56,47,51,10,102,32,51,47,57,56,47,51,32,55,56,47,57,51,47,55,56,32,55,55,47,57,50,47,55,55,10,102,32, 55,56,47,57,51,47,55,56,32,51,47,57,56,47,51,32,52,47,57,57,47,52,10,102,32,52,47,57,57,47,52,32,55,57,47,57,52,47,55,57,32,55,56,47,57,51,47,55,56,10,102,32,55,57,47,57,52,47,55,57,32,52,47,57,57,47,52,32,53,47,49,48,48,47,53,10,102,32,53,47,49,48,48, 47,53,32,56,48,47,57,53,47,56,48,32,55,57,47,57,52,47,55,57,10,102,32,53,47,49,48,49,47,53,32,49,48,47,49,48,54,47,49,48,32,56,53,47,49,48,55,47,56,53,10,102,32,56,53,47,49,48,55,47,56,53,32,56,49,47,49,48,50,47,56,49,32,53,47,49,48,49,47,53,10,102,32, 56,49,47,49,48,50,47,56,49,32,56,53,47,49,48,55,47,56,53,32,56,54,47,49,48,56,47,56,54,10,102,32,56,54,47,49,48,56,47,56,54,32,56,50,47,49,48,51,47,56,50,32,56,49,47,49,48,50,47,56,49,10,102,32,56,50,47,49,48,51,47,56,50,32,56,54,47,49,48,56,47,56,54, 32,56,55,47,49,48,57,47,56,55,10,102,32,56,55,47,49,48,57,47,56,55,32,56,51,47,49,48,52,47,56,51,32,56,50,47,49,48,51,47,56,50,10,102,32,56,51,47,49,48,52,47,56,51,32,56,55,47,49,48,57,47,56,55,32,56,56,47,49,49,48,47,56,56,10,102,32,56,56,47,49,49,48, 47,56,56,32,56,52,47,49,48,53,47,56,52,32,56,51,47,49,48,52,47,56,51,10,102,32,49,48,47,49,48,54,47,49,48,32,49,53,47,49,49,49,47,49,53,32,56,57,47,49,49,50,47,56,57,10,102,32,56,57,47,49,49,50,47,56,57,32,56,53,47,49,48,55,47,56,53,32,49,48,47,49,48, 54,47,49,48,10,102,32,56,53,47,49,48,55,47,56,53,32,56,57,47,49,49,50,47,56,57,32,57,48,47,49,49,51,47,57,48,10,102,32,57,48,47,49,49,51,47,57,48,32,56,54,47,49,48,56,47,56,54,32,56,53,47,49,48,55,47,56,53,10,102,32,56,54,47,49,48,56,47,56,54,32,57,48, 47,49,49,51,47,57,48,32,57,49,47,49,49,52,47,57,49,10,102,32,57,49,47,49,49,52,47,57,49,32,56,55,47,49,48,57,47,56,55,32,56,54,47,49,48,56,47,56,54,10,102,32,56,55,47,49,48,57,47,56,55,32,57,49,47,49,49,52,47,57,49,32,57,50,47,49,49,53,47,57,50,10,102, 32,57,50,47,49,49,53,47,57,50,32,56,56,47,49,49,48,47,56,56,32,56,55,47,49,48,57,47,56,55,10,102,32,49,53,47,49,49,49,47,49,53,32,50,48,47,49,49,54,47,50,48,32,57,51,47,49,49,55,47,57,51,10,102,32,57,51,47,49,49,55,47,57,51,32,56,57,47,49,49,50,47,56, 57,32,49,53,47,49,49,49,47,49,53,10,102,32,56,57,47,49,49,50,47,56,57,32,57,51,47,49,49,55,47,57,51,32,57,52,47,49,49,56,47,57,52,10,102,32,57,52,47,49,49,56,47,57,52,32,57,48,47,49,49,51,47,57,48,32,56,57,47,49,49,50,47,56,57,10,102,32,57,48,47,49,49, 51,47,57,48,32,57,52,47,49,49,56,47,57,52,32,57,53,47,49,49,57,47,57,53,10,102,32,57,53,47,49,49,57,47,57,53,32,57,49,47,49,49,52,47,57,49,32,57,48,47,49,49,51,47,57,48,10,102,32,57,49,47,49,49,52,47,57,49,32,57,53,47,49,49,57,47,57,53,32,57,54,47,49, 50,48,47,57,54,10,102,32,57,54,47,49,50,48,47,57,54,32,57,50,47,49,49,53,47,57,50,32,57,49,47,49,49,52,47,57,49,10,102,32,50,48,47,49,49,54,47,50,48,32,50,53,47,49,50,49,47,50,53,32,57,55,47,49,50,50,47,57,55,10,102,32,57,55,47,49,50,50,47,57,55,32,57, 51,47,49,49,55,47,57,51,32,50,48,47,49,49,54,47,50,48,10,102,32,57,51,47,49,49,55,47,57,51,32,57,55,47,49,50,50,47,57,55,32,57,56,47,49,50,51,47,57,56,10,102,32,57,56,47,49,50,51,47,57,56,32,57,52,47,49,49,56,47,57,52,32,57,51,47,49,49,55,47,57,51,10, 102,32,57,52,47,49,49,56,47,57,52,32,57,56,47,49,50,51,47,57,56,32,57,57,47,49,50,52,47,57,57,10,102,32,57,57,47,49,50,52,47,57,57,32,57,53,47,49,49,57,47,57,53,32,57,52,47,49,49,56,47,57,52,10,102,32,57,53,47,49,49,57,47,57,53,32,57,57,47,49,50,52,47, 57,57,32,49,48,48,47,49,50,53,47,49,48,48,10,102,32,49,48,48,47,49,50,53,47,49,48,48,32,57,54,47,49,50,48,47,57,54,32,57,53,47,49,49,57,47,57,53,10,102,32,50,53,47,49,50,54,47,50,53,32,51,48,47,49,51,49,47,51,48,32,49,48,49,47,49,51,50,47,49,48,49,10, 102,32,49,48,49,47,49,51,50,47,49,48,49,32,57,55,47,49,50,55,47,57,55,32,50,53,47,49,50,54,47,50,53,10,102,32,57,55,47,49,50,55,47,57,55,32,49,48,49,47,49,51,50,47,49,48,49,32,49,48,50,47,49,51,51,47,49,48,50,10,102,32,49,48,50,47,49,51,51,47,49,48,50, 32,57,56,47,49,50,56,47,57,56,32,57,55,47,49,50,55,47,57,55,10,102,32,57,56,47,49,50,56,47,57,56,32,49,48,50,47,49,51,51,47,49,48,50,32,49,48,51,47,49,51,52,47,49,48,51,10,102,32,49,48,51,47,49,51,52,47,49,48,51,32,57,57,47,49,50,57,47,57,57,32,57,56, 47,49,50,56,47,57,56,10,102,32,57,57,47,49,50,57,47,57,57,32,49,48,51,47,49,51,52,47,49,48,51,32,49,48,52,47,49,51,53,47,49,48,52,10,102,32,49,48,52,47,49,51,53,47,49,48,52,32,49,48,48,47,49,51,48,47,49,48,48,32,57,57,47,49,50,57,47,57,57,10,102,32,51, 48,47,49,51,49,47,51,48,32,51,53,47,49,51,54,47,51,53,32,49,48,53,47,49,51,55,47,49,48,53,10,102,32,49,48,53,47,49,51,55,47,49,48,53,32,49,48,49,47,49,51,50,47,49,48,49,32,51,48,47,49,51,49,47,51,48,10,102,32,49,48,49,47,49,51,50,47,49,48,49,32,49,48, 53,47,49,51,55,47,49,48,53,32,49,48,54,47,49,51,56,47,49,48,54,10,102,32,49,48,54,47,49,51,56,47,49,48,54,32,49,48,50,47,49,51,51,47,49,48,50,32,49,48,49,47,49,51,50,47,49,48,49,10,102,32,49,48,50,47,49,51,51,47,49,48,50,32,49,48,54,47,49,51,56,47,49, 48,54,32,49,48,55,47,49,51,57,47,49,48,55,10,102,32,49,48,55,47,49,51,57,47,49,48,55,32,49,48,51,47,49,51,52,47,49,48,51,32,49,48,50,47,49,51,51,47,49,48,50,10,102,32,49,48,51,47,49,51,52,47,49,48,51,32,49,48,55,47,49,51,57,47,49,48,55,32,49,48,56,47, 49,52,48,47,49,48,56,10,102,32,49,48,56,47,49,52,48,47,49,48,56,32,49,48,52,47,49,51,53,47,49,48,52,32,49,48,51,47,49,51,52,47,49,48,51,10,102,32,51,53,47,49,51,54,47,51,53,32,52,48,47,49,52,49,47,52,48,32,49,48,57,47,49,52,50,47,49,48,57,10,102,32,49, 48,57,47,49,52,50,47,49,48,57,32,49,48,53,47,49,51,55,47,49,48,53,32,51,53,47,49,51,54,47,51,53,10,102,32,49,48,53,47,49,51,55,47,49,48,53,32,49,48,57,47,49,52,50,47,49,48,57,32,49,49,48,47,49,52,51,47,49,49,48,10,102,32,49,49,48,47,49,52,51,47,49,49, 48,32,49,48,54,47,49,51,56,47,49,48,54,32,49,48,53,47,49,51,55,47,49,48,53,10,102,32,49,48,54,47,49,51,56,47,49,48,54,32,49,49,48,47,49,52,51,47,49,49,48,32,49,49,49,47,49,52,52,47,49,49,49,10,102,32,49,49,49,47,49,52,52,47,49,49,49,32,49,48,55,47,49, 51,57,47,49,48,55,32,49,48,54,47,49,51,56,47,49,48,54,10,102,32,49,48,55,47,49,51,57,47,49,48,55,32,49,49,49,47,49,52,52,47,49,49,49,32,49,49,50,47,49,52,53,47,49,49,50,10,102,32,49,49,50,47,49,52,53,47,49,49,50,32,49,48,56,47,49,52,48,47,49,48,56,32, 49,48,55,47,49,51,57,47,49,48,55,10,102,32,52,48,47,49,52,49,47,52,48,32,52,53,47,49,52,54,47,52,53,32,49,49,51,47,49,52,55,47,49,49,51,10,102,32,49,49,51,47,49,52,55,47,49,49,51,32,49,48,57,47,49,52,50,47,49,48,57,32,52,48,47,49,52,49,47,52,48,10,102, 32,49,48,57,47,49,52,50,47,49,48,57,32,49,49,51,47,49,52,55,47,49,49,51,32,49,49,52,47,49,52,56,47,49,49,52,10,102,32,49,49,52,47,49,52,56,47,49,49,52,32,49,49,48,47,49,52,51,47,49,49,48,32,49,48,57,47,49,52,50,47,49,48,57,10,102,32,49,49,48,47,49,52, 51,47,49,49,48,32,49,49,52,47,49,52,56,47,49,49,52,32,49,49,53,47,49,52,57,47,49,49,53,10,102,32,49,49,53,47,49,52,57,47,49,49,53,32,49,49,49,47,49,52,52,47,49,49,49,32,49,49,48,47,49,52,51,47,49,49,48,10,102,32,49,49,49,47,49,52,52,47,49,49,49,32,49, 49,53,47,49,52,57,47,49,49,53,32,49,49,54,47,49,53,48,47,49,49,54,10,102,32,49,49,54,47,49,53,48,47,49,49,54,32,49,49,50,47,49,52,53,47,49,49,50,32,49,49,49,47,49,52,52,47,49,49,49,10,102,32,52,53,47,49,53,49,47,52,53,32,53,48,47,49,53,54,47,53,48,32, 49,49,55,47,49,53,55,47,49,49,55,10,102,32,49,49,55,47,49,53,55,47,49,49,55,32,49,49,51,47,49,53,50,47,49,49,51,32,52,53,47,49,53,49,47,52,53,10,102,32,49,49,51,47,49,53,50,47,49,49,51,32,49,49,55,47,49,53,55,47,49,49,55,32,49,49,56,47,49,53,56,47,49, 49,56,10,102,32,49,49,56,47,49,53,56,47,49,49,56,32,49,49,52,47,49,53,51,47,49,49,52,32,49,49,51,47,49,53,50,47,49,49,51,10,102,32,49,49,52,47,49,53,51,47,49,49,52,32,49,49,56,47,49,53,56,47,49,49,56,32,49,49,57,47,49,53,57,47,49,49,57,10,102,32,49,49, 57,47,49,53,57,47,49,49,57,32,49,49,53,47,49,53,52,47,49,49,53,32,49,49,52,47,49,53,51,47,49,49,52,10,102,32,49,49,53,47,49,53,52,47,49,49,53,32,49,49,57,47,49,53,57,47,49,49,57,32,49,50,48,47,49,54,48,47,49,50,48,10,102,32,49,50,48,47,49,54,48,47,49, 50,48,32,49,49,54,47,49,53,53,47,49,49,54,32,49,49,53,47,49,53,52,47,49,49,53,10,102,32,53,48,47,49,53,54,47,53,48,32,53,53,47,49,54,49,47,53,53,32,49,50,49,47,49,54,50,47,49,50,49,10,102,32,49,50,49,47,49,54,50,47,49,50,49,32,49,49,55,47,49,53,55,47, 49,49,55,32,53,48,47,49,53,54,47,53,48,10,102,32,49,49,55,47,49,53,55,47,49,49,55,32,49,50,49,47,49,54,50,47,49,50,49,32,49,50,50,47,49,54,51,47,49,50,50,10,102,32,49,50,50,47,49,54,51,47,49,50,50,32,49,49,56,47,49,53,56,47,49,49,56,32,49,49,55,47,49, 53,55,47,49,49,55,10,102,32,49,49,56,47,49,53,56,47,49,49,56,32,49,50,50,47,49,54,51,47,49,50,50,32,49,50,51,47,49,54,52,47,49,50,51,10,102,32,49,50,51,47,49,54,52,47,49,50,51,32,49,49,57,47,49,53,57,47,49,49,57,32,49,49,56,47,49,53,56,47,49,49,56,10, 102,32,49,49,57,47,49,53,57,47,49,49,57,32,49,50,51,47,49,54,52,47,49,50,51,32,49,50,52,47,49,54,53,47,49,50,52,10,102,32,49,50,52,47,49,54,53,47,49,50,52,32,49,50,48,47,49,54,48,47,49,50,48,32,49,49,57,47,49,53,57,47,49,49,57,10,102,32,53,53,47,49,54, 49,47,53,53,32,54,48,47,49,54,54,47,54,48,32,49,50,53,47,49,54,55,47,49,50,53,10,102,32,49,50,53,47,49,54,55,47,49,50,53,32,49,50,49,47,49,54,50,47,49,50,49,32,53,53,47,49,54,49,47,53,53,10,102,32,49,50,49,47,49,54,50,47,49,50,49,32,49,50,53,47,49,54, 55,47,49,50,53,32,49,50,54,47,49,54,56,47,49,50,54,10,102,32,49,50,54,47,49,54,56,47,49,50,54,32,49,50,50,47,49,54,51,47,49,50,50,32,49,50,49,47,49,54,50,47,49,50,49,10,102,32,49,50,50,47,49,54,51,47,49,50,50,32,49,50,54,47,49,54,56,47,49,50,54,32,49, 50,55,47,49,54,57,47,49,50,55,10,102,32,49,50,55,47,49,54,57,47,49,50,55,32,49,50,51,47,49,54,52,47,49,50,51,32,49,50,50,47,49,54,51,47,49,50,50,10,102,32,49,50,51,47,49,54,52,47,49,50,51,32,49,50,55,47,49,54,57,47,49,50,55,32,49,50,56,47,49,55,48,47, 49,50,56,10,102,32,49,50,56,47,49,55,48,47,49,50,56,32,49,50,52,47,49,54,53,47,49,50,52,32,49,50,51,47,49,54,52,47,49,50,51,10,102,32,54,48,47,49,54,54,47,54,48,32,54,53,47,49,55,49,47,54,53,32,49,50,57,47,49,55,50,47,49,50,57,10,102,32,49,50,57,47,49, 55,50,47,49,50,57,32,49,50,53,47,49,54,55,47,49,50,53,32,54,48,47,49,54,54,47,54,48,10,102,32,49,50,53,47,49,54,55,47,49,50,53,32,49,50,57,47,49,55,50,47,49,50,57,32,49,51,48,47,49,55,51,47,49,51,48,10,102,32,49,51,48,47,49,55,51,47,49,51,48,32,49,50, 54,47,49,54,56,47,49,50,54,32,49,50,53,47,49,54,55,47,49,50,53,10,102,32,49,50,54,47,49,54,56,47,49,50,54,32,49,51,48,47,49,55,51,47,49,51,48,32,49,51,49,47,49,55,52,47,49,51,49,10,102,32,49,51,49,47,49,55,52,47,49,51,49,32,49,50,55,47,49,54,57,47,49, 50,55,32,49,50,54,47,49,54,56,47,49,50,54,10,102,32,49,50,55,47,49,54,57,47,49,50,55,32,49,51,49,47,49,55,52,47,49,51,49,32,49,51,50,47,49,55,53,47,49,51,50,10,102,32,49,51,50,47,49,55,53,47,49,51,50,32,49,50,56,47,49,55,48,47,49,50,56,32,49,50,55,47, 49,54,57,47,49,50,55,10,102,32,54,53,47,49,55,54,47,54,53,32,55,48,47,49,56,49,47,55,48,32,49,51,51,47,49,56,50,47,49,51,51,10,102,32,49,51,51,47,49,56,50,47,49,51,51,32,49,50,57,47,49,55,55,47,49,50,57,32,54,53,47,49,55,54,47,54,53,10,102,32,49,50,57, 47,49,55,55,47,49,50,57,32,49,51,51,47,49,56,50,47,49,51,51,32,49,51,52,47,49,56,51,47,49,51,52,10,102,32,49,51,52,47,49,56,51,47,49,51,52,32,49,51,48,47,49,55,56,47,49,51,48,32,49,50,57,47,49,55,55,47,49,50,57,10,102,32,49,51,48,47,49,55,56,47,49,51, 48,32,49,51,52,47,49,56,51,47,49,51,52,32,49,51,53,47,49,56,52,47,49,51,53,10,102,32,49,51,53,47,49,56,52,47,49,51,53,32,49,51,49,47,49,55,57,47,49,51,49,32,49,51,48,47,49,55,56,47,49,51,48,10,102,32,49,51,49,47,49,55,57,47,49,51,49,32,49,51,53,47,49, 56,52,47,49,51,53,32,49,51,54,47,49,56,53,47,49,51,54,10,102,32,49,51,54,47,49,56,53,47,49,51,54,32,49,51,50,47,49,56,48,47,49,51,50,32,49,51,49,47,49,55,57,47,49,51,49,10,102,32,55,48,47,49,56,49,47,55,48,32,55,53,47,49,56,54,47,55,53,32,49,51,55,47, 49,56,55,47,49,51,55,10,102,32,49,51,55,47,49,56,55,47,49,51,55,32,49,51,51,47,49,56,50,47,49,51,51,32,55,48,47,49,56,49,47,55,48,10,102,32,49,51,51,47,49,56,50,47,49,51,51,32,49,51,55,47,49,56,55,47,49,51,55,32,49,51,56,47,49,56,56,47,49,51,56,10,102, 32,49,51,56,47,49,56,56,47,49,51,56,32,49,51,52,47,49,56,51,47,49,51,52,32,49,51,51,47,49,56,50,47,49,51,51,10,102,32,49,51,52,47,49,56,51,47,49,51,52,32,49,51,56,47,49,56,56,47,49,51,56,32,49,51,57,47,49,56,57,47,49,51,57,10,102,32,49,51,57,47,49,56, 57,47,49,51,57,32,49,51,53,47,49,56,52,47,49,51,53,32,49,51,52,47,49,56,51,47,49,51,52,10,102,32,49,51,53,47,49,56,52,47,49,51,53,32,49,51,57,47,49,56,57,47,49,51,57,32,49,52,48,47,49,57,48,47,49,52,48,10,102,32,49,52,48,47,49,57,48,47,49,52,48,32,49, 51,54,47,49,56,53,47,49,51,54,32,49,51,53,47,49,56,52,47,49,51,53,10,102,32,55,53,47,49,56,54,47,55,53,32,56,48,47,49,57,49,47,56,48,32,49,52,49,47,49,57,50,47,49,52,49,10,102,32,49,52,49,47,49,57,50,47,49,52,49,32,49,51,55,47,49,56,55,47,49,51,55,32, 55,53,47,49,56,54,47,55,53,10,102,32,49,51,55,47,49,56,55,47,49,51,55,32,49,52,49,47,49,57,50,47,49,52,49,32,49,52,50,47,49,57,51,47,49,52,50,10,102,32,49,52,50,47,49,57,51,47,49,52,50,32,49,51,56,47,49,56,56,47,49,51,56,32,49,51,55,47,49,56,55,47,49, 51,55,10,102,32,49,51,56,47,49,56,56,47,49,51,56,32,49,52,50,47,49,57,51,47,49,52,50,32,49,52,51,47,49,57,52,47,49,52,51,10,102,32,49,52,51,47,49,57,52,47,49,52,51,32,49,51,57,47,49,56,57,47,49,51,57,32,49,51,56,47,49,56,56,47,49,51,56,10,102,32,49,51, 57,47,49,56,57,47,49,51,57,32,49,52,51,47,49,57,52,47,49,52,51,32,49,52,52,47,49,57,53,47,49,52,52,10,102,32,49,52,52,47,49,57,53,47,49,52,52,32,49,52,48,47,49,57,48,47,49,52,48,32,49,51,57,47,49,56,57,47,49,51,57,10,102,32,56,48,47,49,57,49,47,56,48, 32,53,47,49,57,54,47,53,32,56,49,47,49,57,55,47,56,49,10,102,32,56,49,47,49,57,55,47,56,49,32,49,52,49,47,49,57,50,47,49,52,49,32,56,48,47,49,57,49,47,56,48,10,102,32,49,52,49,47,49,57,50,47,49,52,49,32,56,49,47,49,57,55,47,56,49,32,56,50,47,49,57,56, 47,56,50,10,102,32,56,50,47,49,57,56,47,56,50,32,49,52,50,47,49,57,51,47,49,52,50,32,49,52,49,47,49,57,50,47,49,52,49,10,102,32,49,52,50,47,49,57,51,47,49,52,50,32,56,50,47,49,57,56,47,56,50,32,56,51,47,49,57,57,47,56,51,10,102,32,56,51,47,49,57,57,47, 56,51,32,49,52,51,47,49,57,52,47,49,52,51,32,49,52,50,47,49,57,51,47,49,52,50,10,102,32,49,52,51,47,49,57,52,47,49,52,51,32,56,51,47,49,57,57,47,56,51,32,56,52,47,50,48,48,47,56,52,10,102,32,56,52,47,50,48,48,47,56,52,32,49,52,52,47,49,57,53,47,49,52, 52,32,49,52,51,47,49,57,52,47,49,52,51,10,102,32,56,52,47,50,48,49,47,56,52,32,56,56,47,50,48,54,47,56,56,32,49,52,57,47,50,48,55,47,49,52,57,10,102,32,49,52,57,47,50,48,55,47,49,52,57,32,49,52,53,47,50,48,50,47,49,52,53,32,56,52,47,50,48,49,47,56,52, 10,102,32,49,52,53,47,50,48,50,47,49,52,53,32,49,52,57,47,50,48,55,47,49,52,57,32,49,53,48,47,50,48,56,47,49,53,48,10,102,32,49,53,48,47,50,48,56,47,49,53,48,32,49,52,54,47,50,48,51,47,49,52,54,32,49,52,53,47,50,48,50,47,49,52,53,10,102,32,49,52,54,47, 50,48,51,47,49,52,54,32,49,53,48,47,50,48,56,47,49,53,48,32,49,53,49,47,50,48,57,47,49,53,49,10,102,32,49,53,49,47,50,48,57,47,49,53,49,32,49,52,55,47,50,48,52,47,49,52,55,32,49,52,54,47,50,48,51,47,49,52,54,10,102,32,49,52,55,47,50,48,52,47,49,52,55, 32,49,53,49,47,50,48,57,47,49,53,49,32,49,53,50,47,50,49,48,47,49,53,50,10,102,32,49,53,50,47,50,49,48,47,49,53,50,32,49,52,56,47,50,48,53,47,49,52,56,32,49,52,55,47,50,48,52,47,49,52,55,10,102,32,56,56,47,50,48,54,47,56,56,32,57,50,47,50,49,49,47,57, 50,32,49,53,51,47,50,49,50,47,49,53,51,10,102,32,49,53,51,47,50,49,50,47,49,53,51,32,49,52,57,47,50,48,55,47,49,52,57,32,56,56,47,50,48,54,47,56,56,10,102,32,49,52,57,47,50,48,55,47,49,52,57,32,49,53,51,47,50,49,50,47,49,53,51,32,49,53,52,47,50,49,51, 47,49,53,52,10,102,32,49,53,52,47,50,49,51,47,49,53,52,32,49,53,48,47,50,48,56,47,49,53,48,32,49,52,57,47,50,48,55,47,49,52,57,10,102,32,49,53,48,47,50,48,56,47,49,53,48,32,49,53,52,47,50,49,51,47,49,53,52,32,49,53,53,47,50,49,52,47,49,53,53,10,102,32, 49,53,53,47,50,49,52,47,49,53,53,32,49,53,49,47,50,48,57,47,49,53,49,32,49,53,48,47,50,48,56,47,49,53,48,10,102,32,49,53,49,47,50,48,57,47,49,53,49,32,49,53,53,47,50,49,52,47,49,53,53,32,49,53,54,47,50,49,53,47,49,53,54,10,102,32,49,53,54,47,50,49,53, 47,49,53,54,32,49,53,50,47,50,49,48,47,49,53,50,32,49,53,49,47,50,48,57,47,49,53,49,10,102,32,57,50,47,50,49,49,47,57,50,32,57,54,47,50,49,54,47,57,54,32,49,53,55,47,50,49,55,47,49,53,55,10,102,32,49,53,55,47,50,49,55,47,49,53,55,32,49,53,51,47,50,49, 50,47,49,53,51,32,57,50,47,50,49,49,47,57,50,10,102,32,49,53,51,47,50,49,50,47,49,53,51,32,49,53,55,47,50,49,55,47,49,53,55,32,49,53,56,47,50,49,56,47,49,53,56,10,102,32,49,53,56,47,50,49,56,47,49,53,56,32,49,53,52,47,50,49,51,47,49,53,52,32,49,53,51, 47,50,49,50,47,49,53,51,10,102,32,49,53,52,47,50,49,51,47,49,53,52,32,49,53,56,47,50,49,56,47,49,53,56,32,49,53,57,47,50,49,57,47,49,53,57,10,102,32,49,53,57,47,50,49,57,47,49,53,57,32,49,53,53,47,50,49,52,47,49,53,53,32,49,53,52,47,50,49,51,47,49,53, 52,10,102,32,49,53,53,47,50,49,52,47,49,53,53,32,49,53,57,47,50,49,57,47,49,53,57,32,49,54,48,47,50,50,48,47,49,54,48,10,102,32,49,54,48,47,50,50,48,47,49,54,48,32,49,53,54,47,50,49,53,47,49,53,54,32,49,53,53,47,50,49,52,47,49,53,53,10,102,32,57,54,47, 50,49,54,47,57,54,32,49,48,48,47,50,50,49,47,49,48,48,32,49,54,49,47,50,50,50,47,49,54,49,10,102,32,49,54,49,47,50,50,50,47,49,54,49,32,49,53,55,47,50,49,55,47,49,53,55,32,57,54,47,50,49,54,47,57,54,10,102,32,49,53,55,47,50,49,55,47,49,53,55,32,49,54, 49,47,50,50,50,47,49,54,49,32,49,54,50,47,50,50,51,47,49,54,50,10,102,32,49,54,50,47,50,50,51,47,49,54,50,32,49,53,56,47,50,49,56,47,49,53,56,32,49,53,55,47,50,49,55,47,49,53,55,10,102,32,49,53,56,47,50,49,56,47,49,53,56,32,49,54,50,47,50,50,51,47,49, 54,50,32,49,54,51,47,50,50,52,47,49,54,51,10,102,32,49,54,51,47,50,50,52,47,49,54,51,32,49,53,57,47,50,49,57,47,49,53,57,32,49,53,56,47,50,49,56,47,49,53,56,10,102,32,49,53,57,47,50,49,57,47,49,53,57,32,49,54,51,47,50,50,52,47,49,54,51,32,49,54,52,47, 50,50,53,47,49,54,52,10,102,32,49,54,52,47,50,50,53,47,49,54,52,32,49,54,48,47,50,50,48,47,49,54,48,32,49,53,57,47,50,49,57,47,49,53,57,10,102,32,49,48,48,47,50,50,54,47,49,48,48,32,49,48,52,47,50,51,49,47,49,48,52,32,49,54,53,47,50,51,50,47,49,54,53, 10,102,32,49,54,53,47,50,51,50,47,49,54,53,32,49,54,49,47,50,50,55,47,49,54,49,32,49,48,48,47,50,50,54,47,49,48,48,10,102,32,49,54,49,47,50,50,55,47,49,54,49,32,49,54,53,47,50,51,50,47,49,54,53,32,49,54,54,47,50,51,51,47,49,54,54,10,102,32,49,54,54,47, 50,51,51,47,49,54,54,32,49,54,50,47,50,50,56,47,49,54,50,32,49,54,49,47,50,50,55,47,49,54,49,10,102,32,49,54,50,47,50,50,56,47,49,54,50,32,49,54,54,47,50,51,51,47,49,54,54,32,49,54,55,47,50,51,52,47,49,54,55,10,102,32,49,54,55,47,50,51,52,47,49,54,55, 32,49,54,51,47,50,50,57,47,49,54,51,32,49,54,50,47,50,50,56,47,49,54,50,10,102,32,49,54,51,47,50,50,57,47,49,54,51,32,49,54,55,47,50,51,52,47,49,54,55,32,49,54,56,47,50,51,53,47,49,54,56,10,102,32,49,54,56,47,50,51,53,47,49,54,56,32,49,54,52,47,50,51, 48,47,49,54,52,32,49,54,51,47,50,50,57,47,49,54,51,10,102,32,49,48,52,47,50,51,49,47,49,48,52,32,49,48,56,47,50,51,54,47,49,48,56,32,49,54,57,47,50,51,55,47,49,54,57,10,102,32,49,54,57,47,50,51,55,47,49,54,57,32,49,54,53,47,50,51,50,47,49,54,53,32,49, 48,52,47,50,51,49,47,49,48,52,10,102,32,49,54,53,47,50,51,50,47,49,54,53,32,49,54,57,47,50,51,55,47,49,54,57,32,49,55,48,47,50,51,56,47,49,55,48,10,102,32,49,55,48,47,50,51,56,47,49,55,48,32,49,54,54,47,50,51,51,47,49,54,54,32,49,54,53,47,50,51,50,47, 49,54,53,10,102,32,49,54,54,47,50,51,51,47,49,54,54,32,49,55,48,47,50,51,56,47,49,55,48,32,49,55,49,47,50,51,57,47,49,55,49,10,102,32,49,55,49,47,50,51,57,47,49,55,49,32,49,54,55,47,50,51,52,47,49,54,55,32,49,54,54,47,50,51,51,47,49,54,54,10,102,32,49, 54,55,47,50,51,52,47,49,54,55,32,49,55,49,47,50,51,57,47,49,55,49,32,49,55,50,47,50,52,48,47,49,55,50,10,102,32,49,55,50,47,50,52,48,47,49,55,50,32,49,54,56,47,50,51,53,47,49,54,56,32,49,54,55,47,50,51,52,47,49,54,55,10,102,32,49,48,56,47,50,51,54,47, 49,48,56,32,49,49,50,47,50,52,49,47,49,49,50,32,49,55,51,47,50,52,50,47,49,55,51,10,102,32,49,55,51,47,50,52,50,47,49,55,51,32,49,54,57,47,50,51,55,47,49,54,57,32,49,48,56,47,50,51,54,47,49,48,56,10,102,32,49,54,57,47,50,51,55,47,49,54,57,32,49,55,51, 47,50,52,50,47,49,55,51,32,49,55,52,47,50,52,51,47,49,55,52,10,102,32,49,55,52,47,50,52,51,47,49,55,52,32,49,55,48,47,50,51,56,47,49,55,48,32,49,54,57,47,50,51,55,47,49,54,57,10,102,32,49,55,48,47,50,51,56,47,49,55,48,32,49,55,52,47,50,52,51,47,49,55, 52,32,49,55,53,47,50,52,52,47,49,55,53,10,102,32,49,55,53,47,50,52,52,47,49,55,53,32,49,55,49,47,50,51,57,47,49,55,49,32,49,55,48,47,50,51,56,47,49,55,48,10,102,32,49,55,49,47,50,51,57,47,49,55,49,32,49,55,53,47,50,52,52,47,49,55,53,32,49,55,54,47,50, 52,53,47,49,55,54,10,102,32,49,55,54,47,50,52,53,47,49,55,54,32,49,55,50,47,50,52,48,47,49,55,50,32,49,55,49,47,50,51,57,47,49,55,49,10,102,32,49,49,50,47,50,52,49,47,49,49,50,32,49,49,54,47,50,52,54,47,49,49,54,32,49,55,55,47,50,52,55,47,49,55,55,10, 102,32,49,55,55,47,50,52,55,47,49,55,55,32,49,55,51,47,50,52,50,47,49,55,51,32,49,49,50,47,50,52,49,47,49,49,50,10,102,32,49,55,51,47,50,52,50,47,49,55,51,32,49,55,55,47,50,52,55,47,49,55,55,32,49,55,56,47,50,52,56,47,49,55,56,10,102,32,49,55,56,47,50, 52,56,47,49,55,56,32,49,55,52,47,50,52,51,47,49,55,52,32,49,55,51,47,50,52,50,47,49,55,51,10,102,32,49,55,52,47,50,52,51,47,49,55,52,32,49,55,56,47,50,52,56,47,49,55,56,32,49,55,57,47,50,52,57,47,49,55,57,10,102,32,49,55,57,47,50,52,57,47,49,55,57,32, 49,55,53,47,50,52,52,47,49,55,53,32,49,55,52,47,50,52,51,47,49,55,52,10,102,32,49,55,53,47,50,52,52,47,49,55,53,32,49,55,57,47,50,52,57,47,49,55,57,32,49,56,48,47,50,53,48,47,49,56,48,10,102,32,49,56,48,47,50,53,48,47,49,56,48,32,49,55,54,47,50,52,53, 47,49,55,54,32,49,55,53,47,50,52,52,47,49,55,53,10,102,32,49,49,54,47,50,53,49,47,49,49,54,32,49,50,48,47,50,53,54,47,49,50,48,32,49,56,49,47,50,53,55,47,49,56,49,10,102,32,49,56,49,47,50,53,55,47,49,56,49,32,49,55,55,47,50,53,50,47,49,55,55,32,49,49, 54,47,50,53,49,47,49,49,54,10,102,32,49,55,55,47,50,53,50,47,49,55,55,32,49,56,49,47,50,53,55,47,49,56,49,32,49,56,50,47,50,53,56,47,49,56,50,10,102,32,49,56,50,47,50,53,56,47,49,56,50,32,49,55,56,47,50,53,51,47,49,55,56,32,49,55,55,47,50,53,50,47,49, 55,55,10,102,32,49,55,56,47,50,53,51,47,49,55,56,32,49,56,50,47,50,53,56,47,49,56,50,32,49,56,51,47,50,53,57,47,49,56,51,10,102,32,49,56,51,47,50,53,57,47,49,56,51,32,49,55,57,47,50,53,52,47,49,55,57,32,49,55,56,47,50,53,51,47,49,55,56,10,102,32,49,55, 57,47,50,53,52,47,49,55,57,32,49,56,51,47,50,53,57,47,49,56,51,32,49,56,52,47,50,54,48,47,49,56,52,10,102,32,49,56,52,47,50,54,48,47,49,56,52,32,49,56,48,47,50,53,53,47,49,56,48,32,49,55,57,47,50,53,52,47,49,55,57,10,102,32,49,50,48,47,50,53,54,47,49, 50,48,32,49,50,52,47,50,54,49,47,49,50,52,32,49,56,53,47,50,54,50,47,49,56,53,10,102,32,49,56,53,47,50,54,50,47,49,56,53,32,49,56,49,47,50,53,55,47,49,56,49,32,49,50,48,47,50,53,54,47,49,50,48,10,102,32,49,56,49,47,50,53,55,47,49,56,49,32,49,56,53,47, 50,54,50,47,49,56,53,32,49,56,54,47,50,54,51,47,49,56,54,10,102,32,49,56,54,47,50,54,51,47,49,56,54,32,49,56,50,47,50,53,56,47,49,56,50,32,49,56,49,47,50,53,55,47,49,56,49,10,102,32,49,56,50,47,50,53,56,47,49,56,50,32,49,56,54,47,50,54,51,47,49,56,54, 32,49,56,55,47,50,54,52,47,49,56,55,10,102,32,49,56,55,47,50,54,52,47,49,56,55,32,49,56,51,47,50,53,57,47,49,56,51,32,49,56,50,47,50,53,56,47,49,56,50,10,102,32,49,56,51,47,50,53,57,47,49,56,51,32,49,56,55,47,50,54,52,47,49,56,55,32,49,56,56,47,50,54, 53,47,49,56,56,10,102,32,49,56,56,47,50,54,53,47,49,56,56,32,49,56,52,47,50,54,48,47,49,56,52,32,49,56,51,47,50,53,57,47,49,56,51,10,102,32,49,50,52,47,50,54,49,47,49,50,52,32,49,50,56,47,50,54,54,47,49,50,56,32,49,56,57,47,50,54,55,47,49,56,57,10,102, 32,49,56,57,47,50,54,55,47,49,56,57,32,49,56,53,47,50,54,50,47,49,56,53,32,49,50,52,47,50,54,49,47,49,50,52,10,102,32,49,56,53,47,50,54,50,47,49,56,53,32,49,56,57,47,50,54,55,47,49,56,57,32,49,57,48,47,50,54,56,47,49,57,48,10,102,32,49,57,48,47,50,54, 56,47,49,57,48,32,49,56,54,47,50,54,51,47,49,56,54,32,49,56,53,47,50,54,50,47,49,56,53,10,102,32,49,56,54,47,50,54,51,47,49,56,54,32,49,57,48,47,50,54,56,47,49,57,48,32,49,57,49,47,50,54,57,47,49,57,49,10,102,32,49,57,49,47,50,54,57,47,49,57,49,32,49, 56,55,47,50,54,52,47,49,56,55,32,49,56,54,47,50,54,51,47,49,56,54,10,102,32,49,56,55,47,50,54,52,47,49,56,55,32,49,57,49,47,50,54,57,47,49,57,49,32,49,57,50,47,50,55,48,47,49,57,50,10,102,32,49,57,50,47,50,55,48,47,49,57,50,32,49,56,56,47,50,54,53,47, 49,56,56,32,49,56,55,47,50,54,52,47,49,56,55,10,102,32,49,50,56,47,50,54,54,47,49,50,56,32,49,51,50,47,50,55,49,47,49,51,50,32,49,57,51,47,50,55,50,47,49,57,51,10,102,32,49,57,51,47,50,55,50,47,49,57,51,32,49,56,57,47,50,54,55,47,49,56,57,32,49,50,56, 47,50,54,54,47,49,50,56,10,102,32,49,56,57,47,50,54,55,47,49,56,57,32,49,57,51,47,50,55,50,47,49,57,51,32,49,57,52,47,50,55,51,47,49,57,52,10,102,32,49,57,52,47,50,55,51,47,49,57,52,32,49,57,48,47,50,54,56,47,49,57,48,32,49,56,57,47,50,54,55,47,49,56, 57,10,102,32,49,57,48,47,50,54,56,47,49,57,48,32,49,57,52,47,50,55,51,47,49,57,52,32,49,57,53,47,50,55,52,47,49,57,53,10,102,32,49,57,53,47,50,55,52,47,49,57,53,32,49,57,49,47,50,54,57,47,49,57,49,32,49,57,48,47,50,54,56,47,49,57,48,10,102,32,49,57,49, 47,50,54,57,47,49,57,49,32,49,57,53,47,50,55,52,47,49,57,53,32,49,57,54,47,50,55,53,47,49,57,54,10,102,32,49,57,54,47,50,55,53,47,49,57,54,32,49,57,50,47,50,55,48,47,49,57,50,32,49,57,49,47,50,54,57,47,49,57,49,10,102,32,49,51,50,47,50,55,54,47,49,51, 50,32,49,51,54,47,50,56,49,47,49,51,54,32,49,57,55,47,50,56,50,47,49,57,55,10,102,32,49,57,55,47,50,56,50,47,49,57,55,32,49,57,51,47,50,55,55,47,49,57,51,32,49,51,50,47,50,55,54,47,49,51,50,10,102,32,49,57,51,47,50,55,55,47,49,57,51,32,49,57,55,47,50, 56,50,47,49,57,55,32,49,57,56,47,50,56,51,47,49,57,56,10,102,32,49,57,56,47,50,56,51,47,49,57,56,32,49,57,52,47,50,55,56,47,49,57,52,32,49,57,51,47,50,55,55,47,49,57,51,10,102,32,49,57,52,47,50,55,56,47,49,57,52,32,49,57,56,47,50,56,51,47,49,57,56,32, 49,57,57,47,50,56,52,47,49,57,57,10,102,32,49,57,57,47,50,56,52,47,49,57,57,32,49,57,53,47,50,55,57,47,49,57,53,32,49,57,52,47,50,55,56,47,49,57,52,10,102,32,49,57,53,47,50,55,57,47,49,57,53,32,49,57,57,47,50,56,52,47,49,57,57,32,50,48,48,47,50,56,53, 47,50,48,48,10,102,32,50,48,48,47,50,56,53,47,50,48,48,32,49,57,54,47,50,56,48,47,49,57,54,32,49,57,53,47,50,55,57,47,49,57,53,10,102,32,49,51,54,47,50,56,49,47,49,51,54,32,49,52,48,47,50,56,54,47,49,52,48,32,50,48,49,47,50,56,55,47,50,48,49,10,102,32, 50,48,49,47,50,56,55,47,50,48,49,32,49,57,55,47,50,56,50,47,49,57,55,32,49,51,54,47,50,56,49,47,49,51,54,10,102,32,49,57,55,47,50,56,50,47,49,57,55,32,50,48,49,47,50,56,55,47,50,48,49,32,50,48,50,47,50,56,56,47,50,48,50,10,102,32,50,48,50,47,50,56,56, 47,50,48,50,32,49,57,56,47,50,56,51,47,49,57,56,32,49,57,55,47,50,56,50,47,49,57,55,10,102,32,49,57,56,47,50,56,51,47,49,57,56,32,50,48,50,47,50,56,56,47,50,48,50,32,50,48,51,47,50,56,57,47,50,48,51,10,102,32,50,48,51,47,50,56,57,47,50,48,51,32,49,57, 57,47,50,56,52,47,49,57,57,32,49,57,56,47,50,56,51,47,49,57,56,10,102,32,49,57,57,47,50,56,52,47,49,57,57,32,50,48,51,47,50,56,57,47,50,48,51,32,50,48,52,47,50,57,48,47,50,48,52,10,102,32,50,48,52,47,50,57,48,47,50,48,52,32,50,48,48,47,50,56,53,47,50, 48,48,32,49,57,57,47,50,56,52,47,49,57,57,10,102,32,49,52,48,47,50,56,54,47,49,52,48,32,49,52,52,47,50,57,49,47,49,52,52,32,50,48,53,47,50,57,50,47,50,48,53,10,102,32,50,48,53,47,50,57,50,47,50,48,53,32,50,48,49,47,50,56,55,47,50,48,49,32,49,52,48,47, 50,56,54,47,49,52,48,10,102,32,50,48,49,47,50,56,55,47,50,48,49,32,50,48,53,47,50,57,50,47,50,48,53,32,50,48,54,47,50,57,51,47,50,48,54,10,102,32,50,48,54,47,50,57,51,47,50,48,54,32,50,48,50,47,50,56,56,47,50,48,50,32,50,48,49,47,50,56,55,47,50,48,49, 10,102,32,50,48,50,47,50,56,56,47,50,48,50,32,50,48,54,47,50,57,51,47,50,48,54,32,50,48,55,47,50,57,52,47,50,48,55,10,102,32,50,48,55,47,50,57,52,47,50,48,55,32,50,48,51,47,50,56,57,47,50,48,51,32,50,48,50,47,50,56,56,47,50,48,50,10,102,32,50,48,51,47, 50,56,57,47,50,48,51,32,50,48,55,47,50,57,52,47,50,48,55,32,50,48,56,47,50,57,53,47,50,48,56,10,102,32,50,48,56,47,50,57,53,47,50,48,56,32,50,48,52,47,50,57,48,47,50,48,52,32,50,48,51,47,50,56,57,47,50,48,51,10,102,32,49,52,52,47,50,57,49,47,49,52,52, 32,56,52,47,50,57,54,47,56,52,32,49,52,53,47,50,57,55,47,49,52,53,10,102,32,49,52,53,47,50,57,55,47,49,52,53,32,50,48,53,47,50,57,50,47,50,48,53,32,49,52,52,47,50,57,49,47,49,52,52,10,102,32,50,48,53,47,50,57,50,47,50,48,53,32,49,52,53,47,50,57,55,47, 49,52,53,32,49,52,54,47,50,57,56,47,49,52,54,10,102,32,49,52,54,47,50,57,56,47,49,52,54,32,50,48,54,47,50,57,51,47,50,48,54,32,50,48,53,47,50,57,50,47,50,48,53,10,102,32,50,48,54,47,50,57,51,47,50,48,54,32,49,52,54,47,50,57,56,47,49,52,54,32,49,52,55, 47,50,57,57,47,49,52,55,10,102,32,49,52,55,47,50,57,57,47,49,52,55,32,50,48,55,47,50,57,52,47,50,48,55,32,50,48,54,47,50,57,51,47,50,48,54,10,102,32,50,48,55,47,50,57,52,47,50,48,55,32,49,52,55,47,50,57,57,47,49,52,55,32,49,52,56,47,51,48,48,47,49,52, 56,10,102,32,49,52,56,47,51,48,48,47,49,52,56,32,50,48,56,47,50,57,53,47,50,48,56,32,50,48,55,47,50,57,52,47,50,48,55,10,102,32,49,52,56,47,51,48,49,47,49,52,56,32,49,53,50,47,51,48,54,47,49,53,50,32,50,49,51,47,51,48,55,47,50,49,51,10,102,32,50,49,51, 47,51,48,55,47,50,49,51,32,50,48,57,47,51,48,50,47,50,48,57,32,49,52,56,47,51,48,49,47,49,52,56,10,102,32,50,48,57,47,51,48,50,47,50,48,57,32,50,49,51,47,51,48,55,47,50,49,51,32,50,49,52,47,51,48,56,47,50,49,52,10,102,32,50,49,52,47,51,48,56,47,50,49, 52,32,50,49,48,47,51,48,51,47,50,49,48,32,50,48,57,47,51,48,50,47,50,48,57,10,102,32,50,49,48,47,51,48,51,47,50,49,48,32,50,49,52,47,51,48,56,47,50,49,52,32,50,49,53,47,51,48,57,47,50,49,53,10,102,32,50,49,53,47,51,48,57,47,50,49,53,32,50,49,49,47,51, 48,52,47,50,49,49,32,50,49,48,47,51,48,51,47,50,49,48,10,102,32,50,49,49,47,51,48,52,47,50,49,49,32,50,49,53,47,51,48,57,47,50,49,53,32,50,49,50,47,51,49,48,47,50,49,50,10,102,32,49,53,50,47,51,48,54,47,49,53,50,32,49,53,54,47,51,49,49,47,49,53,54,32, 50,49,54,47,51,49,50,47,50,49,54,10,102,32,50,49,54,47,51,49,50,47,50,49,54,32,50,49,51,47,51,48,55,47,50,49,51,32,49,53,50,47,51,48,54,47,49,53,50,10,102,32,50,49,51,47,51,48,55,47,50,49,51,32,50,49,54,47,51,49,50,47,50,49,54,32,50,49,55,47,51,49,51, 47,50,49,55,10,102,32,50,49,55,47,51,49,51,47,50,49,55,32,50,49,52,47,51,48,56,47,50,49,52,32,50,49,51,47,51,48,55,47,50,49,51,10,102,32,50,49,52,47,51,48,56,47,50,49,52,32,50,49,55,47,51,49,51,47,50,49,55,32,50,49,56,47,51,49,52,47,50,49,56,10,102,32, 50,49,56,47,51,49,52,47,50,49,56,32,50,49,53,47,51,48,57,47,50,49,53,32,50,49,52,47,51,48,56,47,50,49,52,10,102,32,50,49,53,47,51,48,57,47,50,49,53,32,50,49,56,47,51,49,52,47,50,49,56,32,50,49,50,47,51,49,53,47,50,49,50,10,102,32,49,53,54,47,51,49,49, 47,49,53,54,32,49,54,48,47,51,49,54,47,49,54,48,32,50,49,57,47,51,49,55,47,50,49,57,10,102,32,50,49,57,47,51,49,55,47,50,49,57,32,50,49,54,47,51,49,50,47,50,49,54,32,49,53,54,47,51,49,49,47,49,53,54,10,102,32,50,49,54,47,51,49,50,47,50,49,54,32,50,49, 57,47,51,49,55,47,50,49,57,32,50,50,48,47,51,49,56,47,50,50,48,10,102,32,50,50,48,47,51,49,56,47,50,50,48,32,50,49,55,47,51,49,51,47,50,49,55,32,50,49,54,47,51,49,50,47,50,49,54,10,102,32,50,49,55,47,51,49,51,47,50,49,55,32,50,50,48,47,51,49,56,47,50, 50,48,32,50,50,49,47,51,49,57,47,50,50,49,10,102,32,50,50,49,47,51,49,57,47,50,50,49,32,50,49,56,47,51,49,52,47,50,49,56,32,50,49,55,47,51,49,51,47,50,49,55,10,102,32,50,49,56,47,51,49,52,47,50,49,56,32,50,50,49,47,51,49,57,47,50,50,49,32,50,49,50,47, 51,50,48,47,50,49,50,10,102,32,49,54,48,47,51,49,54,47,49,54,48,32,49,54,52,47,51,50,49,47,49,54,52,32,50,50,50,47,51,50,50,47,50,50,50,10,102,32,50,50,50,47,51,50,50,47,50,50,50,32,50,49,57,47,51,49,55,47,50,49,57,32,49,54,48,47,51,49,54,47,49,54,48, 10,102,32,50,49,57,47,51,49,55,47,50,49,57,32,50,50,50,47,51,50,50,47,50,50,50,32,50,50,51,47,51,50,51,47,50,50,51,10,102,32,50,50,51,47,51,50,51,47,50,50,51,32,50,50,48,47,51,49,56,47,50,50,48,32,50,49,57,47,51,49,55,47,50,49,57,10,102,32,50,50,48,47, 51,49,56,47,50,50,48,32,50,50,51,47,51,50,51,47,50,50,51,32,50,50,52,47,51,50,52,47,50,50,52,10,102,32,50,50,52,47,51,50,52,47,50,50,52,32,50,50,49,47,51,49,57,47,50,50,49,32,50,50,48,47,51,49,56,47,50,50,48,10,102,32,50,50,49,47,51,49,57,47,50,50,49, 32,50,50,52,47,51,50,52,47,50,50,52,32,50,49,50,47,51,50,53,47,50,49,50,10,102,32,49,54,52,47,51,50,54,47,49,54,52,32,49,54,56,47,51,51,49,47,49,54,56,32,50,50,53,47,51,51,50,47,50,50,53,10,102,32,50,50,53,47,51,51,50,47,50,50,53,32,50,50,50,47,51,50, 55,47,50,50,50,32,49,54,52,47,51,50,54,47,49,54,52,10,102,32,50,50,50,47,51,50,55,47,50,50,50,32,50,50,53,47,51,51,50,47,50,50,53,32,50,50,54,47,51,51,51,47,50,50,54,10,102,32,50,50,54,47,51,51,51,47,50,50,54,32,50,50,51,47,51,50,56,47,50,50,51,32,50, 50,50,47,51,50,55,47,50,50,50,10,102,32,50,50,51,47,51,50,56,47,50,50,51,32,50,50,54,47,51,51,51,47,50,50,54,32,50,50,55,47,51,51,52,47,50,50,55,10,102,32,50,50,55,47,51,51,52,47,50,50,55,32,50,50,52,47,51,50,57,47,50,50,52,32,50,50,51,47,51,50,56,47, 50,50,51,10,102,32,50,50,52,47,51,50,57,47,50,50,52,32,50,50,55,47,51,51,52,47,50,50,55,32,50,49,50,47,51,51,53,47,50,49,50,10,102,32,49,54,56,47,51,51,49,47,49,54,56,32,49,55,50,47,51,51,54,47,49,55,50,32,50,50,56,47,51,51,55,47,50,50,56,10,102,32,50, 50,56,47,51,51,55,47,50,50,56,32,50,50,53,47,51,51,50,47,50,50,53,32,49,54,56,47,51,51,49,47,49,54,56,10,102,32,50,50,53,47,51,51,50,47,50,50,53,32,50,50,56,47,51,51,55,47,50,50,56,32,50,50,57,47,51,51,56,47,50,50,57,10,102,32,50,50,57,47,51,51,56,47, 50,50,57,32,50,50,54,47,51,51,51,47,50,50,54,32,50,50,53,47,51,51,50,47,50,50,53,10,102,32,50,50,54,47,51,51,51,47,50,50,54,32,50,50,57,47,51,51,56,47,50,50,57,32,50,51,48,47,51,51,57,47,50,51,48,10,102,32,50,51,48,47,51,51,57,47,50,51,48,32,50,50,55, 47,51,51,52,47,50,50,55,32,50,50,54,47,51,51,51,47,50,50,54,10,102,32,50,50,55,47,51,51,52,47,50,50,55,32,50,51,48,47,51,51,57,47,50,51,48,32,50,49,50,47,51,52,48,47,50,49,50,10,102,32,49,55,50,47,51,51,54,47,49,55,50,32,49,55,54,47,51,52,49,47,49,55, 54,32,50,51,49,47,51,52,50,47,50,51,49,10,102,32,50,51,49,47,51,52,50,47,50,51,49,32,50,50,56,47,51,51,55,47,50,50,56,32,49,55,50,47,51,51,54,47,49,55,50,10,102,32,50,50,56,47,51,51,55,47,50,50,56,32,50,51,49,47,51,52,50,47,50,51,49,32,50,51,50,47,51, 52,51,47,50,51,50,10,102,32,50,51,50,47,51,52,51,47,50,51,50,32,50,50,57,47,51,51,56,47,50,50,57,32,50,50,56,47,51,51,55,47,50,50,56,10,102,32,50,50,57,47,51,51,56,47,50,50,57,32,50,51,50,47,51,52,51,47,50,51,50,32,50,51,51,47,51,52,52,47,50,51,51,10, 102,32,50,51,51,47,51,52,52,47,50,51,51,32,50,51,48,47,51,51,57,47,50,51,48,32,50,50,57,47,51,51,56,47,50,50,57,10,102,32,50,51,48,47,51,51,57,47,50,51,48,32,50,51,51,47,51,52,52,47,50,51,51,32,50,49,50,47,51,52,53,47,50,49,50,10,102,32,49,55,54,47,51, 52,49,47,49,55,54,32,49,56,48,47,51,52,54,47,49,56,48,32,50,51,52,47,51,52,55,47,50,51,52,10,102,32,50,51,52,47,51,52,55,47,50,51,52,32,50,51,49,47,51,52,50,47,50,51,49,32,49,55,54,47,51,52,49,47,49,55,54,10,102,32,50,51,49,47,51,52,50,47,50,51,49,32, 50,51,52,47,51,52,55,47,50,51,52,32,50,51,53,47,51,52,56,47,50,51,53,10,102,32,50,51,53,47,51,52,56,47,50,51,53,32,50,51,50,47,51,52,51,47,50,51,50,32,50,51,49,47,51,52,50,47,50,51,49,10,102,32,50,51,50,47,51,52,51,47,50,51,50,32,50,51,53,47,51,52,56, 47,50,51,53,32,50,51,54,47,51,52,57,47,50,51,54,10,102,32,50,51,54,47,51,52,57,47,50,51,54,32,50,51,51,47,51,52,52,47,50,51,51,32,50,51,50,47,51,52,51,47,50,51,50,10,102,32,50,51,51,47,51,52,52,47,50,51,51,32,50,51,54,47,51,52,57,47,50,51,54,32,50,49, 50,47,51,53,48,47,50,49,50,10,102,32,49,56,48,47,51,53,49,47,49,56,48,32,49,56,52,47,51,53,54,47,49,56,52,32,50,51,55,47,51,53,55,47,50,51,55,10,102,32,50,51,55,47,51,53,55,47,50,51,55,32,50,51,52,47,51,53,50,47,50,51,52,32,49,56,48,47,51,53,49,47,49, 56,48,10,102,32,50,51,52,47,51,53,50,47,50,51,52,32,50,51,55,47,51,53,55,47,50,51,55,32,50,51,56,47,51,53,56,47,50,51,56,10,102,32,50,51,56,47,51,53,56,47,50,51,56,32,50,51,53,47,51,53,51,47,50,51,53,32,50,51,52,47,51,53,50,47,50,51,52,10,102,32,50,51, 53,47,51,53,51,47,50,51,53,32,50,51,56,47,51,53,56,47,50,51,56,32,50,51,57,47,51,53,57,47,50,51,57,10,102,32,50,51,57,47,51,53,57,47,50,51,57,32,50,51,54,47,51,53,52,47,50,51,54,32,50,51,53,47,51,53,51,47,50,51,53,10,102,32,50,51,54,47,51,53,52,47,50, 51,54,32,50,51,57,47,51,53,57,47,50,51,57,32,50,49,50,47,51,54,48,47,50,49,50,10,102,32,49,56,52,47,51,53,54,47,49,56,52,32,49,56,56,47,51,54,49,47,49,56,56,32,50,52,48,47,51,54,50,47,50,52,48,10,102,32,50,52,48,47,51,54,50,47,50,52,48,32,50,51,55,47, 51,53,55,47,50,51,55,32,49,56,52,47,51,53,54,47,49,56,52,10,102,32,50,51,55,47,51,53,55,47,50,51,55,32,50,52,48,47,51,54,50,47,50,52,48,32,50,52,49,47,51,54,51,47,50,52,49,10,102,32,50,52,49,47,51,54,51,47,50,52,49,32,50,51,56,47,51,53,56,47,50,51,56, 32,50,51,55,47,51,53,55,47,50,51,55,10,102,32,50,51,56,47,51,53,56,47,50,51,56,32,50,52,49,47,51,54,51,47,50,52,49,32,50,52,50,47,51,54,52,47,50,52,50,10,102,32,50,52,50,47,51,54,52,47,50,52,50,32,50,51,57,47,51,53,57,47,50,51,57,32,50,51,56,47,51,53, 56,47,50,51,56,10,102,32,50,51,57,47,51,53,57,47,50,51,57,32,50,52,50,47,51,54,52,47,50,52,50,32,50,49,50,47,51,54,53,47,50,49,50,10,102,32,49,56,56,47,51,54,49,47,49,56,56,32,49,57,50,47,51,54,54,47,49,57,50,32,50,52,51,47,51,54,55,47,50,52,51,10,102, 32,50,52,51,47,51,54,55,47,50,52,51,32,50,52,48,47,51,54,50,47,50,52,48,32,49,56,56,47,51,54,49,47,49,56,56,10,102,32,50,52,48,47,51,54,50,47,50,52,48,32,50,52,51,47,51,54,55,47,50,52,51,32,50,52,52,47,51,54,56,47,50,52,52,10,102,32,50,52,52,47,51,54, 56,47,50,52,52,32,50,52,49,47,51,54,51,47,50,52,49,32,50,52,48,47,51,54,50,47,50,52,48,10,102,32,50,52,49,47,51,54,51,47,50,52,49,32,50,52,52,47,51,54,56,47,50,52,52,32,50,52,53,47,51,54,57,47,50,52,53,10,102,32,50,52,53,47,51,54,57,47,50,52,53,32,50, 52,50,47,51,54,52,47,50,52,50,32,50,52,49,47,51,54,51,47,50,52,49,10,102,32,50,52,50,47,51,54,52,47,50,52,50,32,50,52,53,47,51,54,57,47,50,52,53,32,50,49,50,47,51,55,48,47,50,49,50,10,102,32,49,57,50,47,51,54,54,47,49,57,50,32,49,57,54,47,51,55,49,47, 49,57,54,32,50,52,54,47,51,55,50,47,50,52,54,10,102,32,50,52,54,47,51,55,50,47,50,52,54,32,50,52,51,47,51,54,55,47,50,52,51,32,49,57,50,47,51,54,54,47,49,57,50,10,102,32,50,52,51,47,51,54,55,47,50,52,51,32,50,52,54,47,51,55,50,47,50,52,54,32,50,52,55, 47,51,55,51,47,50,52,55,10,102,32,50,52,55,47,51,55,51,47,50,52,55,32,50,52,52,47,51,54,56,47,50,52,52,32,50,52,51,47,51,54,55,47,50,52,51,10,102,32,50,52,52,47,51,54,56,47,50,52,52,32,50,52,55,47,51,55,51,47,50,52,55,32,50,52,56,47,51,55,52,47,50,52, 56,10,102,32,50,52,56,47,51,55,52,47,50,52,56,32,50,52,53,47,51,54,57,47,50,52,53,32,50,52,52,47,51,54,56,47,50,52,52,10,102,32,50,52,53,47,51,54,57,47,50,52,53,32,50,52,56,47,51,55,52,47,50,52,56,32,50,49,50,47,51,55,53,47,50,49,50,10,102,32,49,57,54, 47,51,55,54,47,49,57,54,32,50,48,48,47,51,56,49,47,50,48,48,32,50,52,57,47,51,56,50,47,50,52,57,10,102,32,50,52,57,47,51,56,50,47,50,52,57,32,50,52,54,47,51,55,55,47,50,52,54,32,49,57,54,47,51,55,54,47,49,57,54,10,102,32,50,52,54,47,51,55,55,47,50,52, 54,32,50,52,57,47,51,56,50,47,50,52,57,32,50,53,48,47,51,56,51,47,50,53,48,10,102,32,50,53,48,47,51,56,51,47,50,53,48,32,50,52,55,47,51,55,56,47,50,52,55,32,50,52,54,47,51,55,55,47,50,52,54,10,102,32,50,52,55,47,51,55,56,47,50,52,55,32,50,53,48,47,51, 56,51,47,50,53,48,32,50,53,49,47,51,56,52,47,50,53,49,10,102,32,50,53,49,47,51,56,52,47,50,53,49,32,50,52,56,47,51,55,57,47,50,52,56,32,50,52,55,47,51,55,56,47,50,52,55,10,102,32,50,52,56,47,51,55,57,47,50,52,56,32,50,53,49,47,51,56,52,47,50,53,49,32, 50,49,50,47,51,56,53,47,50,49,50,10,102,32,50,48,48,47,51,56,49,47,50,48,48,32,50,48,52,47,51,56,54,47,50,48,52,32,50,53,50,47,51,56,55,47,50,53,50,10,102,32,50,53,50,47,51,56,55,47,50,53,50,32,50,52,57,47,51,56,50,47,50,52,57,32,50,48,48,47,51,56,49, 47,50,48,48,10,102,32,50,52,57,47,51,56,50,47,50,52,57,32,50,53,50,47,51,56,55,47,50,53,50,32,50,53,51,47,51,56,56,47,50,53,51,10,102,32,50,53,51,47,51,56,56,47,50,53,51,32,50,53,48,47,51,56,51,47,50,53,48,32,50,52,57,47,51,56,50,47,50,52,57,10,102,32, 50,53,48,47,51,56,51,47,50,53,48,32,50,53,51,47,51,56,56,47,50,53,51,32,50,53,52,47,51,56,57,47,50,53,52,10,102,32,50,53,52,47,51,56,57,47,50,53,52,32,50,53,49,47,51,56,52,47,50,53,49,32,50,53,48,47,51,56,51,47,50,53,48,10,102,32,50,53,49,47,51,56,52, 47,50,53,49,32,50,53,52,47,51,56,57,47,50,53,52,32,50,49,50,47,51,57,48,47,50,49,50,10,102,32,50,48,52,47,51,56,54,47,50,48,52,32,50,48,56,47,51,57,49,47,50,48,56,32,50,53,53,47,51,57,50,47,50,53,53,10,102,32,50,53,53,47,51,57,50,47,50,53,53,32,50,53, 50,47,51,56,55,47,50,53,50,32,50,48,52,47,51,56,54,47,50,48,52,10,102,32,50,53,50,47,51,56,55,47,50,53,50,32,50,53,53,47,51,57,50,47,50,53,53,32,50,53,54,47,51,57,51,47,50,53,54,10,102,32,50,53,54,47,51,57,51,47,50,53,54,32,50,53,51,47,51,56,56,47,50, 53,51,32,50,53,50,47,51,56,55,47,50,53,50,10,102,32,50,53,51,47,51,56,56,47,50,53,51,32,50,53,54,47,51,57,51,47,50,53,54,32,50,53,55,47,51,57,52,47,50,53,55,10,102,32,50,53,55,47,51,57,52,47,50,53,55,32,50,53,52,47,51,56,57,47,50,53,52,32,50,53,51,47, 51,56,56,47,50,53,51,10,102,32,50,53,52,47,51,56,57,47,50,53,52,32,50,53,55,47,51,57,52,47,50,53,55,32,50,49,50,47,51,57,53,47,50,49,50,10,102,32,50,48,56,47,51,57,49,47,50,48,56,32,49,52,56,47,51,57,54,47,49,52,56,32,50,48,57,47,51,57,55,47,50,48,57, 10,102,32,50,48,57,47,51,57,55,47,50,48,57,32,50,53,53,47,51,57,50,47,50,53,53,32,50,48,56,47,51,57,49,47,50,48,56,10,102,32,50,53,53,47,51,57,50,47,50,53,53,32,50,48,57,47,51,57,55,47,50,48,57,32,50,49,48,47,51,57,56,47,50,49,48,10,102,32,50,49,48,47, 51,57,56,47,50,49,48,32,50,53,54,47,51,57,51,47,50,53,54,32,50,53,53,47,51,57,50,47,50,53,53,10,102,32,50,53,54,47,51,57,51,47,50,53,54,32,50,49,48,47,51,57,56,47,50,49,48,32,50,49,49,47,51,57,57,47,50,49,49,10,102,32,50,49,49,47,51,57,57,47,50,49,49, 32,50,53,55,47,51,57,52,47,50,53,55,32,50,53,54,47,51,57,51,47,50,53,54,10,102,32,50,53,55,47,51,57,52,47,50,53,55,32,50,49,49,47,51,57,57,47,50,49,49,32,50,49,50,47,52,48,48,47,50,49,50,10,102,32,50,53,56,47,52,48,49,47,50,53,56,32,50,54,51,47,52,48, 54,47,50,54,51,32,50,54,52,47,52,48,55,47,50,54,52,10,102,32,50,54,52,47,52,48,55,47,50,54,52,32,50,53,57,47,52,48,50,47,50,53,57,32,50,53,56,47,52,48,49,47,50,53,56,10,102,32,50,53,57,47,52,48,50,47,50,53,57,32,50,54,52,47,52,48,55,47,50,54,52,32,50, 54,53,47,52,48,56,47,50,54,53,10,102,32,50,54,53,47,52,48,56,47,50,54,53,32,50,54,48,47,52,48,51,47,50,54,48,32,50,53,57,47,52,48,50,47,50,53,57,10,102,32,50,54,48,47,52,48,51,47,50,54,48,32,50,54,53,47,52,48,56,47,50,54,53,32,50,54,54,47,52,48,57,47, 50,54,54,10,102,32,50,54,54,47,52,48,57,47,50,54,54,32,50,54,49,47,52,48,52,47,50,54,49,32,50,54,48,47,52,48,51,47,50,54,48,10,102,32,50,54,49,47,52,48,52,47,50,54,49,32,50,54,54,47,52,48,57,47,50,54,54,32,50,54,55,47,52,49,48,47,50,54,55,10,102,32,50, 54,55,47,52,49,48,47,50,54,55,32,50,54,50,47,52,48,53,47,50,54,50,32,50,54,49,47,52,48,52,47,50,54,49,10,102,32,50,54,51,47,52,48,54,47,50,54,51,32,50,54,56,47,52,49,49,47,50,54,56,32,50,54,57,47,52,49,50,47,50,54,57,10,102,32,50,54,57,47,52,49,50,47, 50,54,57,32,50,54,52,47,52,48,55,47,50,54,52,32,50,54,51,47,52,48,54,47,50,54,51,10,102,32,50,54,52,47,52,48,55,47,50,54,52,32,50,54,57,47,52,49,50,47,50,54,57,32,50,55,48,47,52,49,51,47,50,55,48,10,102,32,50,55,48,47,52,49,51,47,50,55,48,32,50,54,53, 47,52,48,56,47,50,54,53,32,50,54,52,47,52,48,55,47,50,54,52,10,102,32,50,54,53,47,52,48,56,47,50,54,53,32,50,55,48,47,52,49,51,47,50,55,48,32,50,55,49,47,52,49,52,47,50,55,49,10,102,32,50,55,49,47,52,49,52,47,50,55,49,32,50,54,54,47,52,48,57,47,50,54, 54,32,50,54,53,47,52,48,56,47,50,54,53,10,102,32,50,54,54,47,52,48,57,47,50,54,54,32,50,55,49,47,52,49,52,47,50,55,49,32,50,55,50,47,52,49,53,47,50,55,50,10,102,32,50,55,50,47,52,49,53,47,50,55,50,32,50,54,55,47,52,49,48,47,50,54,55,32,50,54,54,47,52, 48,57,47,50,54,54,10,102,32,50,54,56,47,52,49,49,47,50,54,56,32,50,55,51,47,52,49,54,47,50,55,51,32,50,55,52,47,52,49,55,47,50,55,52,10,102,32,50,55,52,47,52,49,55,47,50,55,52,32,50,54,57,47,52,49,50,47,50,54,57,32,50,54,56,47,52,49,49,47,50,54,56,10, 102,32,50,54,57,47,52,49,50,47,50,54,57,32,50,55,52,47,52,49,55,47,50,55,52,32,50,55,53,47,52,49,56,47,50,55,53,10,102,32,50,55,53,47,52,49,56,47,50,55,53,32,50,55,48,47,52,49,51,47,50,55,48,32,50,54,57,47,52,49,50,47,50,54,57,10,102,32,50,55,48,47,52, 49,51,47,50,55,48,32,50,55,53,47,52,49,56,47,50,55,53,32,50,55,54,47,52,49,57,47,50,55,54,10,102,32,50,55,54,47,52,49,57,47,50,55,54,32,50,55,49,47,52,49,52,47,50,55,49,32,50,55,48,47,52,49,51,47,50,55,48,10,102,32,50,55,49,47,52,49,52,47,50,55,49,32, 50,55,54,47,52,49,57,47,50,55,54,32,50,55,55,47,52,50,48,47,50,55,55,10,102,32,50,55,55,47,52,50,48,47,50,55,55,32,50,55,50,47,52,49,53,47,50,55,50,32,50,55,49,47,52,49,52,47,50,55,49,10,102,32,50,55,51,47,52,49,54,47,50,55,51,32,50,55,56,47,52,50,49, 47,50,55,56,32,50,55,57,47,52,50,50,47,50,55,57,10,102,32,50,55,57,47,52,50,50,47,50,55,57,32,50,55,52,47,52,49,55,47,50,55,52,32,50,55,51,47,52,49,54,47,50,55,51,10,102,32,50,55,52,47,52,49,55,47,50,55,52,32,50,55,57,47,52,50,50,47,50,55,57,32,50,56, 48,47,52,50,51,47,50,56,48,10,102,32,50,56,48,47,52,50,51,47,50,56,48,32,50,55,53,47,52,49,56,47,50,55,53,32,50,55,52,47,52,49,55,47,50,55,52,10,102,32,50,55,53,47,52,49,56,47,50,55,53,32,50,56,48,47,52,50,51,47,50,56,48,32,50,56,49,47,52,50,52,47,50, 56,49,10,102,32,50,56,49,47,52,50,52,47,50,56,49,32,50,55,54,47,52,49,57,47,50,55,54,32,50,55,53,47,52,49,56,47,50,55,53,10,102,32,50,55,54,47,52,49,57,47,50,55,54,32,50,56,49,47,52,50,52,47,50,56,49,32,50,56,50,47,52,50,53,47,50,56,50,10,102,32,50,56, 50,47,52,50,53,47,50,56,50,32,50,55,55,47,52,50,48,47,50,55,55,32,50,55,54,47,52,49,57,47,50,55,54,10,102,32,50,55,56,47,52,50,54,47,50,55,56,32,50,56,51,47,52,51,49,47,50,56,51,32,50,56,52,47,52,51,50,47,50,56,52,10,102,32,50,56,52,47,52,51,50,47,50, 56,52,32,50,55,57,47,52,50,55,47,50,55,57,32,50,55,56,47,52,50,54,47,50,55,56,10,102,32,50,55,57,47,52,50,55,47,50,55,57,32,50,56,52,47,52,51,50,47,50,56,52,32,50,56,53,47,52,51,51,47,50,56,53,10,102,32,50,56,53,47,52,51,51,47,50,56,53,32,50,56,48,47, 52,50,56,47,50,56,48,32,50,55,57,47,52,50,55,47,50,55,57,10,102,32,50,56,48,47,52,50,56,47,50,56,48,32,50,56,53,47,52,51,51,47,50,56,53,32,50,56,54,47,52,51,52,47,50,56,54,10,102,32,50,56,54,47,52,51,52,47,50,56,54,32,50,56,49,47,52,50,57,47,50,56,49, 32,50,56,48,47,52,50,56,47,50,56,48,10,102,32,50,56,49,47,52,50,57,47,50,56,49,32,50,56,54,47,52,51,52,47,50,56,54,32,50,56,55,47,52,51,53,47,50,56,55,10,102,32,50,56,55,47,52,51,53,47,50,56,55,32,50,56,50,47,52,51,48,47,50,56,50,32,50,56,49,47,52,50, 57,47,50,56,49,10,102,32,50,56,51,47,52,51,49,47,50,56,51,32,50,56,56,47,52,51,54,47,50,56,56,32,50,56,57,47,52,51,55,47,50,56,57,10,102,32,50,56,57,47,52,51,55,47,50,56,57,32,50,56,52,47,52,51,50,47,50,56,52,32,50,56,51,47,52,51,49,47,50,56,51,10,102, 32,50,56,52,47,52,51,50,47,50,56,52,32,50,56,57,47,52,51,55,47,50,56,57,32,50,57,48,47,52,51,56,47,50,57,48,10,102,32,50,57,48,47,52,51,56,47,50,57,48,32,50,56,53,47,52,51,51,47,50,56,53,32,50,56,52,47,52,51,50,47,50,56,52,10,102,32,50,56,53,47,52,51, 51,47,50,56,53,32,50,57,48,47,52,51,56,47,50,57,48,32,50,57,49,47,52,51,57,47,50,57,49,10,102,32,50,57,49,47,52,51,57,47,50,57,49,32,50,56,54,47,52,51,52,47,50,56,54,32,50,56,53,47,52,51,51,47,50,56,53,10,102,32,50,56,54,47,52,51,52,47,50,56,54,32,50, 57,49,47,52,51,57,47,50,57,49,32,50,57,50,47,52,52,48,47,50,57,50,10,102,32,50,57,50,47,52,52,48,47,50,57,50,32,50,56,55,47,52,51,53,47,50,56,55,32,50,56,54,47,52,51,52,47,50,56,54,10,102,32,50,56,56,47,52,51,54,47,50,56,56,32,50,57,51,47,52,52,49,47, 50,57,51,32,50,57,52,47,52,52,50,47,50,57,52,10,102,32,50,57,52,47,52,52,50,47,50,57,52,32,50,56,57,47,52,51,55,47,50,56,57,32,50,56,56,47,52,51,54,47,50,56,56,10,102,32,50,56,57,47,52,51,55,47,50,56,57,32,50,57,52,47,52,52,50,47,50,57,52,32,50,57,53, 47,52,52,51,47,50,57,53,10,102,32,50,57,53,47,52,52,51,47,50,57,53,32,50,57,48,47,52,51,56,47,50,57,48,32,50,56,57,47,52,51,55,47,50,56,57,10,102,32,50,57,48,47,52,51,56,47,50,57,48,32,50,57,53,47,52,52,51,47,50,57,53,32,50,57,54,47,52,52,52,47,50,57, 54,10,102,32,50,57,54,47,52,52,52,47,50,57,54,32,50,57,49,47,52,51,57,47,50,57,49,32,50,57,48,47,52,51,56,47,50,57,48,10,102,32,50,57,49,47,52,51,57,47,50,57,49,32,50,57,54,47,52,52,52,47,50,57,54,32,50,57,55,47,52,52,53,47,50,57,55,10,102,32,50,57,55, 47,52,52,53,47,50,57,55,32,50,57,50,47,52,52,48,47,50,57,50,32,50,57,49,47,52,51,57,47,50,57,49,10,102,32,50,57,51,47,52,52,49,47,50,57,51,32,50,53,56,47,52,52,54,47,50,53,56,32,50,53,57,47,52,52,55,47,50,53,57,10,102,32,50,53,57,47,52,52,55,47,50,53, 57,32,50,57,52,47,52,52,50,47,50,57,52,32,50,57,51,47,52,52,49,47,50,57,51,10,102,32,50,57,52,47,52,52,50,47,50,57,52,32,50,53,57,47,52,52,55,47,50,53,57,32,50,54,48,47,52,52,56,47,50,54,48,10,102,32,50,54,48,47,52,52,56,47,50,54,48,32,50,57,53,47,52, 52,51,47,50,57,53,32,50,57,52,47,52,52,50,47,50,57,52,10,102,32,50,57,53,47,52,52,51,47,50,57,53,32,50,54,48,47,52,52,56,47,50,54,48,32,50,54,49,47,52,52,57,47,50,54,49,10,102,32,50,54,49,47,52,52,57,47,50,54,49,32,50,57,54,47,52,52,52,47,50,57,54,32, 50,57,53,47,52,52,51,47,50,57,53,10,102,32,50,57,54,47,52,52,52,47,50,57,54,32,50,54,49,47,52,52,57,47,50,54,49,32,50,54,50,47,52,53,48,47,50,54,50,10,102,32,50,54,50,47,52,53,48,47,50,54,50,32,50,57,55,47,52,52,53,47,50,57,55,32,50,57,54,47,52,52,52, 47,50,57,54,10,102,32,50,54,50,47,52,53,49,47,50,54,50,32,50,54,55,47,52,53,54,47,50,54,55,32,51,48,50,47,52,53,55,47,51,48,50,10,102,32,51,48,50,47,52,53,55,47,51,48,50,32,50,57,56,47,52,53,50,47,50,57,56,32,50,54,50,47,52,53,49,47,50,54,50,10,102,32, 50,57,56,47,52,53,50,47,50,57,56,32,51,48,50,47,52,53,55,47,51,48,50,32,51,48,51,47,52,53,56,47,51,48,51,10,102,32,51,48,51,47,52,53,56,47,51,48,51,32,50,57,57,47,52,53,51,47,50,57,57,32,50,57,56,47,52,53,50,47,50,57,56,10,102,32,50,57,57,47,52,53,51, 47,50,57,57,32,51,48,51,47,52,53,56,47,51,48,51,32,51,48,52,47,52,53,57,47,51,48,52,10,102,32,51,48,52,47,52,53,57,47,51,48,52,32,51,48,48,47,52,53,52,47,51,48,48,32,50,57,57,47,52,53,51,47,50,57,57,10,102,32,51,48,48,47,52,53,52,47,51,48,48,32,51,48, 52,47,52,53,57,47,51,48,52,32,51,48,53,47,52,54,48,47,51,48,53,10,102,32,51,48,53,47,52,54,48,47,51,48,53,32,51,48,49,47,52,53,53,47,51,48,49,32,51,48,48,47,52,53,52,47,51,48,48,10,102,32,50,54,55,47,52,53,54,47,50,54,55,32,50,55,50,47,52,54,49,47,50, 55,50,32,51,48,54,47,52,54,50,47,51,48,54,10,102,32,51,48,54,47,52,54,50,47,51,48,54,32,51,48,50,47,52,53,55,47,51,48,50,32,50,54,55,47,52,53,54,47,50,54,55,10,102,32,51,48,50,47,52,53,55,47,51,48,50,32,51,48,54,47,52,54,50,47,51,48,54,32,51,48,55,47, 52,54,51,47,51,48,55,10,102,32,51,48,55,47,52,54,51,47,51,48,55,32,51,48,51,47,52,53,56,47,51,48,51,32,51,48,50,47,52,53,55,47,51,48,50,10,102,32,51,48,51,47,52,53,56,47,51,48,51,32,51,48,55,47,52,54,51,47,51,48,55,32,51,48,56,47,52,54,52,47,51,48,56, 10,102,32,51,48,56,47,52,54,52,47,51,48,56,32,51,48,52,47,52,53,57,47,51,48,52,32,51,48,51,47,52,53,56,47,51,48,51,10,102,32,51,48,52,47,52,53,57,47,51,48,52,32,51,48,56,47,52,54,52,47,51,48,56,32,51,48,57,47,52,54,53,47,51,48,57,10,102,32,51,48,57,47, 52,54,53,47,51,48,57,32,51,48,53,47,52,54,48,47,51,48,53,32,51,48,52,47,52,53,57,47,51,48,52,10,102,32,50,55,50,47,52,54,49,47,50,55,50,32,50,55,55,47,52,54,54,47,50,55,55,32,51,49,48,47,52,54,55,47,51,49,48,10,102,32,51,49,48,47,52,54,55,47,51,49,48, 32,51,48,54,47,52,54,50,47,51,48,54,32,50,55,50,47,52,54,49,47,50,55,50,10,102,32,51,48,54,47,52,54,50,47,51,48,54,32,51,49,48,47,52,54,55,47,51,49,48,32,51,49,49,47,52,54,56,47,51,49,49,10,102,32,51,49,49,47,52,54,56,47,51,49,49,32,51,48,55,47,52,54, 51,47,51,48,55,32,51,48,54,47,52,54,50,47,51,48,54,10,102,32,51,48,55,47,52,54,51,47,51,48,55,32,51,49,49,47,52,54,56,47,51,49,49,32,51,49,50,47,52,54,57,47,51,49,50,10,102,32,51,49,50,47,52,54,57,47,51,49,50,32,51,48,56,47,52,54,52,47,51,48,56,32,51, 48,55,47,52,54,51,47,51,48,55,10,102,32,51,48,56,47,52,54,52,47,51,48,56,32,51,49,50,47,52,54,57,47,51,49,50,32,51,49,51,47,52,55,48,47,51,49,51,10,102,32,51,49,51,47,52,55,48,47,51,49,51,32,51,48,57,47,52,54,53,47,51,48,57,32,51,48,56,47,52,54,52,47, 51,48,56,10,102,32,50,55,55,47,52,54,54,47,50,55,55,32,50,56,50,47,52,55,49,47,50,56,50,32,51,49,52,47,52,55,50,47,51,49,52,10,102,32,51,49,52,47,52,55,50,47,51,49,52,32,51,49,48,47,52,54,55,47,51,49,48,32,50,55,55,47,52,54,54,47,50,55,55,10,102,32,51, 49,48,47,52,54,55,47,51,49,48,32,51,49,52,47,52,55,50,47,51,49,52,32,51,49,53,47,52,55,51,47,51,49,53,10,102,32,51,49,53,47,52,55,51,47,51,49,53,32,51,49,49,47,52,54,56,47,51,49,49,32,51,49,48,47,52,54,55,47,51,49,48,10,102,32,51,49,49,47,52,54,56,47, 51,49,49,32,51,49,53,47,52,55,51,47,51,49,53,32,51,49,54,47,52,55,52,47,51,49,54,10,102,32,51,49,54,47,52,55,52,47,51,49,54,32,51,49,50,47,52,54,57,47,51,49,50,32,51,49,49,47,52,54,56,47,51,49,49,10,102,32,51,49,50,47,52,54,57,47,51,49,50,32,51,49,54, 47,52,55,52,47,51,49,54,32,51,49,55,47,52,55,53,47,51,49,55,10,102,32,51,49,55,47,52,55,53,47,51,49,55,32,51,49,51,47,52,55,48,47,51,49,51,32,51,49,50,47,52,54,57,47,51,49,50,10,102,32,50,56,50,47,52,55,54,47,50,56,50,32,50,56,55,47,52,56,49,47,50,56, 55,32,51,49,56,47,52,56,50,47,51,49,56,10,102,32,51,49,56,47,52,56,50,47,51,49,56,32,51,49,52,47,52,55,55,47,51,49,52,32,50,56,50,47,52,55,54,47,50,56,50,10,102,32,51,49,52,47,52,55,55,47,51,49,52,32,51,49,56,47,52,56,50,47,51,49,56,32,51,49,57,47,52, 56,51,47,51,49,57,10,102,32,51,49,57,47,52,56,51,47,51,49,57,32,51,49,53,47,52,55,56,47,51,49,53,32,51,49,52,47,52,55,55,47,51,49,52,10,102,32,51,49,53,47,52,55,56,47,51,49,53,32,51,49,57,47,52,56,51,47,51,49,57,32,51,50,48,47,52,56,52,47,51,50,48,10, 102,32,51,50,48,47,52,56,52,47,51,50,48,32,51,49,54,47,52,55,57,47,51,49,54,32,51,49,53,47,52,55,56,47,51,49,53,10,102,32,51,49,54,47,52,55,57,47,51,49,54,32,51,50,48,47,52,56,52,47,51,50,48,32,51,50,49,47,52,56,53,47,51,50,49,10,102,32,51,50,49,47,52, 56,53,47,51,50,49,32,51,49,55,47,52,56,48,47,51,49,55,32,51,49,54,47,52,55,57,47,51,49,54,10,102,32,50,56,55,47,52,56,49,47,50,56,55,32,50,57,50,47,52,56,54,47,50,57,50,32,51,50,50,47,52,56,55,47,51,50,50,10,102,32,51,50,50,47,52,56,55,47,51,50,50,32, 51,49,56,47,52,56,50,47,51,49,56,32,50,56,55,47,52,56,49,47,50,56,55,10,102,32,51,49,56,47,52,56,50,47,51,49,56,32,51,50,50,47,52,56,55,47,51,50,50,32,51,50,51,47,52,56,56,47,51,50,51,10,102,32,51,50,51,47,52,56,56,47,51,50,51,32,51,49,57,47,52,56,51, 47,51,49,57,32,51,49,56,47,52,56,50,47,51,49,56,10,102,32,51,49,57,47,52,56,51,47,51,49,57,32,51,50,51,47,52,56,56,47,51,50,51,32,51,50,52,47,52,56,57,47,51,50,52,10,102,32,51,50,52,47,52,56,57,47,51,50,52,32,51,50,48,47,52,56,52,47,51,50,48,32,51,49, 57,47,52,56,51,47,51,49,57,10,102,32,51,50,48,47,52,56,52,47,51,50,48,32,51,50,52,47,52,56,57,47,51,50,52,32,51,50,53,47,52,57,48,47,51,50,53,10,102,32,51,50,53,47,52,57,48,47,51,50,53,32,51,50,49,47,52,56,53,47,51,50,49,32,51,50,48,47,52,56,52,47,51, 50,48,10,102,32,50,57,50,47,52,56,54,47,50,57,50,32,50,57,55,47,52,57,49,47,50,57,55,32,51,50,54,47,52,57,50,47,51,50,54,10,102,32,51,50,54,47,52,57,50,47,51,50,54,32,51,50,50,47,52,56,55,47,51,50,50,32,50,57,50,47,52,56,54,47,50,57,50,10,102,32,51,50, 50,47,52,56,55,47,51,50,50,32,51,50,54,47,52,57,50,47,51,50,54,32,51,50,55,47,52,57,51,47,51,50,55,10,102,32,51,50,55,47,52,57,51,47,51,50,55,32,51,50,51,47,52,56,56,47,51,50,51,32,51,50,50,47,52,56,55,47,51,50,50,10,102,32,51,50,51,47,52,56,56,47,51, 50,51,32,51,50,55,47,52,57,51,47,51,50,55,32,51,50,56,47,52,57,52,47,51,50,56,10,102,32,51,50,56,47,52,57,52,47,51,50,56,32,51,50,52,47,52,56,57,47,51,50,52,32,51,50,51,47,52,56,56,47,51,50,51,10,102,32,51,50,52,47,52,56,57,47,51,50,52,32,51,50,56,47, 52,57,52,47,51,50,56,32,51,50,57,47,52,57,53,47,51,50,57,10,102,32,51,50,57,47,52,57,53,47,51,50,57,32,51,50,53,47,52,57,48,47,51,50,53,32,51,50,52,47,52,56,57,47,51,50,52,10,102,32,50,57,55,47,52,57,49,47,50,57,55,32,50,54,50,47,52,57,54,47,50,54,50, 32,50,57,56,47,52,57,55,47,50,57,56,10,102,32,50,57,56,47,52,57,55,47,50,57,56,32,51,50,54,47,52,57,50,47,51,50,54,32,50,57,55,47,52,57,49,47,50,57,55,10,102,32,51,50,54,47,52,57,50,47,51,50,54,32,50,57,56,47,52,57,55,47,50,57,56,32,50,57,57,47,52,57, 56,47,50,57,57,10,102,32,50,57,57,47,52,57,56,47,50,57,57,32,51,50,55,47,52,57,51,47,51,50,55,32,51,50,54,47,52,57,50,47,51,50,54,10,102,32,51,50,55,47,52,57,51,47,51,50,55,32,50,57,57,47,52,57,56,47,50,57,57,32,51,48,48,47,52,57,57,47,51,48,48,10,102, 32,51,48,48,47,52,57,57,47,51,48,48,32,51,50,56,47,52,57,52,47,51,50,56,32,51,50,55,47,52,57,51,47,51,50,55,10,102,32,51,50,56,47,52,57,52,47,51,50,56,32,51,48,48,47,52,57,57,47,51,48,48,32,51,48,49,47,53,48,48,47,51,48,49,10,102,32,51,48,49,47,53,48, 48,47,51,48,49,32,51,50,57,47,52,57,53,47,51,50,57,32,51,50,56,47,52,57,52,47,51,50,56,10,102,32,51,51,48,47,53,48,49,47,51,51,48,32,51,51,53,47,53,48,54,47,51,51,53,32,51,51,54,47,53,48,55,47,51,51,54,10,102,32,51,51,54,47,53,48,55,47,51,51,54,32,51, 51,49,47,53,48,50,47,51,51,49,32,51,51,48,47,53,48,49,47,51,51,48,10,102,32,51,51,49,47,53,48,50,47,51,51,49,32,51,51,54,47,53,48,55,47,51,51,54,32,51,51,55,47,53,48,56,47,51,51,55,10,102,32,51,51,55,47,53,48,56,47,51,51,55,32,51,51,50,47,53,48,51,47, 51,51,50,32,51,51,49,47,53,48,50,47,51,51,49,10,102,32,51,51,50,47,53,48,51,47,51,51,50,32,51,51,55,47,53,48,56,47,51,51,55,32,51,51,56,47,53,48,57,47,51,51,56,10,102,32,51,51,56,47,53,48,57,47,51,51,56,32,51,51,51,47,53,48,52,47,51,51,51,32,51,51,50, 47,53,48,51,47,51,51,50,10,102,32,51,51,51,47,53,48,52,47,51,51,51,32,51,51,56,47,53,48,57,47,51,51,56,32,51,51,57,47,53,49,48,47,51,51,57,10,102,32,51,51,57,47,53,49,48,47,51,51,57,32,51,51,52,47,53,48,53,47,51,51,52,32,51,51,51,47,53,48,52,47,51,51, 51,10,102,32,51,51,53,47,53,48,54,47,51,51,53,32,51,52,48,47,53,49,49,47,51,52,48,32,51,52,49,47,53,49,50,47,51,52,49,10,102,32,51,52,49,47,53,49,50,47,51,52,49,32,51,51,54,47,53,48,55,47,51,51,54,32,51,51,53,47,53,48,54,47,51,51,53,10,102,32,51,51,54, 47,53,48,55,47,51,51,54,32,51,52,49,47,53,49,50,47,51,52,49,32,51,52,50,47,53,49,51,47,51,52,50,10,102,32,51,52,50,47,53,49,51,47,51,52,50,32,51,51,55,47,53,48,56,47,51,51,55,32,51,51,54,47,53,48,55,47,51,51,54,10,102,32,51,51,55,47,53,48,56,47,51,51, 55,32,51,52,50,47,53,49,51,47,51,52,50,32,51,52,51,47,53,49,52,47,51,52,51,10,102,32,51,52,51,47,53,49,52,47,51,52,51,32,51,51,56,47,53,48,57,47,51,51,56,32,51,51,55,47,53,48,56,47,51,51,55,10,102,32,51,51,56,47,53,48,57,47,51,51,56,32,51,52,51,47,53, 49,52,47,51,52,51,32,51,52,52,47,53,49,53,47,51,52,52,10,102,32,51,52,52,47,53,49,53,47,51,52,52,32,51,51,57,47,53,49,48,47,51,51,57,32,51,51,56,47,53,48,57,47,51,51,56,10,102,32,51,52,48,47,53,49,49,47,51,52,48,32,51,52,53,47,53,49,54,47,51,52,53,32, 51,52,54,47,53,49,55,47,51,52,54,10,102,32,51,52,54,47,53,49,55,47,51,52,54,32,51,52,49,47,53,49,50,47,51,52,49,32,51,52,48,47,53,49,49,47,51,52,48,10,102,32,51,52,49,47,53,49,50,47,51,52,49,32,51,52,54,47,53,49,55,47,51,52,54,32,51,52,55,47,53,49,56, 47,51,52,55,10,102,32,51,52,55,47,53,49,56,47,51,52,55,32,51,52,50,47,53,49,51,47,51,52,50,32,51,52,49,47,53,49,50,47,51,52,49,10,102,32,51,52,50,47,53,49,51,47,51,52,50,32,51,52,55,47,53,49,56,47,51,52,55,32,51,52,56,47,53,49,57,47,51,52,56,10,102,32, 51,52,56,47,53,49,57,47,51,52,56,32,51,52,51,47,53,49,52,47,51,52,51,32,51,52,50,47,53,49,51,47,51,52,50,10,102,32,51,52,51,47,53,49,52,47,51,52,51,32,51,52,56,47,53,49,57,47,51,52,56,32,51,52,57,47,53,50,48,47,51,52,57,10,102,32,51,52,57,47,53,50,48, 47,51,52,57,32,51,52,52,47,53,49,53,47,51,52,52,32,51,52,51,47,53,49,52,47,51,52,51,10,102,32,51,52,53,47,53,49,54,47,51,52,53,32,51,53,48,47,53,50,49,47,51,53,48,32,51,53,49,47,53,50,50,47,51,53,49,10,102,32,51,53,49,47,53,50,50,47,51,53,49,32,51,52, 54,47,53,49,55,47,51,52,54,32,51,52,53,47,53,49,54,47,51,52,53,10,102,32,51,52,54,47,53,49,55,47,51,52,54,32,51,53,49,47,53,50,50,47,51,53,49,32,51,53,50,47,53,50,51,47,51,53,50,10,102,32,51,53,50,47,53,50,51,47,51,53,50,32,51,52,55,47,53,49,56,47,51, 52,55,32,51,52,54,47,53,49,55,47,51,52,54,10,102,32,51,52,55,47,53,49,56,47,51,52,55,32,51,53,50,47,53,50,51,47,51,53,50,32,51,53,51,47,53,50,52,47,51,53,51,10,102,32,51,53,51,47,53,50,52,47,51,53,51,32,51,52,56,47,53,49,57,47,51,52,56,32,51,52,55,47, 53,49,56,47,51,52,55,10,102,32,51,52,56,47,53,49,57,47,51,52,56,32,51,53,51,47,53,50,52,47,51,53,51,32,51,53,52,47,53,50,53,47,51,53,52,10,102,32,51,53,52,47,53,50,53,47,51,53,52,32,51,52,57,47,53,50,48,47,51,52,57,32,51,52,56,47,53,49,57,47,51,52,56, 10,102,32,51,53,48,47,53,50,54,47,51,53,48,32,51,53,53,47,53,51,49,47,51,53,53,32,51,53,54,47,53,51,50,47,51,53,54,10,102,32,51,53,54,47,53,51,50,47,51,53,54,32,51,53,49,47,53,50,55,47,51,53,49,32,51,53,48,47,53,50,54,47,51,53,48,10,102,32,51,53,49,47, 53,50,55,47,51,53,49,32,51,53,54,47,53,51,50,47,51,53,54,32,51,53,55,47,53,51,51,47,51,53,55,10,102,32,51,53,55,47,53,51,51,47,51,53,55,32,51,53,50,47,53,50,56,47,51,53,50,32,51,53,49,47,53,50,55,47,51,53,49,10,102,32,51,53,50,47,53,50,56,47,51,53,50, 32,51,53,55,47,53,51,51,47,51,53,55,32,51,53,56,47,53,51,52,47,51,53,56,10,102,32,51,53,56,47,53,51,52,47,51,53,56,32,51,53,51,47,53,50,57,47,51,53,51,32,51,53,50,47,53,50,56,47,51,53,50,10,102,32,51,53,51,47,53,50,57,47,51,53,51,32,51,53,56,47,53,51, 52,47,51,53,56,32,51,53,57,47,53,51,53,47,51,53,57,10,102,32,51,53,57,47,53,51,53,47,51,53,57,32,51,53,52,47,53,51,48,47,51,53,52,32,51,53,51,47,53,50,57,47,51,53,51,10,102,32,51,53,53,47,53,51,49,47,51,53,53,32,51,54,48,47,53,51,54,47,51,54,48,32,51, 54,49,47,53,51,55,47,51,54,49,10,102,32,51,54,49,47,53,51,55,47,51,54,49,32,51,53,54,47,53,51,50,47,51,53,54,32,51,53,53,47,53,51,49,47,51,53,53,10,102,32,51,53,54,47,53,51,50,47,51,53,54,32,51,54,49,47,53,51,55,47,51,54,49,32,51,54,50,47,53,51,56,47, 51,54,50,10,102,32,51,54,50,47,53,51,56,47,51,54,50,32,51,53,55,47,53,51,51,47,51,53,55,32,51,53,54,47,53,51,50,47,51,53,54,10,102,32,51,53,55,47,53,51,51,47,51,53,55,32,51,54,50,47,53,51,56,47,51,54,50,32,51,54,51,47,53,51,57,47,51,54,51,10,102,32,51, 54,51,47,53,51,57,47,51,54,51,32,51,53,56,47,53,51,52,47,51,53,56,32,51,53,55,47,53,51,51,47,51,53,55,10,102,32,51,53,56,47,53,51,52,47,51,53,56,32,51,54,51,47,53,51,57,47,51,54,51,32,51,54,52,47,53,52,48,47,51,54,52,10,102,32,51,54,52,47,53,52,48,47, 51,54,52,32,51,53,57,47,53,51,53,47,51,53,57,32,51,53,56,47,53,51,52,47,51,53,56,10,102,32,51,54,48,47,53,51,54,47,51,54,48,32,51,54,53,47,53,52,49,47,51,54,53,32,51,54,54,47,53,52,50,47,51,54,54,10,102,32,51,54,54,47,53,52,50,47,51,54,54,32,51,54,49, 47,53,51,55,47,51,54,49,32,51,54,48,47,53,51,54,47,51,54,48,10,102,32,51,54,49,47,53,51,55,47,51,54,49,32,51,54,54,47,53,52,50,47,51,54,54,32,51,54,55,47,53,52,51,47,51,54,55,10,102,32,51,54,55,47,53,52,51,47,51,54,55,32,51,54,50,47,53,51,56,47,51,54, 50,32,51,54,49,47,53,51,55,47,51,54,49,10,102,32,51,54,50,47,53,51,56,47,51,54,50,32,51,54,55,47,53,52,51,47,51,54,55,32,51,54,56,47,53,52,52,47,51,54,56,10,102,32,51,54,56,47,53,52,52,47,51,54,56,32,51,54,51,47,53,51,57,47,51,54,51,32,51,54,50,47,53, 51,56,47,51,54,50,10,102,32,51,54,51,47,53,51,57,47,51,54,51,32,51,54,56,47,53,52,52,47,51,54,56,32,51,54,57,47,53,52,53,47,51,54,57,10,102,32,51,54,57,47,53,52,53,47,51,54,57,32,51,54,52,47,53,52,48,47,51,54,52,32,51,54,51,47,53,51,57,47,51,54,51,10, 102,32,51,54,53,47,53,52,49,47,51,54,53,32,51,51,48,47,53,52,54,47,51,51,48,32,51,51,49,47,53,52,55,47,51,51,49,10,102,32,51,51,49,47,53,52,55,47,51,51,49,32,51,54,54,47,53,52,50,47,51,54,54,32,51,54,53,47,53,52,49,47,51,54,53,10,102,32,51,54,54,47,53, 52,50,47,51,54,54,32,51,51,49,47,53,52,55,47,51,51,49,32,51,51,50,47,53,52,56,47,51,51,50,10,102,32,51,51,50,47,53,52,56,47,51,51,50,32,51,54,55,47,53,52,51,47,51,54,55,32,51,54,54,47,53,52,50,47,51,54,54,10,102,32,51,54,55,47,53,52,51,47,51,54,55,32, 51,51,50,47,53,52,56,47,51,51,50,32,51,51,51,47,53,52,57,47,51,51,51,10,102,32,51,51,51,47,53,52,57,47,51,51,51,32,51,54,56,47,53,52,52,47,51,54,56,32,51,54,55,47,53,52,51,47,51,54,55,10,102,32,51,54,56,47,53,52,52,47,51,54,56,32,51,51,51,47,53,52,57, 47,51,51,51,32,51,51,52,47,53,53,48,47,51,51,52,10,102,32,51,51,52,47,53,53,48,47,51,51,52,32,51,54,57,47,53,52,53,47,51,54,57,32,51,54,56,47,53,52,52,47,51,54,56,10,102,32,51,51,52,47,53,53,49,47,51,51,52,32,51,51,57,47,53,53,54,47,51,51,57,32,51,55, 52,47,53,53,55,47,51,55,52,10,102,32,51,55,52,47,53,53,55,47,51,55,52,32,51,55,48,47,53,53,50,47,51,55,48,32,51,51,52,47,53,53,49,47,51,51,52,10,102,32,51,55,48,47,53,53,50,47,51,55,48,32,51,55,52,47,53,53,55,47,51,55,52,32,51,55,53,47,53,53,56,47,51, 55,53,10,102,32,51,55,53,47,53,53,56,47,51,55,53,32,51,55,49,47,53,53,51,47,51,55,49,32,51,55,48,47,53,53,50,47,51,55,48,10,102,32,51,55,49,47,53,53,51,47,51,55,49,32,51,55,53,47,53,53,56,47,51,55,53,32,51,55,54,47,53,53,57,47,51,55,54,10,102,32,51,55, 54,47,53,53,57,47,51,55,54,32,51,55,50,47,53,53,52,47,51,55,50,32,51,55,49,47,53,53,51,47,51,55,49,10,102,32,51,55,50,47,53,53,52,47,51,55,50,32,51,55,54,47,53,53,57,47,51,55,54,32,51,55,55,47,53,54,48,47,51,55,55,10,102,32,51,55,55,47,53,54,48,47,51, 55,55,32,51,55,51,47,53,53,53,47,51,55,51,32,51,55,50,47,53,53,52,47,51,55,50,10,102,32,51,51,57,47,53,53,54,47,51,51,57,32,51,52,52,47,53,54,49,47,51,52,52,32,51,55,56,47,53,54,50,47,51,55,56,10,102,32,51,55,56,47,53,54,50,47,51,55,56,32,51,55,52,47, 53,53,55,47,51,55,52,32,51,51,57,47,53,53,54,47,51,51,57,10,102,32,51,55,52,47,53,53,55,47,51,55,52,32,51,55,56,47,53,54,50,47,51,55,56,32,51,55,57,47,53,54,51,47,51,55,57,10,102,32,51,55,57,47,53,54,51,47,51,55,57,32,51,55,53,47,53,53,56,47,51,55,53, 32,51,55,52,47,53,53,55,47,51,55,52,10,102,32,51,55,53,47,53,53,56,47,51,55,53,32,51,55,57,47,53,54,51,47,51,55,57,32,51,56,48,47,53,54,52,47,51,56,48,10,102,32,51,56,48,47,53,54,52,47,51,56,48,32,51,55,54,47,53,53,57,47,51,55,54,32,51,55,53,47,53,53, 56,47,51,55,53,10,102,32,51,55,54,47,53,53,57,47,51,55,54,32,51,56,48,47,53,54,52,47,51,56,48,32,51,56,49,47,53,54,53,47,51,56,49,10,102,32,51,56,49,47,53,54,53,47,51,56,49,32,51,55,55,47,53,54,48,47,51,55,55,32,51,55,54,47,53,53,57,47,51,55,54,10,102, 32,51,52,52,47,53,54,49,47,51,52,52,32,51,52,57,47,53,54,54,47,51,52,57,32,51,56,50,47,53,54,55,47,51,56,50,10,102,32,51,56,50,47,53,54,55,47,51,56,50,32,51,55,56,47,53,54,50,47,51,55,56,32,51,52,52,47,53,54,49,47,51,52,52,10,102,32,51,55,56,47,53,54, 50,47,51,55,56,32,51,56,50,47,53,54,55,47,51,56,50,32,51,56,51,47,53,54,56,47,51,56,51,10,102,32,51,56,51,47,53,54,56,47,51,56,51,32,51,55,57,47,53,54,51,47,51,55,57,32,51,55,56,47,53,54,50,47,51,55,56,10,102,32,51,55,57,47,53,54,51,47,51,55,57,32,51, 56,51,47,53,54,56,47,51,56,51,32,51,56,52,47,53,54,57,47,51,56,52,10,102,32,51,56,52,47,53,54,57,47,51,56,52,32,51,56,48,47,53,54,52,47,51,56,48,32,51,55,57,47,53,54,51,47,51,55,57,10,102,32,51,56,48,47,53,54,52,47,51,56,48,32,51,56,52,47,53,54,57,47, 51,56,52,32,51,56,53,47,53,55,48,47,51,56,53,10,102,32,51,56,53,47,53,55,48,47,51,56,53,32,51,56,49,47,53,54,53,47,51,56,49,32,51,56,48,47,53,54,52,47,51,56,48,10,102,32,51,52,57,47,53,54,54,47,51,52,57,32,51,53,52,47,53,55,49,47,51,53,52,32,51,56,54, 47,53,55,50,47,51,56,54,10,102,32,51,56,54,47,53,55,50,47,51,56,54,32,51,56,50,47,53,54,55,47,51,56,50,32,51,52,57,47,53,54,54,47,51,52,57,10,102,32,51,56,50,47,53,54,55,47,51,56,50,32,51,56,54,47,53,55,50,47,51,56,54,32,51,56,55,47,53,55,51,47,51,56, 55,10,102,32,51,56,55,47,53,55,51,47,51,56,55,32,51,56,51,47,53,54,56,47,51,56,51,32,51,56,50,47,53,54,55,47,51,56,50,10,102,32,51,56,51,47,53,54,56,47,51,56,51,32,51,56,55,47,53,55,51,47,51,56,55,32,51,56,56,47,53,55,52,47,51,56,56,10,102,32,51,56,56, 47,53,55,52,47,51,56,56,32,51,56,52,47,53,54,57,47,51,56,52,32,51,56,51,47,53,54,56,47,51,56,51,10,102,32,51,56,52,47,53,54,57,47,51,56,52,32,51,56,56,47,53,55,52,47,51,56,56,32,51,56,57,47,53,55,53,47,51,56,57,10,102,32,51,56,57,47,53,55,53,47,51,56, 57,32,51,56,53,47,53,55,48,47,51,56,53,32,51,56,52,47,53,54,57,47,51,56,52,10,102,32,51,53,52,47,53,55,54,47,51,53,52,32,51,53,57,47,53,56,49,47,51,53,57,32,51,57,48,47,53,56,50,47,51,57,48,10,102,32,51,57,48,47,53,56,50,47,51,57,48,32,51,56,54,47,53, 55,55,47,51,56,54,32,51,53,52,47,53,55,54,47,51,53,52,10,102,32,51,56,54,47,53,55,55,47,51,56,54,32,51,57,48,47,53,56,50,47,51,57,48,32,51,57,49,47,53,56,51,47,51,57,49,10,102,32,51,57,49,47,53,56,51,47,51,57,49,32,51,56,55,47,53,55,56,47,51,56,55,32, 51,56,54,47,53,55,55,47,51,56,54,10,102,32,51,56,55,47,53,55,56,47,51,56,55,32,51,57,49,47,53,56,51,47,51,57,49,32,51,57,50,47,53,56,52,47,51,57,50,10,102,32,51,57,50,47,53,56,52,47,51,57,50,32,51,56,56,47,53,55,57,47,51,56,56,32,51,56,55,47,53,55,56, 47,51,56,55,10,102,32,51,56,56,47,53,55,57,47,51,56,56,32,51,57,50,47,53,56,52,47,51,57,50,32,51,57,51,47,53,56,53,47,51,57,51,10,102,32,51,57,51,47,53,56,53,47,51,57,51,32,51,56,57,47,53,56,48,47,51,56,57,32,51,56,56,47,53,55,57,47,51,56,56,10,102,32, 51,53,57,47,53,56,49,47,51,53,57,32,51,54,52,47,53,56,54,47,51,54,52,32,51,57,52,47,53,56,55,47,51,57,52,10,102,32,51,57,52,47,53,56,55,47,51,57,52,32,51,57,48,47,53,56,50,47,51,57,48,32,51,53,57,47,53,56,49,47,51,53,57,10,102,32,51,57,48,47,53,56,50, 47,51,57,48,32,51,57,52,47,53,56,55,47,51,57,52,32,51,57,53,47,53,56,56,47,51,57,53,10,102,32,51,57,53,47,53,56,56,47,51,57,53,32,51,57,49,47,53,56,51,47,51,57,49,32,51,57,48,47,53,56,50,47,51,57,48,10,102,32,51,57,49,47,53,56,51,47,51,57,49,32,51,57, 53,47,53,56,56,47,51,57,53,32,51,57,54,47,53,56,57,47,51,57,54,10,102,32,51,57,54,47,53,56,57,47,51,57,54,32,51,57,50,47,53,56,52,47,51,57,50,32,51,57,49,47,53,56,51,47,51,57,49,10,102,32,51,57,50,47,53,56,52,47,51,57,50,32,51,57,54,47,53,56,57,47,51, 57,54,32,51,57,55,47,53,57,48,47,51,57,55,10,102,32,51,57,55,47,53,57,48,47,51,57,55,32,51,57,51,47,53,56,53,47,51,57,51,32,51,57,50,47,53,56,52,47,51,57,50,10,102,32,51,54,52,47,53,56,54,47,51,54,52,32,51,54,57,47,53,57,49,47,51,54,57,32,51,57,56,47, 53,57,50,47,51,57,56,10,102,32,51,57,56,47,53,57,50,47,51,57,56,32,51,57,52,47,53,56,55,47,51,57,52,32,51,54,52,47,53,56,54,47,51,54,52,10,102,32,51,57,52,47,53,56,55,47,51,57,52,32,51,57,56,47,53,57,50,47,51,57,56,32,51,57,57,47,53,57,51,47,51,57,57, 10,102,32,51,57,57,47,53,57,51,47,51,57,57,32,51,57,53,47,53,56,56,47,51,57,53,32,51,57,52,47,53,56,55,47,51,57,52,10,102,32,51,57,53,47,53,56,56,47,51,57,53,32,51,57,57,47,53,57,51,47,51,57,57,32,52,48,48,47,53,57,52,47,52,48,48,10,102,32,52,48,48,47, 53,57,52,47,52,48,48,32,51,57,54,47,53,56,57,47,51,57,54,32,51,57,53,47,53,56,56,47,51,57,53,10,102,32,51,57,54,47,53,56,57,47,51,57,54,32,52,48,48,47,53,57,52,47,52,48,48,32,52,48,49,47,53,57,53,47,52,48,49,10,102,32,52,48,49,47,53,57,53,47,52,48,49, 32,51,57,55,47,53,57,48,47,51,57,55,32,51,57,54,47,53,56,57,47,51,57,54,10,102,32,51,54,57,47,53,57,49,47,51,54,57,32,51,51,52,47,53,57,54,47,51,51,52,32,51,55,48,47,53,57,55,47,51,55,48,10,102,32,51,55,48,47,53,57,55,47,51,55,48,32,51,57,56,47,53,57, 50,47,51,57,56,32,51,54,57,47,53,57,49,47,51,54,57,10,102,32,51,57,56,47,53,57,50,47,51,57,56,32,51,55,48,47,53,57,55,47,51,55,48,32,51,55,49,47,53,57,56,47,51,55,49,10,102,32,51,55,49,47,53,57,56,47,51,55,49,32,51,57,57,47,53,57,51,47,51,57,57,32,51, 57,56,47,53,57,50,47,51,57,56,10,102,32,51,57,57,47,53,57,51,47,51,57,57,32,51,55,49,47,53,57,56,47,51,55,49,32,51,55,50,47,53,57,57,47,51,55,50,10,102,32,51,55,50,47,53,57,57,47,51,55,50,32,52,48,48,47,53,57,52,47,52,48,48,32,51,57,57,47,53,57,51,47, 51,57,57,10,102,32,52,48,48,47,53,57,52,47,52,48,48,32,51,55,50,47,53,57,57,47,51,55,50,32,51,55,51,47,54,48,48,47,51,55,51,10,102,32,51,55,51,47,54,48,48,47,51,55,51,32,52,48,49,47,53,57,53,47,52,48,49,32,52,48,48,47,53,57,52,47,52,48,48,10,102,32,52, 48,55,47,54,48,55,47,52,48,55,32,52,48,51,47,54,48,50,47,52,48,51,32,52,48,50,47,54,48,49,47,52,48,50,10,102,32,52,48,51,47,54,48,50,47,52,48,51,32,52,48,55,47,54,48,55,47,52,48,55,32,52,48,56,47,54,48,56,47,52,48,56,10,102,32,52,48,56,47,54,48,56,47, 52,48,56,32,52,48,52,47,54,48,51,47,52,48,52,32,52,48,51,47,54,48,50,47,52,48,51,10,102,32,52,48,52,47,54,48,51,47,52,48,52,32,52,48,56,47,54,48,56,47,52,48,56,32,52,48,57,47,54,48,57,47,52,48,57,10,102,32,52,48,57,47,54,48,57,47,52,48,57,32,52,48,53, 47,54,48,52,47,52,48,53,32,52,48,52,47,54,48,51,47,52,48,52,10,102,32,52,48,53,47,54,48,52,47,52,48,53,32,52,48,57,47,54,48,57,47,52,48,57,32,52,49,48,47,54,49,48,47,52,49,48,10,102,32,52,49,48,47,54,49,48,47,52,49,48,32,52,48,54,47,54,48,53,47,52,48, 54,32,52,48,53,47,54,48,52,47,52,48,53,10,102,32,52,49,49,47,54,49,50,47,52,49,49,32,52,48,55,47,54,48,55,47,52,48,55,32,52,48,50,47,54,48,54,47,52,48,50,10,102,32,52,48,55,47,54,48,55,47,52,48,55,32,52,49,49,47,54,49,50,47,52,49,49,32,52,49,50,47,54, 49,51,47,52,49,50,10,102,32,52,49,50,47,54,49,51,47,52,49,50,32,52,48,56,47,54,48,56,47,52,48,56,32,52,48,55,47,54,48,55,47,52,48,55,10,102,32,52,48,56,47,54,48,56,47,52,48,56,32,52,49,50,47,54,49,51,47,52,49,50,32,52,49,51,47,54,49,52,47,52,49,51,10, 102,32,52,49,51,47,54,49,52,47,52,49,51,32,52,48,57,47,54,48,57,47,52,48,57,32,52,48,56,47,54,48,56,47,52,48,56,10,102,32,52,48,57,47,54,48,57,47,52,48,57,32,52,49,51,47,54,49,52,47,52,49,51,32,52,49,52,47,54,49,53,47,52,49,52,10,102,32,52,49,52,47,54, 49,53,47,52,49,52,32,52,49,48,47,54,49,48,47,52,49,48,32,52,48,57,47,54,48,57,47,52,48,57,10,102,32,52,49,53,47,54,49,55,47,52,49,53,32,52,49,49,47,54,49,50,47,52,49,49,32,52,48,50,47,54,49,49,47,52,48,50,10,102,32,52,49,49,47,54,49,50,47,52,49,49,32, 52,49,53,47,54,49,55,47,52,49,53,32,52,49,54,47,54,49,56,47,52,49,54,10,102,32,52,49,54,47,54,49,56,47,52,49,54,32,52,49,50,47,54,49,51,47,52,49,50,32,52,49,49,47,54,49,50,47,52,49,49,10,102,32,52,49,50,47,54,49,51,47,52,49,50,32,52,49,54,47,54,49,56, 47,52,49,54,32,52,49,55,47,54,49,57,47,52,49,55,10,102,32,52,49,55,47,54,49,57,47,52,49,55,32,52,49,51,47,54,49,52,47,52,49,51,32,52,49,50,47,54,49,51,47,52,49,50,10,102,32,52,49,51,47,54,49,52,47,52,49,51,32,52,49,55,47,54,49,57,47,52,49,55,32,52,49, 56,47,54,50,48,47,52,49,56,10,102,32,52,49,56,47,54,50,48,47,52,49,56,32,52,49,52,47,54,49,53,47,52,49,52,32,52,49,51,47,54,49,52,47,52,49,51,10,102,32,52,49,57,47,54,50,50,47,52,49,57,32,52,49,53,47,54,49,55,47,52,49,53,32,52,48,50,47,54,49,54,47,52, 48,50,10,102,32,52,49,53,47,54,49,55,47,52,49,53,32,52,49,57,47,54,50,50,47,52,49,57,32,52,50,48,47,54,50,51,47,52,50,48,10,102,32,52,50,48,47,54,50,51,47,52,50,48,32,52,49,54,47,54,49,56,47,52,49,54,32,52,49,53,47,54,49,55,47,52,49,53,10,102,32,52,49, 54,47,54,49,56,47,52,49,54,32,52,50,48,47,54,50,51,47,52,50,48,32,52,50,49,47,54,50,52,47,52,50,49,10,102,32,52,50,49,47,54,50,52,47,52,50,49,32,52,49,55,47,54,49,57,47,52,49,55,32,52,49,54,47,54,49,56,47,52,49,54,10,102,32,52,49,55,47,54,49,57,47,52, 49,55,32,52,50,49,47,54,50,52,47,52,50,49,32,52,50,50,47,54,50,53,47,52,50,50,10,102,32,52,50,50,47,54,50,53,47,52,50,50,32,52,49,56,47,54,50,48,47,52,49,56,32,52,49,55,47,54,49,57,47,52,49,55,10,102,32,52,50,51,47,54,51,50,47,52,50,51,32,52,49,57,47, 54,50,55,47,52,49,57,32,52,48,50,47,54,50,54,47,52,48,50,10,102,32,52,49,57,47,54,50,55,47,52,49,57,32,52,50,51,47,54,51,50,47,52,50,51,32,52,50,52,47,54,51,51,47,52,50,52,10,102,32,52,50,52,47,54,51,51,47,52,50,52,32,52,50,48,47,54,50,56,47,52,50,48, 32,52,49,57,47,54,50,55,47,52,49,57,10,102,32,52,50,48,47,54,50,56,47,52,50,48,32,52,50,52,47,54,51,51,47,52,50,52,32,52,50,53,47,54,51,52,47,52,50,53,10,102,32,52,50,53,47,54,51,52,47,52,50,53,32,52,50,49,47,54,50,57,47,52,50,49,32,52,50,48,47,54,50, 56,47,52,50,48,10,102,32,52,50,49,47,54,50,57,47,52,50,49,32,52,50,53,47,54,51,52,47,52,50,53,32,52,50,54,47,54,51,53,47,52,50,54,10,102,32,52,50,54,47,54,51,53,47,52,50,54,32,52,50,50,47,54,51,48,47,52,50,50,32,52,50,49,47,54,50,57,47,52,50,49,10,102, 32,52,50,55,47,54,51,55,47,52,50,55,32,52,50,51,47,54,51,50,47,52,50,51,32,52,48,50,47,54,51,49,47,52,48,50,10,102,32,52,50,51,47,54,51,50,47,52,50,51,32,52,50,55,47,54,51,55,47,52,50,55,32,52,50,56,47,54,51,56,47,52,50,56,10,102,32,52,50,56,47,54,51, 56,47,52,50,56,32,52,50,52,47,54,51,51,47,52,50,52,32,52,50,51,47,54,51,50,47,52,50,51,10,102,32,52,50,52,47,54,51,51,47,52,50,52,32,52,50,56,47,54,51,56,47,52,50,56,32,52,50,57,47,54,51,57,47,52,50,57,10,102,32,52,50,57,47,54,51,57,47,52,50,57,32,52, 50,53,47,54,51,52,47,52,50,53,32,52,50,52,47,54,51,51,47,52,50,52,10,102,32,52,50,53,47,54,51,52,47,52,50,53,32,52,50,57,47,54,51,57,47,52,50,57,32,52,51,48,47,54,52,48,47,52,51,48,10,102,32,52,51,48,47,54,52,48,47,52,51,48,32,52,50,54,47,54,51,53,47, 52,50,54,32,52,50,53,47,54,51,52,47,52,50,53,10,102,32,52,51,49,47,54,52,50,47,52,51,49,32,52,50,55,47,54,51,55,47,52,50,55,32,52,48,50,47,54,51,54,47,52,48,50,10,102,32,52,50,55,47,54,51,55,47,52,50,55,32,52,51,49,47,54,52,50,47,52,51,49,32,52,51,50, 47,54,52,51,47,52,51,50,10,102,32,52,51,50,47,54,52,51,47,52,51,50,32,52,50,56,47,54,51,56,47,52,50,56,32,52,50,55,47,54,51,55,47,52,50,55,10,102,32,52,50,56,47,54,51,56,47,52,50,56,32,52,51,50,47,54,52,51,47,52,51,50,32,52,51,51,47,54,52,52,47,52,51, 51,10,102,32,52,51,51,47,54,52,52,47,52,51,51,32,52,50,57,47,54,51,57,47,52,50,57,32,52,50,56,47,54,51,56,47,52,50,56,10,102,32,52,50,57,47,54,51,57,47,52,50,57,32,52,51,51,47,54,52,52,47,52,51,51,32,52,51,52,47,54,52,53,47,52,51,52,10,102,32,52,51,52, 47,54,52,53,47,52,51,52,32,52,51,48,47,54,52,48,47,52,51,48,32,52,50,57,47,54,51,57,47,52,50,57,10,102,32,52,51,53,47,54,52,55,47,52,51,53,32,52,51,49,47,54,52,50,47,52,51,49,32,52,48,50,47,54,52,49,47,52,48,50,10,102,32,52,51,49,47,54,52,50,47,52,51, 49,32,52,51,53,47,54,52,55,47,52,51,53,32,52,51,54,47,54,52,56,47,52,51,54,10,102,32,52,51,54,47,54,52,56,47,52,51,54,32,52,51,50,47,54,52,51,47,52,51,50,32,52,51,49,47,54,52,50,47,52,51,49,10,102,32,52,51,50,47,54,52,51,47,52,51,50,32,52,51,54,47,54, 52,56,47,52,51,54,32,52,51,55,47,54,52,57,47,52,51,55,10,102,32,52,51,55,47,54,52,57,47,52,51,55,32,52,51,51,47,54,52,52,47,52,51,51,32,52,51,50,47,54,52,51,47,52,51,50,10,102,32,52,51,51,47,54,52,52,47,52,51,51,32,52,51,55,47,54,52,57,47,52,51,55,32, 52,51,56,47,54,53,48,47,52,51,56,10,102,32,52,51,56,47,54,53,48,47,52,51,56,32,52,51,52,47,54,52,53,47,52,51,52,32,52,51,51,47,54,52,52,47,52,51,51,10,102,32,52,51,57,47,54,53,55,47,52,51,57,32,52,51,53,47,54,53,50,47,52,51,53,32,52,48,50,47,54,53,49, 47,52,48,50,10,102,32,52,51,53,47,54,53,50,47,52,51,53,32,52,51,57,47,54,53,55,47,52,51,57,32,52,52,48,47,54,53,56,47,52,52,48,10,102,32,52,52,48,47,54,53,56,47,52,52,48,32,52,51,54,47,54,53,51,47,52,51,54,32,52,51,53,47,54,53,50,47,52,51,53,10,102,32, 52,51,54,47,54,53,51,47,52,51,54,32,52,52,48,47,54,53,56,47,52,52,48,32,52,52,49,47,54,53,57,47,52,52,49,10,102,32,52,52,49,47,54,53,57,47,52,52,49,32,52,51,55,47,54,53,52,47,52,51,55,32,52,51,54,47,54,53,51,47,52,51,54,10,102,32,52,51,55,47,54,53,52, 47,52,51,55,32,52,52,49,47,54,53,57,47,52,52,49,32,52,52,50,47,54,54,48,47,52,52,50,10,102,32,52,52,50,47,54,54,48,47,52,52,50,32,52,51,56,47,54,53,53,47,52,51,56,32,52,51,55,47,54,53,52,47,52,51,55,10,102,32,52,52,51,47,54,54,50,47,52,52,51,32,52,51, 57,47,54,53,55,47,52,51,57,32,52,48,50,47,54,53,54,47,52,48,50,10,102,32,52,51,57,47,54,53,55,47,52,51,57,32,52,52,51,47,54,54,50,47,52,52,51,32,52,52,52,47,54,54,51,47,52,52,52,10,102,32,52,52,52,47,54,54,51,47,52,52,52,32,52,52,48,47,54,53,56,47,52, 52,48,32,52,51,57,47,54,53,55,47,52,51,57,10,102,32,52,52,48,47,54,53,56,47,52,52,48,32,52,52,52,47,54,54,51,47,52,52,52,32,52,52,53,47,54,54,52,47,52,52,53,10,102,32,52,52,53,47,54,54,52,47,52,52,53,32,52,52,49,47,54,53,57,47,52,52,49,32,52,52,48,47, 54,53,56,47,52,52,48,10,102,32,52,52,49,47,54,53,57,47,52,52,49,32,52,52,53,47,54,54,52,47,52,52,53,32,52,52,54,47,54,54,53,47,52,52,54,10,102,32,52,52,54,47,54,54,53,47,52,52,54,32,52,52,50,47,54,54,48,47,52,52,50,32,52,52,49,47,54,53,57,47,52,52,49, 10,102,32,52,52,55,47,54,54,55,47,52,52,55,32,52,52,51,47,54,54,50,47,52,52,51,32,52,48,50,47,54,54,49,47,52,48,50,10,102,32,52,52,51,47,54,54,50,47,52,52,51,32,52,52,55,47,54,54,55,47,52,52,55,32,52,52,56,47,54,54,56,47,52,52,56,10,102,32,52,52,56,47, 54,54,56,47,52,52,56,32,52,52,52,47,54,54,51,47,52,52,52,32,52,52,51,47,54,54,50,47,52,52,51,10,102,32,52,52,52,47,54,54,51,47,52,52,52,32,52,52,56,47,54,54,56,47,52,52,56,32,52,52,57,47,54,54,57,47,52,52,57,10,102,32,52,52,57,47,54,54,57,47,52,52,57, 32,52,52,53,47,54,54,52,47,52,52,53,32,52,52,52,47,54,54,51,47,52,52,52,10,102,32,52,52,53,47,54,54,52,47,52,52,53,32,52,52,57,47,54,54,57,47,52,52,57,32,52,53,48,47,54,55,48,47,52,53,48,10,102,32,52,53,48,47,54,55,48,47,52,53,48,32,52,52,54,47,54,54, 53,47,52,52,54,32,52,52,53,47,54,54,52,47,52,52,53,10,102,32,52,53,49,47,54,55,50,47,52,53,49,32,52,52,55,47,54,54,55,47,52,52,55,32,52,48,50,47,54,54,54,47,52,48,50,10,102,32,52,52,55,47,54,54,55,47,52,52,55,32,52,53,49,47,54,55,50,47,52,53,49,32,52, 53,50,47,54,55,51,47,52,53,50,10,102,32,52,53,50,47,54,55,51,47,52,53,50,32,52,52,56,47,54,54,56,47,52,52,56,32,52,52,55,47,54,54,55,47,52,52,55,10,102,32,52,52,56,47,54,54,56,47,52,52,56,32,52,53,50,47,54,55,51,47,52,53,50,32,52,53,51,47,54,55,52,47, 52,53,51,10,102,32,52,53,51,47,54,55,52,47,52,53,51,32,52,52,57,47,54,54,57,47,52,52,57,32,52,52,56,47,54,54,56,47,52,52,56,10,102,32,52,52,57,47,54,54,57,47,52,52,57,32,52,53,51,47,54,55,52,47,52,53,51,32,52,53,52,47,54,55,53,47,52,53,52,10,102,32,52, 53,52,47,54,55,53,47,52,53,52,32,52,53,48,47,54,55,48,47,52,53,48,32,52,52,57,47,54,54,57,47,52,52,57,10,102,32,52,53,53,47,54,56,50,47,52,53,53,32,52,53,49,47,54,55,55,47,52,53,49,32,52,48,50,47,54,55,54,47,52,48,50,10,102,32,52,53,49,47,54,55,55,47, 52,53,49,32,52,53,53,47,54,56,50,47,52,53,53,32,52,53,54,47,54,56,51,47,52,53,54,10,102,32,52,53,54,47,54,56,51,47,52,53,54,32,52,53,50,47,54,55,56,47,52,53,50,32,52,53,49,47,54,55,55,47,52,53,49,10,102,32,52,53,50,47,54,55,56,47,52,53,50,32,52,53,54, 47,54,56,51,47,52,53,54,32,52,53,55,47,54,56,52,47,52,53,55,10,102,32,52,53,55,47,54,56,52,47,52,53,55,32,52,53,51,47,54,55,57,47,52,53,51,32,52,53,50,47,54,55,56,47,52,53,50,10,102,32,52,53,51,47,54,55,57,47,52,53,51,32,52,53,55,47,54,56,52,47,52,53, 55,32,52,53,56,47,54,56,53,47,52,53,56,10,102,32,52,53,56,47,54,56,53,47,52,53,56,32,52,53,52,47,54,56,48,47,52,53,52,32,52,53,51,47,54,55,57,47,52,53,51,10,102,32,52,53,57,47,54,56,55,47,52,53,57,32,52,53,53,47,54,56,50,47,52,53,53,32,52,48,50,47,54, 56,49,47,52,48,50,10,102,32,52,53,53,47,54,56,50,47,52,53,53,32,52,53,57,47,54,56,55,47,52,53,57,32,52,54,48,47,54,56,56,47,52,54,48,10,102,32,52,54,48,47,54,56,56,47,52,54,48,32,52,53,54,47,54,56,51,47,52,53,54,32,52,53,53,47,54,56,50,47,52,53,53,10, 102,32,52,53,54,47,54,56,51,47,52,53,54,32,52,54,48,47,54,56,56,47,52,54,48,32,52,54,49,47,54,56,57,47,52,54,49,10,102,32,52,54,49,47,54,56,57,47,52,54,49,32,52,53,55,47,54,56,52,47,52,53,55,32,52,53,54,47,54,56,51,47,52,53,54,10,102,32,52,53,55,47,54, 56,52,47,52,53,55,32,52,54,49,47,54,56,57,47,52,54,49,32,52,54,50,47,54,57,48,47,52,54,50,10,102,32,52,54,50,47,54,57,48,47,52,54,50,32,52,53,56,47,54,56,53,47,52,53,56,32,52,53,55,47,54,56,52,47,52,53,55,10,102,32,52,54,51,47,54,57,50,47,52,54,51,32, 52,53,57,47,54,56,55,47,52,53,57,32,52,48,50,47,54,56,54,47,52,48,50,10,102,32,52,53,57,47,54,56,55,47,52,53,57,32,52,54,51,47,54,57,50,47,52,54,51,32,52,54,52,47,54,57,51,47,52,54,52,10,102,32,52,54,52,47,54,57,51,47,52,54,52,32,52,54,48,47,54,56,56, 47,52,54,48,32,52,53,57,47,54,56,55,47,52,53,57,10,102,32,52,54,48,47,54,56,56,47,52,54,48,32,52,54,52,47,54,57,51,47,52,54,52,32,52,54,53,47,54,57,52,47,52,54,53,10,102,32,52,54,53,47,54,57,52,47,52,54,53,32,52,54,49,47,54,56,57,47,52,54,49,32,52,54, 48,47,54,56,56,47,52,54,48,10,102,32,52,54,49,47,54,56,57,47,52,54,49,32,52,54,53,47,54,57,52,47,52,54,53,32,52,54,54,47,54,57,53,47,52,54,54,10,102,32,52,54,54,47,54,57,53,47,52,54,54,32,52,54,50,47,54,57,48,47,52,54,50,32,52,54,49,47,54,56,57,47,52, 54,49,10,102,32,52,48,51,47,54,57,55,47,52,48,51,32,52,54,51,47,54,57,50,47,52,54,51,32,52,48,50,47,54,57,49,47,52,48,50,10,102,32,52,54,51,47,54,57,50,47,52,54,51,32,52,48,51,47,54,57,55,47,52,48,51,32,52,48,52,47,54,57,56,47,52,48,52,10,102,32,52,48, 52,47,54,57,56,47,52,48,52,32,52,54,52,47,54,57,51,47,52,54,52,32,52,54,51,47,54,57,50,47,52,54,51,10,102,32,52,54,52,47,54,57,51,47,52,54,52,32,52,48,52,47,54,57,56,47,52,48,52,32,52,48,53,47,54,57,57,47,52,48,53,10,102,32,52,48,53,47,54,57,57,47,52, 48,53,32,52,54,53,47,54,57,52,47,52,54,53,32,52,54,52,47,54,57,51,47,52,54,52,10,102,32,52,54,53,47,54,57,52,47,52,54,53,32,52,48,53,47,54,57,57,47,52,48,53,32,52,48,54,47,55,48,48,47,52,48,54,10,102,32,52,48,54,47,55,48,48,47,52,48,54,32,52,54,54,47, 54,57,53,47,52,54,54,32,52,54,53,47,54,57,52,47,52,54,53,10,102,32,52,48,54,47,55,48,49,47,52,48,54,32,52,49,48,47,55,48,54,47,52,49,48,32,52,55,49,47,55,48,55,47,52,55,49,10,102,32,52,55,49,47,55,48,55,47,52,55,49,32,52,54,55,47,55,48,50,47,52,54,55, 32,52,48,54,47,55,48,49,47,52,48,54,10,102,32,52,54,55,47,55,48,50,47,52,54,55,32,52,55,49,47,55,48,55,47,52,55,49,32,52,55,50,47,55,48,56,47,52,55,50,10,102,32,52,55,50,47,55,48,56,47,52,55,50,32,52,54,56,47,55,48,51,47,52,54,56,32,52,54,55,47,55,48, 50,47,52,54,55,10,102,32,52,54,56,47,55,48,51,47,52,54,56,32,52,55,50,47,55,48,56,47,52,55,50,32,52,55,51,47,55,48,57,47,52,55,51,10,102,32,52,55,51,47,55,48,57,47,52,55,51,32,52,54,57,47,55,48,52,47,52,54,57,32,52,54,56,47,55,48,51,47,52,54,56,10,102, 32,52,54,57,47,55,48,52,47,52,54,57,32,52,55,51,47,55,48,57,47,52,55,51,32,52,55,52,47,55,49,48,47,52,55,52,10,102,32,52,55,52,47,55,49,48,47,52,55,52,32,52,55,48,47,55,48,53,47,52,55,48,32,52,54,57,47,55,48,52,47,52,54,57,10,102,32,52,49,48,47,55,48, 54,47,52,49,48,32,52,49,52,47,55,49,49,47,52,49,52,32,52,55,53,47,55,49,50,47,52,55,53,10,102,32,52,55,53,47,55,49,50,47,52,55,53,32,52,55,49,47,55,48,55,47,52,55,49,32,52,49,48,47,55,48,54,47,52,49,48,10,102,32,52,55,49,47,55,48,55,47,52,55,49,32,52, 55,53,47,55,49,50,47,52,55,53,32,52,55,54,47,55,49,51,47,52,55,54,10,102,32,52,55,54,47,55,49,51,47,52,55,54,32,52,55,50,47,55,48,56,47,52,55,50,32,52,55,49,47,55,48,55,47,52,55,49,10,102,32,52,55,50,47,55,48,56,47,52,55,50,32,52,55,54,47,55,49,51,47, 52,55,54,32,52,55,55,47,55,49,52,47,52,55,55,10,102,32,52,55,55,47,55,49,52,47,52,55,55,32,52,55,51,47,55,48,57,47,52,55,51,32,52,55,50,47,55,48,56,47,52,55,50,10,102,32,52,55,51,47,55,48,57,47,52,55,51,32,52,55,55,47,55,49,52,47,52,55,55,32,52,55,56, 47,55,49,53,47,52,55,56,10,102,32,52,55,56,47,55,49,53,47,52,55,56,32,52,55,52,47,55,49,48,47,52,55,52,32,52,55,51,47,55,48,57,47,52,55,51,10,102,32,52,49,52,47,55,49,49,47,52,49,52,32,52,49,56,47,55,49,54,47,52,49,56,32,52,55,57,47,55,49,55,47,52,55, 57,10,102,32,52,55,57,47,55,49,55,47,52,55,57,32,52,55,53,47,55,49,50,47,52,55,53,32,52,49,52,47,55,49,49,47,52,49,52,10,102,32,52,55,53,47,55,49,50,47,52,55,53,32,52,55,57,47,55,49,55,47,52,55,57,32,52,56,48,47,55,49,56,47,52,56,48,10,102,32,52,56,48, 47,55,49,56,47,52,56,48,32,52,55,54,47,55,49,51,47,52,55,54,32,52,55,53,47,55,49,50,47,52,55,53,10,102,32,52,55,54,47,55,49,51,47,52,55,54,32,52,56,48,47,55,49,56,47,52,56,48,32,52,56,49,47,55,49,57,47,52,56,49,10,102,32,52,56,49,47,55,49,57,47,52,56, 49,32,52,55,55,47,55,49,52,47,52,55,55,32,52,55,54,47,55,49,51,47,52,55,54,10,102,32,52,55,55,47,55,49,52,47,52,55,55,32,52,56,49,47,55,49,57,47,52,56,49,32,52,56,50,47,55,50,48,47,52,56,50,10,102,32,52,56,50,47,55,50,48,47,52,56,50,32,52,55,56,47,55, 49,53,47,52,55,56,32,52,55,55,47,55,49,52,47,52,55,55,10,102,32,52,49,56,47,55,49,54,47,52,49,56,32,52,50,50,47,55,50,49,47,52,50,50,32,52,56,51,47,55,50,50,47,52,56,51,10,102,32,52,56,51,47,55,50,50,47,52,56,51,32,52,55,57,47,55,49,55,47,52,55,57,32, 52,49,56,47,55,49,54,47,52,49,56,10,102,32,52,55,57,47,55,49,55,47,52,55,57,32,52,56,51,47,55,50,50,47,52,56,51,32,52,56,52,47,55,50,51,47,52,56,52,10,102,32,52,56,52,47,55,50,51,47,52,56,52,32,52,56,48,47,55,49,56,47,52,56,48,32,52,55,57,47,55,49,55, 47,52,55,57,10,102,32,52,56,48,47,55,49,56,47,52,56,48,32,52,56,52,47,55,50,51,47,52,56,52,32,52,56,53,47,55,50,52,47,52,56,53,10,102,32,52,56,53,47,55,50,52,47,52,56,53,32,52,56,49,47,55,49,57,47,52,56,49,32,52,56,48,47,55,49,56,47,52,56,48,10,102,32, 52,56,49,47,55,49,57,47,52,56,49,32,52,56,53,47,55,50,52,47,52,56,53,32,52,56,54,47,55,50,53,47,52,56,54,10,102,32,52,56,54,47,55,50,53,47,52,56,54,32,52,56,50,47,55,50,48,47,52,56,50,32,52,56,49,47,55,49,57,47,52,56,49,10,102,32,52,50,50,47,55,50,54, 47,52,50,50,32,52,50,54,47,55,51,49,47,52,50,54,32,52,56,55,47,55,51,50,47,52,56,55,10,102,32,52,56,55,47,55,51,50,47,52,56,55,32,52,56,51,47,55,50,55,47,52,56,51,32,52,50,50,47,55,50,54,47,52,50,50,10,102,32,52,56,51,47,55,50,55,47,52,56,51,32,52,56, 55,47,55,51,50,47,52,56,55,32,52,56,56,47,55,51,51,47,52,56,56,10,102,32,52,56,56,47,55,51,51,47,52,56,56,32,52,56,52,47,55,50,56,47,52,56,52,32,52,56,51,47,55,50,55,47,52,56,51,10,102,32,52,56,52,47,55,50,56,47,52,56,52,32,52,56,56,47,55,51,51,47,52, 56,56,32,52,56,57,47,55,51,52,47,52,56,57,10,102,32,52,56,57,47,55,51,52,47,52,56,57,32,52,56,53,47,55,50,57,47,52,56,53,32,52,56,52,47,55,50,56,47,52,56,52,10,102,32,52,56,53,47,55,50,57,47,52,56,53,32,52,56,57,47,55,51,52,47,52,56,57,32,52,57,48,47, 55,51,53,47,52,57,48,10,102,32,52,57,48,47,55,51,53,47,52,57,48,32,52,56,54,47,55,51,48,47,52,56,54,32,52,56,53,47,55,50,57,47,52,56,53,10,102,32,52,50,54,47,55,51,49,47,52,50,54,32,52,51,48,47,55,51,54,47,52,51,48,32,52,57,49,47,55,51,55,47,52,57,49, 10,102,32,52,57,49,47,55,51,55,47,52,57,49,32,52,56,55,47,55,51,50,47,52,56,55,32,52,50,54,47,55,51,49,47,52,50,54,10,102,32,52,56,55,47,55,51,50,47,52,56,55,32,52,57,49,47,55,51,55,47,52,57,49,32,52,57,50,47,55,51,56,47,52,57,50,10,102,32,52,57,50,47, 55,51,56,47,52,57,50,32,52,56,56,47,55,51,51,47,52,56,56,32,52,56,55,47,55,51,50,47,52,56,55,10,102,32,52,56,56,47,55,51,51,47,52,56,56,32,52,57,50,47,55,51,56,47,52,57,50,32,52,57,51,47,55,51,57,47,52,57,51,10,102,32,52,57,51,47,55,51,57,47,52,57,51, 32,52,56,57,47,55,51,52,47,52,56,57,32,52,56,56,47,55,51,51,47,52,56,56,10,102,32,52,56,57,47,55,51,52,47,52,56,57,32,52,57,51,47,55,51,57,47,52,57,51,32,52,57,52,47,55,52,48,47,52,57,52,10,102,32,52,57,52,47,55,52,48,47,52,57,52,32,52,57,48,47,55,51, 53,47,52,57,48,32,52,56,57,47,55,51,52,47,52,56,57,10,102,32,52,51,48,47,55,51,54,47,52,51,48,32,52,51,52,47,55,52,49,47,52,51,52,32,52,57,53,47,55,52,50,47,52,57,53,10,102,32,52,57,53,47,55,52,50,47,52,57,53,32,52,57,49,47,55,51,55,47,52,57,49,32,52, 51,48,47,55,51,54,47,52,51,48,10,102,32,52,57,49,47,55,51,55,47,52,57,49,32,52,57,53,47,55,52,50,47,52,57,53,32,52,57,54,47,55,52,51,47,52,57,54,10,102,32,52,57,54,47,55,52,51,47,52,57,54,32,52,57,50,47,55,51,56,47,52,57,50,32,52,57,49,47,55,51,55,47, 52,57,49,10,102,32,52,57,50,47,55,51,56,47,52,57,50,32,52,57,54,47,55,52,51,47,52,57,54,32,52,57,55,47,55,52,52,47,52,57,55,10,102,32,52,57,55,47,55,52,52,47,52,57,55,32,52,57,51,47,55,51,57,47,52,57,51,32,52,57,50,47,55,51,56,47,52,57,50,10,102,32,52, 57,51,47,55,51,57,47,52,57,51,32,52,57,55,47,55,52,52,47,52,57,55,32,52,57,56,47,55,52,53,47,52,57,56,10,102,32,52,57,56,47,55,52,53,47,52,57,56,32,52,57,52,47,55,52,48,47,52,57,52,32,52,57,51,47,55,51,57,47,52,57,51,10,102,32,52,51,52,47,55,52,49,47, 52,51,52,32,52,51,56,47,55,52,54,47,52,51,56,32,52,57,57,47,55,52,55,47,52,57,57,10,102,32,52,57,57,47,55,52,55,47,52,57,57,32,52,57,53,47,55,52,50,47,52,57,53,32,52,51,52,47,55,52,49,47,52,51,52,10,102,32,52,57,53,47,55,52,50,47,52,57,53,32,52,57,57, 47,55,52,55,47,52,57,57,32,53,48,48,47,55,52,56,47,53,48,48,10,102,32,53,48,48,47,55,52,56,47,53,48,48,32,52,57,54,47,55,52,51,47,52,57,54,32,52,57,53,47,55,52,50,47,52,57,53,10,102,32,52,57,54,47,55,52,51,47,52,57,54,32,53,48,48,47,55,52,56,47,53,48, 48,32,53,48,49,47,55,52,57,47,53,48,49,10,102,32,53,48,49,47,55,52,57,47,53,48,49,32,52,57,55,47,55,52,52,47,52,57,55,32,52,57,54,47,55,52,51,47,52,57,54,10,102,32,52,57,55,47,55,52,52,47,52,57,55,32,53,48,49,47,55,52,57,47,53,48,49,32,53,48,50,47,55, 53,48,47,53,48,50,10,102,32,53,48,50,47,55,53,48,47,53,48,50,32,52,57,56,47,55,52,53,47,52,57,56,32,52,57,55,47,55,52,52,47,52,57,55,10,102,32,52,51,56,47,55,53,49,47,52,51,56,32,52,52,50,47,55,53,54,47,52,52,50,32,53,48,51,47,55,53,55,47,53,48,51,10, 102,32,53,48,51,47,55,53,55,47,53,48,51,32,52,57,57,47,55,53,50,47,52,57,57,32,52,51,56,47,55,53,49,47,52,51,56,10,102,32,52,57,57,47,55,53,50,47,52,57,57,32,53,48,51,47,55,53,55,47,53,48,51,32,53,48,52,47,55,53,56,47,53,48,52,10,102,32,53,48,52,47,55, 53,56,47,53,48,52,32,53,48,48,47,55,53,51,47,53,48,48,32,52,57,57,47,55,53,50,47,52,57,57,10,102,32,53,48,48,47,55,53,51,47,53,48,48,32,53,48,52,47,55,53,56,47,53,48,52,32,53,48,53,47,55,53,57,47,53,48,53,10,102,32,53,48,53,47,55,53,57,47,53,48,53,32, 53,48,49,47,55,53,52,47,53,48,49,32,53,48,48,47,55,53,51,47,53,48,48,10,102,32,53,48,49,47,55,53,52,47,53,48,49,32,53,48,53,47,55,53,57,47,53,48,53,32,53,48,54,47,55,54,48,47,53,48,54,10,102,32,53,48,54,47,55,54,48,47,53,48,54,32,53,48,50,47,55,53,53, 47,53,48,50,32,53,48,49,47,55,53,52,47,53,48,49,10,102,32,52,52,50,47,55,53,54,47,52,52,50,32,52,52,54,47,55,54,49,47,52,52,54,32,53,48,55,47,55,54,50,47,53,48,55,10,102,32,53,48,55,47,55,54,50,47,53,48,55,32,53,48,51,47,55,53,55,47,53,48,51,32,52,52, 50,47,55,53,54,47,52,52,50,10,102,32,53,48,51,47,55,53,55,47,53,48,51,32,53,48,55,47,55,54,50,47,53,48,55,32,53,48,56,47,55,54,51,47,53,48,56,10,102,32,53,48,56,47,55,54,51,47,53,48,56,32,53,48,52,47,55,53,56,47,53,48,52,32,53,48,51,47,55,53,55,47,53, 48,51,10,102,32,53,48,52,47,55,53,56,47,53,48,52,32,53,48,56,47,55,54,51,47,53,48,56,32,53,48,57,47,55,54,52,47,53,48,57,10,102,32,53,48,57,47,55,54,52,47,53,48,57,32,53,48,53,47,55,53,57,47,53,48,53,32,53,48,52,47,55,53,56,47,53,48,52,10,102,32,53,48, 53,47,55,53,57,47,53,48,53,32,53,48,57,47,55,54,52,47,53,48,57,32,53,49,48,47,55,54,53,47,53,49,48,10,102,32,53,49,48,47,55,54,53,47,53,49,48,32,53,48,54,47,55,54,48,47,53,48,54,32,53,48,53,47,55,53,57,47,53,48,53,10,102,32,52,52,54,47,55,54,49,47,52, 52,54,32,52,53,48,47,55,54,54,47,52,53,48,32,53,49,49,47,55,54,55,47,53,49,49,10,102,32,53,49,49,47,55,54,55,47,53,49,49,32,53,48,55,47,55,54,50,47,53,48,55,32,52,52,54,47,55,54,49,47,52,52,54,10,102,32,53,48,55,47,55,54,50,47,53,48,55,32,53,49,49,47, 55,54,55,47,53,49,49,32,53,49,50,47,55,54,56,47,53,49,50,10,102,32,53,49,50,47,55,54,56,47,53,49,50,32,53,48,56,47,55,54,51,47,53,48,56,32,53,48,55,47,55,54,50,47,53,48,55,10,102,32,53,48,56,47,55,54,51,47,53,48,56,32,53,49,50,47,55,54,56,47,53,49,50, 32,53,49,51,47,55,54,57,47,53,49,51,10,102,32,53,49,51,47,55,54,57,47,53,49,51,32,53,48,57,47,55,54,52,47,53,48,57,32,53,48,56,47,55,54,51,47,53,48,56,10,102,32,53,48,57,47,55,54,52,47,53,48,57,32,53,49,51,47,55,54,57,47,53,49,51,32,53,49,52,47,55,55, 48,47,53,49,52,10,102,32,53,49,52,47,55,55,48,47,53,49,52,32,53,49,48,47,55,54,53,47,53,49,48,32,53,48,57,47,55,54,52,47,53,48,57,10,102,32,52,53,48,47,55,54,54,47,52,53,48,32,52,53,52,47,55,55,49,47,52,53,52,32,53,49,53,47,55,55,50,47,53,49,53,10,102, 32,53,49,53,47,55,55,50,47,53,49,53,32,53,49,49,47,55,54,55,47,53,49,49,32,52,53,48,47,55,54,54,47,52,53,48,10,102,32,53,49,49,47,55,54,55,47,53,49,49,32,53,49,53,47,55,55,50,47,53,49,53,32,53,49,54,47,55,55,51,47,53,49,54,10,102,32,53,49,54,47,55,55, 51,47,53,49,54,32,53,49,50,47,55,54,56,47,53,49,50,32,53,49,49,47,55,54,55,47,53,49,49,10,102,32,53,49,50,47,55,54,56,47,53,49,50,32,53,49,54,47,55,55,51,47,53,49,54,32,53,49,55,47,55,55,52,47,53,49,55,10,102,32,53,49,55,47,55,55,52,47,53,49,55,32,53, 49,51,47,55,54,57,47,53,49,51,32,53,49,50,47,55,54,56,47,53,49,50,10,102,32,53,49,51,47,55,54,57,47,53,49,51,32,53,49,55,47,55,55,52,47,53,49,55,32,53,49,56,47,55,55,53,47,53,49,56,10,102,32,53,49,56,47,55,55,53,47,53,49,56,32,53,49,52,47,55,55,48,47, 53,49,52,32,53,49,51,47,55,54,57,47,53,49,51,10,102,32,52,53,52,47,55,55,54,47,52,53,52,32,52,53,56,47,55,56,49,47,52,53,56,32,53,49,57,47,55,56,50,47,53,49,57,10,102,32,53,49,57,47,55,56,50,47,53,49,57,32,53,49,53,47,55,55,55,47,53,49,53,32,52,53,52, 47,55,55,54,47,52,53,52,10,102,32,53,49,53,47,55,55,55,47,53,49,53,32,53,49,57,47,55,56,50,47,53,49,57,32,53,50,48,47,55,56,51,47,53,50,48,10,102,32,53,50,48,47,55,56,51,47,53,50,48,32,53,49,54,47,55,55,56,47,53,49,54,32,53,49,53,47,55,55,55,47,53,49, 53,10,102,32,53,49,54,47,55,55,56,47,53,49,54,32,53,50,48,47,55,56,51,47,53,50,48,32,53,50,49,47,55,56,52,47,53,50,49,10,102,32,53,50,49,47,55,56,52,47,53,50,49,32,53,49,55,47,55,55,57,47,53,49,55,32,53,49,54,47,55,55,56,47,53,49,54,10,102,32,53,49,55, 47,55,55,57,47,53,49,55,32,53,50,49,47,55,56,52,47,53,50,49,32,53,50,50,47,55,56,53,47,53,50,50,10,102,32,53,50,50,47,55,56,53,47,53,50,50,32,53,49,56,47,55,56,48,47,53,49,56,32,53,49,55,47,55,55,57,47,53,49,55,10,102,32,52,53,56,47,55,56,49,47,52,53, 56,32,52,54,50,47,55,56,54,47,52,54,50,32,53,50,51,47,55,56,55,47,53,50,51,10,102,32,53,50,51,47,55,56,55,47,53,50,51,32,53,49,57,47,55,56,50,47,53,49,57,32,52,53,56,47,55,56,49,47,52,53,56,10,102,32,53,49,57,47,55,56,50,47,53,49,57,32,53,50,51,47,55, 56,55,47,53,50,51,32,53,50,52,47,55,56,56,47,53,50,52,10,102,32,53,50,52,47,55,56,56,47,53,50,52,32,53,50,48,47,55,56,51,47,53,50,48,32,53,49,57,47,55,56,50,47,53,49,57,10,102,32,53,50,48,47,55,56,51,47,53,50,48,32,53,50,52,47,55,56,56,47,53,50,52,32, 53,50,53,47,55,56,57,47,53,50,53,10,102,32,53,50,53,47,55,56,57,47,53,50,53,32,53,50,49,47,55,56,52,47,53,50,49,32,53,50,48,47,55,56,51,47,53,50,48,10,102,32,53,50,49,47,55,56,52,47,53,50,49,32,53,50,53,47,55,56,57,47,53,50,53,32,53,50,54,47,55,57,48, 47,53,50,54,10,102,32,53,50,54,47,55,57,48,47,53,50,54,32,53,50,50,47,55,56,53,47,53,50,50,32,53,50,49,47,55,56,52,47,53,50,49,10,102,32,52,54,50,47,55,56,54,47,52,54,50,32,52,54,54,47,55,57,49,47,52,54,54,32,53,50,55,47,55,57,50,47,53,50,55,10,102,32, 53,50,55,47,55,57,50,47,53,50,55,32,53,50,51,47,55,56,55,47,53,50,51,32,52,54,50,47,55,56,54,47,52,54,50,10,102,32,53,50,51,47,55,56,55,47,53,50,51,32,53,50,55,47,55,57,50,47,53,50,55,32,53,50,56,47,55,57,51,47,53,50,56,10,102,32,53,50,56,47,55,57,51, 47,53,50,56,32,53,50,52,47,55,56,56,47,53,50,52,32,53,50,51,47,55,56,55,47,53,50,51,10,102,32,53,50,52,47,55,56,56,47,53,50,52,32,53,50,56,47,55,57,51,47,53,50,56,32,53,50,57,47,55,57,52,47,53,50,57,10,102,32,53,50,57,47,55,57,52,47,53,50,57,32,53,50, 53,47,55,56,57,47,53,50,53,32,53,50,52,47,55,56,56,47,53,50,52,10,102,32,53,50,53,47,55,56,57,47,53,50,53,32,53,50,57,47,55,57,52,47,53,50,57,32,53,51,48,47,55,57,53,47,53,51,48,10,102,32,53,51,48,47,55,57,53,47,53,51,48,32,53,50,54,47,55,57,48,47,53, 50,54,32,53,50,53,47,55,56,57,47,53,50,53,10,102,32,52,54,54,47,55,57,49,47,52,54,54,32,52,48,54,47,55,57,54,47,52,48,54,32,52,54,55,47,55,57,55,47,52,54,55,10,102,32,52,54,55,47,55,57,55,47,52,54,55,32,53,50,55,47,55,57,50,47,53,50,55,32,52,54,54,47, 55,57,49,47,52,54,54,10,102,32,53,50,55,47,55,57,50,47,53,50,55,32,52,54,55,47,55,57,55,47,52,54,55,32,52,54,56,47,55,57,56,47,52,54,56,10,102,32,52,54,56,47,55,57,56,47,52,54,56,32,53,50,56,47,55,57,51,47,53,50,56,32,53,50,55,47,55,57,50,47,53,50,55, 10,102,32,53,50,56,47,55,57,51,47,53,50,56,32,52,54,56,47,55,57,56,47,52,54,56,32,52,54,57,47,55,57,57,47,52,54,57,10,102,32,52,54,57,47,55,57,57,47,52,54,57,32,53,50,57,47,55,57,52,47,53,50,57,32,53,50,56,47,55,57,51,47,53,50,56,10,102,32,53,50,57,47, 55,57,52,47,53,50,57,32,52,54,57,47,55,57,57,47,52,54,57,32,52,55,48,47,56,48,48,47,52,55,48,10,102,32,52,55,48,47,56,48,48,47,52,55,48,32,53,51,48,47,55,57,53,47,53,51,48,32,53,50,57,47,55,57,52,47,53,50,57,10,35,32,57,57,50,32,102,97,99,101,115,10, 10,103,10,0,0 }; const char* teapot_obj = (const char*) temp_binary_data_7; //================== treedemo.xml ================== static const unsigned char temp_binary_data_8[] = "\r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" "\r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" "\r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" " \r\n" ""; const char* treedemo_xml = (const char*) temp_binary_data_8; const char* getNamedResource (const char*, int&) throw(); const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw() { unsigned int hash = 0; if (resourceNameUTF8 != 0) while (*resourceNameUTF8 != 0) hash = 31 * hash + (unsigned int) *resourceNameUTF8++; switch (hash) { case 0x84c79949: numBytes = 151; return tile_background_png; case 0x62032efa: numBytes = 46348; return cello_wav; case 0xaec3f52f: numBytes = 5239; return demo_table_data_xml; case 0xae303c7c: numBytes = 83876; return icons_zip; case 0x154a7275: numBytes = 45854; return juce_icon_png; case 0x7dd3f04f: numBytes = 1404; return juce_module_info; case 0x40c51c28: numBytes = 145904; return portmeirion_jpg; case 0x754c69fd: numBytes = 95000; return teapot_obj; case 0xdd644959: numBytes = 1126; return treedemo_xml; default: break; } numBytes = 0; return 0; } const char* namedResourceList[] = { "tile_background_png", "cello_wav", "demo_table_data_xml", "icons_zip", "juce_icon_png", "juce_module_info", "portmeirion_jpg", "teapot_obj", "treedemo_xml" }; } JUCE-4.1.0/examples/Demo/JuceLibraryCode/BinaryData.h000066400000000000000000000032041263452017400221440ustar00rootroot00000000000000/* ========================================================================================= This is an auto-generated file: Any edits you make may be overwritten! */ #ifndef BINARYDATA_H_134119534_INCLUDED #define BINARYDATA_H_134119534_INCLUDED namespace BinaryData { extern const char* tile_background_png; const int tile_background_pngSize = 151; extern const char* cello_wav; const int cello_wavSize = 46348; extern const char* demo_table_data_xml; const int demo_table_data_xmlSize = 5239; extern const char* icons_zip; const int icons_zipSize = 83876; extern const char* juce_icon_png; const int juce_icon_pngSize = 45854; extern const char* juce_module_info; const int juce_module_infoSize = 1404; extern const char* portmeirion_jpg; const int portmeirion_jpgSize = 145904; extern const char* teapot_obj; const int teapot_objSize = 95000; extern const char* treedemo_xml; const int treedemo_xmlSize = 1126; // Points to the start of a list of resource names. extern const char* namedResourceList[]; // Number of elements in the namedResourceList array. const int namedResourceListSize = 9; // If you provide the name of one of the binary resource variables above, this function will // return the corresponding data and its size (or a null pointer if the name isn't found). const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw(); } #endif JUCE-4.1.0/examples/Demo/JuceLibraryCode/JuceHeader.h000066400000000000000000000035041263452017400221300ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! This is the header file that your files should include in order to get all the JUCE library headers. You should avoid including the JUCE headers directly in your own source files, because that wouldn't pick up the correct configuration options for your app. */ #ifndef __APPHEADERFILE_SBBIZR__ #define __APPHEADERFILE_SBBIZR__ #include "AppConfig.h" #include "modules/juce_audio_basics/juce_audio_basics.h" #include "modules/juce_audio_devices/juce_audio_devices.h" #include "modules/juce_audio_formats/juce_audio_formats.h" #include "modules/juce_audio_processors/juce_audio_processors.h" #include "modules/juce_audio_utils/juce_audio_utils.h" #include "modules/juce_box2d/juce_box2d.h" #include "modules/juce_core/juce_core.h" #include "modules/juce_cryptography/juce_cryptography.h" #include "modules/juce_data_structures/juce_data_structures.h" #include "modules/juce_events/juce_events.h" #include "modules/juce_graphics/juce_graphics.h" #include "modules/juce_gui_basics/juce_gui_basics.h" #include "modules/juce_gui_extra/juce_gui_extra.h" #include "modules/juce_opengl/juce_opengl.h" #include "modules/juce_video/juce_video.h" #include "BinaryData.h" #if ! DONT_SET_USING_JUCE_NAMESPACE // If your code uses a lot of JUCE classes, then this will obviously save you // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. using namespace juce; #endif #if ! JUCE_DONT_DECLARE_PROJECTINFO namespace ProjectInfo { const char* const projectName = "JuceDemo"; const char* const versionString = "3.0.0"; const int versionNumber = 0x30000; } #endif #endif // __APPHEADERFILE_SBBIZR__ JUCE-4.1.0/examples/Demo/JuceLibraryCode/ReadMe.txt000066400000000000000000000011231263452017400216510ustar00rootroot00000000000000 Important Note!! ================ The purpose of this folder is to contain files that are auto-generated by the Introjucer, and ALL files in this folder will be mercilessly DELETED and completely re-written whenever the Introjucer saves your project. Therefore, it's a bad idea to make any manual changes to the files in here, or to put any of your own files in here if you don't want to lose them. (Of course you may choose to add the folder's contents to your version-control system so that you can re-merge your own modifications after the Introjucer has saved its changes). JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/000077500000000000000000000000001263452017400214265ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_basics/000077500000000000000000000000001263452017400250615ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h000066400000000000000000000002721263452017400306660ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_basics/juce_audio_basics.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_devices/000077500000000000000000000000001263452017400252375ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_devices/juce_audio_devices.h000066400000000000000000000002741263452017400312240ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_devices/juce_audio_devices.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_formats/000077500000000000000000000000001263452017400252705ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_formats/juce_audio_formats.h000066400000000000000000000002741263452017400313060ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_formats/juce_audio_formats.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_processors/000077500000000000000000000000001263452017400260175ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h000066400000000000000000000003021263452017400325540ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_processors/juce_audio_processors.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_utils/000077500000000000000000000000001263452017400247555ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.h000066400000000000000000000002701263452017400304540ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_utils/juce_audio_utils.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_box2d/000077500000000000000000000000001263452017400234525ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_box2d/juce_box2d.h000066400000000000000000000002541263452017400256500ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_box2d/juce_box2d.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_core/000077500000000000000000000000001263452017400233645ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_core/juce_core.h000066400000000000000000000002521263452017400254720ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_core/juce_core.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_cryptography/000077500000000000000000000000001263452017400251675ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.h000066400000000000000000000002721263452017400311020ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_cryptography/juce_cryptography.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_data_structures/000077500000000000000000000000001263452017400256505ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h000066400000000000000000000003001263452017400322340ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_data_structures/juce_data_structures.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_events/000077500000000000000000000000001263452017400237405ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_events/juce_events.h000066400000000000000000000002561263452017400264260ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_events/juce_events.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_graphics/000077500000000000000000000000001263452017400242345ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_graphics/juce_graphics.h000066400000000000000000000002621263452017400272130ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_graphics/juce_graphics.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_gui_basics/000077500000000000000000000000001263452017400245445ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h000066400000000000000000000002661263452017400300370ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_basics/juce_gui_basics.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_gui_extra/000077500000000000000000000000001263452017400244235ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h000066400000000000000000000002641263452017400275730ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_extra/juce_gui_extra.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_opengl/000077500000000000000000000000001263452017400237205ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_opengl/juce_opengl.h000066400000000000000000000002561263452017400263660ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_opengl/juce_opengl.h" JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_video/000077500000000000000000000000001263452017400235425ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/JuceLibraryCode/modules/juce_video/juce_video.h000066400000000000000000000002541263452017400260300ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_video/juce_video.h" JUCE-4.1.0/examples/Demo/Resources/000077500000000000000000000000001263452017400167225ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Resources/cello.wav000066400000000000000000001324141263452017400205440ustar00rootroot00000000000000RIFFWAVEfmt "VDbext\tracktion2006-10-0412:14:03data|            ,+9350.(#xoolifbccachqpW9EhhcpsO4%%2>AAH3 OY!N40#6,eLbiblwH&n:SZ6~*Tk[F)hTOMNU]T6 Q~H7<i6`u1}'gK}2u6v=+Zl KC_umU7Uu'ezpmrYR\ [4?4d`f{%U|tP `* M1' As}`I3t=|J;`DTM^aOKGZ ,)%O8VsA$P6:(8`}J91^V?Vqx`=0vN( ] TRJZlK h}N=vw$Mj2ahK-LE[cWP:'Z3;j-p0]mP+/NZ++JD1+sVWsWBc6nZ9Ah# cc!c1R1NQ[>.0y#$Bcg1p ,=ayb= XAO$]/ OehC3>(0Z] " ###X##"1"!v!Q!'! e /M|0CA i U hUfv $i>MV  )=k f | r C uIbb)/! e5kJ1L8fbmPHX3H0 bwc^bRFSVg6s{AKjfxaR d9&s$54l5=b3.q " U+Vy9jZo0ec4te; PmV;5S Q a !#%a'(**s++D+***)X)('&%e$#! o9$Zrx wC3 # (  E2@X I ! P .h0:d| T.;Rd#1kLjwSJf !2b,A@M iI7p7[T[ Cyfw8$ex|#O}m0#K_emYMm)1wR>r&b"!Om>foR0 toZ!i#$^%%%e%>%O%%&|(*U-02:57e89876420//-,+* *?)('Q'k&k%$" =0;5`66t  )=fWQ(K*E 0 x5,jLb2}cJs T3\@M+&[P|RE]S}Va  ZED c*, Y XIۓ==݊ݎ%J1G!aG1}vv:mLEMq{6l ^28nOYJ fu!F#$%Z&)''{()) +,.K146R9;>r?@6@?><:8642e1/t.,+B)'&&$#"o! _ayMR B *v$.QrL ~M{B ? +i9>'$/1%~[QAMD'a2N<#VG } Z>/XJjfJ\,[sD+ @9ޮۭبւLՌ'؆VܙݘB RmYE)bW:b6D|4^:?R _u $&o()^**:++ ,O,,@.0D25.8`;>xACElF_F]ErC@=@:641/.-,+ +3*n)((&=%m#! Z6,yiQH J _Dh'j;rCBl? E 64m&8Z T!߉ߟR pw`"Ol)J }/S'NE=W:]877/;`V7ڜף+IJѮ8)qש vWxJ){L$;biju  3 xm_`2`Jgj88WR ]!}%')*+r,K-,.U/t01358v:=?BEFGWHHFDAD>:74 31710 0/-v, +)'S&$a#8"V! < `Gc$ huLC4H! [   %*gsqYߜ9Uu:/O:l:pL&Q~V&7h:W,}JO}(x(zP7gt}mҩϒ˺9ʄ&˼= A/R(%!/| (4F , j xBLrF-L}fls)P]Uv~ra, J#'*+,---,6--./5258<=?BlDmFGHH>HFDzB?=\:<86y5}4`3207/-,+?)`'%i$-#!'!w  Ou(b9 b % N Dsm^ V4 2 |EI93 e1w8`II"\b߳W$٬ޥ-ht&>~q_voU*Ec"Y jٓi2O#wǘƊJ&EǿYsږ/nQ[L/\]@  AM  )fX%=,  CO !(% ''J(Y(G("(5()*\-h037;?CF`I@KLbM$MKIFC=A>l<:s986420m/<.-o+)](&v%#!X bf*6!Vl ( >W33HUr)i  + iG?&ba; q Dik g*1ONJ -֎֮A(ݓ5߸ZfrI\SS5?MA! 5B,ܐRWhʼnƜƺǺ|"n,"Cz : X B QW %  H > U   `coE eH[2I4k676! x ""# #""##%W(+/37;z?BEHIIIHE$C@=;987764310y/C.,*)':&$"!HbF50# *4j|yR" A I  R*Qu O4]~EY-OxQ Ԉ#QE3N۞O=1a3Q#Z9߹߹߿i\2FGbg7lߗbKՑΤa2SVǞȥJ$ Fҋגe)    Z| V3t L 3 p,NU,wZ!+hUiW UQZA !H#$')-3159>AE~HJKs Q  W4lA @ ?_ S f L 0  g@zjESLzt}-YG ~!#&*.G37-<9.86y5o43>203/-+*?(%#v!k4~YpO6G - f ]lIs< , n 6   :l; l 05t5d\*f& +ӧUփؠE8ޖޤ޶b?Hd>]>DA7oiF(^ Za3ߓ$>Ѡd$bԓ֔JS9qdF u  :@gW, Sh @ j K >  ) $RPoQ04k`4N"fz n.D7TG&!#Z&)'-0379;d=p>>8><:3853291I0y/m.-.+)&$#_!2)-O@  96A>9=O- ! (q=Mp Ulxa+QONmى9(nܠg=cVuPDu#*|h}MBu{^S1w.6fJayZ!8@64Z5)[*U0^n % px|\/  5 l A ` &l1wZ qrKb<+>6z' ^ -|)~j!"#z$v$#"! g78kC<J  V R s K  : - #oGx\ F@fera@ A  2  ) j a;TD< `/a'vGj+Y;Bgo^Sg+]%_ z ) ] w 3 1h@5 7 ? @  #  N m )T JzO9cuR%22 }u/lBeE.u  It?  ~ E $ ! d Nc xFj'9 |!mF'B!L/zK6SrNv%t'3PN:mL} kZ=dC_7Xe$tlg+.}VAYK<g' WSvX,*vO85 ,Y]g{:'^3 vXym\ctIrgi~?k|%_tv]OT6:Kremc=%y6^9p`A%I Iib][MVFTwH ^4[>^d|H[i3i 'YGC`-5c_| w $ / 8 = H 2 % (   S   +IT,|>c~YI-N a+ yLq{'T7?=]hzm{+O(+{:jnjHoXY1u4~Nl>YZOK\`EtE>":j{ix"}DK+OpcJ4uRC+=]2,3%t_>i~0, K ? r J y C   ) K f ` J  2vL @LAe211_Ll~L)&?.@< K(r0"PsV/RN"Tpb3 o0Bkn8=w(KE^aKweE !7K[[h/kbq1k?9NG[?|oYF2<"~dC8ZzI|I"!L.)X~lNEx?l6` G j Q v } > OsWsKXtnyg9&9yA>x^()g>gXYgkrr|x`,M1ru` NP>P}KIaZ9]"B(@^ h+ns4rgguk37;qQ8 ,KBI>=!S[y.$zg$z\+ ,%1qSy#q5klL(k3:8@CKUSL26mp-}Quhj.^&;WpHA[lillfTGE3b ~U,<!CB+ iV1b\7:e.O^spL52$'EK =ac9iSX l9iQ!i7t_H""Ts7gQF =uQ2|nl9wlF )q(p K3w]Ktr8kMf X 8UEEirvfbko{tfEp:>_xuZA/!4F__+ mZ1!0O3H8;,)?r;~;^.D`u`VNYiz+`zCv x7lKx`& m2sT?E4:,OBIaW/:* agUszE($AWbyG.u4:$K]i^ap'ti6KpH%%t,aCG`_UI ;x\*Zy"f=zlE7  HYb0]9/9y0 !H{,9U+1CK`Wyx:{.*2HdzD* -AR=(%90ibXSH>>(2EVqpWw@h~HV2Aa)En`^s?_tZTK;=KjziW]TaqT2/EH)e \#OlUY]l{.^K*Yypr&FxLm|ET%}^1  @p(Qt,p$z   r= ANTRRse]WTZR`RVi}W'@dlHB`-InB 2Lae{~bKAM}KxBA~Bm%3q!AA#{L/Fp.\1hK**Chc!y ClwbM8!08ALM[qIb|uqSMA'+69BB2i7q^cm{pbXQXg;bKEds3\}yY@v6D^[H636.6Ox[$DU"U`&:7)  J~Qz[+(vh}L! af2ueXn0^zbAXdURXbJ0jG6N\s>hpwlZH-$2X2OPGafC6pqu8cAwoAxi[SM`mI-n}4fSp#Nt2KrzY8tde[L0q(>fAe}4V0`FyZ63EIW``J!q>#UVh'tQ2)ZI87>FWUbm~yDq f|iPC63>;0," -Af! |iqOX't`SP\q|xsjXNPZ_pw?4p -c +Kk &662&    hYGILLH=':o!G~ .8?MXTUOJ-'Y"b$* {qX<g4kO9Rs9 b^JB:A:88B^qwnn0ATq~uI 3I^pcB-=AKTcz~|qfI9$ fSUbmqyjj_F( :>>4 >j0Q|!5Pe1CKWWQD/' siefh^O2(533$*AaEoBXkdvukUF9*" .N]q <J_y`"xBW xbI%{Kwlbfnwtmi`l=flspaP4 -/BTlt_KI?D;6BLZmw~~ioiffWI2 !+-( {U>,)8C\jgW;  (Qx[E&)EU\3b+Ol '1DZhaW3 weP/ :Ter{<Uan;Q`h`YQ_cvyyng>\ttkK.o;s<bEm_]TB-~gF((6Ce  AulBfE3&)&46) =b275%  %.'!xcF+ nZ:!3Zy  +Ko/Ha{~Z+ >x $+9@ONLGQVa{ *Kv|dC$*===. {`J#h]E2))!  ^N<(%)?bt!4Leu$.09APVTRPPI@<5595,25=,%#'29KY[D$hL0y{pluwy,0>A3+,+03793-3?Ff.AYboz{malrsK3Ah/Ndlw~{}wkkz&@QQQ@6rY=-* DfH3% ~S;6W~>^x0>IZW[bekmmleWVWVZSNPT]momaWOH799,+%ujWH- 9[x||hPE:7?Ij~ $/<BGGHSV^vxshWOB@72*@L]t $5Qk~{c@#iI {O/ %)i[LBCL`ulf\_fx %0'2Sz :Tmzv}kaB+ p[A)!9Qf{~|~'*/AKRWW^`fmsx~vohmkmzz~fD:+! */7=BOVht*GWlzaSKSZikwz{~v~R$zvlkkliiYB6/!  jOA6:7-{uqtswwyyle`\P<6)-Fl)9?;3-(:Iau7Y}veR<(!%# fO7+>ITc_hbb]a]mt 2=DHHD@5><GPbhemlf^L<7##  $0/2. $.7Rl $LpgG6+-$./-.1A]^i~v\J$pO3*zbSD+ulmx{lf^QWMMP\\s%346:3=Sw$Hf~o]L>.$!$t_XMA6,! 2?Lbw   9BGOB@6(($0KWaabR>$ $ #*5I]p3DRdrywneZL2$   165898&mI#fI'q[WW\j|qg^_p%,3=Qa(+( #>Weozh`TL@:520* ~~qcK6( /Ec   $369=@=76>=<6/!   #,=Y]er~--&+6:?9?EJVOQJ=$~kI0p[=~qpmf`f~"=[!%/5>EOa[itvokhdTL7+ |ih^I=2-,OQ]q(7GYPS@,  #+3==5(   '5Tkx&*9:?3({rdH/sQ9!9a %DZffwxvzmhxwkYIA/!{~t$3ESOROB:3*   %3<DNWt   riYPNHTervz}vk]G9(xmihfhpmpoeZD/';^x7a{liol[NB9.! #,.6=<<5('   $! #  *559EKV]m{k[P@:5.59=<<GGE><62+ xcSB?>:76:97'  (>M[es~ .<Tf}o`VPOH9(   $  !//7B><76523367=6*+7IS^ltp[<' !+//,  jS>)$ ))22>4,3()$" !(4AIIQbt*9IezzmaRB:/# # #$# %2AEZ]bbYPNKEHA=0%$/9GO[kzwf]LH965'$  w^K;7302 !/7;;IE;2-)%!  (0=F[t$.<O`h{xiVL>9.,#  %*.0%##(,/:HGHA:3*'%# !%$  '/+69>NR^dhbfa`TRLD@<6923.*(%/3AOSeo}~r^L=6''.'(!{wl_VOQI?=96036,+/,09>D?;6679:>6=A:2$ +9FTQep3H]m{}}zxwikYNB3.(#! #!'$# %(5ANOOSVHD>.$(%*%*>79<77.+! /=EPSPKONDKKPVSYVTTNGE=:6.2302:=HKW^drwz~za[DA5+ |x{~uzsuuutssux~{sh_Q[ZPQKF?=7/+46ABQQPKQSKOID7/'  $+7EXht~2Ear~~zzwh^PK=33*%%#!$%,:GIKNKGLGLRHL@30+*'2:@IOPG72.  .5<:66693<<<D=>ILLRSKG<7.//36</357:7DOYahx}t`[NB3.(  |ue[a[_bclst|~wumm^SQKHAEBDFLLWa^[PMMFIB??2(   /9IZjt{!6AWat}{vxxvli^TG=<2=/.(( (' #0==BOSSNK<>:=@BDDBDHIILOSSRHB:90#  !!$!#,2=@KNSOOLPOORIDA79,0+0395307HT`ksww{h]SI>0/!|toha[a_aa[WXabepttx~xotojola^XTWVW]abWXVWX[[PPF7$%0(,)(),$(4?IZbj{+6Kbks}~{~ohib[TK>7030*,(%*# ''3HEOVRTWSHB7:=>>TSPRHAAEGEGD@BBBA9,  #0=@::669:6<A>A@A77/+%#%.5ERV]dovmie`THH>3$ {sxqpphe_^XZZVZX_fhlsoz{xmb[]]PPT]bfotpmaWF:/%"'2?BFLOWV_fo#*0AKO^owrpwpkid[THE<D>::6++++$'$*075A>HNLGIPHB@A@AA=>IEGPVT[]a`]SVLB@9*$ %/7'+//6@:=A@59697*%+  (*0.==ALKRKIOG=:/,( ~{xqhf_b_acmfh_a^_^abhjsww{xuib[XWZciqz~xzsi_VMHH=DDPWhbmms #(+7DHR]sxkkdd`^PPLEA>AGHDEBB5/,7653635@G@9@ELPIE@>552:BBPYddmtvrkl`eNNBGE7.' #!(%$%+.5=<@70,'!$$%02223635930+*#xwsustpqjmmmw{~|lowx{{{zusouutoxw~uqqtjj^]b^ffxuu  %+57DHR]dmx}stxl^VYPLG@@<>A::AABKEHOIB=<6>=A67252,*+032659:2.337DPYdkvxliaPG@BLEKE<.  +00+($!%$!$ # !$.*!~~|wxww~||z{{{t{qwx|u{ #',6>ESV[ahm~~wwrid`ZSPSLG>:2.,007:@KNNLLIBA=:7<DE@7/,*#$!%,2357.<=HGIRahimpsosieVIDID:75'$   *(*%,,!%   ~ # *,667AGRWbkltv~~~{vvsikdVVYROKIKL=<+'#*239BGIDGIBA5==<69932(*'##! *(0.79ELPOV]eielsolppohhVKG@=6(#   #       %+05:>DKT^disppwxz}x{xmrmpmokfZ[SRKEDHKKPLL@=276==EBB7AA7972++23/03655630+.'%%26ABHEGOVRYT^^^]^]`]Y[ZNE=2%     #/::ALTT[^[`fkkopzx{~vleYa[Z[a[RI@=A9>@BOPPNKKG@@<>>:9<<62.//%'''+2/.063+(%*05=7>BKNPR]`]^]`]YWWWONPD<2$      %#'0++,59>=DGHLOWZ`fabesx}wkiiZW]Z^a]PPIA<@=BILNTRPKIGAA>300.,(/,,+2,('**.((%$%'0/37:ABIPT[T^]SSRRKGB<<>2$   */763=7@>>ALKORRRVTSYaZedaefaa^TZLHPHL@=<=:KKKOEGB95023.*.5//*%$ !#$'  !#,37@DEPSVROWSH>@9:=@B>5,  !!!'/+07<==99979DEGGHNHRS]`]]YWY[RSTNLGEKDEGDNEAE=@@59:/637.+++!$ $'$#(+**0<06B7>>>E@BA@>@@:.3/(#     ! $#!'0.+,<@9>D><@BA=IKNHOKSLSVPVYZZWYTWSRRGA=<67<<B@E=9=0* %$'''%$$!!!##%'$!!!!! +((,,(*!     ! '(%'%25><6=ABBE@<@GLINSPLNSROWPLNRVZSLH==9=57DHEBB<03/'**./*%#' # %$' ##!!    $   !''*.0./3'22=9B=>@>==BDGOOPKLKIS[V]SISTPOOIGED:96>=:979630'$ !!!$ %       $  !#%%*,+/.20/39<9A>AB:=@BDABDBILLNLEENHEBB==:E9956.../0(/*.('./.(%!#       !  %%%,(/07776>><BD@<A@9<9<@@BILLKILKKKIGNHD@@90/0..*(*+//*!        !    %$$$##++.++.%,/.0556956055:3677>==>97392353600*+.,' !# $   %$ $ # '$#'.++.+.500:<22275,.2<><<=50020.0202/,+' $         ! ! #%$ %%++0.,$! !$.*/00.$* %!(''!%$           ! ##$#!#0%# '+%('('+%!#!!# !      !##'  !*%*%$('+%#%      ###!%%'       !!!$ JUCE-4.1.0/examples/Demo/Resources/demo table data.xml000066400000000000000000000121671263452017400223410ustar00rootroot00000000000000 JUCE-4.1.0/examples/Demo/Resources/icons.zip000066400000000000000000002436441263452017400205760ustar00rootroot00000000000000PKz4 Cdocument-new.svg]s6=BS7@%v'M&z3M;ء(HfM:[ R-jқՎr/.~t^Yz5te8]^DGE0R}5Nwׯc2uXh7" zMYnzY/F Y-_F#`yt5nכ<摯iYC:y.MfG'd!-IZ^ ^%!:㰦 dQ;~ /^T_?˹Ef'ߞ:pu񼼹3P,aNdkP5aL8k@z;׋ ׂ6h5Cy8 VU#YT,It mP T85xkxa@-g%Ȧ'cfN+֯y`ӫ*, dT> D ˉSX'$f$X'Tt]8qsXzx7h9z݌-l+-5,Β0}S2g\>LqFX" V HB.^͋uKzj)6 VZ!V(aǧ{3wN2gFGͽe)/`2p=SP.qC'N\b ?!2Nx};܎6H&|y8°C< x?I^,G]PM("cvU&DXƅG1'ؼ8ҳNǘ qQ.Q6pGݠl Ӭt 4⛱<Է.RmF#\rbxѬ$0>_E 7Ah>R]6Τ";FG7U9BIBJk)؀DDpB8 )N F,23#"3S}SD\"pVKl"Ą㯷-szڶXp2L aHrO@:=>{_&&d${V^p.&U^uKp$(Y @)(fApꋠSDRG @zS `1yqu)e?||l('o lo~sMuUVˇdww*6/8I~4L!YoG-Ukp32w#ښYe5gx>6E8> s![Yl}b6E݄IEWW<8i+jE%Ÿ=L'o4n[OCvȩAœp&El-ᅄ?I8Ƴ( |W실R⼓t]5Ǻprp* V6U6 .-_ y\a&eKHs9,8DOHs4d|g2 ).4'9dAL&9̐aM HݫnoI vِ09va̰u)"H` S߼?弨F3kI4ϐZgnyN@n),?8*ou^S'Ee:V~M6a+s@`""ʼnR=&Mߐdw:_$v7n:,o,X!g=G7@5 J#acH Q5znAl   xx<Α#Ӏ 3qI LK)sܘ4p =z PUHa%C,9[7 )C6!iN AsfdB9UnAcs 0}Eq{;c<:ٴ8Ngݿ}x?YYbԹ/:L?U|^trXOlYy9Nfhx]/I(7Iq]LՀg|Э7yVlYWqrtQEOnd(Ľ&BQ_MmZnES ꒇ:@ {;ƭCsadgE6-~i{ϲbU|pL뢚âlpx:*7 U1Z贋6dQ,bUpH|IɿŤyh6<+t}p5.__AUx9돇iq5I~>)pzVe]|YRgbmh۫v>+Xo4~;ŀZ bQqQQ pG|vU(u8Lйn>V'WeyE^n̰m9jلfo/_ߧcY寤c^RB_vE9K_d*|3oe9p#dȜmeӮa:\ _w&3ʺHH- PҙngoS4Ėb6ߔ.&@qVOwA ׭]\Te,w%}ǵRmt[֠> V>wgF\ M(rORRP 2 3=2k?cܫVد"֧v%-P·"YV}8aYRX4SώmnGyJk\ `_^'z6]dP?'mƩ (c)I40<#cۦvJq~XfV.nvًdYair#U? zxmM)!47epXIZ9g4\3 LM 9eF膃D)t5{a=EAsp[o0g\:%g%oZ8bL d3Tɖ59rB[m5+Rbֲ?⾽;q`fkp+ҭ3͵2ҧw_٤(~8!JiCORgSD"GL>ukn=eZOz5I X[YwMq>W!g,3 Z-@/ZTf'V> $\a9B(q: :r'thtLK-O1Cͥ=)w=)piG*sK2EHQI/cQ!S3'T{eQ@C"k2)]$VCۋrٺݼ]eO5wKl6{Jʛ=is{.׺r],Qk jk;8O?opx?S@~>[[LrS_o'PFݼ+]UɢHfbcib<@Y; gΏa;buQO^|%(5Y!.-'nOίL5Oۮ$lGMbZ=,p3,z6V~2-ѭel]/*LkRM!հ)ÏCjtE߹*Jd:yYt!Ψ//Qg1VoT<_OUq>\L&/av[ 9|"ϋ*^=8ĩr6Z>ew<bg$CJP=oq8Tojp<~]=u q5r~=7e̋iwA`뇘狫j‚r1_?eBe73_޶h ),mMy}*N>럫Y?qN0Q k6TToއ+ zc+V!'Hy%Xt6oDY̍9ySZ2f\ب;QQR b nK|SPN7).ۣ,آ#eTǎu k#X  AxVaa@%SNyԈH\[%Gt2̑ *+Ҟ Pv5'`@M[2tDNVR}76R3Q/o-wsa}z|ǤS~+ ZӔo2/?f{^nkIsrn=fb[q0:<~@w2)T(G蔿 5I#л~}Zb^詊=+P=!,}vL0OO')3%!6Njг$J;$h3[) lx,F(Ls8 ߔ,F;VK mx%'腸ǮJ,D@]`bkf.~}mVwY}/`Q{pfD^ޘREP[$kXإ3z95dNRnh =fHj̹7lԟf,`a+=9A+" _Ad*@g@CuXniFXNPܓ*rubCUٶ~^~ :Z=DÛPK`}4"V@.tdocument-save.svg\Ysȑ~_LEC}8=a7ڻg$)R~YX$!Q}x)L*J՟nE-iYYw~2[˦)fr/C#31b:-V?Fb[clkM~`Ʉ`-ް!dZ/qg-~^lFl8%E~SnIoMڼc?fqq|vM1&Wd<:Wl\א#y1'k`n:|D)i񡘷GHQ;}=Ĥ2.fWCCϦaVeNlo~T/9||:Q4r>/&9',MmG㵇L嫚bVE+VbܼrHd*ϼ3A7BsZv6 әJxi2kɶɶ%4 Z:3kYӛĶW_M[iqq<Ksx_;ò0;0.icX<=j5n/!4Mtĝ癑.BFyvP~FLL3ܵ8'jpm> .2n} P2P>t! mmpgн ? rg}1} $F )626JetF&h`#_ǰ2|F86FF7e2BfJYfm4Lik-Ӽ2ٖLx>N/$Gz5cH.?F4F~L;3}S?C5+#f#NgqfO԰K=JæFa16seְ*h0- +6"{ְ;m/mIjxJXs6F[dб\ |XCKi9ob2g%3OjQף. C.jnC@gZ=Ը62ٳ;=]u3GߣVǮTuk]udn}?Ψ:ªV Bx~aps{P.:1W {Qtb4xk{66`6_Sh+{ 6*uKܮ)u9=]5N%}~(3QǃQǃ15sQ\bOEF)FIܝ [:%Cv"QĚuz-L玽hRgqY+EPctn[PmH vf HTo"2} `2dveqnME)#>xz-L4SgW>/K`X<ȼv{hpiU$Nm 8$$E5v`&!Ty;OeJJ. "TZ'=Ps}"o,hdsZ)mLk* ;t$6RSNKTlk C6A@XƹNTdrٞ*>d{qYvP=mϬ>L8;ϔ=a੸m5͍mti:RQQAwZ ׮,wg]/wԹ)A>rTm02tJe?}?[L#7d"\7՛-jN}PZM]*g~˻Z]/e>jFweITG46\msxŇnC)?-7M>`Kͯu:$ d}bYN2 5u=w@ Pe†M,v@Lr6Ndu|.`X|7m(j[v;gOդV?Dҥ]w%D㑳o(Qޤgq[.wؿ͔;e2Kv\'?5X}?ٓP`V;_13jm2~5(c6Ep;{Kڤ^˻ۛ崨ltEقuhujp2 WxBҙ"L?BMh8 S;7.~tᔉ}uU].w9$r7sdhp_Eda~qEjݼ8_,Q7,v7?[B[Lc⿖9]/o}QVTGu^[ٴXL[ㆮ3s6i7,%Q9КE~f9_6^.?|yo|}`ӑݤYp FCY# 9&zDfF3D`)Q+]5sf(sʜ  tgeJ+!5no#%3mdb0BiV23Owe wAwoMAg'5)"`ȸ0:#B]m}-@ mUgRk -ͶF\DEjX+$M;i$t3rEz˼ 4x5m{jۋ[hi%ܠ*m ~0N`&5+ `ãs+ò)p@w U`LETAsՖ. N I衺pQ@Ȅl=O>% h7}ʚn/ MVSk\Á0DClXx =)U~#4rIO8սx9޹j iI5LU0,[Y- 'RX{=@\wJa!6i(6GZK^Y$Š}uug;τQh9\:g i(o0mDAc\ od;ppe<3éԻEpc 1y&3<݉3hCZf)2-74,:Kyմ֘K8&0a`30)^ɔ.=ɰ}֩R8al ލwr.0ص5!?H1*l7F@C`6{5Oui;cU* {9gnzO\"D;e ֏^wIoBa^NMbrb黧#9 JjXxn>)}\lBSIci؋|bU^1+d"rBFTJ)hN0ۭשp 5Dp2z*- 9 =-HȗgڃS6 ]N % WhwS#T!+mCXce)`pbН4H'H2 82[*Q]*hqbpPdŸh O ,Baz]R?H[#LqbpY]A{(#-)=p}<ۍjWˢ_\ đ.I2$ TަAB% 0N}$'Ȯ\pxu?#Kh1)Q|\HG*=C'b +%y Su!H2A[sj$%տ2$Ig8Hnݪeš>|^~HN-AH妇Orӛ$LzBKImLϑZtnJIJq.i925;}Rf)t0nJUG[ut!+p0(ۼT];}vx .ysɸYryRaG7kv=,%ߪ{P7- PH炦sCj=G{k-PѵnLD+FWN=5ga* ]dl. '>׹|9y_`g&f\IMgT-"F 5342 sJvsʵCN(JsUAWcjA'*cC([+w6Id=-Ti'=UeT-fBR>âMrT+qEaVGv6SUTGi+ma˖% vٵH%2 ^ ˜d*l[ҚRWG::1ݣ*>F&=酉iLΖ + BdFp&kwgP*}|.eKG6u;w~ay/McJx@0ɜ:2w ᯘs{ L*ntyw% z/5`q*=rաK܌v\e~TϪs{Whc.(Me{^.jNWr5=5t )eޡ?[T1A c;`x鬒K𤋮x7[>޾PKv4x_n|document-save-as.svg][sI~_/Q"[ul̆g7b;%6 KdEV@!daSy=s7}>d>{l4Of{U> w"_durnV!Tl xCCxtѯ/x4,m1[-մ!(e-p6q>OTס7!(a`*wlDZ1Fld6JetF&bc#Qy lD_DZ1[g67>Sn mÁ2S2kɔ*p`^%˒3Kh3,3b !QE)*;g_u4G[f;%rA#8%/4%n<2 R\Xϋ''UgIM#JM\ L*.2MnLbNfZ:sqjcLu<$3( ւ\R+J*Z `q3,252\gr%&GɲdD1 IƪD *1oxKLIɥamJ뤶{j:NKD"%͙ uN!S3 Ri [ A"zkcC W-n%˦@j;ɼ$H04M,a@eOM&G:Q9iB}e{{@I֡ :um438@u3`O|޻+njMts|]TTA]漖5OpH4{'/Թ)4F~5'k WƴaH<([zJZQ3[}?Nlx;uX!twxgx70ozlSQd.kpC3y;,P|2#g]]k&6*qb#1MC ))r-{z/>6p8 tᝊA}gɺ2vU -r;IU+&::>O Osq?-ggKN?{铝Ojb;f|2;|XUX5(qw17 MM'\ib%Z&ٚrr9ҏuZn"cEpn">2J<>-Q%7q9cGT)lf4SwIAKcb/l H 2C'aECA(SFCUDAzclDL),ƴ\Ng ^uN°f0Q=!sĞJ.p!!6.T +n. q ma8d]UKRIBDhAaY4(%a8JKWj \Vc>"lvAEޕ*A ֡ʼR1ԤlPB!.,t ô)VEL!E'A'-C:g5#p:|ܫofͣɻ;pMf=>GY?KHI5|BJ3ܐ H7$I_QJb+X])(AQq ޱԤź4\J| 뷫-Vn ]vwGi8A4(P=Y8}ZT]_W-q@zt샵`.GSo9_M!4hh+<کOcE/ &ShV"2)Q\`$zϷn}|GWElKIGdtdm]}?+j&h+vVm7X{ ;!ܭJmؗV҇ox+{{6 ]t1D7uB"#Dz[)NĎ#ͬ" SR&gˡMJ.zeu^r7pV[܃?!Z~=fC63*|nٺӺu4?$qsɸQr yRaÛX7+=,%? X9/%ޮ %q^m@! KT;v/;(n+qw&zʖrw7[v+tMo}?iemdl%dt mFlj(/q9>3J5द:-F 534g n{N(N#X8 WcjA*cRz۹V"n]*zZ8t-#܂S]oZrྦྷԭeRM=F`[5vwFY)y`c;ҞMr`hY]@.LR*m{ (kJ$E?бIVBWbڴ~t[+dARuxT;L}sU6hZ!*cŸ]J a ܼs(Miu K%a`n@XD$?e TUZެШf@~VOb#:3/g69jC 5Rw9eD.DcWjy$8H+.{ )_&9hI;%9&{hs,䒪fW D͹}!hϡ\5&zK|)[q擽!l23p"8+ Yw~Էo@6@np,-Ñ@v荧m|PKj4~? Zdocument-print.svg\[sؖ~_N#9Փԙ:SKyBt0xN~|kK- l' tk"ox;r_y|-U6prl1ϯE~zOA}|{nzZf]fiELuo0@O^Η_տ[Po Y~W!Om?䣤ȗugY\OU1*q,?W`|5ۚ eۚj]> `lI Z<_ ?.dGl86_ޥYn":W}kUl;cR{oꪯc _7md1,hVhDc-%?F\t牑^P`T˴u)?Qc;v .n}U_2P۽LT GZWccs:Zg@b4oabPB%*ʐ':i;iK'\4qͫ^/X˃ -Escbu.Vpn$|v K˹TȬ҆P Ngrs&rϞfY}]0O-x$۔-Kgs-]1tG梔(ӹتQJZQ_mƻlkL1ȎvSXt4&V7&M4 bAE!œ8µɄnD6KtesnsW(?Kc[Ec ѺBS{&3E[1m 3!(8OٜZ>|'Yt)O߯ Xc9'ݍ oȉS#e4"Qa/R$wnZۡ~͕];4'X:"aFɈ%t- ǥhh}FAO&"[|,J0gcvìx0Y.TJO(e;qFWJ4\68K8A\5*1Z*_W%v@V*%y7vq:pՈD8U4Tjpղ Եjve4@UF6*?n]B'\1ϐu-4tjǽ-oh ԣu*'[Lrl],#2 VMh"KWG {_TMKM NشVVѢE\mᬻFJyeUD]n ʘz9I̛Lg3cd nU:NW E U?>YŧmJb dq5he$S<΀Qy.vZvIlM2gSj4uBjO{}fP4f(Er]=ki=ʡI; 5ƣf,/O3"42j>p!e7^Tvf7ld_ԪZ͖P`9Qgw8^!$-cU -'GYG~b0: y[7nP;Sks4IcH_wy]v[f?b1^&hqzO+eeuxB^LÖ/;_o"e63#@824o;ޮv1+ۿkg(He=SFy:.Pr:' ^k&ŪT&_J^('V ^oϟ 㖫cqck-t:SںDjʗ'Xq+'֊ foLA#.a~v:Fw^Xb~SxͫWx=cϋ7i)/^rv:nqcl?jC knۙo1$$Cq_*AX"d95GIW`hL!̤tG1ɶ.D0(c'6Deۣn_wkR~D79Vĭ H/椏 'V&JK Z 0h.k*. *[8f궇 j5&NJQ˂3+^9Ov?M$9-OG8VI KK-PE)S:ъhNT# >ʜedю(ڏѾҿDPʖ- 6qA_6@2Oz/3bS&kCnX>t|$TӖI 7_zQ`O%g9 pI[wk6—}VjRx8+RvRڵg\F z ?oCYadpWC[~dWԲkE !~PM:&ɐ6dWU}MDUf_W#;hQKo[٠q̭% TSQfMĊ{% gd,Hʢ DܲմveTDGhqy lU9aѳz4aE)?:tFjYW=j8Wzy>$oޏj׫cd~~Z۽c82h- ?vp0K;I8ɷpCH+ -2_JFe.OTM8[Y~DL4dpKy%2%]#RqDr5_5nsTגk䋇1AtGmd?ڞ Pj M.vSp8.Igo#~PKy4Hh < edit-copy.svgZ[~_AvnԦM[yL 0s%0neN}~E2xyg{h84t~3#9eFaffnh4x`wb.]Y.Ǿ^&zY>/, 6-fX/WybiYa6k=r]d|Z-?9hְI2aO8F6-(-^]S Bȇi\M0=m/o?aau^Kw{Zfu# XS]췰qT \n;!npCwgyT!FNsl: 8-_sg֑.li 8F4KG;$$~8-aPGq9f˭t٪\M꘰Q -;li[X:ҳ,Tab1Qa.W|gwse= p3ܣ&pxC'Y>~5C3gWr;^Wfn64׃1+DX6'`wl\+Eb葵4#_=i$Ƿӷu,IxƟ췿ztΕ)l&p[ !\Vn'͍{7L(vJԼ'4(]!ȾrܴAfo{J .ɞ*84kCzB0բn 5-4.!J 0_鯅q}ôcIka%C2/(iY(_B9p]ݣU!=*@gS#tU W>U2 B .a5C\1Xv.MV)?`pguv& ,:_ \)XB:pm8YLUSuűSPȀaص,RG86ّA>a=DڐWWg0 ˰QDw<y>N&}2 $[y3Lx6^ L"utR7Vze~[4]f'I+WD-lWY:\S:) o4Y8),up,\&,`k8?8&i"]'bhzG08$Tŧeh/? Z,d;*BBߓ4K OVj2Pj iy-[Fq⵻.uZ^|TWg̳he]4?swqQZ8]0Y+y|S?ghCqC s&`XիUmWۼ띀I8~VEz. & } }5lʩHU"'B#b* 2_.FDAzkk_ضۭ&Pmhw8ڠusvHͶ~OAJp'Wu ju8z=:͢ ,/4KuJ-ZjɄAcPM-1hίa~j(üPqӨ]*ߘ! !pۙaU#fg1xx'h?&*%(8NͅϒloLW/rr!0W79nd (:$l*~ƐthiBH$ǜ+&1դZ!z8Y^I)Cɻd+pEe'шOoĕtt4pW S1Q.R(0& JNPs0Tu-djSEĐqd}lۑm7lvhp!@0麩_iLNwp+pprU.1.U@9aA^>IG4h3ܳic+),+7AqL )>@e8(c>vlb,Zy``а1eHL2DTUGtc@Gia~O.ٺ36b.$7sK~S)=]:=|^~^8MQKh`aL%3ołB@̸$g'ɍS(ō+4TP^dz)l斍#i7р"0b!uVy^$ Ho4(g~pxi4y(Օm}R!8y //E6YGŇn@7PK}4m朷Y edit-cut.svg\isV_aD$E؝L%3Uf ئ6HYR~ !YcP2yֻ{C^rXTi9?L{|\No0 r''yo^p{Wޏq(z]V:YYz!z.?0|y<W,GŬ,Hfr5_YU,˫j\?7[V]SZF28j-*Η6b]]bgku|3\Lzڜ_m-뽞g͋GCMV0^y[rvz:Y]MH.js:9cwJa Lz#2)>Ԡu&4_bszyGj<\p:.eif\ ƽt5_|+,neMgEݴ3lQlllzO~M0[7'>׿OWWˢQ-~_|D<_jzbK X_sg8EJS! wƵ!ʹ޵! mOf>lL[Iڦ 2`|`\Sv`Ϣ1虂!}83Ū]>IFoZbZE6mF:=Ve= u8ᝡ2$aĘ)a@)8ps%μݼϖl]Ɲ sA3}`z= G T)Qaߌ?HkS\=`F l)x -|a?S߿7 *;3O&t|Qg'o"a9XT:J 5CJ7QfVφ sYg`e sT=5G 9*X,YՋ@D!329(sNǣj^^7Uʅ`Xg+Բ LFaL[G0Bp" @I}M[MM\" T0T&~AҶ (w!3ҙSඏRXAy3b"S4\H <๏A;D%{I~·GO6eROQg*4IͬpQ"0hp̠*9*t2Q~y.CpLC:8G@B$52UCYAF 6 schWQz ;e|)[0|%ą=cF_ڄ-šQop?Qh<¨/N̟R0d)Bzje\Q C/DR3R'd6&30bS=+(%ئZ 0pG/͎M.YX0P3a-S%` %{VYFQm !UY=lzմ:L^. lGh9O+ m-v3A9c#9߲Z6q>ec+IҶka-XE$]4 7.U@ 6P:8g\Gm㴸⽵HEdp>]?8-IQmi=ZycN~'o4]ϗQ`o}NW2 a}${tUUpYg;yEb_fOO˛ cLVM*ge\?p;Jŀ-6w M0xx;XX߁Lj ,X|tmC °AXMΎx|?eaw~iym]x1q|LWoX/r>h5^.ݠ z');~YMg9Ipf=t5+m2]]5j̋e1=|{r8뻜/kh0xyuO*HMGgէ̦2&]jZk[鸘/?-´GxrL\]Nop-Fsxӫ?W_VQXIΙ6fY(*bQtg~5pUjOc]ݽX0bzT>4|dE8\TӏIcl˗e/yUM?4ל4{;z.rB6bv{0WrRoimGUEʃ]dO{Y&tަBbE5cMrѪoP7)Oz#UDYbIQZf$#bf׆GE+i.zFUW=ZIm *L0U=/(Xg{@Kq|tT1BjWң@Zd=`8g<ҒDs1:vV6l4d`"S|kC L pFҀ쫳F_mܜY\S )tN(["ZoTa*" 0E"#zبÀ'cBh qGduW&T[9K?P\* HGk}Ak";LXhQ4zK!د B!Q9^bQAђ„TidL(X+#0(01h Mż`2|m`h`!ۀU0%keJ4)LbC<6y:7.p.y9߄Kw4>pOzsF]riDXc4uU Ph4XnJgŠ~81y(J<ϒ9xz%R} ,i<<Ș!|D↱0hn x_cT>ѢV0~j&@ {3$N$J̜2y BЂ^W(oA/zZntLC+\y.tyaGȋZZ .X^ *iwtPU=P}\ժENZ5uN8Wtx5.䏧s.Ufym\# (Ayx|u uayşx~'[]B$;xxYNb~'lU!eo= xq9c b^N&Xþ)^V% wf N9[62f涭Fӧ#B{Fs}F|85|]ǬAz3ƨ 4y^oQC1,S;~ )'_iSCLa6$`N0=:`lJ2ց>ޥjU4N%,d!S~$@'saO2䍍R_4hșD!0*XV<@0&] nvXG'!Oh"8RHHO3hqJK #GE}Xíp4 k,PX ~+Cǵ* KzN[ҰQ!מ bMBܜ/UBsǭ hh #l;aF ȞL |*[@k!A=,+U'/^OMg%@xl,7U=}J|,ׅ T΀70'C",g tɍ՚,yxST`HrD({p5G>F\[GAV ></|۹F7M+bO4,~]7cOAi݈=]Ӑ`[zxA =`x{0RlCÖNو=/{T[5& FUL=,=zM4B9Y$o됻=[nhA9dP)z޵JxՄEO%8!mJP%DPw6C q]PYlJp{Zue/&:wa\*}}'f-Gp!JTe526+R^>Ӂfp3}} uqN%/-$ OB']f2ڤ(s',vղ{pRO3'#?k/brfIC⚶k2"JQfZ0(c )ȲG֖%IeRQ(Pz@j񘧎a5#/?Ri^@=6HKoO dyӬ1\:whiBж7 ʬ)vG`J; ^OY=.dO9d(5ofpn}^ߜjo ZE>qIVZWY#9U6":xO>q(SX9l+̽+VRR4DPYeD).*A}!‰J"`lyaS_7^Xz[1踫&dn*:V7E74iwyyzEeQsffr.[06y-65 5ek9ZޯA ;'Ӡ&Z/elbï?4/$X+Zq;؆88_t.YWSaU\^!YNaqEIJ 8+yWunU9wqnfF<m^$J ^:^Qpyx0/r\WEJ Kx$\'Bt#G qb[Y݇$1CHi"M Mgk[~m؜N7a%Y*Q tln4 ,?*"M-U%i4j:YTfoFzVu @(֠}$Ρ4[;GHAIm"aXСĚwxԛXM1%=nw,xg{u`5^-Gc03pbW7v7<*z˗6Y] 5(Pk(wٜR L9;²qي. Rn%0IeJ0J;gKb)[g#mdZ4ᄄ`>&HY6RyħDҾ2G+]0YI2 l)f5,G/dߒa+;/uOF[{<.~1"VKx1Owuy%nwu/@(/K;ݛhͫн|\{SWvTeҪWi<\Wfo|=l[тQI! $:NH)ANzxzuĪB pGj ̠4ӖK J_7VI|^RU?eV βP8OUկt^U/;Sit6J=62> W,4ݴeRK1x P 7YÇ~We׍pj~~Ev3xJ`4)Tl8-r^]1`oǘ*\;^@ʸ6_ +l"\E؂-bY],fEIOTrLD dSL߬͋spײFvMz+(T&:>URLKbV19%ϱ9Z+kjivMeSCvO:x8q~s;8N(Y uݥaΐuzvNx^nU-x&NU|q0@Q|~s~9RC50 6v,\vWq8?+Աk?Yqۺ|f?$y)ohJ q=gI!Β[RDC~Irf/  ju-s wOk&>x}:/'tқMuD|ӭҮNv){/Fp&aYuE )+> )dQ3aN=iVTҽKJsUK̚KxL8먍4dv ]#. F-!z}vxEĽ1Ymw`n'WˌGԶmW>4.qnf>ϋ0+:MF4aeJzF>`aҳr蛹Gj<̣Rw|t;o]]'teki( 69Ը[TDTuJ>Z1 \#k7-5tOrADQn%\x yMRs Dp?CP{{wіv"CCo?jGK_iƘV׿TcyJ{Q|$DK( ZRJCɰQ `1{RS6*i$խjpQލ:1gAAG$G|S*$kؗ¾4bx r29a^mIݜTRAhVW $@;PWTxw*j)4ϛQ{uݦ$뀀 4h5@%-zI$Zk3%ZkkSҔl,n19{w-Vh@\;%J!e}76e_϶>[J;'l`PW9<5K:'~u*ϩp: ;(흼2 lygl,꒏)NNT|TEGX,aGu[\@5駞?52OH* he3 gJyrGFPO;HӾ SiX^QViQ43}5[HN?%ه'>Rfj# LC0HVNXkY[ ҤYJU&gSeֿ{=Ry hN|Keyjx)č ެAZ^T=+ O)2[/܀vէo囍3wQ97/j}wfyq?]7~}:yݾsa6\7Z-9zFfG~Ss^n2v>olږl7W{y7ݤWTKNɽd-MBa4|kJ[IƵUJG;[yBcĝy6g~iy%_f|t:7˧<?Ϯ?5?_烫YI0jbO/uHdj˗k?ǽngζ7yMמNziw5n zQkv ha;۝ Nk>5`CfyS>)/TK3I?b+߃,z1{izxr~=` sc|y9́("ĸ-fD-n,خyg(l;|#%Ǩ40stizzԼ#rkdzrsr=w '~N˾s'D[tp,<VD]軎c{c}wy=Z4B#!Nt((#aD=1Bkt4E,deЖ B aדqƻjFXQڄurEEFi>I~RN:)"O͛l2C2LWf'왔[Rg-(z>50V=0ŷίɲɲ́tJNC#GPDPG uд2Єjmk@ԝ2D )u&?5Ԕ;R(Yx?JŗʛSOv[ZA`|`Jr>i 2Q8 ;1'vw]F)ѦalmD>ysuCrs`(bBXFҩ-I Jс?[h\l'͞?ƙ`3 j].8= Ct] MKyiދCXژ~<9Lwcg,;'; wPz&{n5JCB Ua.3,U0#%)g- {eV-`݅ LixHxwBy77چo[mm7aBZ%aB =5{d:Qџ1nPnaaXJPpR5>sFp?%3w oǷw(x]kA%M}J_&^&Nqf !tWjlH{oZֈ$e< + 3rͤ'R`e_@Δ"c"an_sʬc#˘ %y3r$sTټM+u0P^Y*칑^ s)"k|21 DG$)d,JU)KctRyWe*SkUG8޷Wܾiͫ`4U09W\i_ŇZ0xWqMC*|7@é3]%b}+[eȕ!78Ұwkuw%l![SZzgz>90מ=P0FIjWţu[wy`REGyڪ%8j炬'pFՕKL])q|QVٝfc4ƿ'"8d /*^I?McS󏷝<>E*Bq⒵"? E R1>fQjBaLf->dB+-j&`vϢzFj\vKdV;Vqq?1]1_Fٚ)8z^kQx/$~GWƺLa;tdcE#љ]/1_+7:,|/?'_V\az)(|θwܧ3<|&nX ³|UiQ|{|w3ڿH)-e^`6?@ǖ A F_k=>?|.uj|Ro?;__f9$(ۨz%d=vz'R>t8?%sD6 ʛ>c o']|mAgV`ZxwU?3@r:=gO_㔲6L_;KzsU[$\¡OW+GSK_5t_lȺo_T- FQq8BWz/Ϋ PԻ3) gRwe(N`jYS]Jo>]oã~}Zʗ'w|4 ?? "u.ZwFwЅshY>pә|'E-߭3U$7~s>WڍU \/dxdi(diy. `Cu.?+L.QLL9yN.%+[L'ˉڠ[-iL@I4( ֛B`~ 4`g WE2Sg?k*U/c^IǠ=lHjp/IyIZ;%,kJpdEȔ. ˀeĥ&#i\dw+?{IӒrIFEgk5w-.S3jsJ7[ٸud㢁uE?)S*$h8|iqGiE-szOLtQGWP5[wghÄ S+4Ak0grj * zKi9 a c'r,& V6\FRj2 I y cqς0zb)k(;A0,s(2n0c2J=yRfTt2DŞ{Ri%Rø:o,R?`2hkT:D֖d  (]Dc{ս굇MʽRpVV<ǝteqRp.}ZlJ.XZjV qH֑ @tད[%%E&5hˤG` Wk)U>'*uU J اafV\a(L=&3qR5KoY=/A[ N[)d*L[ NJSgF.fb13of=l++\N3I!K.B30t5)d6 Zϲ {dPb$]hݰXCOH.`l"IJn*ެtocmZ IKy2fIIdBp|%]Cb X `A)*6 B.)@]TnŁN.m3hFY))[dYA\!:!B T]KcZA .)E~-2s(} !D` Ls ׇ{x%Ѕ#6`/!$$z7"Br &4χ3Fbd$Du#$F$HL"1h&7 u 1LLI!.W'1pĠddI0NVdV]5HIYKX^7V la}A 2YY8 6))n46иD@cMقYl~KIUS ߧ~N%}qY bAq J>}*TϩSrk}LIRMHUČ"Ftʙ"*_]F,B8seg XS'$S'S'S̉˼ N.$둍KF66ـXb|X)Y u%*QS_\zd㓑MHD6>dd㶷GUe=VMӔ씒h4Ii^?BJSJSJSJ0QJS2'~oú'^JJuGIG }+ܷ%؎[ۗu)%%%%x%{8uT~쾺Jf CS9ϯHliOw|%D!>I*f/%fBPbs& c무e7n-sQ9Q'(SYN.Xɼ/aJ' 2l6!`5z12of)\xJ^ sJԜJc "Vk5kB>̶ Zsc<wG@ sI ᒞIプ" #r =z2IIe=ɰF&і삛IPT& ld" F&;=PZo ƈv` &,N [/2iD^R0 X9 Z(,qgq6ra5)ORV|G29*L>JOg5$%`Wϊcg$'&sY^5v*>[OnON-] !(Ч 8%>;tr"*q0̄Aa'I};a/9%>;!uE}b,:%:pO+ ܔ? fRɧ4gSd"q픊T=7&Ћzy{GTg::+(]q_+t⡯ OtJ}n:q~))>'tMPh8%9>qO'^{~_tJ}fmƷfGuj_C^=v;_ X^J6N?QKQdN-A $H P$3((-w*C(b@ւ3Xp$*dIp!DAi t߰Ltekߦ+Q|T uYXo& >Tb`^Fx#.f+$;#(O*TIE\`5_(S^]ȴƟy}'v;k}U:)/57gLn9A,sR!SE3o\Nq!5D-Pf{@3aLmFI6X'_Q"tZmߙ7B A%֌kV_nft };8 *!Y|6/a s|uw3$N.┻fzNUL GH52]4`\r+tιIQA4`8r-"iqx n,*o@h&a0dA/@Y@{DV YZ4[K5dEFǐЗɣʰ&;l6اr'lC›_N~Ij iiN_Ȕu[Knv0|-=¤寈=.7Gq!͸k=<'tBC/!1:)/Zɒd{ml҆bTv|<v%qn7IK\tXt4yRoPWI$Ȇza =*4No)H*)|ѕlĈJJ鮏L69LC-̢1{\.G:`Dvvا֢!W?7E,mDZ2hMбF$9ȧ9O|>z_v{`"vt~[6wٹcF5?3gޛ߼;)%fL0" fCYD)A@4Oyv#%50I"ӕX< n6`wB`Q&f|,6 X|Bժ̬. e6Pe8WO$*^ xI&ё.U\-0uCg&6"%22Pe2 G4rm1|“>+Z&,LS'2F'XXO`2+tdfl-u֧r[(ݝkT f9?uZg!ֵ߷,_MKPo*'@ʠ!KKQD]R3\/%<"YS FR/ J<)5P?Eךuۇ1Li VP;Qf}-k!eu$гQtW{t8+笶a־ "q9ڳtaayD9-KVM/`ev$zXEBY*^YM~؍vAj:D %7sY]!?DSc, m2HT RSA<k֪sg[^)X(+WX('*?_@>}О+l U-hڙ~NVnC3:hx"Z2v,0WBҫ-1Zwh3?A=^o~ Si&tpʷ1cbta`U"IM䭍RN+pA4A$k{Gщ9?IS%Kk79]F=[BUe\d7٩!3vKOVeBQ`ѻvz1$L|l$8YP|f"ٜx03ʨ5o)"dՖ%5J <$g1.}`Slю6bCZ֧ ]j+ޑBg ѮU4EfN27dSNL1Qh45^V!.Z ǢUm+Fju2l1(֧6Dkڇ!lj8V(oFV@ڞg#XMٓ"auUMj+īGl'g`60^ێg!\y.LHWKPzzq\[rFwJ=ck53 o//0eŋv)8s5TJGu}H{|zTubK׆WfQCK3zqO[f8znZfMV݃f[~#OݢϪhJo~/)w1ZTu P!'hYK4$a)s^fWMAKsb>o]MϟP I(E׵Xt)h;kg??PK47? edit-find.svg]msH>cA=7{1{3Ym̒D 1ӳCtH%̬TV_o/YW}~/[Wrv[o$]Uwc8}ʳtMzMqzl.Gd^U>]Cxre]׃f_d<mܬG4~]|\Ȯ<[qQx'Ӻ(䁻BZ;"lJ OM8\yBc2B%|\Z;_c“Y69$d3r>h72w8[tex7çtƒOc2"6m6Zo/rMxo9 - mu9Ygbɖ~t]m:he=Vxnn2lw.E6J:l5H"_&EؚWU:ńu?ofsՇܸ{tds?$~Q<]l( y}l M~.o ;|[$T尽 I8nJ~_/}-OkU6,Zpc4j]1>c*?^ٚlSi4Z6Fu%F%{Ctf/-Տn[yZ68W"~+|tI'V:fGs'%V ymX[4ޖ5  T:D?/B#⠈PvzTD%;gjp,YB^9ԴRU,Z$ GA )Xw+l3/%c΀3%*jeӶA,$Ӗx~]``6c?ΐA,0W"J ]&L4F?[xCmG?cHQ7/=&"vPD"hHΓJHJ}S!)sHH]S:b<_WFL"1sUQg,T'pXx>/O0]9O#`+XVz.XF %(&1LjIy@햝F˂TT(P8MWA)g!97Ύl얝FaB \,<|TY*p>u,2n@Yv-(+1{iW"c%Edi5\)]0fxL ݘzӎ. KYzRpmr[$db P;E`piDvZS8\8: 0r  ~O }{Ѹ]W9A)|OMBkWvfv:n>Dx߅Ks4+/G0ɝ ub)X 5Q٦axkK_ =|.g2lT0/A1EW~=@ ;Nv"޸ȋI͈cfRe`KqHG)BeYۤװ  1@25f KAs1)'paE-cM'Qv-^J$39 U u9e5pc:m ^1!̪M8{o^%Rj:x  (Y6*Xq#J'B%MEfb/2EҘŎt~ق+ gWA3@E )̓S(¨SFX D 9W`X :/mdl0 0[v-efWb'aoEY=Xc>ϱEw;M;Ƌb߹fF]nk"ߥl}ˆ҅rNZyzOܻV,;w rָQ:i?]@}*6ۤtUl)ʽL/O8_*\{zX ^*9Ǘ8-4y]FA]VWZTkFOƷs|hfXܲf}| P/hA@}w[:i%u1YFhkn_jne֠72-PP`8[w/r8]>]? %df*0|]Ҟ{?ybIG[+ӠNVKP=%'/MxsH yҾrҎgv&.#<8_,Ugw?'U6M{gOBϿ8y"/_o]ipnn<T1`pBiHe/o7d bF MS ݣrg'ƉPVI$F(8 j-4n$:Kxa6H8a!ᕔ{R-};;ސz2ROo2($LAcG՛1"֠ 27ɇ0rOssL:VuikUu8V3yg: ?oނvsje\۬psiQh-5Ɯj4wf5>ޛvGqd3{a}l !K"Pb\+XFc.EtIs^N_! np}$((}E #o1 *<@HᶉR"˵rYd.sb'qqVW{_ U t۾>yBiP⵸yf2U Lم`[baH x$GmOlV6m~{\{W $">w5z5ޚ  +kFx"qo [ ŧʄT|wI4X)Cctb mT 3I0’XcA#6TmWO~/+?I۶UcE$£g$G̢2[,G΢xeY$9cf*"UN"ǎV#+Y͍FQI"YN ϢꍦD$:Y$]5sV쫓Mb _S9٥hiQ)ҴJ |ڧI4#FQMm5rB=v@v5R ATZ]>yKzcRƢ.+qS+9#-yiQXP+Mu(-|`K  (A_Z5͗VMePЪ*3pC+/-7\[K|.rǏŗ}ɤŏ-K4J8 ;]o6-Q륺cj)Rk(KQt Q()BLcc-k|aV]֜/BX+mLF$9XQ 7(E76MRɖ?r>}/gz`Y3{|i|_qbU{㝽oB7Y%j4|E0jMcEEa,HrT߉FJ ?JXa JrKPQbΉJ7XrV7 DUD% %%g^}Cɫ@YW潾hrVy%&esLOڴMB^IT~AS^t}Ta9g&V.DDCҫЫUH·)NJ :>kޤy'vHud0Q[-$r+sqz<'"5fǨ0^w]j}*M kMqK\n'L{IL%%52Lۮhz`Y)є wd7F+c(⎬5DRTa2)ƙi=4jzMBe8våT^cap%`hDp3!n,>{f[CH2I(i|i$G(#p5QHfAA`L8[!-Y0E֜QG#`ԹR Tpp聯5Z8`xJV{@>^bs{)и³ƜTB-{T' F3 -0 \$^B=+T.Jk}T=&,!ңJ 0=v*]Sm4pSQS:FC޷aV1'n2і.r&ziy~7WE^힉xM3fY0p'-h9SDQP{Ġ#kPi0f% 7:p+Gu sH+AUa̤U.9s5fR˜7]L+];#"^+xڐ l U`b[ܻ* t| ¡@sKŭ!nؔ  y0_IM]PxmNbݠpe$m@"ȢgI0 kpt6QDFT#WCWk #a=!$8н8MwZgD߁i,:gh!:잂Ҹff43 +G3m AghXB3{W0 }EPX)nKo% Ќ-9b9:=~ZeoAR'f=|z"g?ָ߲~_=3ss67t#\zmmz/Ģ! >? ]}0j[FYɆh-&&6ǂ(k/182h'n Ͱ(*?`<˒Ks tN&gX٪bv7V+_PK4d $ edit-undo.svgYY۸~`Vq$4ǖɦ6$UkHH"Ii5ǻNESS#41?יstՄ nmg]JrUy7n#QR%=1UsZ(Ve®?fj)t lFbggE)j⭊u{7Km]T 7{;^tz4̄FY1:IouڤQnJJW^|Wz TRoբ,4.rZz!*I+w'::Ib[mտվRyMPԳ6Z\&jQA5(fLoHUGI T34E`]t|3\JP[ G^8dudB^/’ :Ť[S,ŸG& r2mxLpHc#o<1mπ00$/? 1mπ? P 0.,Ǵ=F&ь0z #x鰝WQ&L N AK].Fy5#y:'%:tC{GLM]( K '?i5ѶT+.Ug3n{$v~g#G}~b@>֏KPHˆD@O}&t^'p!`1. Y/(5ՇQ7} z&SQGXzsΐ/:/}[OP`Aڇ%l C4,KYu1j>FDp!q)0#6|"oc A_EWPN]#B9 陎~k! %wڽjr.n!96h# hu95Ӡ5MT6_MyS~SM5 D[O0{lxl\EI?(p qݍY$sBHZn9/Wn H(kQj)w>/@y'Уnͫ ֜M0ղKݹMJrKFpG3R ZUQUQ&G ?:Y~xBvWaf_M´̄OT]k8yiۉsuبNh-P5ؕ,>V%B_[` iE۹RnMNX}Fl} Zo4^EYvi,U^>UAPE^Z7?eQx%I+3xa/}9ZPڼ\z`ck=ġ՝ңRj@ypHU>=}&CSmw,5ojdk6zt)&(*|WPP:&5P~M\EZ>W;v%Ɯg2?ԁiJ1kp8nW#P| R`QZ_&̎4,24kD דoB|¸,s O!Chα!w6?]s/`$'d||B?B6P&+fP1" hM}Hǐ:q( H|ALAYj굀$ rC~ȹ0E!9R:;Hj8h.(4|OH[PK4f w$ edit-redo.svgY۶ċ{dܸ餓3q2ءHHb"U:I'ʧz<"w>~n;nSQegw3YIn0s*03}7wn+;8?feͦv ;(i(/uad~8EݾH\y:[UGfxԋETdzQɁY!0(uA-OYݬ|= J1zpq2;n@z+Q+/V(⁚v(Y.tٙۏ>rO&09^!JRmlͼMovF;]>T;$ vYCWvGzS I|77s'].cx&gQq-òbuQyc z{PM #Ib8.$RG$Pd@q1m{k<SI۱A$Tu&¸$Jb^E|2$`29"ܑ{%/ĔBQځ0B D1'xÈ_/ ϔяQ16J #鏲S?^gֵ>}xa?6F=4)fL7|µ r5t6e^ĺhY>#V>V-sQ>SryßM5l\3ٽ 3糉EvaMrօ*L;tC ].s]36{s(6@v!ɀ6]zm q4|6 h)mwxnEC p ݬ;A:Z d K77)ds Wjۻ8&fD*jMˋbnM!R}atW*ӭC޹+yfϨp,A}D0MQm^ &b&PmC[2(ޙ{%N*gS /y 5M̭ͅ|LJ$ud) w4%TF<^ Iaz R|6Sװ?]{{6g*~, }#>I? \eu.OцdCe'~m< aSI9`"Z=ڹ:tOå'tw<waiTM4菕MڵpbBy31lx߼>xc~T/8,t^-@4g[HS5'JI7۰xE~w*,eģo#VUςp*45Ժ_t"2Y&r)H23Q4?@#tEԷ*xr1&Ә < ,ۨL`qr#2;ElY`PK1>Œ3 |HBW@3zCǕ"d3*ɜH$q55-`؞ v$cRI8eDsJI4t$9HJ Ԓ?8gb{P74!Q\H xj)A!)3a):QL e>/ C1@;P|s1o=k+d`}F}EbD8D }=@84RMPln%bH5H'rG>Md3 t&&EpFNF0RD#׀;6UH@y⛫slJ jΑuAe8WI$s8ʉ)Yd 0d@UX@YVsC L5cRTybTkIԎAf4CP\3`# [c~FBjP:[s5#~A{k.W_PK4KM2Y 6media-seek-backward.svgZm6_s$J(R @K,oH[rU\n8 雟h ,L)6t"c? xy;7ÝN\āXNd݋T\]&o9y̲vf.Àd2q6 i٦ |KFr- b}g 1 3P=rTG{ i]ɷ c]A F$alJH_ن{/OqC^dAV?e1q2B?Ӧ!ȳ1 su(k;vJR޴n`Lu1M~9 O%կD #( 昐j+ܠǷSژխ@hzsbFL:5ҹɗj-(P 9&.`̃H1l˹C F6{Q>E&!+(€eġW@ #8RƯ2oNw3s6fƚ&] fvMgeLQ !@Us_*lQ漻E)XYg ng g.[1K[]J:x宩fU}_݈ԉLHJ_t!V[jhHD`IǾP1xm 4H$IVn*l"*1'{=q[uJfl)gԚ: ^!`I}\oJ0z0$paUł`0;53%OM7I$a@zxY&!_ۅ1,Q]a 0E s ʚXk'GTkQ+) nuSoDT@<}N1&BH] m`؟3di.=4'qr`sl|inBFJ7Io;"c\nXnކ QJƃ̀Rq4" 5=h4^cKȍk`\ lc!A5ou› T|Tٿ9S bl!ԥ?S5$:tF6F UulCCV9iF@ݲ^'q)f`d[SQ\;vZ =u籑)R<.4 B4&=o m=d 6OY(4|Kؐ;+_^SZul /7VӲKe"1PS vNYvk6} ga-Xw8Gҭb+ɚ` U|r/?8AMoh{?,F]a;y7S=+eZs%ē rD .:0DO5)C9k5b=(x=YT,˻7PK4ϙI H8media-seek-forward.svgZm8_s$M*W]&x%l xɯ<3!U.$u[zՒ '*I8bM'*b?VWϟb:I32#u5/.f%3OAnROn:˶sfPq^O jFvY*TeMlMuQ߫4%^aښlT%{+au-D,B 0һ(#J_BFqZC0lL.m{PcXu 5zUi3eHnTJky}g)CVj j =9{Նy"dRR"Fխ u[k㍲ 6YiYmjVxqddkVC% =cwWӍiJ^&YM4uIf,PrTz[\A UX-=.!T--wZZYn.v#h( ͮP:P+TQvBua_ȋb DŴ/VYN @X̟7dru\Cn[jVe >\Fb,lg$(/,gcG 8sG[Py^{yB5.@=(4-gwxbt$P.磢't;Qo;ky{to! φ1ϾDAr6]إxU~ ]:W9U=ORG6,  ?MC茙eXe`:Eum;\M 3u0MՔrS.u o16|)9Md Y\ۄte3`yWSL|B 3*]2 ٰ~M<>Z<l`CžcN0b\HQ{r0Tc.@s8n]C&!2 bb!0ə3J` So֙ߘ9`ڤ3A]„]qv968Xx LSX̏B9LSB)Mr1~pa„z]uiMo]}3G\<t,WI%y>6WmZ`;~c3,665$n8=^MX]Rp5BykXxJ4DKUX,bp%؏>w3vȖ>z,_ꠁ$w}lK>ycqiW,0ԃ%U~`zgZZ^šzyi7P![Qa xL qBW>@LɂãmƵ(ꕔ:3gQD57DLGrkxkXmP/R.dN'vM&O0{?ѭJ{1 c㣄pC6ubvD :ac^K` c|ӈ6`wAG Xȍk` =lc!R$ݸvuxqj"r 9GBS4#G$pLrȀ'}74'`{MPȘ`1d'fX'җV? 7*dW%2?޼5C;i@ه>tiOO.0xm _&&(!NeCoZ6yi—Iӛݻ!퇾F*պ_]VEwzeu)/6sZjM{NKhܨhGH3dMwUT6a*^<*%lۓԥUeMo4X~˷e+yAR8<ԯlkYa{V3z9/߯M6C cpI朁?܉g9^WgxKLg 5Br;";,FYc.s1pX^L#/>38 -\\.[LBa OFeu;֎晦'q=LAH,I>s4d_Ӄ]u4)9" mhVjPjց[DKFmW)yvmBM ձMWIc)l#co:͉Ѭ6 Ε0 S۴rw8i A4jmmGu|*0gC&LW.V)Ey\3ٔՠ&F }ğxLՙ%sd7ܻJOb+-5&vti`j4K ڦū h%K9]jqZkN{˕dp?Qr %Ǖ%NI0zt= u]Pf "\h孳a0Mû#P>5P@e0 1qCtɄj?gzOԋ3 xy޾ # A;¶R#fj+fFl1wGDR[H L؁b :0B6Ak);Mwb&unFpzga2B[nqE]^2JnȎ QO N t$p^;6%kW#Frb䊭x-<]KEoG!j afK*0-äfƕ s_v)sf[dS! Ώa\վGB:m37PW{6du1$_fՆ q%^07eYְφ,Y]]M5$tFsKg-K-n+ rխAjYj" c1iEf}oJus]K0;2Ӹ:O" \5^5ԼDMx0d5)Me門 m\onX2{sL{h% ߩXƴعi_3(}IզHlejV0C덦" E7:C+Ⱦ؄%PC6Bd'("}P8lS K vЍ1JIYpr!8#-W(SQoDd7r"[ҹAfRC ӭF;X&EM%*.X>WqNQ犚٧&Bs١ɤi #!ԤzH&oqE\^6`7Imi0:Mm&‡:ΤYc{e8dw; &Zzn\)PW 摾$~ryp(Q6zi Iz٘YWuE2ы6?N!(B_5IT}3g2!6rɖ?ךQOjg6 /s*u%6[-2_f%RֵVQbp|˻^Nr 5F4hͬNp{"MeX690+Q8-CU#;s[;> 7Ŗ6dNKQx^EMo;#(]m}EDíir\̓@W;lq06 y{4^>{Ί>ghsQIw좘.#=7:N଼mzvU{yW%z$UPIy7=ݵl+ Z1a\3HIuR1 *vЮ`bs++ɶ"ώmS!W%O\CMvwr'Ȣ%f1 `T3rU&\B"][Xa>A t'r-=l>a`cQd~mɶn [t]ٽ>p7ybgp49|ii1Sh'Q_߷lٕfv#Bl%.vP#zv 6d ̫nӗ7PK4Cd oYmedia-playback-pause.svg\Ys6~ϯj^f*"8#TRٚ2IEB6cTHm1eWlijJbw |hHO]Dkfa#Ig?~ђQ{qEIq2XT{F7a~99|oG/|9u;v^8F%oFi+* wt:37~c~gvde߶Lyc -VJ98X`aewqZqUW 5Fڶw~ 5e_PR۱ΝtHnסidSU=KBgL`%iӵ:fcől=+c*o>}v٘l*$ɢ97 >4Al)M *[qɩ\) ywT.`3QYYrkuezX"%C00 i5z=Y&al\3Ȍͩnkfzf]+yiԺyY&W y'nӪ.`HAvod E]s~tdd}h% RGIuh%d//n{\ӗ:IJ*au2U+5|#e#̐l"vZy9pd=nBF$?ڐS {ݰ`Wa Ea cӀ\i#a^GKs~5d~"w̰ )L5蘵S3:wQs4dpSۣm'6 e'sp8OA )T'5'H\FzC̵Cjn/?ޛ."ȉkE8[ҲmM!sIHUiGsrkugsYTwJrbE} dO2E‹T}uqخriF~D5$ p32!6rV?aiqObFSz5Y5a508oXegR:(Pp1[i8[=v]fϹ}jYؚjG٧M푃ߥR9ٽ^I*)w9Ċ?YJ_ũkB ,z:w7I(4.԰!џ/TWm0 UT[_}kMzM(.aw7Ӱd#WNVEx-nafiEgm#n /uo&桵nkrSMܖoܝ`bK0O-)e!U 51!~mߡmnc{|0XZ7,t驾q'7SX@߿C/*,rZn|-3 ) l,JeV{iޑ, 깪GQoS^MmK#-otNZ@pf,C1']$ϣfojz6`O0r[l!q_=(FuE֊b^aîtV (FkFԦd#T٢̽EJ㭮qͬfV0wz ֢m:Jq ͖50 kлfԢbDpjSH*I0ELNR\tPtMSeGvNݫDYΈ3Obt ͢ĿMS/97m)[(A2W]yWΗ٨4KYDrtL}ȾiX^|#Pqr܁c3<ۖ젫1 2 ~ٰAL}$I77uCYCmkcr,ڻuQ3vFT "[WdziMY'b&'Enb=hw|ad<,(A3 -+dG}D$D=?$I# %!h-e\} n8;EZקh|Xu Hxa}3knavR=p$l8UɀT y8vX,90X^b^r끈E6{Tk5$=Qqf>mוּz>' ^ vycyF /pB/-Y^˵#k: A[M$cy!:#}:RF^ i˱F&Kp9\`zΡfPlqt#hW$*<,˂_9o޷[bb;6iy "YF;~XCQO CINlZLu0@}zQJxL7A(鯁mXEw6G:u@ط\:E&xSoO1 :U=؃ߑk6N,8'5|y.X abv|tѽm,݉=_*ZqQ#*Ib!rٞ!ʆRߖ0: (Mt{{r8MZ&(:Ӂ#6v׵Ip!b"No%N9`B#l.JGTO-juL;+TS^&SG%B"ԉ-G)#FZC>l,{А,C/n>ߌ76G;uiN1ۈ<ؗ C`Gyf`Yxmd<1C,4"uʏ^54'! {n4\Z'd0@2lc!S Njѱ1r3PQq!CcȂq(\#ۃB.vKvs"(ƸFOP5 Yڊʹ ~j ]dm+Blh|yduΊh罼(a6n=VipH (>J#R1Y^jVWgy5Q{!T߯T' ن%aƣ!2zIi0O{D G=l6"ɕs*\o'ɷo&( )GVެߘ )eG,^8Kڅ!rժPCbebpo"lXT2)8,{fJyi?on4V} ꕊʐ@E&|_쫼AT!wҟ,  jeg1ANz_M7"U>in~1[pe,Mc(y=yET]#OeS6Yy eźvq{ry@wJxa2akB{ShO<"/iHW 0ΕzͶ1 KN>UE/of*JyR|7bDIxa= & {<+(<#3걐 唣 c #ir] 1^b|U O/.FBדuK_q~tΔ*5L_hD\˝{۵.k#IzWӫK zȹ?8"ZҳF-~ ϵjcB bO nkdk֣ĐwJ}']jVNe׹=ԞK@!3qTT^@@Ep p bAÞAFM40Ž]IJQ1@: JWOng7&7?PK4sMx {-media-record.svgZY6~_d-}$9 D%G[%Y>fChU"T֙`*-Ax<.4_~;_ͼ$ʊbmi$cZ{?8,M#*U}Y=xnj7F-3āuDQ=>?;Tؖ|5dyT<2D>h>Wo{]aS])8QeZ]0:t溄>!h}:i{ ‘GkSmT 1MW{75 fHs;E"=6"ξÑɆ}"*np_M{^GqPq?ToUi\~}je&V#cvv7I/M\ j 6EY43,S}M}-8 ~&8k|Ŷ mi˻dqxRo N̲Zx૝ MTX^As(aMUZ]@g0GEV\ee =y˽-Fb §ܒItn_ 5p%T:x(P*?631؏h_͞`xeq~9_Ϊq `b|Feѕ}iTuU[P)oiZFyv $tc!es!ʉ͉D*dX Ż1غ18%]rRw9[ICֽ%L^ZPh *aL)T EXPѹ/)PJ A&j QT3>|V?mW"diR$3 "1 ՖjvjHޫt>T1)8p9Ąe+ ŝ '(Ӻu[!HRx\Icf+a`aV$@V"u{jxJ^GI;~*Hɲ;)c#5ImYB|,ZUiYFYMՊ\v$Mnar*M4W; 4 \`6E[W/H n^[0X"32İ",>S?4h[Bg5`@\3Bfޛ䁒>@4{MܔW(m*jѿObAJQE&K͇2 {K~)7D@7N&͇%\Nz }RIG5QPDO#w1^ t2@6lrC5 i7r!ڦ7NDG,/H2!rtqpR2<9#J.HlIoydO/ k'}QONxbn:^}$Rm!GJe\')ʏ[X@tP9^؅{Tߦk:Eq'(9=m/b&/sxN/5,~NzGSѴOx;fl/7;ilhSxFY4m؎46y<ssZr4}nWQ@FTۻa{7uhu2Mۚn:h&U6nN٠z[*B1rhL/K>< K0Sg=u/ٔEuF@),һMgYWU\`S. e}TY^CԻ6A1q^+ BBv.t?I+Z/ܞ`t :lfB P;Vxz==<qkնrS;{23nw=tk;66(^yގO9i=,̃ɋ$:lgao'R DyQ[/|Q4zʏ\En~UGe=hYsc^/Sf)[-`{_@m=\,pv!һ4cf*` ̊V>]̢25SlȺYg)St_ xf#zr$@HrCH:g!'g>ns,]M&?`˦t/I1(ɼμͪ-XL)1a)=.%wRHps$B)쭧Tw)%;e89|"\-nwA 賕\>X5L]R$m.RtQBP3.Ifط0L}Lߝ~t{|'S xK2ƃ3Sy2 !!| pq6yy6/W|IILjM>ɖb)w3 EȽo=Bm`(רbPę iPkۆFfU#ds `L=1ڝ$@$R[BB}z)wHK*1P Zmf-H,!n '&ɛbdl qwg|7PK4´Jpreferences-system.svg[rH}Wp藪h}%uԔ'z³D*A e毟s D1.2"rϓw9&䯷:-,_yĆtl}~:pPVz/uz:\ÿ}8xkU:doe_.r:DYSx`itW2'tuUNx']d&EEZWER$|kЈ{'LLŸ[Wx]~lu uǵ.ý %vbXuiN>O6,W0^y;DZWiy'i"6JQ\^ (J?Q7W4|E.vEM;S n玾5־=}-ZZKlzO1 QÏ=xNjNnOBED&wCvѢYld}[KD*'ބ#CZو{%L\e}UL2LI}bD('ܡTHhinpk&V;&2CN~*a}޹<ojlU"oaB%u ̙cIu!+m#)F37F3E_i!+Z=5i;KSV3 ts7= #ZسIk:ry.0JI?)N]Pi#Ej8#LrF*x_ UrpVh5 X$Ibm#sX)7Ʒ>|-"ƭZȧe_)mK%IR`;ahҲm q,NyV=3#'žk@/qm{$5zw caSHaC!ߌL"^:Ko>4AGCQ0o]"[.QV0i/4D)hWgTY^bSe§S2B{=[=yՌ՗<0 kH5,C뮊0^w)lo f/lRx61uU\TUW6wi4~{dkT;:Τ֎3iBvxM%@rdVUaꖰ[tp&=6i6uYg[!ur@֎/R'WW._>* }oq#,URe+/sͮz.Y#g^žȮÑ4q̾׈&;2'!O;q}[簌g)C_]yt˸laVs]/Y:L!K#ۼ kB8)AÌ6,Unv-*D=Hn+{hޮ.iR0HkO2)Oϡ2wO5IǴ])< qOU<[OiiҢ=.:%lyNδae?S)`GEuZRiMnYͲ%=<+/!lM _blOb"4miwIGF ?iGɤ?NێR.Q곣NfyE̮mGב嶓\HtWl{xq~tNwE>|(Al HHpm|H9%#TV ~HR<-L@GtÔ2|J+Զt1 I%A󈊙a`&*Ht0k#!#n+ô-D(PPbL(F*Zsp4;/.#+#*/6pGEJgt]C4S)FGPڻ0V/J!FÜqRChl:Lz~ 鈠hTc)ER2HӚM~:~ءYY)OI=|ǜ=h0s+ykHLK!\5R'^bf-I rӛRjz$H`I-=`2KiUɷW[p;O,NR˔L8#nL rԻZGnUBc񮯅_n~^vb/5dĠ㜏ȎY#tuK*A`UIB!ϠZSGΔd1A19\+E:Å3P`$?P B 5oq! :C"N4=@<-RQ + fA,E-ae.%xÃ1îhZ̸@l 抒Z0oH VAExpd.k9+B,Hr_vHj2}E^L^%Ph9}@A-Kݗb3ݪ:s@SF#$ew=PH!4QY7>T ҡC+yr*&WKv^ĶIߓ߽ښς[X}f uݏFbT ;:u˹Htor~ArjWg=9"ZĻ.纖pBjr,0R (8"O7@z w{/]7#Oʍ?Tl9p7 D*0%",%0D괱k(S [/ ((.ΓQHLrE, U&70VD$EmX!hD osStA\ *zțj9uu>Ƥt6s^sj ǤU:!_) a^oQrRy[EW6Gfp;bpąV Jp `Z7!s`PxF&& S^@܂~)lfIO'LCF Ό1g}O&gNEݳPK4Ǯޑ ?system-log-out.svgZmo_*_Db^piܡ Z*J|ۯ?Nxj&ʝW2~\X>.nF?n(\ћXg A]ގS]F*/qd[D3[t6nԣF]MGQ[3[\50{vF،)hLu* *#̠5H5+s.XbbjfWog9V0ry݅{ub $ ӫ0@*Ny>ݤK7=^.hEǠW%r9 ~7.)Zxq>)Uw;$5IYw$"[;t.2g,g`4մΠ$L, h7?ho &44*l(R0{.bRTXcUUjN$cƍ8@IZ&ԞFifב;/J&qw,!=ъOj~zUmz?ua85 R&6+9+yƲ>XOEa$/a(~K¨1z#~H=qzzW{P<;}wr(J4פ4%~gLZMZ3Ht%ai8{>%琑瓑08F)v笆ϰǙ 'yʾ=do+( 0 a(I0 a(S0S 7 Rr5L՝<5@C&AL^ ~tJ ӕ '2 03k '.NPJNxvaKbLV h=ԍzulW]e3 fJen,CV@55TMjX}R53Tɬ|P@ Gk*KJr-~<@Lz(@C5+N|E3Dɮb4D+RajfxvՇx򽸋*[_]^I27Gx_=k3+S2.)UfXB [j< =@_)MM@ Rh}PjM7,Iu0'g|~_gMm~M,^^ŋ4utSBii`^I~}iu5Ck.k !979H!bZŭ+EX ;vqY:IQ!L70:hN<,.%L{X&@纠\l׮ilvw{1V},?a'ܷl4K4h5P;C]#\>L6-6fx̓rk`&L VZLȭaw`e=BU|v ҂<>чz蛱wNp0 Di_$^UǔqqF)_"_,lmDPKv2rnq,]lugw>1l妷wCgH^,\%E6/;7aO6zvd-z6y[txT$t=ܧz.\Uv` u>bM iE|C- `їT%Y@ۯ`5~Щ;i)Wͱg9lo^0Sm7wwn.(ut[ c΁E[{@A[٭tӼ#YƋγ[UU$?sZjBeᶣd8 eS\C |LO9'(yF"7nuX V'.0f89Og5#FsD!;Z)6 l|ŗD |5(ehjE%5S15TKlO᲏[7w=KWvTU8sS봼Gc%651T wT]/@O;t~'Hk[?GR/_&it{KP1@.J%b\yCce)ᜨʄ4FH{kOPȳ}ԓn)z8̢Q22klx bN٣=WCc~*LMqg]jSSSn\vJ2(>}?FdD;۰ }=|Q\[@ 7UTR[ײܾ䝛sQW] BH0?alS\ e7Ϯ~s) J TT+*4H Z  ^WZ"ڕ4Q3fd=^>{NZCC4[E=Cm`شv@hCDɤZ^)d JzD N~!9 ŃNXiM [s fg@wGNE{j8@3?Iwk⭘VD@J](4BSѕŌ7}˳NͳzS'+ȽN͏?3\ KZ};tyn-Pΐ?8~іl?Pc{j|< #" ,x$` P| Gh>c5PQ8?h OqfY3lB ܡ eL3 ; ?Ԇ 8Ibw,/ '߅`bm|/z\1|KK_8n< t($.!&%-RXr"KZ0 %8 N%M(ńJq^#fM'5IÙBM!>)$( RT@"Elj34(qri9o)5~p>P-pY|GJL  Y<"6=pƗ^t5_ū3|PKz4 C document-new.svgPK`4Fx document-open.svgPK`}4"V@.t "document-save.svgPKv4x_n| :document-save-as.svgPKj4~? Z Rdocument-print.svgPKy4Hh <  Ddedit-copy.svgPK}4m朷Y  Koedit-cut.svgPK4&Rs\ ,edit-paste.svgPK4(꡽L ˘edit-delete.svgPK47?  edit-find.svgPK4d $  edit-undo.svgPK4f w$  edit-redo.svgPK4KM2Y 6 Vmedia-seek-backward.svgPK4ϙI H8 media-seek-forward.svgPK4i | R media-playback-stop.svgPK4Cd oY umedia-playback-pause.svgPK4 * dmedia-playback-start.svgPK4sMx {- 1media-record.svgPK4´J #preferences-system.svgPK4Ǯޑ ? 4system-log-out.svgPKBJUCE-4.1.0/examples/Demo/Resources/juce_icon.png000066400000000000000000001314361263452017400213760ustar00rootroot00000000000000PNG  IHDRxtEXtSoftwareAdobe ImageReadyqe<(iTXtXML:com.adobe.xmp ss6ZIDATx\u-^=F -JQ(6,Ͽ>| U %H IH=wm7P{gOvIܹ|i <AA   AAP  AA @A  (AA   AAP  AA @A  (AA  (AA   AAP  AA @A  (AA   AAF' <)hFρү *Z4=}ZV?f= o):gjq=Uob ~B'O|7A@E$ `Νx  3?UVU{4i5m ^E;lw;|G|#G|xJgf'$!O'NdDпsbJgy <7л}/ 7>(:O ~|@:" JJ*jRPq@> <A.83 KPbͰ{nw5_ Ͻ,䭴:P)UJyX "y`EAe4slT^9HU +0wE1ewȮHo|==ľA G L>z2jųԣwlN_#v5B**mg49Dhd@ey$75G"]ncu\j}q]>;]K)O^{vEvFmJ,$X. 5x&,aB)R|X1;Жwxk"[}8^A]*WsYW`1SM񮰽{/ ' }wj yb?Hbs%tIAR7m`wt+x}ھvFkAP a)nuVtvfj^SϞeO.BOE3`mtU9!x2A{mʞå@OZBM)DV by1I-㢀EZ>XFE(Suj͗CRȻkeDճu@b48T+&ͨW?Udk!>G >(z9! T3 F*x=[}:O5>(9qozzNJ/]ۿFȨR(,}wVO-\Bd[ѐPWA ee]+Ot~ҿ+7o\1|0>G A y]ՓK&+cA["y*b#K2@klǶ4W?/n#@\5!jbhJÜ+ǺB6ڵ6b]jX>}Q^KuЅӋ/ $]i+>|AKcNV|maO`>iJ5ȗTO Q;X?kN6<煡~<2-F&ًˉBV]'_Դq~]NZ (D'tlc+/Z~r}67̆ ָ+ ovz̳'F~!^| 35f4Bˢ -,*B_-G~N(5mC`d &zYn]>X~CE hT ]pm]ϫa U7o{o?W{V3@BimiM .v5mkt^14k Bj=-PmJw L{4B3_' [QzbXb UVɵ`[aN{6d ^3@ Ɵ]E-NHY4I}jL} 75{dZu8R@DÖo%l\=PB6Q\@0$g_08YK 9< =o thudI1 Yz|dDk"Ɉ m֪?mF0c|o~Ve]Q?^?Oq;ʠh23MӧH{?亠9 92{5}Lh7f:W8󕮅cW6U $K;=c^ѱ:R4>%O&lX<ZXI|=6D7%ZyۨVD *}G1Gb[O=g9_ulcQ=&&3oToB\ӞZb~۰bMy+]/?] >z9h_:we-չrQlsۧuh_q0d+CSĭ."$Pl["XY6>Ȋ&4JT`|s1+R3%|Ϊ?mlEbXLA#Q~ETO]&%Fo/ ln`guK4*1ꞧX`2*`a/p :6mmc;A`I'1墦;NI\㧥{g-ieYAFku!/xc߳ھyOiT lА 2ŷu?5fqo_݄gA#ϳ㫎rIӝ*8jG#pz]zNdtÒ`~)ҞޕDltrbfJ౫+~D1LyWf!P D0S B }V:.5K?pkpt@|F+h)}m_/+s5+9O6 x.8ᜆf/ߴ汝. (=ؽNήM ţ4"0{ τyˠ-8) =1*1^Pw!>6@lh 4%l8<@ߊV}`'e1pQ`HΓYv= 14.O~`8O3RY;(pTYABt2(I_{‹eI1]81DcIb%}eQ^gm6çI` ,uuw;KZ^1b#Ef"mܙ`dT>$?PV&6M~nmDt,3Sq X&bxwܵeޒ 1xeϓp07BHT)B/|[l~`4u'I({闷yr-N9u~jbJMߛ *OfrKQbwzh(7%S^>f<{CY"6UkBpL@I;&%^5&04 v|ۊ M xZ,Љ/~EDw1BV X]"|/޳=z^dxSiq: W"`\0x,:ua9zׁ}P{&Cr,y0է53\cby7EHLك=" (S] x 8{q]3>x5#iq ovWWܷtAb~YWF~[:Ᏺ5ųaarɥ=Jw5($3 $֥}ە>Uwop& TE hR!Bp,,Rmӯ@"MuZ]'N.wh^ ],: ǁդ=-NkfOnV}bj|aIwW::^g=[p@!<GIz;LnľteSPPgJ1il| |IϏd`  lˍyA&Dgno!L"7@ p~ 8Ӂw}mKUpxlkl). $HEJ;^/~dStD1Ϫ?eʥM?Pz:LV']+O!Lv& F OCmÒΜ9{ii `8P iSYi0?+B9֟nP*Qbg@@Eh{뫺!u`]Ji!7.뉪ɡ{ (I/Ḻ d/˺cAmUާFߕ'Fv2Q#u(7Gh.%Hiף[ Mx=³h2/7v9Ln*\[MOv}(r#ҿ|=@G">ւܷ -ebb&eE:D,?o%l eZ \hƕc~W<7w{S  @r jwcǷZ_+P@砛gJ!_x9ޓ h;'jƏ}H ]I v? ֚R~ܨD%5gA{`p]s2hhVɧtZ\y{ x<;lwYZqu_2k_݌:/]yo!Gъ'!@,C/NM nwS",gRDs wO|zRh,tI%˾?Vr3T*Q@8n :o~.-W2H_Nrx‘<}Zuh޽oJQ ~iڙPkO'҄ ~p ˩l8dX:i i7+-<%^ɣT란ʇA˲1)!\Wh;`X ֺ󁳅GmU՞Fͺͦu]y ͻwx1b\Q71,T];*owGo?-ڛe #C|/iã:|7&eˀ)^@I(9׷?08lց$5:U͜uuPLn@c06<oШ}m~O'!&D>>@hmty,~zxtkM  yh*?⦟}߿݀P MoxHT-3# XZs6yL> o=0'_A>*hJ߻}zT.k~ƛ uB~KDȰ4V4Uce]|xV E [)85Sj9Xr̍,oP{Alůٔ>N,THl{s ˖cpiyEyש5_%"Xu-HveϣB5lpu7Gk $V)ݿ}EQk"iv5R!m[}'h&Awh:DX^9ϡؠDG_s&bV cb|G}H ?~+D_49llPdŕ }zTk Up: ܸS$T7;^g"!+%fxTS>d.\}7k: n?ky+ ^L<b,LتLFtYWW~!fN 2w/9u`$bohƟ7j=FT3!yvGN~d4 xiTޖ>G.m,ȄPeK}wxnQPM1T˚DTpfzi30M g2~Io4 b+Hnhߕ b]ْ倲.&~ r 3˩/˪DN& LkAxD~dԞVJl{"uif\;PesLC2p7'+X(:~K=kkkpEFٷuK{* @4 zy-H;w߁&_'K068.p2@nP Ɵhh(O3 ?nǛA2[=$Ii};=o)4' fAWsK](P-'T͜SSpƿQWw ߆?O+mxB$+ <Q$^Z);`jBDH*yGŸ`לkV׌52 fr`= ?v $6>,0AN%m/i}/`Kn'0vRs炯t^g@>=!qƍcXw?H'4?X[_l Y1̠J_.>moʼnpޘ`Q#E! 3 )gK1cMiu-y~x| YG? #H΄ب!Vrȯ3bGfZ"8纶_u/]'@]Ks<9n? MNBtx{>6$T_'UN뻝t%Xw!NtXqnxnfd<(rbeߛ,)E5_ٳ_g$ yHl/ﵬb8BS"4OC_|؇+D3Ц6i4eo:lk;$DJNsuPw!+O6,$Kw3 'uMU]4CCjwޙ~OHlxpAFǼGXRsW2*L|O{Zi]H?ҿq-x"$ Qy.%#`TD(i/Ztk"@(4I4ElSn+Wz6V'AQg|7}Vh4nfɥo% #X_~Hhbg%1R}%AA_3ynu0l)iQV<(OþqXb*+}\_Ns};#H*^rG-ɯ ó AU%ZY;-<O( #8hŠH_+: wݨ->?o4%շy \Ugx0j]|+]a<(2+ZUzьEAkPkЧ"H^{.8᲎ۡJ8gm<}VUFO:f ߉&ZM%@Zn5,.϶x\:{zK! mF[-nhXNyWzK1Y4Odiߩ g53z1x˒ m! "6' SeuNf,j`̒'p6[g.~.1IcUΆid!}$/LD~ d:ϧ3.n%)c L姵3 zl`5J+s f='A @,ƦJjP@Vŕg׺WYFV&_tVˢW1%^8gI}K팑^ jxM fTKj6\HǬv`E ML ziOl(W%[Y_6ai;xg 9 A@S%V/'OjJ0" zJio6 qy7vo-6rg.[rФ(t/GX_,=&x8o hy 8܆6-g̻`{鏮uf?g5_ MYv%#H.&X濭M ~[</?jѬ:j݃')=n٘%Ҳ#0Q4?0yP8f_ bq F$gBί]-qVE_fE/4]lXpshC!Mފio5OL8s99|zBm '.<2HUbXN PfծܢzRW5\0\ɻZ($m ԮSu*;pRi֏KZ}xAŌ+\U8Nψ-~.j|֢;($g<14='?™WAc$)PaP4|h;nu 5j;ƟY-/яz^xًd$c$ArǠh>Y[yWp[ŋQcXĹ׷\4GaΚ[, , )wׂʆ:AmݧY=9ԉ (Ư{qz[/ aNhcN5m9Cgs[,x|1j'tZsk@_:;17CHS?ց}5gW;gwKeXځs"OPmAk$6_ 4/Yp;KAhkOO) U`9Őn 5zN|MッE{-9_j)JQN˗b( Ͽ_@޷H,@җ`aB1\SN|oZ$`$'`Edw!OK@|)=D8Czb X39|_anXx+?[W@gC׽k_W3,C.k3H蟆&/y'+O.?}H=~L~fҷɅ0Inr$$Þ_{wy-s08ޕ|qw|b+ 6U7^ihrȣ6t|Q|i2uJ.PM߿<=] G gv,9s{D&bC E\X `#?&>S')Aσ`%ʻMx1`L8\UBGS-0gse 5L:? 3FMBLGk#LZM(k~ X(iWN8?m[meuoҮoz60[|8'EC4ͣ"&4u_Yਁ)@I4?/|KEzU"'п2Onp; &C($}ƿ+]!S"_=BpEdv75B ZY\fjl#~Jל vSֵ%"DlHaiOB,UVM*M۪MYW[AYDg\1`LчeD}F1mNXX5+aNdW: ] 8 ĈMm8@4N&&:jO#W{6= IߺgG:A2Sf7̭\fh`<;@]n'ά:Gҙh`s"yi_: @?y;ٗj/2g5Ī*8֊W܌ <$SM?7mE9t1tQǾh͙f3f\;$7m.M SXAR4/(byw@ҽ̢: Yg⟬òMU{nPhT@O0󅷲êӴmN(ó!{`;g\9]kCٺ6m_yk_bF7{xNV  =?9pޑH( Nm=r6 7KCw#ۿ7{9!}⃏qMmLg`ER!XwFy~9p^͢]p֓ZA{9;i =bpJrsUc6OETDDeUBl̂ƹN=u*w̯<ټG!,?jbN"@v7̲cٴV]K׏=|,VЖz`zEYU<~ KK9ߛI@h6֞JMU/!AcNUe-0xiDKYǼH@7#w>%@^!S跆`Aill(J5ݧ\ >'ebz:CҲ?WsQb[#9[g g? δMέXZcY݋ GP4xg^+4Z!E' д׼:8;A>c=L?"m2e{Y \a{y5O8 V ֜k gHly\{>n@O1_IҴD{a.Zo + aE@ _}ܲ^?Kyǘ,ꁡbc9Xl< $LJC,PT}6AUX{y9( _eMK}_T .ri =kPzwAъi@7*@X}3e{S(,BJ5-Po׿%`a?+W)E pau͗=1 rbb6(Hoc p[ՌmW]jq~MW N ? Z|fԳg s,{oASqk tV{!=o>i^XyI/GaR<(s՚?M+ 9"dP`l0fL,P*<$ ?f3 cHMذ("z\嵴, ,Ŧe_cuyrƇg[,$6SCh$`mdG{ +L_S&pw\WÿnFq7 ,an`q[;(N5 |797/"puy"wD+O=(E~lxٰf3#v,@6|MSh莢Pi1G| yݿHX𥌃}2ClM$o^I mQzrp@TQ>.HO?_0m_KDaErg?Xcu?fg, E_9)ۛT2\5 kc|V ôWu KU넖8sy"䓃^ٴ\:}Vٱ )z)0fq%΀-C9-e@ٴ>S=0bDiChJ`u{3r|)ۛVbPt$@a[sE(2DSk?:]cMڿg K$bu㏽ i} L*.,KsVX"qb$t>ҥ`Gp49ïSd$au߁ YpyS7x62vMى+P8#Є`)vM֓Ok@L)5vNE3}(<E?s숫ڋ&A\O.FP2mU^{j 5hƒBWuFnt%@ eshG쐈ٜ(@q;RTY%8WWO *,vQԔ}b;3KE ?fgaٔ NjO@4So_(Ѽ8gV'Ѳ&Ԙg?hH(a@R1?˟ĉK ?O !aj"QTh[vA.֜_1e( %싴c57޿i||vIȧ. bx{ >)[X<R\f_ 4n6=D&C0(iNrƟChs+ 7!ۊ+4M_I 1EiSr2 4v\iMArrl-0һbk^@?m"l9M҅ I9Х-!NtN Sku&lRFGAt*t $hDeh[d2RR!P\@&:nUN=OP6޳AKD S8/E gOw?? ׂ[i 0xd@:&yaNi(D?L'@Al  `j=1H8gsbRv2c pgspl'K3;tIWިig ۈ~Ts!d/X6)6KKVW쨞T4TM* ٚ I>kF(-LˈHWu@ ;4'?CВ>HD5ek$Pӓeή199S 3a.9: KvLQ<Z<Xt0?&ϳA:&A _tg͉ΠZ16x#İć!sT=`%wHwmZUCQDyW`;lo( vix?_L ,+H =mʖ&g}ꉡPD z#'¸ snwZЏ4p6bov[P1.x.d}(TO Kj'BQ >=&p"K"%3a2Rh?NKT$ޒMp@k`TW:( R16tuЃ*D 3ckY-rW|41d1ۿhc3@ "/)]+@դEo1F$'olh)F&YzVZLK #<9 8կ?MG톷E[eYW P8Y-EK)niZD+a|11rXWl:}25 Eufo +eZd=< hG'z_"h!W"" 덿 0 ymsN[zrh. TM ʹ-mI,bƒEs-m"BhQО@Il2F_lLʗBՄb.e_XSSWqahwizڀs: ? 0I:L4j v]M ,g͙G*kkvfd69YVp[|#+%7'EH 0Okuqȇ%m ]f,'ͤΫo7{QHQUdmrb@ 0Döym1/FP7 *(4ZC݌zVN ,is74.yd[ ]\8@(?#+ o)( W=K,ORU?ZJ@)ʜ5P2^}߰fpmL hSM(e~j+xo(QVZ6WuOTu?ބ v_FcrT7&]b<y S=@Ib6-.GVgNpj Ĩi:Ko19J*} VR r@A((!k:ϧ~#?55fߺԡ~sYP# ~H7 o!]tN8+ 5G]^"hN ͑"~}X`PGRlM3~/6vRKA)sP|"#Xg_Uqo[^`u@{\z`@GcFiuM'Gj!`Xmu_j{-zuQ}A N!]""lNȱw oYA{ g7hd{* :݁SUYt܍!mpD+-Y R㏞H&$Z_n5X5gnMՑhjcއȑm351p@@dsP͠) oPuxzO3hsdӱ*+g\3^O*PcĆ  W%w/EU9j`e!~2PjB)xeb{_6(ލXW" o=f#鼾 oU^kQIl<_S([;4$x`xWgQ &fl$7=P֗Y0@;N=h2쥬S{#(F/fV%~ks˦@YeBzTTY`#h({7HsuGqJc{_LC>@K4JؚM*-(]mT%l5 jK@:!AӞ-F7{;UU_`ZWRGN`(=?! mp0E@IOL&K:m y:ǨJꊊThRQh:܇-0c>D@:qI`2.ɀ2G Sbdy`F>D?$5: fNKW#)`B2 A[1x7.ؽά pټT;2 bG}l$Hpv@R?$Y`'1i S mԂ`gV+X[, KT-0,l!G#z"tgGtF44MQSUS-8LQQOV$CϪ ({=" =\V`?hG@wM>O5 NosYp4`YQbJ_&mu#~c0Jͮ#l mʎ+m \ᨱ82?r6++doH;ߔH9;"&4ȅQ샞?bFL!G)X{[b#` `m-*TaGtg@&&f}uArTyExRn 3}$23s6,ե, v#%[@e]NArdk d ^k0}պ+3},2 ^Ql[AwZw#iO 3yP6%s(x=[8y,k!<ϥQ%DD]HDA8Itl)QPD{_Sɿ)jdHdT( ,<@/H@aýq(44z], PO | 5=zҰK^l\MHE;=Ϩ1#nǽ_C, NKj`@00TodD@z\l{J?#,c'9#mPZ`R G 2@"Z_*QS,x`?"(STeHyUqm 6Ԟ0pVG#@,pCۡ}` :.U'xg$B\{e.tDO@DVix7AFY|PЖeZ: YDXAn#FlMd} ȾL=QG2$4-N^UB:E@lhh @g.j`.C<(&`ce4R/VbA٦Grej,X/֔\a᷺S]pCt;$" =#E#͐zQ͠Hj8G!}$GVv2b @C(Mhy b6,~|ep&gt W "ϧ~4pZ<Q,$"ꀬ4dm`cʦt @'W e6Ȩ8K mq%) Td5$7 \4ER2{fz /rS4)a,Ӵ8y췁h3'R'kpF%utǴpN: Hxw %E1M_v9_\H͛r j@ҵ6 92Ф`.y?*9,m.Gr@MhP:O3#Q'sɠF.A2kh~(f##RUn8iSB/oٗѹ$ "AԾG'ߡGRp'pBۦM@T;ڒoq.SfdNhrKi*9H#v7$mn 14HQB,`6NLj;l',Ne "G{ 9fTOθ@y &+4d,ƗldtK-ci2.s!/c'T%AM^Ѫ ن I4mW:T$a0 0ٲRiͥ x! i%aC'8͘;HF\0Ϊk. ׀4}l=pq0FAj@^`lNQQ=S_Ex\@A2A2]YCQ$@§2 AArt/RAA   AAPd"42A$+HT_DۊK11ԇ d1 m})hW ЈtD Svf1YC|ALr̟g<_Ax! 58<Vq IlOd4a `|D' gvղ}O fg<8 QՐE-_EXK`PO6@(eDb1 S$5ȃk7@#v}mMމHhԘtF-L//3JaVmcN9_ q1ѐ1ӰU=<qȕAK6@s!I{U0\vh.̊]pg2v!מ'QQk"?Sd@&Ԑ- m,1 puܔHEM MZAShMq!YHz dbJð[g`UuUpiPqGQ1. -]+'+z@@HRg + 9 ϡx8|u%V,Κ}jy-+ͺ4_<nj~CޭaTyN,LQ!O4tEҖnP!,ߙw A$?J*zCj #'V̀*DHz"J]y( Fe1G8m]*8^yJ!(ݗhg/xyu<*5@2*ǜoU}Rxd.xɖ$ œ#~%%޻b ~H?0geH:"(@+kW{8,])c@vi4ﷄܲz'#z;;C4FC HsCsD6)c馞tb$}EzCh= )r(HQa5R腘vD o$Nڬި3x-F!Ò$ƿ<njGFP i.;"DB"씕>@ԏ}#T8*81#HڈGd]'~y\yh @N (!@/qh A)x<0,:I4DX.Zx.YmicK?pl  J~;01JT.#aH#dD%ES"҄ٳe&@x!ouMYhc N\n@r(ٔi'}H.@#8Mi_=lդLkѻDk *1(/gBh%$gз%:-prI'~;ܻwl^"VWTudl hqpJ'$$gDb!V0U@?V$XN.@Joc~FЀ'*P i0+nm4FF*<W9y*H q\ g8J~Z5!leR߾tzmuT{6Nx@2f|s^EsT݋W!8K,=%+pE\+xmpPx$+J> ADe_lƿ@fd4ęDHܤO"X$@vT\H=KI2!7cJqHkvOBY " 4CbgD%оGGn}K[UX$%.(o [$h4O=0 hLF$Mp\Ep%ʼnE!*:ԃΨTvt9eur*:Q y`MVѠ8F@)0bSD'4R@rKHvy@kC:ZXPI\.M+V `Nʪ$k!H@X`7d) `~z- Dɇʞ; c1Юb$ůxtZ^$@Gڈ_sk @3!y9Hap(8k:. 5)Ԩ869ۉ3:E@{%@F9M@XlC;+#Hl W@!Fr%[8'zd5$1`1:#r!I0gfb06B4j2/3uP ֲY:Bf)cM&51>N@zQаJ| g~ԃ&@2z +4(ToI6R8"#9r2 ZAOBR j@2Ikp:F@2L0?>)k8#s7()[_pGI2( 3ɏ.rT:@ٜ\@BHɨn;GF)0D"6ODsK&?Md@O} ͱ8NumᑩE@4@Eu,5kp?+CaQĻI翹1k刀":w@H7 oqr=`Ɍ4c-ԇ ;Oz%O6XLh'z+a`d15G>ql34"K> ;"gPoԊuf@>.+l[H^k?tC`/c&5#ޞA?r\KD>qD倍X-+H}hՙ?rO9(نc rf+ 0K`0o19fNT`u6 BJb$R泆P~xvZ9@NLT{ s"2(`IѸD@<'KH?fP6&K2?hEz ]1zfq,YC# y,Y0?vKm$5I5hG"rBh=h99t&@j@F!㏞6Qڊ'k˓O@H )B8tlL;YryN ~Kɇ2v;{_Dih]YJ o4ighML;kC/Lk2a"tkWOcP`R:gR,μdoX\b r=ϰ'ݞְ7H  #} JO/;,* "jgV%o` d%RKkjȴcqm ]cV^2FA5RZ ڥ0 獿0?)PjNVuD.)킀%FsjfV!)lpף7Ĥ8L;2B%'R0П@@n{kP$͂0'R,Ƣ=z!q5ɋ@ p7qnG2pxƛ{2X@4Ew*҅rͰf 2ɇŸNtnvIþhy)r<` DK5,1$SW?sZ"d珽D` %Qv5VN_ˁc3vIɰJܒOAw橸 ek$K u0M#^0FeFޥI(d`tMv^V5Σ, YK&hh3R^" +SS ZmCS.HX2:R;G3'͝h&|0OBzsgA\e6"& [hiGf?œ)VA~kدL>V\́=KpSvG G25,'0`$ Mj~PVb߮72xe8~[weI8&CIv".]ɀyfi{_-fgU"zu 'cytELQ(~f2A~E?4Y+p8r2V_Amy"G}y淅|(]!wԪ֡l0\r.pe4΄w[xe Pyܾhf"da)(+O=f1 6\]Np1_Qs7Հ ݖVv#fPc`%.dC19u z8Zmu kޤ[K!*3x%qi5\jv gQü0o> N 2 Oy&N 2e:*H,_a2`:$+T" ].,U̳XDV_--kp]Q5CIt; . Ż._R C?M+jix}"BByu c~r:lަ~rLL(,:,X+俥+}i_kpxhvכ MrJuG%,x(w_ ?GX+?1GֿC@boֱe>Sc UZSa;4(YAbg@UT?wnN. M[4 tMFN=OR%40xlx\my"=tnJ|=A>"@#'РalegQF_o%fUX81/ctA-hOa7}1G`Fu>yέ-B}E+ĎXvs$&ť7F˶cu },еh,&Vd_  ¢:r`@Iv?zNJ5б+U*^#lf rhU s؋b$xy4* z| cIBh߬"ERO%~ohPʺ^oӽKt,S YC5폤[|:@yʝy/>D:3)cV ef~'aIb(2p>|{uG;Uߘlozdvmz0s»` L:7iZ^M[/z㵗v٢3CO_\7b@OC>Khyгr|sFqhxv>hde A1hz(֗$<X,4hf9Ԗ)3zn A} >kȝ+ǘ˥ fa 7 `HDD !|TPg1rP䘞F|{I٣"\:9%hH˦{8A:izMh;_^揽uDU410D]_UW%:EoC]3uF3 :hmuXq(?xrU?{#,:,6Պg!57<3@DA w 2iE#dmۧo}u oS0V`)ŵ1OhgZ<(η޶{ 2B;X (YH-GRB70@(W[Xz6z(ᅥ%^c.^9)!)]^4/ZO] qP{/GITm"%.fZӔh@t?3pO_9/h_O^v>muyp3e`;?o"@yYU@kiߨ{A@'3OWgLXG؞]d95>܁| ⢘K)b?" hY0zbIG6XAfko \s>\y!茀t)Ec~!P&ކWbe`] lID_g/{ 61_CEWͣL\(rKoe%x=/U~ 3 ɬG2u9=]9  ;"x@cϗk˧n]q摥yZakʝr(&eR@J1 +V@]mb9wG7Sh׿gn#|Jx&MÿdV$DzF9jd p-}l!p,'ٗMSn{q@xsk[coӵVtq4!uݯ~,I i7Tn@< V+'aڒ5&=?ND#=?򿺁/zn8b٩~i Pﳟ "LIo4r\Q\;cI-L+/P=aKOioă,vqxum1|< ('TlA `8$E@UВifAK! yGݑww}v Inek`\ݷ_`b?dȑ䯤@2S¾?hv4<7psgkכnye׺BQzx{ݷ' ԏm?*VJ/lp,(4h{_w"?Je9qz== ) @p]&5l}%*vRJKoAOfU3BGpN@UDŵ0H}o=ĢXo.z,@!O4r=/{Gt` U%Prx8|U\P$@U%pF]T3ƲN$B:!/.oww |w;@9}dtEll}fU.d6\|.=D`9R( ,,D‘ϪYUŬUUG* N!(1(w2||oa|kïM/`jtMM0ml=R(e:@IP֟}TmTcoI}$@:*"N[X>. ~ϩ)Ojʌ~o/("$ˮ{oZBĈ;1_ F2 x:AA* 瞑>?kݢ"CߑEuPvmP׻;Kal\ui`pav[G[ӧF>?P?5ʋ ppu_Iߧ!)ByVK{c1wF1 ^bHC(?!0b$FR`o[Tg06JR`b?dP:|Ra'#|s1@Obvbpyڂd$zi"aXpu@K!xASojrPx8i?>ɔ҄H,|Bz㏽$;"Y.6=T-۸ 7`n(rGcB)[rz0{Z㿗cA)w eڜԺ?tx;~S9ᄋ&Aǒ1|B>bo=Ɵf Y$XV0eY$ƒ̺X o[xU uc(Qt^OBuOvyX Y+V#Y߮ [%Q/yソgx5Hϻ_0ȿ(5Pk4N:8%ӻl Erİ[`OP nD_ZOg$'s'ǫnf(z?v(Ui3p/JѸ-AGŦ(@<4IF {gExs0$d6~[cH;Gl]5^K6Σ&6B8Omp- Ar(BǞ7徇0$Uό?u쾃E144 ߋޟ|"W- "Q)+kSZsؼ #1IBNt۰ c_h}ϴ"Ħ1SEZ(.7kΝ7^ebX3za .]X׭M翾"I ĉG3 kov'33C"`(5"`ٕaK!ЧN *2ub5?myyM/ mij =jo}oy(!x}IO u($K_SY J *{`}/)t1w~<(M;v%fM䍰uYիF-\O‹A$x  H@K ϯUӋU,P??|ȶZ>wPd8R3ߥM,-= t!% -|_?u"X} LܧW/t*,)RaC~2xcؔ@ΰ͛~D@^;~ b,꾯Z@AeD<aP",ƀ~XٕPYU3qbZwGp@;ĥ8l-/PL$([H 3́u !H!rzusUwF^ge?nC[n=33 D@;Z^(c`u/g8T%ۯStRDē iDř|qlp ?G`cC p:"ߏv 83* i J,Ph.g#`4q"Bj(-H$1h4.Ft?Odd{7!OuG>=YE"mHH-}S0c\7@4M[R]|a59sU}p/|u(#je3 o8qrk|UJsOv@`,+n}0AAT&, DoBg*U3!3y,Wcێ\KYyG"nhu>/Rb9 :N!1nӖ|EuɶkX&0yHێ^A?Aa"4hW,'fx5 lhO/BTkOfI'zOW-"]J>ї_BP 3A(` wF+{[mY1%o仔ϫKi8 AWcBm4!1ϚW5jRb, C־m@c /mia+ÿc͂Z[ЎO+~9wb#Q A~WҾ\G 7ȑW}YA>4( wWD\ǡ74m;Xx/UL/ n.J(V]{#hyn>^ipɂʔ}~x3t8*Vnjmw7~c!!̧ߴM-X\z& |qLT0w"j6Z]ﴲe:qA_$7 `EmQJ?V ~t-%V :Տ/ d"p xpcb$|!LAƲ)N"saC0V?: : C$>XCO/I燥 ZN6E$-_KNCuwr<]džy{JSg^ e+!c'A$o/毮M'ަ`klyWh_C?]l{mW~p'NW\vl1=EoG N~My'u`ix 6/ HAw 뉐ªlj_]1=xnj?oF>޴qksS}P 0|S>mSa~MT!k;"7̢ ZX0F_ :A\6\pF Z#4r;i饡gE/~k^J Ҍ_ Z7þR Y+9Xx2.nF Y ,G[ O}nUZF7׃Q ~Đdz7WGg"h|ˑO5otGDxouͩs\` &%f{,)?_ lQUZ{o!O%~ukrۑ63]@Ⳇ"rۗD=F8~g]_v ,t%LBNo;EZ>?/MZ^L`T"Fgu7Ƽ2cf<2x-AtxxzcnHv0ܸqܾ9gV}M7{؂N8Z >3?`z;X3mI7 9lceN '}RaQr6XO3+jYO;#/ї! O;!  ~?Hz|@ }}wZb%DPo ]Ft ٟS4)ם+=Ex0~"4,W !+&x#h8U!@%qDA""x-kղB]Fkhǒpո/`kk') $KN/yZK4@FQ) ? pͼښ 2p3OǶJw"0K6{~ʺjٯWn"=Lxà͡cC>M޾ՅɅUpjXQSq;׉o#h*G Xȟx={ =vH>qhy?9Lрh38=&p/`9,Ip^Ҍ9Elsa 0㕋||P%04V9'>&IܹeF`~\ NUq{/nӖc~#A#;n61g-G},uާ55ѠMh!mng~%\>PiͨQ6mtoa]ia/@ \<bXYk@kLnhSZ9;>4O7jaݜr֓ 5b, {'d:-j~&ډ;w?YC|R@rC>?rv[W<0cUaHJwJ, 4a.YpgA jضsgc-#0NĀc !O}*8)fɞ"=,낺 8uF 4Ox\zgN5Eprxk?`[cs8*eݑ~ơɘhiD`ɒ%044g!MduYr˪N"0p.\:snς,0N ~% S&VD|aXٵp7Sv:kL O;U`emK棆 mDphmj;lIoj?[-ݞI| 6M7݄I՜z=P܈Ohߡh<es>܁l. 8l0I>qb|2EDCQwٝO9#}С(37hxGRź #Μ2^Ϛ{zML$'&'Xh;hH:  !pgMDϢ6"p:ȟWN4N/T4&P6.SP>RG;Vnf tJƞv-+/`a}ݯ-93491چ? ''F _Eu^|AqRM\[}6#}8(ev'  F}PLI[Wz9{! X^wO CK"TO0tSH}Q˼ElĻ/mSv b;@  'h@`jrzcmMeWDv><;!b+OMB)PPVepT_uT䀱 Xmu2Rq"(Pԃ8k vڗkFb8m(cb@0`.;J8geP ! ~&'],,ʅ0c\Y:==*#cn& bz5:I Lb`Y[ w^^kסBcפ~xMsrN|@$EՂs\8;q)ƋԬ#@-7T5210ha^{)"$J|pZ!c'R?gB]~M`DpȼNS)1Ǔ=oa|j@(ʢ#Bப%DSsP/*"r3D<e:;pԲI膙'x"rGG_esG"QDDÇ\u1vjW l@!-chM}0h5VBXa΁!b~y]F~o?*!;ׂgA#Ɓݏ>ewܶi|sXqk~N_E-As`5/>k ~^YW|!$(ESpg4inźRXT NW2s` "R6P?-X<8Vo;@(_}ܯ.fUzi㠍B1,cB`IoP['/d]Fv+lc#牷N5H@79m8~(<%oW*J1"Ɍ&.,ƣ DaN"VUt%(w"9g.v6à? |f3?k d9dY}xQ@K /vn傒uHoXJ#~,:eFu0¬tԕ,isH['3ϏX,j{!O73ęf/h 3>KptCÏ#zQ` xP ϶o}vUXzSEC> pLs`5:(Ut"f/yKXX@`qp0_/+գ{BRzh# Cq{&m4I;(o7mz{N_qQyH[2d9(YhO':I Oʹ]\kMDY8%yB1ٻv͛|0FBcD'dl'[7c~{''ų@vQM[Q%ҒOza~M̬偄 `Bshxz? ='zXd8 f ӡD_2)\6tmu=8 89V#,B#v6\G$Q9v|5&O XOk7o9e/ANv9T.%Fg2%*O& 5qn8{C]&(C%R@7{P-! kщ_mgߝ.8f^>{§^=#ߏ~G{=۲*RǼ~)лs- ~[8Ы͛_b+f~yy5_,1.C4W 'h0t Ō䐧 +eI EQЭX=]R(H6*&|pjO&1ʱp+cIl&AFca"l . Ӈ}F>oM6'"nblӏ8n,zAKc{sBS"1rFcO {޵ Qҳh">b}rӾ2cUe:PPk<{SBSCLgu PꝄq''y=5,?X<:b\9.񓾂>Gʇ1Jk$DEtB$/jܩQ?OO>KG~\ǝ#='^=m;A ) MЭvyٜ~z?_61NY0c_; |܀G t(($TQpIN|:c9'ǒ8kwa5djvKQA҄5B>kn'j>]2`wP&tTW*?WHF9"͎]o:hxAPol}kTw3\pkgڰCm0ۖ }^'?>׼iuk#@, 茈[AϨ:glNHG1?іWL\QS1̛޷uxq15wXUzEg B* P 4Z}YC-L9<5xDRlnzq鼹gU?km'k,Q#πVH^>-ףyh~DqGG=jnp@zl[6mY5JWApv+O!`5.k?17bs:mMNW yx( qp-d6gE5م g*_]xm5ŵņbm-5RE 0 NpӲ<'^msftyNxɛARiDIj􋪍uu5KW,8j~ƅbL7RF ay1=m(HBKƤ7j&vg uZ{<-nwc GhdLt:`?zCtiƺK+늖uJg"m9jRX џ 98fi4!#ٳYtsHlD␭K |m!o4gŞHBƒ[M':F0*VǤxmqdfA51Um}i\bg,Kj@hZhЃxK/ZTQΘ>ЅOH2w~}]??{$!fHR[Z&=}=-nٺ\zR.g}<~u^^43g9Owv.i? 8Ovwi9H'{5P-]?߷)w*7mnٶ:@͑ÑѼh/pj4wj&i @ @ @ @ !d뭙F>@%IENDB`JUCE-4.1.0/examples/Demo/Resources/juce_module_info000066400000000000000000000025741263452017400221630ustar00rootroot00000000000000{ "id": "juce_core", "name": "JUCE core classes", "version": "3.0.0", "description": "The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.", "website": "http://www.juce.com/juce", "license": "ISC Permissive", "dependencies": [], "include": "juce_core.h", "compile": [ { "file": "juce_core.cpp", "target": "! xcode" }, { "file": "juce_core.mm", "target": "xcode" } ], "browse": [ "text/*", "maths/*", "memory/*", "containers/*", "threads/*", "time/*", "files/*", "network/*", "streams/*", "logging/*", "system/*", "xml/*", "json/*", "zip/*", "unit_tests/*", "misc/*", "native/*" ], "OSXFrameworks": "Cocoa IOKit", "iOSFrameworks": "Foundation", "LinuxLibs": "rt dl pthread", "mingwLibs": "uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm" } JUCE-4.1.0/examples/Demo/Resources/portmeirion.jpg000066400000000000000000004347601263452017400220110ustar00rootroot00000000000000JFIFHHExifMM*JR(iZHHC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?>4gk@KEAځڐ}%y@V@-=U&M '8Q|? I:|o)A ƝUM2A>nzG5;z4i)&y+S_+0-*N=h@tI/]`+ J=(_{uSoN\'TހA]ߥ6R8S*u_vݥǽIpX|nJZ9CK`JUN/ܩ(9.҅cK~rh 4Q_RoJ zd*o%f@K}>_j(,vϓicOh_Ҟ#us '+=>9Qy/璴Ez?TN_٠v H%:>\F鶟n47J>ӛ POT>AB=Khʟ5,wU>fv)ʊZ<U/,{yOJӔWC֞r|6{7G(]OJ6/Rl4}1@vth)>oEM/ԁ=jO/R6J>/Po%;oJ6Ӟ?ļږ#{[hEuݟOTTZwjM9T*_\m?ўӕ7 7?UC|\Ҫz7}݊R/S*:nu;Gg _թʍ*ϗրq4?;c8DE&6T#cbklmNxTؿFӻ~~w_Z;aP.G ퟼cKl7MNT.iWԔ 姪uSڜ~NViWm6=:Ҭ!/jlyOCSG&njo}|F?w* n*g9~϶SvЩ~AϽ QS2P~Z_-~]*|;Oա.R};@w_S_J1BOTPWbZo*UN~/ҧJZ6lh٥_֍ޝb">jr*D/Bާ(9* 8'*Gwtٿj/ߧ{ҪevG=jeMZ<ݠZ]fmy?Z 9 >oԞOBvم.OnaaҎ~jVlп|R. / ֍Fom>2z<['4{Kki=kԮ߻o[5oo--Soޖ]Ib4kQRwJm4۾,_ M˰uFo?bq2cSŖGY3OVZIWvWZn_˻v2=[LƩvgynkO@FXsHʿwm~{VGme9;3TTԮmmm I'˷wmE.etw?K8/ s: 7̬\/hbѵAtY`hՙy*VUU~ߛW]? k^ *&vFpxY:sk?2' +\d_mU^9nwnkfYmnWvyjrkfLJXjyXjvۜPOef+hi_o7֗vr"۶?uzX,[V1n<&]<|rѨXCyqLJ&ۛj~V_o0jVg_[ ʫGpOO@w.95*u ]Ҁ 5{S??Tk=v{~)_v|7) T?ҜNTHb:z:c P/OTM R/@ ǽI Ydq Ӓ.9\~lOQKY' Gl\Z ]O-z8ցa9~wS/Nލ4vb^i=6S|?5hfDR}ߗB~O@ NtThՌ.9;Nֱ.J+YVҕN]*\#5L!e}w ̍Q2WՁWYıڱgncifffoVǙuOkMueoE̲[++IoV6hr:S)~Ϋ;O7 W'1߶G"|'i>]'gm|ϊ7 i63 ݻVooXn֓_UUگkmi,4o"+k;KO%khlw.fҶݿ-3<=6xOMcKd.U~hd|udf_mN|)@M* CI^ [kk5glk2_䥏RHO=N-IG|gx+]It[L,U綖6cHdܭ#~rʿU/|Po,59Y iV6_.EW[++}~UYv.Uo"Hi?h.ͻnZuiP#{sidq4 _{cܭ昙W*I!q6W;v:˹eZ23|^ߛZ¯ik_5ȷQȫ,[捕Ĵ_fú,sh\ )[u*Xudw>6Nyqw3H_6o_YZ<oY_~zE|lTkT5O4mZE} MȭWvFI&'Ԯn6 mi0u_XmKi^̅ i_^][\\jAien#I,5|_ãsSx{~ݻWYY>w~ m|qd]?2?2qnݵ۫8/b%h}QO$u$x]dIYYZPμW񡵽r-?%枖ieo{K񕹜zk)83wONZxB]Yn$hYYlw#+H{k4{Uf,3ÄUя4)eyk,xw]XtmRV tlkn9k<7fsTSK//qXaULrtz-98njD@ X$1I@ ~Ԩ|ӨO^=%/O*uG{R/iޤN?y٧~z=E?gZ.Aҗ~QY3l;a(3K寭8Hui+ө5=_҃QiWSߓ:4zPU=7S>Z2)?7P4fw?zS~Z ~i=hټS&iU>oNNPjjjM/4r˗ۺHҜZj|z~jM7o#XjU}OE; R;R_*E:G_aM,?*?4Ku8sҲogө-&k3үڥоk0w]e<7٢3*3 i$ld"xCnTYо±i$l۷M$Wn EҖ{yC̱1PN:ޱ-)tUu[Ii/ek }ﻻm\VOkKṤgO[䑥V_Ovi/ďKzFkmkC#HȪ]Poč3Q&uJld/|yu#f|_rK?~a>xk~+5W^ɼ: };Y/i?4/AgZXqX%VUY,_\ϊl4siKYVݤ6M;w*ݿz>|;ռ95֣qolA%<ܻVe_}˩Vs#I;o ki^ԴdHyw3F,|۾fm/ݩKxf=k:2Ffhi?wdov5f^Z ZEg7ߛZ⿏ڜk4/Jug6{je)Hrǘƺٴ[EWKhдF`}e%*ZjI>nwL5Vh~/k~$j,w~"TGdXcm՛[/#_YUԚdqG>xF|`Y6VE[o[Bc.c>{]!c[Ko29Onܵ{u Mg/jFfvvʿZ"2yvڛWwoK4k>&=q_de_ֵ-G?4wceg54nO36h_xsS_.噇 rbҟOU[yisZ1`(xI򥲪Lڿv\Wef n Ԥﻺwml5r ڤ?օ/ހRsi)_@zU2@ *pju.Kۧv|ʟ0FM>v^xOrK"fT?QK BCK{ӶlPUtQbxl"ǂMI{|2TFS`̟/਻>JpM(HA0'U9P{v)ꜚ]7=~4l*|OShؼ/S0}ʟ- suZ}եޞT=;- @$QE\sTmIJ,OHR}kes.mH;+;Z&5Vfo3 ׏4[ &f$i əw*߽/~Z6ڕ{k:mwl4_]uZS|:˪^Ai4CryrI~[6[u|}f5w(NM}4>'099jG;_=["ڮa{VܒFͷ_6+WYRx_kZ1,f_-Ux7ʿ¿׍d/^'F JeJ1͵coM[]-u +LOO q{lwGmV__|Kbs)Vrq[u?d9d=hF=Y;khe_6u?i t@w6oWՉCӞ{# H/m]/̫6Z^D%w5ͧmj3H/4/̻voMde#|d4u3Pԭt٭1ܭˬ:Ѵl~m2Vi#5w}{E4Z}sMʬ6~Zd_隺~ cgnVo9~rfv|mԚ-K{sm&&V3n*J%%>LJgmuj|yw6|~ecRo3y۾Y ^ [&voymI3m߼V/~f~%$1.K5vѷ#6ۍ[cg|1EFWgsjSZMFC#fSJ6ݭ@ZzMFia=/ѪWsmoIڼC]ŠL֖GZzFoc2;K7z妥%e{ZxeUpo?U V(˗;\VZ _m߼X.GONiӮi"Hʪ˹VFVfw.e[MCvMjQ[M%ʬv}̍Uvown/t3@_A#o[A#JMWwkImgNS΢T\kS=w I=y~z͵vk|_Vq 1bXo_o1$^xNҮcm*߽o͹w+3.Wu߆v].d#y/͵o1UdZ8F6#ٲ Y\ik{C7.ϖ=,oͷڻ{^>uO3Iu5M$2\7ekl55)4K&ҥ{Y@4ۣ|oŽR[5̊=Gs]ʪUobG[aXය6V]w˵QhOk_z#(stMeiq~kDe?+2ߗYxۍoP?UT5fFVuwWxC@\ĺB2+yR(]y.U7߻o?fȴZ\;#yfVv[wnTKF1y>ѯt{;5WګrZ\vZȫjs+nW6]ßmǦZ8|sͷljs.nv xW)6,tihfܞk7_ߚU?|»_CMVR#]%<eZα} yVQ7A4^:ۣm͵Wo?QUo;>9ϳmme$]¬ՙ (#ojvK{%6ۘEuZMw7LF*!/c]_*q/R;|J?zu΃q]Il?2۾feomuzuP]8m [lfVIm߻cUVX|#o7q**rm6UmoYD]ߊD)eUVI/W}xR5ҌcN?2#ˠ,]:k;+#I"&O˵vZ=mm7%&t-goVHE%oWt&M6۷W<3KMuzx`TqOTPӫjv>Jt_w(֝ r 9fJzSzsր|Ӷ"r{%?`wg{|h.ϗS~ӫ0OT}Du9c H\.ϚCK{PlzLzxOZ_FTLzhٻOT'Z;ҟ8)>jr?vfʹ֥Tjm@ ݴ6=> c4DO<}@ RП}~?jDO^hTqSsJ-VR}4o&V_mWMIQeѿOnM|ZKvڟ+7Ϻ?ݯ ׿n$tǺR_IV=[P~o+|GO 1 * 5;9Qr.ͷ_^IGO?tx{0V;_q<(uJmWk ̲XYwݻmGlzfO¶6qĮ7ͶHw|Z$&UUofUvc[ t0Ҍ}mgOa.utci#5VM*,~[}?ƾms{?{:fXXov+lkkR|7ZK++_ZyrdVfnՓY~mX)aWb532Co:ߒYW۹w50)R8))&.klen.&o!D?#emۼϻmxG]VrhNnʽY'o^{MMi\֛ڸWiEVw|ۗ{sWjs˪kxOdy[r|ͷo^Μy0~G? [2G*%KvȊ7/WI[Wno"6cU_w?5x;$ke)?ַ_w実mJ [3Ɩ- ʌ'̿*Y~Zj%k|'kzZEղj4Cmt¿wus*WC+Awso/͹W6Տ?ެ/ k|/|ϒq$vQe_nuc֟gk[+EdkefwX]"oU$|S+}3q&[Udv8oNJ Ge͒XrE25,+#3+|˻k*7ު֗E}A{x+K+nXmow+VR{Đ>%ԋ6e`ufot#y+mV5[OG$QA 2.k̓j7ҵ= {۝K˽դ[U?%Wm]wrPkw)(Z[8O FoH|rnf>Rgq|W?7$]F 2FGymJ/ʵxK~!lo=smvzD]?VyZ Bm7̻d۹yk3ǿdχPnGV_۾EvRGq ,r4縟T;4Q?.%m̬ZMqmn-4.YZYWt6HYKXOy6$? KqZ«.]<9cZ/gN-&fKe3F4]tԧ~chMZ]w=gi$24F퍗j{U_=mU<^+/WOk՚HVefڭU-|uʐX\3NҬMmUjQ|%%KyX<{˘I4lYMUBԢN^_zWHEn]%Wt>eMymʻ[miI&xV/ Y$*Vݹm_cŻX=U{K8E~tqʲHy/έ,6xpZ}KfY>o2u嚳nfY(Blzz/ GCme#5~';w|g~ej>0ݦqKzڝie{%:^|Yo&7#y,ۛ*T;H_/g÷>6״˯iiZUɧD\ry+7},4V4|}Uo4W[m3^7FrnϻOD]7rLLzx=_9~z]+Pz0nGJzZO}h3ϽFϗԊ74MGz]m.N_wҁfϧN_~)ih**|۶},}[hTSe9~9SO:EV.ϛӶUAA]ޞ~Z?m9SE=Q.o҃=)ꋷm w4=64*|Tg?g;NT @Zr?NS7*z'N~69S9K&Ϛi>\- 붅JW_")__=Sރ1HMϵM][hz-7Ԃ#1H~Z*-62i]c{l2I}۴%.b mGg5 T?<h_-&UHѷە[_4|>- ,"_1oۛQ-?گ3ON]^]ƕ#Fӧ _ fo/n Uw/H|?^]CgiӬ7;mXʻw˻k?_x x -Bon&۵VHJīJxOab|%M:K6$c ɶEj7_7p&5U.Uy]ok}&*cFQ~= kKˋk&sHeam?vnڽ?#v7¨++.$U|.? u L.VIu90,gv5_*_rAeYy[ܵFʿym_mm|?'BT2ڔVwyg(;#5YlFIfY76- kVv[vfc}G̬Z5eueoj}*tݬ|۟5M+wV_w.JROΕ5duX=;}B"YZiv4!l&h4IYaookF-Cn[ W*'oe_ _\xL n)Yh䌯v˷]n@Y#~flk;_vy.E$qV/&]sI/݉_e* Ě\yŌZ2m&V]̻宓N{}jwVQ16Xgyh!ݹ[w =b}G  's+/+++|Ifɬ'7D֗+25b0sW/)<\IMW+w M~߽h~0tRփLVi#ۻɑߙWsmkmMczf[mrBwHVE~2ϊ- x}#ZjSm- b,e?xw)wu[=v_#:z$>/o;gͻ75M"jWj6SDI˺M-Um\XwOΙōUM?*m3yͫ'3s#J{{/^^_ni[n$fok}75J/vo'h7wO*_GiIh+Fw+ng?u_ W6m[y*ޮ3w4J.$io1f_6q{>2[$~eOuo&]~f۷kKt4tf\]HQR,bw,vܪ7*rzšr]Ry|_-kS#^^xv=>\H]FE;o/4k[r̿/>Z+K}'1- hۗmnՕV=uvy?煾V)imдh61hN4M#--fU_jUYfZVXpK8UcF^ޗ/SDŽQy[6Jx5[k9m42/Z?q2VRє2-J/J J^=sҕzvA=i7sjO菽9~z ~OfS"; Hf捜{Ԫ>֞͟NP1斟Zr7PB *|i~j:cJ|hl:4.ۨW_@OZz;8'?g9)^PZgMTr/P1݌+il*o@ {Ӷ|ԻsT*NT~-;gť*ZM-*Df?5*E9WTˊUMjKП#DUT-?gA_vOl#h'#AE=i=8Ғ1OV]ɵaV]^o~XMfƙw2۵~_V2ݭ.PyZmq&+N!Ox6֑]۾f/ݯ5"j_ ]ONӾ{,1N|ۖFV{vk|ƛmՂx[VBO>B?1o!,nV_kSt-R]ZɺkemuZ|n.'K3[^|ޚ~B(3Mk|EDbV]Sdl}Ѳy^ C㖥i1i(X%Y$U5ڪc*q>%>+h5HN/˻r5 |Kqu+vyYGV]͹ͺ3渘ʞ.4Od /B)_ }7I/A?bUuV<2[meTZǃ5le}*kH ccy iY|_˶F}t'drC2߻og$/gt&`CFY[ww׀ҧP]:P4cz5 >w,{Z ?lO-5[XEYY VE(m6e_P]kz"$VUFڻݻs!kc-wVӴy~}cf6вڿ+nz`Q_^lD+{i|/_侙{J˴-I6o5ܬ+7n-qG+ "XkEZʭ/|6Vڶ?lN`4yftvw73 sZC>xfH]B_ef} qnsFoy2өnvM9|E4MȎ)&~ȫ#nV)oq.>=EnVh:row[Ne%fV;_4}V}BGeVm";Ήmo:#X! եsmU7̿5{x||ܑ9%~<[#F!^2o[[¦ɓK-ٷ$\lUf]lὯ/m!tV+=V.wyc-v/̻vgDž/ *ܬR-[R]^ɵZFVoZ?[ܵh^\:=\ˤp$jrmw<(UZ0ؾYlrz:>sV[ j՚=V]\,Ww˺S¯]FEQuxH~Y7|u`kͥ?5隵4xEޚ5ư}uf_2˹? ? ׼Elڴ7716Fwf3}֎g9eD ޏ}{o&j̷쒪hͫO,mq$.cݖFo&Uw7H2nBѵKuMKþmiy66VeU]mx⭯6vk3htj_j,{Ycn[WSMSu}KQL!_ĶpLc A2yL6֎H^?vk>/Y]iz=Ֆk+[@-ٮ GV3|͵kkKJkO.[Y{ fgoݳ/K|u|)diur.leefYw|3 VZJ>=XWcjXhM WnoynsmW[k|  IxL/Mo퍼t۶ۿ*?hKh,uӤ{a}KhYHj*n*?;k JsE?FUܻWw?יj*r\-N𤏭iן-vwNͶIkmgZLj` adB7yk*\U˹}7N񞉥kZ,Wm/g~-p#~Vij:~k>p Xه?MYva~SOe&vP`/g+Ek*/͵~-]75|HVXm ѳmVV-Ws}|v3YJW$~OmmyV-UkV6ePB~e~UfYUDc|'}>di5;ysFMZ8o-w/˷ĵ2>VVe?kH˹6eͿ6 ū^Kud~ت,֊ym/s_mf'짟Lʫ岳|_ʵVVe7G^ؾ w:MG]ʻ7 (.O=RM4-C%b=5w/kxOf6 Σ4Rrmrp$2no:&loR5$WmU*M_K 4lm6b㸷e|*43*̻]iʎ.씽KcG3 jܾE+*'q bW%YY[__UVjGX2Iѫ*O∃NT~Z]:R%ldO4AI T6tl޻Z̑sJ-)hW27}zN̒6Mޡ~{'pOZЍS &zpEۜN0}6ߞTȠG+3AOT٧*{S4zSNRjEN/Ҫsʑ:P6/-"oNhT-*?7O4=SJvoҤ{йR*/ g=*M}9S{|7!JjO(5H%=S?@|L=SѳcapS6R #}?r݄AϖS{Z6{~g^MwI?4Wh2j6ŭ-Ε侚K1G텦ܿ/˷ow_N|B= f~m_0JϤ%};Q%imo{wy ֞//jݣ_[y?Vlx\?I|; u{/oZ|2ze|QkX}{IƝf?2^Ik(#hdȲtw}?Ӎ<4V9,+ՔC+TE]oG_r..nI,jɷo_.%R:6kxrw(Ue ϕ/-SVInhUtrGGY[WC/էt? $vz~xi5Uw~޻Ѵem奄akތv~Vd[kM$ |Ww_]{gó<u̖,mymceܬnf_{O RV<7{{a KO]uY|e/̵j oi^[G5ޕ[o$U=˷l7m^*5W۷]>JI8{_w9Ӟ8kiJhY-˒8cUef7_³o5 ˫Ef[qf+}z*/߈Neӵ͠{~?z>wycvߗo/4ַ.r![i~W=_RXsEt{g9~!hzω!4O՞ȵt唘ѕ*_5}SgDi5_ nmoA<jg!=Z++F˹V?̭QR_ #mzMj+R-f>i3i]^pivvSíW˿JGWtKq3tӶc[ eF߻FEVw/˻N/; ;C4 6ema㶚5o$۵w.۾z}>+˻ճW][Zj Y>-x@:Omnh&҄lehder_5|=6aOW$_l!լ۬jK`ZA%%'ʬѮ}/2oW}?SXb,m*?{Uw̻WWh~Y-tٗu{+\{Yr;wWa5iPyv4Iaqj;C meem[my|N5iLԵ\wHiMV: xYi>_͵j+oؿmDžmgλWrFsM ]kKvedV%~i#ۗo̪{Y [LYxs^ibuVlr/n6qǖ1}ep8uܵ͞tjE_Lev_Y||/Co zr\$hռ6v_Vv_L̳4l߻rݷm|n\xPӥ_xW~" wp^]]cX,f_-海hRF˷|1Rە7u_L֭i -ɶƱvۿ^OEqn4瑠[5p {7ʬ̵*|GF5c~=K RT"}ZpO45?gUf"8/|ԩҝS~4z|͵TiU?]=;Ҿ}i㠧l5➩ӶzTP*`Ҫ|Ú8sh9J)-;g><9SOΜ;|F#U6-=SSy @t 4_ qh7Ҫ|*7g.P鶗 ΔަH~J);ԉրCJw4 q=QI z~Pg}v|SRy?ZQҬ'soN:ӼoҎsB-5;`y)VAk#:ȲKe[I&wI'Bѫ7ͻ2kmjR5g*:iSv~ԭuC&noQ%~^V5]gWVY*gIi _4.ﻷknoж^ңj𪿗Ws+V5 i*8wUVowmkxa,<*"{.Nei%VHܷ'm՟R)>}\fL7ʿwoUO I-҆fZMS||ͭwfu?j*716ӷp;wnmCZOݵʭV|wمT,2yjZ^ Z%- e+~]+|qqbeFv]Il~eFe_T.LeZFJL^$/{UWe_w>|?|wR]:ͮ$蚌,kq$FWknULYxPu.OƑfB*ѾۛY5+̢#\ܲWzwτG%^柺VֳaOeʥuq?w'O0>.<-ٖ]7-JMϖI СXCMkhEg!Mks~'< ?۵ <ƴvV{~0x@uvQrCQWnowUOI.gw;h2=gVU-^>7τPi_At7VJ4'$/<35;<kuK=q ulȫ32-UYW\k^l!h2s+|cڿ5rD:<RiugVkdh~ݲڿ.L+գWb4}~˞n|LC1.wkO3s.۷*W|O$qěr\m)Z_l/ Y@;3ĶuӤjZk, ioeݶۚ]K@o43m_&8cв۵U> hB,a+ h#Cgegt6*-|37͵~e_˪Gބ8/uA|(yxo.5hUWP1her*7|}e=xkOE"{{mcXNPO m5-"oz|3 "bό:(No.-F6flj+|32}ݿ3~?|# Zf=V=OZ]>8lO [Y2Y۷*%6~7ԥ;skPQzF𝦯36r[ܪʰ¿ù_vVG> ]lJ*UUޥ_;`~S@ X)-hT{>jTNx*|Ƃiʟ/ZS捆aO 5HN~5<5SS$TJvzֆU7]vϙ٧@ Tޜ \O"@֝鿭*TzךHi :oԪRl[icҀg)OjzIXx{RdS|%?`H7vsK>pOZ'*6 =S"?y;ժͥJ!V!S)1mm:;Cv>Zjp:rv?Ȑxp^.ѣ~#j>9u;H&ƫ 4!+m<[5=ow-NK7PB-|YemnUj9-gi:zofj7pnI΂?}UkG. Ƽo*Iu+ƶZՙn6U\5dWo尡击?[ 5 GTf}E]ˆ6YdWwfkcd7vr][Iތ*&,*+W?Ugv/EodCmn]*vߙ~QYŷ3AMWmY=n̫KD$;ќyc#ʵV UŶX HGc]d۷z w3o;:"LHbKc>IY +7_K'MgUS(b逬gUYt2#nU*YZoEo꽷'Y9lk3}o"W V9Z3|D;p^k:nWPY~ϷtO+neVd}ⵤ|NƒjVZ~gMJws,NfkǼ}߉? %CsBis~]ʱUfew7zO]j^1\޶Ek$ԟ*h2U՛_ϖ\gJsOX7|x΁מl &S249c--+GUv~f׮ശFj}k< KNJ kf9#uy3I/>(LjQ j:>UVX̒7tyUc.ir4k\:I!gm+mL-zg¿1h&i~}]Osy,lq}f#X_ Oѵ2H"̫Ɯ/oky5RODžeԪj岶*㚗eӴmRJ-.IO2}V|_i"uhmַ _hg}ߗrߗʞ_9۞=Μ\ym=mSg~#YA=A jۙZHˎXvw-zg/xJvӍRns#3*̻ᶪ]˹|kN$v֚]l 9m۶̿+|j_nCi\I%֍C?+-L[r>o~oe%ǥ"S(>z?4wzh:p5]XnM4r&|ۚ5fY#ʭ^IⴚĨ5V[[+Wr+++.f~, {CFֳI*DڙTݶ5e,fus^aZvemO[8f_3*fۛ}ۚJxx{ڞn;Um>~Ŀ? IwV6}[V+3I F.1[__h~)V'"מi~&k5}X۾ŷyj˺6?_]~5c {ro.0(T&䕥Q&HOiL?Kܥj8oOӏ;gz{5&}U9Sݨ\wwL6;Ү7Vfb/(Oi*-ZJnw;Kh$v_ۺiޜ=4"8j3h~cuw5uZhW3+OK/Y~hK?tۿk7Y8㸞ffVn͵Ym^>L~ >4杯~8㰿O2qmZ[ov6]_65S?ZVW2|ϰB\g ]Ϳ>Zwd'Voi2._[nU67t߲\fXx-sl 07$?/ޕSTn4?WpTfT~)=yxO&?2Y6?7Vz_ωt]RnE?OTJ~ӕvSxSo=*@<"ͻE@JhOTҳlecV/1H~Jf4|'d;5V+%ޤdڿ9W^>jZwtPX `V_ﴻE]m??=ôWVR|GqOm.V*Zq$:w!@Ѯߖ[VSY#X֯tyV}Pީ{+|يWj}+4wCx[],w^>eUuW|[%tk,њaYI<-ܿݯ[8PJ t<&nRNTxNChlyOK IVOj-V+F4af]Wۗk[:jaj3'mŴ/-`~&C{#&W.2yU|N/Jsէu%#-M:QW[U!*YiXsH2EfJJ}ѭ *n&s*:EG{m' RRY9?L|ݏouu/43CpH#};L[Թ0u?-}=R\ne~_k:ve~nߊݝmͨam/o!*ɵUw//xjO#-꿾ffh٣//ei֖[kk3JҙXnvз/vYC(ԴBhXiԚ=~YumnoU]GZ5"D{)$k ȫ#G|Vo^sqZ5d*.$o[k|˷rV-CеPTV*XLѯʿ{5{oKQTqqS"v<Ŭ,Xϵ#=[o:-yת*4vJoZKMBveFݵYs|7-W׿}ZX|_uZvV*Uj/i }NZ2eka4n%[,ە-ue y9|^W?TOs^",txv} ݦ5c=˹ճ2wnό_OxMBNԣIGz.݊*?˷nݵ/|Mi>MC+KkhsD#2Yw+FU6F jzޭ-fU6_CnU=f]:WQ~,屦6jKoo??]V\-c džu  ̒ɑU.ƚllTfgV̻4{ͬUfVA}:~*\ׇm G+}fforMe_[cK9h_h|JRn..[uFUڲur* |1o}k>ou(|ۈa*۶۾ivzk^x!m4m 3L7iy33,ʿ+|̬-pty|%/ji46ct E_iUmUZ؉9yV᫯5+uܭokV#+|wh骽.Y6]3G}߼rs6đv45[φ8?̬ĭrG? ctoheΝ,kq6ee6hcݻg7gZs~4{-9`Zt cvoxeUk 2ZZˋ-,o-wlbEeonݵ+xzÖSi-,9mo6챷-?wo-z}ܷvʰ[O#*7ʻw˷/Q X:0yeQd7ſu# ڔIJEk]HѶ_F$6[fUo|KXWkf_6[VM95$3}~ejik|`Y|@[tl3|Ym7<{^xP4ga#X)juզ'Ǐ3q]ѵF&_Y6M2k j7v,]-'˺HYvk3H|gjMv 3|ce]37ʭfU_z2pR˻OMyx~,qbƷ6kh/|pĭ[PҼ5{kiZylv٣nͷk1an\SD2MqKNuù?w4m"h[l6oZxof%zoC}mVr*nY[]Y[v֯<aC#/?+Ŀ s,,VnRovݥXkWG.. DrE=S٩B11SHFú*Gl{ j~Yal%q`emeemmʿ.3iٮb??5V|5o_VÚfowFʲ2˼Ws ,l$+VVߦ~Wqӆ6ޟ+'z?h_eUmݓBw|A⋘<=J?A$/$XecVVfܻUkUO?If/ Sƫ+yzD-.>eUڬkC OѾ v!ӯ/u+S34^3Hl2M'͹VNUܫ8UpAGbVrN[[oZsr8$#(lqX&͛}ޣͥ_<o<-RmZ`ֿN?BjB|O;9z0m7gO(d>>4(=ic[wȵ- |Oऎ'?xsY4*57˻j "RIۮ*fY#=猴}KQ5VibfL*WmUٚG'INhI}0]"8eۖh[˸$Zjƥk=j#NMf6t~]ݼ,fo]ʿThǒuz29R/$iC>4j?慥XzK{m7Km $eYY>].ݫOsx%q/ioʿ)+ėcUZ? I{۵cU5Ixv}B3vEf텕ݿ/*UftGBXk $Ztbmwy;}]nAghhɸo{Y~3|G i:W|G6WSq:EU}nUcc-U2 'Oat7n]SN˺}hco2wO/RRV|?-̚ѿ6\;Z,v7[" fݷjv փŐek5R,o"c7ʿw}KOZKCVӝ~ȷb)-{I,6ۺ=,W>?h̖ZGI5;H#n.Z6Yco˺6vߛʲ6?8ʶsLM|70}FZtkkKh%6hYYve[kyY[~ k}:o e=XvZ.b[Igm>R]?++Iݻ_?-vrLgOѦ(/>o?և)՗4[!ޥmiڴ}<+s(5Ǚ6c[rX=k>|COjZv$7gNVc ym|w]>Vm-.nVmVy9>aӗZ}ic홙&FVh~UYeo̵YԱ+܊_?OCfXLL3x^kK{&UPn{;eyo;2ٿew̬Z?Lt}KKP}1IXտۤh#VUڵc~, at6㑬|uVwt?m|? K]#V?Ӟ*5HgFnU&^LsΨF-,망3YMZ9C36KS hmKfQZ@? >2OѼ-0Ywm43O:NiçYƳ1UdO˵e?v.P6Rrٴˍ&UwߙUTL{H|Scn~XF?{ }f?9˵Uڪ7散S2O>4) %z>m_i[- }vܲ@~ooܿz1ag]M  G"<_΍K(WE:^nk=#7.ݭ_J-5.Cjvs5LsH#UFͻv.*¢^2?_s;+lj> 4}[ÖVu6Y#eX^!ӵv V%]ywƛuu.庵mGF7̫[AuxmzՖg,3/Z5sGt"?6N NEKLO߱G?/ x@^,LJ}T7?fڭUG֯Q:I[]./&Mi#ff #3|̪c/[=3\..piM 6ޡxEԝdo/d~iffݻxǚs9O18Nc̚HM[Mt]F%~&U-|'>|>pce!n_% zxNjirZcoxmd/xG8xZ#(Pg0vC>\vpit3j٭]'ٷ|Qs&{u;-B]R%Y`MM6nfhk|5x#kY%e[fUW}ҴO_>ٛs嬊-_%|3^hơ(@a;V&knwR6ٮ7nU+/K#iҼ y6,k۷ʳyl -Q{Zڎ;{FEUeK欫/gse6&v~g}٣eܿ{/[kp.jUAǖ6}y|kci6k 2[{w7_d]ڷm:?d^"Y( g6w|kaKAմ kfŬUY~ӵ\~xۗlcW [']l^6#4k}tdkօtmu8 5ci>k18=*k93_:\n۶/-E_#+.gb|xZXt4tF{+x6i-M?Gd_?Q86u{d5+k f;Yo.~M|C_i!-$wg./-om'[kI|nV[㸞641;cׄ||Ϟ,*(6[v};eXfܷײ,VO+ymJO-mE3^[^o5ZM}]k,Z6VW@z}ͽԩ[i\6d$^GB̿ eo,a$3Od;}Y8kܷ,,3m3mk7a,4J?q׎.I#MiSuOGXcyKX~?+|IݾafgwjyV-njoqcmuym7#?UY|V܊ж>|mxH4>f_eu=RO,lknvoF]~0:F.OyqY')Wh]tU~*F\rh6TKkĶiY4Ufھbn+6.ڵ _4zpb+F̿4r+++G"++-Rp?+SKg)njS?v`}1ͬ5FW&w͢hS|McGci7Z]C=Y/eKTUDlo,/%SΜ˫ƾvꏙ_G 6MqЭ>5Z;6/ҼM3yt7 ]5~<(|?/K񖥩s&Sg_)ڎegP/ gNd*Gp=y[n<8 b0t J[|쬑eU(K㏍W˧gs{UI?]̵A>^zWasRhk(x]EYVV_C$+ч|ˑuS/jKW~h? )1z\iA|ƾϚ<ܧc}ߚ훯xhދ>"M; :[d']u|<_]SBgE ym>I?Z _|1=Ay׀p"Wq]|>3 S'~1xXq)co|x]񮣬|,QZO"X$f[n]w̞8{|5Wtۍ2c}V-}U)ud㒵|7ភ.m'od"dm߻ׁùuKOÇsXԯY>b A҄(?+sڿP>`?uo2 - DQ̓]]c⯈o5 SPkc3vWv~j*Pm~?__5+MPo] `[ˍYZ/v^X BGKhџAO]R1iKWKSE|Ԥy|O6-i*fNi=jhz =hZSy5EZy|T;Pԅ}dPdvԿj9~h ?rZ>/ݠCľdHN׬5ӭ5r/tG6ծ;O XH|~./~_Chε_xyo[4+Rt]~ko[١:(]_yw}+? @,EuԬ*Y#۫պ_/rwr~$45=FWhw/s FĚ͂Q+yLۛs,qgs6AQҤ%5}U+JvtK=Vso4mG2ɶEhY5|}UMxO'f:奯Q|af}ոhwmkl>#x͍Rʹm52lU]vEVJdzxyaO>ӵGZ6Ii$tj˹~ݯJ|LmͫWiѩNỴ?|i5(t^"9WF_:?r/̻wW|,>*xd@żVNnZ%3/#ik7۾YWsK-VUc]±ٕf?3"*گh0Yj^)׆m5ڟEmU༳VT1%iF}n{=bq4gb9T\./|gRtX$ѭMRBE}ŧ}Bz5UY˓\"g/Q|{ = ;I ykKt8%Y,m%?|׈>>xI = kdiT&Wn"*vxTѴIt=y!f_&edfc'djʻZ?dABM;kf2(X,.1=|,i⏴j6DvfeeU.}WVK|U_Y,l۴>)c}X¾Zm4<|W?}m/Y6ZQcKYg^--SuliqCs2lbܟ_kIYf.V۵/f3laQ K]\e<ʌkT>n +ձ2+yZe|HO(x:O|7k1j:j`HM$~sF"ESϏ__@!>? /}*Q[+V[]J%үq$lmogr{4kNZ7; qGh%Ԛ^q3jV2]ko⯓-Iw6 zjmbۭ4sjsG {Z5e_~?uK4Z_tMNK=5˱eX|f{o7ʫ5<5uvY+/mm5ƢFq흤jۙk41ӕtз䪪YnfǀtF=%8餍nj8/o=\{Gy>i3KEY]Ekd(^O:5~.W+ǿ#h:߈4GFBG$DͱW+_$ownkq/̳f_za=x,d~VgujcDGgsjp˶Y|Kd̚[hفEmj=~j}im#Akuk$m$~U˹5t.:?/S<y>8ݬ/<ѷ۫?k:u;k"Vm}G_!ߏ|MqͬZXW)y?آm4pH7&_WoޮƁ&Hզ.$hbUhVe6Wڧ74q TyyO~|`w崋Zj4rM{G4^[6$k[̏oʿ-x޿7کk >dwwYzg/-kWpm-ԑ-1N'm:t?nSoxFtoK6[>cU4,G$l"eT[_xkZZi+qֳ*y[rUe5yXx7BYmVdHovvz7܎ګƲK-|$7.$o/6.EeVnYmi Bh6Pi>Xժ۶M}3I.#EmJ3.w,f[7j*'χ&&OOOem>_Msɴ^k^kx;>q4wyl 6٣U_2]C3Y}e%Z^ٿoz9?ّUٯmd#F;/X5ii#UU۷lEeU|+ CQ% Z.ݴ[fR壍/=O~cŞpsV˧oyP6J*sOEI\+4::i7/߷՚wLږrXNV?_\=yOӋKGu\jOs%^5?燼;~ u?/bM,10},[ƪe_V'd|E[=/zns#kƬo]3W~9Դ]ޒGyhI9=ۣf̵>/u Hb^61G4wm7omh=+7˵G3i~G?Z:cJS='O(?#šJѰ<5#kvΑcdUf۶ ,H6pE_Yk̿_O tI&FɶhWk7-}U[MSF]zcTEդXs#7Vhd_,#V͇bz3^aZĿ"W_~1*yYچa37+Im+}Cm}7|j2*#/=*_M>#)J:krVKUyQ[U/nCip'-Th̬7~{XLs3FV~j:>(ghU:uy~>.u>^diV_'wͷگП&/PIq X੿/Ei~2xZ3AmQn+#^32W3~KìXy-YEK.u>G.f2oh/;姼=:f.qctjjd%GE<17˻vݱoW?[e/Q$g/CB/ۿޮ$+xk_o}7-ie[J_VkUWY%cj28cf]HݍU_G|xX]LZ[^<77o׭Inwʫ̭ ƙxRJ<򌓏t} 3X2,Ń˓*tiW>t<b«ۥ3e_Eq_cf:Nmg( Cpk<"BjUMGTךabCOX?gJ֡+T8S;aO1=9LeeI'|dTwSzӨR}]|N|;wiJq Wy5CmUeo?F]ǣ^OOY^UE5ѳ,mH'ޏ֯pmL:gfL;V E'!ۛa5KǙ{ouXW_nyf>-l?.v ,ey8l(὿kKM$nۺO3tc|vߖ_#> IgD4fDX亏ONFh<]6o.=2V,zϫεYrޚ%i_ ?~Z88~VVo2eܭ4qھc}fx:rkCm]rɵU4~Uڿ5v,E=KYU)lVOlʪm_YdeVee_殛SjzbYj^]Dʷ_286._E(J-mzV'.nYGx|×~' U*ەc_2?W6W=dΝw-[Aqos3.!ѭ5Ϻ8 Kmo7$foj|1xx{oƿ3yݷWUӣխy5zNhdo`~ՒX/+2[,[w˷r1wb-+RVy+yoio w<0hha|g˵UI|%8bO2mە+/˻fwW3ZE295=:B[(u2U!Y~ZFww5G mq&ՓJhỸUw[|/]^okfc7T M*ZUUo nڮ\Gӫy_߁tOX|Jmtnl5'[k]kFۙmYZM_j 6o j!-? Ze#i0U镤V2$sn];oݲ~jz? @olZ"6.m{Gۺhwo24ovsj~ӿ m٢ Wսޣlhq"m'hZdbw}B ēJvemO?25Mssut" im(MIڹqucWl<f7AMm>ęXn?_~xw7#]J3NF۹]m\eX>9o^0ԥ #^'.x65_ĺ 'Im7#V%ׇtO Aekŵw/UjC=u[Z~ijSo@gE]MxSᎬ. l:Vw71W\{H͵~x+C G-ݟnyaӌc6< _uws I°}C/?uYnf]MW+ߍlޡ-ȑ4fݷoۙkǴe2L3M#/Zs|SbVpW 17)iѮ&︫|v'} {t5) LbЂ2}_3c2W_HOZx# 1P../!O[}mGb4KE3_,Ce3y~ȵ}ioǿ /i1ki 7s,24j$q/e_G=xEt +Mցz 7M eΚѣV]ͻ寏ke#k:Ivgjva+6Wuy(8lSy<+qws\Zys|m6o1ve- ;^𮏤e~|u||XQIVJK (ٯU~oƿ+7ۻj՝a{VIN,z?3ەkh 𖜬w-|ľ8W2ἵg&jt13_;Ĕ>_>GSȟd<hVNoQ]WTorK9zB&]YJ0U>&I^yQ7TA\?v@c Q'XE%^?һHn9YRּ%|uO[$/\.2o]ymfwmXx:^;U4Z,M}mdi$i$UYͿ+nݻml7Ex@N vվ4kqo$*_m7@_ԯ%bCf j,+O;w]|3mVU27)8Χh|V>e\ڞ#Nw{ʿgmsF˵Um} K~Ⱦ GRv:w1M̋tdYڪՉǚ1 %үuozٷTpw-,aDsmܾvgqwH>>? t]yr큣]YEVMW]>/gMvw>)]TV7Ӭ[ʫ̱~%ok xkFcڦYfi!.ܫ$-k3<xqx59Kgy KkO6J֊%x፥e]HcYj<_VnފF[WſR'LK}jU-5(-Z+K4-+/.2 W˚?;~~պ.vwV"+"oo׷xZ&ie2Y yvOg],E-K{mQEYm|U~evЧ43SmYYYf[UfpL%g ӑ~6^do<,]FW|-( }MYF%ܴWᕆrڇդjjAy~ZcG6ÿvg%V;'?2ND>խ75y+{oyldwm@[x肋w^yOٶþ:/fiDV/7.&]^4%_{毦i*Vt9mɨ}an+8+P񧃼M"rVVwj0ͧk+yoh~o1:w-^S2IIz>25´WO_AmΞ(~kc\Z4l28/syoymѼ3t.8$R6V]MYNJREc ]\\}H^1]YI< e~,.<[톑_G%i$q"yz/Y:k:6hs˾_6VW1+7;Vfk V].VNil1q46#yl߻s+|*]_~0|k)y'W0ƏƭeA1,05>_hg$66}]3K,ֱ{*mKkgUVܫNە d?4k5]em k$ۿ}e4 [^HUe[9fw_yZY{?U>4ǀ|[xħ{MVK-"EKviVXk36~U͌\uYwZY\NRo27Zz~i~yxȩJ+MXKt1Lk֡iOz۷ygÏ_R\|_tEeۺFV2B5iΩ[<@Koi]y)Vej;n [B'VhZ#A_Sx /~WiFn ,{\k6} -׈aZ8hyl7_W|_m4? |Uq@Z-ݽSI컷y,̻*/׺ko'>y;/#eVU5o97=_xyƴ83ce+>泥>=\fJ5w/i~K7viQ< ]~YG5U/g&y4˫(n&--ɕUmU]4t\o=>i8Z=[l?*[{xd[fVekiWUr,5͊6w*?6R[aq(OدJւHSy?wrBsUHQ=?`j@'wSӷUjUAAhO7vֶ:eui+vIcϗf]׊5BPٹi摿7|ͺxmuy(kYYo{5WHkBuլAFq,yj~BRP9?cx?5Q5KŶhWҴmeY$fm͵[mkWř`4":hoҴ7ezk{?]D鷳$4FMjVV*y~Z|K+w$hpOwK}J1wNP_hK_D;Rr5VeF(ٶH۷3mYZMMye2K[J̧&vrVQh5+{?µ音֫uw ޝ~W[vݴ/_k-.^uj{߰>/b*=2V;=5 w̸tH/| i^7V\Ks-˶dgO~}W4˚I^Kwl eWvm a2/^q<5~[8ڔ)Kq//|-3Za=;CG#n3~eǫq]?-{_4/U{Z6[YF.VХjiϙ:ѯNQѕ /wfSѥ׿j>ڮ{mC^MW]ͱ@?z1xJ_Eaimaqsum7̻YϽV^EXX=ŵGU֡%j`7OZʳ3GU.]uv^mM~.{`~ *Zwm{Go7hzJkƚV]76e~oMm'BJJ ýQ?f?er\ZrϹ]ۢfo7~ |Ozk|;Vj ŻlhfѶۿ?/Q:oğڦy%,;dfef|ϻ~U<}+xx `-Y뗓{q|D\+ܿwk6ݫfՇf|}k?:R;xm5#[KXپVo5ʻ_wZ'm[Ӳ4̲I#/̿_~oݯUh_k~(7KXN}S[s+y0ﻶF_%Ӽ{4ޙl$3\jr42nVZl$w-_5|#J~|eV3kibyV߹[Ino&:r>!#~/~u7d0?gۚ}[?ц%|/mvOCwB W|w|{'|zh6zZ,^[FsNE8J,bq?c6-7ECu6i,d%v?.k_>R_ٳX|_:xQq&/ kn5{Ճ{$nK_J#agy[LZ\Z̾\,'˻寚 wjoY <;w!wYiSimWU3/7ޅkmo5Ѯ3 ?iWNO>wmĞ Хn<ȭVO=^]_%|@1whn:G|Ȭ}%&[޼8<;9🈿bwt˗Gud2mk_٧ýRKu=6;hhYa~E 3_L<[췟kך7Gwo LYx/"s< }rK O |/[8Ygq'>oտ5~zh>$Mzs2x?7_ fiZ!#ζU3bݿ{wU//Ad4eh_=ʘŪyl{5C6>~#ih x:4:iuG%頺_6ڭVY7.j9 j,lbCh ̱n5I?:W#z'$EڮcI[G50̰˵YwkWWKK\hj6*/;t;UwW\e)8׫F ǖ]6.IeK_eBVK& ekcX-3|cnZVzYۻr'-72wmfeҾcΟ-kK[6bn%XfS7۶E]߻5Ρ{˽Uiht,k3A%;Zܾdõ~UVYUpGJW˯ro »VWC=Qh7הxgtڷ5x"k9  nUh՗wVYӣib*s^ I7T--SC Uo1}8,eTHe(~F2# Ѥ|~tS[jy]$L|3xωMF~2;i(lKrfcDE;TJSe/jy߈:G i:.W <]V8;I#,j$f^i]nIW{+&YMiLwo50WY!mmᶶMU8]˷oɧKy^*1M{N[Vo7_ȵ"O%/m|۸H\\ džSvױB Kvon_墍mW7nLO%rp^ʚ}\cf}ߗZ oma9<~mͷo٫thgf]7~ ov;"M-={uiWe[e6*ZB1rb%GG۞+u/u;fIlN&%W}3H lnXY~Uf۵Wjo^x.k})'Xo,CuFڿ**_/~?/wa⛽ _a_>(0¬DѷͶeUS*?.񯏼g?R𿇠5wgY$,jg#XYUelShE[KY~6' qRue+~&&4߇t󫴞|:3]Mky{ImJ|dץ~ZMi5-~4Hz=7 ⏋N զ5 BUէmc(ѫ77mVsZWAY7Ӟ W*MAn;=w1*ڵU,Λu˗&w캬)kM-;d-=7̲ͻ]{]I9mKo6ekh[vǹ/.|gUf7WS5k[|\S'6#DTlQ_NN_B|_Ipmw}ڭo?౺E,r|1U(_yWkɱwg_cvWEgG#vPfUF?+FDir1oݴ?5Kdyƿ6gσVLmξ5ݶq%[WVed-e?U4Lvk˷pB?`{$ >MLmQbIeXs{Օo6WGü??l;MOZ>>xY^+*'cn]2*x?X?{pߺy凄~<^%mouUV=7_C6gKKYJZeXə7.寴jfkៃ?Oۼ=/GeY)wMͬǹUi+|cg<'GƑ6UhV6I?9#Y̮?^p?`yF}yn9<[bNݷ֟l[߳\yk/,6_\Uߒ]ݯbh7ngÍ>Hޙ .%!°m|<wv5~|=9w>N9+KDiݯT^"x;c'h$XS&_|w{vM/+ڿn?T !nAQ#:^J-]U~ʞ\[ݿukXh' q4ڿ3m_^x᷻iv,ߺhfi>Y|?hr:mkM7cƝ*uiUlͶvkUU[j۹kD]7D|MxM: Y5{4]eoWq д/Z4ao7e_] i|{O m*]|ϭ/5M|'Ob CO9񭧈^yz2m̻ymy-=U-\vYEk:,moەrjbmP',_  vkZڦUMLۗjf'ൟyxxKyVohFeX[lm"nI6m3/!^33ї~#.Dh]GzTWsy1C$kiZZ94 ~?jem_MUhI<c]֋U|>]~Ut>6?t4Z^.wZ=!(d]ͻU/B()V|87_>& ͮ)'Z6V~Xfõzȴv>~ug[jVݧ.&efW̎o˻r-p~xB5!t_mPGݶEwIYxTV_ڭ4PIrH|v}+ŨrO;rg<aY5Sl~EmV5OB-4|6-WeZற~oi+k ̺,qLZ+6Yw?u|Fܚky[Z%FoɺWv$e3+|t_9Դ{>) mA?MԚVUڿ5Y[0k2]7ݔ827,xK&4/ irYxuLX5,w?tw|x~ug}[Mr|K 6fki$߻ګj0E0A^[˦ye4G7|[=)mh{C~kw΋ 惭\zOwﭮ<۵ffG\^wE4?ZVqu-_l_ʭ[k{F4e]C3]>qG+3\*]j->ڇ&gǥpiڤOIqou%͵UZ7TO7 헻l~EyY9oj׻US쥣;3k?*?mm^G wq.s<cmNcH/_O]Coj!6ƿ[ ߇d5iZPGnH8uܲC&ewͺFV ߳~۬YEY?ymYvmXqs lz\; NG W.Bu;8`tcW̍?**>9xGƟ 㵹n|Meokol_I #| ɵYvG࿃~>Ӝ́>.*}8V}̳/kmok7|m\Wn]_uO.uƝ˛kvfUXwG2̪3GWq7 58c4e]{13%nYGkߥkzV,4>M=Х+,ܻfwWxOy:U^hi5 bM̱r{o7_S~)1zD1yf#Y5EmOۙZ=? {.ksi kI'>ݪL{vk5>e.Ͳ kK7O뽍fRO_i~#֋-Coe+G>_k[@wK%Y#-Vը#1^+[ʴv%(e U(OMυ > Ɓ#mm'ScYjIP^ANU!xeeUyk+`;zs+&H7G7<\xyT|S$v$rK2|oqxe9-R8l=-% m |nWxhxcм+ΓUmo N(k{_|PW^ >}nJ wnu~jŞİfVUG ʾvY ujxMJxŪyϬiڗ`Y$5[oɵ~emYw/բ|E3CyX5h~(VPZht+%Ʊh|tqoͻ۬&kdh^Uz?k--t}9lfZKƎ=ۤ]/ͷfUj?>+}[P򭄗mFXٷnMw0|YV=4Py#h]ʿ{ۯE=͢\lvvC'{ j[ok_%оƒGaKokۆH|EZ33}kb~ϥ^g?Wm/2/v)海͜>wWW麋-}y19(FQ\YB˟=R)? w^/Ҽ/'4tNmNkCu3$1}6;\FdW?7~f0.,-ݭduܥtO?>i4-oWh//.Gqq6K`,VM6c73H'4i5]='}!birGuY;"K$rPgiMԭmC-"[KQ"=n`yyrWiUe\toG.Ev<V2emn>_T˖2 ;?|5lbb0ƍ|߻o۹.k_%?<%|{GfT捠hoE?^[<Ӽ_k{Yf$. Iű$-o3|#m_m_Wo|Q nmu+y̍IT%qZ4(u;xw*moC?TnOhW!5B_&+-UdXI$Xw֧xŗv?|;m#Rņ]_Fff|--}u?//$Suk8,)y3,Kx̬K"Ѫ"ʿuf_NSJ>nƟ5'.DlʵeUOFf~&7ߕxYF1WK[8Z]9'ڭ%ߗo]Z|wS>",,HդdUefmZ;sN'G; ;Z1˴mg_n|UA[Yxk:ݚ;>g-q˹"vw6XXG^_dj~$tvY'n~_-}S׍t 6y\~y j$<7yEEu[^~v^o]:³4?w6ݾk~п{WwOAKm;BҾ.&^^Ve]6Um ~ǿmFancۥ{xUoݼC$U#.ݵPO[˯f|FL׮nievVZGYVF'埛kbD8[_=.&c̺\e/_4RiMwx56Ս_=Ucm+w_ெhE֑$rG$^˸ZMHeWlucOM~Wԭa:峒[{y<iΑ|GįxrlxN[m7Dim4Gi UHdivϵVxXnI~ v\k p`ռ6ʲ15hvY6w+W1x^ZE5?bTe-۬[v?ڼ)tamo6ei>oq1ף~^- O0Ӵ;PDsEjw2IiU۹֙4ݯYWc#ΎL/ٯh7F5zeww^L,+崋stj6ﺪ5|h_ſpsٝ>]CQB^E$mUK3I&e1ڻxui;\Z5/7"Vc7̵=7Wz53O[i-ZMFۗo6֮8^ޗبP} ;Y1D564yfLUfeFmqv{/9 ]QSk[ ˓f}?=ee5yƥax~+eEe{%[xah] Weh-4>}sF[5pKFdU_.k~t˹Rc}fSa_yx/i-WHcB۷J9VnWŏ.?<c-5:& ۷y"I?mV/~~ <.?~%j:ɛ˒ckw,̪-,̫#+/Wtf xz-͒ Pzƹs$D 2Vdk3|UVc{(CFRA<ƽ ©4ش{$}GMێPZO1U=۷|˶ͣ~7-qkVm6cv߻\o3$%D۶zE׈'XVKO9gOɆO26veomz׊4@<=?`un<wojvi|ine/Ge|sDWS- K*YwU?Wğ#z]hnW53; ^.~GR ;v0ռ |Yawo'owm_oV0'  ӼiYzt.bY4ryFz bz o#dU߽q$nZ|<~2~v'O k^2P\Fxlcj»UffvƭkG<|#wukRm:ݤZ‘H[mܫn_~~1|:n |0>4z^ Ns'H Xw7˷mUv^{L4[?29f"Ukww!;\|m7@3A GuoF%3~ldv?ÿ^#_j1zF=0M$vRBwfvukRx8~ 6veEMmv;uXo,jcFWMbXk%ޣvd'M}c,~v2ܿ7{3g"O]"n_]&,(r˿?}|w:W<3鑮vV%VQv$m[c|ۚ:o]ŭ6r}XEos6ߕHZW/㞓,U]1K޹eiM"I['Ws6իP&O^xFkqGڭV.nr/aYZ3Z7 fs$~Vc2y)JTi񧅧R/u%&w34H{n ס%̡6ʿzi:ejh_긪+V.iziѧt6_Q^K׿d#m.Um-~o>_Iπ<[R4Q. W*xGmOO|pu!I._lvZc7^a 5n2;^qk $ZS]ՙV8cɤe~_ZvWPj#fux4v>%k{C=]So8S"c1_Ӳ>+Z$o }^mbľ+MzBMFVY..ݮ$~qGZ:Ѽ3uo ё_1dfc۹ʵ+e27ʿ͹oIգ_ωMҗ%|4Ɵ|CKċOn.Y>snmۙW4 /q$y.VZ˴F!|\ލKuj։Y\5#[I3HVMmW\6SPOu4 ['wIo{eee$h#9=VM3Wx3>4bkVKsjk̋$Kqm3~|fa;qD7_wrAk&(_342q흕SXzǝ Sr*ǼcyzEmgT,,u\$H[h^&i$o,l~²|d>cyy mov,IKqeNq"Ʊƿ/W~oxt^.n{X|'x}=v=~E˷-WPFQOLI򪪭&V$e(~e!* 5e}O=ڻWuSF9uLSok6\I"vm$۷mUMa}mL4;kFigVUV8ci#_Hk7_!|Mo [qZmV`x}[aU&Q}a){ hzju65'5H#cvj̪36m~Neg5;DVh]6znݪ'ۧA7MӽQ\W2ƭc?Vտ}]+1 Bim~e[r ?*Еi{ǛṢtdޫIl-w֪|3L񷖭UdO~_ ts[QipꚭիJ *uM_om|jմOZuUkfKUc?-U|ɣOoܵ-i[ťDlcUݷܾv~mYBeTw߻ʏIFm*FĒn͵O _OZى0ef5Y>UYYw1+Zφ-o]oMu 9mɪ dfFQQx 3MҴ4pyo#ħ?l_RpY//|~nm4vn7&BBa[ś,y;I.5)&ܥǟGZ4R~mUfkB,CnC617ppvm?/\rGԿ/?oŭ1e{w[Bcb6glVo~m˻ A$^_w/$fݷߗ7?W?~7\_^jxZ(u7o+%.ʻYv]g?vvpy^E\M]~ݻwʿ]Q,Wo[;5s>ͱ0kӠ.4=桺UlhIoUۛ^2,>#tvzln\34,|uƾu?SYֵ ?m5w|lk>i/$cj:g~A{7o7[{Xm?&Ukḟ瘉#U/WG|AWMIﴭb6KI_/s]O#mݵVغ8|ܑ n<3bKC$+=˺OJ߱OsI4 xZ?&6wGs*m|/S~m j uٴU%4{_jᏎ5_Ŀo/ƺʳCF-7Een[mk32o*ԏ/׹4{IXw/+ޓ4~-My&gYa,߻fmw/WI/jZ˨xt5]GneF"|<~گj1#Ko4 =m<{VF|Y8Yt3QzG3ލe"~7y.wr [igj+Mwf5 0?kOga?k"kboPW..G_7ٴS0 FLu+;%9] _[XLRԬVUݕU~fY[]7_5($*sY~߷_zoچCHuֿ𘏕dXVkv۶8r{.%YF۶Ko+onnDvmVC k?~|rF|Bh49|HW/{ Auj>NUCJ8ok.Sgߵ ^!5KI4fiUOYMM:icU~i?W} j;LZ7sGOhyoxE񆃮_m͕ݍ,4 2ۿ* O|7Ծ0mm BUkilr+|fjNdY<9o m*qx T2+E[jGm=n{o,ǩB͛NfU6UܻWl5~=.[&cgo˟1_k'q^VVfe&VJcJŚVj]mz~7U[n__//H-nZ+7lM:150}?kM\oʞD1܋fʶʫWƅ͞@꿻]wW楫_jVmZ7SjdDo! NEUZ۵je_^}Gil(s3\/'/.xH5V[Xڿ7;Z3]W3EI'$u"tlj+7߻VVU~)&޳ltmkEkqe_1cK&%~eݲ6 qџ?n~V5wVuOY[,*fo3snj/}]<-~լo6sj+k뙖l;:CHM,D )Kݩxت}[>grxCot $o#Y[r2Hd3zp> ~,uZ#Qh[5WNy6+36ڬks 1gƳM:MAV_Yaor4{8mܿ5~Fx|7oRD-?`Eݡ5_me}~Uס%?wZ]V?|B]|9a2KhM[O/Fʸ̵}5`|1"),7ZiUͽJH,5RFYC. x#D?.;P-vihnI?U~ZXhGKKw۩ۯ"4{lnR.ZnO6}]ƟQk+д=BY~6%}3VɎEeZgmC'MRdw+^ծVV]M*ƿ2n\˿1\c%|3opxF-GN%seLډU4,?1U Cx2@7nmZ_-\+ymt{Z`U= V o65ݽ,ٛYZw h_>_wsk6_ K&!oe#巖͵Z˫`qWrRd/_h N h-4kVfK[vG̭һ~_4?oD[ZZIm9I#d ѳ+)_+: QRMʿzx>ay>R/o,#{>_ -|AW^yie%ޚeVFUݷܻ~Z?>4~kikz6c[x%,,s@sFfݷ_m~^/T<wWaՒeXZYeOo2>Z*eԽ){=Μ"XѣR>W q +njҴ՚D/^Con*mv]̵.Ԕ+Լ[Vdq8'چheVۺTx=;gt, q?-h/mFFwV8nf⫕O](|:={Vq Γir.fheݵ3|pajxz2zۧ6cƌΥ|G-IRcBY}bHv!t;෵vaRI#kHUv?zsMhx]tX-ĞdGi>_\>]H`gW*~ME9Pӣem*֖sp$R|謹\l-mV}|Kiдw+KB8WH5Ʈ.houz'->u崷S?yoZOxTKa=MZ-˻ru.'YHʿme2r߂5-}LҬEw&֟gQ3Gwn/̻[wޮ6= Rjxk+hRhqǧufafnbi7-t!hdUmYAm&ͪڭ3tmXՕe_/˵wdW+M_wNK+ 5;FHt4qhYkƝJ4yuV/x_i|7X֞(ul/.{un%2*HгL$hhV79x[SԴzW4kt*4kFi#+mUe_|ww s[MGWEУ!~snG{ffk+yjwmj/~XMy>۬ƫ;I3$"af_/|vvhU}vQa+J2=kඣk F;o#}Fom˹|Uڿ+|eYV}jx[V/l^(I&tѲo/smY[_cjTh)Zׄ;VE+yn6Yw7k/Z7'Ư;xE /ntyks ~Yy7 U)ۛfyKN8ߖZNxj]fQԯa4Uiii!ӭM\M_324q[{C i3_R}ZǼjjkmfqስNy!rǦ)cso4j F²B#|u*G5^Ru\ypL~[wG -*kLF8>k_X J3&=vyiF}5OZ6WbݹWۻG[cuԚM֚+ywmڻw֮Jwa 5 7,^FƢ65e̿.5;1tzQ:'w|){n  o?wn$YaUv,?{yC3}ߛ ˴|?rꍨ[_OUmMxZfot0ǸW??eoM xsEĴOy0 Z8y>w%Ċ|p_ഋEtQ5տo6x~Z1+Di&;W'ÏZU:Ԏӗ̎(Jy~ZΩkoL}yڠuO«5U~Ccfyx߷wI)mZY-ԭ7k.8eܛ| UZ_?a{}ד,j"n褑fUeY6nVYKTP|[ω>.)}WŚj -;M=ݼluV[wE:UiOH%TsKZ|KhE}cV[/U~v[]&͚5]/$E_| I|pOcVigڢ*sHm+µ"m{X\Yivm'?'o1oi[wޯgw/.Vd;7ףytLjxOH+ oc-Z\Jiڻ~mw欇Пw&}{tcB SN5}F[+wi"~nekmEiǘ5]:4oBv&RYx.R+]B噗rýORSD ?1^J/ՌqǥY.i%O6$j Vۙ_τo:ۿ <-ai4TK_V8O]xtq^å[$e5ϕ4SMkYٿ5VK-ەݻ֫mZkGi֗Z)V<5HgUkf{5cP꺔8[k/wʿymxգf "Fm3*M_wm%s#T1z^_ 4SG ۡUj˻w_+`sa/x"^FIuo[M{{}3Wwʻw+mZ_9wo3}eut>4W/;UFhGe*r<[ ? >ť_k7"OskG+^'޺i7,jmvkW9^}VݢsjWNҼWoI_fZxoQ_ Z.Zv餸oekzm-"\hz b*4q8Z}c վ|-h/+kqy%m2CQ!GsaӫFfK_ji>3͙Y&JC~ ~E|3Qhgy_ZI5Vg;BsKKG}{;D\JY3?eZ]iͨ%3,VvU"k~_#ɷWs/eV+_?TӖfmeGkfZ'WirNv(Jd,]zAGrVC6ᶫnV_L/-v[}Ֆ/?ډSIc_,{|ߚrx?ųu/٭bؿ/̿Um_Ck[+Ano-t~]d[j/&+@":D,&m̻vcK=qO&m%~+|rԒr)SڥnjJu꨿4[.o~_s5߆ {IV6oZX}ZGi:ڲC2$GeWofXNg< ? aqރ$h(Ee_*n}NUi![|iihX?e|G/_<)wxSTFc,UV:m3@3<ΊoE{wΤ0烴H-oqi=8n-"?{呡VYkټ)W[Gx7>DɚM@M῵t/j MuZ6,E'Ic6dž ^P+8"P*g#mYvȿ$rI|7 Z߽FG,r71VmomtG_4m6Z\ZC#}yk5ݿ^|J|;+/—]ǦI3oY$k]?%o˷ /:v9xvӤ:$R06Oo]³/|Zķo/ ]>!tۈ.E.fEi>'oϷv]5zU*ғĥ 5a);ύ^7V]bn 땚Kw],7m{=EgψZ_6Zkvl"YH~2j%xI/͏uL{ow|c6Hm%M(D⿇OB]Y$[cZI$l_ kZV(pſKyst6iaBmRb!ڬ pܵ&4(ީx{Öِa9=Z#~rElۣr/_5> _xC ?j^ŔjQ*]GY5mͶ5ff_?DR?cMTdFtο]ȑ­Xa8UnOz~|Y[[h'2-iom*%m2ׁMZd>ʕ:/Mnm*L:4qnj푤evoPmk_tjD,j%[46WhkFk+⧋4O֡;}GòMncFIkD+|^OƐ\鷚6ܪq=|Z8v*&ӏ7ML}^^^iړxaˉ, Yn5*-\.ՓiٷM&ݍWwƙg xj+/WYVH7={ >eŷ_WW'&MYmoڪFu7<9UA-r0Lnezu$Y=]}zZ'Տ?<2/f_v5F=΋̬۷/ʿ6֮Cq}R uQK!{qmClmuHkn/fxCsjqf[>ݭU۷2&#9r)qNњ^4IXEm.}6u fvoͷsmmt^{=Jh#ZEHWsmfڻ˯4i>XuC"o$i\lp|+.evr⧌|v>.2[F.%k}&Vٖ;F巙"7|<b=O._ح뻝^̂vղɻ>[,^:5|QkN]G>!8^[[Rm'˷rm_? "oj^2((|K=f[ogHFʬE]|kScB|4ٮ1+=lkmϳUU^/ ~znyť!UͶ:8dUoV]񿄥aYj-̚[G5yw ivw2ݭi86w%_x R{_ŤjRXkk2i#I!m_̻~jk%uoKYu(f]۾m{LZĺi  ˺5m̾cnm_XS#Ql i_kmk; emۚ?qdlw}衋P?%R_v"|,=;y>3x'F֯M-̳AoMW{|<۝_Tn]ݚrq4;5U{s|O[úZIZ̲G$ ?Uv+Hwycx5)vkiU|ٿm}e,4N<6WZ|ѧ#-Gź4?g_ֱe$HYc_ܴlc,[Unm-n=xH|3uhtv м34J ky1{kuZ7xw\%wY`7F̪̫cxkſ~ Oo|q=0GMvݎ(>Z0|M^sRUTNgnWKc˦h^fKuf*n76=qRFM*tW[VhaXnf@@ho k^3(6̐Xmۖն&ڬ8{{OS:zYQ'VJ,ʾfMTQ>og/Tu~W2k.Fė#HF^+M"s3y3Hmlx|+Ѵ9|=ZOաjtۈf5?;=&m$l+Wz&_Zj&ɨG崸~^&/0cZT$}ѦU QY^x\IrCgO[J_O0Mo6 G]U,$O7-|h][~z>\_kZD ijx֡ث49ᮿ֕Xǚ|hM5вZסKcy.a*,$23mRRj~7šeڮw<-ϒo2fڻmZik xֳCsm.IOmn;ym7ͬݑv xox2m5? Y}\k"~UݷwiV%Z8g ^Oe EK"ܫy*[~g˷k|yjv=3B?a6W]vs-I*+mfU~jnxR.^D֍]m[j{~oNK;A!,}<ҴjmhWoVZÿxjiĒKk Ւ]$Yǝ{h5r^$_l&XU[n߽[WդӟM \q2m-Z UYfV#n[z}usaj>[xZy.ߺ_Vyշ,#\:}ͷM_A|YgG*xIҭt7Q8-Zk)ei&V~*ͻYdҟ-L\sDf{~޵V{uXHϵW5[;{;y(V83U Iv7̿{rթ2Z挎e>\>g̬o/*^4QRgѥbfD$y]+,q2O9d+Ew#\F,r/ܿyvdo o| t/Is(^ +m;~Nk+VQ>9B2?>l>թE$oN—67iŸ ~0xgZcjFEuid$Q쪫,7ϰ;Y5^$7t h-<,7?'|Ͷ4+FE1f/,~!dx<_W~߆rۛ2}efV|6R7:!RVG ~Ŀ?4W6k{y0Gnc~v_Mq4 qq{jty"V<=uuk4qD;6˶M̻w;MM>Ky?ovi7WoѾZ嚽-NJ?)}s 5_k2'Rgnf] 5JmoBVmQM7Pgub?RΣ-Oyk&kv*i~[j qn%GU;he;OuGj`XMl$vCԯ+x_ç;LUjur5oWH:@m21KlrBFoU]xmN\G7(]g\pCyZOvowWȞ4o|KP?Iaġvm|msJ|Sqmc z ,?Ow7yAxT}I!&W_tXxZgh%_9Vo28feV*cc -me //~_j;ri[wH/_{7=Ym6_v9M{W\iPoMY&o57 no^ vM?oHtk[%q~pek+*|`KVkyp4ěj0B62yWٿ~8O xHm59aS5e[wܲmY[k|_\x꒳h#=Cn_EޠKK̈́}ۆ]"}oҾ&nڵv_&+;O !E=Zψvֿ_9{{xU"Ph`Ri2;yt$nYvmVUYfYfmѶݪ*xnTq*Tȫ/:|'iP>*Mrxʳ7̒ՖH[w37=lk&%.|\{iSkw^c3G {~{nCw.Ɖ+^Vu55ZHXUoGB.ۛj"zjMRqx mi2mF6՚ۛwM{y_?JS4M?ۣ>,u/Z >pA?X'^mV%O/ *[p ڲymC7]ok/uMBKnukf]EF"f_28[iF]ͶFVB/e=-dkY˚_lGW8žie+gπ|QMΎOQ}ߕ_ ܳiFd*\" *Y H$uwAq$x~Ա24)ݹYV]jf*̭'6[ve&VV/ޯ>OGJPeï׺MװiQ\Gw77B̭5^5PH]KMloZ9EVa5fvm 7ʧ{H/O'FQOZAqj F/2}MFtFn^%ZF!MoԬ4u}BMv͵Y)deo"EH(YF<|eo.MU^-f#v6+nU֟g݅E<'Ѱo:;K#d#kqO'̿EF&W0w6.پӻSF{qÿj{y|SNN/,|^SE<2>X捣_Onߙ[_]H3,+mU?ݯx7Fxwi݌|nLf.Y _7Y?zmo_m}}mKڲVZ:%xRr3|o-Li[|UV/zo675aCnYVfq/_Wmrw|(a M$^O٤E|W|˶i|?oJ(nd̷?m_UR(st{Mn)V0VE}2]s롉oV(5 Z7mv*|okXUj1uV}ceP9Ya&khr>ɯu<[dUX'w6ovxJD2Cd_ܿy>=M𕷇JKd㷴IcU_O\g~#rY蛤I7wR3Nq:ͪ.~o ~ڮ>(E4'[6o/|Go[fiu'ͺof𲬋3V%޽jĚt fܲw֯Wuxb].zZk7ͷoY/2mr&>'> xP[/j0ɧjOw*lvnY[V v n; Xx$.둶Oi7Fd,37&vO|I]C4s\گlk6ooVZ'4oᶳᛯjWZIm1DfUX$L+7\X9Fk|@dYUo˵ެ˟+s% 谂=xRYG2y_e|j|YCu4U9u3λ6n]u 7w2w`_ [+46qh^֓·k.o3f[kZIFz99-4?xs]Agy0K>a2Y$yYUګ}O⿎|MIx7Ma nhci!*#F˹~UĿBu\KIigmytvy2 ȫ6m#*kb?]ۥ5aYoq˺FkYUmۗjW] ڮ_?/'0Q>x@f ~_Bm$qJVi6*y/ ]Z~&WJZ[{mMy:HYUUYoO.m|-6k|BY6R@to俊KesocwG2*/ꚵ<:b}68 #foifӦqG7o,wʻk:Ѹ~#t&iw&"V{hrwB-o ]S)ǜ|}e'e犯u3J*PrX_^ǦjSHzC$2I4,%|:RCeu]ī{}̭k"Uej 47KӼ5qy:t.ti>-ŷfbgm'QY||j_[6Z>ͨs/m:\uIi[NoV^[Zաx%Ȯh"[r?{ޯާ=7>o"m%_~__[|*lxefFkz_&7t[K] N%Yɻh͵Ywmo" s>YQ4iOT5o*{О#-c^ ,k{ekfT,/337ܪYk죊2q}bκq7,ߊLzW[ABڴכoU4onпU_ ҵMYkz!ɴ7s_2I[o.Xvc߄$4MZ h,,.\ l4k #t:ɺ8~]ە3xesԥ_wCfn=j,->fVX]+}G牾h^[xmBi--VeYWv_U6ei>4To#Ek,4ic_jxGjWrxn oT;WQ`ky-wmVejZe1屄cjstG[o6Yw,{f4~95֡[QAhe=Uf뿳7߁sc_UkKXʬ\CCBwm6wWO{ |Eyvn۷_z7?~x/#1u8 m|I#LΩG;;cRIv~U~V^߈u]z"-> JU3:okhOx~K%նd d>싶;~2MەZFtMqtKieh>N/'ڿz:|ܢ߲}.mt=#YnHG"ŖM)k mžOGgiZMjoc ̿?d 3^ !ɼلKyxֲCw#nNڻZF_wjScc8|Gw#\Edyz18۹/T~~nbNP?\tD.'z7Aʻ{˵W-zI7U(w\KFۼf~ٯſޣ“irk2SxcO-FYʿ2v%Ov]Ѵ˵vbIYeܲ3y{v2}*G<^o kQ֭/<_[^XB$mN`Jȿ2/|U]? Ėج<ͷ~x^Z՜-sZ߻UZ{ߠCbt$:*Ghy˷6XojodMIg,>_|0q]PҴ!$Kn_1Uor7m-WNd,1IU[vW_o./H-no36{w|ܱlke51$1G9r7v۷j`A a?/H+fB#~Y>m>_k|SVi"gcr3}WeҶ?'l${mʬnTcoxg/ y[6[y#6dMiҏZ]/"~_.EfZ?<%❿mqm|5⋝UV=Wcm2,53xޛΌ{_Br*,|]B*.'|Hu_v-6vSZĪ]ֻ~Ko1Hɚ?9>Uu+ZIG5>I$+n?;b,̵Wj)_|94.[ w#1HGɻlzmy?,jj(?ex#_o%N$1ɹYt1̱vL{hUuu0(K7 cR]ia6jhV#yWѲ\̻WkFk,~;xǃ{#G/B#feKqlrͷs6-|3i.tKTM rshۣ#[s+(oiD9Ӭ_mcA vy6o*kUi!f\noUף<HWe˭o,m~#^ѥm kijΆAe47ݯ_\|"aj #kFĐeox\-VKXhq__r\>۟=c|4ѳmi#$jjL| ukϲFm"ZC{rvVo*oVO4iԳFݻkz (a*Rk=oQMak4VyEYqrM/s7$U,;kᏍmwmo5u=׈R04v-1y_~7ͺfǾZR2H{2m.%Z~x(e5mUlڒ3ywjZOػhy͹7nyXaK/XDhYY~Vw_< /:hV,~utk­I,ywYUe$5ofԦѴd7:|^Vhd:w,ԵtM:Qn.9Y|Xʌ?z|A5ŅĻ-&Heo$䍣[@|}w+PM_[xj> Ce6 ~Z!ּaQKkvM,_|6*"85T6Oyr*教ۙCsV4IsX.yw^ɅbM'bUvof^}#SWViZI4QIFmvEY?m7~ v:.V;lt4pUfY?r.ߗcƲX,@4{Yf|w.;y6_w+n5m*/Kg捹e#ˮd],{3~VjtP}Lmۙji3v&H[mW߈WZ;k.wϛw̻:|7QmWp颹?}kcf8fcUo.OIXX.﮼7ok*I$o)m$ڱU[+ -\𷇬4Z࿰^G@$q]CwַUl'˵~^wZioN50.e]ֻ~VWw7cs :I 5n^c˾+~v=ǰcy,js5[vsy[j^(~u&4nUUy'͵4Vd_ޯ]?-4LL,-*;)K+Z}O{q&,?x$~_!۶=ѷݓk}rE{҉xcQԾ#jL5z<#/ݒO5Wvڬʫ|5}AWdQhkݪγy~+mݷ2|zV}v6[inm[kdf]*ݷ_&Z G +ٴU$c[9o/w7 +4bM u=344o EV^/μcFotvt<  XS^M5:A zuIm6imm|}cž.Ҵ9|'2Vz$|#ym;cf%Uj3kßx6g='7Av7S]yݺjjv]Nqq:MÐ7JD v!yF*mmW4/iψE൴|7IJ^ݯ7Fc捾hzo7}ζt KY[S~+ImkS %?IA ~Qa_;ZPF.q*LudUY~Ws|y L^PFMѓ[||97* ɵ|g'ZUՍ/ Va47]7ʑ;G=ʹ6ਬ>jo?ixoÓinw%9d =~ve[Y\r~3XUW9m7=58R\>i/k-~/|1Al_3jUګ_hK5HΙpt;|-wG6VګI|z~,)K*I{siEߓ6m]޻n|ywoY-ψ-fխtO\G7V4^a]\ksy+2eoFtS>jo8Uou(%^ .w U]I/Xo˹ݮSZέM&h4ػ|H7Vտ?/ʵ~׍jr,o\íE7f c_%~֯HߴN\^GE<5Ufo]wڿ-{Y$:] ӌ#"}m+\ѭuM*ɦ[/ Mm,Kۙݲ6fS;M}0ZXǧOss+4>sM/UU_ݺ 6qjzCy2";w5\᧌Gh wmiכ*nmk1ucD1i3i ã?-o&hVOo1[oV/C&4hh[U~mͿ|4;I62>avf{m-վUߕ=3-p~1~ϦH<:umf-k7~omyΕ)rCm?!ҖW2I*/˵ > pX#VFӭ!Vڳm_Woݯ|3/tVNV[Kk;-YZ?3o*'~} Л^itgңO8WNO:=|̱۳|Wn䘥Y6{ċ+oZX-^#?5_ x[VM.M՚iٮ~ ?gܲ7|Y~_hvǿP!]~,^,'6patuo/+m]hnOZՍfrm}u >!OGhn]4j͵W{iw]yګ%ynZ\ s+/?ޮ>Hğ=Si<{{{fY[\KEؾb32$mmSxSDqwo=Ϋev5_ahzމʏgg{ 36E]nocm5,@\&Uݮz< 5ٛU'V㮏 q$+df5O6k4o5 Zk+kymfUῺzxfJMSZKٻ.ZKWk7s{vzϊ"#Hׯ"kܨz4qjb]i3'݁vKw v;Rټ,|]R|c>Z[G"2~]{w*j4s*٩5u_Ȧfm쯹UW_ݭ}P=WNni K}xWj73}e_Wvҁfi!mʿwk\~,9eo~j|k=Y Ǣ4 IXf?[\yrCrGOݳGW^/xJ/ƓnֳkuhQ+yr5e{kmuV{tvkӼQeu.ޥ, kaO3UmUmW9+ZhH$vQHҧ>[j{b;ŤiQxuVO5a[s˷v]E]-i eE6o{7H i$_fGdk,)ᇌ]_+C{5Ϋγ4jZdm[ͻUu_!s[j,u<6xv}FR/ % Sv6[us iԮܪ[I ޞmwѮe?e)|'ʵ;p#52ykWbc'#l'V?vΗ{n2[viV5WVgY~jw~aXxx+f6|>VowWki:FiscmReG$[U44,UYZ^$3K uuX7!Vm5|=+xGwNJndkWWt#6kxd|`Ŀͨxŗ>'֭Feګ]k'᷀7ΞZml]2֮V Ys:]I$ն F|ܤyvʯr67XmtVwvo/O*?8du[{#:K gfnams:͎vmM 0+}kuzșFFn|,켭2F$4&4M(_d'VZl-YnHnłp: nڴC#wpVگݬN$]˸m Cy}6gAr?h$WoW s754L/kTt(-c_;ȞHMf"{I|t$΃_ƓkF.nj{R6,%eO6_~׿,/t%d~'۵doWr7i^IcX>GnfKK.u~o SwGc ]|*S/"ՎWUᙤH^Zki!\[ƛ/c]_T7'W6 U~7$fhFXw/^+ş]wFP6ⓧU[|ai5eVe۹velϊ5>,U_hK45ݕ?downVf~qMЮ 7!uy^SXޛ ݞw +,j߻"&EIks(҄,}}W ö!FòˎEm9 +mmWkʵONmIݦ%IFw |0wnUݮ{h?'־ Ԟo.Ngۺ8~nXUw4M_6^N.#kk9 U)6۾foo-[atq6GJ>¿wHJ/۴[V̷YVVdy/ު<%[:!y*9!XOeiVh]ʪw ǥum`#ɦhb \qIn6ٱߛk3ǰ~`VK<612,Rmf[ەZ nhbLf$I" cjʿ\ռeˋV}8KIwu+_mXvf:{/0X> 7 Y(3VNk{i$Y6Ʈ'jV{?֕{an+&[,0{;YdđKd$bw"x_þ%/4iZǘY᧶[}uVy9o2e Φ O嬞W߻6nmW|;%:m|Sxdi׷ͨi+,"=xʮ/|~ xXditLw67UIH_-ZI#ʂ[h^wA G?gC>{pZSmLY]G\6kqY |.> ^*ZCOo4sL 223IeW/ |u Q{[M[QO}ܒI$rj2B3[ݵ~i~fj}ϋnxochr][<>n9{KEe-,e^.I_.vG|eQk NzX{]rmwV[U]$k#p3Ol$Fo,ho-nno.hdYckGZuDtfqFEG}]gZmU?RSGNJ,t;ndx՛̆8,2yWw crTwuƔ̏?dO؛\Yzgv,H_UZ?V ?\ZXEq?+Z#im3*W_:>=jV㼶;/ h++|~V8'_u~Jizf4]+Ii%f?_~Z8vR:cXo_?Xn=/cOk<~~m *ѫnͶ/Eo>-:O*d|vWm|Ov}sT$h-4Xfeݷjۿj|O?c)Q^gjMc?hiy巗voZ4R'=Zm ux4[hV{ۉft7岳n}esm>4i g|Y-ܒOZ,p,t_2oUׂ>mN}o?2F_1cvʭ~me贘?jhlZUӆveس3|̫v*UycpI{NJZDZ|72¥ommZ{t\BH`U%V+nn>j]kSi%[{Vv߽fޯ> >(Z\s$֐"ɹs6k W?dյKj7Wζ 9UUv]m6קNJ~݌.wCV Z@̒Ȋw[beUl/ ۫XO)l,mUSUfPԵ?ӥ&f8co!&UӾ`i󕤏vo{T<0Mw㻆$r.fzK?D1â&LK_[.M },fY$,gR$K>mWfԶTbt7n:[=IJ]j3AeF̪woU͍3[y65X~iobh'eE&]+7٭[.|RXFuݬ[季_t,H<Y~m.WwgH>U^MPǕ^&o*ߚ6_ 'Rtq7h>4L}(I%g_fj758[r5 |µ߇F*ko}>"|<񯈣\j> bW,KInHf]橧6iN<~̟^_񵆢Mc+ʪVM|VVµOvvw^^-awKWjއtK{mVۻk2%x玼e>dgѥ)DhI#ol+y 'F_'[ּ/iS}D!6+S6<< cK2MMHok;jK=[z]w6RMe(Fdl0UI7čC⿆!|] M{UYT{$PH'Z6ݷr˵o OZ+][—JVs+H^I 2<42z2wn2,*db1Q/wH_M<eI!UUmb+}ݶxmrkƷS6Tʫk{vwwX)|CiemVSs}X>@"nUSڄq7w7Qp6r~MkPqQ9 |_Y5$K>)hVom`U#}Qo0J7@W~XmOӄ[sv#r2V xv~36>^^-۴~dHʟ]~jf)T3r%\3?ݷe/ cY@|m_/*A⏈|9 xmP(7'MylA-{udOXim{:>&mUooP)c|`ºǀu7[ <|omYV-Me1%ߒz ~?Lxkƽ;"GEliZՎnmW><[ou5 ]Jm@Rͽhq&G "/ŝ\OO×:QGKil;!eW4;YV,ukeo#IoqgITh핈o'k+mZ>OvFR7chcMR[9nV+3I'"ɶfQjw^KKxKnX]t隕^!o XM_M,Mo>*\Jw.ͭ\'{_i&bKdbߒUn1VDJ_e G'͞xmv(aqqi Mm1C2,\Lm#u?iEՍs$޾Vγia.wKil ow>8%ǭ>Xt _Oxdo7He rLVMd:ƴ#+쏘-]Ϯkm^w(2X=͵cXuj]6;e]ۿޭ/>'It_II{VX=+MVEY~s4q5ՂEBCyOWT/梯[|~~{5/g.o) { ?}}W׮% 26$uk;|]cJ' I~Ŧrԏ>;yt-.-"RM.ktru_="/&xgYӛ7Z$w'6vS7Mk%Il*MGyGIkOjk^KȶoO&6?[_K*k_j7 چG{W7鬷ӧ2Di-WeHYhTjlvxvwK6յj?wM#~OLRI|c|0iZ|kxI|dڪWEO Oiˮq*ikrXK,72O:U$Dupm[EOΟSخ>.|(k:Wo-۲ "7.˻oCYѭM̐Kݘcvߛ-*vg iHQ(Ni5=HV^ug>sZ6Lp-ws(kW[.MǗko$km$s,\mi'.335p|]nŚqvdNmM#HۖfϖoVܻZO9qs֛އNշfM޻u4j-H{+Km/-uA%,krɵ[ݷ^$ִAdr:ea6c̍[!]qi .BͶbn.Ziݻ |ܮU[n՗{k[$-67|nhaEvz^o/w'?*&civnHRO3j2+eZ?jͻvչ{6x^hRGfyGVo1t1K[V^>ab{˭A@?0ɵW_fx{ĚW+j:-ƗB\mexo.^7($=yQgOYu/x[si~$m9Y[ɸSyдk$[4qo3rޒ|5Q_xZymզ[bUdX܋34T2Y~oe>-&_ځ[(`H'g6<+}C^/xP}犼16o1+BmkvfV_iLo PZVҫ"ͻv7>ZV_ |qcizޭbFV1yE s[ٶo9c1ģ+F_'?~5߄ -/Zakyx,5NfmOߙ>ݿ<a !)<3h%$}ZhlkAYYvɵ[uyUu?z|&i|E]! -โH-NKgs|&V5yy;xසh<}PK4Ag'Kon۷ef۴ׄ>VmY%*+9Q"yTIvĿҚELWڽmcmh!U"{fZ㨢#e/œu9_t>3}?-|O ۵YHb5bUfjd:> 5 t+uw[!hᑤo0/>_|9'ċBZG.x!Pl{v߻Z/eE'-坮u)I%uO&m_\k a??ѤF?9okv?$Xz7< ߮÷2OCp#*'r;Yeoe_ mu٪iW:Փ}kk%Egdo&I u(*M_[Ϣid?eo Rޯk.mw;T,ͪ+|㞃σ|E/m4xnӴm>FّwCu^6],jrx%ԯչӤΒn ,lu5~f(Cc]ůcǶ-OX/#m.Pn<̍r8RsGmzӂO'ayP|EVa6epjz5HnmWI ʬ̿*3-?Xz[UNk/5hRyfsĿm]c/Z? | G$G4ەo/PjaVG/ݑd]]χ߱׍5o 1]zi-5:CyOs ,knFѳ|۶`N%ON|mVjE^3֯qseki1f˶+3IIw*<3CSc_Ǥݭ\I+_/j*F2ɵU~oHm~<_W:Ou y1[ JKX-ټW'ٷ|Y{1i27i m>''ެ̳~.m˷sW_s:GyWt[u?j֋s4zvrɵ /,۾]i=sJٯU|顎IYvݮemۛk*mͧ&Eվ3ybxѪY7B|ϙwnfW߀5G-&mv/=FsnK|-UafYYWjו:R<Í*&?,dڥp٤Yw,̭߼7WY'_[[}mR~mT߻s|?{ma7$ٵyomo"ڊG+mUo-ZG+1wV?>!iZ|m8զUwM^SXP , Փ_UoJ֐˵ZM˷v^c纞/%M]J0? ) 7*|?^;~5nvv=֩e,/Ԭ]i>1_.3Z,9޹_]v]F0Z)[VMZ lY|7Xs̀Gcuά%e.[kmOUEcmxs/dq^Bմyya9۷! >oυg;G<ӉRɚK_zmŞ,_L$s,hl#\͓f]s:.9f!tnu刂[Km/d Sn4O># Km;^MB+{n7Fڮ|->+~s,M #i7"\]JHėYop&n~+xP~* zkcHeIrasnfr$*Tlu]ğReOt!ݷn̹VeV<*~tP/MO?ܵm^V|j)B(ȏ41ʿyEo2yw·[k'Ps}<[)VXj ̻</nYv곣j"eج.~?xo٫9_ë\̶ͦEDŽui 5w+'oKԮmp\}(&o6Z1= gIeѴ9mi{:CċԊӤ~Oݓ*ԟ&<'_Y1M6 MpAmyYv׹|e߅w(jU'Ѯ$y%Xdݱ2ɷky{}e& _}k}iݹm#,qH͸y%ܒ^t.1>af-Ӯ9-`eo}O=[OմOxu$k{¥Wt~d,Voj-Rci>ƚ~G^xWcVnݱL4ǻ?d{o~A ÿm+"g}9n燼A_Iڞ$nKeovYnꟛm٣dž{gĭVDЯ(.Xq*jeuCk"|/m|Yi~ɥ6WzxH#$6<7A/eMRY74z'9V+\nUo`=g(K2ARU~VxZ&-ާwmu w3yCj4,x߃ oK^i;iw)oqk6߼+FU|r/|kxI.ۖ {ffwJ~UX~f۷+-y[hZky0KmxceeV%'EsX0>?5W#7]F;Nh׊lVI6hwXmۗώ.|>Úți/d8d6ͤfdj4k6ݬ̭t_?g0KS⏍e4^0i7nmHLͺLG']ɷsk!u_ٛZmsxZn$]&v [YIȭZy>VܬLcy}+_;%h[S柋_s _sO5}h4ڍucgi7]ۛZU~jMr/53.cIq+2έ䪶>`Of{o MZXo/Ailfoo g$M2sxohޑx6pK3?#h`c#G:I; oo_>%nZI5MB9HmhԪ9ܻ~ZP!׭ʧNqϠ5_ymmr=n ]cӮ,d qo$,߼_29Ymv۪ o_|۠hw6- Cew}G2M>2ƻkVGdڹ-YYao0mվ>^hzdziV;ȉV2 R) vۃ7˖}fu(_t֣QfZ=4Oh'3X/Ee2F:#߄(.[>'y=HxLwjey-tj˹fEѭ|5Ƭ˫wN{[m۫oi k3G> -x*T=W]kٖfBGn/]Pd._ge9+/Ǿ#oVz'' {Ojl7#ivS6ܣe|c~|I_4=;R֣k=O,pXVDeV\^ԊT[+G2V_]\g-M<_xƺ燮./YmfYyIf8YtF4*-R,z O:ߊ|.Rִ%bmkLXglBXMz̐ǻm.ٙkn| ĚΥᗸO°ѣ3G5܋EhXٚ6~}k~9to>?iӂݦlUǟl&>9əUWtl˹Xx_?3ԄFa﯑_~:kNUΙ}$oDZ5\~v[wݺB_ûڕyMeevk,V{$zdj9xgN;saeeVfZGD2|>"Ϗ|P^k}kQ:|wN_ʵ~é]5޳\3,1.ۿ*~o3X}U.8<cWum[&lڌzګ*oW]?hkǷ7,/yso<MouIJ{Uaa(UfR&چ}.2Deov?~Uagi,RedLUu>lggldU(woz#g?56v/%IZO25pdk+muoݯBmBTƁ;HJ\k5_[5y_ubJwlm[7Se ڧBycM\YSZ2 UBXǩYOgyde__o^q`V ;>Sml3gvɧXغO}̫#z< 7y>互(Օ䐫 c_~]hWlYJV>髦|2𮥩%{BƲ-\fMnZݲ5qix].xw-DgUUhi._wmR6 [ݭhzV.7*іe]\커Vۻfw #5=VFuv[N;͇kfFmͺmt'fM[H)dfɑ|߻WvՏ5yW_zy4 Ԅk|HT.1yk~[n֮sWqr(-(\_6~_.ݕ˻TVusD X፤mɿG{yK-㷖i[e\ ylM}NYHYweO~ߞ\>O'c[S:~l׷ ۴۹vgv]f 4ojП]X cn2GUP]Ɓ/Gko[Q6RmbOH]?hG[snZ6Nҿ#|>$:~ Qg7YM.qM4EL:6&%Y>a:*;m~xO|L"f tF9#cfUvVI_OGHn[R帐;ngmϹm_k<>Z.iy7/)_F8XG^fk|aIԾ9񇎼&_`-n$Ue?%T3ni>UojP[[/t]v_x7Vt'N?ӕdd[v̬_+ 4,} "K{Pyt΂4Nua}h$cpD rLf\񐊝nV'/.^:)JZGZ֏[ᇊ-=<9i=<7fur+~m]^o|=n/4rѭ d0q$;W欞џ3u#]~jgxBm>f/ǏuK_xMbÖ6;Oaƿ/F۲m>![mjIM`ۍB}uk{vWUeU+kE]RFn? Cyyoᛟ([\d׆t=:nVkkmk /_Z_my84۟F]Vooxn,0QgkvdʊsbxŴ71VgG4軙wnj7 kᅯ5+-sp Xi$yMo2../tZ,g"gc1x%Q$mrHw/*2u_BDki3iwچ=gylZM:oGov7+/~m؞j饗JteYyDx>&>ŮK]+LDY-qVmrmUdnW?ssj6Z nD,l6O2 !o/̬^#jqNx>Oך7+*ɳ|ϗc5~_~ xO߁2Fݤ:҇8Yc ۻWg-y22C2&Feσ7]d( +k'>ɷmgyn#~$Y?O65JUEY#{|UvcӭG-EUkwcaF. o_(}ݻ|La|A+,2]Uۇ9Lb=QwZXZ惧h3Z(Tfͻ٫ZOdc}2&'~i'H[]&x &K&!|]7 S^E\2W컾~~ʾ5eŚ*\E}̿ZXI}(!~tz/ch&;4f6ĭ_e1xw~#7ĩx'5thd 6֎nZxgf9-'f[gr;XIfտ嚷_O/?~ Qߋ<_xxSQ̷|kIV[}:KXa /3.T$j<ǜxH7C} O5_jvzyӬog(٭h_1K6_~e ;OB 2=UXU?-]_6>B< ?WjK8ѵ[kg]ak;- ²$m4>WߴÑh~xz$bԢ=C3G#Fu*ѳ.q[&IB>Z~{ac>_{>v/_Y.xvEn_%ô,q6_woxO-IYHdZ\-=m$ۺl}ön^tso|.ޟj.0.bZ#ۛ=bW/eubBN_7{7<Qu=7L cxI sI4x@5 [nX~yVMy~c}ɳ\^ELG}7q[edUG\vzNi9>_hHwWsQN #i/|OZcwXWM&SŶ:7c3n#6W·?oiwN[_@o֣twwsU5>iyDZ{U zSKfvg|>czNwPzɰm$ .򴌱ȭ~o񗆴OKom7UӭKVFXd#2m\V?jH&q+kio)EC6}8ݵW]¾ ψ_kwc@`n/ZI7n}ߛ\)W'~ ݧxNWZk7TRk6;_\i[嬶lǗ'/mѷhR^6`26G]ɹO;@ϣoPu\i+])mWFߙvm5h.m.xkZ_nngn56Ws>Ro*~>ζ֥w>eڷ'UCWGJ ɩ^HXTT %mF.ﺣӒ|duk4&m/)0Gio8cXV~U_om8o_ ˣjׅ|aj^l0eYmǖ~]רew '-r}3ğ2ܿDnjۥ|ٛfオ=mֳkqyQȈd*\No6w oޯbߗRt$%EԤ-CPX$X并Xdro nO۾m0ߚ7gAѾ!xCP O<#Sni_⯆x7UzzLDۣKk&ryl %_DMVX$ܢM EE;5Eeo5Z+FsZUy~#| ehd{֥M&{xD6g y&+2[oݬ?|J Wž3sZYI8wy;Geeoڻ~SiϠ] WP\r >JHd^fi$h֍AZ7?~ͽO #m-wnMU-vݻ8Ҩw(x4hV+.9"2E4>eϘ7ʻW7^W?=7 .%iƓ}syʴk[||~,kjq^?m|9FokSXge-G-YImw)^zmb[k{i{O3ݐ3w|3ߺ7wqjZ_]1# 4~wK{㯉xh,o/2|PHߕC{O߱n8_{n_ʒ];Vuni_;,\^3F:|%5;"O\Q;;}4](eOqv?^SVźxE,,W'݄{"YVrkQVRu]ڿv4hr+BxD=MŚ=ߓI{k}f;Ƹe_9VVfo.Y7WOچOucW!Gu"t;f/;xY<}Zbk-4RwSˍa<q[ȱ\E;k*\~9^> =2 {>@ɘՊ3|1w/{b5Om|.d..ZEY&IwIկ5}\t7yH:ȂmA3}ߗ7ʕ+Zd׋}k'1Ks;L.6H4e(~~>*2_~ӟǀ{I~!xS[iI0ԦhdVݶ8ݭUUVe|!+O ]x tb/ř!Hs6$5v75}~*jzw𥎏flUvyӬGYbh~C[;Mv:Nn*ijI~fm26߽^e\gS~?R~Eϋgiڷ+r:#KxJk*ao:i}"i7˻b¿|m{T׵Eb]-9/U;ui?}ZI6m̫#GV/5K |IS*ү/h .cLG_ݻX[k>^|64tntX\\ɨh v6\J̆c˶5Y![Igy]JUUi{zzi:pu9Cau/~>|M.te5am7_[w7ۗi&>D©9ݷuv;V\x>i"cnS攤zw>4奕ΰh*q#mm6ݿ}|˪u=ef]ۗmz+/  xwVuvcȳF/ۙY[+&f}֊kfo7wWd)_  +n6Yo*=]ZiM-is.S< s/>ՖIʍWw˵{PO;>i~fOoT뺗K}RK&ەUUWZ/;iQ[AWfgۦF;T6^E%f֬ÜKqN4+w_.]ngwo+EmmYΓ)lTo粸JnFݒ2ͻ6>xv]z+tY_/bfo׸xf #Č"߆:msw=<2zH.|ekOQ4M#ˍ$1P3:#?wu`y)WТԮ?!6ڢFW0 $H[2bvX٦ju SNW[&UGvfdVU]۾f-syyDwm_oOU1'/xeEGof{3 #UBU3MS]ER SLm",Ij_5ΫyK#VC-b]ѴU K[kD{ m~j(/՟0[F۷S#~k'ů;kgoBnӳv??*Ej:vdUŷˎO3Ʊ~Z<:o5!R2,^K\Hw͹~]⟪x{PҬYӣ.Z02ۿݬgO_xax h|uC'4K6fjw{9mY\^Dxrd̖V|{Ni%o2Fƿuostb±wSM4y#38]:o^ {1"ۛ_V61mmV~%f6) 0WfUn~w|ZQjEWXwƫo ~ԟ-wG ~{W| 񏆼3ů.4cf9#d5_7+fگ_/zouSo.EV7^?OY3O~4kWK5!9saϗU"YXzvmhֻϼc(Ѽ;맅x~ x[,.-FE6,3n_ί/YE퇅tW:.iADmXHn~VXU-~oҿh_Q^!ޚ#Xb;$hUv`[}wG˶|cS>;Gǎ8#|<~g<4_i i#75t TLFolo*y~smm۶jZS񖪚!_RףDEZ|b'7_yfE^=N֒kY.-̱Uxt%}@]k6oAqw>'۳HH/̭'-ͭ*֣(8їVPk T D~bUU|#]|>%(_YmlYE"Y $˶5ve_UY;ku3Þ!II[%*qپuw/Ih^ZmIaojaLoяڬT(Sfy|$ZOqi/$\WiiD7o&maYs&M;[UZKj|;DkZFUn!vI#*+2̵\9kxčc(+A55y! ɹY2V_+/ xk-ox׷nu>;MP}*̿E*|ܲ_k^*qF.~G1E BALOeY\*jZóOnAդA~fʿIK+g^:wíC?62EW1'~-VMuvz1<+imy~~~:O6h*~_#a#gAkKn,%Vow|_L448{$ɚ=WNݣ$V܋n/ޯܯ~ŵ;Vu^ݫA|;ωu }T.v K&,Ӵ1OMkyYđH[,\fKZ45-ywC|?yMV/>'6.%Ⲹ6kpȓY(,fU]͹˼5~!x᮳[_FYb]̔?z'™'隧ZW\Mq*i 7!˓oʿ,mG_h{ZЌeOR-ſo9xN^YX6uj4xki.;j[w̬˵p#FK)'?6n-١[+vݤ]*Y~\%]z-B["lk%ރ\_$ۚFm6Ʋma>.tjmvau]Bim/&~ooީѺOJxA"hVu)PZ{X/ n  6VEgܻ|͡~ʿ{׈n,|%i=Yktnﶫ.ֆ]U~_s~0ZCiWsm% 7#EVUorLOʋCZj_-=dVc; 煹o3lwFۗf4/];=N)icrw[_sx?f//P )\[ܲ3y~o_>|E1/ߵo!kin&ft;granVW阺n>7 xSYL q4rW<*3߾=̪˶O6Zmo:<^Ѵ]t:٭uQq<+qey{jnR<=}G[+i#畧E"ȭ2ղ>S =V Ke;֍hնܿݹkͅI(r"duO\xgY$_﬘KcUvY8ݛnܶߘw}}Y ń~ #X,.uwIRU|a`r2ڨ͹籴s m'?USj)*fy/Ş)a,)jhyťFayel 7 w մmچ.|fZ>>eS|X_>x٤AF,mD̻Qnhj7=KAxc\Oza}E]dVٗlmF.zW%%c_^8 9.tɥ"@$&EvTnOvWma~IhY-܃qCfb+M zƑKxݵ-4%YeU,ʫFVo~ ſ1<9 ?67|~׹̰>ڟqU4=_Q(v^.'f>fg4no}eeO .qgdmJӇV"ËLvgƟ{OgmrwLffX{V)t}UZK|KGKKAt+X#`]9&Koe_(լjG?">Ҵ[}R4d$wqm!;ryĻM_7} P>]ܐ\[f_~fvk)g/ |?R{޷+.5 i$Tmi3UP/"t_ kOKkΫi\mi%\ 7ق H6IUd%Ro2H㑋324j~>>: ^=k84]Ojfcv|aqu)NoEJ4/<TODuM>y)-cV{8!K~mM6/o̻khoioiwZt;dIoy̫ѯ u}AMš|7{g>2]<}ɫ]K2,j'˹?,_TxT&7Zi%C-͕m\s[zV23r/XwU>閤2 +y{wޯ\u>>k[2兲[^١VY/ʻYwn~"mvXWBֻy ̻~~o+|/繷9Kv[.Ee(YB*G?RGh 9W[zmS&!/-Qm,w 24{v7wnYkζzw$M.,dH7YqG%F4+CVUm3o1&eo)a|3h<u{OG<:'mf摷n"|{寜OesjayOfEahX(...cH2ѣ,ge۷!5{Ʊ8hmOi_y%7 3嵜K/+gmb-b]=YZK$sH7Mw5X(Ncc$mxyK+yYYcu7ւ躍p[i]+^H:mIWCZK$ZjthZI,jD/ݛ]-cxW4{VZf4$|˷kׇI=J:v#msC4{U]meUܭ?/z֍ZNծ%$G,K+yֻ۷Z*[ό47ëæhDvh) yQ4VUvYᾧcQJ 7/]H,sH6[|4j6önށx_x~UԴ{v-q"ƭ 2j]ռq*\7csÿ6d&}*Ou[{gfGd3VpuyO4|T4j:fw h]F%loB|̻[? }#þ+^WSje3ifDnU rou<7ZO7!J =ϰƙ]gH ϶칵iޓ5m[6#UFU1P(G mݷVgh}K-?cB~?? |gjt7XӤiI?լk~Vf_^WxFexWt(u/ʃI`ڰǷs3/}| VQ~?Z4;S& hv3;138_iZ5׶m,ZvњcXHY>؜2oGg馋{Yym֘/Dͷn/Kwݭ=GᾭOϡ|)a[TX(յ[h.eo6Fݻk<7k'W[-Lo'Y-ۖ3#/ 2d_h%ŨxA7vGg,d}"5F[t2}]Y~U9T<-Iro}1/8[Yzփ~e5IfTVFo9afefsylv֯*ִ xXuV w_c9%ds4l7+2nU׉Jv6}WùVMg&eVVm̿5| :Ai H7_S™|teJhܶ.f nZ c+Y]ܫϓpnb_`إC7~j\ysS,Q:c?ngn|m"i~4tExrYrWkǹ~h洵п[ "vVf}kȿय़|I3[K]Jƾ.nHb$_Fe߱nwʬ[u|){:z~I~s!q+ _g}.$Ki#3N֗X9Uxx=OGD@dӯ$[%HCZ=ۗ<7x*캚zsMkP˪5oG4 ;}l"U?ٛk^ 5ϳkR^^gn#[=B)YiVV'QI$mmoJ27!PYݯX&7umBM?x_3ޯDӵ]@OBZ}WLvdEVn?Ɵ<+㥳&k(5VU]-nkB~Ud5+]/W\H"Kxd#YZMΏs|ʵcç*Pʫ),n]:]Xxn;Y.$u#fo[.ۺ㮕Q|i.q7.g{hSyrem6ۿfRUxAt xe0ank4_݆xme]2|q׉qxwzewOGZ_1m_V8̿'^*ci΃k柭Ϩ˩P ˷MGټqZ|7^ys?3NLfV61̱Ƣa'y5_ެO/2|#u/{_[AU^#"+Ko~\\,ߨGb۲D27O}gğs.Z׌msfE.wDүceXͭ_OKu niWE6h;|)>,j޻p]P׭~,CZiiyТs.ՉfEq~f;`jZ<%b:|{yVq']G8v\!^ִv7w \E 摕i>m͹/zυ~Y]?ÉwTK9D'ʪ7Yw|[/_?~1VM__vZ)镆h-H53ݵO_]̞e]blBuoriֲJk\+6˵+ ,&{Jqm˙mr=\9ZZ= e4f.I#k9̰Y걝+-}9t>3ׇ4+Eo&oͬvj$ƥekTXo}P5Gj[_4C&oHG)o~U]/Qx :d1j6wW^=ȉXnei7}ݱ q^_nm:jx_F__¨OLjt-.[h h%Q'iU[ GDx'Ǐ:kS薣H[k{$[B6ڱj\d'̫+W| ~|==OK7fUnݶjIglO6ߖh#/|_a:+o6Ͷi#H䍣m\r/0#ekc٠ጫ:͖:y͖ >)ׄeֿ ,bhDx[t;=}56ۥӾ/vm+/KWۆ~t_7ݶ=7HKv]G'G}Ցk2 .> !/M/,oMO,wi ̾Dۣddf|uXa3vR^ٞ.eGL 4,dukǤsnݼ'JkƟSXcjLֳ\'ݗ܋$l[މ^{OŚ=NUu&h*+7zH'2xkDk;$iJ49"=ğ4~e[dcÂi#xƨig[_[&K$7=pكvG۾T-0xTr3Q9J2[.ßPy?kܘ|>|K,.u ZfO%B6af֏v <)px-u&S"&Rƶl;Vf[}ʧJ<_M⪕Sjۖܲzi E} Xռd8dk7˻UU/~.|=*κ-?Ǧ[YMlG/Ywyj}>okc%:)DJR/69HʁovRZcӬebw7˻|"_ >*]goxm E ۶ ~|̪Uw//*>gڬ/n湚kv-}F6Pddkƭ}Ykن!J_*n>I\G$)n`v~}~maֱK[$1ItQB\qcƚVfZjj7Edh\;W~#vg^oKcZh1Z?4S5ywVwqld[vVUv\3+ +b ˪߷Yxy<1kW/uuMkoqo"I<٥h;dݚľj^[oZʻ]սO2xFhoX.748ߗknFO ^ck&U|]+Ao|L.Hd@aO'6Yr&jo+_i_𛶡IR0BαVwe7ݷj櫷%SDдvfU|͵٢saF.WvvZ$w[K aqw/Qx^okՄ.M 2(Uhmmx/^KKkZ·+_7c~c[w ksc/Vɤx]AgD™|hYme]GQQv^K!dZЎ9#m2'ʬm]מ⥯g{qwov ўۘD+ScZ>$K|?LMTFSa5U]r*\k|-iڄBxGv2'23gwZIF:?/<)5m.sxd_64É!~_YtV f{WV(F|V +o?,?>#k aj-4+⺶mk$wQ01[xio&f;V*%)nRbm+, hihre|Vђoe?~%/|;3}0][J<{4h/.ni?/eǵn㟆|Ou^_/ks_ ?%Y䉣4~LAx:·v61Ij:T˥'TBHwޮiQ|e߈ouIowZ7+WsbVY6ͫ$ K'{ﳙ1-Oxv KǚM6Ȭywfms$37e-·Gq]cu'X)fd{+8q6|_8w7zj2Y[Ym'O*afO3p8+?/z&>i~ !mkQdp鮷iN/VU+evz2ԗ4'~([hWRծ`%Jͅ]Z·[uw_B=mcmz3]_1u}|b ׆ݮ;i7Dr2|h\V?rnb Ck<+}Ιh Υښ8Yln,qFd,+g\JѾP&Xcn>{ץx@Ӵ]O_b]b gw*ѳ,вe7ͻ/JwI*;9ڻWź#7?eZ8Q[fWv֓L.W{/7ZN<3~;C gn#${]˷w_Vhjv,4;u,{$l{lLumu1lHW>½zUo׶er­zWoLndtWX&X8gUe~]-s/<gV>#ӈ\]%ҭV oZM:ٗf__/@b Yiw0s%#Dle_I!XWr_7͵vl @:7Ÿl]+o5֟d_mXYcC7#]F7*ʾ%q\]_I֖IfH} M5*еčnhfZY5GY}f8Uc֭o ͹l{V_CH.m'NmuٕVaھgZeMt-ʗa<.Ydj۫5eU};|FT \󾽭j C&o<-+~YeY E]FY~s=OLg%]No'ͶFkm3WW?N>2흺:+%;76Xdmnv_oUk/$OśiݨO$_+~օ{zr_>?BmBA$kG?Wt;(&Xeoy~j_Hߋֹ O1+}S|mЇ<6L^xշ6A)crg<}YvS, {[o^z&FQo#-ou{$?o4?6֓s76+_Hk-ӡCϲfw?v.V۫ÿ :lh~X*Ƿf)+ YsK?!̗ƪĬ3/ݑm7&xYefeo]~>'u$EyHu"}C ^.+K^<$˘xXQ>m;MO]G~UVV54m{e/u_4eoVxVKenys9~?=8G[۲xoc4mneXUۙV M_^hMVYbf6m^)}Oyfh[wmP{o^+O蚆-V-B4pɵYypRUc(G28mc*es*[_Mmtݪk5Q%vojnvBG,s ߏ:4ۚYwULJ>&xH-oFgIȕZ[?ԛcvS_ JّJUCE-4.1.0/examples/Demo/Resources/teapot.obj000066400000000000000000002714301263452017400207210ustar00rootroot00000000000000# Max2Obj Version 4.0 Mar 10th, 2001 # # object Teapot01 to come ... # v 5.929688 4.125000 0.000000 v 5.832031 4.494141 0.000000 v 5.945313 4.617188 0.000000 v 6.175781 4.494141 0.000000 v 6.429688 4.125000 0.000000 v 5.387188 4.125000 2.747500 v 5.297100 4.494141 2.709170 v 5.401602 4.617188 2.753633 v 5.614209 4.494141 2.844092 v 5.848437 4.125000 2.943750 v 3.899688 4.125000 4.970000 v 3.830352 4.494141 4.900664 v 3.910782 4.617188 4.981094 v 4.074414 4.494141 5.144727 v 4.254687 4.125000 5.325000 v 1.677188 4.125000 6.457500 v 1.638858 4.494141 6.367412 v 1.683320 4.617188 6.471914 v 1.773780 4.494141 6.684522 v 1.873438 4.125000 6.918750 v -1.070312 4.125000 7.000000 v -1.070312 4.494141 6.902344 v -1.070312 4.617188 7.015625 v -1.070312 4.494141 7.246094 v -1.070312 4.125000 7.500000 v -4.007656 4.125000 6.457500 v -3.859572 4.494141 6.367412 v -3.847676 4.617188 6.471914 v -3.917371 4.494141 6.684522 v -4.014062 4.125000 6.918750 v -6.209063 4.125000 4.970000 v -6.042168 4.494141 4.900664 v -6.072500 4.617188 4.981094 v -6.217675 4.494141 5.144727 v -6.395312 4.125000 5.325000 v -7.591093 4.125000 2.747500 v -7.464421 4.494141 2.709170 v -7.550137 4.617188 2.753633 v -7.755822 4.494141 2.844092 v -7.989062 4.125000 2.943750 v -8.070313 4.125000 0.000000 v -7.972656 4.494141 0.000000 v -8.085938 4.617188 0.000000 v -8.316406 4.494141 0.000000 v -8.570313 4.125000 0.000000 v -7.527812 4.125000 -2.747500 v -7.437724 4.494141 -2.709170 v -7.542227 4.617188 -2.753633 v -7.754834 4.494141 -2.844092 v -7.989062 4.125000 -2.943750 v -6.040312 4.125000 -4.970000 v -5.970977 4.494141 -4.900664 v -6.051406 4.617188 -4.981094 v -6.215039 4.494141 -5.144727 v -6.395312 4.125000 -5.325000 v -3.817812 4.125000 -6.457500 v -3.779482 4.494141 -6.367412 v -3.823945 4.617188 -6.471914 v -3.914404 4.494141 -6.684522 v -4.014062 4.125000 -6.918750 v -1.070312 4.125000 -7.000000 v -1.070312 4.494141 -6.902344 v -1.070312 4.617188 -7.015625 v -1.070312 4.494141 -7.246094 v -1.070312 4.125000 -7.500000 v 1.677188 4.125000 -6.457500 v 1.638858 4.494141 -6.367412 v 1.683320 4.617188 -6.471914 v 1.773780 4.494141 -6.684522 v 1.873438 4.125000 -6.918750 v 3.899688 4.125000 -4.970000 v 3.830352 4.494141 -4.900664 v 3.910782 4.617188 -4.981094 v 4.074414 4.494141 -5.144727 v 4.254687 4.125000 -5.325000 v 5.387188 4.125000 -2.747500 v 5.297100 4.494141 -2.709170 v 5.401602 4.617188 -2.753633 v 5.614209 4.494141 -2.844092 v 5.848437 4.125000 -2.943750 v 7.347656 2.162109 0.000000 v 8.148438 0.234375 0.000000 v 8.714844 -1.623047 0.000000 v 8.929688 -3.375000 0.000000 v 6.695264 2.162109 3.304053 v 7.433985 0.234375 3.618360 v 7.956494 -1.623047 3.840674 v 8.154688 -3.375000 3.925000 v 4.906446 2.162109 5.976758 v 5.475000 0.234375 6.545312 v 5.877149 -1.623047 6.947461 v 6.029688 -3.375000 7.100000 v 2.233740 2.162109 7.765576 v 2.548047 0.234375 8.504297 v 2.770362 -1.623047 9.026807 v 2.854688 -3.375000 9.225000 v -1.070312 2.162109 8.417969 v -1.070312 0.234375 9.218750 v -1.070312 -1.623047 9.785156 v -1.070312 -3.375000 10.000000 v -4.374365 2.162109 7.765576 v -4.688672 0.234375 8.504297 v -4.910986 -1.623047 9.026807 v -4.995313 -3.375000 9.225000 v -7.047071 2.162109 5.976758 v -7.615624 0.234375 6.545312 v -8.017773 -1.623047 6.947461 v -8.170312 -3.375000 7.100000 v -8.835889 2.162109 3.304053 v -9.574610 0.234375 3.618360 v -10.097119 -1.623047 3.840674 v -10.295313 -3.375000 3.925000 v -9.488281 2.162109 0.000000 v -10.289063 0.234375 0.000000 v -10.855469 -1.623047 0.000000 v -11.070313 -3.375000 0.000000 v -8.835889 2.162109 -3.304053 v -9.574610 0.234375 -3.618360 v -10.097119 -1.623047 -3.840674 v -10.295313 -3.375000 -3.925000 v -7.047071 2.162109 -5.976758 v -7.615624 0.234375 -6.545312 v -8.017773 -1.623047 -6.947461 v -8.170312 -3.375000 -7.100000 v -4.374365 2.162109 -7.765576 v -4.688672 0.234375 -8.504297 v -4.910986 -1.623047 -9.026807 v -4.995313 -3.375000 -9.225000 v -1.070312 2.162109 -8.417969 v -1.070312 0.234375 -9.218750 v -1.070312 -1.623047 -9.785156 v -1.070312 -3.375000 -10.000000 v 2.233740 2.162109 -7.765576 v 2.548047 0.234375 -8.504297 v 2.770362 -1.623047 -9.026807 v 2.854688 -3.375000 -9.225000 v 4.906446 2.162109 -5.976758 v 5.475000 0.234375 -6.545312 v 5.877149 -1.623047 -6.947461 v 6.029688 -3.375000 -7.100000 v 6.695264 2.162109 -3.304053 v 7.433985 0.234375 -3.618360 v 7.956494 -1.623047 -3.840674 v 8.154688 -3.375000 -3.925000 v 8.539063 -4.857422 0.000000 v 7.679688 -5.953125 0.000000 v 6.820313 -6.697266 0.000000 v 6.429688 -7.125000 0.000000 v 7.794336 -4.857422 3.771680 v 7.001562 -5.953125 3.434375 v 6.208789 -6.697266 3.097070 v 5.848437 -7.125000 2.943750 v 5.752343 -4.857422 6.822656 v 5.142187 -5.953125 6.212500 v 4.532031 -6.697266 5.602344 v 4.254687 -7.125000 5.325000 v 2.701367 -4.857422 8.864649 v 2.364063 -5.953125 8.071875 v 2.026758 -6.697266 7.279101 v 1.873438 -7.125000 6.918750 v -1.070312 -4.857422 9.609375 v -1.070312 -5.953125 8.750000 v -1.070312 -6.697266 7.890625 v -1.070312 -7.125000 7.500000 v -4.841992 -4.857422 8.864649 v -4.504687 -5.953125 8.071875 v -4.167383 -6.697266 7.279101 v -4.014062 -7.125000 6.918750 v -7.892968 -4.857422 6.822656 v -7.282812 -5.953125 6.212500 v -6.672656 -6.697266 5.602344 v -6.395312 -7.125000 5.325000 v -9.934961 -4.857422 3.771680 v -9.142187 -5.953125 3.434375 v -8.349414 -6.697266 3.097070 v -7.989062 -7.125000 2.943750 v -10.679688 -4.857422 0.000000 v -9.820313 -5.953125 0.000000 v -8.960938 -6.697266 0.000000 v -8.570313 -7.125000 0.000000 v -9.934961 -4.857422 -3.771680 v -9.142187 -5.953125 -3.434375 v -8.349414 -6.697266 -3.097070 v -7.989062 -7.125000 -2.943750 v -7.892968 -4.857422 -6.822656 v -7.282812 -5.953125 -6.212500 v -6.672656 -6.697266 -5.602344 v -6.395312 -7.125000 -5.325000 v -4.841992 -4.857422 -8.864649 v -4.504687 -5.953125 -8.071875 v -4.167383 -6.697266 -7.279101 v -4.014062 -7.125000 -6.918750 v -1.070312 -4.857422 -9.609375 v -1.070312 -5.953125 -8.750000 v -1.070312 -6.697266 -7.890625 v -1.070312 -7.125000 -7.500000 v 2.701367 -4.857422 -8.864649 v 2.364063 -5.953125 -8.071875 v 2.026758 -6.697266 -7.279101 v 1.873438 -7.125000 -6.918750 v 5.752343 -4.857422 -6.822656 v 5.142187 -5.953125 -6.212500 v 4.532031 -6.697266 -5.602344 v 4.254687 -7.125000 -5.325000 v 7.794336 -4.857422 -3.771680 v 7.001562 -5.953125 -3.434375 v 6.208789 -6.697266 -3.097070 v 5.848437 -7.125000 -2.943750 v 6.259766 -7.400391 0.000000 v 5.351563 -7.640625 0.000000 v 3.107422 -7.810547 0.000000 v -1.070312 -7.875000 0.000000 v 5.691685 -7.400391 2.877056 v 4.853868 -7.640625 2.520586 v 2.783648 -7.810547 1.639761 v 4.134043 -7.400391 5.204355 v 3.489219 -7.640625 4.559531 v 1.895879 -7.810547 2.966191 v 1.806743 -7.400391 6.761997 v 1.450274 -7.640625 5.924180 v 0.569448 -7.810547 3.853960 v -1.070312 -7.400391 7.330078 v -1.070312 -7.640625 6.421875 v -1.070312 -7.810547 4.177734 v -3.947368 -7.400391 6.761997 v -3.590898 -7.640625 5.924180 v -2.710073 -7.810547 3.853960 v -6.274668 -7.400391 5.204355 v -5.629844 -7.640625 4.559531 v -4.036504 -7.810547 2.966191 v -7.832309 -7.400391 2.877056 v -6.994492 -7.640625 2.520586 v -4.924272 -7.810547 1.639761 v -8.400391 -7.400391 0.000000 v -7.492188 -7.640625 0.000000 v -5.248047 -7.810547 0.000000 v -7.832309 -7.400391 -2.877056 v -6.994492 -7.640625 -2.520586 v -4.924272 -7.810547 -1.639761 v -6.274668 -7.400391 -5.204355 v -5.629844 -7.640625 -4.559531 v -4.036504 -7.810547 -2.966191 v -3.947368 -7.400391 -6.761997 v -3.590898 -7.640625 -5.924180 v -2.710073 -7.810547 -3.853960 v -1.070312 -7.400391 -7.330078 v -1.070312 -7.640625 -6.421875 v -1.070312 -7.810547 -4.177734 v 1.806743 -7.400391 -6.761997 v 1.450274 -7.640625 -5.924180 v 0.569448 -7.810547 -3.853960 v 4.134043 -7.400391 -5.204355 v 3.489219 -7.640625 -4.559531 v 1.895879 -7.810547 -2.966191 v 5.691685 -7.400391 -2.877056 v 4.853868 -7.640625 -2.520586 v 2.783648 -7.810547 -1.639761 v -9.070313 2.250000 0.000000 v -11.406250 2.232422 0.000000 v -13.132813 2.109375 0.000000 v -14.203125 1.775391 0.000000 v -14.570313 1.125000 0.000000 v -8.992188 2.425781 0.843750 v -11.475830 2.405457 0.843750 v -13.298828 2.263184 0.843750 v -14.421631 1.877014 0.843750 v -14.804688 1.125000 0.843750 v -8.820313 2.812500 1.125000 v -11.628906 2.786134 1.125000 v -13.664063 2.601563 1.125000 v -14.902344 2.100586 1.125000 v -15.320313 1.125000 1.125000 v -8.648438 3.199219 0.843750 v -11.781982 3.166809 0.843750 v -14.029297 2.939941 0.843750 v -15.383057 2.324158 0.843750 v -15.835938 1.125000 0.843750 v -8.570313 3.375000 0.000000 v -11.851563 3.339844 0.000000 v -14.195313 3.093750 0.000000 v -15.601563 2.425781 0.000000 v -16.070313 1.125000 0.000000 v -8.648438 3.199219 -0.843750 v -11.781982 3.166809 -0.843750 v -14.029297 2.939941 -0.843750 v -15.383057 2.324158 -0.843750 v -15.835938 1.125000 -0.843750 v -8.820313 2.812500 -1.125000 v -11.628906 2.786134 -1.125000 v -13.664063 2.601563 -1.125000 v -14.902344 2.100586 -1.125000 v -15.320313 1.125000 -1.125000 v -8.992188 2.425781 -0.843750 v -11.475830 2.405457 -0.843750 v -13.298828 2.263184 -0.843750 v -14.421631 1.877014 -0.843750 v -14.804688 1.125000 -0.843750 v -14.375000 0.105469 0.000000 v -13.757813 -1.125000 0.000000 v -12.671875 -2.355469 0.000000 v -11.070313 -3.375000 0.000000 v -14.588013 0.007050 0.843750 v -13.909180 -1.275146 0.843750 v -12.724976 -2.540863 0.843750 v -10.992188 -3.609375 0.843750 v -15.056641 -0.209473 1.125000 v -14.242188 -1.605469 1.125000 v -12.841797 -2.948730 1.125000 v -10.820313 -4.125000 1.125000 v -15.525269 -0.425995 0.843750 v -14.575195 -1.935791 0.843750 v -12.958618 -3.356598 0.843750 v -10.648438 -4.640625 0.843750 v -15.738281 -0.524414 0.000000 v -14.726563 -2.085938 0.000000 v -13.011719 -3.541992 0.000000 v -10.570313 -4.875000 0.000000 v -15.525269 -0.425995 -0.843750 v -14.575195 -1.935791 -0.843750 v -12.958618 -3.356598 -0.843750 v -10.648438 -4.640625 -0.843750 v -15.056641 -0.209473 -1.125000 v -14.242188 -1.605469 -1.125000 v -12.841797 -2.948730 -1.125000 v -10.820313 -4.125000 -1.125000 v -14.588013 0.007050 -0.843750 v -13.909180 -1.275146 -0.843750 v -12.724976 -2.540863 -0.843750 v -10.992188 -3.609375 -0.843750 v 7.429688 -0.750000 0.000000 v 9.828125 -0.199219 0.000000 v 10.867188 1.125000 0.000000 v 11.437500 2.730469 0.000000 v 12.429688 4.125000 0.000000 v 7.429688 -1.394531 1.856250 v 10.011230 -0.677124 1.676074 v 11.101563 0.846680 1.279688 v 11.723145 2.629761 0.883301 v 12.898438 4.125000 0.703125 v 7.429688 -2.812500 2.475000 v 10.414063 -1.728516 2.234766 v 11.617188 0.234375 1.706250 v 12.351563 2.408203 1.177734 v 13.929688 4.125000 0.937500 v 7.429688 -4.230469 1.856250 v 10.816895 -2.779907 1.676074 v 12.132813 -0.377930 1.279688 v 12.979980 2.186646 0.883301 v 14.960938 4.125000 0.703125 v 7.429688 -4.875000 0.000000 v 11.000000 -3.257813 0.000000 v 12.367188 -0.656250 0.000000 v 13.265625 2.085938 0.000000 v 15.429688 4.125000 0.000000 v 7.429688 -4.230469 -1.856250 v 10.816895 -2.779907 -1.676074 v 12.132813 -0.377930 -1.279688 v 12.979980 2.186646 -0.883301 v 14.960938 4.125000 -0.703125 v 7.429688 -2.812500 -2.475000 v 10.414063 -1.728516 -2.234766 v 11.617188 0.234375 -1.706250 v 12.351563 2.408203 -1.177734 v 13.929688 4.125000 -0.937500 v 7.429688 -1.394531 -1.856250 v 10.011230 -0.677124 -1.676074 v 11.101563 0.846680 -1.279688 v 11.723145 2.629761 -0.883301 v 12.898438 4.125000 -0.703125 v 12.789063 4.335938 0.000000 v 13.054688 4.406250 0.000000 v 13.132813 4.335938 0.000000 v 12.929688 4.125000 0.000000 v 13.291077 4.346237 0.659180 v 13.525879 4.422729 0.562500 v 13.532898 4.350357 0.465820 v 13.242188 4.125000 0.421875 v 14.395508 4.368896 0.878906 v 14.562500 4.458984 0.750000 v 14.413086 4.382080 0.621094 v 13.929688 4.125000 0.562500 v 15.499939 4.391556 0.659180 v 15.599121 4.495239 0.562500 v 15.293274 4.413804 0.465820 v 14.617188 4.125000 0.421875 v 16.001953 4.401855 0.000000 v 16.070313 4.511719 0.000000 v 15.693359 4.428224 0.000000 v 14.929688 4.125000 0.000000 v 15.499939 4.391556 -0.659180 v 15.599121 4.495239 -0.562500 v 15.293274 4.413804 -0.465820 v 14.617188 4.125000 -0.421875 v 14.395508 4.368896 -0.878906 v 14.562500 4.458984 -0.750000 v 14.413086 4.382080 -0.621094 v 13.929688 4.125000 -0.562500 v 13.291077 4.346237 -0.659180 v 13.525879 4.422729 -0.562500 v 13.532898 4.350357 -0.465820 v 13.242188 4.125000 -0.421875 v -1.070312 7.875000 0.000000 v 0.632813 7.628906 0.000000 v 0.554688 7.031250 0.000000 v -0.085937 6.292969 0.000000 v -0.070312 5.625000 0.000000 v 0.501414 7.628906 0.670256 v 0.429278 7.031250 0.639395 v -0.162029 6.292969 0.386960 v -0.147812 5.625000 0.392500 v 0.140489 7.628906 1.210801 v 0.084844 7.031250 1.155156 v -0.370879 6.292969 0.699434 v -0.360312 5.625000 0.710000 v -0.400056 7.628906 1.571726 v -0.430918 7.031250 1.499590 v -0.683352 6.292969 0.908284 v -0.677812 5.625000 0.922500 v -1.070312 7.628906 1.703125 v -1.070312 7.031250 1.625000 v -1.070312 6.292969 0.984375 v -1.070312 5.625000 1.000000 v -1.740569 7.628906 1.571726 v -1.709707 7.031250 1.499590 v -1.457273 6.292969 0.908284 v -1.462812 5.625000 0.922500 v -2.281113 7.628906 1.210801 v -2.225469 7.031250 1.155156 v -1.769746 6.292969 0.699434 v -1.780312 5.625000 0.710000 v -2.642038 7.628906 0.670256 v -2.569902 7.031250 0.639395 v -1.978596 6.292969 0.386960 v -1.992812 5.625000 0.392500 v -2.773438 7.628906 0.000000 v -2.695313 7.031250 0.000000 v -2.054687 6.292969 0.000000 v -2.070312 5.625000 0.000000 v -2.642038 7.628906 -0.670256 v -2.569902 7.031250 -0.639395 v -1.978596 6.292969 -0.386960 v -1.992812 5.625000 -0.392500 v -2.281113 7.628906 -1.210801 v -2.225469 7.031250 -1.155156 v -1.769746 6.292969 -0.699434 v -1.780312 5.625000 -0.710000 v -1.740569 7.628906 -1.571726 v -1.709707 7.031250 -1.499590 v -1.457273 6.292969 -0.908284 v -1.462812 5.625000 -0.922500 v -1.070312 7.628906 -1.703125 v -1.070312 7.031250 -1.625000 v -1.070312 6.292969 -0.984375 v -1.070312 5.625000 -1.000000 v -0.400056 7.628906 -1.571726 v -0.430918 7.031250 -1.499590 v -0.683352 6.292969 -0.908284 v -0.677812 5.625000 -0.922500 v 0.140489 7.628906 -1.210801 v 0.084844 7.031250 -1.155156 v -0.370879 6.292969 -0.699434 v -0.360312 5.625000 -0.710000 v 0.501414 7.628906 -0.670256 v 0.429278 7.031250 -0.639395 v -0.162029 6.292969 -0.386960 v -0.147812 5.625000 -0.392500 v 1.210938 5.179688 0.000000 v 3.054688 4.875000 0.000000 v 4.710938 4.570313 0.000000 v 5.429688 4.125000 0.000000 v 1.034141 5.179688 0.895391 v 2.735000 4.875000 1.619062 v 4.262891 4.570313 2.269140 v 4.925938 4.125000 2.551250 v 0.549375 5.179688 1.619688 v 1.858438 4.875000 2.928750 v 3.034375 4.570313 4.104687 v 3.544688 4.125000 4.615000 v -0.174922 5.179688 2.104453 v 0.548750 4.875000 3.805313 v 1.198828 4.570313 5.333203 v 1.480938 4.125000 5.996250 v -1.070312 5.179688 2.281250 v -1.070312 4.875000 4.125000 v -1.070312 4.570313 5.781250 v -1.070312 4.125000 6.500000 v -1.965703 5.179688 2.104453 v -2.689375 4.875000 3.805313 v -3.339453 4.570313 5.333203 v -3.621562 4.125000 5.996250 v -2.690000 5.179688 1.619688 v -3.999062 4.875000 2.928750 v -5.174999 4.570313 4.104687 v -5.685312 4.125000 4.615000 v -3.174765 5.179688 0.895391 v -4.875625 4.875000 1.619062 v -6.403516 4.570313 2.269140 v -7.066563 4.125000 2.551250 v -3.351562 5.179688 0.000000 v -5.195313 4.875000 0.000000 v -6.851563 4.570313 0.000000 v -7.570313 4.125000 0.000000 v -3.174765 5.179688 -0.895391 v -4.875625 4.875000 -1.619062 v -6.403516 4.570313 -2.269140 v -7.066563 4.125000 -2.551250 v -2.690000 5.179688 -1.619688 v -3.999062 4.875000 -2.928750 v -5.174999 4.570313 -4.104687 v -5.685312 4.125000 -4.615000 v -1.965703 5.179688 -2.104453 v -2.689375 4.875000 -3.805313 v -3.339453 4.570313 -5.333203 v -3.621562 4.125000 -5.996250 v -1.070312 5.179688 -2.281250 v -1.070312 4.875000 -4.125000 v -1.070312 4.570313 -5.781250 v -1.070312 4.125000 -6.500000 v -0.174922 5.179688 -2.104453 v 0.548750 4.875000 -3.805313 v 1.198828 4.570313 -5.333203 v 1.480938 4.125000 -5.996250 v 0.549375 5.179688 -1.619688 v 1.858438 4.875000 -2.928750 v 3.034375 4.570313 -4.104687 v 3.544688 4.125000 -4.615000 v 1.034141 5.179688 -0.895391 v 2.735000 4.875000 -1.619062 v 4.262891 4.570313 -2.269140 v 4.925938 4.125000 -2.551250 # 530 vertices vt 2.000000 2.000000 0.000000 vt 2.000000 1.975000 0.000000 vt 2.000000 1.950000 0.000000 vt 2.000000 1.925000 0.000000 vt 2.000000 1.900000 0.000000 vt 1.750000 2.000000 0.000000 vt 1.750000 1.975000 0.000000 vt 1.750000 1.950000 0.000000 vt 1.750000 1.925000 0.000000 vt 1.750000 1.900000 0.000000 vt 1.500000 2.000000 0.000000 vt 1.500000 1.975000 0.000000 vt 1.500000 1.950000 0.000000 vt 1.500000 1.925000 0.000000 vt 1.500000 1.900000 0.000000 vt 1.250000 2.000000 0.000000 vt 1.250000 1.975000 0.000000 vt 1.250000 1.950000 0.000000 vt 1.250000 1.925000 0.000000 vt 1.250000 1.900000 0.000000 vt 1.000000 2.000000 0.000000 vt 1.000000 1.975000 0.000000 vt 1.000000 1.950000 0.000000 vt 1.000000 1.925000 0.000000 vt 1.000000 1.900000 0.000000 vt 1.000000 2.000000 0.000000 vt 1.000000 1.975000 0.000000 vt 1.000000 1.950000 0.000000 vt 1.000000 1.925000 0.000000 vt 1.000000 1.900000 0.000000 vt 0.750000 2.000000 0.000000 vt 0.750000 1.975000 0.000000 vt 0.750000 1.950000 0.000000 vt 0.750000 1.925000 0.000000 vt 0.750000 1.900000 0.000000 vt 0.500000 2.000000 0.000000 vt 0.500000 1.975000 0.000000 vt 0.500000 1.950000 0.000000 vt 0.500000 1.925000 0.000000 vt 0.500000 1.900000 0.000000 vt 0.250000 2.000000 0.000000 vt 0.250000 1.975000 0.000000 vt 0.250000 1.950000 0.000000 vt 0.250000 1.925000 0.000000 vt 0.250000 1.900000 0.000000 vt 0.000000 2.000000 0.000000 vt 0.000000 1.975000 0.000000 vt 0.000000 1.950000 0.000000 vt 0.000000 1.925000 0.000000 vt 0.000000 1.900000 0.000000 vt 2.000000 2.000000 0.000000 vt 2.000000 1.975000 0.000000 vt 2.000000 1.950000 0.000000 vt 2.000000 1.925000 0.000000 vt 2.000000 1.900000 0.000000 vt 1.750000 2.000000 0.000000 vt 1.750000 1.975000 0.000000 vt 1.750000 1.950000 0.000000 vt 1.750000 1.925000 0.000000 vt 1.750000 1.900000 0.000000 vt 1.500000 2.000000 0.000000 vt 1.500000 1.975000 0.000000 vt 1.500000 1.950000 0.000000 vt 1.500000 1.925000 0.000000 vt 1.500000 1.900000 0.000000 vt 1.250000 2.000000 0.000000 vt 1.250000 1.975000 0.000000 vt 1.250000 1.950000 0.000000 vt 1.250000 1.925000 0.000000 vt 1.250000 1.900000 0.000000 vt 1.000000 2.000000 0.000000 vt 1.000000 1.975000 0.000000 vt 1.000000 1.950000 0.000000 vt 1.000000 1.925000 0.000000 vt 1.000000 1.900000 0.000000 vt 1.000000 2.000000 0.000000 vt 1.000000 1.975000 0.000000 vt 1.000000 1.950000 0.000000 vt 1.000000 1.925000 0.000000 vt 1.000000 1.900000 0.000000 vt 0.750000 2.000000 0.000000 vt 0.750000 1.975000 0.000000 vt 0.750000 1.950000 0.000000 vt 0.750000 1.925000 0.000000 vt 0.750000 1.900000 0.000000 vt 0.500000 2.000000 0.000000 vt 0.500000 1.975000 0.000000 vt 0.500000 1.950000 0.000000 vt 0.500000 1.925000 0.000000 vt 0.500000 1.900000 0.000000 vt 0.250000 2.000000 0.000000 vt 0.250000 1.975000 0.000000 vt 0.250000 1.950000 0.000000 vt 0.250000 1.925000 0.000000 vt 0.250000 1.900000 0.000000 vt 0.000000 2.000000 0.000000 vt 0.000000 1.975000 0.000000 vt 0.000000 1.950000 0.000000 vt 0.000000 1.925000 0.000000 vt 0.000000 1.900000 0.000000 vt 2.000000 1.900000 0.000000 vt 2.000000 1.675000 0.000000 vt 2.000000 1.450000 0.000000 vt 2.000000 1.225000 0.000000 vt 2.000000 1.000000 0.000000 vt 1.750000 1.900000 0.000000 vt 1.750000 1.675000 0.000000 vt 1.750000 1.450000 0.000000 vt 1.750000 1.225000 0.000000 vt 1.750000 1.000000 0.000000 vt 1.500000 1.900000 0.000000 vt 1.500000 1.675000 0.000000 vt 1.500000 1.450000 0.000000 vt 1.500000 1.225000 0.000000 vt 1.500000 1.000000 0.000000 vt 1.250000 1.900000 0.000000 vt 1.250000 1.675000 0.000000 vt 1.250000 1.450000 0.000000 vt 1.250000 1.225000 0.000000 vt 1.250000 1.000000 0.000000 vt 1.000000 1.900000 0.000000 vt 1.000000 1.675000 0.000000 vt 1.000000 1.450000 0.000000 vt 1.000000 1.225000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 1.900000 0.000000 vt 1.000000 1.675000 0.000000 vt 1.000000 1.450000 0.000000 vt 1.000000 1.225000 0.000000 vt 1.000000 1.000000 0.000000 vt 0.750000 1.900000 0.000000 vt 0.750000 1.675000 0.000000 vt 0.750000 1.450000 0.000000 vt 0.750000 1.225000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.500000 1.900000 0.000000 vt 0.500000 1.675000 0.000000 vt 0.500000 1.450000 0.000000 vt 0.500000 1.225000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.250000 1.900000 0.000000 vt 0.250000 1.675000 0.000000 vt 0.250000 1.450000 0.000000 vt 0.250000 1.225000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.000000 1.900000 0.000000 vt 0.000000 1.675000 0.000000 vt 0.000000 1.450000 0.000000 vt 0.000000 1.225000 0.000000 vt 0.000000 1.000000 0.000000 vt 2.000000 1.900000 0.000000 vt 2.000000 1.675000 0.000000 vt 2.000000 1.450000 0.000000 vt 2.000000 1.225000 0.000000 vt 2.000000 1.000000 0.000000 vt 1.750000 1.900000 0.000000 vt 1.750000 1.675000 0.000000 vt 1.750000 1.450000 0.000000 vt 1.750000 1.225000 0.000000 vt 1.750000 1.000000 0.000000 vt 1.500000 1.900000 0.000000 vt 1.500000 1.675000 0.000000 vt 1.500000 1.450000 0.000000 vt 1.500000 1.225000 0.000000 vt 1.500000 1.000000 0.000000 vt 1.250000 1.900000 0.000000 vt 1.250000 1.675000 0.000000 vt 1.250000 1.450000 0.000000 vt 1.250000 1.225000 0.000000 vt 1.250000 1.000000 0.000000 vt 1.000000 1.900000 0.000000 vt 1.000000 1.675000 0.000000 vt 1.000000 1.450000 0.000000 vt 1.000000 1.225000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 1.900000 0.000000 vt 1.000000 1.675000 0.000000 vt 1.000000 1.450000 0.000000 vt 1.000000 1.225000 0.000000 vt 1.000000 1.000000 0.000000 vt 0.750000 1.900000 0.000000 vt 0.750000 1.675000 0.000000 vt 0.750000 1.450000 0.000000 vt 0.750000 1.225000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.500000 1.900000 0.000000 vt 0.500000 1.675000 0.000000 vt 0.500000 1.450000 0.000000 vt 0.500000 1.225000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.250000 1.900000 0.000000 vt 0.250000 1.675000 0.000000 vt 0.250000 1.450000 0.000000 vt 0.250000 1.225000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.000000 1.900000 0.000000 vt 0.000000 1.675000 0.000000 vt 0.000000 1.450000 0.000000 vt 0.000000 1.225000 0.000000 vt 0.000000 1.000000 0.000000 vt 2.000000 1.000000 0.000000 vt 2.000000 0.850000 0.000000 vt 2.000000 0.700000 0.000000 vt 2.000000 0.550000 0.000000 vt 2.000000 0.400000 0.000000 vt 1.750000 1.000000 0.000000 vt 1.750000 0.850000 0.000000 vt 1.750000 0.700000 0.000000 vt 1.750000 0.550000 0.000000 vt 1.750000 0.400000 0.000000 vt 1.500000 1.000000 0.000000 vt 1.500000 0.850000 0.000000 vt 1.500000 0.700000 0.000000 vt 1.500000 0.550000 0.000000 vt 1.500000 0.400000 0.000000 vt 1.250000 1.000000 0.000000 vt 1.250000 0.850000 0.000000 vt 1.250000 0.700000 0.000000 vt 1.250000 0.550000 0.000000 vt 1.250000 0.400000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.850000 0.000000 vt 1.000000 0.700000 0.000000 vt 1.000000 0.550000 0.000000 vt 1.000000 0.400000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.850000 0.000000 vt 1.000000 0.700000 0.000000 vt 1.000000 0.550000 0.000000 vt 1.000000 0.400000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.750000 0.850000 0.000000 vt 0.750000 0.700000 0.000000 vt 0.750000 0.550000 0.000000 vt 0.750000 0.400000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.850000 0.000000 vt 0.500000 0.700000 0.000000 vt 0.500000 0.550000 0.000000 vt 0.500000 0.400000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.250000 0.850000 0.000000 vt 0.250000 0.700000 0.000000 vt 0.250000 0.550000 0.000000 vt 0.250000 0.400000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.000000 0.850000 0.000000 vt 0.000000 0.700000 0.000000 vt 0.000000 0.550000 0.000000 vt 0.000000 0.400000 0.000000 vt 2.000000 1.000000 0.000000 vt 2.000000 0.850000 0.000000 vt 2.000000 0.700000 0.000000 vt 2.000000 0.550000 0.000000 vt 2.000000 0.400000 0.000000 vt 1.750000 1.000000 0.000000 vt 1.750000 0.850000 0.000000 vt 1.750000 0.700000 0.000000 vt 1.750000 0.550000 0.000000 vt 1.750000 0.400000 0.000000 vt 1.500000 1.000000 0.000000 vt 1.500000 0.850000 0.000000 vt 1.500000 0.700000 0.000000 vt 1.500000 0.550000 0.000000 vt 1.500000 0.400000 0.000000 vt 1.250000 1.000000 0.000000 vt 1.250000 0.850000 0.000000 vt 1.250000 0.700000 0.000000 vt 1.250000 0.550000 0.000000 vt 1.250000 0.400000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.850000 0.000000 vt 1.000000 0.700000 0.000000 vt 1.000000 0.550000 0.000000 vt 1.000000 0.400000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.850000 0.000000 vt 1.000000 0.700000 0.000000 vt 1.000000 0.550000 0.000000 vt 1.000000 0.400000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.750000 0.850000 0.000000 vt 0.750000 0.700000 0.000000 vt 0.750000 0.550000 0.000000 vt 0.750000 0.400000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.850000 0.000000 vt 0.500000 0.700000 0.000000 vt 0.500000 0.550000 0.000000 vt 0.500000 0.400000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.250000 0.850000 0.000000 vt 0.250000 0.700000 0.000000 vt 0.250000 0.550000 0.000000 vt 0.250000 0.400000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.000000 0.850000 0.000000 vt 0.000000 0.700000 0.000000 vt 0.000000 0.550000 0.000000 vt 0.000000 0.400000 0.000000 vt 2.000000 0.400000 0.000000 vt 2.000000 0.300000 0.000000 vt 2.000000 0.200000 0.000000 vt 2.000000 0.100000 0.000000 vt 2.000000 0.000000 0.000000 vt 1.750000 0.400000 0.000000 vt 1.750000 0.300000 0.000000 vt 1.750000 0.200000 0.000000 vt 1.750000 0.100000 0.000000 vt 1.750000 0.000000 0.000000 vt 1.500000 0.400000 0.000000 vt 1.500000 0.300000 0.000000 vt 1.500000 0.200000 0.000000 vt 1.500000 0.100000 0.000000 vt 1.500000 0.000000 0.000000 vt 1.250000 0.400000 0.000000 vt 1.250000 0.300000 0.000000 vt 1.250000 0.200000 0.000000 vt 1.250000 0.100000 0.000000 vt 1.250000 0.000000 0.000000 vt 1.000000 0.400000 0.000000 vt 1.000000 0.300000 0.000000 vt 1.000000 0.200000 0.000000 vt 1.000000 0.100000 0.000000 vt 1.000000 0.000000 0.000000 vt 1.000000 0.400000 0.000000 vt 1.000000 0.300000 0.000000 vt 1.000000 0.200000 0.000000 vt 1.000000 0.100000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.750000 0.400000 0.000000 vt 0.750000 0.300000 0.000000 vt 0.750000 0.200000 0.000000 vt 0.750000 0.100000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.500000 0.400000 0.000000 vt 0.500000 0.300000 0.000000 vt 0.500000 0.200000 0.000000 vt 0.500000 0.100000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.250000 0.400000 0.000000 vt 0.250000 0.300000 0.000000 vt 0.250000 0.200000 0.000000 vt 0.250000 0.100000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.000000 0.400000 0.000000 vt 0.000000 0.300000 0.000000 vt 0.000000 0.200000 0.000000 vt 0.000000 0.100000 0.000000 vt 0.000000 0.000000 0.000000 vt 2.000000 0.400000 0.000000 vt 2.000000 0.300000 0.000000 vt 2.000000 0.200000 0.000000 vt 2.000000 0.100000 0.000000 vt 2.000000 0.000000 0.000000 vt 1.750000 0.400000 0.000000 vt 1.750000 0.300000 0.000000 vt 1.750000 0.200000 0.000000 vt 1.750000 0.100000 0.000000 vt 1.750000 0.000000 0.000000 vt 1.500000 0.400000 0.000000 vt 1.500000 0.300000 0.000000 vt 1.500000 0.200000 0.000000 vt 1.500000 0.100000 0.000000 vt 1.500000 0.000000 0.000000 vt 1.250000 0.400000 0.000000 vt 1.250000 0.300000 0.000000 vt 1.250000 0.200000 0.000000 vt 1.250000 0.100000 0.000000 vt 1.250000 0.000000 0.000000 vt 1.000000 0.400000 0.000000 vt 1.000000 0.300000 0.000000 vt 1.000000 0.200000 0.000000 vt 1.000000 0.100000 0.000000 vt 1.000000 0.000000 0.000000 vt 1.000000 0.400000 0.000000 vt 1.000000 0.300000 0.000000 vt 1.000000 0.200000 0.000000 vt 1.000000 0.100000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.750000 0.400000 0.000000 vt 0.750000 0.300000 0.000000 vt 0.750000 0.200000 0.000000 vt 0.750000 0.100000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.500000 0.400000 0.000000 vt 0.500000 0.300000 0.000000 vt 0.500000 0.200000 0.000000 vt 0.500000 0.100000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.250000 0.400000 0.000000 vt 0.250000 0.300000 0.000000 vt 0.250000 0.200000 0.000000 vt 0.250000 0.100000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.000000 0.400000 0.000000 vt 0.000000 0.300000 0.000000 vt 0.000000 0.200000 0.000000 vt 0.000000 0.100000 0.000000 vt 0.000000 0.000000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.875000 0.000000 vt 1.000000 0.750000 0.000000 vt 1.000000 0.625000 0.000000 vt 1.000000 0.500000 0.000000 vt 0.875000 1.000000 0.000000 vt 0.875000 0.875000 0.000000 vt 0.875000 0.750000 0.000000 vt 0.875000 0.625000 0.000000 vt 0.875000 0.500000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.750000 0.875000 0.000000 vt 0.750000 0.750000 0.000000 vt 0.750000 0.625000 0.000000 vt 0.750000 0.500000 0.000000 vt 0.625000 1.000000 0.000000 vt 0.625000 0.875000 0.000000 vt 0.625000 0.750000 0.000000 vt 0.625000 0.625000 0.000000 vt 0.625000 0.500000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.875000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.625000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.875000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.625000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.375000 1.000000 0.000000 vt 0.375000 0.875000 0.000000 vt 0.375000 0.750000 0.000000 vt 0.375000 0.625000 0.000000 vt 0.375000 0.500000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.250000 0.875000 0.000000 vt 0.250000 0.750000 0.000000 vt 0.250000 0.625000 0.000000 vt 0.250000 0.500000 0.000000 vt 0.125000 1.000000 0.000000 vt 0.125000 0.875000 0.000000 vt 0.125000 0.750000 0.000000 vt 0.125000 0.625000 0.000000 vt 0.125000 0.500000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.000000 0.875000 0.000000 vt 0.000000 0.750000 0.000000 vt 0.000000 0.625000 0.000000 vt 0.000000 0.500000 0.000000 vt 1.000000 0.500000 0.000000 vt 1.000000 0.375000 0.000000 vt 1.000000 0.250000 0.000000 vt 1.000000 0.125000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.875000 0.500000 0.000000 vt 0.875000 0.375000 0.000000 vt 0.875000 0.250000 0.000000 vt 0.875000 0.125000 0.000000 vt 0.875000 0.000000 0.000000 vt 0.750000 0.500000 0.000000 vt 0.750000 0.375000 0.000000 vt 0.750000 0.250000 0.000000 vt 0.750000 0.125000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.625000 0.500000 0.000000 vt 0.625000 0.375000 0.000000 vt 0.625000 0.250000 0.000000 vt 0.625000 0.125000 0.000000 vt 0.625000 0.000000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.375000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.125000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.375000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.125000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.375000 0.500000 0.000000 vt 0.375000 0.375000 0.000000 vt 0.375000 0.250000 0.000000 vt 0.375000 0.125000 0.000000 vt 0.375000 0.000000 0.000000 vt 0.250000 0.500000 0.000000 vt 0.250000 0.375000 0.000000 vt 0.250000 0.250000 0.000000 vt 0.250000 0.125000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.125000 0.500000 0.000000 vt 0.125000 0.375000 0.000000 vt 0.125000 0.250000 0.000000 vt 0.125000 0.125000 0.000000 vt 0.125000 0.000000 0.000000 vt 0.000000 0.500000 0.000000 vt 0.000000 0.375000 0.000000 vt 0.000000 0.250000 0.000000 vt 0.000000 0.125000 0.000000 vt 0.000000 0.000000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.500000 0.225000 0.000000 vt 0.500000 0.450000 0.000000 vt 0.500000 0.675000 0.000000 vt 0.500000 0.900000 0.000000 vt 0.625000 0.000000 0.000000 vt 0.625000 0.225000 0.000000 vt 0.625000 0.450000 0.000000 vt 0.625000 0.675000 0.000000 vt 0.625000 0.900000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.750000 0.225000 0.000000 vt 0.750000 0.450000 0.000000 vt 0.750000 0.675000 0.000000 vt 0.750000 0.900000 0.000000 vt 0.875000 0.000000 0.000000 vt 0.875000 0.225000 0.000000 vt 0.875000 0.450000 0.000000 vt 0.875000 0.675000 0.000000 vt 0.875000 0.900000 0.000000 vt 1.000000 0.000000 0.000000 vt 1.000000 0.225000 0.000000 vt 1.000000 0.450000 0.000000 vt 1.000000 0.675000 0.000000 vt 1.000000 0.900000 0.000000 vt 0.000000 0.000000 0.000000 vt 0.000000 0.225000 0.000000 vt 0.000000 0.450000 0.000000 vt 0.000000 0.675000 0.000000 vt 0.000000 0.900000 0.000000 vt 0.125000 0.000000 0.000000 vt 0.125000 0.225000 0.000000 vt 0.125000 0.450000 0.000000 vt 0.125000 0.675000 0.000000 vt 0.125000 0.900000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.250000 0.225000 0.000000 vt 0.250000 0.450000 0.000000 vt 0.250000 0.675000 0.000000 vt 0.250000 0.900000 0.000000 vt 0.375000 0.000000 0.000000 vt 0.375000 0.225000 0.000000 vt 0.375000 0.450000 0.000000 vt 0.375000 0.675000 0.000000 vt 0.375000 0.900000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.500000 0.225000 0.000000 vt 0.500000 0.450000 0.000000 vt 0.500000 0.675000 0.000000 vt 0.500000 0.900000 0.000000 vt 0.500000 0.900000 0.000000 vt 0.500000 0.925000 0.000000 vt 0.500000 0.950000 0.000000 vt 0.500000 0.975000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.625000 0.900000 0.000000 vt 0.625000 0.925000 0.000000 vt 0.625000 0.950000 0.000000 vt 0.625000 0.975000 0.000000 vt 0.625000 1.000000 0.000000 vt 0.750000 0.900000 0.000000 vt 0.750000 0.925000 0.000000 vt 0.750000 0.950000 0.000000 vt 0.750000 0.975000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.875000 0.900000 0.000000 vt 0.875000 0.925000 0.000000 vt 0.875000 0.950000 0.000000 vt 0.875000 0.975000 0.000000 vt 0.875000 1.000000 0.000000 vt 1.000000 0.900000 0.000000 vt 1.000000 0.925000 0.000000 vt 1.000000 0.950000 0.000000 vt 1.000000 0.975000 0.000000 vt 1.000000 1.000000 0.000000 vt 0.000000 0.900000 0.000000 vt 0.000000 0.925000 0.000000 vt 0.000000 0.950000 0.000000 vt 0.000000 0.975000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.125000 0.900000 0.000000 vt 0.125000 0.925000 0.000000 vt 0.125000 0.950000 0.000000 vt 0.125000 0.975000 0.000000 vt 0.125000 1.000000 0.000000 vt 0.250000 0.900000 0.000000 vt 0.250000 0.925000 0.000000 vt 0.250000 0.950000 0.000000 vt 0.250000 0.975000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.375000 0.900000 0.000000 vt 0.375000 0.925000 0.000000 vt 0.375000 0.950000 0.000000 vt 0.375000 0.975000 0.000000 vt 0.375000 1.000000 0.000000 vt 0.500000 0.900000 0.000000 vt 0.500000 0.925000 0.000000 vt 0.500000 0.950000 0.000000 vt 0.500000 0.975000 0.000000 vt 0.500000 1.000000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.750000 0.000000 vt 1.000000 0.500000 0.000000 vt 1.000000 0.250000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.875000 1.000000 0.000000 vt 0.875000 0.750000 0.000000 vt 0.875000 0.500000 0.000000 vt 0.875000 0.250000 0.000000 vt 0.875000 0.000000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.750000 0.750000 0.000000 vt 0.750000 0.500000 0.000000 vt 0.750000 0.250000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.625000 1.000000 0.000000 vt 0.625000 0.750000 0.000000 vt 0.625000 0.500000 0.000000 vt 0.625000 0.250000 0.000000 vt 0.625000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.375000 1.000000 0.000000 vt 0.375000 0.750000 0.000000 vt 0.375000 0.500000 0.000000 vt 0.375000 0.250000 0.000000 vt 0.375000 0.000000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.250000 0.750000 0.000000 vt 0.250000 0.500000 0.000000 vt 0.250000 0.250000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.125000 1.000000 0.000000 vt 0.125000 0.750000 0.000000 vt 0.125000 0.500000 0.000000 vt 0.125000 0.250000 0.000000 vt 0.125000 0.000000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.000000 0.750000 0.000000 vt 0.000000 0.500000 0.000000 vt 0.000000 0.250000 0.000000 vt 0.000000 0.000000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.750000 0.000000 vt 1.000000 0.500000 0.000000 vt 1.000000 0.250000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.875000 1.000000 0.000000 vt 0.875000 0.750000 0.000000 vt 0.875000 0.500000 0.000000 vt 0.875000 0.250000 0.000000 vt 0.875000 0.000000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.750000 0.750000 0.000000 vt 0.750000 0.500000 0.000000 vt 0.750000 0.250000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.625000 1.000000 0.000000 vt 0.625000 0.750000 0.000000 vt 0.625000 0.500000 0.000000 vt 0.625000 0.250000 0.000000 vt 0.625000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.375000 1.000000 0.000000 vt 0.375000 0.750000 0.000000 vt 0.375000 0.500000 0.000000 vt 0.375000 0.250000 0.000000 vt 0.375000 0.000000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.250000 0.750000 0.000000 vt 0.250000 0.500000 0.000000 vt 0.250000 0.250000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.125000 1.000000 0.000000 vt 0.125000 0.750000 0.000000 vt 0.125000 0.500000 0.000000 vt 0.125000 0.250000 0.000000 vt 0.125000 0.000000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.000000 0.750000 0.000000 vt 0.000000 0.500000 0.000000 vt 0.000000 0.250000 0.000000 vt 0.000000 0.000000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.750000 0.000000 vt 1.000000 0.500000 0.000000 vt 1.000000 0.250000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.875000 1.000000 0.000000 vt 0.875000 0.750000 0.000000 vt 0.875000 0.500000 0.000000 vt 0.875000 0.250000 0.000000 vt 0.875000 0.000000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.750000 0.750000 0.000000 vt 0.750000 0.500000 0.000000 vt 0.750000 0.250000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.625000 1.000000 0.000000 vt 0.625000 0.750000 0.000000 vt 0.625000 0.500000 0.000000 vt 0.625000 0.250000 0.000000 vt 0.625000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.375000 1.000000 0.000000 vt 0.375000 0.750000 0.000000 vt 0.375000 0.500000 0.000000 vt 0.375000 0.250000 0.000000 vt 0.375000 0.000000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.250000 0.750000 0.000000 vt 0.250000 0.500000 0.000000 vt 0.250000 0.250000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.125000 1.000000 0.000000 vt 0.125000 0.750000 0.000000 vt 0.125000 0.500000 0.000000 vt 0.125000 0.250000 0.000000 vt 0.125000 0.000000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.000000 0.750000 0.000000 vt 0.000000 0.500000 0.000000 vt 0.000000 0.250000 0.000000 vt 0.000000 0.000000 0.000000 vt 1.000000 1.000000 0.000000 vt 1.000000 0.750000 0.000000 vt 1.000000 0.500000 0.000000 vt 1.000000 0.250000 0.000000 vt 1.000000 0.000000 0.000000 vt 0.875000 1.000000 0.000000 vt 0.875000 0.750000 0.000000 vt 0.875000 0.500000 0.000000 vt 0.875000 0.250000 0.000000 vt 0.875000 0.000000 0.000000 vt 0.750000 1.000000 0.000000 vt 0.750000 0.750000 0.000000 vt 0.750000 0.500000 0.000000 vt 0.750000 0.250000 0.000000 vt 0.750000 0.000000 0.000000 vt 0.625000 1.000000 0.000000 vt 0.625000 0.750000 0.000000 vt 0.625000 0.500000 0.000000 vt 0.625000 0.250000 0.000000 vt 0.625000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.500000 1.000000 0.000000 vt 0.500000 0.750000 0.000000 vt 0.500000 0.500000 0.000000 vt 0.500000 0.250000 0.000000 vt 0.500000 0.000000 0.000000 vt 0.375000 1.000000 0.000000 vt 0.375000 0.750000 0.000000 vt 0.375000 0.500000 0.000000 vt 0.375000 0.250000 0.000000 vt 0.375000 0.000000 0.000000 vt 0.250000 1.000000 0.000000 vt 0.250000 0.750000 0.000000 vt 0.250000 0.500000 0.000000 vt 0.250000 0.250000 0.000000 vt 0.250000 0.000000 0.000000 vt 0.125000 1.000000 0.000000 vt 0.125000 0.750000 0.000000 vt 0.125000 0.500000 0.000000 vt 0.125000 0.250000 0.000000 vt 0.125000 0.000000 0.000000 vt 0.000000 1.000000 0.000000 vt 0.000000 0.750000 0.000000 vt 0.000000 0.500000 0.000000 vt 0.000000 0.250000 0.000000 vt 0.000000 0.000000 0.000000 # 800 texture vertices vn -0.966742 -0.255752 0.000000 vn -0.966824 0.255443 0.000000 vn -0.092052 0.995754 0.000000 vn 0.682050 0.731305 0.000000 vn 0.870301 0.492521 0.000000 vn -0.893014 -0.256345 -0.369882 vn -0.893437 0.255996 -0.369102 vn -0.083877 0.995843 -0.035507 vn 0.629724 0.731860 0.260439 vn 0.803725 0.493370 0.332584 vn -0.683407 -0.256728 -0.683407 vn -0.683531 0.256068 -0.683531 vn -0.064925 0.995776 -0.064925 vn 0.481399 0.732469 0.481399 vn 0.614804 0.493997 0.614804 vn -0.369882 -0.256345 -0.893014 vn -0.369102 0.255996 -0.893437 vn -0.035507 0.995843 -0.083877 vn 0.260439 0.731860 0.629724 vn 0.332584 0.493369 0.803725 vn -0.002848 -0.257863 -0.966177 vn -0.001923 0.254736 -0.967009 vn -0.000266 0.995734 -0.092270 vn 0.000024 0.731295 0.682061 vn -0.000000 0.492521 0.870301 vn 0.379058 -0.359300 -0.852771 vn 0.377110 0.149085 -0.914091 vn 0.027502 0.992081 -0.122552 vn -0.261010 0.726762 0.635367 vn -0.332485 0.492546 0.804271 vn 0.663548 -0.410790 -0.625264 vn 0.712664 0.073722 -0.697621 vn 0.099726 0.987509 -0.121983 vn -0.487320 0.723754 0.488569 vn -0.615242 0.492602 0.615484 vn 0.880028 -0.332906 -0.338709 vn 0.917276 0.167113 -0.361493 vn 0.113584 0.992365 -0.048070 vn -0.634150 0.727508 0.261889 vn -0.804126 0.492634 0.332705 vn 0.966690 -0.255738 0.010454 vn 0.967442 0.252962 0.008103 vn 0.093436 0.995624 0.001281 vn -0.682167 0.731196 -0.000343 vn -0.870322 0.492483 -0.000054 vn 0.893014 -0.256345 0.369882 vn 0.893437 0.255996 0.369102 vn 0.083877 0.995843 0.035507 vn -0.629724 0.731860 -0.260439 vn -0.803725 0.493370 -0.332584 vn 0.683407 -0.256728 0.683407 vn 0.683531 0.256068 0.683531 vn 0.064925 0.995776 0.064925 vn -0.481399 0.732469 -0.481399 vn -0.614804 0.493997 -0.614804 vn 0.369882 -0.256345 0.893014 vn 0.369102 0.255996 0.893437 vn 0.035507 0.995843 0.083877 vn -0.260439 0.731860 -0.629724 vn -0.332584 0.493369 -0.803725 vn 0.000000 -0.255752 0.966742 vn 0.000000 0.255443 0.966824 vn 0.000000 0.995754 0.092052 vn 0.000000 0.731305 -0.682050 vn 0.000000 0.492521 -0.870301 vn -0.369882 -0.256345 0.893014 vn -0.369102 0.255996 0.893437 vn -0.035507 0.995843 0.083877 vn 0.260439 0.731860 -0.629724 vn 0.332584 0.493370 -0.803725 vn -0.683407 -0.256728 0.683407 vn -0.683531 0.256068 0.683531 vn -0.064925 0.995776 0.064925 vn 0.481399 0.732469 -0.481399 vn 0.614804 0.493997 -0.614804 vn -0.893014 -0.256345 0.369882 vn -0.893437 0.255996 0.369102 vn -0.083877 0.995843 0.035507 vn 0.629724 0.731860 -0.260439 vn 0.803725 0.493369 -0.332584 vn 0.915321 0.402725 -0.000000 vn 0.941808 0.336151 0.000000 vn 0.978690 0.205342 0.000000 vn 0.997804 -0.066240 -0.000000 vn 0.845438 0.403546 0.349835 vn 0.869996 0.336859 0.360047 vn 0.904193 0.205791 0.374280 vn 0.921879 -0.066370 0.381752 vn 0.646802 0.404096 0.646802 vn 0.665655 0.337351 0.665655 vn 0.691923 0.206120 0.691923 vn 0.705543 -0.066480 0.705542 vn 0.349835 0.403546 0.845438 vn 0.360047 0.336859 0.869996 vn 0.374280 0.205791 0.904193 vn 0.381752 -0.066369 0.921879 vn 0.000000 0.402725 0.915321 vn -0.000000 0.336151 0.941808 vn 0.000000 0.205342 0.978690 vn 0.000000 -0.066240 0.997804 vn -0.349835 0.403546 0.845438 vn -0.360047 0.336859 0.869996 vn -0.374280 0.205791 0.904193 vn -0.381752 -0.066370 0.921879 vn -0.646802 0.404096 0.646802 vn -0.665655 0.337351 0.665655 vn -0.691923 0.206120 0.691923 vn -0.705542 -0.066480 0.705543 vn -0.845438 0.403546 0.349835 vn -0.869996 0.336859 0.360047 vn -0.904193 0.205791 0.374280 vn -0.921879 -0.066369 0.381752 vn -0.915321 0.402725 0.000000 vn -0.941808 0.336151 -0.000000 vn -0.978690 0.205342 0.000000 vn -0.997804 -0.066240 0.000000 vn -0.845438 0.403546 -0.349835 vn -0.869996 0.336859 -0.360047 vn -0.904193 0.205791 -0.374280 vn -0.921879 -0.066370 -0.381752 vn -0.646802 0.404096 -0.646802 vn -0.665655 0.337351 -0.665655 vn -0.691923 0.206120 -0.691923 vn -0.705543 -0.066480 -0.705542 vn -0.349835 0.403546 -0.845438 vn -0.360047 0.336859 -0.869996 vn -0.374280 0.205791 -0.904193 vn -0.381752 -0.066369 -0.921879 vn -0.000000 0.402725 -0.915321 vn 0.000000 0.336151 -0.941808 vn -0.000000 0.205342 -0.978690 vn -0.000000 -0.066240 -0.997804 vn 0.349835 0.403546 -0.845438 vn 0.360047 0.336859 -0.869996 vn 0.374280 0.205791 -0.904193 vn 0.381752 -0.066370 -0.921879 vn 0.646802 0.404096 -0.646802 vn 0.665655 0.337351 -0.665655 vn 0.691923 0.206120 -0.691923 vn 0.705542 -0.066480 -0.705543 vn 0.845438 0.403546 -0.349835 vn 0.869996 0.336859 -0.360047 vn 0.904193 0.205791 -0.374280 vn 0.921879 -0.066369 -0.381752 vn 0.900182 -0.435513 0.000000 vn 0.729611 -0.683863 0.000000 vn 0.693951 -0.720022 -0.000000 vn 0.793950 -0.607983 0.000000 vn 0.831437 -0.436180 0.344179 vn 0.673512 -0.684666 0.278594 vn 0.640399 -0.720924 0.264874 vn 0.732949 -0.608995 0.303167 vn 0.636092 -0.436778 0.636092 vn 0.514965 -0.685290 0.514965 vn 0.489651 -0.721446 0.489651 vn 0.560555 -0.609554 0.560555 vn 0.344179 -0.436180 0.831437 vn 0.278595 -0.684666 0.673512 vn 0.264874 -0.720924 0.640399 vn 0.303167 -0.608995 0.732949 vn -0.000000 -0.435513 0.900182 vn -0.000000 -0.683863 0.729611 vn 0.000000 -0.720022 0.693951 vn -0.000000 -0.607983 0.793950 vn -0.344179 -0.436180 0.831437 vn -0.278594 -0.684666 0.673512 vn -0.264874 -0.720924 0.640399 vn -0.303167 -0.608995 0.732949 vn -0.636092 -0.436778 0.636092 vn -0.514965 -0.685290 0.514965 vn -0.489651 -0.721446 0.489651 vn -0.560555 -0.609554 0.560555 vn -0.831437 -0.436180 0.344179 vn -0.673512 -0.684666 0.278595 vn -0.640399 -0.720924 0.264874 vn -0.732949 -0.608995 0.303167 vn -0.900182 -0.435513 -0.000000 vn -0.729611 -0.683863 -0.000000 vn -0.693951 -0.720022 0.000000 vn -0.793950 -0.607983 -0.000000 vn -0.831437 -0.436180 -0.344179 vn -0.673512 -0.684666 -0.278594 vn -0.640399 -0.720924 -0.264874 vn -0.732949 -0.608995 -0.303167 vn -0.636092 -0.436778 -0.636092 vn -0.514965 -0.685290 -0.514965 vn -0.489651 -0.721446 -0.489651 vn -0.560555 -0.609554 -0.560555 vn -0.344179 -0.436180 -0.831437 vn -0.278595 -0.684666 -0.673512 vn -0.264874 -0.720924 -0.640399 vn -0.303167 -0.608995 -0.732949 vn 0.000000 -0.435513 -0.900182 vn 0.000000 -0.683863 -0.729611 vn -0.000000 -0.720022 -0.693951 vn 0.000000 -0.607983 -0.793950 vn 0.344179 -0.436180 -0.831437 vn 0.278594 -0.684666 -0.673512 vn 0.264874 -0.720924 -0.640399 vn 0.303167 -0.608995 -0.732949 vn 0.636092 -0.436778 -0.636092 vn 0.514965 -0.685290 -0.514965 vn 0.489651 -0.721446 -0.489651 vn 0.560555 -0.609554 -0.560555 vn 0.831437 -0.436180 -0.344179 vn 0.673512 -0.684666 -0.278595 vn 0.640399 -0.720924 -0.264874 vn 0.732949 -0.608995 -0.303167 vn 0.623860 -0.781536 0.000000 vn 0.177291 -0.984159 -0.000000 vn 0.049207 -0.998789 0.000000 vn 0.000000 -1.000000 0.000000 vn 0.576230 -0.781801 0.238217 vn 0.163628 -0.984208 0.067527 vn 0.045422 -0.998792 0.018736 vn 0.440416 -0.782348 0.440416 vn 0.124903 -0.984276 0.124903 vn 0.034662 -0.998798 0.034662 vn 0.238217 -0.781801 0.576230 vn 0.067527 -0.984208 0.163628 vn 0.018736 -0.998792 0.045422 vn -0.000000 -0.781536 0.623860 vn 0.000000 -0.984159 0.177291 vn -0.000000 -0.998789 0.049207 vn -0.238217 -0.781801 0.576230 vn -0.067527 -0.984208 0.163628 vn -0.018736 -0.998792 0.045422 vn -0.440416 -0.782348 0.440416 vn -0.124903 -0.984276 0.124903 vn -0.034662 -0.998798 0.034662 vn -0.576230 -0.781801 0.238217 vn -0.163628 -0.984208 0.067527 vn -0.045422 -0.998792 0.018736 vn -0.623860 -0.781536 -0.000000 vn -0.177291 -0.984159 0.000000 vn -0.049207 -0.998789 -0.000000 vn -0.576230 -0.781801 -0.238217 vn -0.163628 -0.984208 -0.067527 vn -0.045422 -0.998792 -0.018736 vn -0.440416 -0.782348 -0.440416 vn -0.124903 -0.984276 -0.124903 vn -0.034662 -0.998798 -0.034662 vn -0.238217 -0.781801 -0.576230 vn -0.067527 -0.984208 -0.163628 vn -0.018736 -0.998792 -0.045422 vn 0.000000 -0.781536 -0.623860 vn -0.000000 -0.984159 -0.177291 vn 0.000000 -0.998789 -0.049207 vn 0.238217 -0.781801 -0.576230 vn 0.067527 -0.984208 -0.163628 vn 0.018736 -0.998792 -0.045422 vn 0.440416 -0.782348 -0.440416 vn 0.124903 -0.984276 -0.124903 vn 0.034662 -0.998798 -0.034662 vn 0.576230 -0.781801 -0.238217 vn 0.163628 -0.984208 -0.067527 vn 0.045422 -0.998792 -0.018736 vn 0.007786 -0.999970 -0.000216 vn 0.039138 -0.999233 -0.000989 vn 0.179512 -0.983746 -0.004369 vn 0.612299 -0.790557 -0.010460 vn 0.986152 -0.165708 -0.006670 vn 0.007039 -0.812495 0.582926 vn 0.036127 -0.837257 0.545614 vn 0.161846 -0.810421 0.563048 vn 0.482365 -0.595148 0.642746 vn 0.738720 -0.114594 0.664199 vn -0.001909 0.162121 0.986769 vn 0.002762 0.017107 0.999850 vn 0.010533 0.073398 0.997247 vn -0.066041 0.130070 0.989303 vn -0.094427 0.016594 0.995393 vn -0.009203 0.871509 0.490293 vn -0.048606 0.840609 0.539457 vn -0.223298 0.802880 0.552739 vn -0.596365 0.559971 0.575135 vn -0.803337 0.068236 0.591603 vn -0.010561 0.999944 0.000103 vn -0.058798 0.998270 0.000710 vn -0.280710 0.959787 0.003269 vn -0.749723 0.661738 0.004268 vn -0.997351 0.072714 0.002059 vn -0.008792 0.871493 -0.490330 vn -0.046494 0.841178 -0.538756 vn -0.217909 0.806807 -0.549161 vn -0.597291 0.560026 -0.574121 vn -0.804000 0.062913 -0.591292 vn -0.001806 0.161691 -0.986840 vn 0.002031 0.014555 -0.999892 vn 0.009215 0.060069 -0.998152 vn -0.059334 0.113865 -0.991723 vn -0.086899 0.012290 -0.996141 vn 0.006418 -0.812379 -0.583095 vn 0.033783 -0.837512 -0.545373 vn 0.157113 -0.811947 -0.562190 vn 0.484406 -0.589366 -0.646528 vn 0.738870 -0.101320 -0.666187 vn 0.946512 0.322650 -0.003357 vn 0.825830 0.563870 -0.007452 vn 0.650011 0.759893 -0.006937 vn 0.532429 0.846459 -0.005245 vn 0.725608 0.259351 0.637361 vn 0.645945 0.461988 0.607719 vn 0.531615 0.636660 0.558614 vn 0.424964 0.681717 0.595540 vn -0.049562 -0.019755 0.998576 vn -0.037816 -0.035624 0.998650 vn -0.037914 -0.036512 0.998614 vn -0.168854 -0.297945 0.939530 vn -0.742342 -0.299166 0.599523 vn -0.619602 -0.529406 0.579502 vn -0.483708 -0.685760 0.543837 vn -0.445293 -0.794355 0.413177 vn -0.926513 -0.376258 0.001996 vn -0.753920 -0.656952 0.004317 vn -0.566224 -0.824244 0.003461 vn -0.481804 -0.876277 0.001850 vn -0.744675 -0.294425 -0.598977 vn -0.621949 -0.528114 -0.578165 vn -0.481171 -0.688340 -0.542828 vn -0.438055 -0.797035 -0.415744 vn -0.044337 -0.017056 -0.998871 vn -0.026176 -0.028166 -0.999260 vn -0.025294 -0.028332 -0.999278 vn -0.157482 -0.289392 -0.944167 vn 0.728244 0.252410 -0.637142 vn 0.647055 0.459725 -0.608254 vn 0.522994 0.640657 -0.562170 vn 0.409978 0.682857 -0.604669 vn -0.230787 0.972982 -0.006523 vn -0.548936 0.835863 -0.001511 vn -0.875671 0.482806 0.009893 vn -0.877554 0.479097 0.019092 vn -0.696190 0.717439 0.024497 vn -0.152877 0.687211 0.710190 vn -0.316721 0.637750 0.702113 vn -0.601067 0.471452 0.645330 vn -0.635889 0.446090 0.629801 vn -0.435746 0.601008 0.670011 vn 0.111113 -0.085070 0.990160 vn 0.223310 0.006540 0.974726 vn 0.190097 0.154964 0.969458 vn 0.005271 0.189482 0.981870 vn -0.011752 0.246688 0.969024 vn 0.343906 -0.722796 0.599412 vn 0.572489 -0.567656 0.591627 vn 0.787436 -0.256459 0.560512 vn 0.647097 -0.306374 0.698141 vn 0.427528 -0.499343 0.753576 vn 0.410926 -0.911668 0.001284 vn 0.671520 -0.740986 -0.000899 vn 0.922026 -0.387060 -0.007253 vn 0.846910 -0.531556 -0.013854 vn 0.535924 -0.844201 -0.010505 vn 0.341188 -0.722823 -0.600931 vn 0.578664 -0.561139 -0.591838 vn 0.784869 -0.251020 -0.566542 vn 0.642681 -0.302257 -0.703990 vn 0.418589 -0.500042 -0.758117 vn 0.115806 -0.079139 -0.990114 vn 0.232811 0.012565 -0.972441 vn 0.206662 0.153601 -0.966280 vn 0.024500 0.161443 -0.986578 vn 0.003382 0.211115 -0.977455 vn -0.134912 0.687491 -0.713551 vn -0.319540 0.633073 -0.705063 vn -0.603902 0.461442 -0.649903 vn -0.631815 0.437169 -0.640072 vn -0.424306 0.612706 -0.666750 vn -0.425801 0.904753 0.010805 vn 0.022046 0.999756 0.001623 vn 0.999598 0.025875 0.011556 vn 0.709587 -0.704552 0.009672 vn -0.259858 0.791937 0.552548 vn 0.009539 0.999720 -0.021674 vn 0.410157 0.332912 -0.849082 vn 0.541523 -0.548619 -0.637001 vn 0.046311 0.455223 0.889172 vn -0.010688 0.988794 0.148900 vn -0.044376 0.682946 -0.729120 vn 0.122824 0.009233 -0.992385 vn 0.481839 -0.180440 0.857480 vn 0.455272 0.736752 0.499925 vn -0.220542 0.907193 -0.358277 vn -0.235919 0.657250 -0.715797 vn 0.728094 -0.685300 -0.015585 vn 0.888738 0.458112 -0.016679 vn -0.260098 0.965582 0.000800 vn -0.371611 0.928378 -0.004418 vn 0.480165 -0.178362 -0.858853 vn 0.488102 0.716802 -0.497947 vn -0.222004 0.905399 0.361892 vn -0.235405 0.663180 0.710477 vn 0.058720 0.437702 -0.897200 vn 0.001326 0.986459 -0.164002 vn -0.044190 0.681675 0.730319 vn 0.138801 -0.034188 0.989730 vn -0.258890 0.797206 -0.545380 vn 0.012270 0.999739 0.019287 vn 0.398632 0.354890 0.845663 vn 0.537564 -0.581398 0.610738 vn 0.000000 1.000000 0.000000 vn 0.824540 0.565804 0.000017 vn 0.917701 -0.397272 0.000034 vn 0.935269 -0.353939 0.000113 vn 0.780712 0.624890 0.000075 vn 0.762640 0.565035 0.314825 vn 0.847982 -0.397998 0.350034 vn 0.864141 -0.355261 0.356441 vn 0.720992 0.625625 0.297933 vn 0.583357 0.565165 0.583338 vn 0.648485 -0.398726 0.648448 vn 0.660872 -0.355894 0.660748 vn 0.551862 0.625290 0.551780 vn 0.314824 0.565051 0.762629 vn 0.350045 -0.397976 0.847988 vn 0.356474 -0.355199 0.864153 vn 0.297983 0.625515 0.721067 vn -0.000017 0.565804 0.824540 vn -0.000034 -0.397272 0.917701 vn -0.000113 -0.353939 0.935269 vn -0.000075 0.624890 0.780712 vn -0.314825 0.565035 0.762640 vn -0.350034 -0.397998 0.847982 vn -0.356441 -0.355261 0.864141 vn -0.297933 0.625625 0.720992 vn -0.583338 0.565165 0.583357 vn -0.648448 -0.398726 0.648485 vn -0.660748 -0.355894 0.660872 vn -0.551780 0.625290 0.551862 vn -0.762629 0.565051 0.314824 vn -0.847988 -0.397976 0.350045 vn -0.864153 -0.355199 0.356474 vn -0.721067 0.625515 0.297983 vn -0.824540 0.565804 -0.000017 vn -0.917701 -0.397272 -0.000034 vn -0.935269 -0.353939 -0.000113 vn -0.780712 0.624890 -0.000075 vn -0.762640 0.565035 -0.314825 vn -0.847982 -0.397998 -0.350034 vn -0.864141 -0.355261 -0.356441 vn -0.720992 0.625625 -0.297933 vn -0.583357 0.565165 -0.583338 vn -0.648485 -0.398726 -0.648448 vn -0.660872 -0.355894 -0.660748 vn -0.551862 0.625290 -0.551780 vn -0.314824 0.565051 -0.762629 vn -0.350045 -0.397976 -0.847988 vn -0.356474 -0.355199 -0.864153 vn -0.297983 0.625515 -0.721067 vn 0.000017 0.565804 -0.824540 vn 0.000034 -0.397272 -0.917701 vn 0.000113 -0.353939 -0.935269 vn 0.000075 0.624890 -0.780712 vn 0.314825 0.565035 -0.762640 vn 0.350034 -0.397998 -0.847982 vn 0.356441 -0.355261 -0.864141 vn 0.297933 0.625625 -0.720992 vn 0.583338 0.565165 -0.583357 vn 0.648448 -0.398726 -0.648485 vn 0.660748 -0.355894 -0.660872 vn 0.551780 0.625290 -0.551862 vn 0.762629 0.565051 -0.314824 vn 0.847988 -0.397976 -0.350045 vn 0.864153 -0.355199 -0.356474 vn 0.721067 0.625515 -0.297983 vn 0.236583 0.971611 -0.000000 vn 0.173084 0.984907 -0.000000 vn 0.379703 0.925108 -0.000000 vn 0.526673 0.850068 0.000000 vn 0.217978 0.971775 0.090216 vn 0.159589 0.984977 0.065961 vn 0.350498 0.925311 0.144740 vn 0.485590 0.850653 0.201474 vn 0.166631 0.971838 0.166631 vn 0.121908 0.985026 0.121908 vn 0.267668 0.925585 0.267668 vn 0.371315 0.851029 0.371315 vn 0.090216 0.971775 0.217978 vn 0.065961 0.984977 0.159589 vn 0.144740 0.925311 0.350498 vn 0.201475 0.850653 0.485590 vn 0.000000 0.971611 0.236583 vn 0.000000 0.984907 0.173084 vn 0.000000 0.925108 0.379703 vn -0.000000 0.850068 0.526673 vn -0.090216 0.971775 0.217978 vn -0.065961 0.984977 0.159589 vn -0.144740 0.925311 0.350498 vn -0.201474 0.850653 0.485590 vn -0.166631 0.971838 0.166631 vn -0.121908 0.985026 0.121908 vn -0.267668 0.925585 0.267668 vn -0.371315 0.851029 0.371315 vn -0.217978 0.971775 0.090216 vn -0.159589 0.984977 0.065961 vn -0.350498 0.925311 0.144740 vn -0.485590 0.850653 0.201475 vn -0.236583 0.971611 0.000000 vn -0.173084 0.984907 0.000000 vn -0.379703 0.925108 0.000000 vn -0.526673 0.850068 -0.000000 vn -0.217978 0.971775 -0.090216 vn -0.159589 0.984977 -0.065961 vn -0.350498 0.925311 -0.144740 vn -0.485590 0.850653 -0.201474 vn -0.166631 0.971838 -0.166631 vn -0.121908 0.985026 -0.121908 vn -0.267668 0.925585 -0.267668 vn -0.371315 0.851029 -0.371315 vn -0.090216 0.971775 -0.217978 vn -0.065961 0.984977 -0.159589 vn -0.144740 0.925311 -0.350498 vn -0.201475 0.850653 -0.485590 vn -0.000000 0.971611 -0.236583 vn -0.000000 0.984907 -0.173084 vn -0.000000 0.925108 -0.379703 vn 0.000000 0.850068 -0.526673 vn 0.090216 0.971775 -0.217978 vn 0.065961 0.984977 -0.159589 vn 0.144740 0.925311 -0.350498 vn 0.201474 0.850653 -0.485590 vn 0.166631 0.971838 -0.166631 vn 0.121908 0.985026 -0.121908 vn 0.267668 0.925585 -0.267668 vn 0.371315 0.851029 -0.371315 vn 0.217978 0.971775 -0.090216 vn 0.159589 0.984977 -0.065961 vn 0.350498 0.925311 -0.144740 vn 0.485590 0.850653 -0.201475 # 530 vertex normals g Teapot01 f 1/1/1 6/6/6 7/7/7 f 7/7/7 2/2/2 1/1/1 f 2/2/2 7/7/7 8/8/8 f 8/8/8 3/3/3 2/2/2 f 3/3/3 8/8/8 9/9/9 f 9/9/9 4/4/4 3/3/3 f 4/4/4 9/9/9 10/10/10 f 10/10/10 5/5/5 4/4/4 f 6/6/6 11/11/11 12/12/12 f 12/12/12 7/7/7 6/6/6 f 7/7/7 12/12/12 13/13/13 f 13/13/13 8/8/8 7/7/7 f 8/8/8 13/13/13 14/14/14 f 14/14/14 9/9/9 8/8/8 f 9/9/9 14/14/14 15/15/15 f 15/15/15 10/10/10 9/9/9 f 11/11/11 16/16/16 17/17/17 f 17/17/17 12/12/12 11/11/11 f 12/12/12 17/17/17 18/18/18 f 18/18/18 13/13/13 12/12/12 f 13/13/13 18/18/18 19/19/19 f 19/19/19 14/14/14 13/13/13 f 14/14/14 19/19/19 20/20/20 f 20/20/20 15/15/15 14/14/14 f 16/16/16 21/21/21 22/22/22 f 22/22/22 17/17/17 16/16/16 f 17/17/17 22/22/22 23/23/23 f 23/23/23 18/18/18 17/17/17 f 18/18/18 23/23/23 24/24/24 f 24/24/24 19/19/19 18/18/18 f 19/19/19 24/24/24 25/25/25 f 25/25/25 20/20/20 19/19/19 f 21/26/21 26/31/26 27/32/27 f 27/32/27 22/27/22 21/26/21 f 22/27/22 27/32/27 28/33/28 f 28/33/28 23/28/23 22/27/22 f 23/28/23 28/33/28 29/34/29 f 29/34/29 24/29/24 23/28/23 f 24/29/24 29/34/29 30/35/30 f 30/35/30 25/30/25 24/29/24 f 26/31/26 31/36/31 32/37/32 f 32/37/32 27/32/27 26/31/26 f 27/32/27 32/37/32 33/38/33 f 33/38/33 28/33/28 27/32/27 f 28/33/28 33/38/33 34/39/34 f 34/39/34 29/34/29 28/33/28 f 29/34/29 34/39/34 35/40/35 f 35/40/35 30/35/30 29/34/29 f 31/36/31 36/41/36 37/42/37 f 37/42/37 32/37/32 31/36/31 f 32/37/32 37/42/37 38/43/38 f 38/43/38 33/38/33 32/37/32 f 33/38/33 38/43/38 39/44/39 f 39/44/39 34/39/34 33/38/33 f 34/39/34 39/44/39 40/45/40 f 40/45/40 35/40/35 34/39/34 f 36/41/36 41/46/41 42/47/42 f 42/47/42 37/42/37 36/41/36 f 37/42/37 42/47/42 43/48/43 f 43/48/43 38/43/38 37/42/37 f 38/43/38 43/48/43 44/49/44 f 44/49/44 39/44/39 38/43/38 f 39/44/39 44/49/44 45/50/45 f 45/50/45 40/45/40 39/44/39 f 41/51/41 46/56/46 47/57/47 f 47/57/47 42/52/42 41/51/41 f 42/52/42 47/57/47 48/58/48 f 48/58/48 43/53/43 42/52/42 f 43/53/43 48/58/48 49/59/49 f 49/59/49 44/54/44 43/53/43 f 44/54/44 49/59/49 50/60/50 f 50/60/50 45/55/45 44/54/44 f 46/56/46 51/61/51 52/62/52 f 52/62/52 47/57/47 46/56/46 f 47/57/47 52/62/52 53/63/53 f 53/63/53 48/58/48 47/57/47 f 48/58/48 53/63/53 54/64/54 f 54/64/54 49/59/49 48/58/48 f 49/59/49 54/64/54 55/65/55 f 55/65/55 50/60/50 49/59/49 f 51/61/51 56/66/56 57/67/57 f 57/67/57 52/62/52 51/61/51 f 52/62/52 57/67/57 58/68/58 f 58/68/58 53/63/53 52/62/52 f 53/63/53 58/68/58 59/69/59 f 59/69/59 54/64/54 53/63/53 f 54/64/54 59/69/59 60/70/60 f 60/70/60 55/65/55 54/64/54 f 56/66/56 61/71/61 62/72/62 f 62/72/62 57/67/57 56/66/56 f 57/67/57 62/72/62 63/73/63 f 63/73/63 58/68/58 57/67/57 f 58/68/58 63/73/63 64/74/64 f 64/74/64 59/69/59 58/68/58 f 59/69/59 64/74/64 65/75/65 f 65/75/65 60/70/60 59/69/59 f 61/76/61 66/81/66 67/82/67 f 67/82/67 62/77/62 61/76/61 f 62/77/62 67/82/67 68/83/68 f 68/83/68 63/78/63 62/77/62 f 63/78/63 68/83/68 69/84/69 f 69/84/69 64/79/64 63/78/63 f 64/79/64 69/84/69 70/85/70 f 70/85/70 65/80/65 64/79/64 f 66/81/66 71/86/71 72/87/72 f 72/87/72 67/82/67 66/81/66 f 67/82/67 72/87/72 73/88/73 f 73/88/73 68/83/68 67/82/67 f 68/83/68 73/88/73 74/89/74 f 74/89/74 69/84/69 68/83/68 f 69/84/69 74/89/74 75/90/75 f 75/90/75 70/85/70 69/84/69 f 71/86/71 76/91/76 77/92/77 f 77/92/77 72/87/72 71/86/71 f 72/87/72 77/92/77 78/93/78 f 78/93/78 73/88/73 72/87/72 f 73/88/73 78/93/78 79/94/79 f 79/94/79 74/89/74 73/88/73 f 74/89/74 79/94/79 80/95/80 f 80/95/80 75/90/75 74/89/74 f 76/91/76 1/96/1 2/97/2 f 2/97/2 77/92/77 76/91/76 f 77/92/77 2/97/2 3/98/3 f 3/98/3 78/93/78 77/92/77 f 78/93/78 3/98/3 4/99/4 f 4/99/4 79/94/79 78/93/78 f 79/94/79 4/99/4 5/100/5 f 5/100/5 80/95/80 79/94/79 f 5/101/5 10/106/10 85/107/85 f 85/107/85 81/102/81 5/101/5 f 81/102/81 85/107/85 86/108/86 f 86/108/86 82/103/82 81/102/81 f 82/103/82 86/108/86 87/109/87 f 87/109/87 83/104/83 82/103/82 f 83/104/83 87/109/87 88/110/88 f 88/110/88 84/105/84 83/104/83 f 10/106/10 15/111/15 89/112/89 f 89/112/89 85/107/85 10/106/10 f 85/107/85 89/112/89 90/113/90 f 90/113/90 86/108/86 85/107/85 f 86/108/86 90/113/90 91/114/91 f 91/114/91 87/109/87 86/108/86 f 87/109/87 91/114/91 92/115/92 f 92/115/92 88/110/88 87/109/87 f 15/111/15 20/116/20 93/117/93 f 93/117/93 89/112/89 15/111/15 f 89/112/89 93/117/93 94/118/94 f 94/118/94 90/113/90 89/112/89 f 90/113/90 94/118/94 95/119/95 f 95/119/95 91/114/91 90/113/90 f 91/114/91 95/119/95 96/120/96 f 96/120/96 92/115/92 91/114/91 f 20/116/20 25/121/25 97/122/97 f 97/122/97 93/117/93 20/116/20 f 93/117/93 97/122/97 98/123/98 f 98/123/98 94/118/94 93/117/93 f 94/118/94 98/123/98 99/124/99 f 99/124/99 95/119/95 94/118/94 f 95/119/95 99/124/99 100/125/100 f 100/125/100 96/120/96 95/119/95 f 25/126/25 30/131/30 101/132/101 f 101/132/101 97/127/97 25/126/25 f 97/127/97 101/132/101 102/133/102 f 102/133/102 98/128/98 97/127/97 f 98/128/98 102/133/102 103/134/103 f 103/134/103 99/129/99 98/128/98 f 99/129/99 103/134/103 104/135/104 f 104/135/104 100/130/100 99/129/99 f 30/131/30 35/136/35 105/137/105 f 105/137/105 101/132/101 30/131/30 f 101/132/101 105/137/105 106/138/106 f 106/138/106 102/133/102 101/132/101 f 102/133/102 106/138/106 107/139/107 f 107/139/107 103/134/103 102/133/102 f 103/134/103 107/139/107 108/140/108 f 108/140/108 104/135/104 103/134/103 f 35/136/35 40/141/40 109/142/109 f 109/142/109 105/137/105 35/136/35 f 105/137/105 109/142/109 110/143/110 f 110/143/110 106/138/106 105/137/105 f 106/138/106 110/143/110 111/144/111 f 111/144/111 107/139/107 106/138/106 f 107/139/107 111/144/111 112/145/112 f 112/145/112 108/140/108 107/139/107 f 40/141/40 45/146/45 113/147/113 f 113/147/113 109/142/109 40/141/40 f 109/142/109 113/147/113 114/148/114 f 114/148/114 110/143/110 109/142/109 f 110/143/110 114/148/114 115/149/115 f 115/149/115 111/144/111 110/143/110 f 111/144/111 115/149/115 116/150/116 f 116/150/116 112/145/112 111/144/111 f 45/151/45 50/156/50 117/157/117 f 117/157/117 113/152/113 45/151/45 f 113/152/113 117/157/117 118/158/118 f 118/158/118 114/153/114 113/152/113 f 114/153/114 118/158/118 119/159/119 f 119/159/119 115/154/115 114/153/114 f 115/154/115 119/159/119 120/160/120 f 120/160/120 116/155/116 115/154/115 f 50/156/50 55/161/55 121/162/121 f 121/162/121 117/157/117 50/156/50 f 117/157/117 121/162/121 122/163/122 f 122/163/122 118/158/118 117/157/117 f 118/158/118 122/163/122 123/164/123 f 123/164/123 119/159/119 118/158/118 f 119/159/119 123/164/123 124/165/124 f 124/165/124 120/160/120 119/159/119 f 55/161/55 60/166/60 125/167/125 f 125/167/125 121/162/121 55/161/55 f 121/162/121 125/167/125 126/168/126 f 126/168/126 122/163/122 121/162/121 f 122/163/122 126/168/126 127/169/127 f 127/169/127 123/164/123 122/163/122 f 123/164/123 127/169/127 128/170/128 f 128/170/128 124/165/124 123/164/123 f 60/166/60 65/171/65 129/172/129 f 129/172/129 125/167/125 60/166/60 f 125/167/125 129/172/129 130/173/130 f 130/173/130 126/168/126 125/167/125 f 126/168/126 130/173/130 131/174/131 f 131/174/131 127/169/127 126/168/126 f 127/169/127 131/174/131 132/175/132 f 132/175/132 128/170/128 127/169/127 f 65/176/65 70/181/70 133/182/133 f 133/182/133 129/177/129 65/176/65 f 129/177/129 133/182/133 134/183/134 f 134/183/134 130/178/130 129/177/129 f 130/178/130 134/183/134 135/184/135 f 135/184/135 131/179/131 130/178/130 f 131/179/131 135/184/135 136/185/136 f 136/185/136 132/180/132 131/179/131 f 70/181/70 75/186/75 137/187/137 f 137/187/137 133/182/133 70/181/70 f 133/182/133 137/187/137 138/188/138 f 138/188/138 134/183/134 133/182/133 f 134/183/134 138/188/138 139/189/139 f 139/189/139 135/184/135 134/183/134 f 135/184/135 139/189/139 140/190/140 f 140/190/140 136/185/136 135/184/135 f 75/186/75 80/191/80 141/192/141 f 141/192/141 137/187/137 75/186/75 f 137/187/137 141/192/141 142/193/142 f 142/193/142 138/188/138 137/187/137 f 138/188/138 142/193/142 143/194/143 f 143/194/143 139/189/139 138/188/138 f 139/189/139 143/194/143 144/195/144 f 144/195/144 140/190/140 139/189/139 f 80/191/80 5/196/5 81/197/81 f 81/197/81 141/192/141 80/191/80 f 141/192/141 81/197/81 82/198/82 f 82/198/82 142/193/142 141/192/141 f 142/193/142 82/198/82 83/199/83 f 83/199/83 143/194/143 142/193/142 f 143/194/143 83/199/83 84/200/84 f 84/200/84 144/195/144 143/194/143 f 84/201/84 88/206/88 149/207/149 f 149/207/149 145/202/145 84/201/84 f 145/202/145 149/207/149 150/208/150 f 150/208/150 146/203/146 145/202/145 f 146/203/146 150/208/150 151/209/151 f 151/209/151 147/204/147 146/203/146 f 147/204/147 151/209/151 152/210/152 f 152/210/152 148/205/148 147/204/147 f 88/206/88 92/211/92 153/212/153 f 153/212/153 149/207/149 88/206/88 f 149/207/149 153/212/153 154/213/154 f 154/213/154 150/208/150 149/207/149 f 150/208/150 154/213/154 155/214/155 f 155/214/155 151/209/151 150/208/150 f 151/209/151 155/214/155 156/215/156 f 156/215/156 152/210/152 151/209/151 f 92/211/92 96/216/96 157/217/157 f 157/217/157 153/212/153 92/211/92 f 153/212/153 157/217/157 158/218/158 f 158/218/158 154/213/154 153/212/153 f 154/213/154 158/218/158 159/219/159 f 159/219/159 155/214/155 154/213/154 f 155/214/155 159/219/159 160/220/160 f 160/220/160 156/215/156 155/214/155 f 96/216/96 100/221/100 161/222/161 f 161/222/161 157/217/157 96/216/96 f 157/217/157 161/222/161 162/223/162 f 162/223/162 158/218/158 157/217/157 f 158/218/158 162/223/162 163/224/163 f 163/224/163 159/219/159 158/218/158 f 159/219/159 163/224/163 164/225/164 f 164/225/164 160/220/160 159/219/159 f 100/226/100 104/231/104 165/232/165 f 165/232/165 161/227/161 100/226/100 f 161/227/161 165/232/165 166/233/166 f 166/233/166 162/228/162 161/227/161 f 162/228/162 166/233/166 167/234/167 f 167/234/167 163/229/163 162/228/162 f 163/229/163 167/234/167 168/235/168 f 168/235/168 164/230/164 163/229/163 f 104/231/104 108/236/108 169/237/169 f 169/237/169 165/232/165 104/231/104 f 165/232/165 169/237/169 170/238/170 f 170/238/170 166/233/166 165/232/165 f 166/233/166 170/238/170 171/239/171 f 171/239/171 167/234/167 166/233/166 f 167/234/167 171/239/171 172/240/172 f 172/240/172 168/235/168 167/234/167 f 108/236/108 112/241/112 173/242/173 f 173/242/173 169/237/169 108/236/108 f 169/237/169 173/242/173 174/243/174 f 174/243/174 170/238/170 169/237/169 f 170/238/170 174/243/174 175/244/175 f 175/244/175 171/239/171 170/238/170 f 171/239/171 175/244/175 176/245/176 f 176/245/176 172/240/172 171/239/171 f 112/241/112 116/246/116 177/247/177 f 177/247/177 173/242/173 112/241/112 f 173/242/173 177/247/177 178/248/178 f 178/248/178 174/243/174 173/242/173 f 174/243/174 178/248/178 179/249/179 f 179/249/179 175/244/175 174/243/174 f 175/244/175 179/249/179 180/250/180 f 180/250/180 176/245/176 175/244/175 f 116/251/116 120/256/120 181/257/181 f 181/257/181 177/252/177 116/251/116 f 177/252/177 181/257/181 182/258/182 f 182/258/182 178/253/178 177/252/177 f 178/253/178 182/258/182 183/259/183 f 183/259/183 179/254/179 178/253/178 f 179/254/179 183/259/183 184/260/184 f 184/260/184 180/255/180 179/254/179 f 120/256/120 124/261/124 185/262/185 f 185/262/185 181/257/181 120/256/120 f 181/257/181 185/262/185 186/263/186 f 186/263/186 182/258/182 181/257/181 f 182/258/182 186/263/186 187/264/187 f 187/264/187 183/259/183 182/258/182 f 183/259/183 187/264/187 188/265/188 f 188/265/188 184/260/184 183/259/183 f 124/261/124 128/266/128 189/267/189 f 189/267/189 185/262/185 124/261/124 f 185/262/185 189/267/189 190/268/190 f 190/268/190 186/263/186 185/262/185 f 186/263/186 190/268/190 191/269/191 f 191/269/191 187/264/187 186/263/186 f 187/264/187 191/269/191 192/270/192 f 192/270/192 188/265/188 187/264/187 f 128/266/128 132/271/132 193/272/193 f 193/272/193 189/267/189 128/266/128 f 189/267/189 193/272/193 194/273/194 f 194/273/194 190/268/190 189/267/189 f 190/268/190 194/273/194 195/274/195 f 195/274/195 191/269/191 190/268/190 f 191/269/191 195/274/195 196/275/196 f 196/275/196 192/270/192 191/269/191 f 132/276/132 136/281/136 197/282/197 f 197/282/197 193/277/193 132/276/132 f 193/277/193 197/282/197 198/283/198 f 198/283/198 194/278/194 193/277/193 f 194/278/194 198/283/198 199/284/199 f 199/284/199 195/279/195 194/278/194 f 195/279/195 199/284/199 200/285/200 f 200/285/200 196/280/196 195/279/195 f 136/281/136 140/286/140 201/287/201 f 201/287/201 197/282/197 136/281/136 f 197/282/197 201/287/201 202/288/202 f 202/288/202 198/283/198 197/282/197 f 198/283/198 202/288/202 203/289/203 f 203/289/203 199/284/199 198/283/198 f 199/284/199 203/289/203 204/290/204 f 204/290/204 200/285/200 199/284/199 f 140/286/140 144/291/144 205/292/205 f 205/292/205 201/287/201 140/286/140 f 201/287/201 205/292/205 206/293/206 f 206/293/206 202/288/202 201/287/201 f 202/288/202 206/293/206 207/294/207 f 207/294/207 203/289/203 202/288/202 f 203/289/203 207/294/207 208/295/208 f 208/295/208 204/290/204 203/289/203 f 144/291/144 84/296/84 145/297/145 f 145/297/145 205/292/205 144/291/144 f 205/292/205 145/297/145 146/298/146 f 146/298/146 206/293/206 205/292/205 f 206/293/206 146/298/146 147/299/147 f 147/299/147 207/294/207 206/293/206 f 207/294/207 147/299/147 148/300/148 f 148/300/148 208/295/208 207/294/207 f 148/301/148 152/306/152 213/307/213 f 213/307/213 209/302/209 148/301/148 f 209/302/209 213/307/213 214/308/214 f 214/308/214 210/303/210 209/302/209 f 210/303/210 214/308/214 215/309/215 f 215/309/215 211/304/211 210/303/210 f 211/304/211 215/309/215 212/310/212 f 152/306/152 156/311/156 216/312/216 f 216/312/216 213/307/213 152/306/152 f 213/307/213 216/312/216 217/313/217 f 217/313/217 214/308/214 213/307/213 f 214/308/214 217/313/217 218/314/218 f 218/314/218 215/309/215 214/308/214 f 215/309/215 218/314/218 212/315/212 f 156/311/156 160/316/160 219/317/219 f 219/317/219 216/312/216 156/311/156 f 216/312/216 219/317/219 220/318/220 f 220/318/220 217/313/217 216/312/216 f 217/313/217 220/318/220 221/319/221 f 221/319/221 218/314/218 217/313/217 f 218/314/218 221/319/221 212/320/212 f 160/316/160 164/321/164 222/322/222 f 222/322/222 219/317/219 160/316/160 f 219/317/219 222/322/222 223/323/223 f 223/323/223 220/318/220 219/317/219 f 220/318/220 223/323/223 224/324/224 f 224/324/224 221/319/221 220/318/220 f 221/319/221 224/324/224 212/325/212 f 164/326/164 168/331/168 225/332/225 f 225/332/225 222/327/222 164/326/164 f 222/327/222 225/332/225 226/333/226 f 226/333/226 223/328/223 222/327/222 f 223/328/223 226/333/226 227/334/227 f 227/334/227 224/329/224 223/328/223 f 224/329/224 227/334/227 212/335/212 f 168/331/168 172/336/172 228/337/228 f 228/337/228 225/332/225 168/331/168 f 225/332/225 228/337/228 229/338/229 f 229/338/229 226/333/226 225/332/225 f 226/333/226 229/338/229 230/339/230 f 230/339/230 227/334/227 226/333/226 f 227/334/227 230/339/230 212/340/212 f 172/336/172 176/341/176 231/342/231 f 231/342/231 228/337/228 172/336/172 f 228/337/228 231/342/231 232/343/232 f 232/343/232 229/338/229 228/337/228 f 229/338/229 232/343/232 233/344/233 f 233/344/233 230/339/230 229/338/229 f 230/339/230 233/344/233 212/345/212 f 176/341/176 180/346/180 234/347/234 f 234/347/234 231/342/231 176/341/176 f 231/342/231 234/347/234 235/348/235 f 235/348/235 232/343/232 231/342/231 f 232/343/232 235/348/235 236/349/236 f 236/349/236 233/344/233 232/343/232 f 233/344/233 236/349/236 212/350/212 f 180/351/180 184/356/184 237/357/237 f 237/357/237 234/352/234 180/351/180 f 234/352/234 237/357/237 238/358/238 f 238/358/238 235/353/235 234/352/234 f 235/353/235 238/358/238 239/359/239 f 239/359/239 236/354/236 235/353/235 f 236/354/236 239/359/239 212/360/212 f 184/356/184 188/361/188 240/362/240 f 240/362/240 237/357/237 184/356/184 f 237/357/237 240/362/240 241/363/241 f 241/363/241 238/358/238 237/357/237 f 238/358/238 241/363/241 242/364/242 f 242/364/242 239/359/239 238/358/238 f 239/359/239 242/364/242 212/365/212 f 188/361/188 192/366/192 243/367/243 f 243/367/243 240/362/240 188/361/188 f 240/362/240 243/367/243 244/368/244 f 244/368/244 241/363/241 240/362/240 f 241/363/241 244/368/244 245/369/245 f 245/369/245 242/364/242 241/363/241 f 242/364/242 245/369/245 212/370/212 f 192/366/192 196/371/196 246/372/246 f 246/372/246 243/367/243 192/366/192 f 243/367/243 246/372/246 247/373/247 f 247/373/247 244/368/244 243/367/243 f 244/368/244 247/373/247 248/374/248 f 248/374/248 245/369/245 244/368/244 f 245/369/245 248/374/248 212/375/212 f 196/376/196 200/381/200 249/382/249 f 249/382/249 246/377/246 196/376/196 f 246/377/246 249/382/249 250/383/250 f 250/383/250 247/378/247 246/377/246 f 247/378/247 250/383/250 251/384/251 f 251/384/251 248/379/248 247/378/247 f 248/379/248 251/384/251 212/385/212 f 200/381/200 204/386/204 252/387/252 f 252/387/252 249/382/249 200/381/200 f 249/382/249 252/387/252 253/388/253 f 253/388/253 250/383/250 249/382/249 f 250/383/250 253/388/253 254/389/254 f 254/389/254 251/384/251 250/383/250 f 251/384/251 254/389/254 212/390/212 f 204/386/204 208/391/208 255/392/255 f 255/392/255 252/387/252 204/386/204 f 252/387/252 255/392/255 256/393/256 f 256/393/256 253/388/253 252/387/252 f 253/388/253 256/393/256 257/394/257 f 257/394/257 254/389/254 253/388/253 f 254/389/254 257/394/257 212/395/212 f 208/391/208 148/396/148 209/397/209 f 209/397/209 255/392/255 208/391/208 f 255/392/255 209/397/209 210/398/210 f 210/398/210 256/393/256 255/392/255 f 256/393/256 210/398/210 211/399/211 f 211/399/211 257/394/257 256/393/256 f 257/394/257 211/399/211 212/400/212 f 258/401/258 263/406/263 264/407/264 f 264/407/264 259/402/259 258/401/258 f 259/402/259 264/407/264 265/408/265 f 265/408/265 260/403/260 259/402/259 f 260/403/260 265/408/265 266/409/266 f 266/409/266 261/404/261 260/403/260 f 261/404/261 266/409/266 267/410/267 f 267/410/267 262/405/262 261/404/261 f 263/406/263 268/411/268 269/412/269 f 269/412/269 264/407/264 263/406/263 f 264/407/264 269/412/269 270/413/270 f 270/413/270 265/408/265 264/407/264 f 265/408/265 270/413/270 271/414/271 f 271/414/271 266/409/266 265/408/265 f 266/409/266 271/414/271 272/415/272 f 272/415/272 267/410/267 266/409/266 f 268/411/268 273/416/273 274/417/274 f 274/417/274 269/412/269 268/411/268 f 269/412/269 274/417/274 275/418/275 f 275/418/275 270/413/270 269/412/269 f 270/413/270 275/418/275 276/419/276 f 276/419/276 271/414/271 270/413/270 f 271/414/271 276/419/276 277/420/277 f 277/420/277 272/415/272 271/414/271 f 273/416/273 278/421/278 279/422/279 f 279/422/279 274/417/274 273/416/273 f 274/417/274 279/422/279 280/423/280 f 280/423/280 275/418/275 274/417/274 f 275/418/275 280/423/280 281/424/281 f 281/424/281 276/419/276 275/418/275 f 276/419/276 281/424/281 282/425/282 f 282/425/282 277/420/277 276/419/276 f 278/426/278 283/431/283 284/432/284 f 284/432/284 279/427/279 278/426/278 f 279/427/279 284/432/284 285/433/285 f 285/433/285 280/428/280 279/427/279 f 280/428/280 285/433/285 286/434/286 f 286/434/286 281/429/281 280/428/280 f 281/429/281 286/434/286 287/435/287 f 287/435/287 282/430/282 281/429/281 f 283/431/283 288/436/288 289/437/289 f 289/437/289 284/432/284 283/431/283 f 284/432/284 289/437/289 290/438/290 f 290/438/290 285/433/285 284/432/284 f 285/433/285 290/438/290 291/439/291 f 291/439/291 286/434/286 285/433/285 f 286/434/286 291/439/291 292/440/292 f 292/440/292 287/435/287 286/434/286 f 288/436/288 293/441/293 294/442/294 f 294/442/294 289/437/289 288/436/288 f 289/437/289 294/442/294 295/443/295 f 295/443/295 290/438/290 289/437/289 f 290/438/290 295/443/295 296/444/296 f 296/444/296 291/439/291 290/438/290 f 291/439/291 296/444/296 297/445/297 f 297/445/297 292/440/292 291/439/291 f 293/441/293 258/446/258 259/447/259 f 259/447/259 294/442/294 293/441/293 f 294/442/294 259/447/259 260/448/260 f 260/448/260 295/443/295 294/442/294 f 295/443/295 260/448/260 261/449/261 f 261/449/261 296/444/296 295/443/295 f 296/444/296 261/449/261 262/450/262 f 262/450/262 297/445/297 296/444/296 f 262/451/262 267/456/267 302/457/302 f 302/457/302 298/452/298 262/451/262 f 298/452/298 302/457/302 303/458/303 f 303/458/303 299/453/299 298/452/298 f 299/453/299 303/458/303 304/459/304 f 304/459/304 300/454/300 299/453/299 f 300/454/300 304/459/304 305/460/305 f 305/460/305 301/455/301 300/454/300 f 267/456/267 272/461/272 306/462/306 f 306/462/306 302/457/302 267/456/267 f 302/457/302 306/462/306 307/463/307 f 307/463/307 303/458/303 302/457/302 f 303/458/303 307/463/307 308/464/308 f 308/464/308 304/459/304 303/458/303 f 304/459/304 308/464/308 309/465/309 f 309/465/309 305/460/305 304/459/304 f 272/461/272 277/466/277 310/467/310 f 310/467/310 306/462/306 272/461/272 f 306/462/306 310/467/310 311/468/311 f 311/468/311 307/463/307 306/462/306 f 307/463/307 311/468/311 312/469/312 f 312/469/312 308/464/308 307/463/307 f 308/464/308 312/469/312 313/470/313 f 313/470/313 309/465/309 308/464/308 f 277/466/277 282/471/282 314/472/314 f 314/472/314 310/467/310 277/466/277 f 310/467/310 314/472/314 315/473/315 f 315/473/315 311/468/311 310/467/310 f 311/468/311 315/473/315 316/474/316 f 316/474/316 312/469/312 311/468/311 f 312/469/312 316/474/316 317/475/317 f 317/475/317 313/470/313 312/469/312 f 282/476/282 287/481/287 318/482/318 f 318/482/318 314/477/314 282/476/282 f 314/477/314 318/482/318 319/483/319 f 319/483/319 315/478/315 314/477/314 f 315/478/315 319/483/319 320/484/320 f 320/484/320 316/479/316 315/478/315 f 316/479/316 320/484/320 321/485/321 f 321/485/321 317/480/317 316/479/316 f 287/481/287 292/486/292 322/487/322 f 322/487/322 318/482/318 287/481/287 f 318/482/318 322/487/322 323/488/323 f 323/488/323 319/483/319 318/482/318 f 319/483/319 323/488/323 324/489/324 f 324/489/324 320/484/320 319/483/319 f 320/484/320 324/489/324 325/490/325 f 325/490/325 321/485/321 320/484/320 f 292/486/292 297/491/297 326/492/326 f 326/492/326 322/487/322 292/486/292 f 322/487/322 326/492/326 327/493/327 f 327/493/327 323/488/323 322/487/322 f 323/488/323 327/493/327 328/494/328 f 328/494/328 324/489/324 323/488/323 f 324/489/324 328/494/328 329/495/329 f 329/495/329 325/490/325 324/489/324 f 297/491/297 262/496/262 298/497/298 f 298/497/298 326/492/326 297/491/297 f 326/492/326 298/497/298 299/498/299 f 299/498/299 327/493/327 326/492/326 f 327/493/327 299/498/299 300/499/300 f 300/499/300 328/494/328 327/493/327 f 328/494/328 300/499/300 301/500/301 f 301/500/301 329/495/329 328/494/328 f 330/501/330 335/506/335 336/507/336 f 336/507/336 331/502/331 330/501/330 f 331/502/331 336/507/336 337/508/337 f 337/508/337 332/503/332 331/502/331 f 332/503/332 337/508/337 338/509/338 f 338/509/338 333/504/333 332/503/332 f 333/504/333 338/509/338 339/510/339 f 339/510/339 334/505/334 333/504/333 f 335/506/335 340/511/340 341/512/341 f 341/512/341 336/507/336 335/506/335 f 336/507/336 341/512/341 342/513/342 f 342/513/342 337/508/337 336/507/336 f 337/508/337 342/513/342 343/514/343 f 343/514/343 338/509/338 337/508/337 f 338/509/338 343/514/343 344/515/344 f 344/515/344 339/510/339 338/509/338 f 340/511/340 345/516/345 346/517/346 f 346/517/346 341/512/341 340/511/340 f 341/512/341 346/517/346 347/518/347 f 347/518/347 342/513/342 341/512/341 f 342/513/342 347/518/347 348/519/348 f 348/519/348 343/514/343 342/513/342 f 343/514/343 348/519/348 349/520/349 f 349/520/349 344/515/344 343/514/343 f 345/516/345 350/521/350 351/522/351 f 351/522/351 346/517/346 345/516/345 f 346/517/346 351/522/351 352/523/352 f 352/523/352 347/518/347 346/517/346 f 347/518/347 352/523/352 353/524/353 f 353/524/353 348/519/348 347/518/347 f 348/519/348 353/524/353 354/525/354 f 354/525/354 349/520/349 348/519/348 f 350/526/350 355/531/355 356/532/356 f 356/532/356 351/527/351 350/526/350 f 351/527/351 356/532/356 357/533/357 f 357/533/357 352/528/352 351/527/351 f 352/528/352 357/533/357 358/534/358 f 358/534/358 353/529/353 352/528/352 f 353/529/353 358/534/358 359/535/359 f 359/535/359 354/530/354 353/529/353 f 355/531/355 360/536/360 361/537/361 f 361/537/361 356/532/356 355/531/355 f 356/532/356 361/537/361 362/538/362 f 362/538/362 357/533/357 356/532/356 f 357/533/357 362/538/362 363/539/363 f 363/539/363 358/534/358 357/533/357 f 358/534/358 363/539/363 364/540/364 f 364/540/364 359/535/359 358/534/358 f 360/536/360 365/541/365 366/542/366 f 366/542/366 361/537/361 360/536/360 f 361/537/361 366/542/366 367/543/367 f 367/543/367 362/538/362 361/537/361 f 362/538/362 367/543/367 368/544/368 f 368/544/368 363/539/363 362/538/362 f 363/539/363 368/544/368 369/545/369 f 369/545/369 364/540/364 363/539/363 f 365/541/365 330/546/330 331/547/331 f 331/547/331 366/542/366 365/541/365 f 366/542/366 331/547/331 332/548/332 f 332/548/332 367/543/367 366/542/366 f 367/543/367 332/548/332 333/549/333 f 333/549/333 368/544/368 367/543/367 f 368/544/368 333/549/333 334/550/334 f 334/550/334 369/545/369 368/544/368 f 334/551/334 339/556/339 374/557/374 f 374/557/374 370/552/370 334/551/334 f 370/552/370 374/557/374 375/558/375 f 375/558/375 371/553/371 370/552/370 f 371/553/371 375/558/375 376/559/376 f 376/559/376 372/554/372 371/553/371 f 372/554/372 376/559/376 377/560/377 f 377/560/377 373/555/373 372/554/372 f 339/556/339 344/561/344 378/562/378 f 378/562/378 374/557/374 339/556/339 f 374/557/374 378/562/378 379/563/379 f 379/563/379 375/558/375 374/557/374 f 375/558/375 379/563/379 380/564/380 f 380/564/380 376/559/376 375/558/375 f 376/559/376 380/564/380 381/565/381 f 381/565/381 377/560/377 376/559/376 f 344/561/344 349/566/349 382/567/382 f 382/567/382 378/562/378 344/561/344 f 378/562/378 382/567/382 383/568/383 f 383/568/383 379/563/379 378/562/378 f 379/563/379 383/568/383 384/569/384 f 384/569/384 380/564/380 379/563/379 f 380/564/380 384/569/384 385/570/385 f 385/570/385 381/565/381 380/564/380 f 349/566/349 354/571/354 386/572/386 f 386/572/386 382/567/382 349/566/349 f 382/567/382 386/572/386 387/573/387 f 387/573/387 383/568/383 382/567/382 f 383/568/383 387/573/387 388/574/388 f 388/574/388 384/569/384 383/568/383 f 384/569/384 388/574/388 389/575/389 f 389/575/389 385/570/385 384/569/384 f 354/576/354 359/581/359 390/582/390 f 390/582/390 386/577/386 354/576/354 f 386/577/386 390/582/390 391/583/391 f 391/583/391 387/578/387 386/577/386 f 387/578/387 391/583/391 392/584/392 f 392/584/392 388/579/388 387/578/387 f 388/579/388 392/584/392 393/585/393 f 393/585/393 389/580/389 388/579/388 f 359/581/359 364/586/364 394/587/394 f 394/587/394 390/582/390 359/581/359 f 390/582/390 394/587/394 395/588/395 f 395/588/395 391/583/391 390/582/390 f 391/583/391 395/588/395 396/589/396 f 396/589/396 392/584/392 391/583/391 f 392/584/392 396/589/396 397/590/397 f 397/590/397 393/585/393 392/584/392 f 364/586/364 369/591/369 398/592/398 f 398/592/398 394/587/394 364/586/364 f 394/587/394 398/592/398 399/593/399 f 399/593/399 395/588/395 394/587/394 f 395/588/395 399/593/399 400/594/400 f 400/594/400 396/589/396 395/588/395 f 396/589/396 400/594/400 401/595/401 f 401/595/401 397/590/397 396/589/396 f 369/591/369 334/596/334 370/597/370 f 370/597/370 398/592/398 369/591/369 f 398/592/398 370/597/370 371/598/371 f 371/598/371 399/593/399 398/592/398 f 399/593/399 371/598/371 372/599/372 f 372/599/372 400/594/400 399/593/399 f 400/594/400 372/599/372 373/600/373 f 373/600/373 401/595/401 400/594/400 f 407/607/407 403/602/403 402/601/402 f 403/602/403 407/607/407 408/608/408 f 408/608/408 404/603/404 403/602/403 f 404/603/404 408/608/408 409/609/409 f 409/609/409 405/604/405 404/603/404 f 405/604/405 409/609/409 410/610/410 f 410/610/410 406/605/406 405/604/405 f 411/612/411 407/607/407 402/606/402 f 407/607/407 411/612/411 412/613/412 f 412/613/412 408/608/408 407/607/407 f 408/608/408 412/613/412 413/614/413 f 413/614/413 409/609/409 408/608/408 f 409/609/409 413/614/413 414/615/414 f 414/615/414 410/610/410 409/609/409 f 415/617/415 411/612/411 402/611/402 f 411/612/411 415/617/415 416/618/416 f 416/618/416 412/613/412 411/612/411 f 412/613/412 416/618/416 417/619/417 f 417/619/417 413/614/413 412/613/412 f 413/614/413 417/619/417 418/620/418 f 418/620/418 414/615/414 413/614/413 f 419/622/419 415/617/415 402/616/402 f 415/617/415 419/622/419 420/623/420 f 420/623/420 416/618/416 415/617/415 f 416/618/416 420/623/420 421/624/421 f 421/624/421 417/619/417 416/618/416 f 417/619/417 421/624/421 422/625/422 f 422/625/422 418/620/418 417/619/417 f 423/632/423 419/627/419 402/626/402 f 419/627/419 423/632/423 424/633/424 f 424/633/424 420/628/420 419/627/419 f 420/628/420 424/633/424 425/634/425 f 425/634/425 421/629/421 420/628/420 f 421/629/421 425/634/425 426/635/426 f 426/635/426 422/630/422 421/629/421 f 427/637/427 423/632/423 402/631/402 f 423/632/423 427/637/427 428/638/428 f 428/638/428 424/633/424 423/632/423 f 424/633/424 428/638/428 429/639/429 f 429/639/429 425/634/425 424/633/424 f 425/634/425 429/639/429 430/640/430 f 430/640/430 426/635/426 425/634/425 f 431/642/431 427/637/427 402/636/402 f 427/637/427 431/642/431 432/643/432 f 432/643/432 428/638/428 427/637/427 f 428/638/428 432/643/432 433/644/433 f 433/644/433 429/639/429 428/638/428 f 429/639/429 433/644/433 434/645/434 f 434/645/434 430/640/430 429/639/429 f 435/647/435 431/642/431 402/641/402 f 431/642/431 435/647/435 436/648/436 f 436/648/436 432/643/432 431/642/431 f 432/643/432 436/648/436 437/649/437 f 437/649/437 433/644/433 432/643/432 f 433/644/433 437/649/437 438/650/438 f 438/650/438 434/645/434 433/644/433 f 439/657/439 435/652/435 402/651/402 f 435/652/435 439/657/439 440/658/440 f 440/658/440 436/653/436 435/652/435 f 436/653/436 440/658/440 441/659/441 f 441/659/441 437/654/437 436/653/436 f 437/654/437 441/659/441 442/660/442 f 442/660/442 438/655/438 437/654/437 f 443/662/443 439/657/439 402/656/402 f 439/657/439 443/662/443 444/663/444 f 444/663/444 440/658/440 439/657/439 f 440/658/440 444/663/444 445/664/445 f 445/664/445 441/659/441 440/658/440 f 441/659/441 445/664/445 446/665/446 f 446/665/446 442/660/442 441/659/441 f 447/667/447 443/662/443 402/661/402 f 443/662/443 447/667/447 448/668/448 f 448/668/448 444/663/444 443/662/443 f 444/663/444 448/668/448 449/669/449 f 449/669/449 445/664/445 444/663/444 f 445/664/445 449/669/449 450/670/450 f 450/670/450 446/665/446 445/664/445 f 451/672/451 447/667/447 402/666/402 f 447/667/447 451/672/451 452/673/452 f 452/673/452 448/668/448 447/667/447 f 448/668/448 452/673/452 453/674/453 f 453/674/453 449/669/449 448/668/448 f 449/669/449 453/674/453 454/675/454 f 454/675/454 450/670/450 449/669/449 f 455/682/455 451/677/451 402/676/402 f 451/677/451 455/682/455 456/683/456 f 456/683/456 452/678/452 451/677/451 f 452/678/452 456/683/456 457/684/457 f 457/684/457 453/679/453 452/678/452 f 453/679/453 457/684/457 458/685/458 f 458/685/458 454/680/454 453/679/453 f 459/687/459 455/682/455 402/681/402 f 455/682/455 459/687/459 460/688/460 f 460/688/460 456/683/456 455/682/455 f 456/683/456 460/688/460 461/689/461 f 461/689/461 457/684/457 456/683/456 f 457/684/457 461/689/461 462/690/462 f 462/690/462 458/685/458 457/684/457 f 463/692/463 459/687/459 402/686/402 f 459/687/459 463/692/463 464/693/464 f 464/693/464 460/688/460 459/687/459 f 460/688/460 464/693/464 465/694/465 f 465/694/465 461/689/461 460/688/460 f 461/689/461 465/694/465 466/695/466 f 466/695/466 462/690/462 461/689/461 f 403/697/403 463/692/463 402/691/402 f 463/692/463 403/697/403 404/698/404 f 404/698/404 464/693/464 463/692/463 f 464/693/464 404/698/404 405/699/405 f 405/699/405 465/694/465 464/693/464 f 465/694/465 405/699/405 406/700/406 f 406/700/406 466/695/466 465/694/465 f 406/701/406 410/706/410 471/707/471 f 471/707/471 467/702/467 406/701/406 f 467/702/467 471/707/471 472/708/472 f 472/708/472 468/703/468 467/702/467 f 468/703/468 472/708/472 473/709/473 f 473/709/473 469/704/469 468/703/468 f 469/704/469 473/709/473 474/710/474 f 474/710/474 470/705/470 469/704/469 f 410/706/410 414/711/414 475/712/475 f 475/712/475 471/707/471 410/706/410 f 471/707/471 475/712/475 476/713/476 f 476/713/476 472/708/472 471/707/471 f 472/708/472 476/713/476 477/714/477 f 477/714/477 473/709/473 472/708/472 f 473/709/473 477/714/477 478/715/478 f 478/715/478 474/710/474 473/709/473 f 414/711/414 418/716/418 479/717/479 f 479/717/479 475/712/475 414/711/414 f 475/712/475 479/717/479 480/718/480 f 480/718/480 476/713/476 475/712/475 f 476/713/476 480/718/480 481/719/481 f 481/719/481 477/714/477 476/713/476 f 477/714/477 481/719/481 482/720/482 f 482/720/482 478/715/478 477/714/477 f 418/716/418 422/721/422 483/722/483 f 483/722/483 479/717/479 418/716/418 f 479/717/479 483/722/483 484/723/484 f 484/723/484 480/718/480 479/717/479 f 480/718/480 484/723/484 485/724/485 f 485/724/485 481/719/481 480/718/480 f 481/719/481 485/724/485 486/725/486 f 486/725/486 482/720/482 481/719/481 f 422/726/422 426/731/426 487/732/487 f 487/732/487 483/727/483 422/726/422 f 483/727/483 487/732/487 488/733/488 f 488/733/488 484/728/484 483/727/483 f 484/728/484 488/733/488 489/734/489 f 489/734/489 485/729/485 484/728/484 f 485/729/485 489/734/489 490/735/490 f 490/735/490 486/730/486 485/729/485 f 426/731/426 430/736/430 491/737/491 f 491/737/491 487/732/487 426/731/426 f 487/732/487 491/737/491 492/738/492 f 492/738/492 488/733/488 487/732/487 f 488/733/488 492/738/492 493/739/493 f 493/739/493 489/734/489 488/733/488 f 489/734/489 493/739/493 494/740/494 f 494/740/494 490/735/490 489/734/489 f 430/736/430 434/741/434 495/742/495 f 495/742/495 491/737/491 430/736/430 f 491/737/491 495/742/495 496/743/496 f 496/743/496 492/738/492 491/737/491 f 492/738/492 496/743/496 497/744/497 f 497/744/497 493/739/493 492/738/492 f 493/739/493 497/744/497 498/745/498 f 498/745/498 494/740/494 493/739/493 f 434/741/434 438/746/438 499/747/499 f 499/747/499 495/742/495 434/741/434 f 495/742/495 499/747/499 500/748/500 f 500/748/500 496/743/496 495/742/495 f 496/743/496 500/748/500 501/749/501 f 501/749/501 497/744/497 496/743/496 f 497/744/497 501/749/501 502/750/502 f 502/750/502 498/745/498 497/744/497 f 438/751/438 442/756/442 503/757/503 f 503/757/503 499/752/499 438/751/438 f 499/752/499 503/757/503 504/758/504 f 504/758/504 500/753/500 499/752/499 f 500/753/500 504/758/504 505/759/505 f 505/759/505 501/754/501 500/753/500 f 501/754/501 505/759/505 506/760/506 f 506/760/506 502/755/502 501/754/501 f 442/756/442 446/761/446 507/762/507 f 507/762/507 503/757/503 442/756/442 f 503/757/503 507/762/507 508/763/508 f 508/763/508 504/758/504 503/757/503 f 504/758/504 508/763/508 509/764/509 f 509/764/509 505/759/505 504/758/504 f 505/759/505 509/764/509 510/765/510 f 510/765/510 506/760/506 505/759/505 f 446/761/446 450/766/450 511/767/511 f 511/767/511 507/762/507 446/761/446 f 507/762/507 511/767/511 512/768/512 f 512/768/512 508/763/508 507/762/507 f 508/763/508 512/768/512 513/769/513 f 513/769/513 509/764/509 508/763/508 f 509/764/509 513/769/513 514/770/514 f 514/770/514 510/765/510 509/764/509 f 450/766/450 454/771/454 515/772/515 f 515/772/515 511/767/511 450/766/450 f 511/767/511 515/772/515 516/773/516 f 516/773/516 512/768/512 511/767/511 f 512/768/512 516/773/516 517/774/517 f 517/774/517 513/769/513 512/768/512 f 513/769/513 517/774/517 518/775/518 f 518/775/518 514/770/514 513/769/513 f 454/776/454 458/781/458 519/782/519 f 519/782/519 515/777/515 454/776/454 f 515/777/515 519/782/519 520/783/520 f 520/783/520 516/778/516 515/777/515 f 516/778/516 520/783/520 521/784/521 f 521/784/521 517/779/517 516/778/516 f 517/779/517 521/784/521 522/785/522 f 522/785/522 518/780/518 517/779/517 f 458/781/458 462/786/462 523/787/523 f 523/787/523 519/782/519 458/781/458 f 519/782/519 523/787/523 524/788/524 f 524/788/524 520/783/520 519/782/519 f 520/783/520 524/788/524 525/789/525 f 525/789/525 521/784/521 520/783/520 f 521/784/521 525/789/525 526/790/526 f 526/790/526 522/785/522 521/784/521 f 462/786/462 466/791/466 527/792/527 f 527/792/527 523/787/523 462/786/462 f 523/787/523 527/792/527 528/793/528 f 528/793/528 524/788/524 523/787/523 f 524/788/524 528/793/528 529/794/529 f 529/794/529 525/789/525 524/788/524 f 525/789/525 529/794/529 530/795/530 f 530/795/530 526/790/526 525/789/525 f 466/791/466 406/796/406 467/797/467 f 467/797/467 527/792/527 466/791/466 f 527/792/527 467/797/467 468/798/468 f 468/798/468 528/793/528 527/792/527 f 528/793/528 468/798/468 469/799/469 f 469/799/469 529/794/529 528/793/528 f 529/794/529 469/799/469 470/800/470 f 470/800/470 530/795/530 529/794/529 # 992 faces g JUCE-4.1.0/examples/Demo/Resources/tile_background.png000066400000000000000000000002271263452017400225650ustar00rootroot00000000000000PNG  IHDRRW^IDATxUI!FK8 ^p!%{9kJiĉHc 9Z-q 1FX"g JUCE-4.1.0/examples/Demo/Source/000077500000000000000000000000001263452017400162105ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Source/DemoUtilities.h000066400000000000000000000046721263452017400211520ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef DEMOUTILITIES_H_INCLUDED #define DEMOUTILITIES_H_INCLUDED //============================================================================== /* This file contains a bunch of miscellaneous utilities that are used by the various demos. */ //============================================================================== inline Colour getRandomColour (float brightness) { return Colour::fromHSV (Random::getSystemRandom().nextFloat(), 0.5f, brightness, 1.0f); } inline Colour getRandomBrightColour() { return getRandomColour (0.8f); } inline Colour getRandomDarkColour() { return getRandomColour (0.3f); } inline void fillStandardDemoBackground (Graphics& g) { g.setColour (Colour (0xff4d4d4d)); g.fillAll(); } //============================================================================== // This is basically a sawtooth wave generator - maps a value that bounces between // 0.0 and 1.0 at a random speed struct BouncingNumber { BouncingNumber() : speed (0.0004 + 0.0007 * Random::getSystemRandom().nextDouble()), phase (Random::getSystemRandom().nextDouble()) { } float getValue() const { double v = fmod (phase + speed * Time::getMillisecondCounterHiRes(), 2.0); return (float) (v >= 1.0 ? (2.0 - v) : v); } protected: double speed, phase; }; struct SlowerBouncingNumber : public BouncingNumber { SlowerBouncingNumber() { speed *= 0.3; } }; #endif // DEMOUTILITIES_H_INCLUDED JUCE-4.1.0/examples/Demo/Source/Demos/000077500000000000000000000000001263452017400172575ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Source/Demos/AnimationDemo.cpp000066400000000000000000000244041263452017400225130ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== /** This will be the source of our balls and can be dragged around. */ class BallGeneratorComponent : public Component { public: BallGeneratorComponent() { } void paint (Graphics& g) override { Rectangle area (getLocalBounds().toFloat().reduced (2.0f)); g.setColour (Colours::orange); g.drawRoundedRectangle (area, 10.0f, 2.0f); AttributedString s; s.setJustification (Justification::centred); s.setWordWrap (AttributedString::none); s.append ("Drag Me!"); s.setColour (Colours::white); s.draw (g, area); } void resized() override { // Just set the limits of our constrainer so that we don't drag ourselves off the screen constrainer.setMinimumOnscreenAmounts (getHeight(), getWidth(), getHeight(), getWidth()); } void mouseDown (const MouseEvent& e) override { // Prepares our dragger to drag this Component dragger.startDraggingComponent (this, e); } void mouseDrag (const MouseEvent& e) override { // Moves this Component according to the mouse drag event and applies our constraints to it dragger.dragComponent (this, e, &constrainer); } private: ComponentBoundsConstrainer constrainer; ComponentDragger dragger; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BallGeneratorComponent) }; //============================================================================== struct BallComponent : public Component { BallComponent (const Point& pos) : position (pos), speed (Random::getSystemRandom().nextFloat() * 4.0f - 2.0f, Random::getSystemRandom().nextFloat() * -6.0f - 2.0f), colour (Colours::white) { setSize (20, 20); step(); } bool step() { position += speed; speed.y += 0.1f; setCentrePosition ((int) position.x, (int) position.y); if (Component* parent = getParentComponent()) return isPositiveAndBelow (position.x, (float) parent->getWidth()) && position.y < (float) parent->getHeight(); return position.y < 400.0f && position.x >= -10.0f; } void paint (Graphics& g) { g.setColour (colour); g.fillEllipse (2.0f, 2.0f, getWidth() - 4.0f, getHeight() - 4.0f); g.setColour (Colours::darkgrey); g.drawEllipse (2.0f, 2.0f, getWidth() - 4.0f, getHeight() - 4.0f, 1.0f); } Point position, speed; Colour colour; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BallComponent) }; //============================================================================== class AnimationDemo : public Component, private Button::Listener, private Timer { public: AnimationDemo() { setOpaque (true); setSize (620, 620); for (int i = 11; --i >= 0;) { Button* b = createButton(); componentsToAnimate.add (b); addAndMakeVisible (b); b->addListener (this); } addAndMakeVisible (ballGenerator); ballGenerator.centreWithSize (80, 50); cycleCount = 2; for (int i = 0; i < componentsToAnimate.size(); ++i) componentsToAnimate.getUnchecked (i)->setBounds (getLocalBounds().reduced (250, 250)); for (int i = 0; i < componentsToAnimate.size(); ++i) { const int newIndex = (i + 3) % componentsToAnimate.size(); const float angle = newIndex * 2.0f * float_Pi / componentsToAnimate.size(); const float radius = getWidth() * 0.35f; Rectangle r (getWidth() / 2 + (int) (radius * std::sin (angle)) - 50, getHeight() / 2 + (int) (radius * std::cos (angle)) - 50, 100, 100); animator.animateComponent (componentsToAnimate.getUnchecked(i), r.reduced (10), 1.0f, 500 + i * 100, false, 0.0, 0.0); } startTimerHz (60); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } private: OwnedArray componentsToAnimate; OwnedArray balls; BallGeneratorComponent ballGenerator; ComponentAnimator animator; int cycleCount; Button* createRandomButton() { DrawablePath normal, over; Path star1; star1.addStar (Point(), 5, 20.0f, 50.0f, 0.2f); normal.setPath (star1); normal.setFill (Colours::red); Path star2; star2.addStar (Point(), 7, 30.0f, 50.0f, 0.0f); over.setPath (star2); over.setFill (Colours::pink); over.setStrokeFill (Colours::black); over.setStrokeThickness (5.0f); Image juceIcon = ImageCache::getFromMemory (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize); DrawableImage down; down.setImage (juceIcon); down.setOverlayColour (Colours::black.withAlpha (0.3f)); if (Random::getSystemRandom().nextInt (10) > 2) { int type = Random::getSystemRandom().nextInt (3); DrawableButton* d = new DrawableButton ("Button", type == 0 ? DrawableButton::ImageOnButtonBackground : (type == 1 ? DrawableButton::ImageFitted : DrawableButton::ImageAboveTextLabel)); d->setImages (&normal, Random::getSystemRandom().nextBool() ? &over : nullptr, Random::getSystemRandom().nextBool() ? &down : nullptr); if (Random::getSystemRandom().nextBool()) { d->setColour (DrawableButton::backgroundColourId, getRandomBrightColour()); d->setColour (DrawableButton::backgroundOnColourId, getRandomBrightColour()); } d->setClickingTogglesState (Random::getSystemRandom().nextBool()); return d; } ImageButton* b = new ImageButton ("ImageButton"); b->setImages (true, true, true, juceIcon, 0.7f, Colours::transparentBlack, juceIcon, 1.0f, getRandomDarkColour().withAlpha (0.2f), juceIcon, 1.0f, getRandomBrightColour().withAlpha (0.8f), 0.5f); return b; } Button* createButton() { Image juceIcon = ImageCache::getFromMemory (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize) .rescaled (128, 128); ImageButton* b = new ImageButton ("ImageButton"); b->setImages (true, true, true, juceIcon, 1.0f, Colours::transparentBlack, juceIcon, 1.0f, Colours::white, juceIcon, 1.0f, Colours::white, 0.5f); return b; } void buttonClicked (Button*) override { for (int i = 0; i < componentsToAnimate.size(); ++i) { const int newIndex = (i + 3 * cycleCount) % componentsToAnimate.size(); const float angle = newIndex * 2.0f * float_Pi / componentsToAnimate.size(); const float radius = getWidth() * 0.35f; Rectangle r (getWidth() / 2 + (int) (radius * std::sin (angle)) - 50, getHeight() / 2 + (int) (radius * std::cos (angle)) - 50, 100, 100); animator.animateComponent (componentsToAnimate.getUnchecked(i), r.reduced (10), 1.0f, 900 + (int) (300 * std::sin (angle)), false, 0.0, 0.0); } ++cycleCount; } void timerCallback() override { // Go through each of our balls and update their position for (int i = balls.size(); --i >= 0;) if (! balls.getUnchecked(i)->step()) balls.remove (i); // Randomly generate new balls if (Random::getSystemRandom().nextInt (100) < 4) { BallComponent* ball = new BallComponent (ballGenerator.getBounds().getCentre().toFloat()); addAndMakeVisible (ball); balls.add (ball); } } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AnimationDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Animation"); JUCE-4.1.0/examples/Demo/Source/Demos/AudioLatencyDemo.cpp000066400000000000000000000312751263452017400231610ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #include "AudioLiveScrollingDisplay.h" class LatencyTester : public AudioIODeviceCallback, private Timer { public: LatencyTester (TextEditor& resultsBox_) : playingSampleNum (0), recordedSampleNum (-1), sampleRate (0), testIsRunning (false), resultsBox (resultsBox_) { MainAppWindow::getSharedAudioDeviceManager().addAudioCallback (this); } ~LatencyTester() { MainAppWindow::getSharedAudioDeviceManager().removeAudioCallback (this); } //============================================================================== void beginTest() { resultsBox.moveCaretToEnd(); resultsBox.insertTextAtCaret (newLine + newLine + "Starting test..." + newLine); resultsBox.moveCaretToEnd(); startTimer (50); const ScopedLock sl (lock); createTestSound(); recordedSound.clear(); playingSampleNum = recordedSampleNum = 0; testIsRunning = true; } void timerCallback() { if (testIsRunning && recordedSampleNum >= recordedSound.getNumSamples()) { testIsRunning = false; stopTimer(); // Test has finished, so calculate the result.. const int latencySamples = calculateLatencySamples(); resultsBox.moveCaretToEnd(); resultsBox.insertTextAtCaret (getMessageDescribingResult (latencySamples)); resultsBox.moveCaretToEnd(); } } String getMessageDescribingResult (int latencySamples) { String message; if (latencySamples >= 0) { message << newLine << "Results:" << newLine << latencySamples << " samples (" << String (latencySamples * 1000.0 / sampleRate, 1) << " milliseconds)" << newLine << "The audio device reports an input latency of " << deviceInputLatency << " samples, output latency of " << deviceOutputLatency << " samples." << newLine << "So the corrected latency = " << (latencySamples - deviceInputLatency - deviceOutputLatency) << " samples (" << String ((latencySamples - deviceInputLatency - deviceOutputLatency) * 1000.0 / sampleRate, 2) << " milliseconds)"; } else { message << newLine << "Couldn't detect the test signal!!" << newLine << "Make sure there's no background noise that might be confusing it.."; } return message; } //============================================================================== void audioDeviceAboutToStart (AudioIODevice* device) { testIsRunning = false; playingSampleNum = recordedSampleNum = 0; sampleRate = device->getCurrentSampleRate(); deviceInputLatency = device->getInputLatencyInSamples(); deviceOutputLatency = device->getOutputLatencyInSamples(); recordedSound.setSize (1, (int) (0.9 * sampleRate)); recordedSound.clear(); } void audioDeviceStopped() { // (nothing to do here) } void audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, float** outputChannelData, int numOutputChannels, int numSamples) { const ScopedLock sl (lock); if (testIsRunning) { float* const recordingBuffer = recordedSound.getWritePointer (0); const float* const playBuffer = testSound.getReadPointer (0); for (int i = 0; i < numSamples; ++i) { if (recordedSampleNum < recordedSound.getNumSamples()) { float inputSamp = 0; for (int j = numInputChannels; --j >= 0;) if (inputChannelData[j] != 0) inputSamp += inputChannelData[j][i]; recordingBuffer [recordedSampleNum] = inputSamp; } ++recordedSampleNum; float outputSamp = (playingSampleNum < testSound.getNumSamples()) ? playBuffer [playingSampleNum] : 0; for (int j = numOutputChannels; --j >= 0;) if (outputChannelData[j] != 0) outputChannelData[j][i] = outputSamp; ++playingSampleNum; } } else { // We need to clear the output buffers, in case they're full of junk.. for (int i = 0; i < numOutputChannels; ++i) if (outputChannelData[i] != 0) zeromem (outputChannelData[i], sizeof (float) * (size_t) numSamples); } } private: AudioSampleBuffer testSound, recordedSound; Array spikePositions; int playingSampleNum, recordedSampleNum; CriticalSection lock; double sampleRate; bool testIsRunning; TextEditor& resultsBox; int deviceInputLatency, deviceOutputLatency; // create a test sound which consists of a series of randomly-spaced audio spikes.. void createTestSound() { const int length = ((int) sampleRate) / 4; testSound.setSize (1, length); testSound.clear(); Random rand; for (int i = 0; i < length; ++i) testSound.setSample (0, i, (rand.nextFloat() - rand.nextFloat() + rand.nextFloat() - rand.nextFloat()) * 0.06f); spikePositions.clear(); int spikePos = 0; int spikeDelta = 50; while (spikePos < length - 1) { spikePositions.add (spikePos); testSound.setSample (0, spikePos, 0.99f); testSound.setSample (0, spikePos + 1, -0.99f); spikePos += spikeDelta; spikeDelta += spikeDelta / 6 + rand.nextInt (5); } } // Searches a buffer for a set of spikes that matches those in the test sound int findOffsetOfSpikes (const AudioSampleBuffer& buffer) const { const float minSpikeLevel = 5.0f; const double smooth = 0.975; const float* s = buffer.getReadPointer (0); const int spikeDriftAllowed = 5; Array spikesFound; spikesFound.ensureStorageAllocated (100); double runningAverage = 0; int lastSpike = 0; for (int i = 0; i < buffer.getNumSamples() - 10; ++i) { const float samp = std::abs (s[i]); if (samp > runningAverage * minSpikeLevel && i > lastSpike + 20) { lastSpike = i; spikesFound.add (i); } runningAverage = runningAverage * smooth + (1.0 - smooth) * samp; } int bestMatch = -1; int bestNumMatches = spikePositions.size() / 3; // the minimum number of matches required if (spikesFound.size() < bestNumMatches) return -1; for (int offsetToTest = 0; offsetToTest < buffer.getNumSamples() - 2048; ++offsetToTest) { int numMatchesHere = 0; int foundIndex = 0; for (int refIndex = 0; refIndex < spikePositions.size(); ++refIndex) { const int referenceSpike = spikePositions.getUnchecked (refIndex) + offsetToTest; int spike = 0; while ((spike = spikesFound.getUnchecked (foundIndex)) < referenceSpike - spikeDriftAllowed && foundIndex < spikesFound.size() - 1) ++foundIndex; if (spike >= referenceSpike - spikeDriftAllowed && spike <= referenceSpike + spikeDriftAllowed) ++numMatchesHere; } if (numMatchesHere > bestNumMatches) { bestNumMatches = numMatchesHere; bestMatch = offsetToTest; if (numMatchesHere == spikePositions.size()) break; } } return bestMatch; } int calculateLatencySamples() const { // Detect the sound in both our test sound and the recording of it, and measure the difference // in their start times.. const int referenceStart = findOffsetOfSpikes (testSound); jassert (referenceStart >= 0); const int recordedStart = findOffsetOfSpikes (recordedSound); return (recordedStart < 0) ? -1 : (recordedStart - referenceStart); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LatencyTester) }; //============================================================================== class AudioLatencyDemo : public Component, private Button::Listener { public: AudioLatencyDemo() { setOpaque (true); addAndMakeVisible (liveAudioScroller = new LiveScrollingAudioDisplay()); addAndMakeVisible (resultsBox); resultsBox.setMultiLine (true); resultsBox.setReturnKeyStartsNewLine (true); resultsBox.setReadOnly (true); resultsBox.setScrollbarsShown (true); resultsBox.setCaretVisible (false); resultsBox.setPopupMenuEnabled (true); resultsBox.setColour (TextEditor::backgroundColourId, Colour (0x32ffffff)); resultsBox.setColour (TextEditor::outlineColourId, Colour (0x1c000000)); resultsBox.setColour (TextEditor::shadowColourId, Colour (0x16000000)); resultsBox.setText ("Running this test measures the round-trip latency between the audio output and input " "devices you\'ve got selected.\n\n" "It\'ll play a sound, then try to measure the time at which the sound arrives " "back at the audio input. Obviously for this to work you need to have your " "microphone somewhere near your speakers..."); addAndMakeVisible (startTestButton); startTestButton.addListener (this); startTestButton.setButtonText ("Test Latency"); MainAppWindow::getSharedAudioDeviceManager().addAudioCallback (liveAudioScroller); } ~AudioLatencyDemo() { MainAppWindow::getSharedAudioDeviceManager().removeAudioCallback (liveAudioScroller); startTestButton.removeListener (this); latencyTester = nullptr; liveAudioScroller = nullptr; } void startTest() { if (latencyTester == nullptr) latencyTester = new LatencyTester (resultsBox); latencyTester->beginTest(); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { liveAudioScroller->setBounds (8, 8, getWidth() - 16, 64); startTestButton.setBounds (8, getHeight() - 41, 168, 32); resultsBox.setBounds (8, 88, getWidth() - 16, getHeight() - 137); } private: ScopedPointer latencyTester; ScopedPointer liveAudioScroller; TextButton startTestButton; TextEditor resultsBox; void buttonClicked (Button* buttonThatWasClicked) override { if (buttonThatWasClicked == &startTestButton) startTest(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioLatencyDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("31 Audio: Latency Detector"); JUCE-4.1.0/examples/Demo/Source/Demos/AudioLiveScrollingDisplay.h000066400000000000000000000056721263452017400245260ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef __AUDIOLIVESCROLLINGDISPLAY_H_4C3BD3A7__ #define __AUDIOLIVESCROLLINGDISPLAY_H_4C3BD3A7__ #include "../JuceDemoHeader.h" //============================================================================== /* This component scrolls a continuous waveform showing the audio that's coming into whatever audio inputs this object is connected to. */ class LiveScrollingAudioDisplay : public AudioVisualiserComponent, public AudioIODeviceCallback { public: LiveScrollingAudioDisplay() : AudioVisualiserComponent (1) { setSamplesPerBlock (256); setBufferSize (1024); } //============================================================================== void audioDeviceAboutToStart (AudioIODevice*) override { clear(); } void audioDeviceStopped() override { clear(); } void audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, float** outputChannelData, int numOutputChannels, int numberOfSamples) override { for (int i = 0; i < numberOfSamples; ++i) { float inputSample = 0; for (int chan = 0; chan < numInputChannels; ++chan) if (const float* inputChannel = inputChannelData[chan]) inputSample += inputChannel[i]; // find the sum of all the channels inputSample *= 10.0f; // boost the level to make it more easily visible. pushSample (&inputSample, 1); } // We need to clear the output buffers before returning, in case they're full of junk.. for (int j = 0; j < numOutputChannels; ++j) if (float* outputChannel = outputChannelData[j]) zeromem (outputChannel, sizeof (float) * (size_t) numberOfSamples); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LiveScrollingAudioDisplay) }; #endif // __AUDIOLIVESCROLLINGDISPLAY_H_4C3BD3A7__ JUCE-4.1.0/examples/Demo/Source/Demos/AudioPlaybackDemo.cpp000066400000000000000000000351241263452017400233050ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class DemoThumbnailComp : public Component, public ChangeListener, public FileDragAndDropTarget, public ChangeBroadcaster, private ScrollBar::Listener, private Timer { public: DemoThumbnailComp (AudioFormatManager& formatManager, AudioTransportSource& transportSource_, Slider& slider) : transportSource (transportSource_), zoomSlider (slider), scrollbar (false), thumbnailCache (5), thumbnail (512, formatManager, thumbnailCache), isFollowingTransport (false) { thumbnail.addChangeListener (this); addAndMakeVisible (scrollbar); scrollbar.setRangeLimits (visibleRange); scrollbar.setAutoHide (false); scrollbar.addListener (this); currentPositionMarker.setFill (Colours::white.withAlpha (0.85f)); addAndMakeVisible (currentPositionMarker); } ~DemoThumbnailComp() { scrollbar.removeListener (this); thumbnail.removeChangeListener (this); } void setFile (const File& file) { if (! file.isDirectory()) { thumbnail.setSource (new FileInputSource (file)); const Range newRange (0.0, thumbnail.getTotalLength()); scrollbar.setRangeLimits (newRange); setRange (newRange); startTimerHz (40); } } File getLastDroppedFile() const noexcept { return lastFileDropped; } void setZoomFactor (double amount) { if (thumbnail.getTotalLength() > 0) { const double newScale = jmax (0.001, thumbnail.getTotalLength() * (1.0 - jlimit (0.0, 0.99, amount))); const double timeAtCentre = xToTime (getWidth() / 2.0f); setRange (Range (timeAtCentre - newScale * 0.5, timeAtCentre + newScale * 0.5)); } } void setRange (Range newRange) { visibleRange = newRange; scrollbar.setCurrentRange (visibleRange); updateCursorPosition(); repaint(); } void setFollowsTransport (bool shouldFollow) { isFollowingTransport = shouldFollow; } void paint (Graphics& g) override { g.fillAll (Colours::darkgrey); g.setColour (Colours::lightblue); if (thumbnail.getTotalLength() > 0.0) { Rectangle thumbArea (getLocalBounds()); thumbArea.removeFromBottom (scrollbar.getHeight() + 4); thumbnail.drawChannels (g, thumbArea.reduced (2), visibleRange.getStart(), visibleRange.getEnd(), 1.0f); } else { g.setFont (14.0f); g.drawFittedText ("(No audio file selected)", getLocalBounds(), Justification::centred, 2); } } void resized() override { scrollbar.setBounds (getLocalBounds().removeFromBottom (14).reduced (2)); } void changeListenerCallback (ChangeBroadcaster*) override { // this method is called by the thumbnail when it has changed, so we should repaint it.. repaint(); } bool isInterestedInFileDrag (const StringArray& /*files*/) override { return true; } void filesDropped (const StringArray& files, int /*x*/, int /*y*/) override { lastFileDropped = File (files[0]); sendChangeMessage(); } void mouseDown (const MouseEvent& e) override { mouseDrag (e); } void mouseDrag (const MouseEvent& e) override { if (canMoveTransport()) transportSource.setPosition (jmax (0.0, xToTime ((float) e.x))); } void mouseUp (const MouseEvent&) override { transportSource.start(); } void mouseWheelMove (const MouseEvent&, const MouseWheelDetails& wheel) override { if (thumbnail.getTotalLength() > 0.0) { double newStart = visibleRange.getStart() - wheel.deltaX * (visibleRange.getLength()) / 10.0; newStart = jlimit (0.0, jmax (0.0, thumbnail.getTotalLength() - (visibleRange.getLength())), newStart); if (canMoveTransport()) setRange (Range (newStart, newStart + visibleRange.getLength())); if (wheel.deltaY != 0.0f) zoomSlider.setValue (zoomSlider.getValue() - wheel.deltaY); repaint(); } } private: AudioTransportSource& transportSource; Slider& zoomSlider; ScrollBar scrollbar; AudioThumbnailCache thumbnailCache; AudioThumbnail thumbnail; Range visibleRange; bool isFollowingTransport; File lastFileDropped; DrawableRectangle currentPositionMarker; float timeToX (const double time) const { return getWidth() * (float) ((time - visibleRange.getStart()) / (visibleRange.getLength())); } double xToTime (const float x) const { return (x / getWidth()) * (visibleRange.getLength()) + visibleRange.getStart(); } bool canMoveTransport() const noexcept { return ! (isFollowingTransport && transportSource.isPlaying()); } void scrollBarMoved (ScrollBar* scrollBarThatHasMoved, double newRangeStart) override { if (scrollBarThatHasMoved == &scrollbar) if (! (isFollowingTransport && transportSource.isPlaying())) setRange (visibleRange.movedToStartAt (newRangeStart)); } void timerCallback() override { if (canMoveTransport()) updateCursorPosition(); else setRange (visibleRange.movedToStartAt (transportSource.getCurrentPosition() - (visibleRange.getLength() / 2.0))); } void updateCursorPosition() { currentPositionMarker.setVisible (transportSource.isPlaying() || isMouseButtonDown()); currentPositionMarker.setRectangle (Rectangle (timeToX (transportSource.getCurrentPosition()) - 0.75f, 0, 1.5f, (float) (getHeight() - scrollbar.getHeight()))); } }; //============================================================================== class AudioPlaybackDemo : public Component, private FileBrowserListener, private Button::Listener, private Slider::Listener, private ChangeListener { public: AudioPlaybackDemo() : deviceManager (MainAppWindow::getSharedAudioDeviceManager()), thread ("audio file preview"), directoryList (nullptr, thread), fileTreeComp (directoryList) { addAndMakeVisible (zoomLabel); zoomLabel.setText ("zoom:", dontSendNotification); zoomLabel.setFont (Font (15.00f, Font::plain)); zoomLabel.setJustificationType (Justification::centredRight); zoomLabel.setEditable (false, false, false); zoomLabel.setColour (TextEditor::textColourId, Colours::black); zoomLabel.setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (followTransportButton); followTransportButton.setButtonText ("Follow Transport"); followTransportButton.addListener (this); addAndMakeVisible (explanation); explanation.setText ("Select an audio file in the treeview above, and this page will display its waveform, and let you play it..", dontSendNotification); explanation.setFont (Font (14.00f, Font::plain)); explanation.setJustificationType (Justification::bottomRight); explanation.setEditable (false, false, false); explanation.setColour (TextEditor::textColourId, Colours::black); explanation.setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (zoomSlider); zoomSlider.setRange (0, 1, 0); zoomSlider.setSliderStyle (Slider::LinearHorizontal); zoomSlider.setTextBoxStyle (Slider::NoTextBox, false, 80, 20); zoomSlider.addListener (this); zoomSlider.setSkewFactor (2); addAndMakeVisible (thumbnail = new DemoThumbnailComp (formatManager, transportSource, zoomSlider)); thumbnail->addChangeListener (this); addAndMakeVisible (startStopButton); startStopButton.setButtonText ("Play/Stop"); startStopButton.addListener (this); startStopButton.setColour (TextButton::buttonColourId, Colour (0xff79ed7f)); addAndMakeVisible (fileTreeComp); // audio setup formatManager.registerBasicFormats(); directoryList.setDirectory (File::getSpecialLocation (File::userHomeDirectory), true, true); thread.startThread (3); fileTreeComp.setColour (FileTreeComponent::backgroundColourId, Colours::lightgrey.withAlpha (0.6f)); fileTreeComp.addListener (this); deviceManager.addAudioCallback (&audioSourcePlayer); audioSourcePlayer.setSource (&transportSource); setOpaque (true); } ~AudioPlaybackDemo() { transportSource.setSource (nullptr); audioSourcePlayer.setSource (nullptr); deviceManager.removeAudioCallback (&audioSourcePlayer); fileTreeComp.removeListener (this); thumbnail->removeChangeListener (this); followTransportButton.removeListener (this); zoomSlider.removeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (4)); Rectangle controls (r.removeFromBottom (90)); explanation.setBounds (controls.removeFromRight (controls.getWidth() / 3)); Rectangle zoom (controls.removeFromTop (25)); zoomLabel.setBounds (zoom.removeFromLeft (50)); zoomSlider.setBounds (zoom); followTransportButton.setBounds (controls.removeFromTop (25)); startStopButton.setBounds (controls); r.removeFromBottom (6); thumbnail->setBounds (r.removeFromBottom (140)); r.removeFromBottom (6); fileTreeComp.setBounds (r); } private: AudioDeviceManager& deviceManager; AudioFormatManager formatManager; TimeSliceThread thread; DirectoryContentsList directoryList; AudioSourcePlayer audioSourcePlayer; AudioTransportSource transportSource; ScopedPointer currentAudioFileSource; ScopedPointer thumbnail; Label zoomLabel, explanation; Slider zoomSlider; ToggleButton followTransportButton; TextButton startStopButton; FileTreeComponent fileTreeComp; //============================================================================== void showFile (const File& file) { loadFileIntoTransport (file); zoomSlider.setValue (0, dontSendNotification); thumbnail->setFile (file); } void loadFileIntoTransport (const File& audioFile) { // unload the previous file source and delete it.. transportSource.stop(); transportSource.setSource (nullptr); currentAudioFileSource = nullptr; AudioFormatReader* reader = formatManager.createReaderFor (audioFile); if (reader != nullptr) { currentAudioFileSource = new AudioFormatReaderSource (reader, true); // ..and plug it into our transport source transportSource.setSource (currentAudioFileSource, 32768, // tells it to buffer this many samples ahead &thread, // this is the background thread to use for reading-ahead reader->sampleRate); // allows for sample rate correction } } void selectionChanged() override { showFile (fileTreeComp.getSelectedFile()); } void fileClicked (const File&, const MouseEvent&) override {} void fileDoubleClicked (const File&) override {} void browserRootChanged (const File&) override {} void sliderValueChanged (Slider* sliderThatWasMoved) override { if (sliderThatWasMoved == &zoomSlider) thumbnail->setZoomFactor (zoomSlider.getValue()); } void buttonClicked (Button* buttonThatWasClicked) override { if (buttonThatWasClicked == &startStopButton) { if (transportSource.isPlaying()) { transportSource.stop(); } else { transportSource.setPosition (0); transportSource.start(); } } else if (buttonThatWasClicked == &followTransportButton) { thumbnail->setFollowsTransport (followTransportButton.getToggleState()); } } void changeListenerCallback (ChangeBroadcaster* source) override { if (source == thumbnail) showFile (thumbnail->getLastDroppedFile()); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPlaybackDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("31 Audio: File Playback"); JUCE-4.1.0/examples/Demo/Source/Demos/AudioRecordingDemo.cpp000066400000000000000000000252771263452017400235030ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #include "AudioLiveScrollingDisplay.h" //============================================================================== /** A simple class that acts as an AudioIODeviceCallback and writes the incoming audio data to a WAV file. */ class AudioRecorder : public AudioIODeviceCallback { public: AudioRecorder (AudioThumbnail& thumbnailToUpdate) : thumbnail (thumbnailToUpdate), backgroundThread ("Audio Recorder Thread"), sampleRate (0), nextSampleNum (0), activeWriter (nullptr) { backgroundThread.startThread(); } ~AudioRecorder() { stop(); } //============================================================================== void startRecording (const File& file) { stop(); if (sampleRate > 0) { // Create an OutputStream to write to our destination file... file.deleteFile(); ScopedPointer fileStream (file.createOutputStream()); if (fileStream != nullptr) { // Now create a WAV writer object that writes to our output stream... WavAudioFormat wavFormat; AudioFormatWriter* writer = wavFormat.createWriterFor (fileStream, sampleRate, 1, 16, StringPairArray(), 0); if (writer != nullptr) { fileStream.release(); // (passes responsibility for deleting the stream to the writer object that is now using it) // Now we'll create one of these helper objects which will act as a FIFO buffer, and will // write the data to disk on our background thread. threadedWriter = new AudioFormatWriter::ThreadedWriter (writer, backgroundThread, 32768); // Reset our recording thumbnail thumbnail.reset (writer->getNumChannels(), writer->getSampleRate()); nextSampleNum = 0; // And now, swap over our active writer pointer so that the audio callback will start using it.. const ScopedLock sl (writerLock); activeWriter = threadedWriter; } } } } void stop() { // First, clear this pointer to stop the audio callback from using our writer object.. { const ScopedLock sl (writerLock); activeWriter = nullptr; } // Now we can delete the writer object. It's done in this order because the deletion could // take a little time while remaining data gets flushed to disk, so it's best to avoid blocking // the audio callback while this happens. threadedWriter = nullptr; } bool isRecording() const { return activeWriter != nullptr; } //============================================================================== void audioDeviceAboutToStart (AudioIODevice* device) override { sampleRate = device->getCurrentSampleRate(); } void audioDeviceStopped() override { sampleRate = 0; } void audioDeviceIOCallback (const float** inputChannelData, int /*numInputChannels*/, float** outputChannelData, int numOutputChannels, int numSamples) override { const ScopedLock sl (writerLock); if (activeWriter != nullptr) { activeWriter->write (inputChannelData, numSamples); // Create an AudioSampleBuffer to wrap our incomming data, note that this does no allocations or copies, it simply references our input data const AudioSampleBuffer buffer (const_cast (inputChannelData), thumbnail.getNumChannels(), numSamples); thumbnail.addBlock (nextSampleNum, buffer, 0, numSamples); nextSampleNum += numSamples; } // We need to clear the output buffers, in case they're full of junk.. for (int i = 0; i < numOutputChannels; ++i) if (outputChannelData[i] != nullptr) FloatVectorOperations::clear (outputChannelData[i], numSamples); } private: AudioThumbnail& thumbnail; TimeSliceThread backgroundThread; // the thread that will write our audio data to disk ScopedPointer threadedWriter; // the FIFO used to buffer the incoming data double sampleRate; int64 nextSampleNum; CriticalSection writerLock; AudioFormatWriter::ThreadedWriter* volatile activeWriter; }; //============================================================================== class RecordingThumbnail : public Component, private ChangeListener { public: RecordingThumbnail() : thumbnailCache (10), thumbnail (512, formatManager, thumbnailCache), displayFullThumb (false) { formatManager.registerBasicFormats(); thumbnail.addChangeListener (this); } ~RecordingThumbnail() { thumbnail.removeChangeListener (this); } AudioThumbnail& getAudioThumbnail() { return thumbnail; } void setDisplayFullThumbnail (bool displayFull) { displayFullThumb = displayFull; repaint(); } void paint (Graphics& g) override { g.fillAll (Colours::darkgrey); g.setColour (Colours::lightgrey); if (thumbnail.getTotalLength() > 0.0) { const double endTime = displayFullThumb ? thumbnail.getTotalLength() : jmax (30.0, thumbnail.getTotalLength()); Rectangle thumbArea (getLocalBounds()); thumbnail.drawChannels (g, thumbArea.reduced (2), 0.0, endTime, 1.0f); } else { g.setFont (14.0f); g.drawFittedText ("(No file recorded)", getLocalBounds(), Justification::centred, 2); } } private: AudioFormatManager formatManager; AudioThumbnailCache thumbnailCache; AudioThumbnail thumbnail; bool displayFullThumb; void changeListenerCallback (ChangeBroadcaster* source) override { if (source == &thumbnail) repaint(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RecordingThumbnail) }; //============================================================================== class AudioRecordingDemo : public Component, private Button::Listener { public: AudioRecordingDemo() : deviceManager (MainAppWindow::getSharedAudioDeviceManager()), recorder (recordingThumbnail.getAudioThumbnail()) { setOpaque (true); addAndMakeVisible (liveAudioScroller); addAndMakeVisible (explanationLabel); explanationLabel.setText ("This page demonstrates how to record a wave file from the live audio input..\n\nPressing record will start recording a file in your \"Documents\" folder.", dontSendNotification); explanationLabel.setFont (Font (15.00f, Font::plain)); explanationLabel.setJustificationType (Justification::topLeft); explanationLabel.setEditable (false, false, false); explanationLabel.setColour (TextEditor::textColourId, Colours::black); explanationLabel.setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (recordButton); recordButton.setButtonText ("Record"); recordButton.addListener (this); recordButton.setColour (TextButton::buttonColourId, Colour (0xffff5c5c)); recordButton.setColour (TextButton::textColourOnId, Colours::black); addAndMakeVisible (recordingThumbnail); deviceManager.addAudioCallback (&liveAudioScroller); deviceManager.addAudioCallback (&recorder); } ~AudioRecordingDemo() { deviceManager.removeAudioCallback (&recorder); deviceManager.removeAudioCallback (&liveAudioScroller); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle area (getLocalBounds()); liveAudioScroller.setBounds (area.removeFromTop (80).reduced (8)); recordingThumbnail.setBounds (area.removeFromTop (80).reduced (8)); recordButton.setBounds (area.removeFromTop (36).removeFromLeft (140).reduced (8)); explanationLabel.setBounds (area.reduced (8)); } private: AudioDeviceManager& deviceManager; LiveScrollingAudioDisplay liveAudioScroller; RecordingThumbnail recordingThumbnail; AudioRecorder recorder; Label explanationLabel; TextButton recordButton; void startRecording() { const File file (File::getSpecialLocation (File::userDocumentsDirectory) .getNonexistentChildFile ("Juce Demo Audio Recording", ".wav")); recorder.startRecording (file); recordButton.setButtonText ("Stop"); recordingThumbnail.setDisplayFullThumbnail (false); } void stopRecording() { recorder.stop(); recordButton.setButtonText ("Record"); recordingThumbnail.setDisplayFullThumbnail (true); } void buttonClicked (Button* button) override { if (button == &recordButton) { if (recorder.isRecording()) stopRecording(); else startRecording(); } } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioRecordingDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("31 Audio: Recording"); JUCE-4.1.0/examples/Demo/Source/Demos/AudioSettingsDemo.cpp000066400000000000000000000122471263452017400233600ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class AudioSettingsDemo : public Component, public ChangeListener { public: AudioSettingsDemo() { setOpaque (true); addAndMakeVisible (audioSetupComp = new AudioDeviceSelectorComponent (MainAppWindow::getSharedAudioDeviceManager(), 0, 256, 0, 256, true, true, true, false)); addAndMakeVisible (diagnosticsBox); diagnosticsBox.setMultiLine (true); diagnosticsBox.setReturnKeyStartsNewLine (true); diagnosticsBox.setReadOnly (true); diagnosticsBox.setScrollbarsShown (true); diagnosticsBox.setCaretVisible (false); diagnosticsBox.setPopupMenuEnabled (true); diagnosticsBox.setColour (TextEditor::textColourId, Colours::white); diagnosticsBox.setColour (TextEditor::backgroundColourId, Colour (0x32ffffff)); diagnosticsBox.setColour (TextEditor::outlineColourId, Colour (0x1c000000)); diagnosticsBox.setColour (TextEditor::shadowColourId, Colour (0x16000000)); MainAppWindow::getSharedAudioDeviceManager().addChangeListener (this); logMessage ("Audio device diagnostics:\n"); dumpDeviceInfo(); } ~AudioSettingsDemo() { MainAppWindow::getSharedAudioDeviceManager().removeChangeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (4)); audioSetupComp->setBounds (r.removeFromTop (proportionOfHeight (0.65f))); diagnosticsBox.setBounds (r); } void dumpDeviceInfo() { AudioDeviceManager& dm = MainAppWindow::getSharedAudioDeviceManager(); logMessage ("--------------------------------------"); logMessage ("Current audio device type: " + (dm.getCurrentDeviceTypeObject() != nullptr ? dm.getCurrentDeviceTypeObject()->getTypeName() : "")); if (AudioIODevice* device = dm.getCurrentAudioDevice()) { logMessage ("Current audio device: " + device->getName().quoted()); logMessage ("Sample rate: " + String (device->getCurrentSampleRate()) + " Hz"); logMessage ("Block size: " + String (device->getCurrentBufferSizeSamples()) + " samples"); logMessage ("Output Latency: " + String (device->getOutputLatencyInSamples()) + " samples"); logMessage ("Input Latency: " + String (device->getInputLatencyInSamples()) + " samples"); logMessage ("Bit depth: " + String (device->getCurrentBitDepth())); logMessage ("Input channel names: " + device->getInputChannelNames().joinIntoString (", ")); logMessage ("Active input channels: " + getListOfActiveBits (device->getActiveInputChannels())); logMessage ("Output channel names: " + device->getOutputChannelNames().joinIntoString (", ")); logMessage ("Active output channels: " + getListOfActiveBits (device->getActiveOutputChannels())); } else { logMessage ("No audio device open"); } } void logMessage (const String& m) { diagnosticsBox.moveCaretToEnd(); diagnosticsBox.insertTextAtCaret (m + newLine); } private: ScopedPointer audioSetupComp; TextEditor diagnosticsBox; void changeListenerCallback (ChangeBroadcaster*) override { dumpDeviceInfo(); } static String getListOfActiveBits (const BitArray& b) { StringArray bits; for (int i = 0; i <= b.getHighestBit(); ++i) if (b[i]) bits.add (String (i)); return bits.joinIntoString (", "); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioSettingsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("30 Audio: Settings"); JUCE-4.1.0/examples/Demo/Source/Demos/AudioSynthesiserDemo.cpp000066400000000000000000000267231263452017400241040ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #include "AudioLiveScrollingDisplay.h" //============================================================================== /** Our demo synth sound is just a basic sine wave.. */ struct SineWaveSound : public SynthesiserSound { SineWaveSound() {} bool appliesToNote (int /*midiNoteNumber*/) override { return true; } bool appliesToChannel (int /*midiChannel*/) override { return true; } }; //============================================================================== /** Our demo synth voice just plays a sine wave.. */ struct SineWaveVoice : public SynthesiserVoice { SineWaveVoice() : currentAngle (0), angleDelta (0), level (0), tailOff (0) { } bool canPlaySound (SynthesiserSound* sound) override { return dynamic_cast (sound) != nullptr; } void startNote (int midiNoteNumber, float velocity, SynthesiserSound*, int /*currentPitchWheelPosition*/) override { currentAngle = 0.0; level = velocity * 0.15; tailOff = 0.0; double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber); double cyclesPerSample = cyclesPerSecond / getSampleRate(); angleDelta = cyclesPerSample * 2.0 * double_Pi; } void stopNote (float /*velocity*/, bool allowTailOff) override { if (allowTailOff) { // start a tail-off by setting this flag. The render callback will pick up on // this and do a fade out, calling clearCurrentNote() when it's finished. if (tailOff == 0.0) // we only need to begin a tail-off if it's not already doing so - the // stopNote method could be called more than once. tailOff = 1.0; } else { // we're being told to stop playing immediately, so reset everything.. clearCurrentNote(); angleDelta = 0.0; } } void pitchWheelMoved (int /*newValue*/) override { // can't be bothered implementing this for the demo! } void controllerMoved (int /*controllerNumber*/, int /*newValue*/) override { // not interested in controllers in this case. } void renderNextBlock (AudioSampleBuffer& outputBuffer, int startSample, int numSamples) override { if (angleDelta != 0.0) { if (tailOff > 0) { while (--numSamples >= 0) { const float currentSample = (float) (std::sin (currentAngle) * level * tailOff); for (int i = outputBuffer.getNumChannels(); --i >= 0;) outputBuffer.addSample (i, startSample, currentSample); currentAngle += angleDelta; ++startSample; tailOff *= 0.99; if (tailOff <= 0.005) { clearCurrentNote(); angleDelta = 0.0; break; } } } else { while (--numSamples >= 0) { const float currentSample = (float) (std::sin (currentAngle) * level); for (int i = outputBuffer.getNumChannels(); --i >= 0;) outputBuffer.addSample (i, startSample, currentSample); currentAngle += angleDelta; ++startSample; } } } } private: double currentAngle, angleDelta, level, tailOff; }; //============================================================================== // This is an audio source that streams the output of our demo synth. struct SynthAudioSource : public AudioSource { SynthAudioSource (MidiKeyboardState& keyState) : keyboardState (keyState) { // Add some voices to our synth, to play the sounds.. for (int i = 4; --i >= 0;) { synth.addVoice (new SineWaveVoice()); // These voices will play our custom sine-wave sounds.. synth.addVoice (new SamplerVoice()); // and these ones play the sampled sounds } // ..and add a sound for them to play... setUsingSineWaveSound(); } void setUsingSineWaveSound() { synth.clearSounds(); synth.addSound (new SineWaveSound()); } void setUsingSampledSound() { WavAudioFormat wavFormat; ScopedPointer audioReader (wavFormat.createReaderFor (new MemoryInputStream (BinaryData::cello_wav, BinaryData::cello_wavSize, false), true)); BigInteger allNotes; allNotes.setRange (0, 128, true); synth.clearSounds(); synth.addSound (new SamplerSound ("demo sound", *audioReader, allNotes, 74, // root midi note 0.1, // attack time 0.1, // release time 10.0 // maximum sample length )); } void prepareToPlay (int /*samplesPerBlockExpected*/, double sampleRate) override { midiCollector.reset (sampleRate); synth.setCurrentPlaybackSampleRate (sampleRate); } void releaseResources() override { } void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override { // the synth always adds its output to the audio buffer, so we have to clear it // first.. bufferToFill.clearActiveBufferRegion(); // fill a midi buffer with incoming messages from the midi input. MidiBuffer incomingMidi; midiCollector.removeNextBlockOfMessages (incomingMidi, bufferToFill.numSamples); // pass these messages to the keyboard state so that it can update the component // to show on-screen which keys are being pressed on the physical midi keyboard. // This call will also add midi messages to the buffer which were generated by // the mouse-clicking on the on-screen keyboard. keyboardState.processNextMidiBuffer (incomingMidi, 0, bufferToFill.numSamples, true); // and now get the synth to process the midi events and generate its output. synth.renderNextBlock (*bufferToFill.buffer, incomingMidi, 0, bufferToFill.numSamples); } //============================================================================== // this collects real-time midi messages from the midi input device, and // turns them into blocks that we can process in our audio callback MidiMessageCollector midiCollector; // this represents the state of which keys on our on-screen keyboard are held // down. When the mouse is clicked on the keyboard component, this object also // generates midi messages for this, which we can pass on to our synth. MidiKeyboardState& keyboardState; // the synth itself! Synthesiser synth; }; //============================================================================== class AudioSynthesiserDemo : public Component, private Button::Listener { public: AudioSynthesiserDemo() : deviceManager (MainAppWindow::getSharedAudioDeviceManager()), synthAudioSource (keyboardState), keyboardComponent (keyboardState, MidiKeyboardComponent::horizontalKeyboard) { addAndMakeVisible (keyboardComponent); addAndMakeVisible (sineButton); sineButton.setButtonText ("Use sine wave"); sineButton.setRadioGroupId (321); sineButton.addListener (this); sineButton.setToggleState (true, dontSendNotification); addAndMakeVisible (sampledButton); sampledButton.setButtonText ("Use sampled sound"); sampledButton.setRadioGroupId (321); sampledButton.addListener (this); addAndMakeVisible (liveAudioDisplayComp); deviceManager.addAudioCallback (&liveAudioDisplayComp); audioSourcePlayer.setSource (&synthAudioSource); deviceManager.addAudioCallback (&audioSourcePlayer); deviceManager.addMidiInputCallback (String::empty, &(synthAudioSource.midiCollector)); setOpaque (true); setSize (640, 480); } ~AudioSynthesiserDemo() { audioSourcePlayer.setSource (nullptr); deviceManager.removeMidiInputCallback (String::empty, &(synthAudioSource.midiCollector)); deviceManager.removeAudioCallback (&audioSourcePlayer); deviceManager.removeAudioCallback (&liveAudioDisplayComp); } //============================================================================== void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { keyboardComponent.setBounds (8, 96, getWidth() - 16, 64); sineButton.setBounds (16, 176, 150, 24); sampledButton.setBounds (16, 200, 150, 24); liveAudioDisplayComp.setBounds (8, 8, getWidth() - 16, 64); } private: AudioDeviceManager& deviceManager; MidiKeyboardState keyboardState; AudioSourcePlayer audioSourcePlayer; SynthAudioSource synthAudioSource; MidiKeyboardComponent keyboardComponent; ToggleButton sineButton; ToggleButton sampledButton; LiveScrollingAudioDisplay liveAudioDisplayComp; //============================================================================== void buttonClicked (Button* buttonThatWasClicked) override { if (buttonThatWasClicked == &sineButton) synthAudioSource.setUsingSineWaveSound(); else if (buttonThatWasClicked == &sampledButton) synthAudioSource.setUsingSampledSound(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioSynthesiserDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("31 Audio: Synthesisers"); JUCE-4.1.0/examples/Demo/Source/Demos/Box2DDemo.cpp000066400000000000000000000222451263452017400215130ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" // (These classes and random functions are used inside the 3rd-party Box2D demo code) inline float32 RandomFloat() { return Random::getSystemRandom().nextFloat() * 2.0f - 1.0f; } inline float32 RandomFloat (float32 lo, float32 hi) { return Random::getSystemRandom().nextFloat() * (hi - lo) + lo; } struct Settings { Settings() : viewCenter (0.0f, 20.0f), hz (60.0f), velocityIterations (8), positionIterations (3), drawShapes (1), drawJoints (1), drawAABBs (0), drawPairs (0), drawContactPoints (0), drawContactNormals (0), drawContactForces (0), drawFrictionForces (0), drawCOMs (0), drawStats (0), drawProfile (0), enableWarmStarting (1), enableContinuous (1), enableSubStepping (0), pause (0), singleStep (0) {} b2Vec2 viewCenter; float32 hz; int velocityIterations; int positionIterations; int drawShapes; int drawJoints; int drawAABBs; int drawPairs; int drawContactPoints; int drawContactNormals; int drawContactForces; int drawFrictionForces; int drawCOMs; int drawStats; int drawProfile; int enableWarmStarting; int enableContinuous; int enableSubStepping; int pause; int singleStep; }; struct Test { Test() : m_world (new b2World (b2Vec2 (0.0f, -10.0f))) {} virtual ~Test() {} virtual void Keyboard (unsigned char /*key*/) {} virtual void KeyboardUp (unsigned char /*key*/) {} ScopedPointer m_world; }; #include "Box2DTests/AddPair.h" #include "Box2DTests/ApplyForce.h" #include "Box2DTests/Dominos.h" #include "Box2DTests/Chain.h" //============================================================================== /** This list box just displays a StringArray and broadcasts a change message when the selected row changes. */ class Box2DTestList : public ListBoxModel, public ChangeBroadcaster { public: Box2DTestList (const StringArray& testList) : tests (testList) { } int getNumRows() override { return tests.size(); } void paintListBoxItem (int row, Graphics& g, int w, int h, bool rowIsSelected) override { if (rowIsSelected) g.fillAll (LookAndFeel::getDefaultLookAndFeel().findColour (TextEditor::highlightColourId)); const Font f (h * 0.7f); g.setColour (Colours::black); g.setFont (f); g.drawText (tests[row], Rectangle (0, 0, w, h).reduced (2), Justification::centredLeft, true); } void selectedRowsChanged (int /*lastRowSelected*/) override { sendChangeMessage(); } private: StringArray tests; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Box2DTestList) }; //============================================================================== struct Box2DRenderComponent : public Component { Box2DRenderComponent() { setOpaque (true); } void paint (Graphics& g) { g.fillAll (Colours::white); if (currentTest != nullptr) { Box2DRenderer renderer; renderer.render (g, *currentTest->m_world, -16.0f, 30.0f, 16.0f, -1.0f, getLocalBounds().toFloat().reduced (8.0f)); } } ScopedPointer currentTest; }; //============================================================================== class Box2DDemo : public Component, private Timer, private ChangeListener { public: enum Demos { addPair = 0, applyForce, dominoes, chain, numTests }; Box2DDemo() : testsList (getTestsList()), testsListModel (testsList) { setOpaque (true); setWantsKeyboardFocus (true); testsListModel.addChangeListener (this); addAndMakeVisible (renderComponent); addAndMakeVisible (testsListBox); testsListBox.setModel (&testsListModel); testsListBox.selectRow (dominoes); testsListBox.setColour (ListBox::backgroundColourId, Colours::lightgrey); addAndMakeVisible (instructions); instructions.setMultiLine (true); instructions.setReadOnly (true); instructions.setColour (TextEditor::backgroundColourId, Colours::lightgrey); startTimerHz (60); } ~Box2DDemo() { testsListModel.removeChangeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (4)); Rectangle area (r.removeFromBottom (150)); testsListBox.setBounds (area.removeFromLeft (150)); area.removeFromLeft (4); instructions.setBounds (area); r.removeFromBottom (6); renderComponent.setBounds (r); } bool keyPressed (const KeyPress& key) override { if (renderComponent.currentTest != nullptr) { // We override this to avoid the system beeping for an unused keypress switch (key.getTextCharacter()) { case 'a': case 'w': case 'd': return true; default: break; } } return false; } private: StringArray testsList; Box2DTestList testsListModel; Box2DRenderComponent renderComponent; ListBox testsListBox; TextEditor instructions; static Test* createTest (int index) { switch (index) { case addPair: return new AddPair(); case applyForce: return new ApplyForce(); case dominoes: return new Dominos(); case chain: return new Chain(); default: break; } return nullptr; } static String getInstructions (int index) { switch (index) { case applyForce: { String s; s << "Keys:" << newLine << newLine << "Left: \'a\'" << newLine << "Right: \'d\'" << newLine << "Forward: \'w\'"; return s; } default: break; } return String(); } void checkKeys() { if (renderComponent.currentTest == nullptr) return; checkKeyCode ('a'); checkKeyCode ('w'); checkKeyCode ('d'); } void checkKeyCode (const int keyCode) { if (KeyPress::isKeyCurrentlyDown (keyCode)) renderComponent.currentTest->Keyboard ((unsigned char) keyCode); } void timerCallback() override { if (renderComponent.currentTest == nullptr) return; grabKeyboardFocus(); checkKeys(); renderComponent.currentTest->m_world->Step (1.0f / 60.0f, 6, 2); repaint(); } void changeListenerCallback (ChangeBroadcaster* source) override { if (source == &testsListModel) { const int index = testsListBox.getSelectedRow(); renderComponent.currentTest = createTest (index); instructions.setText (getInstructions (index)); repaint(); } } static StringArray getTestsList() { const char* tests[] = { "Add Pair Stress Test", "Apply Force", "Dominoes", "Chain" }; jassert (numElementsInArray (tests) == numTests); return StringArray (tests, numElementsInArray (tests)); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Box2DDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("29 Graphics: Box 2D"); JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/000077500000000000000000000000001263452017400212205ustar00rootroot00000000000000JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/AddPair.h000066400000000000000000000023461263452017400227020ustar00rootroot00000000000000 #ifndef AddPair_H #define AddPair_H class AddPair : public Test { public: AddPair() { m_world->SetGravity(b2Vec2(0.0f,0.0f)); { b2CircleShape shape; shape.m_p.SetZero(); shape.m_radius = 0.1f; float minX = -6.0f; float maxX = 0.0f; float minY = 4.0f; float maxY = 6.0f; for (int i = 0; i < 400; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = b2Vec2(RandomFloat(minX,maxX),RandomFloat(minY,maxY)); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 0.01f); } } { b2PolygonShape shape; shape.SetAsBox(1.5f, 1.5f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-40.0f,5.0f); bd.bullet = true; b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 1.0f); body->SetLinearVelocity(b2Vec2(150.0f, 0.0f)); } } static Test* Create() { return new AddPair; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/ApplyForce.h000066400000000000000000000123451263452017400234420ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef APPLY_FORCE_H #define APPLY_FORCE_H class ApplyForce : public Test { public: ApplyForce() { m_world->SetGravity(b2Vec2(0.0f, 0.0f)); const float32 k_restitution = 0.4f; b2Body* ground; { b2BodyDef bd; bd.position.Set(0.0f, 20.0f); ground = m_world->CreateBody(&bd); b2EdgeShape shape; b2FixtureDef sd; sd.shape = &shape; sd.density = 0.0f; sd.restitution = k_restitution; // Left vertical shape.Set(b2Vec2(-20.0f, -20.0f), b2Vec2(-20.0f, 20.0f)); ground->CreateFixture(&sd); // Right vertical shape.Set(b2Vec2(20.0f, -20.0f), b2Vec2(20.0f, 20.0f)); ground->CreateFixture(&sd); // Top horizontal shape.Set(b2Vec2(-20.0f, 20.0f), b2Vec2(20.0f, 20.0f)); ground->CreateFixture(&sd); // Bottom horizontal shape.Set(b2Vec2(-20.0f, -20.0f), b2Vec2(20.0f, -20.0f)); ground->CreateFixture(&sd); } { b2Transform xf1; xf1.q.Set(0.3524f * b2_pi); xf1.p = xf1.q.GetXAxis(); b2Vec2 vertices[3]; vertices[0] = b2Mul(xf1, b2Vec2(-1.0f, 0.0f)); vertices[1] = b2Mul(xf1, b2Vec2(1.0f, 0.0f)); vertices[2] = b2Mul(xf1, b2Vec2(0.0f, 0.5f)); b2PolygonShape poly1; poly1.Set(vertices, 3); b2FixtureDef sd1; sd1.shape = &poly1; sd1.density = 4.0f; b2Transform xf2; xf2.q.Set(-0.3524f * b2_pi); xf2.p = -xf2.q.GetXAxis(); vertices[0] = b2Mul(xf2, b2Vec2(-1.0f, 0.0f)); vertices[1] = b2Mul(xf2, b2Vec2(1.0f, 0.0f)); vertices[2] = b2Mul(xf2, b2Vec2(0.0f, 0.5f)); b2PolygonShape poly2; poly2.Set(vertices, 3); b2FixtureDef sd2; sd2.shape = &poly2; sd2.density = 2.0f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.angularDamping = 5.0f; bd.linearDamping = 0.1f; bd.position.Set(0.0f, 2.0f); bd.angle = b2_pi; bd.allowSleep = false; m_body = m_world->CreateBody(&bd); m_body->CreateFixture(&sd1); m_body->CreateFixture(&sd2); } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.5f); b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; fd.friction = 0.3f; for (int i = 0; i < 10; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 5.0f + 1.54f * i); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); float32 gravity = 10.0f; float32 I = body->GetInertia(); float32 mass = body->GetMass(); // For a circle: I = 0.5 * m * r * r ==> r = sqrt(2 * I / m) float32 radius = b2Sqrt(2.0f * I / mass); b2FrictionJointDef jd; jd.localAnchorA.SetZero(); jd.localAnchorB.SetZero(); jd.bodyA = ground; jd.bodyB = body; jd.collideConnected = true; jd.maxForce = mass * gravity; jd.maxTorque = mass * radius * gravity; m_world->CreateJoint(&jd); } } } void Keyboard(unsigned char key) { switch (key) { case 'w': { b2Vec2 f = m_body->GetWorldVector(b2Vec2(0.0f, -200.0f)); b2Vec2 p = m_body->GetWorldPoint(b2Vec2(0.0f, 2.0f)); m_body->ApplyForce(f, p); } break; case 'a': { m_body->ApplyTorque(50.0f); } break; case 'd': { m_body->ApplyTorque(-50.0f); } break; } } static Test* Create() { return new ApplyForce; } b2Body* m_body; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/BodyTypes.h000066400000000000000000000110161263452017400233120ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef BODY_TYPES_H #define BODY_TYPES_H class BodyTypes : public Test { public: BodyTypes() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); b2FixtureDef fd; fd.shape = &shape; ground->CreateFixture(&fd); } // Define attachment { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 3.0f); m_attachment = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.5f, 2.0f); m_attachment->CreateFixture(&shape, 2.0f); } // Define platform { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-4.0f, 5.0f); m_platform = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.5f, 4.0f, b2Vec2(4.0f, 0.0f), 0.5f * b2_pi); b2FixtureDef fd; fd.shape = &shape; fd.friction = 0.6f; fd.density = 2.0f; m_platform->CreateFixture(&fd); b2RevoluteJointDef rjd; rjd.Initialize(m_attachment, m_platform, b2Vec2(0.0f, 5.0f)); rjd.maxMotorTorque = 50.0f; rjd.enableMotor = true; m_world->CreateJoint(&rjd); b2PrismaticJointDef pjd; pjd.Initialize(ground, m_platform, b2Vec2(0.0f, 5.0f), b2Vec2(1.0f, 0.0f)); pjd.maxMotorForce = 1000.0f; pjd.enableMotor = true; pjd.lowerTranslation = -10.0f; pjd.upperTranslation = 10.0f; pjd.enableLimit = true; m_world->CreateJoint(&pjd); m_speed = 3.0f; } // Create a payload { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 8.0f); b2Body* body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.75f, 0.75f); b2FixtureDef fd; fd.shape = &shape; fd.friction = 0.6f; fd.density = 2.0f; body->CreateFixture(&fd); } } void Keyboard(unsigned char key) { switch (key) { case 'd': m_platform->SetType(b2_dynamicBody); break; case 's': m_platform->SetType(b2_staticBody); break; case 'k': m_platform->SetType(b2_kinematicBody); m_platform->SetLinearVelocity(b2Vec2(-m_speed, 0.0f)); m_platform->SetAngularVelocity(0.0f); break; } } void Step(Settings* settings) { // Drive the kinematic body. if (m_platform->GetType() == b2_kinematicBody) { b2Vec2 p = m_platform->GetTransform().p; b2Vec2 v = m_platform->GetLinearVelocity(); if ((p.x < -10.0f && v.x < 0.0f) || (p.x > 10.0f && v.x > 0.0f)) { v.x = -v.x; m_platform->SetLinearVelocity(v); } } Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Keys: (d) dynamic, (s) static, (k) kinematic"); m_textLine += 15; } static Test* Create() { return new BodyTypes; } b2Body* m_attachment; b2Body* m_platform; float32 m_speed; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Breakable.h000066400000000000000000000105261263452017400232450ustar00rootroot00000000000000/* * Copyright (c) 2008-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef BREAKABLE_TEST_H #define BREAKABLE_TEST_H // This is used to test sensor shapes. class Breakable : public Test { public: enum { e_count = 7 }; Breakable() { // Ground body { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } // Breakable dynamic body { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 40.0f); bd.angle = 0.25f * b2_pi; m_body1 = m_world->CreateBody(&bd); m_shape1.SetAsBox(0.5f, 0.5f, b2Vec2(-0.5f, 0.0f), 0.0f); m_piece1 = m_body1->CreateFixture(&m_shape1, 1.0f); m_shape2.SetAsBox(0.5f, 0.5f, b2Vec2(0.5f, 0.0f), 0.0f); m_piece2 = m_body1->CreateFixture(&m_shape2, 1.0f); } m_break = false; m_broke = false; } void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) { if (m_broke) { // The body already broke. return; } // Should the body break? int32 count = contact->GetManifold()->pointCount; float32 maxImpulse = 0.0f; for (int32 i = 0; i < count; ++i) { maxImpulse = b2Max(maxImpulse, impulse->normalImpulses[i]); } if (maxImpulse > 40.0f) { // Flag the body for breaking. m_break = true; } } void Break() { // Create two bodies from one. b2Body* body1 = m_piece1->GetBody(); b2Vec2 center = body1->GetWorldCenter(); body1->DestroyFixture(m_piece2); m_piece2 = NULL; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = body1->GetPosition(); bd.angle = body1->GetAngle(); b2Body* body2 = m_world->CreateBody(&bd); m_piece2 = body2->CreateFixture(&m_shape2, 1.0f); // Compute consistent velocities for new bodies based on // cached velocity. b2Vec2 center1 = body1->GetWorldCenter(); b2Vec2 center2 = body2->GetWorldCenter(); b2Vec2 velocity1 = m_velocity + b2Cross(m_angularVelocity, center1 - center); b2Vec2 velocity2 = m_velocity + b2Cross(m_angularVelocity, center2 - center); body1->SetAngularVelocity(m_angularVelocity); body1->SetLinearVelocity(velocity1); body2->SetAngularVelocity(m_angularVelocity); body2->SetLinearVelocity(velocity2); } void Step(Settings* settings) { if (m_break) { Break(); m_broke = true; m_break = false; } // Cache velocities to improve movement on breakage. if (m_broke == false) { m_velocity = m_body1->GetLinearVelocity(); m_angularVelocity = m_body1->GetAngularVelocity(); } Test::Step(settings); } static Test* Create() { return new Breakable; } b2Body* m_body1; b2Vec2 m_velocity; float32 m_angularVelocity; b2PolygonShape m_shape1; b2PolygonShape m_shape2; b2Fixture* m_piece1; b2Fixture* m_piece2; bool m_broke; bool m_break; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Bridge.h000066400000000000000000000070321263452017400225670ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef BRIDGE_H #define BRIDGE_H class Bridge : public Test { public: enum { e_count = 30 }; Bridge() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; fd.friction = 0.2f; b2RevoluteJointDef jd; b2Body* prevBody = ground; for (int32 i = 0; i < e_count; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-14.5f + 1.0f * i, 5.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); if (i == (e_count >> 1)) { m_middle = body; } prevBody = body; } b2Vec2 anchor(-15.0f + 1.0f * e_count, 5.0f); jd.Initialize(prevBody, ground, anchor); m_world->CreateJoint(&jd); } for (int32 i = 0; i < 2; ++i) { b2Vec2 vertices[3]; vertices[0].Set(-0.5f, 0.0f); vertices[1].Set(0.5f, 0.0f); vertices[2].Set(0.0f, 1.5f); b2PolygonShape shape; shape.Set(vertices, 3); b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-8.0f + 8.0f * i, 12.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); } for (int32 i = 0; i < 3; ++i) { b2CircleShape shape; shape.m_radius = 0.5f; b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-6.0f + 6.0f * i, 10.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); } } static Test* Create() { return new Bridge; } b2Body* m_middle; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/BulletTest.h000066400000000000000000000102171263452017400234610ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef BULLET_TEST_H #define BULLET_TEST_H class BulletTest : public Test { public: BulletTest() { { b2BodyDef bd; bd.position.Set(0.0f, 0.0f); b2Body* body = m_world->CreateBody(&bd); b2EdgeShape edge; edge.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); body->CreateFixture(&edge, 0.0f); b2PolygonShape shape; shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); body->CreateFixture(&shape, 0.0f); } { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 4.0f); b2PolygonShape box; box.SetAsBox(2.0f, 0.1f); m_body = m_world->CreateBody(&bd); m_body->CreateFixture(&box, 1.0f); box.SetAsBox(0.25f, 0.25f); //m_x = RandomFloat(-1.0f, 1.0f); m_x = 0.20352793f; bd.position.Set(m_x, 10.0f); bd.bullet = true; m_bullet = m_world->CreateBody(&bd); m_bullet->CreateFixture(&box, 100.0f); m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); } } void Launch() { m_body->SetTransform(b2Vec2(0.0f, 4.0f), 0.0f); m_body->SetLinearVelocity(b2Vec2_zero); m_body->SetAngularVelocity(0.0f); m_x = RandomFloat(-1.0f, 1.0f); m_bullet->SetTransform(b2Vec2(m_x, 10.0f), 0.0f); m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); m_bullet->SetAngularVelocity(0.0f); extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; extern int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters; extern int32 b2_toiRootIters, b2_toiMaxRootIters; b2_gjkCalls = 0; b2_gjkIters = 0; b2_gjkMaxIters = 0; b2_toiCalls = 0; b2_toiIters = 0; b2_toiMaxIters = 0; b2_toiRootIters = 0; b2_toiMaxRootIters = 0; } void Step(Settings* settings) { Test::Step(settings); extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; extern int32 b2_toiCalls, b2_toiIters; extern int32 b2_toiRootIters, b2_toiMaxRootIters; if (b2_gjkCalls > 0) { m_debugDraw.DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", b2_gjkCalls, b2_gjkIters / float32(b2_gjkCalls), b2_gjkMaxIters); m_textLine += 15; } if (b2_toiCalls > 0) { m_debugDraw.DrawString(5, m_textLine, "toi calls = %d, ave toi iters = %3.1f, max toi iters = %d", b2_toiCalls, b2_toiIters / float32(b2_toiCalls), b2_toiMaxRootIters); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "ave toi root iters = %3.1f, max toi root iters = %d", b2_toiRootIters / float32(b2_toiCalls), b2_toiMaxRootIters); m_textLine += 15; } if (m_stepCount % 60 == 0) { Launch(); } } static Test* Create() { return new BulletTest; } b2Body* m_body; b2Body* m_bullet; float32 m_x; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Cantilever.h000066400000000000000000000141371263452017400234730ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef CANTILEVER_H #define CANTILEVER_H // It is difficult to make a cantilever made of links completely rigid with weld joints. // You will have to use a high number of iterations to make them stiff. // So why not go ahead and use soft weld joints? They behave like a revolute // joint with a rotational spring. class Cantilever : public Test { public: enum { e_count = 8 }; Cantilever() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; b2WeldJointDef jd; b2Body* prevBody = ground; for (int32 i = 0; i < e_count; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-14.5f + 1.0f * i, 5.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); b2Vec2 anchor(-15.0f + 1.0f * i, 5.0f); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); prevBody = body; } } { b2PolygonShape shape; shape.SetAsBox(1.0f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; b2WeldJointDef jd; jd.frequencyHz = 5.0f; jd.dampingRatio = 0.7f; b2Body* prevBody = ground; for (int32 i = 0; i < 3; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-14.0f + 2.0f * i, 15.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); b2Vec2 anchor(-15.0f + 2.0f * i, 15.0f); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); prevBody = body; } } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; b2WeldJointDef jd; b2Body* prevBody = ground; for (int32 i = 0; i < e_count; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-4.5f + 1.0f * i, 5.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); if (i > 0) { b2Vec2 anchor(-5.0f + 1.0f * i, 5.0f); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); } prevBody = body; } } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; b2WeldJointDef jd; jd.frequencyHz = 8.0f; jd.dampingRatio = 0.7f; b2Body* prevBody = ground; for (int32 i = 0; i < e_count; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(5.5f + 1.0f * i, 10.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); if (i > 0) { b2Vec2 anchor(5.0f + 1.0f * i, 10.0f); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); } prevBody = body; } } for (int32 i = 0; i < 2; ++i) { b2Vec2 vertices[3]; vertices[0].Set(-0.5f, 0.0f); vertices[1].Set(0.5f, 0.0f); vertices[2].Set(0.0f, 1.5f); b2PolygonShape shape; shape.Set(vertices, 3); b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-8.0f + 8.0f * i, 12.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); } for (int32 i = 0; i < 2; ++i) { b2CircleShape shape; shape.m_radius = 0.5f; b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-6.0f + 6.0f * i, 10.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); } } static Test* Create() { return new Cantilever; } b2Body* m_middle; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Car.h000066400000000000000000000210001263452017400220670ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef CAR_H #define CAR_H // This is a fun demo that shows off the wheel joint class Car : public Test { public: Car() { m_hz = 4.0f; m_zeta = 0.7f; m_speed = 50.0f; b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; b2FixtureDef fd; fd.shape = &shape; fd.density = 0.0f; fd.friction = 0.6f; shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); ground->CreateFixture(&fd); float32 hs[10] = {0.25f, 1.0f, 4.0f, 0.0f, 0.0f, -1.0f, -2.0f, -2.0f, -1.25f, 0.0f}; float32 x = 20.0f, y1 = 0.0f, dx = 5.0f; for (int32 i = 0; i < 10; ++i) { float32 y2 = hs[i]; shape.Set(b2Vec2(x, y1), b2Vec2(x + dx, y2)); ground->CreateFixture(&fd); y1 = y2; x += dx; } for (int32 i = 0; i < 10; ++i) { float32 y2 = hs[i]; shape.Set(b2Vec2(x, y1), b2Vec2(x + dx, y2)); ground->CreateFixture(&fd); y1 = y2; x += dx; } shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); ground->CreateFixture(&fd); x += 80.0f; shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); ground->CreateFixture(&fd); x += 40.0f; shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 10.0f, 5.0f)); ground->CreateFixture(&fd); x += 20.0f; shape.Set(b2Vec2(x, 0.0f), b2Vec2(x + 40.0f, 0.0f)); ground->CreateFixture(&fd); x += 40.0f; shape.Set(b2Vec2(x, 0.0f), b2Vec2(x, 20.0f)); ground->CreateFixture(&fd); } // Teeter { b2BodyDef bd; bd.position.Set(140.0f, 1.0f); bd.type = b2_dynamicBody; b2Body* body = m_world->CreateBody(&bd); b2PolygonShape box; box.SetAsBox(10.0f, 0.25f); body->CreateFixture(&box, 1.0f); b2RevoluteJointDef jd; jd.Initialize(ground, body, body->GetPosition()); jd.lowerAngle = -8.0f * b2_pi / 180.0f; jd.upperAngle = 8.0f * b2_pi / 180.0f; jd.enableLimit = true; m_world->CreateJoint(&jd); body->ApplyAngularImpulse(100.0f); } // Bridge { int32 N = 20; b2PolygonShape shape; shape.SetAsBox(1.0f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; fd.friction = 0.6f; b2RevoluteJointDef jd; b2Body* prevBody = ground; for (int32 i = 0; i < N; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(161.0f + 2.0f * i, -0.125f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); b2Vec2 anchor(160.0f + 2.0f * i, -0.125f); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); prevBody = body; } b2Vec2 anchor(160.0f + 2.0f * N, -0.125f); jd.Initialize(prevBody, ground, anchor); m_world->CreateJoint(&jd); } // Boxes { b2PolygonShape box; box.SetAsBox(0.5f, 0.5f); b2Body* body = NULL; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(230.0f, 0.5f); body = m_world->CreateBody(&bd); body->CreateFixture(&box, 0.5f); bd.position.Set(230.0f, 1.5f); body = m_world->CreateBody(&bd); body->CreateFixture(&box, 0.5f); bd.position.Set(230.0f, 2.5f); body = m_world->CreateBody(&bd); body->CreateFixture(&box, 0.5f); bd.position.Set(230.0f, 3.5f); body = m_world->CreateBody(&bd); body->CreateFixture(&box, 0.5f); bd.position.Set(230.0f, 4.5f); body = m_world->CreateBody(&bd); body->CreateFixture(&box, 0.5f); } // Car { b2PolygonShape chassis; b2Vec2 vertices[8]; vertices[0].Set(-1.5f, -0.5f); vertices[1].Set(1.5f, -0.5f); vertices[2].Set(1.5f, 0.0f); vertices[3].Set(0.0f, 0.9f); vertices[4].Set(-1.15f, 0.9f); vertices[5].Set(-1.5f, 0.2f); chassis.Set(vertices, 6); b2CircleShape circle; circle.m_radius = 0.4f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 1.0f); m_car = m_world->CreateBody(&bd); m_car->CreateFixture(&chassis, 1.0f); b2FixtureDef fd; fd.shape = &circle; fd.density = 1.0f; fd.friction = 0.9f; bd.position.Set(-1.0f, 0.35f); m_wheel1 = m_world->CreateBody(&bd); m_wheel1->CreateFixture(&fd); bd.position.Set(1.0f, 0.4f); m_wheel2 = m_world->CreateBody(&bd); m_wheel2->CreateFixture(&fd); b2WheelJointDef jd; b2Vec2 axis(0.0f, 1.0f); jd.Initialize(m_car, m_wheel1, m_wheel1->GetPosition(), axis); jd.motorSpeed = 0.0f; jd.maxMotorTorque = 20.0f; jd.enableMotor = true; jd.frequencyHz = m_hz; jd.dampingRatio = m_zeta; m_spring1 = (b2WheelJoint*)m_world->CreateJoint(&jd); jd.Initialize(m_car, m_wheel2, m_wheel2->GetPosition(), axis); jd.motorSpeed = 0.0f; jd.maxMotorTorque = 10.0f; jd.enableMotor = false; jd.frequencyHz = m_hz; jd.dampingRatio = m_zeta; m_spring2 = (b2WheelJoint*)m_world->CreateJoint(&jd); } } void Keyboard(unsigned char key) { switch (key) { case 'a': m_spring1->SetMotorSpeed(m_speed); break; case 's': m_spring1->SetMotorSpeed(0.0f); break; case 'd': m_spring1->SetMotorSpeed(-m_speed); break; case 'q': m_hz = b2Max(0.0f, m_hz - 1.0f); m_spring1->SetSpringFrequencyHz(m_hz); m_spring2->SetSpringFrequencyHz(m_hz); break; case 'e': m_hz += 1.0f; m_spring1->SetSpringFrequencyHz(m_hz); m_spring2->SetSpringFrequencyHz(m_hz); break; } } void Step(Settings* settings) { m_debugDraw.DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, hz down = q, hz up = e"); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "frequency = %g hz, damping ratio = %g", m_hz, m_zeta); m_textLine += 15; settings->viewCenter.x = m_car->GetPosition().x; Test::Step(settings); } static Test* Create() { return new Car; } b2Body* m_car; b2Body* m_wheel1; b2Body* m_wheel2; float32 m_hz; float32 m_zeta; float32 m_speed; b2WheelJoint* m_spring1; b2WheelJoint* m_spring2; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Chain.h000066400000000000000000000043151263452017400224160ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef CHAIN_H #define CHAIN_H class Chain : public Test { public: Chain() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.6f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; fd.friction = 0.2f; b2RevoluteJointDef jd; jd.collideConnected = false; const float32 y = 25.0f; b2Body* prevBody = ground; for (int i = 0; i < 30; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.5f + i, y); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); b2Vec2 anchor(float32(i), y); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); prevBody = body; } } } static Test* Create() { return new Chain; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/CharacterCollision.h000066400000000000000000000175731263452017400251560ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef CHARACTER_COLLISION_H #define CHARACTER_COLLISION_H /// This is a test of typical character collision scenarios. This does not /// show how you should implement a character in your application. /// Instead this is used to test smooth collision on edge chains. class CharacterCollision : public Test { public: CharacterCollision() { // Ground body { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } // Collinear edges with no adjacency information. // This shows the problematic case where a box shape can hit // an internal vertex. { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-8.0f, 1.0f), b2Vec2(-6.0f, 1.0f)); ground->CreateFixture(&shape, 0.0f); shape.Set(b2Vec2(-6.0f, 1.0f), b2Vec2(-4.0f, 1.0f)); ground->CreateFixture(&shape, 0.0f); shape.Set(b2Vec2(-4.0f, 1.0f), b2Vec2(-2.0f, 1.0f)); ground->CreateFixture(&shape, 0.0f); } // Chain shape { b2BodyDef bd; bd.angle = 0.25f * b2_pi; b2Body* ground = m_world->CreateBody(&bd); b2Vec2 vs[4]; vs[0].Set(5.0f, 7.0f); vs[1].Set(6.0f, 8.0f); vs[2].Set(7.0f, 8.0f); vs[3].Set(8.0f, 7.0f); b2ChainShape shape; shape.CreateChain(vs, 4); ground->CreateFixture(&shape, 0.0f); } // Square tiles. This shows that adjacency shapes may // have non-smooth collision. There is no solution // to this problem. { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(1.0f, 1.0f, b2Vec2(4.0f, 3.0f), 0.0f); ground->CreateFixture(&shape, 0.0f); shape.SetAsBox(1.0f, 1.0f, b2Vec2(6.0f, 3.0f), 0.0f); ground->CreateFixture(&shape, 0.0f); shape.SetAsBox(1.0f, 1.0f, b2Vec2(8.0f, 3.0f), 0.0f); ground->CreateFixture(&shape, 0.0f); } // Square made from an edge loop. Collision should be smooth. { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2Vec2 vs[4]; vs[0].Set(-1.0f, 3.0f); vs[1].Set(1.0f, 3.0f); vs[2].Set(1.0f, 5.0f); vs[3].Set(-1.0f, 5.0f); b2ChainShape shape; shape.CreateLoop(vs, 4); ground->CreateFixture(&shape, 0.0f); } // Edge loop. Collision should be smooth. { b2BodyDef bd; bd.position.Set(-10.0f, 4.0f); b2Body* ground = m_world->CreateBody(&bd); b2Vec2 vs[10]; vs[0].Set(0.0f, 0.0f); vs[1].Set(6.0f, 0.0f); vs[2].Set(6.0f, 2.0f); vs[3].Set(4.0f, 1.0f); vs[4].Set(2.0f, 2.0f); vs[5].Set(0.0f, 2.0f); vs[6].Set(-2.0f, 2.0f); vs[7].Set(-4.0f, 3.0f); vs[8].Set(-6.0f, 2.0f); vs[9].Set(-6.0f, 0.0f); b2ChainShape shape; shape.CreateLoop(vs, 10); ground->CreateFixture(&shape, 0.0f); } // Square character 1 { b2BodyDef bd; bd.position.Set(-3.0f, 8.0f); bd.type = b2_dynamicBody; bd.fixedRotation = true; bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.5f, 0.5f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; body->CreateFixture(&fd); } // Square character 2 { b2BodyDef bd; bd.position.Set(-5.0f, 5.0f); bd.type = b2_dynamicBody; bd.fixedRotation = true; bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.25f, 0.25f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; body->CreateFixture(&fd); } // Hexagon character { b2BodyDef bd; bd.position.Set(-5.0f, 8.0f); bd.type = b2_dynamicBody; bd.fixedRotation = true; bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); float32 angle = 0.0f; float32 delta = b2_pi / 3.0f; b2Vec2 vertices[6]; for (int32 i = 0; i < 6; ++i) { vertices[i].Set(0.5f * cosf(angle), 0.5f * sinf(angle)); angle += delta; } b2PolygonShape shape; shape.Set(vertices, 6); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; body->CreateFixture(&fd); } // Circle character { b2BodyDef bd; bd.position.Set(3.0f, 5.0f); bd.type = b2_dynamicBody; bd.fixedRotation = true; bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); b2CircleShape shape; shape.m_radius = 0.5f; b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; body->CreateFixture(&fd); } // Circle character { b2BodyDef bd; bd.position.Set(-7.0f, 6.0f); bd.type = b2_dynamicBody; bd.allowSleep = false; m_character = m_world->CreateBody(&bd); b2CircleShape shape; shape.m_radius = 0.25f; b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; fd.friction = 1.0f; m_character->CreateFixture(&fd); } } void Step(Settings* settings) { b2Vec2 v = m_character->GetLinearVelocity(); v.x = -5.0f; m_character->SetLinearVelocity(v); Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "This tests various character collision shapes."); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "Limitation: square and hexagon can snag on aligned boxes."); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "Feature: edge chains have smooth collision inside and out."); m_textLine += 15; } static Test* Create() { return new CharacterCollision; } b2Body* m_character; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/CollisionFiltering.h000066400000000000000000000135141263452017400251740ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef COLLISION_FILTERING_H #define COLLISION_FILTERING_H // This is a test of collision filtering. // There is a triangle, a box, and a circle. // There are 6 shapes. 3 large and 3 small. // The 3 small ones always collide. // The 3 large ones never collide. // The boxes don't collide with triangles (except if both are small). const int16 k_smallGroup = 1; const int16 k_largeGroup = -1; const uint16 k_defaultCategory = 0x0001; const uint16 k_triangleCategory = 0x0002; const uint16 k_boxCategory = 0x0004; const uint16 k_circleCategory = 0x0008; const uint16 k_triangleMask = 0xFFFF; const uint16 k_boxMask = 0xFFFF ^ k_triangleCategory; const uint16 k_circleMask = 0xFFFF; class CollisionFiltering : public Test { public: CollisionFiltering() { // Ground body { b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); b2FixtureDef sd; sd.shape = &shape; sd.friction = 0.3f; b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&sd); } // Small triangle b2Vec2 vertices[3]; vertices[0].Set(-1.0f, 0.0f); vertices[1].Set(1.0f, 0.0f); vertices[2].Set(0.0f, 2.0f); b2PolygonShape polygon; polygon.Set(vertices, 3); b2FixtureDef triangleShapeDef; triangleShapeDef.shape = &polygon; triangleShapeDef.density = 1.0f; triangleShapeDef.filter.groupIndex = k_smallGroup; triangleShapeDef.filter.categoryBits = k_triangleCategory; triangleShapeDef.filter.maskBits = k_triangleMask; b2BodyDef triangleBodyDef; triangleBodyDef.type = b2_dynamicBody; triangleBodyDef.position.Set(-5.0f, 2.0f); b2Body* body1 = m_world->CreateBody(&triangleBodyDef); body1->CreateFixture(&triangleShapeDef); // Large triangle (recycle definitions) vertices[0] *= 2.0f; vertices[1] *= 2.0f; vertices[2] *= 2.0f; polygon.Set(vertices, 3); triangleShapeDef.filter.groupIndex = k_largeGroup; triangleBodyDef.position.Set(-5.0f, 6.0f); triangleBodyDef.fixedRotation = true; // look at me! b2Body* body2 = m_world->CreateBody(&triangleBodyDef); body2->CreateFixture(&triangleShapeDef); { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-5.0f, 10.0f); b2Body* body = m_world->CreateBody(&bd); b2PolygonShape p; p.SetAsBox(0.5f, 1.0f); body->CreateFixture(&p, 1.0f); b2PrismaticJointDef jd; jd.bodyA = body2; jd.bodyB = body; jd.enableLimit = true; jd.localAnchorA.Set(0.0f, 4.0f); jd.localAnchorB.SetZero(); jd.localAxisA.Set(0.0f, 1.0f); jd.lowerTranslation = -1.0f; jd.upperTranslation = 1.0f; m_world->CreateJoint(&jd); } // Small box polygon.SetAsBox(1.0f, 0.5f); b2FixtureDef boxShapeDef; boxShapeDef.shape = &polygon; boxShapeDef.density = 1.0f; boxShapeDef.restitution = 0.1f; boxShapeDef.filter.groupIndex = k_smallGroup; boxShapeDef.filter.categoryBits = k_boxCategory; boxShapeDef.filter.maskBits = k_boxMask; b2BodyDef boxBodyDef; boxBodyDef.type = b2_dynamicBody; boxBodyDef.position.Set(0.0f, 2.0f); b2Body* body3 = m_world->CreateBody(&boxBodyDef); body3->CreateFixture(&boxShapeDef); // Large box (recycle definitions) polygon.SetAsBox(2.0f, 1.0f); boxShapeDef.filter.groupIndex = k_largeGroup; boxBodyDef.position.Set(0.0f, 6.0f); b2Body* body4 = m_world->CreateBody(&boxBodyDef); body4->CreateFixture(&boxShapeDef); // Small circle b2CircleShape circle; circle.m_radius = 1.0f; b2FixtureDef circleShapeDef; circleShapeDef.shape = &circle; circleShapeDef.density = 1.0f; circleShapeDef.filter.groupIndex = k_smallGroup; circleShapeDef.filter.categoryBits = k_circleCategory; circleShapeDef.filter.maskBits = k_circleMask; b2BodyDef circleBodyDef; circleBodyDef.type = b2_dynamicBody; circleBodyDef.position.Set(5.0f, 2.0f); b2Body* body5 = m_world->CreateBody(&circleBodyDef); body5->CreateFixture(&circleShapeDef); // Large circle circle.m_radius *= 2.0f; circleShapeDef.filter.groupIndex = k_largeGroup; circleBodyDef.position.Set(5.0f, 6.0f); b2Body* body6 = m_world->CreateBody(&circleBodyDef); body6->CreateFixture(&circleShapeDef); } static Test* Create() { return new CollisionFiltering; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/CollisionProcessing.h000066400000000000000000000134271263452017400253700ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef COLLISION_PROCESSING_H #define COLLISION_PROCESSING_H #include // This test shows collision processing and tests // deferred body destruction. class CollisionProcessing : public Test { public: CollisionProcessing() { // Ground body { b2EdgeShape shape; shape.Set(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); b2FixtureDef sd; sd.shape = &shape;; b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&sd); } float32 xLo = -5.0f, xHi = 5.0f; float32 yLo = 2.0f, yHi = 35.0f; // Small triangle b2Vec2 vertices[3]; vertices[0].Set(-1.0f, 0.0f); vertices[1].Set(1.0f, 0.0f); vertices[2].Set(0.0f, 2.0f); b2PolygonShape polygon; polygon.Set(vertices, 3); b2FixtureDef triangleShapeDef; triangleShapeDef.shape = &polygon; triangleShapeDef.density = 1.0f; b2BodyDef triangleBodyDef; triangleBodyDef.type = b2_dynamicBody; triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); b2Body* body1 = m_world->CreateBody(&triangleBodyDef); body1->CreateFixture(&triangleShapeDef); // Large triangle (recycle definitions) vertices[0] *= 2.0f; vertices[1] *= 2.0f; vertices[2] *= 2.0f; polygon.Set(vertices, 3); triangleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); b2Body* body2 = m_world->CreateBody(&triangleBodyDef); body2->CreateFixture(&triangleShapeDef); // Small box polygon.SetAsBox(1.0f, 0.5f); b2FixtureDef boxShapeDef; boxShapeDef.shape = &polygon; boxShapeDef.density = 1.0f; b2BodyDef boxBodyDef; boxBodyDef.type = b2_dynamicBody; boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); b2Body* body3 = m_world->CreateBody(&boxBodyDef); body3->CreateFixture(&boxShapeDef); // Large box (recycle definitions) polygon.SetAsBox(2.0f, 1.0f); boxBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); b2Body* body4 = m_world->CreateBody(&boxBodyDef); body4->CreateFixture(&boxShapeDef); // Small circle b2CircleShape circle; circle.m_radius = 1.0f; b2FixtureDef circleShapeDef; circleShapeDef.shape = &circle; circleShapeDef.density = 1.0f; b2BodyDef circleBodyDef; circleBodyDef.type = b2_dynamicBody; circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); b2Body* body5 = m_world->CreateBody(&circleBodyDef); body5->CreateFixture(&circleShapeDef); // Large circle circle.m_radius *= 2.0f; circleBodyDef.position.Set(RandomFloat(xLo, xHi), RandomFloat(yLo, yHi)); b2Body* body6 = m_world->CreateBody(&circleBodyDef); body6->CreateFixture(&circleShapeDef); } void Step(Settings* settings) { Test::Step(settings); // We are going to destroy some bodies according to contact // points. We must buffer the bodies that should be destroyed // because they may belong to multiple contact points. const int32 k_maxNuke = 6; b2Body* nuke[k_maxNuke]; int32 nukeCount = 0; // Traverse the contact results. Destroy bodies that // are touching heavier bodies. for (int32 i = 0; i < m_pointCount; ++i) { ContactPoint* point = m_points + i; b2Body* body1 = point->fixtureA->GetBody(); b2Body* body2 = point->fixtureB->GetBody(); float32 mass1 = body1->GetMass(); float32 mass2 = body2->GetMass(); if (mass1 > 0.0f && mass2 > 0.0f) { if (mass2 > mass1) { nuke[nukeCount++] = body1; } else { nuke[nukeCount++] = body2; } if (nukeCount == k_maxNuke) { break; } } } // Sort the nuke array to group duplicates. std::sort(nuke, nuke + nukeCount); // Destroy the bodies, skipping duplicates. int32 i = 0; while (i < nukeCount) { b2Body* b = nuke[i++]; while (i < nukeCount && nuke[i] == b) { ++i; } if (b != m_bomb) { m_world->DestroyBody(b); } } } static Test* Create() { return new CollisionProcessing; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/CompoundShapes.h000066400000000000000000000113531263452017400243240ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef COMPOUND_SHAPES_H #define COMPOUND_SHAPES_H // TODO_ERIN test joints on compounds. class CompoundShapes : public Test { public: CompoundShapes() { { b2BodyDef bd; bd.position.Set(0.0f, 0.0f); b2Body* body = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); body->CreateFixture(&shape, 0.0f); } { b2CircleShape circle1; circle1.m_radius = 0.5f; circle1.m_p.Set(-0.5f, 0.5f); b2CircleShape circle2; circle2.m_radius = 0.5f; circle2.m_p.Set(0.5f, 0.5f); for (int i = 0; i < 10; ++i) { float32 x = RandomFloat(-0.1f, 0.1f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(x + 5.0f, 1.05f + 2.5f * i); bd.angle = RandomFloat(-b2_pi, b2_pi); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&circle1, 2.0f); body->CreateFixture(&circle2, 0.0f); } } { b2PolygonShape polygon1; polygon1.SetAsBox(0.25f, 0.5f); b2PolygonShape polygon2; polygon2.SetAsBox(0.25f, 0.5f, b2Vec2(0.0f, -0.5f), 0.5f * b2_pi); for (int i = 0; i < 10; ++i) { float32 x = RandomFloat(-0.1f, 0.1f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(x - 5.0f, 1.05f + 2.5f * i); bd.angle = RandomFloat(-b2_pi, b2_pi); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&polygon1, 2.0f); body->CreateFixture(&polygon2, 2.0f); } } { b2Transform xf1; xf1.q.Set(0.3524f * b2_pi); xf1.p = xf1.q.GetXAxis(); b2Vec2 vertices[3]; b2PolygonShape triangle1; vertices[0] = b2Mul(xf1, b2Vec2(-1.0f, 0.0f)); vertices[1] = b2Mul(xf1, b2Vec2(1.0f, 0.0f)); vertices[2] = b2Mul(xf1, b2Vec2(0.0f, 0.5f)); triangle1.Set(vertices, 3); b2Transform xf2; xf2.q.Set(-0.3524f * b2_pi); xf2.p = -xf2.q.GetXAxis(); b2PolygonShape triangle2; vertices[0] = b2Mul(xf2, b2Vec2(-1.0f, 0.0f)); vertices[1] = b2Mul(xf2, b2Vec2(1.0f, 0.0f)); vertices[2] = b2Mul(xf2, b2Vec2(0.0f, 0.5f)); triangle2.Set(vertices, 3); for (int32 i = 0; i < 10; ++i) { float32 x = RandomFloat(-0.1f, 0.1f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(x, 2.05f + 2.5f * i); bd.angle = 0.0f; b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&triangle1, 2.0f); body->CreateFixture(&triangle2, 2.0f); } } { b2PolygonShape bottom; bottom.SetAsBox( 1.5f, 0.15f ); b2PolygonShape left; left.SetAsBox(0.15f, 2.7f, b2Vec2(-1.45f, 2.35f), 0.2f); b2PolygonShape right; right.SetAsBox(0.15f, 2.7f, b2Vec2(1.45f, 2.35f), -0.2f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set( 0.0f, 2.0f ); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&bottom, 4.0f); body->CreateFixture(&left, 4.0f); body->CreateFixture(&right, 4.0f); } } static Test* Create() { return new CompoundShapes; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Confined.h000066400000000000000000000105141263452017400231170ustar00rootroot00000000000000/* * Copyright (c) 2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef CONFINED_H #define CONFINED_H class Confined : public Test { public: enum { e_columnCount = 0, e_rowCount = 0 }; Confined() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; // Floor shape.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); // Left wall shape.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(-10.0f, 20.0f)); ground->CreateFixture(&shape, 0.0f); // Right wall shape.Set(b2Vec2(10.0f, 0.0f), b2Vec2(10.0f, 20.0f)); ground->CreateFixture(&shape, 0.0f); // Roof shape.Set(b2Vec2(-10.0f, 20.0f), b2Vec2(10.0f, 20.0f)); ground->CreateFixture(&shape, 0.0f); } float32 radius = 0.5f; b2CircleShape shape; shape.m_p.SetZero(); shape.m_radius = radius; b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; fd.friction = 0.1f; for (int32 j = 0; j < e_columnCount; ++j) { for (int i = 0; i < e_rowCount; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-10.0f + (2.1f * j + 1.0f + 0.01f * i) * radius, (2.0f * i + 1.0f) * radius); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); } } m_world->SetGravity(b2Vec2(0.0f, 0.0f)); } void CreateCircle() { float32 radius = 2.0f; b2CircleShape shape; shape.m_p.SetZero(); shape.m_radius = radius; b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; fd.friction = 0.0f; b2Vec2 p(RandomFloat(), 3.0f + RandomFloat()); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = p; //bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); } void Keyboard(unsigned char key) { switch (key) { case 'c': CreateCircle(); break; } } void Step(Settings* settings) { bool sleeping = true; for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) { if (b->GetType() != b2_dynamicBody) { continue; } if (b->IsAwake()) { sleeping = false; } } if (m_stepCount == 180) { m_stepCount += 0; } //if (sleeping) //{ // CreateCircle(); //} Test::Step(settings); for (b2Body* b = m_world->GetBodyList(); b; b = b->GetNext()) { if (b->GetType() != b2_dynamicBody) { continue; } b2Vec2 p = b->GetPosition(); if (p.x <= -10.0f || 10.0f <= p.x || p.y <= 0.0f || 20.0f <= p.y) { p.x += 0.0; } } m_debugDraw.DrawString(5, m_textLine, "Press 'c' to create a circle."); m_textLine += 15; } static Test* Create() { return new Confined; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/ContinuousTest.h000066400000000000000000000103251263452017400244000ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef CONTINUOUS_TEST_H #define CONTINUOUS_TEST_H class ContinuousTest : public Test { public: ContinuousTest() { { b2BodyDef bd; bd.position.Set(0.0f, 0.0f); b2Body* body = m_world->CreateBody(&bd); b2EdgeShape edge; edge.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f)); body->CreateFixture(&edge, 0.0f); b2PolygonShape shape; shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f); body->CreateFixture(&shape, 0.0f); } #if 1 { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 20.0f); //bd.angle = 0.1f; b2PolygonShape shape; shape.SetAsBox(2.0f, 0.1f); m_body = m_world->CreateBody(&bd); m_body->CreateFixture(&shape, 1.0f); m_angularVelocity = RandomFloat(-50.0f, 50.0f); //m_angularVelocity = 46.661274f; m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); m_body->SetAngularVelocity(m_angularVelocity); } #else { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 2.0f); b2Body* body = m_world->CreateBody(&bd); b2CircleShape shape; shape.m_p.SetZero(); shape.m_radius = 0.5f; body->CreateFixture(&shape, 1.0f); bd.bullet = true; bd.position.Set(0.0f, 10.0f); body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 1.0f); body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); } #endif } void Launch() { m_body->SetTransform(b2Vec2(0.0f, 20.0f), 0.0f); m_angularVelocity = RandomFloat(-50.0f, 50.0f); m_body->SetLinearVelocity(b2Vec2(0.0f, -100.0f)); m_body->SetAngularVelocity(m_angularVelocity); } void Step(Settings* settings) { if (m_stepCount == 12) { m_stepCount += 0; } Test::Step(settings); extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; if (b2_gjkCalls > 0) { m_debugDraw.DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d", b2_gjkCalls, b2_gjkIters / float32(b2_gjkCalls), b2_gjkMaxIters); m_textLine += 15; } extern int32 b2_toiCalls, b2_toiIters; extern int32 b2_toiRootIters, b2_toiMaxRootIters; if (b2_toiCalls > 0) { m_debugDraw.DrawString(5, m_textLine, "toi calls = %d, ave toi iters = %3.1f, max toi iters = %d", b2_toiCalls, b2_toiIters / float32(b2_toiCalls), b2_toiMaxRootIters); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "ave toi root iters = %3.1f, max toi root iters = %d", b2_toiRootIters / float32(b2_toiCalls), b2_toiMaxRootIters); m_textLine += 15; } if (m_stepCount % 60 == 0) { //Launch(); } } static Test* Create() { return new ContinuousTest; } b2Body* m_body; float32 m_angularVelocity; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/DistanceTest.h000066400000000000000000000073741263452017400237760ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef DISTANCE_TEST_H #define DISTANCE_TEST_H class DistanceTest : public Test { public: DistanceTest() { { m_transformA.SetIdentity(); m_transformA.p.Set(0.0f, -0.2f); m_polygonA.SetAsBox(10.0f, 0.2f); } { m_positionB.Set(12.017401f, 0.13678508f); m_angleB = -0.0109265f; m_transformB.Set(m_positionB, m_angleB); m_polygonB.SetAsBox(2.0f, 0.1f); } } static Test* Create() { return new DistanceTest; } void Step(Settings* settings) { Test::Step(settings); b2DistanceInput input; input.proxyA.Set(&m_polygonA, 0); input.proxyB.Set(&m_polygonB, 0); input.transformA = m_transformA; input.transformB = m_transformB; input.useRadii = true; b2SimplexCache cache; cache.count = 0; b2DistanceOutput output; b2Distance(&output, &cache, &input); m_debugDraw.DrawString(5, m_textLine, "distance = %g", output.distance); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "iterations = %d", output.iterations); m_textLine += 15; { b2Color color(0.9f, 0.9f, 0.9f); b2Vec2 v[b2_maxPolygonVertices]; for (int32 i = 0; i < m_polygonA.m_vertexCount; ++i) { v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); } m_debugDraw.DrawPolygon(v, m_polygonA.m_vertexCount, color); for (int32 i = 0; i < m_polygonB.m_vertexCount; ++i) { v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); } m_debugDraw.DrawPolygon(v, m_polygonB.m_vertexCount, color); } b2Vec2 x1 = output.pointA; b2Vec2 x2 = output.pointB; b2Color c1(1.0f, 0.0f, 0.0f); m_debugDraw.DrawPoint(x1, 4.0f, c1); b2Color c2(1.0f, 1.0f, 0.0f); m_debugDraw.DrawPoint(x2, 4.0f, c2); } void Keyboard(unsigned char key) { switch (key) { case 'a': m_positionB.x -= 0.1f; break; case 'd': m_positionB.x += 0.1f; break; case 's': m_positionB.y -= 0.1f; break; case 'w': m_positionB.y += 0.1f; break; case 'q': m_angleB += 0.1f * b2_pi; break; case 'e': m_angleB -= 0.1f * b2_pi; break; } m_transformB.Set(m_positionB, m_angleB); } b2Vec2 m_positionB; float32 m_angleB; b2Transform m_transformA; b2Transform m_transformB; b2PolygonShape m_polygonA; b2PolygonShape m_polygonB; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Dominos.h000066400000000000000000000137771263452017400230200ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef DOMINOS_H #define DOMINOS_H class Dominos : public Test { public: Dominos() { b2Body* b1; { b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); b2BodyDef bd; b1 = m_world->CreateBody(&bd); b1->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(6.0f, 0.25f); b2BodyDef bd; bd.position.Set(-1.5f, 10.0f); b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.1f, 1.0f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; fd.friction = 0.1f; for (int i = 0; i < 10; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-6.0f + 1.0f * i, 11.25f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); } } { b2PolygonShape shape; shape.SetAsBox(7.0f, 0.25f, b2Vec2_zero, 0.3f); b2BodyDef bd; bd.position.Set(1.0f, 6.0f); b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&shape, 0.0f); } b2Body* b2; { b2PolygonShape shape; shape.SetAsBox(0.25f, 1.5f); b2BodyDef bd; bd.position.Set(-7.0f, 4.0f); b2 = m_world->CreateBody(&bd); b2->CreateFixture(&shape, 0.0f); } b2Body* b3; { b2PolygonShape shape; shape.SetAsBox(6.0f, 0.125f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-0.9f, 1.0f); bd.angle = -0.15f; b3 = m_world->CreateBody(&bd); b3->CreateFixture(&shape, 10.0f); } b2RevoluteJointDef jd; b2Vec2 anchor; anchor.Set(-2.0f, 1.0f); jd.Initialize(b1, b3, anchor); jd.collideConnected = true; m_world->CreateJoint(&jd); b2Body* b4; { b2PolygonShape shape; shape.SetAsBox(0.25f, 0.25f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-10.0f, 15.0f); b4 = m_world->CreateBody(&bd); b4->CreateFixture(&shape, 10.0f); } anchor.Set(-7.0f, 15.0f); jd.Initialize(b2, b4, anchor); m_world->CreateJoint(&jd); b2Body* b5; { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(6.5f, 3.0f); b5 = m_world->CreateBody(&bd); b2PolygonShape shape; b2FixtureDef fd; fd.shape = &shape; fd.density = 10.0f; fd.friction = 0.1f; shape.SetAsBox(1.0f, 0.1f, b2Vec2(0.0f, -0.9f), 0.0f); b5->CreateFixture(&fd); shape.SetAsBox(0.1f, 1.0f, b2Vec2(-0.9f, 0.0f), 0.0f); b5->CreateFixture(&fd); shape.SetAsBox(0.1f, 1.0f, b2Vec2(0.9f, 0.0f), 0.0f); b5->CreateFixture(&fd); } anchor.Set(6.0f, 2.0f); jd.Initialize(b1, b5, anchor); m_world->CreateJoint(&jd); b2Body* b6; { b2PolygonShape shape; shape.SetAsBox(1.0f, 0.1f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(6.5f, 4.1f); b6 = m_world->CreateBody(&bd); b6->CreateFixture(&shape, 30.0f); } anchor.Set(7.5f, 4.0f); jd.Initialize(b5, b6, anchor); m_world->CreateJoint(&jd); b2Body* b7; { b2PolygonShape shape; shape.SetAsBox(0.1f, 1.0f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(7.4f, 1.0f); b7 = m_world->CreateBody(&bd); b7->CreateFixture(&shape, 10.0f); } b2DistanceJointDef djd; djd.bodyA = b3; djd.bodyB = b7; djd.localAnchorA.Set(6.0f, 0.0f); djd.localAnchorB.Set(0.0f, -1.0f); b2Vec2 d = djd.bodyB->GetWorldPoint(djd.localAnchorB) - djd.bodyA->GetWorldPoint(djd.localAnchorA); djd.length = d.Length(); m_world->CreateJoint(&djd); { float32 radius = 0.2f; b2CircleShape shape; shape.m_radius = radius; for (int i = 0; i < 4; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(5.9f + 2.0f * radius * i, 2.4f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 10.0f); } } } static Test* Create() { return new Dominos; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/DumpShell.h000066400000000000000000000216551263452017400232770ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef DUMP_SHELL_H #define DUMP_SHELL_H // This test holds worlds dumped using b2World::Dump. class DumpShell : public Test { public: DumpShell() { b2Vec2 g(0.000000000000000e+00f, 0.000000000000000e+00f); m_world->SetGravity(g); b2Body** bodies = (b2Body**)b2Alloc(3 * sizeof(b2Body*)); b2Joint** joints = (b2Joint**)b2Alloc(2 * sizeof(b2Joint*)); { b2BodyDef bd; bd.type = b2BodyType(2); bd.position.Set(1.304347801208496e+01f, 2.500000000000000e+00f); bd.angle = 0.000000000000000e+00f; bd.linearVelocity.Set(0.000000000000000e+00f, 0.000000000000000e+00f); bd.angularVelocity = 0.000000000000000e+00f; bd.linearDamping = 5.000000000000000e-01f; bd.angularDamping = 5.000000000000000e-01f; bd.allowSleep = bool(4); bd.awake = bool(2); bd.fixedRotation = bool(0); bd.bullet = bool(0); bd.active = bool(32); bd.gravityScale = 1.000000000000000e+00f; bodies[0] = m_world->CreateBody(&bd); { b2FixtureDef fd; fd.friction = 1.000000000000000e+00f; fd.restitution = 5.000000000000000e-01f; fd.density = 1.000000000000000e+01f; fd.isSensor = bool(0); fd.filter.categoryBits = uint16(1); fd.filter.maskBits = uint16(65535); fd.filter.groupIndex = int16(0); b2PolygonShape shape; b2Vec2 vs[8]; vs[0].Set(-6.900000095367432e+00f, -3.000000119209290e-01f); vs[1].Set(2.000000029802322e-01f, -3.000000119209290e-01f); vs[2].Set(2.000000029802322e-01f, 2.000000029802322e-01f); vs[3].Set(-6.900000095367432e+00f, 2.000000029802322e-01f); shape.Set(vs, 4); fd.shape = &shape; bodies[0]->CreateFixture(&fd); } } { b2BodyDef bd; bd.type = b2BodyType(2); bd.position.Set(8.478260636329651e-01f, 2.500000000000000e+00f); bd.angle = 0.000000000000000e+00f; bd.linearVelocity.Set(0.000000000000000e+00f, 0.000000000000000e+00f); bd.angularVelocity = 0.000000000000000e+00f; bd.linearDamping = 5.000000000000000e-01f; bd.angularDamping = 5.000000000000000e-01f; bd.allowSleep = bool(4); bd.awake = bool(2); bd.fixedRotation = bool(0); bd.bullet = bool(0); bd.active = bool(32); bd.gravityScale = 1.000000000000000e+00f; bodies[1] = m_world->CreateBody(&bd); { b2FixtureDef fd; fd.friction = 1.000000000000000e+00f; fd.restitution = 5.000000000000000e-01f; fd.density = 1.000000000000000e+01f; fd.isSensor = bool(0); fd.filter.categoryBits = uint16(1); fd.filter.maskBits = uint16(65535); fd.filter.groupIndex = int16(0); b2PolygonShape shape; b2Vec2 vs[8]; vs[0].Set(-3.228000104427338e-01f, -2.957000136375427e-01f); vs[1].Set(6.885900020599365e+00f, -3.641000092029572e-01f); vs[2].Set(6.907599925994873e+00f, 3.271999955177307e-01f); vs[3].Set(-3.228000104427338e-01f, 2.825999855995178e-01f); shape.Set(vs, 4); fd.shape = &shape; bodies[1]->CreateFixture(&fd); } } { b2BodyDef bd; bd.type = b2BodyType(0); bd.position.Set(0.000000000000000e+00f, 0.000000000000000e+00f); bd.angle = 0.000000000000000e+00f; bd.linearVelocity.Set(0.000000000000000e+00f, 0.000000000000000e+00f); bd.angularVelocity = 0.000000000000000e+00f; bd.linearDamping = 0.000000000000000e+00f; bd.angularDamping = 0.000000000000000e+00f; bd.allowSleep = bool(4); bd.awake = bool(2); bd.fixedRotation = bool(0); bd.bullet = bool(0); bd.active = bool(32); bd.gravityScale = 1.000000000000000e+00f; bodies[2] = m_world->CreateBody(&bd); { b2FixtureDef fd; fd.friction = 1.000000000000000e+01f; fd.restitution = 0.000000000000000e+00f; fd.density = 0.000000000000000e+00f; fd.isSensor = bool(0); fd.filter.categoryBits = uint16(1); fd.filter.maskBits = uint16(65535); fd.filter.groupIndex = int16(0); b2EdgeShape shape; shape.m_radius = 9.999999776482582e-03f; shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_vertex1.Set(4.452173995971680e+01f, 1.669565200805664e+01f); shape.m_vertex2.Set(4.452173995971680e+01f, 0.000000000000000e+00f); shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_hasVertex0 = bool(0); shape.m_hasVertex3 = bool(0); fd.shape = &shape; bodies[2]->CreateFixture(&fd); } { b2FixtureDef fd; fd.friction = 1.000000000000000e+01f; fd.restitution = 0.000000000000000e+00f; fd.density = 0.000000000000000e+00f; fd.isSensor = bool(0); fd.filter.categoryBits = uint16(1); fd.filter.maskBits = uint16(65535); fd.filter.groupIndex = int16(0); b2EdgeShape shape; shape.m_radius = 9.999999776482582e-03f; shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_vertex1.Set(0.000000000000000e+00f, 1.669565200805664e+01f); shape.m_vertex2.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_hasVertex0 = bool(0); shape.m_hasVertex3 = bool(0); fd.shape = &shape; bodies[2]->CreateFixture(&fd); } { b2FixtureDef fd; fd.friction = 1.000000000000000e+01f; fd.restitution = 0.000000000000000e+00f; fd.density = 0.000000000000000e+00f; fd.isSensor = bool(0); fd.filter.categoryBits = uint16(1); fd.filter.maskBits = uint16(65535); fd.filter.groupIndex = int16(0); b2EdgeShape shape; shape.m_radius = 9.999999776482582e-03f; shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_vertex1.Set(0.000000000000000e+00f, 1.669565200805664e+01f); shape.m_vertex2.Set(4.452173995971680e+01f, 1.669565200805664e+01f); shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_hasVertex0 = bool(0); shape.m_hasVertex3 = bool(0); fd.shape = &shape; bodies[2]->CreateFixture(&fd); } { b2FixtureDef fd; fd.friction = 1.000000000000000e+01f; fd.restitution = 0.000000000000000e+00f; fd.density = 0.000000000000000e+00f; fd.isSensor = bool(0); fd.filter.categoryBits = uint16(1); fd.filter.maskBits = uint16(65535); fd.filter.groupIndex = int16(0); b2EdgeShape shape; shape.m_radius = 9.999999776482582e-03f; shape.m_vertex0.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_vertex1.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_vertex2.Set(4.452173995971680e+01f, 0.000000000000000e+00f); shape.m_vertex3.Set(0.000000000000000e+00f, 0.000000000000000e+00f); shape.m_hasVertex0 = bool(0); shape.m_hasVertex3 = bool(0); fd.shape = &shape; bodies[2]->CreateFixture(&fd); } } { b2PrismaticJointDef jd; jd.bodyA = bodies[1]; jd.bodyB = bodies[0]; jd.collideConnected = bool(0); jd.localAnchorA.Set(0.000000000000000e+00f, 0.000000000000000e+00f); jd.localAnchorB.Set(-1.219565200805664e+01f, 0.000000000000000e+00f); jd.localAxisA.Set(-1.219565200805664e+01f, 0.000000000000000e+00f); jd.referenceAngle = 0.000000000000000e+00f; jd.enableLimit = bool(1); jd.lowerTranslation = -2.000000000000000e+01f; jd.upperTranslation = 0.000000000000000e+00f; jd.enableMotor = bool(1); jd.motorSpeed = 0.000000000000000e+00f; jd.maxMotorForce = 1.000000000000000e+01f; joints[0] = m_world->CreateJoint(&jd); } { b2RevoluteJointDef jd; jd.bodyA = bodies[1]; jd.bodyB = bodies[2]; jd.collideConnected = bool(0); jd.localAnchorA.Set(0.000000000000000e+00f, 0.000000000000000e+00f); jd.localAnchorB.Set(8.478260636329651e-01f, 2.500000000000000e+00f); jd.referenceAngle = 0.000000000000000e+00f; jd.enableLimit = bool(0); jd.lowerAngle = 0.000000000000000e+00f; jd.upperAngle = 0.000000000000000e+00f; jd.enableMotor = bool(0); jd.motorSpeed = 0.000000000000000e+00f; jd.maxMotorTorque = 0.000000000000000e+00f; joints[1] = m_world->CreateJoint(&jd); } b2Free(joints); b2Free(bodies); joints = NULL; bodies = NULL; } static Test* Create() { return new DumpShell; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/DynamicTreeTest.h000066400000000000000000000224611263452017400244420ustar00rootroot00000000000000/* * Copyright (c) 2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef DYNAMIC_TREE_TEST_H #define DYNAMIC_TREE_TEST_H class DynamicTreeTest : public Test { public: enum { e_actorCount = 128 }; DynamicTreeTest() { m_worldExtent = 15.0f; m_proxyExtent = 0.5f; srand(888); for (int32 i = 0; i < e_actorCount; ++i) { Actor* actor = m_actors + i; GetRandomAABB(&actor->aabb); actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); } m_stepCount = 0; float32 h = m_worldExtent; m_queryAABB.lowerBound.Set(-3.0f, -4.0f + h); m_queryAABB.upperBound.Set(5.0f, 6.0f + h); m_rayCastInput.p1.Set(-5.0, 5.0f + h); m_rayCastInput.p2.Set(7.0f, -4.0f + h); //m_rayCastInput.p1.Set(0.0f, 2.0f + h); //m_rayCastInput.p2.Set(0.0f, -2.0f + h); m_rayCastInput.maxFraction = 1.0f; m_automated = false; } static Test* Create() { return new DynamicTreeTest; } void Step(Settings* settings) { B2_NOT_USED(settings); m_rayActor = NULL; for (int32 i = 0; i < e_actorCount; ++i) { m_actors[i].fraction = 1.0f; m_actors[i].overlap = false; } if (m_automated == true) { int32 actionCount = b2Max(1, e_actorCount >> 2); for (int32 i = 0; i < actionCount; ++i) { Action(); } } Query(); RayCast(); for (int32 i = 0; i < e_actorCount; ++i) { Actor* actor = m_actors + i; if (actor->proxyId == b2_nullNode) continue; b2Color c(0.9f, 0.9f, 0.9f); if (actor == m_rayActor && actor->overlap) { c.Set(0.9f, 0.6f, 0.6f); } else if (actor == m_rayActor) { c.Set(0.6f, 0.9f, 0.6f); } else if (actor->overlap) { c.Set(0.6f, 0.6f, 0.9f); } m_debugDraw.DrawAABB(&actor->aabb, c); } b2Color c(0.7f, 0.7f, 0.7f); m_debugDraw.DrawAABB(&m_queryAABB, c); m_debugDraw.DrawSegment(m_rayCastInput.p1, m_rayCastInput.p2, c); b2Color c1(0.2f, 0.9f, 0.2f); b2Color c2(0.9f, 0.2f, 0.2f); m_debugDraw.DrawPoint(m_rayCastInput.p1, 6.0f, c1); m_debugDraw.DrawPoint(m_rayCastInput.p2, 6.0f, c2); if (m_rayActor) { b2Color cr(0.2f, 0.2f, 0.9f); b2Vec2 p = m_rayCastInput.p1 + m_rayActor->fraction * (m_rayCastInput.p2 - m_rayCastInput.p1); m_debugDraw.DrawPoint(p, 6.0f, cr); } { int32 height = m_tree.GetHeight(); m_debugDraw.DrawString(5, m_textLine, "dynamic tree height = %d", height); m_textLine += 15; } ++m_stepCount; } void Keyboard(unsigned char key) { switch (key) { case 'a': m_automated = !m_automated; break; case 'c': CreateProxy(); break; case 'd': DestroyProxy(); break; case 'm': MoveProxy(); break; } } bool QueryCallback(int32 proxyId) { Actor* actor = (Actor*)m_tree.GetUserData(proxyId); actor->overlap = b2TestOverlap(m_queryAABB, actor->aabb); return true; } float32 RayCastCallback(const b2RayCastInput& input, int32 proxyId) { Actor* actor = (Actor*)m_tree.GetUserData(proxyId); b2RayCastOutput output; bool hit = actor->aabb.RayCast(&output, input); if (hit) { m_rayCastOutput = output; m_rayActor = actor; m_rayActor->fraction = output.fraction; return output.fraction; } return input.maxFraction; } private: struct Actor { b2AABB aabb; float32 fraction; bool overlap; int32 proxyId; }; void GetRandomAABB(b2AABB* aabb) { b2Vec2 w; w.Set(2.0f * m_proxyExtent, 2.0f * m_proxyExtent); //aabb->lowerBound.x = -m_proxyExtent; //aabb->lowerBound.y = -m_proxyExtent + m_worldExtent; aabb->lowerBound.x = RandomFloat(-m_worldExtent, m_worldExtent); aabb->lowerBound.y = RandomFloat(0.0f, 2.0f * m_worldExtent); aabb->upperBound = aabb->lowerBound + w; } void MoveAABB(b2AABB* aabb) { b2Vec2 d; d.x = RandomFloat(-0.5f, 0.5f); d.y = RandomFloat(-0.5f, 0.5f); //d.x = 2.0f; //d.y = 0.0f; aabb->lowerBound += d; aabb->upperBound += d; b2Vec2 c0 = 0.5f * (aabb->lowerBound + aabb->upperBound); b2Vec2 min; min.Set(-m_worldExtent, 0.0f); b2Vec2 max; max.Set(m_worldExtent, 2.0f * m_worldExtent); b2Vec2 c = b2Clamp(c0, min, max); aabb->lowerBound += c - c0; aabb->upperBound += c - c0; } void CreateProxy() { for (int32 i = 0; i < e_actorCount; ++i) { int32 j = rand() % e_actorCount; Actor* actor = m_actors + j; if (actor->proxyId == b2_nullNode) { GetRandomAABB(&actor->aabb); actor->proxyId = m_tree.CreateProxy(actor->aabb, actor); return; } } } void DestroyProxy() { for (int32 i = 0; i < e_actorCount; ++i) { int32 j = rand() % e_actorCount; Actor* actor = m_actors + j; if (actor->proxyId != b2_nullNode) { m_tree.DestroyProxy(actor->proxyId); actor->proxyId = b2_nullNode; return; } } } void MoveProxy() { for (int32 i = 0; i < e_actorCount; ++i) { int32 j = rand() % e_actorCount; Actor* actor = m_actors + j; if (actor->proxyId == b2_nullNode) { continue; } b2AABB aabb0 = actor->aabb; MoveAABB(&actor->aabb); b2Vec2 displacement = actor->aabb.GetCenter() - aabb0.GetCenter(); m_tree.MoveProxy(actor->proxyId, actor->aabb, displacement); return; } } void Action() { int32 choice = rand() % 20; switch (choice) { case 0: CreateProxy(); break; case 1: DestroyProxy(); break; default: MoveProxy(); } } void Query() { m_tree.Query(this, m_queryAABB); for (int32 i = 0; i < e_actorCount; ++i) { if (m_actors[i].proxyId == b2_nullNode) { continue; } bool overlap = b2TestOverlap(m_queryAABB, m_actors[i].aabb); B2_NOT_USED(overlap); b2Assert(overlap == m_actors[i].overlap); } } void RayCast() { m_rayActor = NULL; b2RayCastInput input = m_rayCastInput; // Ray cast against the dynamic tree. m_tree.RayCast(this, input); // Brute force ray cast. Actor* bruteActor = NULL; b2RayCastOutput bruteOutput; for (int32 i = 0; i < e_actorCount; ++i) { if (m_actors[i].proxyId == b2_nullNode) { continue; } b2RayCastOutput output; bool hit = m_actors[i].aabb.RayCast(&output, input); if (hit) { bruteActor = m_actors + i; bruteOutput = output; input.maxFraction = output.fraction; } } if (bruteActor != NULL) { b2Assert(bruteOutput.fraction == m_rayCastOutput.fraction); } } float32 m_worldExtent; float32 m_proxyExtent; b2DynamicTree m_tree; b2AABB m_queryAABB; b2RayCastInput m_rayCastInput; b2RayCastOutput m_rayCastOutput; Actor* m_rayActor; Actor m_actors[e_actorCount]; int32 m_stepCount; bool m_automated; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/EdgeShapes.h000066400000000000000000000146431263452017400234110ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef EDGE_SHAPES_H #define EDGE_SHAPES_H class EdgeShapesCallback : public b2RayCastCallback { public: EdgeShapesCallback() { m_fixture = NULL; } float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float32 fraction) { m_fixture = fixture; m_point = point; m_normal = normal; return fraction; } b2Fixture* m_fixture; b2Vec2 m_point; b2Vec2 m_normal; }; class EdgeShapes : public Test { public: enum { e_maxBodies = 256 }; EdgeShapes() { // Ground body { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); float32 x1 = -20.0f; float32 y1 = 2.0f * cosf(x1 / 10.0f * b2_pi); for (int32 i = 0; i < 80; ++i) { float32 x2 = x1 + 0.5f; float32 y2 = 2.0f * cosf(x2 / 10.0f * b2_pi); b2EdgeShape shape; shape.Set(b2Vec2(x1, y1), b2Vec2(x2, y2)); ground->CreateFixture(&shape, 0.0f); x1 = x2; y1 = y2; } } { b2Vec2 vertices[3]; vertices[0].Set(-0.5f, 0.0f); vertices[1].Set(0.5f, 0.0f); vertices[2].Set(0.0f, 1.5f); m_polygons[0].Set(vertices, 3); } { b2Vec2 vertices[3]; vertices[0].Set(-0.1f, 0.0f); vertices[1].Set(0.1f, 0.0f); vertices[2].Set(0.0f, 1.5f); m_polygons[1].Set(vertices, 3); } { float32 w = 1.0f; float32 b = w / (2.0f + b2Sqrt(2.0f)); float32 s = b2Sqrt(2.0f) * b; b2Vec2 vertices[8]; vertices[0].Set(0.5f * s, 0.0f); vertices[1].Set(0.5f * w, b); vertices[2].Set(0.5f * w, b + s); vertices[3].Set(0.5f * s, w); vertices[4].Set(-0.5f * s, w); vertices[5].Set(-0.5f * w, b + s); vertices[6].Set(-0.5f * w, b); vertices[7].Set(-0.5f * s, 0.0f); m_polygons[2].Set(vertices, 8); } { m_polygons[3].SetAsBox(0.5f, 0.5f); } { m_circle.m_radius = 0.5f; } m_bodyIndex = 0; memset(m_bodies, 0, sizeof(m_bodies)); m_angle = 0.0f; } void Create(int32 index) { if (m_bodies[m_bodyIndex] != NULL) { m_world->DestroyBody(m_bodies[m_bodyIndex]); m_bodies[m_bodyIndex] = NULL; } b2BodyDef bd; float32 x = RandomFloat(-10.0f, 10.0f); float32 y = RandomFloat(10.0f, 20.0f); bd.position.Set(x, y); bd.angle = RandomFloat(-b2_pi, b2_pi); bd.type = b2_dynamicBody; if (index == 4) { bd.angularDamping = 0.02f; } m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); if (index < 4) { b2FixtureDef fd; fd.shape = m_polygons + index; fd.friction = 0.3f; fd.density = 20.0f; m_bodies[m_bodyIndex]->CreateFixture(&fd); } else { b2FixtureDef fd; fd.shape = &m_circle; fd.friction = 0.3f; fd.density = 20.0f; m_bodies[m_bodyIndex]->CreateFixture(&fd); } m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; } void DestroyBody() { for (int32 i = 0; i < e_maxBodies; ++i) { if (m_bodies[i] != NULL) { m_world->DestroyBody(m_bodies[i]); m_bodies[i] = NULL; return; } } } void Keyboard(unsigned char key) { switch (key) { case '1': case '2': case '3': case '4': case '5': Create(key - '1'); break; case 'd': DestroyBody(); break; } } void Step(Settings* settings) { bool advanceRay = settings->pause == 0 || settings->singleStep; Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Press 1-5 to drop stuff"); m_textLine += 15; float32 L = 25.0f; b2Vec2 point1(0.0f, 10.0f); b2Vec2 d(L * cosf(m_angle), -L * b2Abs(sinf(m_angle))); b2Vec2 point2 = point1 + d; EdgeShapesCallback callback; m_world->RayCast(&callback, point1, point2); if (callback.m_fixture) { m_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); m_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; m_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); } else { m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); } if (advanceRay) { m_angle += 0.25f * b2_pi / 180.0f; } } static Test* Create() { return new EdgeShapes; } int32 m_bodyIndex; b2Body* m_bodies[e_maxBodies]; b2PolygonShape m_polygons[4]; b2CircleShape m_circle; float32 m_angle; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/EdgeTest.h000066400000000000000000000064511263452017400231030ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef EDGE_TEST_H #define EDGE_TEST_H class EdgeTest : public Test { public: EdgeTest() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2Vec2 v1(-10.0f, 0.0f), v2(-7.0f, -2.0f), v3(-4.0f, 0.0f); b2Vec2 v4(0.0f, 0.0f), v5(4.0f, 0.0f), v6(7.0f, 2.0f), v7(10.0f, 0.0f); b2EdgeShape shape; shape.Set(v1, v2); shape.m_hasVertex3 = true; shape.m_vertex3 = v3; ground->CreateFixture(&shape, 0.0f); shape.Set(v2, v3); shape.m_hasVertex0 = true; shape.m_hasVertex3 = true; shape.m_vertex0 = v1; shape.m_vertex3 = v4; ground->CreateFixture(&shape, 0.0f); shape.Set(v3, v4); shape.m_hasVertex0 = true; shape.m_hasVertex3 = true; shape.m_vertex0 = v2; shape.m_vertex3 = v5; ground->CreateFixture(&shape, 0.0f); shape.Set(v4, v5); shape.m_hasVertex0 = true; shape.m_hasVertex3 = true; shape.m_vertex0 = v3; shape.m_vertex3 = v6; ground->CreateFixture(&shape, 0.0f); shape.Set(v5, v6); shape.m_hasVertex0 = true; shape.m_hasVertex3 = true; shape.m_vertex0 = v4; shape.m_vertex3 = v7; ground->CreateFixture(&shape, 0.0f); shape.Set(v6, v7); shape.m_hasVertex0 = true; shape.m_vertex0 = v5; ground->CreateFixture(&shape, 0.0f); } { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-0.5f, 0.6f); bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); b2CircleShape shape; shape.m_radius = 0.5f; body->CreateFixture(&shape, 1.0f); } { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(1.0f, 0.6f); bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.5f, 0.5f); body->CreateFixture(&shape, 1.0f); } } static Test* Create() { return new EdgeTest; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Gears.h000066400000000000000000000140451263452017400224360ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef GEARS_H #define GEARS_H class Gears : public Test { public: Gears() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(50.0f, 0.0f), b2Vec2(-50.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } // Gears co { b2CircleShape circle1; circle1.m_radius = 1.0f; b2PolygonShape box; box.SetAsBox(0.5f, 5.0f); b2CircleShape circle2; circle2.m_radius = 2.0f; b2BodyDef bd1; bd1.type = b2_staticBody; bd1.position.Set(10.0f, 9.0f); b2Body* body1 = m_world->CreateBody(&bd1); body1->CreateFixture(&circle1, 0.0f); b2BodyDef bd2; bd2.type = b2_dynamicBody; bd2.position.Set(10.0f, 8.0f); b2Body* body2 = m_world->CreateBody(&bd2); body2->CreateFixture(&box, 5.0f); b2BodyDef bd3; bd3.type = b2_dynamicBody; bd3.position.Set(10.0f, 6.0f); b2Body* body3 = m_world->CreateBody(&bd3); body3->CreateFixture(&circle2, 5.0f); b2RevoluteJointDef jd1; jd1.Initialize(body2, body1, bd1.position); b2Joint* joint1 = m_world->CreateJoint(&jd1); b2RevoluteJointDef jd2; jd2.Initialize(body2, body3, bd3.position); b2Joint* joint2 = m_world->CreateJoint(&jd2); b2GearJointDef jd4; jd4.bodyA = body1; jd4.bodyB = body3; jd4.joint1 = joint1; jd4.joint2 = joint2; jd4.ratio = circle2.m_radius / circle1.m_radius; m_world->CreateJoint(&jd4); } { b2CircleShape circle1; circle1.m_radius = 1.0f; b2CircleShape circle2; circle2.m_radius = 2.0f; b2PolygonShape box; box.SetAsBox(0.5f, 5.0f); b2BodyDef bd1; bd1.type = b2_dynamicBody; bd1.position.Set(-3.0f, 12.0f); b2Body* body1 = m_world->CreateBody(&bd1); body1->CreateFixture(&circle1, 5.0f); b2RevoluteJointDef jd1; jd1.bodyA = ground; jd1.bodyB = body1; jd1.localAnchorA = ground->GetLocalPoint(bd1.position); jd1.localAnchorB = body1->GetLocalPoint(bd1.position); jd1.referenceAngle = body1->GetAngle() - ground->GetAngle(); m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&jd1); b2BodyDef bd2; bd2.type = b2_dynamicBody; bd2.position.Set(0.0f, 12.0f); b2Body* body2 = m_world->CreateBody(&bd2); body2->CreateFixture(&circle2, 5.0f); b2RevoluteJointDef jd2; jd2.Initialize(ground, body2, bd2.position); m_joint2 = (b2RevoluteJoint*)m_world->CreateJoint(&jd2); b2BodyDef bd3; bd3.type = b2_dynamicBody; bd3.position.Set(2.5f, 12.0f); b2Body* body3 = m_world->CreateBody(&bd3); body3->CreateFixture(&box, 5.0f); b2PrismaticJointDef jd3; jd3.Initialize(ground, body3, bd3.position, b2Vec2(0.0f, 1.0f)); jd3.lowerTranslation = -5.0f; jd3.upperTranslation = 5.0f; jd3.enableLimit = true; m_joint3 = (b2PrismaticJoint*)m_world->CreateJoint(&jd3); b2GearJointDef jd4; jd4.bodyA = body1; jd4.bodyB = body2; jd4.joint1 = m_joint1; jd4.joint2 = m_joint2; jd4.ratio = circle2.m_radius / circle1.m_radius; m_joint4 = (b2GearJoint*)m_world->CreateJoint(&jd4); b2GearJointDef jd5; jd5.bodyA = body2; jd5.bodyB = body3; jd5.joint1 = m_joint2; jd5.joint2 = m_joint3; jd5.ratio = -1.0f / circle2.m_radius; m_joint5 = (b2GearJoint*)m_world->CreateJoint(&jd5); } } void Keyboard(unsigned char key) { switch (key) { case 0: break; } } void Step(Settings* settings) { Test::Step(settings); float32 ratio, value; ratio = m_joint4->GetRatio(); value = m_joint1->GetJointAngle() + ratio * m_joint2->GetJointAngle(); m_debugDraw.DrawString(5, m_textLine, "theta1 + %4.2f * theta2 = %4.2f", (float) ratio, (float) value); m_textLine += 15; ratio = m_joint5->GetRatio(); value = m_joint2->GetJointAngle() + ratio * m_joint3->GetJointTranslation(); m_debugDraw.DrawString(5, m_textLine, "theta2 + %4.2f * delta = %4.2f", (float) ratio, (float) value); m_textLine += 15; } static Test* Create() { return new Gears; } b2RevoluteJoint* m_joint1; b2RevoluteJoint* m_joint2; b2PrismaticJoint* m_joint3; b2GearJoint* m_joint4; b2GearJoint* m_joint5; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/OneSidedPlatform.h000066400000000000000000000064531263452017400246000ustar00rootroot00000000000000/* * Copyright (c) 2008-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef ONE_SIDED_PLATFORM_H #define ONE_SIDED_PLATFORM_H class OneSidedPlatform : public Test { public: enum State { e_unknown, e_above, e_below }; OneSidedPlatform() { // Ground { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-20.0f, 0.0f), b2Vec2(20.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } // Platform { b2BodyDef bd; bd.position.Set(0.0f, 10.0f); b2Body* body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(3.0f, 0.5f); m_platform = body->CreateFixture(&shape, 0.0f); m_bottom = 10.0f - 0.5f; m_top = 10.0f + 0.5f; } // Actor { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 12.0f); b2Body* body = m_world->CreateBody(&bd); m_radius = 0.5f; b2CircleShape shape; shape.m_radius = m_radius; m_character = body->CreateFixture(&shape, 20.0f); body->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); m_state = e_unknown; } } void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) { Test::PreSolve(contact, oldManifold); b2Fixture* fixtureA = contact->GetFixtureA(); b2Fixture* fixtureB = contact->GetFixtureB(); if (fixtureA != m_platform && fixtureA != m_character) { return; } if (fixtureB != m_platform && fixtureB != m_character) { return; } b2Vec2 position = m_character->GetBody()->GetPosition(); if (position.y < m_top + m_radius - 3.0f * b2_linearSlop) { contact->SetEnabled(false); } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Press: (c) create a shape, (d) destroy a shape."); m_textLine += 15; } static Test* Create() { return new OneSidedPlatform; } float32 m_radius, m_top, m_bottom; State m_state; b2Fixture* m_platform; b2Fixture* m_character; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Pinball.h000066400000000000000000000110511263452017400227500ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef PINBALL_H #define PINBALL_H /// This tests bullet collision and provides an example of a gameplay scenario. /// This also uses a loop shape. class Pinball : public Test { public: Pinball() { // Ground body b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2Vec2 vs[5]; vs[0].Set(0.0f, -2.0f); vs[1].Set(8.0f, 6.0f); vs[2].Set(8.0f, 20.0f); vs[3].Set(-8.0f, 20.0f); vs[4].Set(-8.0f, 6.0f); b2ChainShape loop; loop.CreateLoop(vs, 5); b2FixtureDef fd; fd.shape = &loop; fd.density = 0.0f; ground->CreateFixture(&fd); } // Flippers { b2Vec2 p1(-2.0f, 0.0f), p2(2.0f, 0.0f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = p1; b2Body* leftFlipper = m_world->CreateBody(&bd); bd.position = p2; b2Body* rightFlipper = m_world->CreateBody(&bd); b2PolygonShape box; box.SetAsBox(1.75f, 0.1f); b2FixtureDef fd; fd.shape = &box; fd.density = 1.0f; leftFlipper->CreateFixture(&fd); rightFlipper->CreateFixture(&fd); b2RevoluteJointDef jd; jd.bodyA = ground; jd.localAnchorB.SetZero(); jd.enableMotor = true; jd.maxMotorTorque = 1000.0f; jd.enableLimit = true; jd.motorSpeed = 0.0f; jd.localAnchorA = p1; jd.bodyB = leftFlipper; jd.lowerAngle = -30.0f * b2_pi / 180.0f; jd.upperAngle = 5.0f * b2_pi / 180.0f; m_leftJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); jd.motorSpeed = 0.0f; jd.localAnchorA = p2; jd.bodyB = rightFlipper; jd.lowerAngle = -5.0f * b2_pi / 180.0f; jd.upperAngle = 30.0f * b2_pi / 180.0f; m_rightJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); } // Circle character { b2BodyDef bd; bd.position.Set(1.0f, 15.0f); bd.type = b2_dynamicBody; bd.bullet = true; m_ball = m_world->CreateBody(&bd); b2CircleShape shape; shape.m_radius = 0.2f; b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; m_ball->CreateFixture(&fd); } m_button = false; } void Step() { if (m_button) { m_leftJoint->SetMotorSpeed(20.0f); m_rightJoint->SetMotorSpeed(-20.0f); } else { m_leftJoint->SetMotorSpeed(-10.0f); m_rightJoint->SetMotorSpeed(10.0f); } // Test::Step(settings); // // m_debugDraw.DrawString(5, m_textLine, "Press 'a' to control the flippers"); // m_textLine += 15; } void Keyboard(unsigned char key) { switch (key) { case 'a': case 'A': m_button = true; break; } } void KeyboardUp(unsigned char key) { switch (key) { case 'a': case 'A': m_button = false; break; } } static Test* Create() { return new Pinball; } b2RevoluteJoint* m_leftJoint; b2RevoluteJoint* m_rightJoint; b2Body* m_ball; bool m_button; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/PolyCollision.h000066400000000000000000000067201263452017400241750ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef POLYCOLLISION_H #define POLYCOLLISION_H class PolyCollision : public Test { public: PolyCollision() { { m_polygonA.SetAsBox(0.2f, 0.4f); m_transformA.Set(b2Vec2(0.0f, 0.0f), 0.0f); } { m_polygonB.SetAsBox(0.5f, 0.5f); m_positionB.Set(19.345284f, 1.5632932f); m_angleB = 1.9160721f; m_transformB.Set(m_positionB, m_angleB); } } static Test* Create() { return new PolyCollision; } void Step(Settings* settings) { B2_NOT_USED(settings); b2Manifold manifold; b2CollidePolygons(&manifold, &m_polygonA, m_transformA, &m_polygonB, m_transformB); b2WorldManifold worldManifold; worldManifold.Initialize(&manifold, m_transformA, m_polygonA.m_radius, m_transformB, m_polygonB.m_radius); m_debugDraw.DrawString(5, m_textLine, "point count = %d", manifold.pointCount); m_textLine += 15; { b2Color color(0.9f, 0.9f, 0.9f); b2Vec2 v[b2_maxPolygonVertices]; for (int32 i = 0; i < m_polygonA.m_vertexCount; ++i) { v[i] = b2Mul(m_transformA, m_polygonA.m_vertices[i]); } m_debugDraw.DrawPolygon(v, m_polygonA.m_vertexCount, color); for (int32 i = 0; i < m_polygonB.m_vertexCount; ++i) { v[i] = b2Mul(m_transformB, m_polygonB.m_vertices[i]); } m_debugDraw.DrawPolygon(v, m_polygonB.m_vertexCount, color); } for (int32 i = 0; i < manifold.pointCount; ++i) { m_debugDraw.DrawPoint(worldManifold.points[i], 4.0f, b2Color(0.9f, 0.3f, 0.3f)); } } void Keyboard(unsigned char key) { switch (key) { case 'a': m_positionB.x -= 0.1f; break; case 'd': m_positionB.x += 0.1f; break; case 's': m_positionB.y -= 0.1f; break; case 'w': m_positionB.y += 0.1f; break; case 'q': m_angleB += 0.1f * b2_pi; break; case 'e': m_angleB -= 0.1f * b2_pi; break; } m_transformB.Set(m_positionB, m_angleB); } b2PolygonShape m_polygonA; b2PolygonShape m_polygonB; b2Transform m_transformA; b2Transform m_transformB; b2Vec2 m_positionB; float32 m_angleB; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/PolyShapes.h000066400000000000000000000177251263452017400234740ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef POLY_SHAPES_H #define POLY_SHAPES_H /// This tests stacking. It also shows how to use b2World::Query /// and b2TestOverlap. const int32 k_maxBodies = 256; /// This callback is called by b2World::QueryAABB. We find all the fixtures /// that overlap an AABB. Of those, we use b2TestOverlap to determine which fixtures /// overlap a circle. Up to 4 overlapped fixtures will be highlighted with a yellow border. class PolyShapesCallback : public b2QueryCallback { public: enum { e_maxCount = 4 }; PolyShapesCallback() { m_count = 0; } void DrawFixture(b2Fixture* fixture) { b2Color color(0.95f, 0.95f, 0.6f); const b2Transform& xf = fixture->GetBody()->GetTransform(); switch (fixture->GetType()) { case b2Shape::e_circle: { b2CircleShape* circle = (b2CircleShape*)fixture->GetShape(); b2Vec2 center = b2Mul(xf, circle->m_p); float32 radius = circle->m_radius; m_debugDraw->DrawCircle(center, radius, color); } break; case b2Shape::e_polygon: { b2PolygonShape* poly = (b2PolygonShape*)fixture->GetShape(); int32 vertexCount = poly->m_vertexCount; b2Assert(vertexCount <= b2_maxPolygonVertices); b2Vec2 vertices[b2_maxPolygonVertices]; for (int32 i = 0; i < vertexCount; ++i) { vertices[i] = b2Mul(xf, poly->m_vertices[i]); } m_debugDraw->DrawPolygon(vertices, vertexCount, color); } break; default: break; } } /// Called for each fixture found in the query AABB. /// @return false to terminate the query. bool ReportFixture(b2Fixture* fixture) { if (m_count == e_maxCount) { return false; } b2Body* body = fixture->GetBody(); b2Shape* shape = fixture->GetShape(); bool overlap = b2TestOverlap(shape, 0, &m_circle, 0, body->GetTransform(), m_transform); if (overlap) { DrawFixture(fixture); ++m_count; } return true; } b2CircleShape m_circle; b2Transform m_transform; b2Draw* m_debugDraw; int32 m_count; }; class PolyShapes : public Test { public: PolyShapes() { // Ground body { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2Vec2 vertices[3]; vertices[0].Set(-0.5f, 0.0f); vertices[1].Set(0.5f, 0.0f); vertices[2].Set(0.0f, 1.5f); m_polygons[0].Set(vertices, 3); } { b2Vec2 vertices[3]; vertices[0].Set(-0.1f, 0.0f); vertices[1].Set(0.1f, 0.0f); vertices[2].Set(0.0f, 1.5f); m_polygons[1].Set(vertices, 3); } { float32 w = 1.0f; float32 b = w / (2.0f + b2Sqrt(2.0f)); float32 s = b2Sqrt(2.0f) * b; b2Vec2 vertices[8]; vertices[0].Set(0.5f * s, 0.0f); vertices[1].Set(0.5f * w, b); vertices[2].Set(0.5f * w, b + s); vertices[3].Set(0.5f * s, w); vertices[4].Set(-0.5f * s, w); vertices[5].Set(-0.5f * w, b + s); vertices[6].Set(-0.5f * w, b); vertices[7].Set(-0.5f * s, 0.0f); m_polygons[2].Set(vertices, 8); } { m_polygons[3].SetAsBox(0.5f, 0.5f); } { m_circle.m_radius = 0.5f; } m_bodyIndex = 0; memset(m_bodies, 0, sizeof(m_bodies)); } void Create(int32 index) { if (m_bodies[m_bodyIndex] != NULL) { m_world->DestroyBody(m_bodies[m_bodyIndex]); m_bodies[m_bodyIndex] = NULL; } b2BodyDef bd; bd.type = b2_dynamicBody; float32 x = RandomFloat(-2.0f, 2.0f); bd.position.Set(x, 10.0f); bd.angle = RandomFloat(-b2_pi, b2_pi); if (index == 4) { bd.angularDamping = 0.02f; } m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); if (index < 4) { b2FixtureDef fd; fd.shape = m_polygons + index; fd.density = 1.0f; fd.friction = 0.3f; m_bodies[m_bodyIndex]->CreateFixture(&fd); } else { b2FixtureDef fd; fd.shape = &m_circle; fd.density = 1.0f; fd.friction = 0.3f; m_bodies[m_bodyIndex]->CreateFixture(&fd); } m_bodyIndex = (m_bodyIndex + 1) % k_maxBodies; } void DestroyBody() { for (int32 i = 0; i < k_maxBodies; ++i) { if (m_bodies[i] != NULL) { m_world->DestroyBody(m_bodies[i]); m_bodies[i] = NULL; return; } } } void Keyboard(unsigned char key) { switch (key) { case '1': case '2': case '3': case '4': case '5': Create(key - '1'); break; case 'a': for (int32 i = 0; i < k_maxBodies; i += 2) { if (m_bodies[i]) { bool active = m_bodies[i]->IsActive(); m_bodies[i]->SetActive(!active); } } break; case 'd': DestroyBody(); break; } } void Step(Settings* settings) { Test::Step(settings); PolyShapesCallback callback; callback.m_circle.m_radius = 2.0f; callback.m_circle.m_p.Set(0.0f, 1.1f); callback.m_transform.SetIdentity(); callback.m_debugDraw = &m_debugDraw; b2AABB aabb; callback.m_circle.ComputeAABB(&aabb, callback.m_transform, 0); m_world->QueryAABB(&callback, aabb); b2Color color(0.4f, 0.7f, 0.8f); m_debugDraw.DrawCircle(callback.m_circle.m_p, callback.m_circle.m_radius, color); m_debugDraw.DrawString(5, m_textLine, "Press 1-5 to drop stuff"); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "Press 'a' to (de)activate some bodies"); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "Press 'd' to destroy a body"); m_textLine += 15; } static Test* Create() { return new PolyShapes; } int32 m_bodyIndex; b2Body* m_bodies[k_maxBodies]; b2PolygonShape m_polygons[4]; b2CircleShape m_circle; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Prismatic.h000066400000000000000000000064011263452017400233250ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef PRISMATIC_H #define PRISMATIC_H // The motor in this test gets smoother with higher velocity iterations. class Prismatic : public Test { public: Prismatic() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(2.0f, 0.5f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-10.0f, 10.0f); bd.angle = 0.5f * b2_pi; bd.allowSleep = false; b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 5.0f); b2PrismaticJointDef pjd; // Bouncy limit b2Vec2 axis(2.0f, 1.0f); axis.Normalize(); pjd.Initialize(ground, body, b2Vec2(0.0f, 0.0f), axis); // Non-bouncy limit //pjd.Initialize(ground, body, b2Vec2(-10.0f, 10.0f), b2Vec2(1.0f, 0.0f)); pjd.motorSpeed = 10.0f; pjd.maxMotorForce = 10000.0f; pjd.enableMotor = true; pjd.lowerTranslation = 0.0f; pjd.upperTranslation = 20.0f; pjd.enableLimit = true; m_joint = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); } } void Keyboard(unsigned char key) { switch (key) { case 'l': m_joint->EnableLimit(!m_joint->IsLimitEnabled()); break; case 'm': m_joint->EnableMotor(!m_joint->IsMotorEnabled()); break; case 's': m_joint->SetMotorSpeed(-m_joint->GetMotorSpeed()); break; } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Keys: (l) limits, (m) motors, (s) speed"); m_textLine += 15; float32 force = m_joint->GetMotorForce(settings->hz); m_debugDraw.DrawString(5, m_textLine, "Motor Force = %4.0f", (float) force); m_textLine += 15; } static Test* Create() { return new Prismatic; } b2PrismaticJoint* m_joint; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Pulleys.h000066400000000000000000000061741263452017400230360ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef PULLEYS_H #define PULLEYS_H class Pulleys : public Test { public: Pulleys() { float32 y = 16.0f; float32 L = 12.0f; float32 a = 1.0f; float32 b = 2.0f; b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape edge; edge.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); //ground->CreateFixture(&shape, 0.0f); b2CircleShape circle; circle.m_radius = 2.0f; circle.m_p.Set(-10.0f, y + b + L); ground->CreateFixture(&circle, 0.0f); circle.m_p.Set(10.0f, y + b + L); ground->CreateFixture(&circle, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(a, b); b2BodyDef bd; bd.type = b2_dynamicBody; //bd.fixedRotation = true; bd.position.Set(-10.0f, y); b2Body* body1 = m_world->CreateBody(&bd); body1->CreateFixture(&shape, 5.0f); bd.position.Set(10.0f, y); b2Body* body2 = m_world->CreateBody(&bd); body2->CreateFixture(&shape, 5.0f); b2PulleyJointDef pulleyDef; b2Vec2 anchor1(-10.0f, y + b); b2Vec2 anchor2(10.0f, y + b); b2Vec2 groundAnchor1(-10.0f, y + b + L); b2Vec2 groundAnchor2(10.0f, y + b + L); pulleyDef.Initialize(body1, body2, groundAnchor1, groundAnchor2, anchor1, anchor2, 1.5f); m_joint1 = (b2PulleyJoint*)m_world->CreateJoint(&pulleyDef); } } void Keyboard(unsigned char key) { switch (key) { case 0: break; } } void Step(Settings* settings) { Test::Step(settings); float32 ratio = m_joint1->GetRatio(); float32 L = m_joint1->GetLengthA() + ratio * m_joint1->GetLengthB(); m_debugDraw.DrawString(5, m_textLine, "L1 + %4.2f * L2 = %4.2f", (float) ratio, (float) L); m_textLine += 15; } static Test* Create() { return new Pulleys; } b2PulleyJoint* m_joint1; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Pyramid.h000066400000000000000000000046341263452017400230050ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef PYRAMID_H #define PYRAMID_H class Pyramid : public Test { public: enum { e_count = 20 }; Pyramid() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { float32 a = 0.5f; b2PolygonShape shape; shape.SetAsBox(a, a); b2Vec2 x(-7.0f, 0.75f); b2Vec2 y; b2Vec2 deltaX(0.5625f, 1.25f); b2Vec2 deltaY(1.125f, 0.0f); for (int32 i = 0; i < e_count; ++i) { y = x; for (int32 j = i; j < e_count; ++j) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = y; b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 5.0f); y += deltaY; } x += deltaX; } } } void Step(Settings* settings) { Test::Step(settings); //b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; //if (m_stepCount == 400) //{ // tree->RebuildBottomUp(); //} } static Test* Create() { return new Pyramid; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/RayCast.h000066400000000000000000000272651263452017400227530ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef RAY_CAST_H #define RAY_CAST_H // This test demonstrates how to use the world ray-cast feature. // NOTE: we are intentionally filtering one of the polygons, therefore // the ray will always miss one type of polygon. // This callback finds the closest hit. Polygon 0 is filtered. class RayCastClosestCallback : public b2RayCastCallback { public: RayCastClosestCallback() { m_hit = false; } float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float32 fraction) { b2Body* body = fixture->GetBody(); void* userData = body->GetUserData(); if (userData) { int32 index = *(int32*)userData; if (index == 0) { // filter return -1.0f; } } m_hit = true; m_point = point; m_normal = normal; return fraction; } bool m_hit; b2Vec2 m_point; b2Vec2 m_normal; }; // This callback finds any hit. Polygon 0 is filtered. class RayCastAnyCallback : public b2RayCastCallback { public: RayCastAnyCallback() { m_hit = false; } float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float32 fraction) { b2Body* body = fixture->GetBody(); void* userData = body->GetUserData(); if (userData) { int32 index = *(int32*)userData; if (index == 0) { // filter return -1.0f; } } m_hit = true; m_point = point; m_normal = normal; return 0.0f; } bool m_hit; b2Vec2 m_point; b2Vec2 m_normal; }; // This ray cast collects multiple hits along the ray. Polygon 0 is filtered. class RayCastMultipleCallback : public b2RayCastCallback { public: enum { e_maxCount = 3 }; RayCastMultipleCallback() { m_count = 0; } float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float32 fraction) { b2Body* body = fixture->GetBody(); void* userData = body->GetUserData(); if (userData) { int32 index = *(int32*)userData; if (index == 0) { // filter return -1.0f; } } b2Assert(m_count < e_maxCount); m_points[m_count] = point; m_normals[m_count] = normal; ++m_count; if (m_count == e_maxCount) { return 0.0f; } return 1.0f; } b2Vec2 m_points[e_maxCount]; b2Vec2 m_normals[e_maxCount]; int32 m_count; }; class RayCast : public Test { public: enum { e_maxBodies = 256 }; enum Mode { e_closest, e_any, e_multiple }; RayCast() { // Ground body { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2Vec2 vertices[3]; vertices[0].Set(-0.5f, 0.0f); vertices[1].Set(0.5f, 0.0f); vertices[2].Set(0.0f, 1.5f); m_polygons[0].Set(vertices, 3); } { b2Vec2 vertices[3]; vertices[0].Set(-0.1f, 0.0f); vertices[1].Set(0.1f, 0.0f); vertices[2].Set(0.0f, 1.5f); m_polygons[1].Set(vertices, 3); } { float32 w = 1.0f; float32 b = w / (2.0f + b2Sqrt(2.0f)); float32 s = b2Sqrt(2.0f) * b; b2Vec2 vertices[8]; vertices[0].Set(0.5f * s, 0.0f); vertices[1].Set(0.5f * w, b); vertices[2].Set(0.5f * w, b + s); vertices[3].Set(0.5f * s, w); vertices[4].Set(-0.5f * s, w); vertices[5].Set(-0.5f * w, b + s); vertices[6].Set(-0.5f * w, b); vertices[7].Set(-0.5f * s, 0.0f); m_polygons[2].Set(vertices, 8); } { m_polygons[3].SetAsBox(0.5f, 0.5f); } { m_circle.m_radius = 0.5f; } m_bodyIndex = 0; memset(m_bodies, 0, sizeof(m_bodies)); m_angle = 0.0f; m_mode = e_closest; } void Create(int32 index) { if (m_bodies[m_bodyIndex] != NULL) { m_world->DestroyBody(m_bodies[m_bodyIndex]); m_bodies[m_bodyIndex] = NULL; } b2BodyDef bd; float32 x = RandomFloat(-10.0f, 10.0f); float32 y = RandomFloat(0.0f, 20.0f); bd.position.Set(x, y); bd.angle = RandomFloat(-b2_pi, b2_pi); m_userData[m_bodyIndex] = index; bd.userData = m_userData + m_bodyIndex; if (index == 4) { bd.angularDamping = 0.02f; } m_bodies[m_bodyIndex] = m_world->CreateBody(&bd); if (index < 4) { b2FixtureDef fd; fd.shape = m_polygons + index; fd.friction = 0.3f; m_bodies[m_bodyIndex]->CreateFixture(&fd); } else { b2FixtureDef fd; fd.shape = &m_circle; fd.friction = 0.3f; m_bodies[m_bodyIndex]->CreateFixture(&fd); } m_bodyIndex = (m_bodyIndex + 1) % e_maxBodies; } void DestroyBody() { for (int32 i = 0; i < e_maxBodies; ++i) { if (m_bodies[i] != NULL) { m_world->DestroyBody(m_bodies[i]); m_bodies[i] = NULL; return; } } } void Keyboard(unsigned char key) { switch (key) { case '1': case '2': case '3': case '4': case '5': Create(key - '1'); break; case 'd': DestroyBody(); break; case 'm': if (m_mode == e_closest) { m_mode = e_any; } else if (m_mode == e_any) { m_mode = e_multiple; } else if (m_mode == e_multiple) { m_mode = e_closest; } } } void Step(Settings* settings) { bool advanceRay = settings->pause == 0 || settings->singleStep; Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Press 1-5 to drop stuff, m to change the mode"); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "Mode = %d", m_mode); m_textLine += 15; float32 L = 11.0f; b2Vec2 point1(0.0f, 10.0f); b2Vec2 d(L * cosf(m_angle), L * sinf(m_angle)); b2Vec2 point2 = point1 + d; if (m_mode == e_closest) { RayCastClosestCallback callback; m_world->RayCast(&callback, point1, point2); if (callback.m_hit) { m_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); m_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; m_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); } else { m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); } } else if (m_mode == e_any) { RayCastAnyCallback callback; m_world->RayCast(&callback, point1, point2); if (callback.m_hit) { m_debugDraw.DrawPoint(callback.m_point, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); m_debugDraw.DrawSegment(point1, callback.m_point, b2Color(0.8f, 0.8f, 0.8f)); b2Vec2 head = callback.m_point + 0.5f * callback.m_normal; m_debugDraw.DrawSegment(callback.m_point, head, b2Color(0.9f, 0.9f, 0.4f)); } else { m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); } } else if (m_mode == e_multiple) { RayCastMultipleCallback callback; m_world->RayCast(&callback, point1, point2); m_debugDraw.DrawSegment(point1, point2, b2Color(0.8f, 0.8f, 0.8f)); for (int32 i = 0; i < callback.m_count; ++i) { b2Vec2 p = callback.m_points[i]; b2Vec2 n = callback.m_normals[i]; m_debugDraw.DrawPoint(p, 5.0f, b2Color(0.4f, 0.9f, 0.4f)); m_debugDraw.DrawSegment(point1, p, b2Color(0.8f, 0.8f, 0.8f)); b2Vec2 head = p + 0.5f * n; m_debugDraw.DrawSegment(p, head, b2Color(0.9f, 0.9f, 0.4f)); } } if (advanceRay) { m_angle += 0.25f * b2_pi / 180.0f; } #if 0 // This case was failing. { b2Vec2 vertices[4]; //vertices[0].Set(-22.875f, -3.0f); //vertices[1].Set(22.875f, -3.0f); //vertices[2].Set(22.875f, 3.0f); //vertices[3].Set(-22.875f, 3.0f); b2PolygonShape shape; //shape.Set(vertices, 4); shape.SetAsBox(22.875f, 3.0f); b2RayCastInput input; input.p1.Set(10.2725f,1.71372f); input.p2.Set(10.2353f,2.21807f); //input.maxFraction = 0.567623f; input.maxFraction = 0.56762173f; b2Transform xf; xf.SetIdentity(); xf.position.Set(23.0f, 5.0f); b2RayCastOutput output; bool hit; hit = shape.RayCast(&output, input, xf); hit = false; b2Color color(1.0f, 1.0f, 1.0f); b2Vec2 vs[4]; for (int32 i = 0; i < 4; ++i) { vs[i] = b2Mul(xf, shape.m_vertices[i]); } m_debugDraw.DrawPolygon(vs, 4, color); m_debugDraw.DrawSegment(input.p1, input.p2, color); } #endif } static Test* Create() { return new RayCast; } int32 m_bodyIndex; b2Body* m_bodies[e_maxBodies]; int32 m_userData[e_maxBodies]; b2PolygonShape m_polygons[4]; b2CircleShape m_circle; float32 m_angle; Mode m_mode; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Revolute.h000066400000000000000000000121421263452017400231760ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef REVOLUTE_H #define REVOLUTE_H class Revolute : public Test { public: Revolute() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); b2FixtureDef fd; fd.shape = &shape; //fd.filter.categoryBits = 2; ground->CreateFixture(&fd); } { b2CircleShape shape; shape.m_radius = 0.5f; b2BodyDef bd; bd.type = b2_dynamicBody; b2RevoluteJointDef rjd; bd.position.Set(-10.0f, 20.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 5.0f); float32 w = 100.0f; body->SetAngularVelocity(w); body->SetLinearVelocity(b2Vec2(-8.0f * w, 0.0f)); rjd.Initialize(ground, body, b2Vec2(-10.0f, 12.0f)); rjd.motorSpeed = 1.0f * b2_pi; rjd.maxMotorTorque = 10000.0f; rjd.enableMotor = false; rjd.lowerAngle = -0.25f * b2_pi; rjd.upperAngle = 0.5f * b2_pi; rjd.enableLimit = true; rjd.collideConnected = true; m_joint = (b2RevoluteJoint*)m_world->CreateJoint(&rjd); } { b2CircleShape circle_shape; circle_shape.m_radius = 3.0f; b2BodyDef circle_bd; circle_bd.type = b2_dynamicBody; circle_bd.position.Set(5.0f, 30.0f); b2FixtureDef fd; fd.density = 5.0f; fd.filter.maskBits = 1; fd.shape = &circle_shape; m_ball = m_world->CreateBody(&circle_bd); m_ball->CreateFixture(&fd); b2PolygonShape polygon_shape; polygon_shape.SetAsBox(10.0f, 0.2f, b2Vec2 (-10.0f, 0.0f), 0.0f); b2BodyDef polygon_bd; polygon_bd.position.Set(20.0f, 10.0f); polygon_bd.type = b2_dynamicBody; polygon_bd.bullet = true; b2Body* polygon_body = m_world->CreateBody(&polygon_bd); polygon_body->CreateFixture(&polygon_shape, 2.0f); b2RevoluteJointDef rjd; rjd.Initialize(ground, polygon_body, b2Vec2(20.0f, 10.0f)); rjd.lowerAngle = -0.25f * b2_pi; rjd.upperAngle = 0.0f * b2_pi; rjd.enableLimit = true; m_world->CreateJoint(&rjd); } // Tests mass computation of a small object far from the origin { b2BodyDef bodyDef; bodyDef.type = b2_dynamicBody; b2Body* body = m_world->CreateBody(&bodyDef); b2PolygonShape polyShape; b2Vec2 verts[3]; verts[0].Set( 17.63f, 36.31f ); verts[1].Set( 17.52f, 36.69f ); verts[2].Set( 17.19f, 36.36f ); polyShape.Set(verts, 3); b2FixtureDef polyFixtureDef; polyFixtureDef.shape = &polyShape; polyFixtureDef.density = 1; body->CreateFixture(&polyFixtureDef); //assertion hits inside here } } void Keyboard(unsigned char key) { switch (key) { case 'l': m_joint->EnableLimit(!m_joint->IsLimitEnabled()); break; case 'm': m_joint->EnableMotor(!m_joint->IsMotorEnabled()); break; } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Keys: (l) limits, (m) motor"); m_textLine += 15; //if (m_stepCount == 360) //{ // m_ball->SetTransform(b2Vec2(0.0f, 0.5f), 0.0f); //} //float32 torque1 = m_joint1->GetMotorTorque(); //m_debugDraw.DrawString(5, m_textLine, "Motor Torque = %4.0f, %4.0f : Motor Force = %4.0f", (float) torque1, (float) torque2, (float) force3); //m_textLine += 15; } static Test* Create() { return new Revolute; } b2Body* m_ball; b2RevoluteJoint* m_joint; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Rope.h000066400000000000000000000052361263452017400223040ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef ROPE_H #define ROPE_H /// class Rope : public Test { public: Rope() { const int32 N = 40; b2Vec2 vertices[N]; float32 masses[N]; for (int32 i = 0; i < N; ++i) { vertices[i].Set(0.0f, 20.0f - 0.25f * i); masses[i] = 1.0f; } masses[0] = 0.0f; masses[1] = 0.0f; b2RopeDef def; def.vertices = vertices; def.count = N; def.gravity.Set(0.0f, -10.0f); def.masses = masses; def.damping = 0.1f; def.k2 = 1.0f; def.k3 = 0.5f; m_rope.Initialize(&def); m_angle = 0.0f; m_rope.SetAngle(m_angle); } void Keyboard(unsigned char key) { switch (key) { case 'q': m_angle = b2Max(-b2_pi, m_angle - 0.05f * b2_pi); m_rope.SetAngle(m_angle); break; case 'e': m_angle = b2Min(b2_pi, m_angle + 0.05f * b2_pi); m_rope.SetAngle(m_angle); break; } } void Step(Settings* settings) { float32 dt = settings->hz > 0.0f ? 1.0f / settings->hz : 0.0f; if (settings->pause == 1 && settings->singleStep == 0) { dt = 0.0f; } m_rope.Step(dt, 1); Test::Step(settings); m_rope.Draw(&m_debugDraw); m_debugDraw.DrawString(5, m_textLine, "Press (q,e) to adjust target angle"); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "Target angle = %g degrees", m_angle * 180.0f / b2_pi); m_textLine += 15; } static Test* Create() { return new Rope; } b2Rope m_rope; float32 m_angle; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/RopeJoint.h000066400000000000000000000106611263452017400233060ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef ROPE_JOINT_H #define ROPE_JOINT_H /// This test shows how a rope joint can be used to stabilize a chain of /// bodies with a heavy payload. Notice that the rope joint just prevents /// excessive stretching and has no other effect. /// By disabling the rope joint you can see that the Box2D solver has trouble /// supporting heavy bodies with light bodies. Try playing around with the /// densities, time step, and iterations to see how they affect stability. /// This test also shows how to use contact filtering. Filtering is configured /// so that the payload does not collide with the chain. class RopeJoint : public Test { public: RopeJoint() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.125f); b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; fd.friction = 0.2f; fd.filter.categoryBits = 0x0001; fd.filter.maskBits = 0xFFFF & ~0x0002; b2RevoluteJointDef jd; jd.collideConnected = false; const int32 N = 10; const float32 y = 15.0f; m_ropeDef.localAnchorA.Set(0.0f, y); b2Body* prevBody = ground; for (int32 i = 0; i < N; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.5f + 1.0f * i, y); if (i == N - 1) { shape.SetAsBox(1.5f, 1.5f); fd.density = 100.0f; fd.filter.categoryBits = 0x0002; bd.position.Set(1.0f * i, y); bd.angularDamping = 0.4f; } b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&fd); b2Vec2 anchor(float32(i), y); jd.Initialize(prevBody, body, anchor); m_world->CreateJoint(&jd); prevBody = body; } m_ropeDef.localAnchorB.SetZero(); float32 extraLength = 0.01f; m_ropeDef.maxLength = N - 1.0f + extraLength; m_ropeDef.bodyB = prevBody; } { m_ropeDef.bodyA = ground; m_rope = m_world->CreateJoint(&m_ropeDef); } } void Keyboard(unsigned char key) { switch (key) { case 'j': if (m_rope) { m_world->DestroyJoint(m_rope); m_rope = NULL; } else { m_rope = m_world->CreateJoint(&m_ropeDef); } break; } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Press (j) to toggle the rope joint."); m_textLine += 15; if (m_rope) { m_debugDraw.DrawString(5, m_textLine, "Rope ON"); } else { m_debugDraw.DrawString(5, m_textLine, "Rope OFF"); } m_textLine += 15; } static Test* Create() { return new RopeJoint; } b2RopeJointDef m_ropeDef; b2Joint* m_rope; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/SensorTest.h000066400000000000000000000117451263452017400235120ustar00rootroot00000000000000/* * Copyright (c) 2008-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef SENSOR_TEST_H #define SENSOR_TEST_H // This is used to test sensor shapes. class SensorTest : public Test { public: enum { e_count = 7 }; SensorTest() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); { b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } #if 0 { b2FixtureDef sd; sd.SetAsBox(10.0f, 2.0f, b2Vec2(0.0f, 20.0f), 0.0f); sd.isSensor = true; m_sensor = ground->CreateFixture(&sd); } #else { b2CircleShape shape; shape.m_radius = 5.0f; shape.m_p.Set(0.0f, 10.0f); b2FixtureDef fd; fd.shape = &shape; fd.isSensor = true; m_sensor = ground->CreateFixture(&fd); } #endif } { b2CircleShape shape; shape.m_radius = 1.0f; for (int32 i = 0; i < e_count; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-10.0f + 3.0f * i, 20.0f); bd.userData = m_touching + i; m_touching[i] = false; m_bodies[i] = m_world->CreateBody(&bd); m_bodies[i]->CreateFixture(&shape, 1.0f); } } } // Implement contact listener. void BeginContact(b2Contact* contact) { b2Fixture* fixtureA = contact->GetFixtureA(); b2Fixture* fixtureB = contact->GetFixtureB(); if (fixtureA == m_sensor) { void* userData = fixtureB->GetBody()->GetUserData(); if (userData) { bool* touching = (bool*)userData; *touching = true; } } if (fixtureB == m_sensor) { void* userData = fixtureA->GetBody()->GetUserData(); if (userData) { bool* touching = (bool*)userData; *touching = true; } } } // Implement contact listener. void EndContact(b2Contact* contact) { b2Fixture* fixtureA = contact->GetFixtureA(); b2Fixture* fixtureB = contact->GetFixtureB(); if (fixtureA == m_sensor) { void* userData = fixtureB->GetBody()->GetUserData(); if (userData) { bool* touching = (bool*)userData; *touching = false; } } if (fixtureB == m_sensor) { void* userData = fixtureA->GetBody()->GetUserData(); if (userData) { bool* touching = (bool*)userData; *touching = false; } } } void Step(Settings* settings) { Test::Step(settings); // Traverse the contact results. Apply a force on shapes // that overlap the sensor. for (int32 i = 0; i < e_count; ++i) { if (m_touching[i] == false) { continue; } b2Body* body = m_bodies[i]; b2Body* ground = m_sensor->GetBody(); b2CircleShape* circle = (b2CircleShape*)m_sensor->GetShape(); b2Vec2 center = ground->GetWorldPoint(circle->m_p); b2Vec2 position = body->GetPosition(); b2Vec2 d = center - position; if (d.LengthSquared() < FLT_EPSILON * FLT_EPSILON) { continue; } d.Normalize(); b2Vec2 F = 100.0f * d; body->ApplyForce(F, position); } } static Test* Create() { return new SensorTest; } b2Fixture* m_sensor; b2Body* m_bodies[e_count]; bool m_touching[e_count]; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/ShapeEditing.h000066400000000000000000000057311263452017400237430ustar00rootroot00000000000000/* * Copyright (c) 2008-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef SHAPE_EDITING_H #define SHAPE_EDITING_H class ShapeEditing : public Test { public: ShapeEditing() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 10.0f); m_body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(4.0f, 4.0f, b2Vec2(0.0f, 0.0f), 0.0f); m_fixture1 = m_body->CreateFixture(&shape, 10.0f); m_fixture2 = NULL; m_sensor = false; } void Keyboard(unsigned char key) { switch (key) { case 'c': if (m_fixture2 == NULL) { b2CircleShape shape; shape.m_radius = 3.0f; shape.m_p.Set(0.5f, -4.0f); m_fixture2 = m_body->CreateFixture(&shape, 10.0f); m_body->SetAwake(true); } break; case 'd': if (m_fixture2 != NULL) { m_body->DestroyFixture(m_fixture2); m_fixture2 = NULL; m_body->SetAwake(true); } break; case 's': if (m_fixture2 != NULL) { m_sensor = !m_sensor; m_fixture2->SetSensor(m_sensor); } break; } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Press: (c) create a shape, (d) destroy a shape."); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "sensor = %d", m_sensor); m_textLine += 15; } static Test* Create() { return new ShapeEditing; } b2Body* m_body; b2Fixture* m_fixture1; b2Fixture* m_fixture2; bool m_sensor; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/SliderCrank.h000066400000000000000000000116201263452017400235720ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef SLIDER_CRANK_H #define SLIDER_CRANK_H // A motor driven slider crank with joint friction. class SliderCrank : public Test { public: SliderCrank() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2Body* prevBody = ground; // Define crank. { b2PolygonShape shape; shape.SetAsBox(0.5f, 2.0f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 7.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 2.0f); b2RevoluteJointDef rjd; rjd.Initialize(prevBody, body, b2Vec2(0.0f, 5.0f)); rjd.motorSpeed = 1.0f * b2_pi; rjd.maxMotorTorque = 10000.0f; rjd.enableMotor = true; m_joint1 = (b2RevoluteJoint*)m_world->CreateJoint(&rjd); prevBody = body; } // Define follower. { b2PolygonShape shape; shape.SetAsBox(0.5f, 4.0f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 13.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 2.0f); b2RevoluteJointDef rjd; rjd.Initialize(prevBody, body, b2Vec2(0.0f, 9.0f)); rjd.enableMotor = false; m_world->CreateJoint(&rjd); prevBody = body; } // Define piston { b2PolygonShape shape; shape.SetAsBox(1.5f, 1.5f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.fixedRotation = true; bd.position.Set(0.0f, 17.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 2.0f); b2RevoluteJointDef rjd; rjd.Initialize(prevBody, body, b2Vec2(0.0f, 17.0f)); m_world->CreateJoint(&rjd); b2PrismaticJointDef pjd; pjd.Initialize(ground, body, b2Vec2(0.0f, 17.0f), b2Vec2(0.0f, 1.0f)); pjd.maxMotorForce = 1000.0f; pjd.enableMotor = true; m_joint2 = (b2PrismaticJoint*)m_world->CreateJoint(&pjd); } // Create a payload { b2PolygonShape shape; shape.SetAsBox(1.5f, 1.5f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 23.0f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 2.0f); } } } void Keyboard(unsigned char key) { switch (key) { case 'f': m_joint2->EnableMotor(!m_joint2->IsMotorEnabled()); m_joint2->GetBodyB()->SetAwake(true); break; case 'm': m_joint1->EnableMotor(!m_joint1->IsMotorEnabled()); m_joint1->GetBodyB()->SetAwake(true); break; } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Keys: (f) toggle friction, (m) toggle motor"); m_textLine += 15; float32 torque = m_joint1->GetMotorTorque(settings->hz); m_debugDraw.DrawString(5, m_textLine, "Motor Torque = %5.0f", (float) torque); m_textLine += 15; } static Test* Create() { return new SliderCrank; } b2RevoluteJoint* m_joint1; b2PrismaticJoint* m_joint2; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/SphereStack.h000066400000000000000000000044651263452017400236160ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef SPHERE_STACK_H #define SPHERE_STACK_H class SphereStack : public Test { public: enum { e_count = 10 }; SphereStack() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2CircleShape shape; shape.m_radius = 1.0f; for (int32 i = 0; i < e_count; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0, 4.0f + 3.0f * i); m_bodies[i] = m_world->CreateBody(&bd); m_bodies[i]->CreateFixture(&shape, 1.0f); m_bodies[i]->SetLinearVelocity(b2Vec2(0.0f, -50.0f)); } } } void Step(Settings* settings) { Test::Step(settings); //for (int32 i = 0; i < e_count; ++i) //{ // printf("%g ", m_bodies[i]->GetWorldCenter().y); //} //for (int32 i = 0; i < e_count; ++i) //{ // printf("%g ", m_bodies[i]->GetLinearVelocity().y); //} //printf("\n"); } static Test* Create() { return new SphereStack; } b2Body* m_bodies[e_count]; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/TestEntries.cpp000066400000000000000000000101541263452017400241760ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include "../Framework/Test.h" #include "../Framework/Render.h" #ifdef __APPLE__ #include #else #include "freeglut/freeglut.h" #endif #include using namespace std; #include "AddPair.h" #include "ApplyForce.h" #include "BodyTypes.h" #include "Breakable.h" #include "Bridge.h" #include "BulletTest.h" #include "Cantilever.h" #include "Car.h" #include "ContinuousTest.h" #include "Chain.h" #include "CharacterCollision.h" #include "CollisionFiltering.h" #include "CollisionProcessing.h" #include "CompoundShapes.h" #include "Confined.h" #include "DistanceTest.h" #include "Dominos.h" #include "DumpShell.h" #include "DynamicTreeTest.h" #include "EdgeShapes.h" #include "EdgeTest.h" #include "Gears.h" #include "OneSidedPlatform.h" #include "Pinball.h" #include "PolyCollision.h" #include "PolyShapes.h" #include "Prismatic.h" #include "Pulleys.h" #include "Pyramid.h" #include "RayCast.h" #include "Revolute.h" //#include "Rope.h" #include "RopeJoint.h" #include "SensorTest.h" #include "ShapeEditing.h" #include "SliderCrank.h" #include "SphereStack.h" #include "TheoJansen.h" #include "Tiles.h" #include "TimeOfImpact.h" #include "Tumbler.h" #include "VaryingFriction.h" #include "VaryingRestitution.h" #include "VerticalStack.h" #include "Web.h" TestEntry g_testEntries[] = { {"Tumbler", Tumbler::Create}, {"Tiles", Tiles::Create}, {"Dump Shell", DumpShell::Create}, {"Gears", Gears::Create}, {"Cantilever", Cantilever::Create}, {"Varying Restitution", VaryingRestitution::Create}, {"Character Collision", CharacterCollision::Create}, {"Edge Test", EdgeTest::Create}, {"Body Types", BodyTypes::Create}, {"Shape Editing", ShapeEditing::Create}, {"Car", Car::Create}, {"Apply Force", ApplyForce::Create}, {"Prismatic", Prismatic::Create}, {"Vertical Stack", VerticalStack::Create}, {"SphereStack", SphereStack::Create}, {"Revolute", Revolute::Create}, {"Pulleys", Pulleys::Create}, {"Polygon Shapes", PolyShapes::Create}, //{"Rope", Rope::Create}, {"Web", Web::Create}, {"RopeJoint", RopeJoint::Create}, {"One-Sided Platform", OneSidedPlatform::Create}, {"Pinball", Pinball::Create}, {"Bullet Test", BulletTest::Create}, {"Continuous Test", ContinuousTest::Create}, {"Time of Impact", TimeOfImpact::Create}, {"Ray-Cast", RayCast::Create}, {"Confined", Confined::Create}, {"Pyramid", Pyramid::Create}, {"Theo Jansen's Walker", TheoJansen::Create}, {"Edge Shapes", EdgeShapes::Create}, {"PolyCollision", PolyCollision::Create}, {"Bridge", Bridge::Create}, {"Breakable", Breakable::Create}, {"Chain", Chain::Create}, {"Collision Filtering", CollisionFiltering::Create}, {"Collision Processing", CollisionProcessing::Create}, {"Compound Shapes", CompoundShapes::Create}, {"Distance Test", DistanceTest::Create}, {"Dominos", Dominos::Create}, {"Dynamic Tree", DynamicTreeTest::Create}, {"Sensor Test", SensorTest::Create}, {"Slider Crank", SliderCrank::Create}, {"Varying Friction", VaryingFriction::Create}, {"Add Pair Stress Test", AddPair::Create}, {NULL, NULL} }; JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/TheoJansen.h000066400000000000000000000164661263452017400234440ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ // Inspired by a contribution by roman_m // Dimensions scooped from APE (http://www.cove.org/ape/index.htm) #ifndef THEO_JANSEN_H #define THEO_JANSEN_H class TheoJansen : public Test { public: void CreateLeg(float32 s, const b2Vec2& wheelAnchor) { b2Vec2 p1(5.4f * s, -6.1f); b2Vec2 p2(7.2f * s, -1.2f); b2Vec2 p3(4.3f * s, -1.9f); b2Vec2 p4(3.1f * s, 0.8f); b2Vec2 p5(6.0f * s, 1.5f); b2Vec2 p6(2.5f * s, 3.7f); b2FixtureDef fd1, fd2; fd1.filter.groupIndex = -1; fd2.filter.groupIndex = -1; fd1.density = 1.0f; fd2.density = 1.0f; b2PolygonShape poly1, poly2; if (s > 0.0f) { b2Vec2 vertices[3]; vertices[0] = p1; vertices[1] = p2; vertices[2] = p3; poly1.Set(vertices, 3); vertices[0] = b2Vec2_zero; vertices[1] = p5 - p4; vertices[2] = p6 - p4; poly2.Set(vertices, 3); } else { b2Vec2 vertices[3]; vertices[0] = p1; vertices[1] = p3; vertices[2] = p2; poly1.Set(vertices, 3); vertices[0] = b2Vec2_zero; vertices[1] = p6 - p4; vertices[2] = p5 - p4; poly2.Set(vertices, 3); } fd1.shape = &poly1; fd2.shape = &poly2; b2BodyDef bd1, bd2; bd1.type = b2_dynamicBody; bd2.type = b2_dynamicBody; bd1.position = m_offset; bd2.position = p4 + m_offset; bd1.angularDamping = 10.0f; bd2.angularDamping = 10.0f; b2Body* body1 = m_world->CreateBody(&bd1); b2Body* body2 = m_world->CreateBody(&bd2); body1->CreateFixture(&fd1); body2->CreateFixture(&fd2); b2DistanceJointDef djd; // Using a soft distance constraint can reduce some jitter. // It also makes the structure seem a bit more fluid by // acting like a suspension system. djd.dampingRatio = 0.5f; djd.frequencyHz = 10.0f; djd.Initialize(body1, body2, p2 + m_offset, p5 + m_offset); m_world->CreateJoint(&djd); djd.Initialize(body1, body2, p3 + m_offset, p4 + m_offset); m_world->CreateJoint(&djd); djd.Initialize(body1, m_wheel, p3 + m_offset, wheelAnchor + m_offset); m_world->CreateJoint(&djd); djd.Initialize(body2, m_wheel, p6 + m_offset, wheelAnchor + m_offset); m_world->CreateJoint(&djd); b2RevoluteJointDef rjd; rjd.Initialize(body2, m_chassis, p4 + m_offset); m_world->CreateJoint(&rjd); } TheoJansen() { m_offset.Set(0.0f, 8.0f); m_motorSpeed = 2.0f; m_motorOn = true; b2Vec2 pivot(0.0f, 0.8f); // Ground { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-50.0f, 0.0f), b2Vec2(50.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); shape.Set(b2Vec2(-50.0f, 0.0f), b2Vec2(-50.0f, 10.0f)); ground->CreateFixture(&shape, 0.0f); shape.Set(b2Vec2(50.0f, 0.0f), b2Vec2(50.0f, 10.0f)); ground->CreateFixture(&shape, 0.0f); } // Balls for (int32 i = 0; i < 40; ++i) { b2CircleShape shape; shape.m_radius = 0.25f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-40.0f + 2.0f * i, 0.5f); b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 1.0f); } // Chassis { b2PolygonShape shape; shape.SetAsBox(2.5f, 1.0f); b2FixtureDef sd; sd.density = 1.0f; sd.shape = &shape; sd.filter.groupIndex = -1; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = pivot + m_offset; m_chassis = m_world->CreateBody(&bd); m_chassis->CreateFixture(&sd); } { b2CircleShape shape; shape.m_radius = 1.6f; b2FixtureDef sd; sd.density = 1.0f; sd.shape = &shape; sd.filter.groupIndex = -1; b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = pivot + m_offset; m_wheel = m_world->CreateBody(&bd); m_wheel->CreateFixture(&sd); } { b2RevoluteJointDef jd; jd.Initialize(m_wheel, m_chassis, pivot + m_offset); jd.collideConnected = false; jd.motorSpeed = m_motorSpeed; jd.maxMotorTorque = 400.0f; jd.enableMotor = m_motorOn; m_motorJoint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); } b2Vec2 wheelAnchor; wheelAnchor = pivot + b2Vec2(0.0f, -0.8f); CreateLeg(-1.0f, wheelAnchor); CreateLeg(1.0f, wheelAnchor); m_wheel->SetTransform(m_wheel->GetPosition(), 120.0f * b2_pi / 180.0f); CreateLeg(-1.0f, wheelAnchor); CreateLeg(1.0f, wheelAnchor); m_wheel->SetTransform(m_wheel->GetPosition(), -120.0f * b2_pi / 180.0f); CreateLeg(-1.0f, wheelAnchor); CreateLeg(1.0f, wheelAnchor); } void Step(Settings* settings) { m_debugDraw.DrawString(5, m_textLine, "Keys: left = a, brake = s, right = d, toggle motor = m"); m_textLine += 15; Test::Step(settings); } void Keyboard(unsigned char key) { switch (key) { case 'a': m_motorJoint->SetMotorSpeed(-m_motorSpeed); break; case 's': m_motorJoint->SetMotorSpeed(0.0f); break; case 'd': m_motorJoint->SetMotorSpeed(m_motorSpeed); break; case 'm': m_motorJoint->EnableMotor(!m_motorJoint->IsMotorEnabled()); break; } } static Test* Create() { return new TheoJansen; } b2Vec2 m_offset; b2Body* m_chassis; b2Body* m_wheel; b2RevoluteJoint* m_motorJoint; bool m_motorOn; float32 m_motorSpeed; }; #endif // THEO_JANSEN_H JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Tiles.h000066400000000000000000000113101263452017400224450ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef TILES_H #define TILES_H /// This stress tests the dynamic tree broad-phase. This also shows that tile /// based collision is _not_ smooth due to Box2D not knowing about adjacency. class Tiles : public Test { public: enum { e_count = 20 }; Tiles() { m_fixtureCount = 0; b2Timer timer; { float32 a = 0.5f; b2BodyDef bd; bd.position.y = -a; b2Body* ground = m_world->CreateBody(&bd); #if 1 int32 N = 200; int32 M = 10; b2Vec2 position; position.y = 0.0f; for (int32 j = 0; j < M; ++j) { position.x = -N * a; for (int32 i = 0; i < N; ++i) { b2PolygonShape shape; shape.SetAsBox(a, a, position, 0.0f); ground->CreateFixture(&shape, 0.0f); ++m_fixtureCount; position.x += 2.0f * a; } position.y -= 2.0f * a; } #else int32 N = 200; int32 M = 10; b2Vec2 position; position.x = -N * a; for (int32 i = 0; i < N; ++i) { position.y = 0.0f; for (int32 j = 0; j < M; ++j) { b2PolygonShape shape; shape.SetAsBox(a, a, position, 0.0f); ground->CreateFixture(&shape, 0.0f); position.y -= 2.0f * a; } position.x += 2.0f * a; } #endif } { float32 a = 0.5f; b2PolygonShape shape; shape.SetAsBox(a, a); b2Vec2 x(-7.0f, 0.75f); b2Vec2 y; b2Vec2 deltaX(0.5625f, 1.25f); b2Vec2 deltaY(1.125f, 0.0f); for (int32 i = 0; i < e_count; ++i) { y = x; for (int32 j = i; j < e_count; ++j) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position = y; //if (i == 0 && j == 0) //{ // bd.allowSleep = false; //} //else //{ // bd.allowSleep = true; //} b2Body* body = m_world->CreateBody(&bd); body->CreateFixture(&shape, 5.0f); ++m_fixtureCount; y += deltaY; } x += deltaX; } } m_createTime = timer.GetMilliseconds(); } void Step(Settings* settings) { const b2ContactManager& cm = m_world->GetContactManager(); int32 height = cm.m_broadPhase.GetTreeHeight(); int32 leafCount = cm.m_broadPhase.GetProxyCount(); int32 minimumNodeCount = 2 * leafCount - 1; float32 minimumHeight = ceilf(logf(float32(minimumNodeCount)) / logf(2.0f)); m_debugDraw.DrawString(5, m_textLine, "dynamic tree height = %d, min = %d", height, int32(minimumHeight)); m_textLine += 15; Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "create time = %6.2f ms, fixture count = %d", m_createTime, m_fixtureCount); m_textLine += 15; //b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree; //if (m_stepCount == 400) //{ // tree->RebuildBottomUp(); //} } static Test* Create() { return new Tiles; } int32 m_fixtureCount; float32 m_createTime; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/TimeOfImpact.h000066400000000000000000000105601263452017400237140ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef TIME_OF_IMPACT_H #define TIME_OF_IMPACT_H class TimeOfImpact : public Test { public: TimeOfImpact() { m_shapeA.SetAsBox(25.0f, 5.0f); m_shapeB.SetAsBox(2.5f, 2.5f); } static Test* Create() { return new TimeOfImpact; } void Step(Settings* settings) { Test::Step(settings); b2Sweep sweepA; sweepA.c0.Set(24.0f, -60.0f); sweepA.a0 = 2.95f; sweepA.c = sweepA.c0; sweepA.a = sweepA.a0; sweepA.localCenter.SetZero(); b2Sweep sweepB; sweepB.c0.Set(53.474274f, -50.252514f); sweepB.a0 = 513.36676f; // - 162.0f * b2_pi; sweepB.c.Set(54.595478f, -51.083473f); sweepB.a = 513.62781f; // - 162.0f * b2_pi; sweepB.localCenter.SetZero(); //sweepB.a0 -= 300.0f * b2_pi; //sweepB.a -= 300.0f * b2_pi; b2TOIInput input; input.proxyA.Set(&m_shapeA, 0); input.proxyB.Set(&m_shapeB, 0); input.sweepA = sweepA; input.sweepB = sweepB; input.tMax = 1.0f; b2TOIOutput output; b2TimeOfImpact(&output, &input); m_debugDraw.DrawString(5, m_textLine, "toi = %g", output.t); m_textLine += 15; extern int32 b2_toiMaxIters, b2_toiMaxRootIters; m_debugDraw.DrawString(5, m_textLine, "max toi iters = %d, max root iters = %d", b2_toiMaxIters, b2_toiMaxRootIters); m_textLine += 15; b2Vec2 vertices[b2_maxPolygonVertices]; b2Transform transformA; sweepA.GetTransform(&transformA, 0.0f); for (int32 i = 0; i < m_shapeA.m_vertexCount; ++i) { vertices[i] = b2Mul(transformA, m_shapeA.m_vertices[i]); } m_debugDraw.DrawPolygon(vertices, m_shapeA.m_vertexCount, b2Color(0.9f, 0.9f, 0.9f)); b2Transform transformB; sweepB.GetTransform(&transformB, 0.0f); b2Vec2 localPoint(2.0f, -0.1f); b2Vec2 rB = b2Mul(transformB, localPoint) - sweepB.c0; float32 wB = sweepB.a - sweepB.a0; b2Vec2 vB = sweepB.c - sweepB.c0; b2Vec2 v = vB + b2Cross(wB, rB); for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) { vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); } m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.5f, 0.9f, 0.5f)); sweepB.GetTransform(&transformB, output.t); for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) { vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); } m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.5f, 0.7f, 0.9f)); sweepB.GetTransform(&transformB, 1.0f); for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) { vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); } m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.9f, 0.5f, 0.5f)); #if 0 for (float32 t = 0.0f; t < 1.0f; t += 0.1f) { sweepB.GetTransform(&transformB, t); for (int32 i = 0; i < m_shapeB.m_vertexCount; ++i) { vertices[i] = b2Mul(transformB, m_shapeB.m_vertices[i]); } m_debugDraw.DrawPolygon(vertices, m_shapeB.m_vertexCount, b2Color(0.9f, 0.5f, 0.5f)); } #endif } b2PolygonShape m_shapeA; b2PolygonShape m_shapeB; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Tumbler.h000066400000000000000000000056301263452017400230070ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef TUMBLER_H #define TUMBLER_H class Tumbler : public Test { public: enum { e_count = 800 }; Tumbler() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); } { b2BodyDef bd; bd.type = b2_dynamicBody; bd.allowSleep = false; bd.position.Set(0.0f, 10.0f); b2Body* body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.5f, 10.0f, b2Vec2( 10.0f, 0.0f), 0.0); body->CreateFixture(&shape, 5.0f); shape.SetAsBox(0.5f, 10.0f, b2Vec2(-10.0f, 0.0f), 0.0); body->CreateFixture(&shape, 5.0f); shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, 10.0f), 0.0); body->CreateFixture(&shape, 5.0f); shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, -10.0f), 0.0); body->CreateFixture(&shape, 5.0f); b2RevoluteJointDef jd; jd.bodyA = ground; jd.bodyB = body; jd.localAnchorA.Set(0.0f, 10.0f); jd.localAnchorB.Set(0.0f, 0.0f); jd.referenceAngle = 0.0f; jd.motorSpeed = 0.05f * b2_pi; jd.maxMotorTorque = 1e8f; jd.enableMotor = true; m_joint = (b2RevoluteJoint*)m_world->CreateJoint(&jd); } m_count = 0; } void Step(Settings* settings) { Test::Step(settings); if (m_count < e_count) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(0.0f, 10.0f); b2Body* body = m_world->CreateBody(&bd); b2PolygonShape shape; shape.SetAsBox(0.125f, 0.125f); body->CreateFixture(&shape, 1.0f); ++m_count; } } static Test* Create() { return new Tumbler; } b2RevoluteJoint* m_joint; int32 m_count; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/VaryingFriction.h000066400000000000000000000067231263452017400245160ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef VARYING_FRICTION_H #define VARYING_FRICTION_H class VaryingFriction : public Test { public: VaryingFriction() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(13.0f, 0.25f); b2BodyDef bd; bd.position.Set(-4.0f, 22.0f); bd.angle = -0.25f; b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.25f, 1.0f); b2BodyDef bd; bd.position.Set(10.5f, 19.0f); b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(13.0f, 0.25f); b2BodyDef bd; bd.position.Set(4.0f, 14.0f); bd.angle = 0.25f; b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.25f, 1.0f); b2BodyDef bd; bd.position.Set(-10.5f, 11.0f); b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(13.0f, 0.25f); b2BodyDef bd; bd.position.Set(-4.0f, 6.0f); bd.angle = -0.25f; b2Body* ground = m_world->CreateBody(&bd); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.5f); b2FixtureDef fd; fd.shape = &shape; fd.density = 25.0f; float friction[5] = {0.75f, 0.5f, 0.35f, 0.1f, 0.0f}; for (int i = 0; i < 5; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-15.0f + 4.0f * i, 28.0f); b2Body* body = m_world->CreateBody(&bd); fd.friction = friction[i]; body->CreateFixture(&fd); } } } static Test* Create() { return new VaryingFriction; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/VaryingRestitution.h000066400000000000000000000041701263452017400252640ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef VARYING_RESTITUTION_H #define VARYING_RESTITUTION_H // Note: even with a restitution of 1.0, there is some energy change // due to position correction. class VaryingRestitution : public Test { public: VaryingRestitution() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2CircleShape shape; shape.m_radius = 1.0f; b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; float32 restitution[7] = {0.0f, 0.1f, 0.3f, 0.5f, 0.75f, 0.9f, 1.0f}; for (int32 i = 0; i < 7; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-10.0f + 3.0f * i, 20.0f); b2Body* body = m_world->CreateBody(&bd); fd.restitution = restitution[i]; body->CreateFixture(&fd); } } } static Test* Create() { return new VaryingRestitution; } }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/VerticalStack.h000066400000000000000000000112011263452017400241230ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef VERTICAL_STACK_H #define VERTICAL_STACK_H class VerticalStack : public Test { public: enum { e_columnCount = 5, e_rowCount = 16 //e_columnCount = 1, //e_rowCount = 1 }; VerticalStack() { { b2BodyDef bd; b2Body* ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); shape.Set(b2Vec2(20.0f, 0.0f), b2Vec2(20.0f, 20.0f)); ground->CreateFixture(&shape, 0.0f); } float32 xs[5] = {0.0f, -10.0f, -5.0f, 5.0f, 10.0f}; for (int32 j = 0; j < e_columnCount; ++j) { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.5f); b2FixtureDef fd; fd.shape = &shape; fd.density = 1.0f; fd.friction = 0.3f; for (int i = 0; i < e_rowCount; ++i) { b2BodyDef bd; bd.type = b2_dynamicBody; int32 n = j * e_rowCount + i; b2Assert(n < e_rowCount * e_columnCount); m_indices[n] = n; bd.userData = m_indices + n; float32 x = 0.0f; //float32 x = RandomFloat(-0.02f, 0.02f); //float32 x = i % 2 == 0 ? -0.025f : 0.025f; bd.position.Set(xs[j] + x, 0.752f + 1.54f * i); b2Body* body = m_world->CreateBody(&bd); m_bodies[n] = body; body->CreateFixture(&fd); } } m_bullet = NULL; } void Keyboard(unsigned char key) { switch (key) { case ',': if (m_bullet != NULL) { m_world->DestroyBody(m_bullet); m_bullet = NULL; } { b2CircleShape shape; shape.m_radius = 0.25f; b2FixtureDef fd; fd.shape = &shape; fd.density = 20.0f; fd.restitution = 0.05f; b2BodyDef bd; bd.type = b2_dynamicBody; bd.bullet = true; bd.position.Set(-31.0f, 5.0f); m_bullet = m_world->CreateBody(&bd); m_bullet->CreateFixture(&fd); m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); } break; } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "Press: (,) to launch a bullet."); m_textLine += 15; //if (m_stepCount == 300) //{ // if (m_bullet != NULL) // { // m_world->DestroyBody(m_bullet); // m_bullet = NULL; // } // { // b2CircleShape shape; // shape.m_radius = 0.25f; // b2FixtureDef fd; // fd.shape = &shape; // fd.density = 20.0f; // fd.restitution = 0.05f; // b2BodyDef bd; // bd.type = b2_dynamicBody; // bd.bullet = true; // bd.position.Set(-31.0f, 5.0f); // m_bullet = m_world->CreateBody(&bd); // m_bullet->CreateFixture(&fd); // m_bullet->SetLinearVelocity(b2Vec2(400.0f, 0.0f)); // } //} } static Test* Create() { return new VerticalStack; } b2Body* m_bullet; b2Body* m_bodies[e_rowCount * e_columnCount]; int32 m_indices[e_rowCount * e_columnCount]; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/Box2DTests/Web.h000066400000000000000000000154561263452017400221210ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef WEB_H #define WEB_H // This tests distance joints, body destruction, and joint destruction. class Web : public Test { public: Web() { b2Body* ground = NULL; { b2BodyDef bd; ground = m_world->CreateBody(&bd); b2EdgeShape shape; shape.Set(b2Vec2(-40.0f, 0.0f), b2Vec2(40.0f, 0.0f)); ground->CreateFixture(&shape, 0.0f); } { b2PolygonShape shape; shape.SetAsBox(0.5f, 0.5f); b2BodyDef bd; bd.type = b2_dynamicBody; bd.position.Set(-5.0f, 5.0f); m_bodies[0] = m_world->CreateBody(&bd); m_bodies[0]->CreateFixture(&shape, 5.0f); bd.position.Set(5.0f, 5.0f); m_bodies[1] = m_world->CreateBody(&bd); m_bodies[1]->CreateFixture(&shape, 5.0f); bd.position.Set(5.0f, 15.0f); m_bodies[2] = m_world->CreateBody(&bd); m_bodies[2]->CreateFixture(&shape, 5.0f); bd.position.Set(-5.0f, 15.0f); m_bodies[3] = m_world->CreateBody(&bd); m_bodies[3]->CreateFixture(&shape, 5.0f); b2DistanceJointDef jd; b2Vec2 p1, p2, d; jd.frequencyHz = 2.0f; jd.dampingRatio = 0.0f; jd.bodyA = ground; jd.bodyB = m_bodies[0]; jd.localAnchorA.Set(-10.0f, 0.0f); jd.localAnchorB.Set(-0.5f, -0.5f); p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[0] = m_world->CreateJoint(&jd); jd.bodyA = ground; jd.bodyB = m_bodies[1]; jd.localAnchorA.Set(10.0f, 0.0f); jd.localAnchorB.Set(0.5f, -0.5f); p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[1] = m_world->CreateJoint(&jd); jd.bodyA = ground; jd.bodyB = m_bodies[2]; jd.localAnchorA.Set(10.0f, 20.0f); jd.localAnchorB.Set(0.5f, 0.5f); p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[2] = m_world->CreateJoint(&jd); jd.bodyA = ground; jd.bodyB = m_bodies[3]; jd.localAnchorA.Set(-10.0f, 20.0f); jd.localAnchorB.Set(-0.5f, 0.5f); p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[3] = m_world->CreateJoint(&jd); jd.bodyA = m_bodies[0]; jd.bodyB = m_bodies[1]; jd.localAnchorA.Set(0.5f, 0.0f); jd.localAnchorB.Set(-0.5f, 0.0f);; p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[4] = m_world->CreateJoint(&jd); jd.bodyA = m_bodies[1]; jd.bodyB = m_bodies[2]; jd.localAnchorA.Set(0.0f, 0.5f); jd.localAnchorB.Set(0.0f, -0.5f); p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[5] = m_world->CreateJoint(&jd); jd.bodyA = m_bodies[2]; jd.bodyB = m_bodies[3]; jd.localAnchorA.Set(-0.5f, 0.0f); jd.localAnchorB.Set(0.5f, 0.0f); p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[6] = m_world->CreateJoint(&jd); jd.bodyA = m_bodies[3]; jd.bodyB = m_bodies[0]; jd.localAnchorA.Set(0.0f, -0.5f); jd.localAnchorB.Set(0.0f, 0.5f); p1 = jd.bodyA->GetWorldPoint(jd.localAnchorA); p2 = jd.bodyB->GetWorldPoint(jd.localAnchorB); d = p2 - p1; jd.length = d.Length(); m_joints[7] = m_world->CreateJoint(&jd); } } void Keyboard(unsigned char key) { switch (key) { case 'b': for (int32 i = 0; i < 4; ++i) { if (m_bodies[i]) { m_world->DestroyBody(m_bodies[i]); m_bodies[i] = NULL; break; } } break; case 'j': for (int32 i = 0; i < 8; ++i) { if (m_joints[i]) { m_world->DestroyJoint(m_joints[i]); m_joints[i] = NULL; break; } } break; } } void Step(Settings* settings) { Test::Step(settings); m_debugDraw.DrawString(5, m_textLine, "This demonstrates a soft distance joint."); m_textLine += 15; m_debugDraw.DrawString(5, m_textLine, "Press: (b) to delete a body, (j) to delete a joint"); m_textLine += 15; } void JointDestroyed(b2Joint* joint) { for (int32 i = 0; i < 8; ++i) { if (m_joints[i] == joint) { m_joints[i] = NULL; break; } } } static Test* Create() { return new Web; } b2Body* m_bodies[4]; b2Joint* m_joints[8]; }; #endif JUCE-4.1.0/examples/Demo/Source/Demos/CameraDemo.cpp000066400000000000000000000163021263452017400217620ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #if JUCE_USE_CAMERA //============================================================================== class CameraDemo : public Component, private ComboBoxListener, private ButtonListener, private CameraDevice::Listener, private AsyncUpdater { public: CameraDemo() : cameraSelectorComboBox ("Camera"), snapshotButton ("Take a snapshot"), recordMovieButton ("Record a movie (to your desktop)..."), recordingMovie (false) { setOpaque (true); addAndMakeVisible (cameraSelectorComboBox); updateCameraList(); cameraSelectorComboBox.setSelectedId (1); cameraSelectorComboBox.addListener (this); addAndMakeVisible (snapshotButton); snapshotButton.addListener (this); snapshotButton.setEnabled (false); addAndMakeVisible (recordMovieButton); recordMovieButton.addListener (this); recordMovieButton.setEnabled (false); addAndMakeVisible (lastSnapshot); cameraSelectorComboBox.setSelectedId (2); } //============================================================================== void paint (Graphics& g) override { g.fillAll (Colours::black); } void resized() override { Rectangle r (getLocalBounds().reduced (5)); Rectangle top (r.removeFromTop (25)); cameraSelectorComboBox.setBounds (top.removeFromLeft (250)); r.removeFromTop (4); top = r.removeFromTop (25); snapshotButton.changeWidthToFitText (24); snapshotButton.setBounds (top.removeFromLeft (snapshotButton.getWidth())); top.removeFromLeft (4); recordMovieButton.changeWidthToFitText (24); recordMovieButton.setBounds (top.removeFromLeft (recordMovieButton.getWidth())); r.removeFromTop (4); Rectangle previewArea (r.removeFromTop (r.getHeight() / 2)); if (cameraPreviewComp != nullptr) cameraPreviewComp->setBounds (previewArea); r.removeFromTop (4); lastSnapshot.setBounds (r); } private: //============================================================================== ScopedPointer cameraDevice; ScopedPointer cameraPreviewComp; ImageComponent lastSnapshot; ComboBox cameraSelectorComboBox; TextButton snapshotButton; TextButton recordMovieButton; bool recordingMovie; void updateCameraList() { cameraSelectorComboBox.clear(); cameraSelectorComboBox.addItem ("No camera", 1); cameraSelectorComboBox.addSeparator(); StringArray cameras = CameraDevice::getAvailableDevices(); for (int i = 0; i < cameras.size(); ++i) cameraSelectorComboBox.addItem (cameras[i], i + 2); } void comboBoxChanged (ComboBox*) override { // This is called when the user chooses a camera from the drop-down list. cameraDevice = nullptr; cameraPreviewComp = nullptr; recordingMovie = false; if (cameraSelectorComboBox.getSelectedId() > 1) { // Try to open the user's choice of camera.. cameraDevice = CameraDevice::openDevice (cameraSelectorComboBox.getSelectedId() - 2); // and if it worked, create a preview component for it.. if (cameraDevice != nullptr) addAndMakeVisible (cameraPreviewComp = cameraDevice->createViewerComponent()); } snapshotButton.setEnabled (cameraDevice != nullptr); recordMovieButton.setEnabled (cameraDevice != nullptr); resized(); } void buttonClicked (Button* b) override { if (cameraDevice != nullptr) { if (b == &recordMovieButton) { // The user has clicked the record movie button.. if (! recordingMovie) { // Start recording to a file on the user's desktop.. recordingMovie = true; File file (File::getSpecialLocation (File::userDesktopDirectory) .getNonexistentChildFile ("JuceCameraDemo", CameraDevice::getFileExtension())); cameraDevice->startRecordingToFile (file); recordMovieButton.setButtonText ("Stop Recording"); } else { // Already recording, so stop... recordingMovie = false; cameraDevice->stopRecording(); recordMovieButton.setButtonText ("Start recording (to a file on your desktop)"); } } else { // When the user clicks the snapshot button, we'll attach ourselves to // the camera as a listener, and wait for an image to arrive... cameraDevice->addListener (this); } } } // This is called by the camera device when a new image arrives void imageReceived (const Image& image) override { // In this app we just want to take one image, so as soon as this happens, // we'll unregister ourselves as a listener. if (cameraDevice != nullptr) cameraDevice->removeListener (this); // This callback won't be on the message thread, so to get the image back to // the message thread, we'll stash a pointer to it (which is reference-counted in // a thead-safe way), and trigger an async callback which will then display the // new image.. incomingImage = image; triggerAsyncUpdate(); } Image incomingImage; void handleAsyncUpdate() override { if (incomingImage.isValid()) lastSnapshot.setImage (incomingImage); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CameraDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("29 Graphics: Camera Capture"); #endif // JUCE_USE_CAMERA JUCE-4.1.0/examples/Demo/Source/Demos/ChildProcessDemo.cpp000066400000000000000000000230121263452017400231500ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #if JUCE_WINDOWS || JUCE_MAC || JUCE_LINUX //============================================================================== // This is a token that's used at both ends of our parent-child processes, to // act as a unique token in the command line arguments. static const char* demoCommandLineUID = "demoUID"; // A few quick utility functions to convert between raw data and ValueTrees static ValueTree memoryBlockToValueTree (const MemoryBlock& mb) { return ValueTree::readFromData (mb.getData(), mb.getSize()); } static MemoryBlock valueTreeToMemoryBlock (const ValueTree& v) { MemoryOutputStream mo; v.writeToStream (mo); return mo.getMemoryBlock(); } static String valueTreeToString (const ValueTree& v) { const ScopedPointer xml (v.createXml()); return xml != nullptr ? xml->createDocument ("", true, false) : String(); } //============================================================================== class ChildProcessDemo : public Component, private Button::Listener, private MessageListener { public: ChildProcessDemo() { setOpaque (true); addAndMakeVisible (launchButton); launchButton.setButtonText ("Launch Child Process"); launchButton.addListener (this); addAndMakeVisible (pingButton); pingButton.setButtonText ("Send Ping"); pingButton.addListener (this); addAndMakeVisible (killButton); killButton.setButtonText ("Kill Child Process"); killButton.addListener (this); addAndMakeVisible (testResultsBox); testResultsBox.setMultiLine (true); testResultsBox.setFont (Font (Font::getDefaultMonospacedFontName(), 12.0f, Font::plain)); logMessage (String ("This demo uses the ChildProcessMaster and ChildProcessSlave classes to launch and communicate " "with a child process, sending messages in the form of serialised ValueTree objects.") + newLine); } ~ChildProcessDemo() { masterProcess = nullptr; } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle area (getLocalBounds()); Rectangle top (area.removeFromTop (40)); launchButton.setBounds (top.removeFromLeft (180).reduced (8)); pingButton.setBounds (top.removeFromLeft (180).reduced (8)); killButton.setBounds (top.removeFromLeft (180).reduced (8)); testResultsBox.setBounds (area.reduced (8)); } // Appends a message to the textbox that's shown in the demo as the console void logMessage (const String& message) { postMessage (new LogMessage (message)); } // invoked by the 'launch' button. void launchChildProcess() { if (masterProcess == nullptr) { masterProcess = new DemoMasterProcess (*this); if (masterProcess->launchSlaveProcess (File::getSpecialLocation (File::currentExecutableFile), demoCommandLineUID)) logMessage ("Child process started"); } } // invoked by the 'ping' button. void pingChildProcess() { if (masterProcess != nullptr) masterProcess->sendPingMessageToSlave(); else logMessage ("Child process is not running!"); } // invoked by the 'kill' button. void killChildProcess() { if (masterProcess != nullptr) { masterProcess = nullptr; logMessage ("Child process killed"); } } //============================================================================== // This class is used by the main process, acting as the master and receiving messages // from the slave process. class DemoMasterProcess : public ChildProcessMaster, private DeletedAtShutdown { public: DemoMasterProcess (ChildProcessDemo& d) : demo (d), count (0) {} // This gets called when a message arrives from the slave process.. void handleMessageFromSlave (const MemoryBlock& mb) override { ValueTree incomingMessage (memoryBlockToValueTree (mb)); demo.logMessage ("Received: " + valueTreeToString (incomingMessage)); } // This gets called if the slave process dies. void handleConnectionLost() override { demo.logMessage ("Connection lost to child process!"); demo.killChildProcess(); } void sendPingMessageToSlave() { ValueTree message ("MESSAGE"); message.setProperty ("count", count++, nullptr); demo.logMessage ("Sending: " + valueTreeToString (message)); sendMessageToSlave (valueTreeToMemoryBlock (message)); } ChildProcessDemo& demo; int count; }; //============================================================================== ScopedPointer masterProcess; private: TextButton launchButton, pingButton, killButton; TextEditor testResultsBox; void buttonClicked (Button* button) override { if (button == &launchButton) launchChildProcess(); if (button == &pingButton) pingChildProcess(); if (button == &killButton) killChildProcess(); } struct LogMessage : public Message { LogMessage (const String& m) : message (m) {} String message; }; void handleMessage (const Message& message) override { testResultsBox.moveCaretToEnd(); testResultsBox.insertTextAtCaret (static_cast (message).message + newLine); testResultsBox.moveCaretToEnd(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChildProcessDemo) }; //============================================================================== /* This class gets instantiated in the child process, and receives messages from the master process. */ class DemoSlaveProcess : public ChildProcessSlave, private DeletedAtShutdown { public: DemoSlaveProcess() {} void handleMessageFromMaster (const MemoryBlock& mb) override { ValueTree incomingMessage (memoryBlockToValueTree (mb)); /* In the demo we're only expecting one type of message, which will contain a 'count' parameter - we'll just increment that number and send back a new message containing the new number. Obviously in a real app you'll probably want to look at the type of the message, and do some more interesting behaviour. */ ValueTree reply ("REPLY"); reply.setProperty ("countPlusOne", static_cast (incomingMessage["count"]) + 1, nullptr); sendMessageToMaster (valueTreeToMemoryBlock (reply)); } void handleConnectionMade() override { // This method is called when the connection is established, and in response, we'll just // send off a message to say hello. ValueTree reply ("HelloWorld"); sendMessageToMaster (valueTreeToMemoryBlock (reply)); } /* If no pings are received from the master process for a number of seconds, then this will get invoked. Typically you'll want to use this as a signal to kill the process as quickly as possible, as you don't want to leave it hanging around as a zombie.. */ void handleConnectionLost() override { JUCEApplication::quit(); } }; //============================================================================== /* The JuceDemoApplication::initialise method calls this function to allow the child process to launch when the command line parameters indicate that we're being asked to run as a child process.. */ bool invokeChildProcessDemo (const String& commandLine) { ScopedPointer slave (new DemoSlaveProcess()); if (slave->initialiseFromCommandLine (commandLine, demoCommandLineUID)) { slave.release(); // allow the slave object to stay alive - it'll handle its own deletion. return true; } return false; } // This static object will register this demo type in a global list of demos.. static JuceDemoType childProcessDemo ("40 Child Process Comms"); #else // (Dummy stub for platforms that don't support this demo) bool invokeChildProcessDemo (const String&) { return false; } #endif JUCE-4.1.0/examples/Demo/Source/Demos/CodeEditorDemo.cpp000066400000000000000000000062211263452017400226120ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class CodeEditorDemo : public Component, private FilenameComponentListener { public: CodeEditorDemo() : fileChooser ("File", File::nonexistent, true, false, false, "*.cpp;*.h;*.hpp;*.c;*.mm;*.m", String(), "Choose a C++ file to open it in the editor") { setOpaque (true); // Create the editor.. addAndMakeVisible (editor = new CodeEditorComponent (codeDocument, &cppTokeniser)); editor->loadContent ("\n" "/* Code editor demo!\n" "\n" " To see a real-world example of the code editor\n" " in action, try the Introjucer!\n" "\n" "*/\n" "\n"); // Create a file chooser control to load files into it.. addAndMakeVisible (fileChooser); fileChooser.addListener (this); } ~CodeEditorDemo() { fileChooser.removeListener (this); } void paint (Graphics& g) override { g.fillAll (Colours::lightgrey); } void resized() override { Rectangle r (getLocalBounds().reduced (8)); fileChooser.setBounds (r.removeFromTop (25)); editor->setBounds (r.withTrimmedTop (8)); } private: // this is the document that the editor component is showing CodeDocument codeDocument; // this is a tokeniser to apply the C++ syntax highlighting CPlusPlusCodeTokeniser cppTokeniser; // the editor component ScopedPointer editor; FilenameComponent fileChooser; void filenameComponentChanged (FilenameComponent*) override { editor->loadContent (fileChooser.getCurrentFile().loadFileAsString()); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CodeEditorDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Code Editor"); JUCE-4.1.0/examples/Demo/Source/Demos/ComponentTransformsDemo.cpp000066400000000000000000000123341263452017400246140ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class ComponentTransformsDemo : public Component { public: ComponentTransformsDemo() { addAndMakeVisible (content = createContentComp()); content->setSize (800, 600); for (int i = 0; i < 3; ++i) { CornerDragger* d = new CornerDragger(); draggers.add (d); addAndMakeVisible (d); } draggers.getUnchecked(0)->relativePos = Point (0.10f, 0.15f); draggers.getUnchecked(1)->relativePos = Point (0.95f, 0.05f); draggers.getUnchecked(2)->relativePos = Point (0.05f, 0.85f); } void paint (Graphics& g) override { fillStandardDemoBackground (g); g.setColour (Colours::white); g.setFont (15.0f); g.drawFittedText ("Drag the corner-points around to show how complex components can have affine-transforms applied...", getLocalBounds().removeFromBottom (40).reduced (10, 0), Justification::centred, 3); } void resized() override { for (int i = 0; i < 3; ++i) { CornerDragger* d = draggers.getUnchecked(i); d->setCentrePosition (proportionOfWidth (d->relativePos.x), proportionOfHeight (d->relativePos.y)); } } void childBoundsChanged (Component* child) override { if (dynamic_cast (child) != nullptr) updateTransform(); } private: ScopedPointer content; static Component* createContentComp() { Array& demos (JuceDemoTypeBase::getDemoTypeList()); for (int i = 0; i < demos.size(); ++i) if (demos.getUnchecked(i)->name.containsIgnoreCase ("Widgets")) return demos.getUnchecked (i)->createComponent(); jassertfalse; return nullptr; } struct CornerDragger : public Component { CornerDragger() { setSize (30, 30); setRepaintsOnMouseActivity (true); } void paint (Graphics& g) override { g.setColour (Colours::white.withAlpha (isMouseOverOrDragging() ? 0.9f : 0.5f)); g.fillEllipse (getLocalBounds().reduced (3).toFloat()); g.setColour (Colours::darkgreen); g.drawEllipse (getLocalBounds().reduced (3).toFloat(), 2.0f); } void resized() override { constrainer.setMinimumOnscreenAmounts (getHeight(), getWidth(), getHeight(), getWidth()); } void moved() override { if (isMouseButtonDown()) relativePos = getBounds().getCentre().toFloat() / Point (getParentWidth(), getParentHeight()).toFloat(); } void mouseDown (const MouseEvent& e) override { dragger.startDraggingComponent (this, e); } void mouseDrag (const MouseEvent& e) override { dragger.dragComponent (this, e, &constrainer); } Point relativePos; private: ComponentBoundsConstrainer constrainer; ComponentDragger dragger; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CornerDragger) }; OwnedArray draggers; Point getDraggerPos (int index) const { return draggers.getUnchecked(index)->getBounds().getCentre().toFloat(); } void updateTransform() { const Point p0 (getDraggerPos(0)); const Point p1 (getDraggerPos(1)); const Point p2 (getDraggerPos(2)); if (p0 != p1 && p1 != p2 && p0 != p2) content->setTransform (AffineTransform::fromTargetPoints (0, 0, p0.x, p0.y, (float) content->getWidth(), 0, p1.x, p1.y, 0, (float) content->getHeight(), p2.x, p2.y)); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComponentTransformsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Transforms"); JUCE-4.1.0/examples/Demo/Source/Demos/CryptographyDemo.cpp000066400000000000000000000177701263452017400232770ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" class RSAComponent : public Component, private Button::Listener { public: RSAComponent() { addAndMakeVisible (rsaGroup); rsaGroup.setText ("RSA Encryption"); rsaGroup.setColour (GroupComponent::outlineColourId, Colours::grey); rsaGroup.setColour (GroupComponent::textColourId, Colours::white); bitSizeLabel.setText ("Num Bits to Use:", dontSendNotification); bitSizeLabel.attachToComponent (&bitSize, true); addAndMakeVisible (bitSize); bitSize.setText (String (256)); addAndMakeVisible (generateRSAButton); generateRSAButton.setButtonText ("Generate RSA"); generateRSAButton.addListener (this); addAndMakeVisible (rsaResultBox); rsaResultBox.setColour (TextEditor::backgroundColourId, Colours::white.withAlpha (0.5f)); rsaResultBox.setReadOnly (true); rsaResultBox.setMultiLine (true); } void resized() override { Rectangle area (getLocalBounds()); rsaGroup.setBounds (area); area.removeFromTop (10); area.reduce (5, 5); Rectangle topArea (area.removeFromTop (34)); topArea.removeFromLeft (110); bitSize.setBounds (topArea.removeFromLeft (topArea.getWidth() / 2).reduced (5)); generateRSAButton.setBounds (topArea.reduced (5)); rsaResultBox.setBounds (area.reduced (5)); } private: void createRSAKey() { int bits = jlimit (32, 512, bitSize.getText().getIntValue()); bitSize.setText (String (bits), dontSendNotification); // Create a key-pair... RSAKey publicKey, privateKey; RSAKey::createKeyPair (publicKey, privateKey, bits); // Test the new key on a piece of data... BigInteger testValue; testValue.parseString ("1234567890abcdef", 16); BigInteger encodedValue (testValue); publicKey.applyToValue (encodedValue); BigInteger decodedValue (encodedValue); privateKey.applyToValue (decodedValue); // ..and show the results.. String message; message << "Number of bits: " << bits << newLine << "Public Key: " << publicKey.toString() << newLine << "Private Key: " << privateKey.toString() << newLine << newLine << "Test input: " << testValue.toString (16) << newLine << "Encoded: " << encodedValue.toString (16) << newLine << "Decoded: " << decodedValue.toString (16) << newLine; rsaResultBox.setText (message, false); } GroupComponent rsaGroup; TextButton generateRSAButton; Label bitSizeLabel; TextEditor bitSize, rsaResultBox; void buttonClicked (Button* buttonThatWasClicked) override { if (buttonThatWasClicked == &generateRSAButton) createRSAKey(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RSAComponent) }; //============================================================================== class HashesComponent : public Component, private TextEditor::Listener { public: HashesComponent() { addAndMakeVisible (hashGroup); hashGroup.setText ("Hashes"); hashGroup.setColour (GroupComponent::outlineColourId, Colours::grey); hashGroup.setColour (GroupComponent::textColourId, Colours::white); addAndMakeVisible (hashEntryBox); hashEntryBox.setMultiLine (true); hashEntryBox.setColour (TextEditor::backgroundColourId, Colours::white.withAlpha (0.5f)); hashEntryBox.setReturnKeyStartsNewLine (true); hashEntryBox.setText ("Type some text in this box and the resulting MD5, SHA and Whirlpool hashes will update below"); hashEntryBox.addListener (this); hashLabel1.setText ("Text to Hash:", dontSendNotification); hashLabel2.setText ("MD5 Result:", dontSendNotification); hashLabel3.setText ("SHA Result:", dontSendNotification); hashLabel4.setText ("Whirlpool Result:", dontSendNotification); hashLabel1.attachToComponent (&hashEntryBox, true); hashLabel2.attachToComponent (&md5Result, true); hashLabel3.attachToComponent (&shaResult, true); hashLabel4.attachToComponent (&whirlpoolResult, true); addAndMakeVisible (md5Result); addAndMakeVisible (shaResult); addAndMakeVisible (whirlpoolResult); updateHashes(); } void updateHashes() { String text = hashEntryBox.getText(); updateMD5Result (text.toUTF8()); updateSHA256Result (text.toUTF8()); updateWhirlpoolResult (text.toUTF8()); } void updateMD5Result (CharPointer_UTF8 text) { md5Result.setText (MD5 (text).toHexString(), dontSendNotification); } void updateSHA256Result (CharPointer_UTF8 text) { shaResult.setText (SHA256 (text).toHexString(), dontSendNotification); } void updateWhirlpoolResult (CharPointer_UTF8 text) { whirlpoolResult.setText (Whirlpool (text).toHexString(), dontSendNotification); } void resized() override { Rectangle area (getLocalBounds()); hashGroup.setBounds (area); area.removeFromLeft (120); area.removeFromTop (10); area.reduce (5, 5); whirlpoolResult.setBounds (area.removeFromBottom (34)); shaResult.setBounds (area.removeFromBottom (34)); md5Result.setBounds (area.removeFromBottom (34)); hashEntryBox.setBounds (area.reduced (5)); } private: GroupComponent hashGroup; TextEditor hashEntryBox; Label md5Result, shaResult, whirlpoolResult; Label hashLabel1, hashLabel2, hashLabel3, hashLabel4; void textEditorTextChanged (TextEditor&) override { updateHashes(); } void textEditorReturnKeyPressed (TextEditor&) override { updateHashes(); } void textEditorEscapeKeyPressed (TextEditor&) override { updateHashes(); } void textEditorFocusLost (TextEditor&) override { updateHashes(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (HashesComponent) }; //============================================================================== class CryptographyDemo : public Component { public: CryptographyDemo() { addAndMakeVisible (rsaDemo); addAndMakeVisible (hashDemo); } void paint (Graphics& g) override { g.fillAll (Colour::greyLevel (0.4f)); } void resized() override { Rectangle area (getLocalBounds()); rsaDemo.setBounds (area.removeFromTop (getHeight() / 2).reduced (5)); hashDemo.setBounds (area.reduced (5)); } private: RSAComponent rsaDemo; HashesComponent hashDemo; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CryptographyDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 Cryptography"); JUCE-4.1.0/examples/Demo/Source/Demos/DialogsDemo.cpp000066400000000000000000000334021263452017400221540ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class DemoBackgroundThread : public ThreadWithProgressWindow { public: DemoBackgroundThread() : ThreadWithProgressWindow ("busy doing some important things...", true, true) { setStatusMessage ("Getting ready..."); } void run() override { setProgress (-1.0); // setting a value beyond the range 0 -> 1 will show a spinning bar.. setStatusMessage ("Preparing to do some stuff..."); wait (2000); const int thingsToDo = 10; for (int i = 0; i < thingsToDo; ++i) { // must check this as often as possible, because this is // how we know if the user's pressed 'cancel' if (threadShouldExit()) return; // this will update the progress bar on the dialog box setProgress (i / (double) thingsToDo); setStatusMessage (String (thingsToDo - i) + " things left to do..."); wait (500); } setProgress (-1.0); // setting a value beyond the range 0 -> 1 will show a spinning bar.. setStatusMessage ("Finishing off the last few bits and pieces!"); wait (2000); } // This method gets called on the message thread once our thread has finished.. void threadComplete (bool userPressedCancel) override { if (userPressedCancel) { AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon, "Progress window", "You pressed cancel!"); } else { // thread finished normally.. AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon, "Progress window", "Thread finished ok!"); } // ..and clean up by deleting our thread object.. delete this; } }; //============================================================================== class DialogsDemo : public Component, private Button::Listener { public: enum DialogType { plainAlertWindow, warningAlertWindow, infoAlertWindow, questionAlertWindow, okCancelAlertWindow, extraComponentsAlertWindow, calloutBoxWindow, progressWindow, loadChooser, loadWithPreviewChooser, directoryChooser, saveChooser, numDialogs }; DialogsDemo() { setOpaque (true); addAndMakeVisible (nativeButton); nativeButton.setButtonText ("Use Native Windows"); nativeButton.addListener (this); static const char* windowNames[] = { "Plain Alert Window", "Alert Window With Warning Icon", "Alert Window With Info Icon", "Alert Window With Question Icon", "OK Cancel Alert Window", "Alert Window With Extra Components", "CalloutBox", "Thread With Progress Window", "'Load' File Browser", "'Load' File Browser With Image Preview", "'Choose Directory' File Browser", "'Save' File Browser" }; // warn in case we add any windows jassert (numElementsInArray (windowNames) == numDialogs); for (int i = 0; i < numDialogs; ++i) { TextButton* newButton = new TextButton(); windowButtons.add (newButton); addAndMakeVisible (newButton); newButton->setButtonText (windowNames[i]); newButton->addListener (this); } } ~DialogsDemo() { nativeButton.removeListener (this); for (int i = windowButtons.size(); --i >= 0;) if (TextButton* button = windowButtons.getUnchecked (i)) button->removeListener (this); } //============================================================================== void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle area (getLocalBounds().reduced (5, 15)); Rectangle topRow; for (int i = 0; i < windowButtons.size(); ++i) { if (topRow.getWidth() < 10 || i == loadChooser) topRow = area.removeFromTop (26); if (i == progressWindow) area.removeFromTop (20); windowButtons.getUnchecked (i) ->setBounds (topRow.removeFromLeft (area.getWidth() / 2).reduced (4, 2)); } area.removeFromTop (15); nativeButton.setBounds (area.removeFromTop (24)); } private: OwnedArray windowButtons; ToggleButton nativeButton; static void alertBoxResultChosen (int result, DialogsDemo*) { AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon, "Alert Box", "Result code: " + String (result)); } void showWindow (Component& button, DialogType type) { if (type >= plainAlertWindow && type <= questionAlertWindow) { AlertWindow::AlertIconType icon = AlertWindow::NoIcon; switch (type) { case warningAlertWindow: icon = AlertWindow::WarningIcon; break; case infoAlertWindow: icon = AlertWindow::InfoIcon; break; case questionAlertWindow: icon = AlertWindow::QuestionIcon; break; default: break; } AlertWindow::showMessageBoxAsync (icon, "This is an AlertWindow", "And this is the AlertWindow's message. Blah blah blah blah blah blah blah blah blah blah blah blah blah.", "OK"); } else if (type == okCancelAlertWindow) { AlertWindow::showOkCancelBox (AlertWindow::QuestionIcon, "This is an ok/cancel AlertWindow", "And this is the AlertWindow's message. Blah blah blah blah blah blah blah blah blah blah blah blah blah.", String(), String(), 0, ModalCallbackFunction::forComponent (alertBoxResultChosen, this)); } else if (type == calloutBoxWindow) { ColourSelector* colourSelector = new ColourSelector(); colourSelector->setName ("background"); colourSelector->setCurrentColour (findColour (TextButton::buttonColourId)); colourSelector->setColour (ColourSelector::backgroundColourId, Colours::transparentBlack); colourSelector->setSize (300, 400); CallOutBox::launchAsynchronously (colourSelector, button.getScreenBounds(), nullptr); } else if (type == extraComponentsAlertWindow) { #if JUCE_MODAL_LOOPS_PERMITTED AlertWindow w ("AlertWindow demo..", "This AlertWindow has a couple of extra components added to show how to add drop-down lists and text entry boxes.", AlertWindow::QuestionIcon); w.addTextEditor ("text", "enter some text here", "text field:"); const char* options[] = { "option 1", "option 2", "option 3", "option 4", nullptr }; w.addComboBox ("option", StringArray (options), "some options"); w.addButton ("OK", 1, KeyPress (KeyPress::returnKey, 0, 0)); w.addButton ("Cancel", 0, KeyPress (KeyPress::escapeKey, 0, 0)); if (w.runModalLoop() != 0) // is they picked 'ok' { // this is the item they chose in the drop-down list.. const int optionIndexChosen = w.getComboBoxComponent ("option")->getSelectedItemIndex(); (void) optionIndexChosen; // (just avoids a compiler warning about unused variables) // this is the text they entered.. String text = w.getTextEditorContents ("text"); } #endif } else if (type == progressWindow) { // This will launch our ThreadWithProgressWindow in a modal state. (Our subclass // will take care of deleting the object when the task has finished) (new DemoBackgroundThread())->launchThread(); } else if (type >= loadChooser && type <= saveChooser) { #if JUCE_MODAL_LOOPS_PERMITTED const bool useNativeVersion = nativeButton.getToggleState(); if (type == loadChooser) { FileChooser fc ("Choose a file to open...", File::getCurrentWorkingDirectory(), "*", useNativeVersion); if (fc.browseForMultipleFilesToOpen()) { String chosen; for (int i = 0; i < fc.getResults().size(); ++i) chosen << fc.getResults().getReference(i).getFullPathName() << "\n"; AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon, "File Chooser...", "You picked: " + chosen); } } else if (type == loadWithPreviewChooser) { ImagePreviewComponent imagePreview; imagePreview.setSize (200, 200); FileChooser fc ("Choose an image to open...", File::getSpecialLocation (File::userPicturesDirectory), "*.jpg;*.jpeg;*.png;*.gif", useNativeVersion); if (fc.browseForMultipleFilesToOpen (&imagePreview)) { String chosen; for (int i = 0; i < fc.getResults().size(); ++i) chosen << fc.getResults().getReference (i).getFullPathName() << "\n"; AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon, "File Chooser...", "You picked: " + chosen); } } else if (type == saveChooser) { FileChooser fc ("Choose a file to save...", File::getCurrentWorkingDirectory(), "*", useNativeVersion); if (fc.browseForFileToSave (true)) { File chosenFile = fc.getResult(); AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon, "File Chooser...", "You picked: " + chosenFile.getFullPathName()); } } else if (type == directoryChooser) { FileChooser fc ("Choose a directory...", File::getCurrentWorkingDirectory(), "*", useNativeVersion); if (fc.browseForDirectory()) { File chosenDirectory = fc.getResult(); AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon, "File Chooser...", "You picked: " + chosenDirectory.getFullPathName()); } } #endif } } void buttonClicked (Button* button) override { if (button == &nativeButton) { getLookAndFeel().setUsingNativeAlertWindows (nativeButton.getToggleState()); return; } for (int i = windowButtons.size(); --i >= 0;) if (button == windowButtons.getUnchecked (i)) return showWindow (*button, static_cast (i)); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DialogsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Dialog Boxes"); JUCE-4.1.0/examples/Demo/Source/Demos/FontsDemo.cpp000066400000000000000000000234241263452017400216660ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class FontsDemo : public Component, private ListBoxModel, private Slider::Listener, private Button::Listener, private ComboBox::Listener { public: FontsDemo() : heightLabel (String::empty, "Height:"), kerningLabel (String::empty, "Kerning:"), scaleLabel (String::empty, "Scale:"), styleLabel ("Style"), boldToggle ("Bold"), italicToggle ("Italic") { setOpaque (true); addAndMakeVisible (listBox); addAndMakeVisible (demoTextBox); addAndMakeVisible (heightSlider); addAndMakeVisible (heightLabel); addAndMakeVisible (kerningLabel); addAndMakeVisible (kerningSlider); addAndMakeVisible (scaleLabel); addAndMakeVisible (scaleSlider); addAndMakeVisible (boldToggle); addAndMakeVisible (italicToggle); addAndMakeVisible (styleBox); kerningLabel.attachToComponent (&kerningSlider, true); heightLabel.attachToComponent (&heightSlider, true); scaleLabel.attachToComponent (&scaleSlider, true); styleLabel.attachToComponent (&styleBox, true); heightSlider.addListener (this); kerningSlider.addListener (this); scaleSlider.addListener (this); boldToggle.addListener (this); italicToggle.addListener (this); styleBox.addListener (this); Font::findFonts (fonts); // Generate the list of fonts listBox.setRowHeight (20); listBox.setModel (this); // Tell the listbox where to get its data model heightSlider.setRange (3.0, 150.0, 0.01); scaleSlider.setRange (0.2, 3.0, 0.01); kerningSlider.setRange (-2.0, 2.0, 0.01); scaleSlider.setValue (1.0); // Set some initial values for the sliders. heightSlider.setValue (20.0); kerningSlider.setValue (0); // set up the layout and resizer bars.. verticalLayout.setItemLayout (0, -0.2, -0.8, -0.35); // width of the font list must be // between 20% and 80%, preferably 50% verticalLayout.setItemLayout (1, 8, 8, 8); // the vertical divider drag-bar thing is always 8 pixels wide verticalLayout.setItemLayout (2, 150, -1.0, -0.65); // the components on the right must be // at least 150 pixels wide, preferably 50% of the total width verticalDividerBar = new StretchableLayoutResizerBar (&verticalLayout, 1, true); addAndMakeVisible (verticalDividerBar); // ..and pick a random font to select intially listBox.selectRow (Random::getSystemRandom().nextInt (fonts.size())); demoTextBox.setMultiLine (true); demoTextBox.setReturnKeyStartsNewLine (true); demoTextBox.setText ("Aa Bb Cc Dd Ee Ff Gg Hh Ii\n" "Jj Kk Ll Mm Nn Oo Pp Qq Rr\n" "Ss Tt Uu Vv Ww Xx Yy Zz\n" "0123456789\n\n" "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt " "ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco " "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in " "voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."); demoTextBox.setCaretPosition (0); } //============================================================================== void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (5)); // lay out the list box and vertical divider.. Component* vcomps[] = { &listBox, verticalDividerBar, nullptr }; verticalLayout.layOutComponents (vcomps, 3, r.getX(), r.getY(), r.getWidth(), r.getHeight(), false, // lay out side-by-side true); // resize the components' heights as well as widths r.removeFromLeft (verticalDividerBar->getRight()); styleBox.setBounds (r.removeFromBottom (26)); r.removeFromBottom (8); const int labelWidth = 60; Rectangle row (r.removeFromBottom (30)); row.removeFromLeft (labelWidth); boldToggle.setBounds (row.removeFromLeft (row.getWidth() / 2)); italicToggle.setBounds (row); r.removeFromBottom (8); scaleSlider.setBounds (r.removeFromBottom (30).withTrimmedLeft (labelWidth)); r.removeFromBottom (8); kerningSlider.setBounds (r.removeFromBottom (30).withTrimmedLeft (labelWidth)); r.removeFromBottom (8); heightSlider.setBounds (r.removeFromBottom (30).withTrimmedLeft (labelWidth)); r.removeFromBottom (8); demoTextBox.setBounds (r); } void sliderValueChanged (Slider* sliderThatWasMoved) override { if (sliderThatWasMoved == &heightSlider) refreshPreviewBoxFont(); else if (sliderThatWasMoved == &kerningSlider) refreshPreviewBoxFont(); else if (sliderThatWasMoved == &scaleSlider) refreshPreviewBoxFont(); } void buttonClicked (Button* buttonThatWasClicked) override { if (buttonThatWasClicked == &boldToggle) refreshPreviewBoxFont(); else if (buttonThatWasClicked == &italicToggle) refreshPreviewBoxFont(); } // The following methods implement the ListBoxModel virtual methods: int getNumRows() override { return fonts.size(); } void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) override { if (rowIsSelected) g.fillAll (Colours::lightblue); Font font (fonts [rowNumber]); AttributedString s; s.setWordWrap (AttributedString::none); s.setJustification (Justification::centredLeft); s.append (font.getTypefaceName(), font.withPointHeight (height * 0.7f), Colours::black); s.append (" " + font.getTypefaceName(), Font (height * 0.5f, Font::italic), Colours::grey); s.draw (g, Rectangle (width, height).expanded (-4, 50).toFloat()); } void selectedRowsChanged (int /*lastRowselected*/) override { refreshPreviewBoxFont(); } private: Array fonts; StringArray currentStyleList; ListBox listBox; TextEditor demoTextBox; Label heightLabel, kerningLabel, scaleLabel, styleLabel; Slider heightSlider, kerningSlider, scaleSlider; ToggleButton boldToggle, italicToggle; ComboBox styleBox; StretchableLayoutManager verticalLayout; ScopedPointer verticalDividerBar; void refreshPreviewBoxFont() { const bool bold = boldToggle.getToggleState(); const bool italic = italicToggle.getToggleState(); const bool useStyle = ! (bold || italic); Font font (fonts [listBox.getSelectedRow()]); font = font.withPointHeight ((float) heightSlider.getValue()) .withExtraKerningFactor ((float) kerningSlider.getValue()) .withHorizontalScale ((float) scaleSlider.getValue()); if (bold) font = font.boldened(); if (italic) font = font.italicised(); updateStylesList (font); styleBox.setEnabled (useStyle); if (useStyle) font = font.withTypefaceStyle (styleBox.getText()); demoTextBox.applyFontToAllText (font); } void updateStylesList (const Font& newFont) { const StringArray newStyles (newFont.getAvailableStyles()); if (newStyles != currentStyleList) { currentStyleList = newStyles; styleBox.clear(); styleBox.addItemList (newStyles, 1); styleBox.setSelectedItemIndex (0); } } void comboBoxChanged (ComboBox* box) override { if (box == &styleBox) refreshPreviewBoxFont(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FontsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("20 Graphics: Fonts"); JUCE-4.1.0/examples/Demo/Source/Demos/GraphicsDemo.cpp000066400000000000000000000615571263452017400223460ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" /** Holds the various toggle buttons for the animation modes. */ class ControllersComponent : public Component { public: ControllersComponent() { setOpaque (true); initialiseToggle (animatePosition, "Animate Position", true); initialiseToggle (animateRotation, "Animate Rotation", true); initialiseToggle (animateSize, "Animate Size", false); initialiseToggle (animateShear, "Animate Shearing", false); initialiseToggle (animateAlpha, "Animate Alpha", false); initialiseToggle (clipToRectangle, "Clip to Rectangle", false); initialiseToggle (clipToPath, "Clip to Path", false); initialiseToggle (clipToImage, "Clip to Image", false); initialiseToggle (quality, "Higher quality image interpolation", false); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (4)); int buttonHeight = 22; Rectangle columns (r.removeFromTop (buttonHeight * 4)); Rectangle col (columns.removeFromLeft (200)); animatePosition.setBounds (col.removeFromTop (buttonHeight)); animateRotation.setBounds (col.removeFromTop (buttonHeight)); animateSize.setBounds (col.removeFromTop (buttonHeight)); animateShear.setBounds (col.removeFromTop (buttonHeight)); columns.removeFromLeft (20); col = columns.removeFromLeft (200); animateAlpha.setBounds (col.removeFromTop (buttonHeight)); clipToRectangle.setBounds (col.removeFromTop (buttonHeight)); clipToPath.setBounds (col.removeFromTop (buttonHeight)); clipToImage.setBounds (col.removeFromTop (buttonHeight)); r.removeFromBottom (6); quality.setBounds (r.removeFromTop (buttonHeight)); } void initialiseToggle (ToggleButton& b, const char* name, bool on) { addAndMakeVisible (b); b.setButtonText (name); b.setToggleState (on, dontSendNotification); } ToggleButton animateRotation, animatePosition, animateAlpha, animateSize, animateShear; ToggleButton clipToRectangle, clipToPath, clipToImage, quality; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ControllersComponent) }; //============================================================================== class GraphicsDemoBase : public Component { public: GraphicsDemoBase (ControllersComponent& cc, const String& name) : Component (name), controls (cc), lastRenderStartTime (0), averageTimeMs (0), averageActualFPS (0) { displayFont = Font (Font::getDefaultMonospacedFontName(), 12.0f, Font::bold); } AffineTransform getTransform() { const float hw = 0.5f * getWidth(); const float hh = 0.5f * getHeight(); AffineTransform t; if (controls.animateRotation.getToggleState()) t = t.rotated (rotation.getValue() * float_Pi * 2.0f); if (controls.animateSize.getToggleState()) t = t.scaled (0.3f + size.getValue() * 2.0f); if (controls.animatePosition.getToggleState()) t = t.translated (hw + hw * (offsetX.getValue() - 0.5f), hh + hh * (offsetY.getValue() - 0.5f)); else t = t.translated (hw, hh); if (controls.animateShear.getToggleState()) t = t.sheared (shear.getValue() * 2.0f - 1.0f, 0.0f); return t; } float getAlpha() const { if (controls.animateAlpha.getToggleState()) return alpha.getValue(); return 1.0f; } void paint (Graphics& g) override { double startTime = 0.0; { // A ScopedSaveState will return the Graphics context to the state it was at the time of // construction when it goes out of scope. We use it here to avoid clipping the fps text const Graphics::ScopedSaveState state (g); if (controls.clipToRectangle.getToggleState()) clipToRectangle (g); if (controls.clipToPath .getToggleState()) clipToPath (g); if (controls.clipToImage .getToggleState()) clipToImage (g); g.setImageResamplingQuality (controls.quality.getToggleState() ? Graphics::highResamplingQuality : Graphics::mediumResamplingQuality); // take a note of the time before the render startTime = Time::getMillisecondCounterHiRes(); // then let the demo draw itself.. drawDemo (g); } double now = Time::getMillisecondCounterHiRes(); double filtering = 0.08; const double elapsedMs = now - startTime; averageTimeMs += (elapsedMs - averageTimeMs) * filtering; const double sinceLastRender = now - lastRenderStartTime; lastRenderStartTime = now; const double effectiveFPS = 1000.0 / averageTimeMs; const double actualFPS = sinceLastRender > 0 ? (1000.0 / sinceLastRender) : 0; averageActualFPS += (actualFPS - averageActualFPS) * filtering; GlyphArrangement ga; ga.addFittedText (displayFont, "Time: " + String (averageTimeMs, 2) + " ms\nEffective FPS: " + String (effectiveFPS, 1) + "\nActual FPS: " + String (averageActualFPS, 1), 0, 10.0f, getWidth() - 10.0f, (float) getHeight(), Justification::topRight, 3); g.setColour (Colours::white.withAlpha (0.5f)); g.fillRect (ga.getBoundingBox (0, ga.getNumGlyphs(), true).getSmallestIntegerContainer().expanded (4)); g.setColour (Colours::black); ga.draw (g); } virtual void drawDemo (Graphics&) = 0; void clipToRectangle (Graphics& g) { int w = getWidth() / 2; int h = getHeight() / 2; int x = (int) (w * clipRectX.getValue()); int y = (int) (h * clipRectY.getValue()); g.reduceClipRegion (x, y, w, h); } void clipToPath (Graphics& g) { float pathSize = (float) jmin (getWidth(), getHeight()); Path p; p.addStar (Point (clipPathX.getValue(), clipPathY.getValue()) * pathSize, 7, pathSize * (0.5f + clipPathDepth.getValue()), pathSize * 0.5f, clipPathAngle.getValue()); g.reduceClipRegion (p, AffineTransform::identity); } void clipToImage (Graphics& g) { if (! clipImage.isValid()) createClipImage(); AffineTransform transform (AffineTransform::translation (clipImage.getWidth() / -2.0f, clipImage.getHeight() / -2.0f) .rotated (clipImageAngle.getValue() * float_Pi * 2.0f) .scaled (2.0f + clipImageSize.getValue() * 3.0f) .translated (getWidth() * 0.5f, getHeight() * 0.5f)); g.reduceClipRegion (clipImage, transform); } void createClipImage() { clipImage = Image (Image::ARGB, 300, 300, true); Graphics g (clipImage); g.setGradientFill (ColourGradient (Colours::transparentBlack, 0, 0, Colours::black, 0, 300, false)); for (int i = 0; i < 20; ++i) g.fillRect (Random::getSystemRandom().nextInt (200), Random::getSystemRandom().nextInt (200), Random::getSystemRandom().nextInt (100), Random::getSystemRandom().nextInt (100)); } //============================================================================== ControllersComponent& controls; SlowerBouncingNumber offsetX, offsetY, rotation, size, shear, alpha, clipRectX, clipRectY, clipPathX, clipPathY, clipPathDepth, clipPathAngle, clipImageX, clipImageY, clipImageAngle, clipImageSize; double lastRenderStartTime, averageTimeMs, averageActualFPS; Image clipImage; Font displayFont; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GraphicsDemoBase) }; //============================================================================== class RectangleFillTypesDemo : public GraphicsDemoBase { public: RectangleFillTypesDemo (ControllersComponent& cc) : GraphicsDemoBase (cc, "Fill Types: Rectangles"), colour1 (Colours::red), colour2 (Colours::green) { } void drawDemo (Graphics& g) override { g.addTransform (getTransform()); const int rectSize = jmin (getWidth(), getHeight()) / 2 - 20; g.setColour (colour1.withAlpha (getAlpha())); g.fillRect (-rectSize, -rectSize, rectSize, rectSize); g.setGradientFill (ColourGradient (colour1, 10.0f, (float) -rectSize, colour2, 10.0f + rectSize, 0.0f, false)); g.setOpacity (getAlpha()); g.fillRect (10, -rectSize, rectSize, rectSize); g.setGradientFill (ColourGradient (colour1, rectSize * -0.5f, 10.0f + rectSize * 0.5f, colour2, 0, 10.0f + rectSize, true)); g.setOpacity (getAlpha()); g.fillRect (-rectSize, 10, rectSize, rectSize); g.setGradientFill (ColourGradient (colour1, 10.0f, 10.0f, colour2, 10.0f + rectSize, 10.0f + rectSize, false)); g.setOpacity (getAlpha()); g.drawRect (10, 10, rectSize, rectSize, 5); } Colour colour1, colour2; }; //============================================================================== class PathsDemo : public GraphicsDemoBase { public: PathsDemo (ControllersComponent& cc, bool linear, bool radial) : GraphicsDemoBase (cc, String ("Paths") + (radial ? ": Radial Gradients" : (linear ? ": Linear Gradients" : ": Solid"))), useLinearGradient (linear), useRadialGradient (radial) { logoPath = MainAppWindow::getJUCELogoPath(); // rescale the logo path so that it's centred about the origin and has the right size. logoPath.applyTransform (RectanglePlacement (RectanglePlacement::centred) .getTransformToFit (logoPath.getBounds(), Rectangle (-120.0f, -120.0f, 240.0f, 240.0f))); // Surround it with some other shapes.. logoPath.addStar (Point (-300.0f, -50.0f), 7, 30.0f, 70.0f, 0.1f); logoPath.addStar (Point (300.0f, 50.0f), 6, 40.0f, 70.0f, 0.1f); logoPath.addEllipse (-100.0f, 150.0f, 200.0f, 140.0f); logoPath.addRectangle (-100.0f, -280.0f, 200.0f, 140.0f); } void drawDemo (Graphics& g) override { const Path& p = logoPath; if (useLinearGradient || useRadialGradient) { Colour c1 (gradientColours[0].getValue(), gradientColours[1].getValue(), gradientColours[2].getValue(), 1.0f); Colour c2 (gradientColours[3].getValue(), gradientColours[4].getValue(), gradientColours[5].getValue(), 1.0f); Colour c3 (gradientColours[6].getValue(), gradientColours[7].getValue(), gradientColours[8].getValue(), 1.0f); float x1 = gradientPositions[0].getValue() * getWidth() * 0.25f; float y1 = gradientPositions[1].getValue() * getHeight() * 0.25f; float x2 = gradientPositions[2].getValue() * getWidth() * 0.75f; float y2 = gradientPositions[3].getValue() * getHeight() * 0.75f; ColourGradient gradient (c1, x1, y1, c2, x2, y2, useRadialGradient); gradient.addColour (gradientIntermediate.getValue(), c3); g.setGradientFill (gradient); } else { g.setColour (Colours::blue); } g.setOpacity (getAlpha()); g.fillPath (p, getTransform()); } Path logoPath; bool useLinearGradient, useRadialGradient; SlowerBouncingNumber gradientColours[9], gradientPositions[4], gradientIntermediate; }; //============================================================================== class StrokesDemo : public GraphicsDemoBase { public: StrokesDemo (ControllersComponent& cc) : GraphicsDemoBase (cc, "Paths: Stroked") { } void drawDemo (Graphics& g) override { float w = (float) getWidth(); float h = (float) getHeight(); Path p; p.startNewSubPath (points[0].getValue() * w, points[1].getValue() * h); for (int i = 2; i < numElementsInArray (points); i += 4) p.quadraticTo (points[i].getValue() * w, points[i + 1].getValue() * h, points[i + 2].getValue() * w, points[i + 3].getValue() * h); p.closeSubPath(); PathStrokeType stroke (0.5f + 10.0f * thickness.getValue()); g.setColour (Colours::purple.withAlpha (getAlpha())); g.strokePath (p, stroke, AffineTransform::identity); } SlowerBouncingNumber points[2 + 4 * 8], thickness; }; //============================================================================== class ImagesRenderingDemo : public GraphicsDemoBase { public: ImagesRenderingDemo (ControllersComponent& cc, bool argb_, bool tiled_) : GraphicsDemoBase (cc, String ("Images") + (argb_ ? ": ARGB" : ": RGB") + (tiled_ ? " Tiled" : String::empty )), isArgb (argb_), isTiled (tiled_) { argbImage = ImageFileFormat::loadFrom (BinaryData::juce_icon_png, (size_t) BinaryData::juce_icon_pngSize); rgbImage = ImageFileFormat::loadFrom (BinaryData::portmeirion_jpg, (size_t) BinaryData::portmeirion_jpgSize); } void drawDemo (Graphics& g) override { Image image = isArgb ? argbImage : rgbImage; AffineTransform transform (AffineTransform::translation ((float) (image.getWidth() / -2), (float) (image.getHeight() / -2)) .followedBy (getTransform())); if (isTiled) { FillType fill (image, transform); fill.setOpacity (getAlpha()); g.setFillType (fill); g.fillAll(); } else { g.setOpacity (getAlpha()); g.drawImageTransformed (image, transform, false); } } bool isArgb, isTiled; Image rgbImage, argbImage; }; //============================================================================== class GlyphsDemo : public GraphicsDemoBase { public: GlyphsDemo (ControllersComponent& cc) : GraphicsDemoBase (cc, "Glyphs") { glyphs.addFittedText (Font (20.0f), "The Quick Brown Fox Jumped Over The Lazy Dog", -120, -50, 240, 100, Justification::centred, 2, 1.0f); } void drawDemo (Graphics& g) override { g.setColour (Colours::black.withAlpha (getAlpha())); glyphs.draw (g, getTransform()); } GlyphArrangement glyphs; }; //============================================================================== class SVGDemo : public GraphicsDemoBase { public: SVGDemo (ControllersComponent& cc) : GraphicsDemoBase (cc, "SVG") { createSVGDrawable(); } void drawDemo (Graphics& g) override { if (Time::getCurrentTime().toMilliseconds() > lastSVGLoadTime.toMilliseconds() + 2000) createSVGDrawable(); svgDrawable->draw (g, getAlpha(), getTransform()); } void createSVGDrawable() { lastSVGLoadTime = Time::getCurrentTime(); MemoryInputStream iconsFileStream (BinaryData::icons_zip, BinaryData::icons_zipSize, false); ZipFile icons (&iconsFileStream, false); // Load a random SVG file from our embedded icons.zip file. const ScopedPointer svgFileStream (icons.createStreamForEntry (Random::getSystemRandom().nextInt (icons.getNumEntries()))); if (svgFileStream != nullptr) { svgDrawable = dynamic_cast (Drawable::createFromImageDataStream (*svgFileStream)); if (svgDrawable != nullptr) { // to make our icon the right size, we'll set its bounding box to the size and position that we want. svgDrawable->setBoundingBox (RelativeParallelogram (Point (-100, -100), Point (100, -100), Point (-100, 100))); } } } Time lastSVGLoadTime; ScopedPointer svgDrawable; }; //============================================================================== class LinesDemo : public GraphicsDemoBase { public: LinesDemo (ControllersComponent& cc) : GraphicsDemoBase (cc, "Lines") { } void drawDemo (Graphics& g) override { { RectangleList verticalLines; verticalLines.ensureStorageAllocated (getWidth()); float pos = offset.getValue(); for (int x = 0; x < getWidth(); ++x) { float y = getHeight() * 0.3f; float length = y * std::abs (std::sin (x / 100.0f + 2.0f * pos)); verticalLines.addWithoutMerging (Rectangle ((float) x, y - length * 0.5f, 1.0f, length)); } g.setColour (Colours::blue.withAlpha (getAlpha())); g.fillRectList (verticalLines); } { RectangleList horizontalLines; horizontalLines.ensureStorageAllocated (getHeight()); float pos = offset.getValue(); for (int y = 0; y < getHeight(); ++y) { float x = getWidth() * 0.3f; float length = x * std::abs (std::sin (y / 100.0f + 2.0f * pos)); horizontalLines.addWithoutMerging (Rectangle (x - length * 0.5f, (float) y, length, 1.0f)); } g.setColour (Colours::green.withAlpha (getAlpha())); g.fillRectList (horizontalLines); } g.setColour (Colours::red.withAlpha (getAlpha())); const float w = (float) getWidth(); const float h = (float) getHeight(); g.drawLine (positions[0].getValue() * w, positions[1].getValue() * h, positions[2].getValue() * w, positions[3].getValue() * h); g.drawLine (positions[4].getValue() * w, positions[5].getValue() * h, positions[6].getValue() * w, positions[7].getValue() * h); } SlowerBouncingNumber offset, positions[8]; }; //============================================================================== class DemoHolderComponent : public Component, private Timer { public: DemoHolderComponent() : currentDemo (nullptr) { setOpaque (true); } void paint (Graphics& g) { g.fillCheckerBoard (getLocalBounds(), 48, 48, Colours::lightgrey, Colours::white); } void timerCallback() { if (currentDemo != nullptr) currentDemo->repaint(); } void setDemo (GraphicsDemoBase* newDemo) { if (currentDemo != nullptr) removeChildComponent (currentDemo); currentDemo = newDemo; if (currentDemo != nullptr) { addAndMakeVisible (currentDemo); startTimerHz (60); resized(); } } void resized() { if (currentDemo != nullptr) currentDemo->setBounds (getLocalBounds()); } private: GraphicsDemoBase* currentDemo; }; //============================================================================== class TestListComponent : public Component, private ListBoxModel { public: TestListComponent (DemoHolderComponent& holder, ControllersComponent& controls) : demoHolder (holder) { demos.add (new PathsDemo (controls, false, true)); demos.add (new PathsDemo (controls, true, false)); demos.add (new PathsDemo (controls, false, false)); demos.add (new RectangleFillTypesDemo (controls)); demos.add (new StrokesDemo (controls)); demos.add (new ImagesRenderingDemo (controls, false, false)); demos.add (new ImagesRenderingDemo (controls, false, true)); demos.add (new ImagesRenderingDemo (controls, true, false)); demos.add (new ImagesRenderingDemo (controls, true, true)); demos.add (new GlyphsDemo (controls)); demos.add (new SVGDemo (controls)); demos.add (new LinesDemo (controls)); addAndMakeVisible (listBox); listBox.setModel (this); listBox.selectRow (0); listBox.setColour (ListBox::backgroundColourId, Colour::greyLevel (0.9f)); } void resized() { listBox.setBounds (getLocalBounds()); } int getNumRows() { return demos.size(); } void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) { Component* demo = demos [rowNumber]; if (demo != nullptr) { if (rowIsSelected) g.fillAll (findColour (TextEditor::highlightColourId)); g.setColour (Colours::black); g.setFont (14.0f); g.drawFittedText (demo->getName(), 8, 0, width - 10, height, Justification::centredLeft, 2); } } void selectedRowsChanged (int lastRowSelected) { demoHolder.setDemo (demos [lastRowSelected]); } private: DemoHolderComponent& demoHolder; ListBox listBox; OwnedArray demos; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TestListComponent) }; //============================================================================== class GraphicsDemo : public Component { public: GraphicsDemo() : testList (demoHolder, controllersComponent) { setOpaque (true); addAndMakeVisible (demoHolder); addAndMakeVisible (controllersComponent); addAndMakeVisible (performanceDisplay); addAndMakeVisible (testList); } void paint (Graphics& g) override { g.fillAll (Colours::grey); } void resized() override { Rectangle area (getLocalBounds()); controllersComponent.setBounds (area.removeFromBottom (150)); testList.setBounds (area.removeFromRight (150)); demoHolder.setBounds (area); performanceDisplay.setBounds (area.removeFromTop (20).removeFromRight (100)); } private: ControllersComponent controllersComponent; DemoHolderComponent demoHolder; Label performanceDisplay; TestListComponent testList; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GraphicsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("20 Graphics: 2D Rendering"); JUCE-4.1.0/examples/Demo/Source/Demos/ImagesDemo.cpp000066400000000000000000000114411263452017400217760ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class ImagesDemo : public Component, public FileBrowserListener { public: ImagesDemo() : imagesWildcardFilter ("*.jpeg;*.jpg;*.png;*.gif", "*", "Image File Filter"), directoryThread ("Image File Scanner Thread"), imageList (&imagesWildcardFilter, directoryThread), fileTree (imageList), resizerBar (&stretchableManager, 1, false) { setOpaque (true); imageList.setDirectory (File::getSpecialLocation (File::userPicturesDirectory), true, true); directoryThread.startThread (1); fileTree.addListener (this); fileTree.setColour (TreeView::backgroundColourId, Colours::lightgrey.withAlpha (0.6f)); addAndMakeVisible (fileTree); addAndMakeVisible (resizerBar); addAndMakeVisible (imagePreview); // we have to set up our StretchableLayoutManager so it know the limits and preferred sizes of it's contents stretchableManager.setItemLayout (0, // for the fileTree -0.1, -0.9, // must be between 50 pixels and 90% of the available space -0.3); // and its preferred size is 30% of the total available space stretchableManager.setItemLayout (1, // for the resize bar 5, 5, 5); // hard limit to 5 pixels stretchableManager.setItemLayout (2, // for the imagePreview -0.1, -0.9, // size must be between 50 pixels and 90% of the available space -0.7); // and its preferred size is 70% of the total available space } ~ImagesDemo() { fileTree.removeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (4)); // make a list of two of our child components that we want to reposition Component* comps[] = { &fileTree, &resizerBar, &imagePreview }; // this will position the 3 components, one above the other, to fit // vertically into the rectangle provided. stretchableManager.layOutComponents (comps, 3, r.getX(), r.getY(), r.getWidth(), r.getHeight(), true, true); } private: WildcardFileFilter imagesWildcardFilter; TimeSliceThread directoryThread; DirectoryContentsList imageList; FileTreeComponent fileTree; ImageComponent imagePreview; StretchableLayoutManager stretchableManager; StretchableLayoutResizerBar resizerBar; void selectionChanged() override { // we're only really interested in when the selection changes, regardless of if it was // clicked or not so we'll only override this method const File selectedFile (fileTree.getSelectedFile()); if (selectedFile.existsAsFile()) imagePreview.setImage (ImageCache::getFromFile (selectedFile)); // the image cahce is a handly way to load images from files or directly from memory and // will keep them hanging around for a few seconds in case they are requested elsewhere } void fileClicked (const File&, const MouseEvent&) override {} void fileDoubleClicked (const File&) override {} void browserRootChanged (const File&) override {} JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ImagesDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("20 Graphics: Image formats"); JUCE-4.1.0/examples/Demo/Source/Demos/JavaScript.cpp000066400000000000000000000123611263452017400220340ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class JavaScriptDemo : public Component, private CodeDocument::Listener, private Timer { public: JavaScriptDemo() { setOpaque (true); addAndMakeVisible (editor = new CodeEditorComponent (codeDocument, nullptr)); editor->setFont (Font (Font::getDefaultMonospacedFontName(), 14.0f, Font::plain)); editor->setTabSize (4, true); outputDisplay.setMultiLine (true); outputDisplay.setReadOnly (true); outputDisplay.setCaretVisible (false); outputDisplay.setFont (Font (Font::getDefaultMonospacedFontName(), 14.0f, Font::plain)); addAndMakeVisible (outputDisplay); codeDocument.addListener (this); editor->loadContent ( "/*\n" " Javascript! In this simple demo, the native\n" " code provides an object called \'Demo\' which\n" " has a method \'print\' that writes to the\n" " console below...\n" "*/\n" "\n" "Demo.print (\"Hello World in JUCE + Javascript!\");\n" "Demo.print (\"\");\n" "\n" "function factorial (n)\n" "{\n" " var total = 1;\n" " while (n > 0)\n" " total = total * n--;\n" " return total;\n" "}\n" "\n" "for (var i = 1; i < 10; ++i)\n" " Demo.print (\"Factorial of \" + i \n" " + \" = \" + factorial (i));\n"); } void runScript() { outputDisplay.clear(); JavascriptEngine engine; engine.maximumExecutionTime = RelativeTime::seconds (5); engine.registerNativeObject ("Demo", new DemoClass (*this)); const double startTime = Time::getMillisecondCounterHiRes(); Result result = engine.execute (codeDocument.getAllContent()); const double elapsedMs = Time::getMillisecondCounterHiRes() - startTime; if (result.failed()) outputDisplay.setText (result.getErrorMessage()); else outputDisplay.insertTextAtCaret ("\n(Execution time: " + String (elapsedMs, 2) + " milliseconds)"); } void consoleOutput (const String& message) { outputDisplay.moveCaretToEnd(); outputDisplay.insertTextAtCaret (message + newLine); } //============================================================================== // This class is used by the script, and provides methods that the JS can call. struct DemoClass : public DynamicObject { DemoClass (JavaScriptDemo& demo) : owner (demo) { setMethod ("print", print); } static Identifier getClassName() { return "Demo"; } static var print (const var::NativeFunctionArgs& args) { if (args.numArguments > 0) if (DemoClass* thisObject = dynamic_cast (args.thisObject.getObject())) thisObject->owner.consoleOutput (args.arguments[0].toString()); return var::undefined(); } JavaScriptDemo& owner; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoClass) }; void paint (Graphics& g) override { fillStandardDemoBackground (g); } private: CodeDocument codeDocument; ScopedPointer editor; TextEditor outputDisplay; void codeDocumentTextInserted (const String&, int) override { startTimer (300); } void codeDocumentTextDeleted (int, int) override { startTimer (300); } void timerCallback() override { stopTimer(); runScript(); } void resized() override { Rectangle r (getLocalBounds().reduced (8)); editor->setBounds (r.removeFromTop (proportionOfHeight (0.6f))); outputDisplay.setBounds (r.withTrimmedTop (8)); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JavaScriptDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 JavaScript"); JUCE-4.1.0/examples/Demo/Source/Demos/KeyMappingsDemo.cpp000066400000000000000000000034301263452017400230170ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class KeyMappingsDemo : public Component { public: KeyMappingsDemo() : keyMappingEditor (*MainAppWindow::getApplicationCommandManager().getKeyMappings(), true) { setOpaque (true); addAndMakeVisible (keyMappingEditor); } void paint (Graphics& g) override { g.fillAll (Colour::greyLevel (0.93f)); } void resized() override { keyMappingEditor.setBounds (getLocalBounds().reduced (4)); } private: KeyMappingEditorComponent keyMappingEditor; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (KeyMappingsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("01 Shortcut Keys"); JUCE-4.1.0/examples/Demo/Source/Demos/LiveConstantDemo.cpp000066400000000000000000000102721263452017400232030ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== struct LiveConstantDemoComponent : public Component { LiveConstantDemoComponent() {} void paint (Graphics& g) { g.fillAll (JUCE_LIVE_CONSTANT (Colour (0xffe5e7a7))); g.setColour (JUCE_LIVE_CONSTANT (Colours::red.withAlpha (0.2f))); int blockWidth = JUCE_LIVE_CONSTANT (0x120); int blockHeight = JUCE_LIVE_CONSTANT (200); g.fillRect ((getWidth() - blockWidth) / 2, (getHeight() - blockHeight) / 2, blockWidth, blockHeight); Colour fontColour = JUCE_LIVE_CONSTANT (Colour (0xff000a55)); float fontSize = JUCE_LIVE_CONSTANT (30.0f); g.setColour (fontColour); g.setFont (fontSize); g.drawFittedText (getDemoText(), getLocalBounds(), Justification::centred, 2); } static String getDemoText() { return JUCE_LIVE_CONSTANT ("Hello world!"); } }; //============================================================================== class LiveConstantEditorDemo : public Component, private ButtonListener { public: LiveConstantEditorDemo() : startButton ("Begin Demo") { descriptionLabel.setMinimumHorizontalScale (1.0f); descriptionLabel.setText ("This demonstrates the JUCE_LIVE_CONSTANT macro, which allows you to quickly " "adjust primitive values at runtime by just wrapping them in a macro.\n\n" "To understand what's going on in this demo, you should have a look at the " "LiveConstantDemoComponent class in LiveConstantDemo.cpp, where you can see " "the code that's invoking the demo below...", dontSendNotification); addAndMakeVisible (descriptionLabel); addAndMakeVisible (startButton); addChildComponent (demoComp); startButton.addListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (10)); demoComp.setBounds (r); descriptionLabel.setBounds (r.removeFromTop (200)); startButton.setBounds (r.removeFromTop (22).removeFromLeft (250)); demoComp.setBounds (r.withTrimmedTop (10)); } private: Label descriptionLabel; TextButton startButton; LiveConstantDemoComponent demoComp; void buttonClicked (Button*) override { startButton.setVisible (false); demoComp.setVisible (true); descriptionLabel.setText ("Tweak some of the colours and values in the pop-up window to see what " "the effect of your changes would be on the component below...", dontSendNotification); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LiveConstantEditorDemo) }; #if ! (JUCE_IOS || JUCE_ANDROID) // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Live Constants"); #endif JUCE-4.1.0/examples/Demo/Source/Demos/LookAndFeelDemo.cpp000066400000000000000000000642411263452017400227220ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== /** Custom Look And Feel subclasss. Simply override the methods you need to, anything else will be inherited from the base class. It's a good idea not to hard code your colours, use the findColour method along with appropriate ColourIds so you can set these on a per-component basis. */ struct CustomLookAndFeel : public LookAndFeel_V3 { void drawRoundThumb (Graphics& g, const float x, const float y, const float diameter, const Colour& colour, float outlineThickness) { const Rectangle a (x, y, diameter, diameter); const float halfThickness = outlineThickness * 0.5f; Path p; p.addEllipse (x + halfThickness, y + halfThickness, diameter - outlineThickness, diameter - outlineThickness); const DropShadow ds (Colours::black, 1, Point (0, 0)); ds.drawForPath (g, p); g.setColour (colour); g.fillPath (p); g.setColour (colour.brighter()); g.strokePath (p, PathStrokeType (outlineThickness)); } void drawButtonBackground (Graphics& g, Button& button, const Colour& backgroundColour, bool isMouseOverButton, bool isButtonDown) override { Colour baseColour (backgroundColour.withMultipliedSaturation (button.hasKeyboardFocus (true) ? 1.3f : 0.9f) .withMultipliedAlpha (button.isEnabled() ? 0.9f : 0.5f)); if (isButtonDown || isMouseOverButton) baseColour = baseColour.contrasting (isButtonDown ? 0.2f : 0.1f); const bool flatOnLeft = button.isConnectedOnLeft(); const bool flatOnRight = button.isConnectedOnRight(); const bool flatOnTop = button.isConnectedOnTop(); const bool flatOnBottom = button.isConnectedOnBottom(); const float width = button.getWidth() - 1.0f; const float height = button.getHeight() - 1.0f; if (width > 0 && height > 0) { const float cornerSize = jmin (15.0f, jmin (width, height) * 0.45f); const float lineThickness = cornerSize * 0.1f; const float halfThickness = lineThickness * 0.5f; Path outline; outline.addRoundedRectangle (0.5f + halfThickness, 0.5f + halfThickness, width - lineThickness, height - lineThickness, cornerSize, cornerSize, ! (flatOnLeft || flatOnTop), ! (flatOnRight || flatOnTop), ! (flatOnLeft || flatOnBottom), ! (flatOnRight || flatOnBottom)); const Colour outlineColour (button.findColour (button.getToggleState() ? TextButton::textColourOnId : TextButton::textColourOffId)); g.setColour (baseColour); g.fillPath (outline); if (! button.getToggleState()) { g.setColour (outlineColour); g.strokePath (outline, PathStrokeType (lineThickness)); } } } void drawTickBox (Graphics& g, Component& component, float x, float y, float w, float h, bool ticked, bool isEnabled, bool isMouseOverButton, bool isButtonDown) override { const float boxSize = w * 0.7f; bool isDownOrDragging = component.isEnabled() && (component.isMouseOverOrDragging() || component.isMouseButtonDown()); const Colour colour (component.findColour (TextButton::buttonColourId).withMultipliedSaturation ((component.hasKeyboardFocus (false) || isDownOrDragging) ? 1.3f : 0.9f) .withMultipliedAlpha (component.isEnabled() ? 1.0f : 0.7f)); drawRoundThumb (g, x, y + (h - boxSize) * 0.5f, boxSize, colour, isEnabled ? ((isButtonDown || isMouseOverButton) ? 1.1f : 0.5f) : 0.3f); if (ticked) { const Path tick (LookAndFeel_V2::getTickShape (6.0f)); g.setColour (isEnabled ? findColour (TextButton::buttonOnColourId) : Colours::grey); const float scale = 9.0f; const AffineTransform trans (AffineTransform::scale (w / scale, h / scale) .translated (x - 2.5f, y + 1.0f)); g.fillPath (tick, trans); } } void drawLinearSliderThumb (Graphics& g, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle style, Slider& slider) override { const float sliderRadius = (float) (getSliderThumbRadius (slider) - 2); bool isDownOrDragging = slider.isEnabled() && (slider.isMouseOverOrDragging() || slider.isMouseButtonDown()); Colour knobColour (slider.findColour (Slider::thumbColourId).withMultipliedSaturation ((slider.hasKeyboardFocus (false) || isDownOrDragging) ? 1.3f : 0.9f) .withMultipliedAlpha (slider.isEnabled() ? 1.0f : 0.7f)); if (style == Slider::LinearHorizontal || style == Slider::LinearVertical) { float kx, ky; if (style == Slider::LinearVertical) { kx = x + width * 0.5f; ky = sliderPos; } else { kx = sliderPos; ky = y + height * 0.5f; } const float outlineThickness = slider.isEnabled() ? 0.8f : 0.3f; drawRoundThumb (g, kx - sliderRadius, ky - sliderRadius, sliderRadius * 2.0f, knobColour, outlineThickness); } else { // Just call the base class for the demo LookAndFeel_V2::drawLinearSliderThumb (g, x, y, width, height, sliderPos, minSliderPos, maxSliderPos, style, slider); } } void drawLinearSlider (Graphics& g, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle style, Slider& slider) override { g.fillAll (slider.findColour (Slider::backgroundColourId)); if (style == Slider::LinearBar || style == Slider::LinearBarVertical) { const float fx = (float) x, fy = (float) y, fw = (float) width, fh = (float) height; Path p; if (style == Slider::LinearBarVertical) p.addRectangle (fx, sliderPos, fw, 1.0f + fh - sliderPos); else p.addRectangle (fx, fy, sliderPos - fx, fh); Colour baseColour (slider.findColour (Slider::rotarySliderFillColourId) .withMultipliedSaturation (slider.isEnabled() ? 1.0f : 0.5f) .withMultipliedAlpha (0.8f)); g.setColour (baseColour); g.fillPath (p); const float lineThickness = jmin (15.0f, jmin (width, height) * 0.45f) * 0.1f; g.drawRect (slider.getLocalBounds().toFloat(), lineThickness); } else { drawLinearSliderBackground (g, x, y, width, height, sliderPos, minSliderPos, maxSliderPos, style, slider); drawLinearSliderThumb (g, x, y, width, height, sliderPos, minSliderPos, maxSliderPos, style, slider); } } void drawLinearSliderBackground (Graphics& g, int x, int y, int width, int height, float /*sliderPos*/, float /*minSliderPos*/, float /*maxSliderPos*/, const Slider::SliderStyle /*style*/, Slider& slider) override { const float sliderRadius = getSliderThumbRadius (slider) - 5.0f; Path on, off; if (slider.isHorizontal()) { const float iy = y + height * 0.5f - sliderRadius * 0.5f; Rectangle r (x - sliderRadius * 0.5f, iy, width + sliderRadius, sliderRadius); const float onW = r.getWidth() * ((float) slider.valueToProportionOfLength (slider.getValue())); on.addRectangle (r.removeFromLeft (onW)); off.addRectangle (r); } else { const float ix = x + width * 0.5f - sliderRadius * 0.5f; Rectangle r (ix, y - sliderRadius * 0.5f, sliderRadius, height + sliderRadius); const float onH = r.getHeight() * ((float) slider.valueToProportionOfLength (slider.getValue())); on.addRectangle (r.removeFromBottom (onH)); off.addRectangle (r); } g.setColour (slider.findColour (Slider::rotarySliderFillColourId)); g.fillPath (on); g.setColour (slider.findColour (Slider::trackColourId)); g.fillPath (off); } void drawRotarySlider (Graphics& g, int x, int y, int width, int height, float sliderPos, float rotaryStartAngle, float rotaryEndAngle, Slider& slider) override { const float radius = jmin (width / 2, height / 2) - 2.0f; const float centreX = x + width * 0.5f; const float centreY = y + height * 0.5f; const float rx = centreX - radius; const float ry = centreY - radius; const float rw = radius * 2.0f; const float angle = rotaryStartAngle + sliderPos * (rotaryEndAngle - rotaryStartAngle); const bool isMouseOver = slider.isMouseOverOrDragging() && slider.isEnabled(); if (slider.isEnabled()) g.setColour (slider.findColour (Slider::rotarySliderFillColourId).withAlpha (isMouseOver ? 1.0f : 0.7f)); else g.setColour (Colour (0x80808080)); { Path filledArc; filledArc.addPieSegment (rx, ry, rw, rw, rotaryStartAngle, angle, 0.0); g.fillPath (filledArc); } { const float lineThickness = jmin (15.0f, jmin (width, height) * 0.45f) * 0.1f; Path outlineArc; outlineArc.addPieSegment (rx, ry, rw, rw, rotaryStartAngle, rotaryEndAngle, 0.0); g.strokePath (outlineArc, PathStrokeType (lineThickness)); } } }; //============================================================================== /** Another really simple look and feel that is very flat and square. This inherits from CustomLookAndFeel above for the linear bar and slider backgrounds. */ struct SquareLookAndFeel : public CustomLookAndFeel { void drawButtonBackground (Graphics& g, Button& button, const Colour& backgroundColour, bool isMouseOverButton, bool isButtonDown) override { Colour baseColour (backgroundColour.withMultipliedSaturation (button.hasKeyboardFocus (true) ? 1.3f : 0.9f) .withMultipliedAlpha (button.isEnabled() ? 0.9f : 0.5f)); if (isButtonDown || isMouseOverButton) baseColour = baseColour.contrasting (isButtonDown ? 0.2f : 0.1f); const float width = button.getWidth() - 1.0f; const float height = button.getHeight() - 1.0f; if (width > 0 && height > 0) { g.setGradientFill (ColourGradient (baseColour, 0.0f, 0.0f, baseColour.darker (0.1f), 0.0f, height, false)); g.fillRect (button.getLocalBounds()); } } void drawTickBox (Graphics& g, Component& component, float x, float y, float w, float h, bool ticked, bool isEnabled, bool /*isMouseOverButton*/, bool /*isButtonDown*/) override { const float boxSize = w * 0.7f; bool isDownOrDragging = component.isEnabled() && (component.isMouseOverOrDragging() || component.isMouseButtonDown()); const Colour colour (component.findColour (TextButton::buttonOnColourId).withMultipliedSaturation ((component.hasKeyboardFocus (false) || isDownOrDragging) ? 1.3f : 0.9f) .withMultipliedAlpha (component.isEnabled() ? 1.0f : 0.7f)); g.setColour (colour); Rectangle r (x, y + (h - boxSize) * 0.5f, boxSize, boxSize); g.fillRect (r); if (ticked) { const Path tick (LookAndFeel_V3::getTickShape (6.0f)); g.setColour (isEnabled ? findColour (TextButton::buttonColourId) : Colours::grey); const AffineTransform trans (RectanglePlacement (RectanglePlacement::centred) .getTransformToFit (tick.getBounds(), r.reduced (r.getHeight() * 0.05f))); g.fillPath (tick, trans); } } void drawLinearSliderThumb (Graphics& g, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, const Slider::SliderStyle style, Slider& slider) override { const float sliderRadius = (float) getSliderThumbRadius (slider); bool isDownOrDragging = slider.isEnabled() && (slider.isMouseOverOrDragging() || slider.isMouseButtonDown()); Colour knobColour (slider.findColour (Slider::rotarySliderFillColourId).withMultipliedSaturation ((slider.hasKeyboardFocus (false) || isDownOrDragging) ? 1.3f : 0.9f) .withMultipliedAlpha (slider.isEnabled() ? 1.0f : 0.7f)); g.setColour (knobColour); if (style == Slider::LinearHorizontal || style == Slider::LinearVertical) { float kx, ky; if (style == Slider::LinearVertical) { kx = x + width * 0.5f; ky = sliderPos; g.fillRect (Rectangle (kx - sliderRadius, ky - 2.5f, sliderRadius * 2.0f, 5.0f)); } else { kx = sliderPos; ky = y + height * 0.5f; g.fillRect (Rectangle (kx - 2.5f, ky - sliderRadius, 5.0f, sliderRadius * 2.0f)); } } else { // Just call the base class for the demo LookAndFeel_V2::drawLinearSliderThumb (g, x, y, width, height, sliderPos, minSliderPos, maxSliderPos, style, slider); } } void drawRotarySlider (Graphics& g, int x, int y, int width, int height, float sliderPos, float rotaryStartAngle, float rotaryEndAngle, Slider& slider) override { const float diameter = jmin (width, height) - 4.0f; const float radius = (diameter / 2.0f) * std::cos (float_Pi / 4.0f); const float centreX = x + width * 0.5f; const float centreY = y + height * 0.5f; const float rx = centreX - radius; const float ry = centreY - radius; const float rw = radius * 2.0f; const float angle = rotaryStartAngle + sliderPos * (rotaryEndAngle - rotaryStartAngle); const bool isMouseOver = slider.isMouseOverOrDragging() && slider.isEnabled(); const Colour baseColour (slider.isEnabled() ? slider.findColour (Slider::rotarySliderFillColourId).withAlpha (isMouseOver ? 0.8f : 1.0f) : Colour (0x80808080)); Rectangle r (rx, ry, rw, rw); AffineTransform t (AffineTransform::rotation (angle, r.getCentreX(), r.getCentreY())); float x1 = r.getTopLeft().getX(), y1 = r.getTopLeft().getY(), x2 = r.getBottomLeft().getX(), y2 = r.getBottomLeft().getY(); t.transformPoints (x1, y1, x2, y2); g.setGradientFill (ColourGradient (baseColour, x1, y1, baseColour.darker (0.1f), x2, y2, false)); Path knob; knob.addRectangle (r); g.fillPath (knob, t); Path needle; Rectangle r2 (r * 0.1f); needle.addRectangle (r2.withPosition (Point (r.getCentreX() - (r2.getWidth() / 2.0f), r.getY()))); g.setColour (slider.findColour (Slider::rotarySliderOutlineColourId)); g.fillPath (needle, AffineTransform::rotation (angle, r.getCentreX(), r.getCentreY())); } }; //============================================================================== struct LookAndFeelDemoComponent : public Component { LookAndFeelDemoComponent() { addAndMakeVisible (rotarySlider); rotarySlider.setSliderStyle (Slider::RotaryHorizontalVerticalDrag); rotarySlider.setTextBoxStyle (Slider::NoTextBox, false, 0, 0); rotarySlider.setValue (2.5); addAndMakeVisible (verticalSlider); verticalSlider.setSliderStyle (Slider::LinearVertical); verticalSlider.setTextBoxStyle (Slider::NoTextBox, false, 90, 20); verticalSlider.setValue (6.2); addAndMakeVisible (barSlider); barSlider.setSliderStyle (Slider::LinearBar); barSlider.setValue (4.5); addAndMakeVisible (incDecSlider); incDecSlider.setSliderStyle (Slider::IncDecButtons); incDecSlider.setRange (0.0, 10.0, 1.0); incDecSlider.setIncDecButtonsMode (Slider::incDecButtonsDraggable_Horizontal); incDecSlider.setTextBoxStyle (Slider::TextBoxBelow, false, 90, 20); addAndMakeVisible (button1); button1.setButtonText ("Hello World!"); addAndMakeVisible (button2); button2.setButtonText ("Hello World!"); button2.setClickingTogglesState (true); button2.setToggleState (true, dontSendNotification); addAndMakeVisible (button3); button3.setButtonText ("Hello World!"); addAndMakeVisible (button4); button4.setButtonText ("Toggle Me"); button4.setToggleState (true, dontSendNotification); for (int i = 0; i < 3; ++i) { TextButton* b = radioButtons.add (new TextButton()); addAndMakeVisible (b); b->setRadioGroupId (42); b->setClickingTogglesState (true); b->setButtonText ("Button " + String (i + 1)); switch (i) { case 0: b->setConnectedEdges (Button::ConnectedOnRight); break; case 1: b->setConnectedEdges (Button::ConnectedOnRight + Button::ConnectedOnLeft); break; case 2: b->setConnectedEdges (Button::ConnectedOnLeft); break; default: break; } } radioButtons.getUnchecked (2)->setToggleState (true, dontSendNotification); } void resized() override { Rectangle area (getLocalBounds().reduced (10)); Rectangle row (area.removeFromTop (100)); rotarySlider.setBounds (row.removeFromLeft (100).reduced (5)); verticalSlider.setBounds (row.removeFromLeft (100).reduced (5)); barSlider.setBounds (row.removeFromLeft (100).reduced (5, 25)); incDecSlider.setBounds (row.removeFromLeft (100).reduced (5, 28)); row = area.removeFromTop (100); button1.setBounds (row.removeFromLeft (100).reduced (5)); Rectangle row2 (row.removeFromTop (row.getHeight() / 2).reduced (0, 10)); button2.setBounds (row2.removeFromLeft (100).reduced (5, 0)); button3.setBounds (row2.removeFromLeft (100).reduced (5, 0)); button4.setBounds (row2.removeFromLeft (100).reduced (5, 0)); row2 = (row.removeFromTop (row2.getHeight() + 20).reduced (5, 10)); for (int i = 0; i < radioButtons.size(); ++i) radioButtons.getUnchecked (i)->setBounds (row2.removeFromLeft (100)); } Slider rotarySlider, verticalSlider, barSlider, incDecSlider; TextButton button1, button2, button3; ToggleButton button4; OwnedArray radioButtons; }; //============================================================================== class LookAndFeelDemo : public Component, private ComboBox::Listener, private Button::Listener { public: LookAndFeelDemo() { descriptionLabel.setMinimumHorizontalScale (1.0f); descriptionLabel.setText ("This demonstrates how to create a custom look and feel by overriding only the desired methods.\n\n" "Components can have their look and feel individually assigned or they will inherit it from their parent. " "Colours work in a similar way, they can be set for individual components or a look and feel as a whole.", dontSendNotification); addAndMakeVisible (descriptionLabel); addAndMakeVisible (lafBox); addAndMakeVisible (demoComp); addLookAndFeel (new LookAndFeel_V1(), "LookAndFeel_V1"); addLookAndFeel (new LookAndFeel_V2(), "LookAndFeel_V2"); addLookAndFeel (new LookAndFeel_V3(), "LookAndFeel_V3"); CustomLookAndFeel* claf = new CustomLookAndFeel(); addLookAndFeel (claf, "Custom Look And Feel"); setupCustomLookAndFeelColours (*claf); SquareLookAndFeel* slaf = new SquareLookAndFeel(); addLookAndFeel (slaf, "Square Look And Feel"); setupSquareLookAndFeelColours (*slaf); lafBox.addListener (this); lafBox.setSelectedItemIndex (3); addAndMakeVisible (randomButton); randomButton.setButtonText ("Assign Randomly"); randomButton.addListener (this); } void paint (Graphics& g) override { g.fillAll (Colour::greyLevel (0.4f)); } void resized() override { Rectangle r (getLocalBounds().reduced (10)); demoComp.setBounds (r); descriptionLabel.setBounds (r.removeFromTop (200)); lafBox.setBounds (r.removeFromTop (22).removeFromLeft (250)); randomButton.setBounds (lafBox.getBounds().withX (lafBox.getRight() + 20).withWidth (140)); demoComp.setBounds (r.withTrimmedTop (10)); } private: Label descriptionLabel; ComboBox lafBox; TextButton randomButton; OwnedArray lookAndFeels; LookAndFeelDemoComponent demoComp; void addLookAndFeel (LookAndFeel* laf, const String& name) { lookAndFeels.add (laf); lafBox.addItem (name, lafBox.getNumItems() + 1); } void setupCustomLookAndFeelColours (LookAndFeel& laf) { laf.setColour (Slider::thumbColourId, Colour::greyLevel (0.95f)); laf.setColour (Slider::textBoxOutlineColourId, Colours::transparentWhite); laf.setColour (Slider::rotarySliderFillColourId, Colour (0xff00b5f6)); laf.setColour (Slider::rotarySliderOutlineColourId, Colours::white); laf.setColour (TextButton::buttonColourId, Colours::white); laf.setColour (TextButton::textColourOffId, Colour (0xff00b5f6)); laf.setColour (TextButton::buttonOnColourId, laf.findColour (TextButton::textColourOffId)); laf.setColour (TextButton::textColourOnId, laf.findColour (TextButton::buttonColourId)); } void setupSquareLookAndFeelColours (LookAndFeel& laf) { const Colour baseColour (Colours::red); laf.setColour (Slider::thumbColourId, Colour::greyLevel (0.95f)); laf.setColour (Slider::textBoxOutlineColourId, Colours::transparentWhite); laf.setColour (Slider::rotarySliderFillColourId, baseColour); laf.setColour (Slider::rotarySliderOutlineColourId, Colours::white); laf.setColour (Slider::trackColourId, Colours::black); laf.setColour (TextButton::buttonColourId, Colours::white); laf.setColour (TextButton::textColourOffId, baseColour); laf.setColour (TextButton::buttonOnColourId, laf.findColour (TextButton::textColourOffId)); laf.setColour (TextButton::textColourOnId, laf.findColour (TextButton::buttonColourId)); } void setAllLookAndFeels (LookAndFeel* laf) { for (int i = 0; i < demoComp.getNumChildComponents(); ++i) if (Component* c = demoComp.getChildComponent (i)) c->setLookAndFeel (laf); } void comboBoxChanged (ComboBox* comboBoxThatHasChanged) override { if (comboBoxThatHasChanged == &lafBox) setAllLookAndFeels (lookAndFeels[lafBox.getSelectedItemIndex()]); } void buttonClicked (Button* b) override { if (b == &randomButton) lafBox.setSelectedItemIndex (Random::getSystemRandom().nextInt (lafBox.getNumItems())); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LookAndFeelDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Look And Feel"); JUCE-4.1.0/examples/Demo/Source/Demos/MDIDemo.cpp000066400000000000000000000203221263452017400212000ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== /** The Note class contains text editor used to display and edit the note's contents and will also listen to changes in the text and mark the FileBasedDocument as 'dirty'. This 'dirty' flag is used to promt the user to save the note when it is closed. */ class Note : public Component, public FileBasedDocument, private TextEditor::Listener { public: Note (const String& name, const String& contents) : FileBasedDocument (".jnote", "*.jnote", "Browse for note to load", "Choose file to save note to"), textValueObject (contents) { // we need to use an separate Value object as our text source so it doesn't get marked // as changed immediately setName (name); editor.setMultiLine (true); editor.setReturnKeyStartsNewLine (true); editor.getTextValue().referTo (textValueObject); addAndMakeVisible (editor); editor.addListener (this); } ~Note() { editor.removeListener (this); } void resized() override { editor.setBounds (getLocalBounds()); } String getDocumentTitle() override { return getName(); } Result loadDocument (const File& file) override { editor.setText (file.loadFileAsString()); return Result::ok(); } Result saveDocument (const File& file) override { // attempt to save the contents into the given file FileOutputStream os (file); if (os.openedOk()) os.writeText (editor.getText(), false, false); return Result::ok(); } File getLastDocumentOpened() override { // not interested in this for now return File::nonexistent; } void setLastDocumentOpened (const File& /*file*/) override { // not interested in this for now } #if JUCE_MODAL_LOOPS_PERMITTED File getSuggestedSaveAsFile (const File&) override { return File::getSpecialLocation (File::userDesktopDirectory).getChildFile (getName()).withFileExtension ("jnote"); } #endif private: Value textValueObject; TextEditor editor; void textEditorTextChanged (TextEditor& ed) override { // let our FileBasedDocument know we've changed if (&ed == &editor) changed(); } void textEditorReturnKeyPressed (TextEditor&) override {} void textEditorEscapeKeyPressed (TextEditor&) override {} void textEditorFocusLost (TextEditor&) override {} JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Note) }; //============================================================================== /** Simple MultiDocumentPanel that just tries to save our notes when they are closed. */ class DemoMultiDocumentPanel : public MultiDocumentPanel { public: DemoMultiDocumentPanel() { } ~DemoMultiDocumentPanel() { closeAllDocuments (true); } bool tryToCloseDocument (Component* component) override { #if JUCE_MODAL_LOOPS_PERMITTED if (Note* note = dynamic_cast (component)) return note->saveIfNeededAndUserAgrees() != FileBasedDocument::failedToWriteToFile; #endif return true; } private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoMultiDocumentPanel) }; //============================================================================== /** Simple multi-document panel that manages a number of notes that you can store to files. By default this will look for notes saved to the desktop and load them up. */ class MDIDemo : public Component, public FileDragAndDropTarget, private Button::Listener { public: MDIDemo() { setOpaque (true); showInTabsButton.setButtonText ("Show with tabs"); showInTabsButton.setToggleState (false, dontSendNotification); showInTabsButton.addListener (this); addAndMakeVisible (showInTabsButton); addNoteButton.setButtonText ("Create a new note"); addNoteButton.addListener (this); addAndMakeVisible (addNoteButton); addAndMakeVisible (multiDocumentPanel); multiDocumentPanel.setBackgroundColour (Colours::transparentBlack); updateLayoutMode(); addNote ("Notes Demo", "You can drag-and-drop text files onto this page to open them as notes.."); addExistingNotes(); } ~MDIDemo() { addNoteButton.removeListener (this); showInTabsButton.removeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle area (getLocalBounds()); Rectangle buttonArea (area.removeFromTop (28).reduced (2)); addNoteButton.setBounds (buttonArea.removeFromRight (150)); showInTabsButton.setBounds (buttonArea); multiDocumentPanel.setBounds (area); } bool isInterestedInFileDrag (const StringArray&) override { return true; } void filesDropped (const StringArray& filenames, int /* x */, int /* y */) override { Array files; for (int i = 0; i < filenames.size(); ++i) files.add (File (filenames[i])); createNotesForFiles (files); } void createNotesForFiles (const Array& files) { for (int i = 0; i < files.size(); ++i) { const File file (files[i]); String content = file.loadFileAsString(); if (content.length() > 20000) content = "Too long!"; addNote (file.getFileName(), content); } } private: ToggleButton showInTabsButton; TextButton addNoteButton; DemoMultiDocumentPanel multiDocumentPanel; void updateLayoutMode() { multiDocumentPanel.setLayoutMode (showInTabsButton.getToggleState() ? MultiDocumentPanel::MaximisedWindowsWithTabs : MultiDocumentPanel::FloatingWindows); } void addNote (const String& name, const String& content) { Note* newNote = new Note (name, content); newNote->setSize (200, 200); multiDocumentPanel.addDocument (newNote, Colours::lightblue.withAlpha (0.6f), true); } void addExistingNotes() { Array files; File::getSpecialLocation (File::userDesktopDirectory).findChildFiles (files, File::findFiles, false, "*.jnote"); createNotesForFiles (files); } void buttonClicked (Button* b) override { if (b == &showInTabsButton) updateLayoutMode(); else if (b == &addNoteButton) addNote (String ("Note ") + String (multiDocumentPanel.getNumDocuments() + 1), "Hello World!"); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MDIDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: MDI"); JUCE-4.1.0/examples/Demo/Source/Demos/MidiDemo.cpp000066400000000000000000000256401263452017400214610ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" static String getMidiMessageDescription (const MidiMessage& m) { if (m.isNoteOn()) return "Note on " + MidiMessage::getMidiNoteName (m.getNoteNumber(), true, true, 3); if (m.isNoteOff()) return "Note off " + MidiMessage::getMidiNoteName (m.getNoteNumber(), true, true, 3); if (m.isProgramChange()) return "Program change " + String (m.getProgramChangeNumber()); if (m.isPitchWheel()) return "Pitch wheel " + String (m.getPitchWheelValue()); if (m.isAftertouch()) return "After touch " + MidiMessage::getMidiNoteName (m.getNoteNumber(), true, true, 3) + ": " + String (m.getAfterTouchValue()); if (m.isChannelPressure()) return "Channel pressure " + String (m.getChannelPressureValue()); if (m.isAllNotesOff()) return "All notes off"; if (m.isAllSoundOff()) return "All sound off"; if (m.isMetaEvent()) return "Meta event"; if (m.isController()) { String name (MidiMessage::getControllerName (m.getControllerNumber())); if (name.isEmpty()) name = "[" + String (m.getControllerNumber()) + "]"; return "Controler " + name + ": " + String (m.getControllerValue()); } return String::toHexString (m.getRawData(), m.getRawDataSize()); } //============================================================================== /** Simple list box that just displays a StringArray. */ class MidiLogListBoxModel : public ListBoxModel { public: MidiLogListBoxModel (const Array& list) : midiMessageList (list) { } int getNumRows() override { return midiMessageList.size(); } void paintListBoxItem (int row, Graphics& g, int width, int height, bool rowIsSelected) override { if (rowIsSelected) g.fillAll (Colours::blue.withAlpha (0.2f)); if (isPositiveAndBelow (row, midiMessageList.size())) { g.setColour (Colours::black); const MidiMessage& message = midiMessageList.getReference (row); double time = message.getTimeStamp(); g.drawText (String::formatted ("%02d:%02d:%02d", ((int) (time / 3600.0)) % 24, ((int) (time / 60.0)) % 60, ((int) time) % 60) + " - " + getMidiMessageDescription (message), Rectangle (width, height).reduced (4, 0), Justification::centredLeft, true); } } private: const Array& midiMessageList; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiLogListBoxModel) }; //============================================================================== class MidiDemo : public Component, private ComboBox::Listener, private MidiInputCallback, private MidiKeyboardStateListener, private AsyncUpdater { public: MidiDemo() : deviceManager (MainAppWindow::getSharedAudioDeviceManager()), lastInputIndex (0), isAddingFromMidiInput (false), keyboardComponent (keyboardState, MidiKeyboardComponent::horizontalKeyboard), midiLogListBoxModel (midiMessageList) { setOpaque (true); // MIDI Inputs addAndMakeVisible (midiInputListLabel); midiInputListLabel.setText ("MIDI Input:", dontSendNotification); midiInputListLabel.attachToComponent (&midiInputList, true); addAndMakeVisible (midiInputList); midiInputList.setTextWhenNoChoicesAvailable ("No MIDI Inputs Enabled"); const StringArray midiInputs (MidiInput::getDevices()); midiInputList.addItemList (midiInputs, 1); midiInputList.addListener (this); // find the first enabled device and use that by default for (int i = 0; i < midiInputs.size(); ++i) { if (deviceManager.isMidiInputEnabled (midiInputs[i])) { setMidiInput (i); break; } } // if no enabled devices were found just use the first one in the list if (midiInputList.getSelectedId() == 0) setMidiInput (0); // MIDI Outputs addAndMakeVisible (midiOutputListLabel); midiOutputListLabel.setText ("MIDI Output:", dontSendNotification); midiOutputListLabel.attachToComponent (&midiOutputList, true); addAndMakeVisible (midiOutputList); midiOutputList.setTextWhenNoChoicesAvailable ("No MIDI Output Enabled"); midiOutputList.addItemList (MidiOutput::getDevices(), 1); midiOutputList.addListener (this); addAndMakeVisible (keyboardComponent); keyboardState.addListener (this); addAndMakeVisible (messageListBox); messageListBox.setModel (&midiLogListBoxModel); messageListBox.setColour (ListBox::backgroundColourId, Colour (0x32ffffff)); messageListBox.setColour (ListBox::outlineColourId, Colours::black); } ~MidiDemo() { keyboardState.removeListener (this); deviceManager.removeMidiInputCallback (MidiInput::getDevices()[midiInputList.getSelectedItemIndex()], this); midiInputList.removeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle area (getLocalBounds()); midiInputList.setBounds (area.removeFromTop (36).removeFromRight (getWidth() - 150).reduced (8)); midiOutputList.setBounds (area.removeFromTop (36).removeFromRight (getWidth() - 150).reduced (8)); keyboardComponent.setBounds (area.removeFromTop (80).reduced(8)); messageListBox.setBounds (area.reduced (8)); } private: AudioDeviceManager& deviceManager; ComboBox midiInputList, midiOutputList; Label midiInputListLabel, midiOutputListLabel; int lastInputIndex; bool isAddingFromMidiInput; MidiKeyboardState keyboardState; MidiKeyboardComponent keyboardComponent; ListBox messageListBox; Array midiMessageList; MidiLogListBoxModel midiLogListBoxModel; ScopedPointer currentMidiOutput; //============================================================================== /** Starts listening to a MIDI input device, enabling it if necessary. */ void setMidiInput (int index) { const StringArray list (MidiInput::getDevices()); deviceManager.removeMidiInputCallback (list[lastInputIndex], this); const String newInput (list[index]); if (! deviceManager.isMidiInputEnabled (newInput)) deviceManager.setMidiInputEnabled (newInput, true); deviceManager.addMidiInputCallback (newInput, this); midiInputList.setSelectedId (index + 1, dontSendNotification); lastInputIndex = index; } //============================================================================== void setMidiOutput (int index) { currentMidiOutput = nullptr; if (MidiOutput::getDevices() [index].isNotEmpty()) { currentMidiOutput = MidiOutput::openDevice (index); jassert (currentMidiOutput); } } void comboBoxChanged (ComboBox* box) override { if (box == &midiInputList) setMidiInput (midiInputList.getSelectedItemIndex()); if (box == &midiOutputList) setMidiOutput (midiOutputList.getSelectedItemIndex()); } // These methods handle callbacks from the midi device + on-screen keyboard.. void handleIncomingMidiMessage (MidiInput*, const MidiMessage& message) override { const ScopedValueSetter scopedInputFlag (isAddingFromMidiInput, true); keyboardState.processNextMidiEvent (message); postMessageToList (message); } void handleNoteOn (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float velocity) override { if (! isAddingFromMidiInput) { MidiMessage m (MidiMessage::noteOn (midiChannel, midiNoteNumber, velocity)); m.setTimeStamp (Time::getMillisecondCounterHiRes() * 0.001); postMessageToList (m); } } void handleNoteOff (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float velocity) override { if (! isAddingFromMidiInput) { MidiMessage m (MidiMessage::noteOff (midiChannel, midiNoteNumber, velocity)); m.setTimeStamp (Time::getMillisecondCounterHiRes() * 0.001); postMessageToList (m); } } // This is used to dispach an incoming message to the message thread struct IncomingMessageCallback : public CallbackMessage { IncomingMessageCallback (MidiDemo* d, const MidiMessage& m) : demo (d), message (m) {} void messageCallback() override { if (demo != nullptr) demo->addMessageToList (message); } Component::SafePointer demo; MidiMessage message; }; void postMessageToList (const MidiMessage& message) { if (currentMidiOutput != nullptr) currentMidiOutput->sendMessageNow (message); (new IncomingMessageCallback (this, message))->post(); } void addMessageToList (const MidiMessage& message) { midiMessageList.add (message); triggerAsyncUpdate(); } void handleAsyncUpdate() override { messageListBox.updateContent(); messageListBox.scrollToEnsureRowIsOnscreen (midiMessageList.size() - 1); messageListBox.repaint(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MidiDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("32 Audio: MIDI i/o"); JUCE-4.1.0/examples/Demo/Source/Demos/MultiTouch.cpp000066400000000000000000000117161263452017400220660ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class MultiTouchDemo : public Component { public: MultiTouchDemo() { setOpaque (true); } void paint (Graphics& g) override { g.fillAll (Colour::greyLevel (0.4f)); g.setColour (Colours::lightgrey); g.setFont (14.0f); g.drawFittedText ("Drag here with as many fingers as you have!", getLocalBounds().reduced (30), Justification::centred, 4); for (int i = 0; i < trails.size(); ++i) drawTrail (*trails.getUnchecked(i), g); } void mouseDrag (const MouseEvent& e) override { Trail* t = getTrail (e.source); if (t == nullptr) { t = new Trail (e.source); t->path.startNewSubPath (e.position); trails.add (t); } t->pushPoint (e.position, e.mods, e.pressure); repaint(); } void mouseUp (const MouseEvent& e) override { trails.removeObject (getTrail (e.source)); repaint(); } struct Trail { Trail (const MouseInputSource& ms) : source (ms), colour (getRandomBrightColour().withAlpha (0.6f)) {} void pushPoint (Point newPoint, ModifierKeys newMods, float pressure) { currentPosition = newPoint; modifierKeys = newMods; if (lastPoint.getDistanceFrom (newPoint) > 5.0f) { if (lastPoint != Point()) { Path newSegment; newSegment.startNewSubPath (lastPoint); newSegment.lineTo (newPoint); float diameter = 20.0f * (pressure > 0 && pressure < 1.0f ? pressure : 1.0f); PathStrokeType (diameter, PathStrokeType::curved, PathStrokeType::rounded).createStrokedPath (newSegment, newSegment); path.addPath (newSegment); } lastPoint = newPoint; } } MouseInputSource source; Path path; Colour colour; Point lastPoint, currentPosition; ModifierKeys modifierKeys; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Trail) }; OwnedArray trails; void drawTrail (Trail& trail, Graphics& g) { g.setColour (trail.colour); g.fillPath (trail.path); const float radius = 40.0f; g.setColour (Colours::black); g.drawEllipse (trail.currentPosition.x - radius, trail.currentPosition.y - radius, radius * 2.0f, radius * 2.0f, 2.0f); g.setFont (14.0f); String desc ("Mouse #"); desc << trail.source.getIndex(); float pressure = trail.source.getCurrentPressure(); if (pressure > 0.0f && pressure < 1.0f) desc << " (pressure: " << (int) (pressure * 100.0f) << "%)"; if (trail.modifierKeys.isCommandDown()) desc << " (CMD)"; if (trail.modifierKeys.isShiftDown()) desc << " (SHIFT)"; if (trail.modifierKeys.isCtrlDown()) desc << " (CTRL)"; if (trail.modifierKeys.isAltDown()) desc << " (ALT)"; g.drawText (desc, Rectangle ((int) trail.currentPosition.x - 200, (int) trail.currentPosition.y - 60, 400, 20), Justification::centredTop, false); } Trail* getTrail (const MouseInputSource& source) { for (int i = 0; i < trails.size(); ++i) { Trail* t = trails.getUnchecked(i); if (t->source == source) return t; } return nullptr; } }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Multi-touch"); JUCE-4.1.0/examples/Demo/Source/Demos/MultithreadingDemo.cpp000066400000000000000000000236371263452017400235630ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class BouncingBallComp : public Component { public: BouncingBallComp() { x = Random::getSystemRandom().nextFloat() * 200.0f; y = Random::getSystemRandom().nextFloat() * 200.0f; parentWidth = 50; parentHeight = 50; innerX = 0; innerY = 0; threadId = 0; const float speed = 5.0f; // give each ball a fixed speed so we can // see the effects of thread priority on how fast // they actually go. const float angle = Random::getSystemRandom().nextFloat() * float_Pi * 2.0f; dx = std::sin (angle) * speed; dy = std::cos (angle) * speed; size = Random::getSystemRandom().nextFloat() * 30.0f + 30.0f; colour = Colour ((juce::uint32) Random::getSystemRandom().nextInt()) .withAlpha (0.5f) .withBrightness (0.7f); } void paint (Graphics& g) override { g.setColour (colour); g.fillEllipse (innerX, innerY, size, size); g.setColour (Colours::black); g.setFont (10.0f); g.drawText (String::toHexString ((int64) threadId), getLocalBounds(), Justification::centred, false); } void parentSizeChanged() override { parentWidth = getParentWidth() - size; parentHeight = getParentHeight() - size; } void moveBall() { threadId = Thread::getCurrentThreadId(); // this is so the component can print the thread ID inside the ball x += dx; y += dy; if (x < 0) dx = std::abs (dx); if (x > parentWidth) dx = -std::abs (dx); if (y < 0) dy = std::abs (dy); if (y > parentHeight) dy = -std::abs (dy); setBounds (((int) x) - 2, ((int) y) - 2, ((int) size) + 4, ((int) size) + 4); innerX = x - getX(); innerY = y - getY(); repaint(); } private: float x, y, size, dx, dy, parentWidth, parentHeight; float innerX, innerY; Colour colour; Thread::ThreadID threadId; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BouncingBallComp) }; //============================================================================== class DemoThread : public BouncingBallComp, public Thread { public: DemoThread() : Thread ("Juce Demo Thread") { interval = Random::getSystemRandom().nextInt (50) + 6; // give the threads a random priority, so some will move more // smoothly than others.. startThread (Random::getSystemRandom().nextInt (3) + 3); } ~DemoThread() { // allow the thread 2 seconds to stop cleanly - should be plenty of time. stopThread (2000); } void run() override { // this is the code that runs this thread - we'll loop continuously, // updating the coordinates of our blob. // threadShouldExit() returns true when the stopThread() method has been // called, so we should check it often, and exit as soon as it gets flagged. while (! threadShouldExit()) { // sleep a bit so the threads don't all grind the CPU to a halt.. wait (interval); // because this is a background thread, we mustn't do any UI work without // first grabbing a MessageManagerLock.. const MessageManagerLock mml (Thread::getCurrentThread()); if (! mml.lockWasGained()) // if something is trying to kill this job, the lock return; // will fail, in which case we'd better return.. // now we've got the UI thread locked, we can mess about with the components moveBall(); } } private: int interval; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoThread) }; //============================================================================== class DemoThreadPoolJob : public BouncingBallComp, public ThreadPoolJob { public: DemoThreadPoolJob() : ThreadPoolJob ("Demo Threadpool Job") { } JobStatus runJob() override { // this is the code that runs this job. It'll be repeatedly called until we return // jobHasFinished instead of jobNeedsRunningAgain. Thread::sleep (30); // because this is a background thread, we mustn't do any UI work without // first grabbing a MessageManagerLock.. const MessageManagerLock mml (this); // before moving the ball, we need to check whether the lock was actually gained, because // if something is trying to stop this job, it will have failed.. if (mml.lockWasGained()) moveBall(); return jobNeedsRunningAgain; } void removedFromQueue() { // This is called to tell us that our job has been removed from the pool. // In this case there's no need to do anything here. } private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoThreadPoolJob) }; //============================================================================== class MultithreadingDemo : public Component, private Timer, private Button::Listener { public: MultithreadingDemo() : pool (3), controlButton ("Thread type"), isUsingPool (false) { setOpaque (true); addAndMakeVisible (controlButton); controlButton.changeWidthToFitText (24); controlButton.setTopLeftPosition (20, 20); controlButton.setTriggeredOnMouseDown (true); controlButton.setAlwaysOnTop (true); controlButton.addListener (this); } ~MultithreadingDemo() { pool.removeAllJobs (true, 2000); } void resetAllBalls() { stopTimer(); pool.removeAllJobs (true, 4000); balls.clear(); if (isShowing()) { while (balls.size() < 5) addABall(); startTimer (300); } } void paint (Graphics& g) override { fillStandardDemoBackground (g); } private: ThreadPool pool; TextButton controlButton; bool isUsingPool; OwnedArray balls; void setUsingPool (bool usePool) { isUsingPool = usePool; resetAllBalls(); } void addABall() { if (isUsingPool) { DemoThreadPoolJob* newBall = new DemoThreadPoolJob(); balls.add (newBall); addAndMakeVisible (newBall); newBall->parentSizeChanged(); pool.addJob (newBall, false); } else { DemoThread* newBall = new DemoThread(); balls.add (newBall); addAndMakeVisible (newBall); newBall->parentSizeChanged(); } } void removeABall() { if (balls.size() > 0) { int indexToRemove = Random::getSystemRandom().nextInt (balls.size()); if (isUsingPool) pool.removeJob (dynamic_cast (balls [indexToRemove]), true, 4000); balls.remove (indexToRemove); } } // this gets called when a component is added or removed from a parent component. void parentHierarchyChanged() override { // we'll use this as an opportunity to start and stop the threads, so that // we don't leave them going when the component's not actually visible. resetAllBalls(); } void timerCallback() override { if (Random::getSystemRandom().nextBool()) { if (balls.size() <= 10) addABall(); } else { if (balls.size() > 3) removeABall(); } } void buttonClicked (Button*) override { PopupMenu m; m.addItem (1, "Use one thread per ball", true, ! isUsingPool); m.addItem (2, "Use a thread pool", true, isUsingPool); m.showMenuAsync (PopupMenu::Options().withTargetComponent (&controlButton), ModalCallbackFunction::forComponent (menuItemChosenCallback, this)); } static void menuItemChosenCallback (int result, MultithreadingDemo* demoComponent) { if (result != 0 && demoComponent != nullptr) demoComponent->setUsingPool (result == 2); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MultithreadingDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 Multi-threading"); JUCE-4.1.0/examples/Demo/Source/Demos/NetworkingDemo.cpp000066400000000000000000000074221263452017400227240ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class NetworkingDemo : public Component, private Button::Listener, private Thread { public: NetworkingDemo() : Thread ("Network Demo"), resultsBox (resultsDocument, nullptr) { setOpaque (true); addAndMakeVisible (urlBox); urlBox.setText ("http://www.google.com"); addAndMakeVisible (fetchButton); fetchButton.setButtonText ("Download URL Contents"); fetchButton.addListener (this); addAndMakeVisible (resultsBox); } ~NetworkingDemo() { fetchButton.removeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle area (getLocalBounds()); { Rectangle topArea (area.removeFromTop (40)); fetchButton.setBounds (topArea.removeFromRight (180).reduced (8)); urlBox.setBounds (topArea.reduced (8)); } resultsBox.setBounds (area.reduced (8)); } void run() override { String result (getResultText (urlBox.getText())); MessageManagerLock mml (this); if (mml.lockWasGained()) resultsBox.loadContent (result); } String getResultText (const URL& url) { StringPairArray responseHeaders; int statusCode = 0; ScopedPointer stream (url.createInputStream (false, nullptr, nullptr, String(), 10000, // timeout in millisecs &responseHeaders, &statusCode)); if (stream != nullptr) return (statusCode != 0 ? "Status code: " + String (statusCode) + newLine : String()) + "Response headers: " + newLine + responseHeaders.getDescription() + newLine + "----------------------------------------------------" + newLine + stream->readEntireStreamAsString(); if (statusCode != 0) return "Failed to connect, status code = " + String (statusCode); return "Failed to connect!"; } private: TextEditor urlBox; TextButton fetchButton; CodeDocument resultsDocument; CodeEditorComponent resultsBox; void buttonClicked (Button* button) override { if (button == &fetchButton) startThread(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NetworkingDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 HTTP"); JUCE-4.1.0/examples/Demo/Source/Demos/OpenGLDemo.cpp000066400000000000000000001327211263452017400217220ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #if JUCE_OPENGL #include "WavefrontObjParser.h" //============================================================================== struct OpenGLDemoClasses { /** Vertex data to be passed to the shaders. For the purposes of this demo, each vertex will have a 3D position, a colour and a 2D texture co-ordinate. Of course you can ignore these or manipulate them in the shader programs but are some useful defaults to work from. */ struct Vertex { float position[3]; float normal[3]; float colour[4]; float texCoord[2]; }; //============================================================================== // This class just manages the attributes that the demo shaders use. struct Attributes { Attributes (OpenGLContext& openGLContext, OpenGLShaderProgram& shader) { position = createAttribute (openGLContext, shader, "position"); normal = createAttribute (openGLContext, shader, "normal"); sourceColour = createAttribute (openGLContext, shader, "sourceColour"); texureCoordIn = createAttribute (openGLContext, shader, "texureCoordIn"); } void enable (OpenGLContext& openGLContext) { if (position != nullptr) { openGLContext.extensions.glVertexAttribPointer (position->attributeID, 3, GL_FLOAT, GL_FALSE, sizeof (Vertex), 0); openGLContext.extensions.glEnableVertexAttribArray (position->attributeID); } if (normal != nullptr) { openGLContext.extensions.glVertexAttribPointer (normal->attributeID, 3, GL_FLOAT, GL_FALSE, sizeof (Vertex), (GLvoid*) (sizeof (float) * 3)); openGLContext.extensions.glEnableVertexAttribArray (normal->attributeID); } if (sourceColour != nullptr) { openGLContext.extensions.glVertexAttribPointer (sourceColour->attributeID, 4, GL_FLOAT, GL_FALSE, sizeof (Vertex), (GLvoid*) (sizeof (float) * 6)); openGLContext.extensions.glEnableVertexAttribArray (sourceColour->attributeID); } if (texureCoordIn != nullptr) { openGLContext.extensions.glVertexAttribPointer (texureCoordIn->attributeID, 2, GL_FLOAT, GL_FALSE, sizeof (Vertex), (GLvoid*) (sizeof (float) * 10)); openGLContext.extensions.glEnableVertexAttribArray (texureCoordIn->attributeID); } } void disable (OpenGLContext& openGLContext) { if (position != nullptr) openGLContext.extensions.glDisableVertexAttribArray (position->attributeID); if (normal != nullptr) openGLContext.extensions.glDisableVertexAttribArray (normal->attributeID); if (sourceColour != nullptr) openGLContext.extensions.glDisableVertexAttribArray (sourceColour->attributeID); if (texureCoordIn != nullptr) openGLContext.extensions.glDisableVertexAttribArray (texureCoordIn->attributeID); } ScopedPointer position, normal, sourceColour, texureCoordIn; private: static OpenGLShaderProgram::Attribute* createAttribute (OpenGLContext& openGLContext, OpenGLShaderProgram& shader, const char* attributeName) { if (openGLContext.extensions.glGetAttribLocation (shader.getProgramID(), attributeName) < 0) return nullptr; return new OpenGLShaderProgram::Attribute (shader, attributeName); } }; //============================================================================== // This class just manages the uniform values that the demo shaders use. struct Uniforms { Uniforms (OpenGLContext& openGLContext, OpenGLShaderProgram& shader) { projectionMatrix = createUniform (openGLContext, shader, "projectionMatrix"); viewMatrix = createUniform (openGLContext, shader, "viewMatrix"); texture = createUniform (openGLContext, shader, "demoTexture"); lightPosition = createUniform (openGLContext, shader, "lightPosition"); bouncingNumber = createUniform (openGLContext, shader, "bouncingNumber"); } ScopedPointer projectionMatrix, viewMatrix, texture, lightPosition, bouncingNumber; private: static OpenGLShaderProgram::Uniform* createUniform (OpenGLContext& openGLContext, OpenGLShaderProgram& shader, const char* uniformName) { if (openGLContext.extensions.glGetUniformLocation (shader.getProgramID(), uniformName) < 0) return nullptr; return new OpenGLShaderProgram::Uniform (shader, uniformName); } }; //============================================================================== /** This loads a 3D model from an OBJ file and converts it into some vertex buffers that we can draw. */ struct Shape { Shape (OpenGLContext& openGLContext) { if (shapeFile.load (BinaryData::teapot_obj).wasOk()) for (int i = 0; i < shapeFile.shapes.size(); ++i) vertexBuffers.add (new VertexBuffer (openGLContext, *shapeFile.shapes.getUnchecked(i))); } void draw (OpenGLContext& openGLContext, Attributes& attributes) { for (int i = 0; i < vertexBuffers.size(); ++i) { VertexBuffer& vertexBuffer = *vertexBuffers.getUnchecked (i); vertexBuffer.bind(); attributes.enable (openGLContext); glDrawElements (GL_TRIANGLES, vertexBuffer.numIndices, GL_UNSIGNED_INT, 0); attributes.disable (openGLContext); } } private: struct VertexBuffer { VertexBuffer (OpenGLContext& context, WavefrontObjFile::Shape& shape) : openGLContext (context) { numIndices = shape.mesh.indices.size(); openGLContext.extensions.glGenBuffers (1, &vertexBuffer); openGLContext.extensions.glBindBuffer (GL_ARRAY_BUFFER, vertexBuffer); Array vertices; createVertexListFromMesh (shape.mesh, vertices, Colours::green); openGLContext.extensions.glBufferData (GL_ARRAY_BUFFER, vertices.size() * (int) sizeof (Vertex), vertices.getRawDataPointer(), GL_STATIC_DRAW); openGLContext.extensions.glGenBuffers (1, &indexBuffer); openGLContext.extensions.glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, indexBuffer); openGLContext.extensions.glBufferData (GL_ELEMENT_ARRAY_BUFFER, numIndices * (int) sizeof (juce::uint32), shape.mesh.indices.getRawDataPointer(), GL_STATIC_DRAW); } ~VertexBuffer() { openGLContext.extensions.glDeleteBuffers (1, &vertexBuffer); openGLContext.extensions.glDeleteBuffers (1, &indexBuffer); } void bind() { openGLContext.extensions.glBindBuffer (GL_ARRAY_BUFFER, vertexBuffer); openGLContext.extensions.glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, indexBuffer); } GLuint vertexBuffer, indexBuffer; int numIndices; OpenGLContext& openGLContext; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VertexBuffer) }; WavefrontObjFile shapeFile; OwnedArray vertexBuffers; static void createVertexListFromMesh (const WavefrontObjFile::Mesh& mesh, Array& list, Colour colour) { const float scale = 0.2f; WavefrontObjFile::TextureCoord defaultTexCoord = { 0.5f, 0.5f }; WavefrontObjFile::Vertex defaultNormal = { 0.5f, 0.5f, 0.5f }; for (int i = 0; i < mesh.vertices.size(); ++i) { const WavefrontObjFile::Vertex& v = mesh.vertices.getReference (i); const WavefrontObjFile::Vertex& n = i < mesh.normals.size() ? mesh.normals.getReference (i) : defaultNormal; const WavefrontObjFile::TextureCoord& tc = i < mesh.textureCoords.size() ? mesh.textureCoords.getReference (i) : defaultTexCoord; Vertex vert = { { scale * v.x, scale * v.y, scale * v.z, }, { scale * n.x, scale * n.y, scale * n.z, }, { colour.getFloatRed(), colour.getFloatGreen(), colour.getFloatBlue(), colour.getFloatAlpha() }, { tc.x, tc.y } }; list.add (vert); } } }; //============================================================================== // These classes are used to load textures from the various sources that the demo uses.. struct DemoTexture { virtual ~DemoTexture() {} virtual bool applyTo (OpenGLTexture&) = 0; String name; }; struct DynamicTexture : public DemoTexture { DynamicTexture() { name = "Dynamically-generated texture"; } Image image; BouncingNumber x, y; bool applyTo (OpenGLTexture& texture) override { const int size = 128; if (! image.isValid()) image = Image (Image::ARGB, size, size, true); { Graphics g (image); g.fillAll (Colours::lightcyan); g.setColour (Colours::darkred); g.drawRect (0, 0, size, size, 2); g.setColour (Colours::green); g.fillEllipse (x.getValue() * size * 0.9f, y.getValue() * size * 0.9f, size * 0.1f, size * 0.1f); g.setColour (Colours::black); g.setFont (40); g.drawFittedText (String (Time::getCurrentTime().getMilliseconds()), image.getBounds(), Justification::centred, 1); } texture.loadImage (image); return true; } }; struct BuiltInTexture : public DemoTexture { BuiltInTexture (const char* nm, const void* imageData, size_t imageSize) : image (resizeImageToPowerOfTwo (ImageFileFormat::loadFrom (imageData, imageSize))) { name = nm; } Image image; bool applyTo (OpenGLTexture& texture) override { texture.loadImage (image); return false; } }; struct TextureFromFile : public DemoTexture { TextureFromFile (const File& file) { name = file.getFileName(); image = resizeImageToPowerOfTwo (ImageFileFormat::loadFrom (file)); } Image image; bool applyTo (OpenGLTexture& texture) override { texture.loadImage (image); return false; } }; static Image resizeImageToPowerOfTwo (Image image) { if (! (isPowerOfTwo (image.getWidth()) && isPowerOfTwo (image.getHeight()))) return image.rescaled (jmin (1024, nextPowerOfTwo (image.getWidth())), jmin (1024, nextPowerOfTwo (image.getHeight()))); return image; } class OpenGLDemo; //============================================================================== /** This component sits on top of the main GL demo, and contains all the sliders and widgets that control things. */ class DemoControlsOverlay : public Component, private CodeDocument::Listener, private ComboBox::Listener, private Slider::Listener, private Button::Listener, private Timer { public: DemoControlsOverlay (OpenGLDemo& d) : demo (d), vertexEditorComp (vertexDocument, nullptr), fragmentEditorComp (fragmentDocument, nullptr), tabbedComp (TabbedButtonBar::TabsAtLeft), showBackgroundToggle ("Draw 2D graphics in background") { addAndMakeVisible (statusLabel); statusLabel.setJustificationType (Justification::topLeft); statusLabel.setColour (Label::textColourId, Colours::black); statusLabel.setFont (Font (14.0f)); addAndMakeVisible (sizeSlider); sizeSlider.setRange (0.0, 1.0, 0.001); sizeSlider.addListener (this); addAndMakeVisible (zoomLabel); zoomLabel.setText ("Zoom:", dontSendNotification); zoomLabel.attachToComponent (&sizeSlider, true); addAndMakeVisible (speedSlider); speedSlider.setRange (0.0, 0.5, 0.001); speedSlider.addListener (this); speedSlider.setSkewFactor (0.5f); addAndMakeVisible (speedLabel); speedLabel.setText ("Speed:", dontSendNotification); speedLabel.attachToComponent (&speedSlider, true); addAndMakeVisible (showBackgroundToggle); showBackgroundToggle.addListener (this); Colour editorBackground (Colours::white.withAlpha (0.6f)); addAndMakeVisible (tabbedComp); tabbedComp.setTabBarDepth (25); tabbedComp.setColour (TabbedButtonBar::tabTextColourId, Colours::grey); tabbedComp.addTab ("Vertex", editorBackground, &vertexEditorComp, false); tabbedComp.addTab ("Fragment", editorBackground, &fragmentEditorComp, false); vertexEditorComp.setColour (CodeEditorComponent::backgroundColourId, editorBackground); fragmentEditorComp.setColour (CodeEditorComponent::backgroundColourId, editorBackground); vertexDocument.addListener (this); fragmentDocument.addListener (this); textures.add (new BuiltInTexture ("Portmeirion", BinaryData::portmeirion_jpg, BinaryData::portmeirion_jpgSize)); textures.add (new BuiltInTexture ("Tiled Background", BinaryData::tile_background_png, BinaryData::tile_background_pngSize)); textures.add (new BuiltInTexture ("JUCE logo", BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize)); textures.add (new DynamicTexture()); addAndMakeVisible (textureBox); textureBox.addListener (this); updateTexturesList(); addAndMakeVisible (presetBox); presetBox.addListener (this); Array presets (getPresets()); StringArray presetNames; for (int i = 0; i < presets.size(); ++i) presetBox.addItem (presets[i].name, i + 1); addAndMakeVisible (presetLabel); presetLabel.setText ("Shader Preset:", dontSendNotification); presetLabel.attachToComponent (&presetBox, true); addAndMakeVisible (textureLabel); textureLabel.setText ("Texture:", dontSendNotification); textureLabel.attachToComponent (&textureBox, true); } void initialise() { showBackgroundToggle.setToggleState (false, sendNotification); textureBox.setSelectedItemIndex (0); presetBox.setSelectedItemIndex (0); speedSlider.setValue (0.01); sizeSlider.setValue (0.5); } void resized() override { Rectangle area (getLocalBounds().reduced (4)); Rectangle top (area.removeFromTop (75)); Rectangle sliders (top.removeFromRight (area.getWidth() / 2)); showBackgroundToggle.setBounds (sliders.removeFromBottom (25)); speedSlider.setBounds (sliders.removeFromBottom (25)); sizeSlider.setBounds (sliders.removeFromBottom (25)); top.removeFromRight (70); statusLabel.setBounds (top); Rectangle shaderArea (area.removeFromBottom (area.getHeight() / 2)); Rectangle presets (shaderArea.removeFromTop (25)); presets.removeFromLeft (100); presetBox.setBounds (presets.removeFromLeft (150)); presets.removeFromLeft (100); textureBox.setBounds (presets); shaderArea.removeFromTop (4); tabbedComp.setBounds (shaderArea); } void mouseDown (const MouseEvent& e) override { demo.draggableOrientation.mouseDown (e.getPosition()); } void mouseDrag (const MouseEvent& e) override { demo.draggableOrientation.mouseDrag (e.getPosition()); } void mouseWheelMove (const MouseEvent&, const MouseWheelDetails& d) override { sizeSlider.setValue (sizeSlider.getValue() + d.deltaY); } void mouseMagnify (const MouseEvent&, float magnifyAmmount) override { sizeSlider.setValue (sizeSlider.getValue() + magnifyAmmount - 1.0f); } void selectPreset (int preset) { const ShaderPreset& p = getPresets()[preset]; vertexDocument.replaceAllContent (p.vertexShader); fragmentDocument.replaceAllContent (p.fragmentShader); startTimer (1); } void selectTexture (int itemID) { #if JUCE_MODAL_LOOPS_PERMITTED if (itemID == 1000) { static File lastLocation = File::getSpecialLocation (File::userPicturesDirectory); FileChooser fc ("Choose an image to open...", lastLocation, "*.jpg;*.jpeg;*.png;*.gif"); if (fc.browseForFileToOpen()) { lastLocation = fc.getResult(); textures.add (new TextureFromFile (fc.getResult())); updateTexturesList(); textureBox.setSelectedId (textures.size()); } } else #endif { if (DemoTexture* t = textures [itemID - 1]) demo.setTexture (t); } } void updateTexturesList() { textureBox.clear(); for (int i = 0; i < textures.size(); ++i) textureBox.addItem (textures.getUnchecked(i)->name, i + 1); #if JUCE_MODAL_LOOPS_PERMITTED textureBox.addSeparator(); textureBox.addItem ("Load from a file...", 1000); #endif } void updateShader() { startTimer (10); } Label statusLabel; private: void sliderValueChanged (Slider*) override { demo.scale = (float) sizeSlider.getValue(); demo.rotationSpeed = (float) speedSlider.getValue(); } void buttonClicked (Button*) override { demo.doBackgroundDrawing = showBackgroundToggle.getToggleState(); } enum { shaderLinkDelay = 500 }; void codeDocumentTextInserted (const String& /*newText*/, int /*insertIndex*/) override { startTimer (shaderLinkDelay); } void codeDocumentTextDeleted (int /*startIndex*/, int /*endIndex*/) override { startTimer (shaderLinkDelay); } void timerCallback() override { stopTimer(); demo.setShaderProgram (vertexDocument.getAllContent(), fragmentDocument.getAllContent()); } void comboBoxChanged (ComboBox* box) override { if (box == &presetBox) selectPreset (presetBox.getSelectedItemIndex()); else if (box == &textureBox) selectTexture (textureBox.getSelectedId()); } OpenGLDemo& demo; Label speedLabel, zoomLabel; CodeDocument vertexDocument, fragmentDocument; CodeEditorComponent vertexEditorComp, fragmentEditorComp; TabbedComponent tabbedComp; ComboBox presetBox, textureBox; Label presetLabel, textureLabel; Slider speedSlider, sizeSlider; ToggleButton showBackgroundToggle; OwnedArray textures; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoControlsOverlay) }; //============================================================================== /** This is the main demo component - the GL context gets attached to it, and it implements the OpenGLRenderer callback so that it can do real GL work. */ class OpenGLDemo : public Component, private OpenGLRenderer { public: OpenGLDemo() : doBackgroundDrawing (false), scale (0.5f), rotationSpeed (0.0f), rotation (0.0f), textureToUse (nullptr) { if (MainAppWindow* mw = MainAppWindow::getMainAppWindow()) mw->setRenderingEngine (0); setOpaque (true); addAndMakeVisible (controlsOverlay = new DemoControlsOverlay (*this)); openGLContext.setRenderer (this); openGLContext.attachTo (*this); openGLContext.setContinuousRepainting (true); controlsOverlay->initialise(); } ~OpenGLDemo() { openGLContext.detach(); } void newOpenGLContextCreated() override { // nothing to do in this case - we'll initialise our shaders + textures // on demand, during the render callback. freeAllContextObjects(); if (controlsOverlay != nullptr) controlsOverlay->updateShader(); } void openGLContextClosing() override { // When the context is about to close, you must use this callback to delete // any GPU resources while the context is still current. freeAllContextObjects(); } void freeAllContextObjects() { shape = nullptr; shader = nullptr; attributes = nullptr; uniforms = nullptr; texture.release(); } // This is a virtual method in OpenGLRenderer, and is called when it's time // to do your GL rendering. void renderOpenGL() override { jassert (OpenGLHelpers::isContextActive()); const float desktopScale = (float) openGLContext.getRenderingScale(); OpenGLHelpers::clear (Colours::lightblue); if (textureToUse != nullptr) if (! textureToUse->applyTo (texture)) textureToUse = nullptr; // First draw our background graphics to demonstrate the OpenGLGraphicsContext class if (doBackgroundDrawing) drawBackground2DStuff (desktopScale); updateShader(); // Check whether we need to compile a new shader if (shader == nullptr) return; // Having used the juce 2D renderer, it will have messed-up a whole load of GL state, so // we need to initialise some important settings before doing our normal GL 3D drawing.. glEnable (GL_DEPTH_TEST); glDepthFunc (GL_LESS); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); openGLContext.extensions.glActiveTexture (GL_TEXTURE0); glEnable (GL_TEXTURE_2D); glViewport (0, 0, roundToInt (desktopScale * getWidth()), roundToInt (desktopScale * getHeight())); texture.bind(); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); shader->use(); if (uniforms->projectionMatrix != nullptr) uniforms->projectionMatrix->setMatrix4 (getProjectionMatrix().mat, 1, false); if (uniforms->viewMatrix != nullptr) uniforms->viewMatrix->setMatrix4 (getViewMatrix().mat, 1, false); if (uniforms->texture != nullptr) uniforms->texture->set ((GLint) 0); if (uniforms->lightPosition != nullptr) uniforms->lightPosition->set (-15.0f, 10.0f, 15.0f, 0.0f); if (uniforms->bouncingNumber != nullptr) uniforms->bouncingNumber->set (bouncingNumber.getValue()); shape->draw (openGLContext, *attributes); // Reset the element buffers so child Components draw correctly openGLContext.extensions.glBindBuffer (GL_ARRAY_BUFFER, 0); openGLContext.extensions.glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0); if (! controlsOverlay->isMouseButtonDown()) rotation += (float) rotationSpeed; } Matrix3D getProjectionMatrix() const { float w = 1.0f / (scale + 0.1f); float h = w * getLocalBounds().toFloat().getAspectRatio (false); return Matrix3D::fromFrustum (-w, w, -h, h, 4.0f, 30.0f); } Matrix3D getViewMatrix() const { Matrix3D viewMatrix = draggableOrientation.getRotationMatrix() * Vector3D (0.0f, 1.0f, -10.0f); Matrix3D rotationMatrix = viewMatrix.rotated (Vector3D (rotation, rotation, -0.3f)); return rotationMatrix * viewMatrix; } void setTexture (DemoTexture* t) { textureToUse = t; } void setShaderProgram (const String& vertexShader, const String& fragmentShader) { newVertexShader = vertexShader; newFragmentShader = fragmentShader; } void paint (Graphics&) override {} void resized() override { controlsOverlay->setBounds (getLocalBounds()); draggableOrientation.setViewport (getLocalBounds()); } Draggable3DOrientation draggableOrientation; bool doBackgroundDrawing; float scale, rotationSpeed; BouncingNumber bouncingNumber; private: void drawBackground2DStuff (float desktopScale) { // Create an OpenGLGraphicsContext that will draw into this GL window.. ScopedPointer glRenderer (createOpenGLGraphicsContext (openGLContext, roundToInt (desktopScale * getWidth()), roundToInt (desktopScale * getHeight()))); if (glRenderer != nullptr) { Graphics g (*glRenderer); g.addTransform (AffineTransform::scale (desktopScale)); for (int i = 0; i < numElementsInArray (stars); ++i) { float size = 0.25f; // This stuff just creates a spinning star shape and fills it.. Path p; p.addStar (Point (getWidth() * stars[i].x.getValue(), getHeight() * stars[i].y.getValue()), 7, getHeight() * size * 0.5f, getHeight() * size, stars[i].angle.getValue()); float hue = stars[i].hue.getValue(); g.setGradientFill (ColourGradient (Colours::green.withRotatedHue (hue).withAlpha (0.8f), 0, 0, Colours::red.withRotatedHue (hue).withAlpha (0.5f), 0, (float) getHeight(), false)); g.fillPath (p); } } } OpenGLContext openGLContext; ScopedPointer controlsOverlay; float rotation; ScopedPointer shader; ScopedPointer shape; ScopedPointer attributes; ScopedPointer uniforms; OpenGLTexture texture; DemoTexture* textureToUse; String newVertexShader, newFragmentShader; struct BackgroundStar { SlowerBouncingNumber x, y, hue, angle; }; BackgroundStar stars[3]; //============================================================================== void updateShader() { if (newVertexShader.isNotEmpty() || newFragmentShader.isNotEmpty()) { ScopedPointer newShader (new OpenGLShaderProgram (openGLContext)); String statusText; if (newShader->addVertexShader (OpenGLHelpers::translateVertexShaderToV3 (newVertexShader)) && newShader->addFragmentShader (OpenGLHelpers::translateFragmentShaderToV3 (newFragmentShader)) && newShader->link()) { shape = nullptr; attributes = nullptr; uniforms = nullptr; shader = newShader; shader->use(); shape = new Shape (openGLContext); attributes = new Attributes (openGLContext, *shader); uniforms = new Uniforms (openGLContext, *shader); statusText = "GLSL: v" + String (OpenGLShaderProgram::getLanguageVersion(), 2); } else { statusText = newShader->getLastError(); } controlsOverlay->statusLabel.setText (statusText, dontSendNotification); newVertexShader = String::empty; newFragmentShader = String::empty; } } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLDemo) }; //============================================================================== struct ShaderPreset { const char* name; const char* vertexShader; const char* fragmentShader; }; static Array getPresets() { #define SHADER_DEMO_HEADER \ "/* This is a live OpenGL Shader demo.\n" \ " Edit the shader program below and it will be \n" \ " compiled and applied to the model above!\n" \ "*/\n\n" ShaderPreset presets[] = { { "Texture + Lighting", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec4 normal;\n" "attribute vec4 sourceColour;\n" "attribute vec2 texureCoordIn;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "uniform vec4 lightPosition;\n" "\n" "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" "varying float lightIntensity;\n" "\n" "void main()\n" "{\n" " destinationColour = sourceColour;\n" " textureCoordOut = texureCoordIn;\n" "\n" " vec4 light = viewMatrix * lightPosition;\n" " lightIntensity = dot (light, normal);\n" "\n" " gl_Position = projectionMatrix * viewMatrix * position;\n" "}\n", SHADER_DEMO_HEADER #if JUCE_OPENGL_ES "varying lowp vec4 destinationColour;\n" "varying lowp vec2 textureCoordOut;\n" "varying highp float lightIntensity;\n" #else "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" "varying float lightIntensity;\n" #endif "\n" "uniform sampler2D demoTexture;\n" "\n" "void main()\n" "{\n" #if JUCE_OPENGL_ES " highp float l = max (0.3, lightIntensity * 0.3);\n" " highp vec4 colour = vec4 (l, l, l, 1.0);\n" #else " float l = max (0.3, lightIntensity * 0.3);\n" " vec4 colour = vec4 (l, l, l, 1.0);\n" #endif " gl_FragColor = colour * texture2D (demoTexture, textureCoordOut);\n" "}\n" }, { "Textured", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec4 sourceColour;\n" "attribute vec2 texureCoordIn;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "\n" "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" "\n" "void main()\n" "{\n" " destinationColour = sourceColour;\n" " textureCoordOut = texureCoordIn;\n" " gl_Position = projectionMatrix * viewMatrix * position;\n" "}\n", SHADER_DEMO_HEADER #if JUCE_OPENGL_ES "varying lowp vec4 destinationColour;\n" "varying lowp vec2 textureCoordOut;\n" #else "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" #endif "\n" "uniform sampler2D demoTexture;\n" "\n" "void main()\n" "{\n" " gl_FragColor = texture2D (demoTexture, textureCoordOut);\n" "}\n" }, { "Flat Colour", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec4 sourceColour;\n" "attribute vec2 texureCoordIn;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "\n" "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" "\n" "void main()\n" "{\n" " destinationColour = sourceColour;\n" " textureCoordOut = texureCoordIn;\n" " gl_Position = projectionMatrix * viewMatrix * position;\n" "}\n", SHADER_DEMO_HEADER #if JUCE_OPENGL_ES "varying lowp vec4 destinationColour;\n" "varying lowp vec2 textureCoordOut;\n" #else "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" #endif "\n" "void main()\n" "{\n" " gl_FragColor = destinationColour;\n" "}\n" }, { "Rainbow", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec4 sourceColour;\n" "attribute vec2 texureCoordIn;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "\n" "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" "\n" "varying float xPos;\n" "varying float yPos;\n" "varying float zPos;\n" "\n" "void main()\n" "{\n" " vec4 v = vec4 (position);\n" " xPos = clamp (v.x, 0.0, 1.0);\n" " yPos = clamp (v.y, 0.0, 1.0);\n" " zPos = clamp (v.z, 0.0, 1.0);\n" " gl_Position = projectionMatrix * viewMatrix * position;\n" "}", SHADER_DEMO_HEADER #if JUCE_OPENGL_ES "varying lowp vec4 destinationColour;\n" "varying lowp vec2 textureCoordOut;\n" "varying lowp float xPos;\n" "varying lowp float yPos;\n" "varying lowp float zPos;\n" #else "varying vec4 destinationColour;\n" "varying vec2 textureCoordOut;\n" "varying float xPos;\n" "varying float yPos;\n" "varying float zPos;\n" #endif "\n" "void main()\n" "{\n" " gl_FragColor = vec4 (xPos, yPos, zPos, 1.0);\n" "}" }, { "Changing Colour", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec2 texureCoordIn;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "\n" "varying vec2 textureCoordOut;\n" "\n" "void main()\n" "{\n" " textureCoordOut = texureCoordIn;\n" " gl_Position = projectionMatrix * viewMatrix * position;\n" "}\n", SHADER_DEMO_HEADER "#define PI 3.1415926535897932384626433832795\n" "\n" #if JUCE_OPENGL_ES "precision mediump float;\n" "varying lowp vec2 textureCoordOut;\n" #else "varying vec2 textureCoordOut;\n" #endif "uniform float bouncingNumber;\n" "\n" "void main()\n" "{\n" " float b = bouncingNumber;\n" " float n = b * PI * 2.0;\n" " float sn = (sin (n * textureCoordOut.x) * 0.5) + 0.5;\n" " float cn = (sin (n * textureCoordOut.y) * 0.5) + 0.5;\n" "\n" " vec4 col = vec4 (b, sn, cn, 1.0);\n" " gl_FragColor = col;\n" "}\n" }, { "Simple Light", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec4 normal;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "uniform vec4 lightPosition;\n" "\n" "varying float lightIntensity;\n" "\n" "void main()\n" "{\n" " vec4 light = viewMatrix * lightPosition;\n" " lightIntensity = dot (light, normal);\n" "\n" " gl_Position = projectionMatrix * viewMatrix * position;\n" "}\n", SHADER_DEMO_HEADER #if JUCE_OPENGL_ES "varying highp float lightIntensity;\n" #else "varying float lightIntensity;\n" #endif "\n" "void main()\n" "{\n" #if JUCE_OPENGL_ES " highp float l = lightIntensity * 0.25;\n" " highp vec4 colour = vec4 (l, l, l, 1.0);\n" #else " float l = lightIntensity * 0.25;\n" " vec4 colour = vec4 (l, l, l, 1.0);\n" #endif "\n" " gl_FragColor = colour;\n" "}\n" }, { "Flattened", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec4 normal;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "uniform vec4 lightPosition;\n" "\n" "varying float lightIntensity;\n" "\n" "void main()\n" "{\n" " vec4 light = viewMatrix * lightPosition;\n" " lightIntensity = dot (light, normal);\n" "\n" " vec4 v = vec4 (position);\n" " v.z = v.z * 0.1;\n" "\n" " gl_Position = projectionMatrix * viewMatrix * v;\n" "}\n", SHADER_DEMO_HEADER #if JUCE_OPENGL_ES "varying highp float lightIntensity;\n" #else "varying float lightIntensity;\n" #endif "\n" "void main()\n" "{\n" #if JUCE_OPENGL_ES " highp float l = lightIntensity * 0.25;\n" " highp vec4 colour = vec4 (l, l, l, 1.0);\n" #else " float l = lightIntensity * 0.25;\n" " vec4 colour = vec4 (l, l, l, 1.0);\n" #endif "\n" " gl_FragColor = colour;\n" "}\n" }, { "Toon Shader", SHADER_DEMO_HEADER "attribute vec4 position;\n" "attribute vec4 normal;\n" "\n" "uniform mat4 projectionMatrix;\n" "uniform mat4 viewMatrix;\n" "uniform vec4 lightPosition;\n" "\n" "varying float lightIntensity;\n" "\n" "void main()\n" "{\n" " vec4 light = viewMatrix * lightPosition;\n" " lightIntensity = dot (light, normal);\n" "\n" " gl_Position = projectionMatrix * viewMatrix * position;\n" "}\n", SHADER_DEMO_HEADER #if JUCE_OPENGL_ES "varying highp float lightIntensity;\n" #else "varying float lightIntensity;\n" #endif "\n" "void main()\n" "{\n" #if JUCE_OPENGL_ES " highp float intensity = lightIntensity * 0.5;\n" " highp vec4 colour;\n" #else " float intensity = lightIntensity * 0.5;\n" " vec4 colour;\n" #endif "\n" " if (intensity > 0.95)\n" " colour = vec4 (1.0, 0.5, 0.5, 1.0);\n" " else if (intensity > 0.5)\n" " colour = vec4 (0.6, 0.3, 0.3, 1.0);\n" " else if (intensity > 0.25)\n" " colour = vec4 (0.4, 0.2, 0.2, 1.0);\n" " else\n" " colour = vec4 (0.2, 0.1, 0.1, 1.0);\n" "\n" " gl_FragColor = colour;\n" "}\n" } }; return Array (presets, numElementsInArray (presets)); } }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("20 Graphics: OpenGL"); #endif JUCE-4.1.0/examples/Demo/Source/Demos/OpenGLDemo2D.cpp000066400000000000000000000203531263452017400221050ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #if JUCE_OPENGL //============================================================================== class OpenGL2DShaderDemo : public Component, private CodeDocument::Listener, private ComboBox::Listener, private Timer { public: OpenGL2DShaderDemo() : fragmentEditorComp (fragmentDocument, nullptr) { setOpaque (true); if (MainAppWindow* mw = MainAppWindow::getMainAppWindow()) mw->setOpenGLRenderingEngine(); addAndMakeVisible (statusLabel); statusLabel.setJustificationType (Justification::topLeft); statusLabel.setColour (Label::textColourId, Colours::black); statusLabel.setFont (Font (14.0f)); Array presets (getPresets()); StringArray presetNames; for (int i = 0; i < presets.size(); ++i) presetBox.addItem (presets[i].name, i + 1); addAndMakeVisible (presetLabel); presetLabel.setText ("Shader Preset:", dontSendNotification); presetLabel.attachToComponent (&presetBox, true); addAndMakeVisible (presetBox); presetBox.addListener (this); Colour editorBackground (Colours::white.withAlpha (0.6f)); fragmentEditorComp.setColour (CodeEditorComponent::backgroundColourId, editorBackground); fragmentEditorComp.setOpaque (false); fragmentDocument.addListener (this); addAndMakeVisible (fragmentEditorComp); presetBox.setSelectedItemIndex (0); } ~OpenGL2DShaderDemo() { shader = nullptr; } void paint (Graphics& g) override { g.fillCheckerBoard (getLocalBounds(), 48, 48, Colours::lightgrey, Colours::white); if (shader == nullptr || shader->getFragmentShaderCode() != fragmentCode) { shader = nullptr; if (fragmentCode.isNotEmpty()) { shader = new OpenGLGraphicsContextCustomShader (fragmentCode); Result result (shader->checkCompilation (g.getInternalContext())); if (result.failed()) { statusLabel.setText (result.getErrorMessage(), dontSendNotification); shader = nullptr; } } } if (shader != nullptr) { statusLabel.setText (String::empty, dontSendNotification); shader->fillRect (g.getInternalContext(), getLocalBounds()); } } void resized() override { Rectangle area (getLocalBounds().reduced (4)); statusLabel.setBounds (area.removeFromTop (75)); area.removeFromTop (area.getHeight() / 2); Rectangle presets (area.removeFromTop (25)); presets.removeFromLeft (100); presetBox.setBounds (presets.removeFromLeft (150)); area.removeFromTop (4); fragmentEditorComp.setBounds (area); } void selectPreset (int preset) { fragmentDocument.replaceAllContent (getPresets()[preset].fragmentShader); startTimer (1); } ScopedPointer shader; Label statusLabel, presetLabel; ComboBox presetBox; CodeDocument fragmentDocument; CodeEditorComponent fragmentEditorComp; String fragmentCode; private: enum { shaderLinkDelay = 500 }; void codeDocumentTextInserted (const String& /*newText*/, int /*insertIndex*/) override { startTimer (shaderLinkDelay); } void codeDocumentTextDeleted (int /*startIndex*/, int /*endIndex*/) override { startTimer (shaderLinkDelay); } void timerCallback() override { stopTimer(); fragmentCode = fragmentDocument.getAllContent(); repaint(); } void comboBoxChanged (ComboBox*) override { selectPreset (presetBox.getSelectedItemIndex()); } struct ShaderPreset { const char* name; const char* fragmentShader; }; static Array getPresets() { #define SHADER_DEMO_HEADER \ "/* This demo shows the use of the OpenGLGraphicsContextCustomShader,\n" \ " which allows a 2D area to be filled using a GL shader program.\n" \ "\n" \ " Edit the shader program below and it will be \n" \ " recompiled in real-time!\n" \ "*/\n\n" ShaderPreset presets[] = { { "Simple Gradient", SHADER_DEMO_HEADER "void main()\n" "{\n" " " JUCE_MEDIUMP " vec4 colour1 = vec4 (1.0, 0.4, 0.6, 1.0);\n" " " JUCE_MEDIUMP " vec4 colour2 = vec4 (0.0, 0.8, 0.6, 1.0);\n" " " JUCE_MEDIUMP " float alpha = pixelPos.x / 1000.0;\n" " gl_FragColor = pixelAlpha * mix (colour1, colour2, alpha);\n" "}\n" }, { "Circular Gradient", SHADER_DEMO_HEADER "void main()\n" "{\n" " " JUCE_MEDIUMP " vec4 colour1 = vec4 (1.0, 0.4, 0.6, 1.0);\n" " " JUCE_MEDIUMP " vec4 colour2 = vec4 (0.3, 0.4, 0.4, 1.0);\n" " " JUCE_MEDIUMP " float alpha = distance (pixelPos, vec2 (600.0, 500.0)) / 400.0;\n" " gl_FragColor = pixelAlpha * mix (colour1, colour2, alpha);\n" "}\n" }, { "Circle", SHADER_DEMO_HEADER "void main()\n" "{\n" " " JUCE_MEDIUMP " vec4 colour1 = vec4 (0.1, 0.1, 0.9, 1.0);\n" " " JUCE_MEDIUMP " vec4 colour2 = vec4 (0.0, 0.8, 0.6, 1.0);\n" " " JUCE_MEDIUMP " float distance = distance (pixelPos, vec2 (600.0, 500.0));\n" "\n" " " JUCE_MEDIUMP " float innerRadius = 200.0;\n" " " JUCE_MEDIUMP " float outerRadius = 210.0;\n" "\n" " if (distance < innerRadius)\n" " gl_FragColor = colour1;\n" " else if (distance > outerRadius)\n" " gl_FragColor = colour2;\n" " else\n" " gl_FragColor = mix (colour1, colour2, (distance - innerRadius) / (outerRadius - innerRadius));\n" "\n" " gl_FragColor *= pixelAlpha;\n" "}\n" }, { "Solid Colour", SHADER_DEMO_HEADER "void main()\n" "{\n" " gl_FragColor = vec4 (1.0, 0.6, 0.1, pixelAlpha);\n" "}\n" } }; return Array (presets, numElementsInArray (presets)); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGL2DShaderDemo) }; //============================================================================== // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("20 Graphics: OpenGL 2D"); #endif JUCE-4.1.0/examples/Demo/Source/Demos/PropertiesDemo.cpp000066400000000000000000000176221263452017400227340ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class DemoButtonPropertyComponent : public ButtonPropertyComponent { public: DemoButtonPropertyComponent (const String& propertyName) : ButtonPropertyComponent (propertyName, true), counter (0) { refresh(); } void buttonClicked() override { ++counter; AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon, "Action Button Pressed", "Pressing this type of property component can trigger an action such as showing an alert window!"); refresh(); } String getButtonText() const override { String text ("Button clicked "); text << counter << " times"; return text; } private: int counter; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoButtonPropertyComponent) }; //============================================================================== class DemoSliderPropertyComponent : public SliderPropertyComponent { public: DemoSliderPropertyComponent (const String& propertyName) : SliderPropertyComponent (propertyName, 0.0, 100.0, 0.001) { setValue (Random::getSystemRandom().nextDouble() * 42.0); } void setValue (double newValue) override { slider.setValue (newValue); } private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoSliderPropertyComponent) }; //============================================================================== static Array createTextEditors() { Array comps; comps.add (new TextPropertyComponent (Value (var ("This is a single-line Text Property")), "Text 1", 200, false)); comps.add (new TextPropertyComponent (Value (var ("Another one")), "Text 2", 200, false)); comps.add (new TextPropertyComponent (Value (var ( "Lorem ipsum dolor sit amet, cu mei labore admodum facilisi. Iriure iuvaret invenire ea vim, cum quod" "si intellegat delicatissimi an. Cetero recteque ei eos, his an scripta fastidii placerat. Nec et anc" "illae nominati corrumpit. Vis dictas audire accumsan ad, elit fabulas saperet mel eu.\n" "\n" "Dicam utroque ius ne, eum choro phaedrum eu. Ut mel omnes virtute appareat, semper quodsi labitur in" " cum. Est aeque eripuit deleniti in, amet ferri recusabo ea nec. Cu persius maiorum corrumpit mei, i" "n ridens perpetua mea, pri nobis tation inermis an. Vis alii autem cotidieque ut, ius harum salutatu" "s ut. Mel eu purto veniam dissentias, malis doctus bonorum ne vel, mundi aperiam adversarium cu eum." " Mei quando graeci te, dolore accusata mei te.")), "Multi-line text", 1000, true)); return comps; } static Array createSliders (int howMany) { Array comps; for (int i = 0; i < howMany; ++i) comps.add (new DemoSliderPropertyComponent ("Slider " + String (i + 1))); return comps; } static Array createButtons (int howMany) { Array comps; for (int i = 0; i < howMany; ++i) comps.add (new DemoButtonPropertyComponent ("Button " + String (i + 1))); for (int i = 0; i < howMany; ++i) comps.add (new BooleanPropertyComponent (Value (Random::getSystemRandom().nextBool()), "Toggle " + String (i + 1), "Description of toggleable thing")); return comps; } static Array createChoices (int howMany) { Array comps; StringArray choices; Array choiceVars; for (int i = 0; i < howMany; ++i) { choices.add ("Item " + String (i)); choiceVars.add (i); } for (int i = 0; i < howMany; ++i) comps.add (new ChoicePropertyComponent (Value (Random::getSystemRandom().nextInt (6)), "Choice Property " + String (i + 1), choices, choiceVars)); return comps; } //============================================================================== class PropertiesDemo : public Component { public: PropertiesDemo() { setOpaque (true); addAndMakeVisible (propertyPanel); propertyPanel.addSection ("Text Editors", createTextEditors()); propertyPanel.addSection ("Sliders", createSliders (3)); propertyPanel.addSection ("Choice Properties", createChoices (6)); propertyPanel.addSection ("Buttons & Toggles", createButtons (3)); } void paint (Graphics& g) override { g.fillAll (Colour::greyLevel (0.8f)); } void resized() override { propertyPanel.setBounds (getLocalBounds().reduced (4)); } private: PropertyPanel propertyPanel; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PropertiesDemo) }; //============================================================================== class ConcertinaDemo : public Component, private Timer { public: ConcertinaDemo() { setOpaque (true); addAndMakeVisible (concertinaPanel); { PropertyPanel* panel = new PropertyPanel ("Text Editors"); panel->addProperties (createTextEditors()); addPanel (panel); } { PropertyPanel* panel = new PropertyPanel ("Sliders"); panel->addSection ("Section 1", createSliders (4), true); panel->addSection ("Section 2", createSliders (3), true); addPanel (panel); } { PropertyPanel* panel = new PropertyPanel ("Choice Properties"); panel->addProperties (createChoices (12)); addPanel (panel); } { PropertyPanel* panel = new PropertyPanel ("Buttons & Toggles"); panel->addProperties (createButtons (6)); addPanel (panel); } startTimer (300); } void paint (Graphics& g) override { g.fillAll (Colour::greyLevel (0.8f)); } void resized() override { concertinaPanel.setBounds (getLocalBounds().reduced (4)); } void timerCallback() override { stopTimer(); concertinaPanel.expandPanelFully (concertinaPanel.getPanel(0), true); } private: ConcertinaPanel concertinaPanel; void addPanel (PropertyPanel* panel) { concertinaPanel.addPanel (-1, panel, true); concertinaPanel.setMaximumPanelSize (panel, panel->getTotalContentHeight()); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ConcertinaDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo1 ("10 Components: Property Panels"); static JuceDemoType demo2 ("10 Components: Concertina Panels"); JUCE-4.1.0/examples/Demo/Source/Demos/SystemInfoDemo.cpp000066400000000000000000000204071263452017400226730ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" static String getMacAddressList() { Array macAddresses; MACAddress::findAllAddresses (macAddresses); String addressList; for (int i = 0; i < macAddresses.size(); ++i) addressList << " " << macAddresses[i].toString() << newLine; return addressList; } static String getFileSystemRoots() { Array roots; File::findFileSystemRoots (roots); StringArray rootList; for (int i = 0; i < roots.size(); ++i) rootList.add (roots[i].getFullPathName()); return rootList.joinIntoString (", "); } static String getIPAddressList() { Array addresses; IPAddress::findAllAddresses (addresses); String addressList; for (int i = 0; i < addresses.size(); ++i) addressList << " " << addresses[i].toString() << newLine; return addressList; } static const char* getDisplayOrientation() { switch (Desktop::getInstance().getCurrentOrientation()) { case Desktop::upright: return "Upright"; case Desktop::upsideDown: return "Upside-down"; case Desktop::rotatedClockwise: return "Rotated Clockwise"; case Desktop::rotatedAntiClockwise: return "Rotated Anti-clockwise"; default: jassertfalse; break; } return nullptr; } static String getDisplayInfo() { const Desktop::Displays& displays = Desktop::getInstance().getDisplays(); String displayDesc; for (int i = 0; i < displays.displays.size(); ++i) { const Desktop::Displays::Display display = displays.displays.getReference(i); displayDesc << "Display " << (i + 1) << (display.isMain ? " (main)" : "") << ":" << newLine << " Total area: " << display.totalArea.toString() << newLine << " User area: " << display.userArea.toString() << newLine << " DPI: " << display.dpi << newLine << " Scale: " << display.scale << newLine << newLine; } displayDesc << "Orientation: " << getDisplayOrientation() << newLine; return displayDesc; } static String getAllSystemInfo() { String systemInfo; systemInfo << "Here are a few system statistics..." << newLine << newLine << "Time and date: " << Time::getCurrentTime().toString (true, true) << newLine << "System up-time: " << RelativeTime::milliseconds ((int64) Time::getMillisecondCounterHiRes()).getDescription() << newLine << "Compilation date: " << Time::getCompilationDate().toString (true, false) << newLine << newLine << "Operating system: " << SystemStats::getOperatingSystemName() << newLine << "Host name: " << SystemStats::getComputerName() << newLine << "Device type: " << SystemStats::getDeviceDescription() << newLine << "User logon name: " << SystemStats::getLogonName() << newLine << "Full user name: " << SystemStats::getFullUserName() << newLine << "User region: " << SystemStats::getUserRegion() << newLine << "User language: " << SystemStats::getUserLanguage() << newLine << "Display language: " << SystemStats::getDisplayLanguage() << newLine << newLine << "Number of CPUs: " << SystemStats::getNumCpus() << newLine << "Memory size: " << SystemStats::getMemorySizeInMegabytes() << " MB" << newLine << "CPU vendor: " << SystemStats::getCpuVendor() << newLine << "CPU speed: " << SystemStats::getCpuSpeedInMegaherz() << " MHz" << newLine << "CPU has MMX: " << (SystemStats::hasMMX() ? "yes" : "no") << newLine << "CPU has SSE: " << (SystemStats::hasSSE() ? "yes" : "no") << newLine << "CPU has SSE2: " << (SystemStats::hasSSE2() ? "yes" : "no") << newLine << "CPU has SSE3: " << (SystemStats::hasSSE3() ? "yes" : "no") << newLine << "CPU has 3DNOW: " << (SystemStats::has3DNow() ? "yes" : "no") << newLine << newLine << "Current working directory: " << File::getCurrentWorkingDirectory().getFullPathName() << newLine << "Current application file: " << File::getSpecialLocation (File::currentApplicationFile).getFullPathName() << newLine << "Current executable file: " << File::getSpecialLocation (File::currentExecutableFile) .getFullPathName() << newLine << "Invoked executable file: " << File::getSpecialLocation (File::invokedExecutableFile) .getFullPathName() << newLine << newLine << "User home folder: " << File::getSpecialLocation (File::userHomeDirectory) .getFullPathName() << newLine << "User desktop folder: " << File::getSpecialLocation (File::userDesktopDirectory) .getFullPathName() << newLine << "User documents folder: " << File::getSpecialLocation (File::userDocumentsDirectory) .getFullPathName() << newLine << "User application data folder: " << File::getSpecialLocation (File::userApplicationDataDirectory) .getFullPathName() << newLine << "User music folder: " << File::getSpecialLocation (File::userMusicDirectory) .getFullPathName() << newLine << "User movies folder: " << File::getSpecialLocation (File::userMoviesDirectory) .getFullPathName() << newLine << "User pictures folder: " << File::getSpecialLocation (File::userPicturesDirectory) .getFullPathName() << newLine << "Common application data folder: " << File::getSpecialLocation (File::commonApplicationDataDirectory).getFullPathName() << newLine << "Common documents folder: " << File::getSpecialLocation (File::commonDocumentsDirectory) .getFullPathName() << newLine << "Local temp folder: " << File::getSpecialLocation (File::tempDirectory) .getFullPathName() << newLine << newLine << "File System roots: " << getFileSystemRoots() << newLine << "Free space in home folder: " << File::descriptionOfSizeInBytes (File::getSpecialLocation (File::userHomeDirectory) .getBytesFreeOnVolume()) << newLine << newLine << getDisplayInfo() << newLine << "Network IP addresses: " << newLine << getIPAddressList() << newLine << "Network card MAC addresses: " << newLine << getMacAddressList() << newLine; DBG (systemInfo); return systemInfo; } class SystemInfoDemo : public Component { public: SystemInfoDemo() { addAndMakeVisible (resultsBox); resultsBox.setReadOnly (true); resultsBox.setMultiLine (true); resultsBox.setColour (TextEditor::backgroundColourId, Colours::transparentBlack); resultsBox.setFont (Font (Font::getDefaultMonospacedFontName(), 12.0f, Font::plain)); resultsBox.setText (getAllSystemInfo()); } void paint (Graphics& g) override { g.fillAll (Colour::greyLevel (0.93f)); } void resized() override { resultsBox.setBounds (getLocalBounds().reduced (8)); } private: TextEditor resultsBox; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SystemInfoDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("02 System Info"); JUCE-4.1.0/examples/Demo/Source/Demos/TimersAndEventsDemo.cpp000066400000000000000000000204621263452017400236470ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== /** Simple message that holds a Colour. */ struct ColourMessage : public Message { ColourMessage (Colour col) : colour (col) { } /** Returns the colour of a ColourMessage of white if the message is not a ColourMessage. */ static Colour getColour (const Message& message) { if (const ColourMessage* cm = dynamic_cast (&message)) return cm->colour; return Colours::white; } private: Colour colour; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ColourMessage) }; //============================================================================== /** Simple component that can be triggered to flash. The flash will then fade using a Timer to repaint itself and will send a change message once it is finished. */ class FlashingComponent : public Component, public MessageListener, public ChangeBroadcaster, private Timer { public: FlashingComponent() : flashAlpha (0.0f), colour (Colours::red) { } void startFlashing() { flashAlpha = 1.0f; startTimerHz (25); } /** Stops this component flashing without sending a change message. */ void stopFlashing() { flashAlpha = 0.0f; stopTimer(); repaint(); } /** Sets the colour of the component. */ void setFlashColour (const Colour newColour) { colour = newColour; repaint(); } /** Draws our component. */ void paint (Graphics& g) override { g.setColour (colour.overlaidWith (Colours::white.withAlpha (flashAlpha))); g.fillEllipse (getLocalBounds().toFloat()); } /** Custom mouse handler to trigger a flash. */ void mouseDown (const MouseEvent&) override { startFlashing(); } /** Message listener callback used to change our colour */ void handleMessage (const Message& message) override { setFlashColour (ColourMessage::getColour (message)); } private: float flashAlpha; Colour colour; void timerCallback() override { // Reduce the alpha level of the flash slightly so it fades out flashAlpha -= 0.075f; if (flashAlpha < 0.05f) { stopFlashing(); sendChangeMessage(); // Once we've finsihed flashing send a change message to trigger the next component to flash } repaint(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FlashingComponent) }; //============================================================================== class TimersAndEventsDemo : public Component, private ChangeListener, private Button::Listener { public: TimersAndEventsDemo() { setOpaque (true); // Create and add our FlashingComponents with some random colours and sizes for (int i = 0; i < numFlashingComponents; ++i) { FlashingComponent* newFlasher = new FlashingComponent(); flashingComponents.add (newFlasher); newFlasher->setFlashColour (getRandomBrightColour()); newFlasher->addChangeListener (this); const int diameter = 25 + random.nextInt (75); newFlasher->setSize (diameter, diameter); addAndMakeVisible (newFlasher); } addAndMakeVisible (stopButton); stopButton.addListener (this); stopButton.setButtonText ("Stop"); addAndMakeVisible (randomColourButton); randomColourButton.addListener (this); randomColourButton.setButtonText ("Set Random Colour"); // lay out our components in a psudo random grid Rectangle area (0, 100, 150, 150); for (int i = 0; i < flashingComponents.size(); ++i) { FlashingComponent* comp = flashingComponents.getUnchecked (i); Rectangle buttonArea (area.withSize (comp->getWidth(), comp->getHeight())); buttonArea.translate (random.nextInt (area.getWidth() - comp->getWidth()), random.nextInt (area.getHeight() - comp->getHeight())); comp->setBounds (buttonArea); area.translate (area.getWidth(), 0); // if we go off the right start a new row if (area.getRight() > (800 - area.getWidth())) { area.translate (0, area.getWidth()); area.setX (0); } } } ~TimersAndEventsDemo() { stopButton.removeListener (this); randomColourButton.removeListener (this); for (int i = flashingComponents.size(); --i >= 0;) flashingComponents.getUnchecked (i)->removeChangeListener (this); } void paint (Graphics& g) override { g.fillAll (Colours::darkgrey); } void paintOverChildren (Graphics& g) override { const Rectangle explanationArea (getLocalBounds().removeFromTop (100)); AttributedString s; s.append ("Click on a circle to make it flash. When it has finished flashing it will send a message which causes the next circle to flash"); s.append (newLine); s.append ("Click the \"Set Random Colour\" button to change the colour of one of the circles."); s.append (newLine); s.setFont (Font (16.0f)); s.setColour (Colours::lightgrey); s.draw (g, explanationArea.reduced (10).toFloat()); } void resized() override { Rectangle area (getLocalBounds().removeFromBottom (40)); randomColourButton.setBounds (area.removeFromLeft (166).reduced (8)); stopButton.setBounds (area.removeFromRight (166).reduced (8)); } private: enum { numFlashingComponents = 9 }; OwnedArray flashingComponents; TextButton randomColourButton, stopButton; Random random; void changeListenerCallback (ChangeBroadcaster* source) override { for (int i = 0; i < flashingComponents.size(); ++i) if (source == flashingComponents.getUnchecked (i)) flashingComponents.getUnchecked ((i + 1) % flashingComponents.size())->startFlashing(); } void buttonClicked (Button* button) override { if (button == &randomColourButton) { // Here we post a new ColourMessage with a random colour to a random flashing component. // This will send a message to the component asynchronously and trigger its handleMessage callback flashingComponents.getUnchecked (random.nextInt (flashingComponents.size()))->postMessage (new ColourMessage (getRandomBrightColour())); } else if (button == &stopButton) { for (int i = 0; i < flashingComponents.size(); ++i) flashingComponents.getUnchecked (i)->stopFlashing(); } } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TimersAndEventsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 Timers & Events"); JUCE-4.1.0/examples/Demo/Source/Demos/UnitTestsDemo.cpp000066400000000000000000000134311263452017400225340ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" struct UnitTestClasses { class UnitTestsDemo; class TestRunnerThread; //============================================================================== // This subclass of UnitTestRunner is used to redirect the test output to our // TextBox, and to interrupt the running tests when our thread is asked to stop.. class CustomTestRunner : public UnitTestRunner { public: CustomTestRunner (TestRunnerThread& trt) : owner (trt) { } void logMessage (const String& message) override { owner.logMessage (message); } bool shouldAbortTests() override { return owner.threadShouldExit(); } private: TestRunnerThread& owner; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CustomTestRunner) }; //============================================================================== class TestRunnerThread : public Thread, private Timer { public: TestRunnerThread (UnitTestsDemo& utd) : Thread ("Unit Tests"), owner (utd) { } void run() override { CustomTestRunner runner (*this); runner.runAllTests(); startTimer (50); // when finished, start the timer which will // wait for the thread to end, then tell our component. } void logMessage (const String& message) { MessageManagerLock mm (this); if (mm.lockWasGained()) // this lock may fail if this thread has been told to stop owner.logMessage (message); } void timerCallback() override { if (! isThreadRunning()) owner.testFinished(); // inform the demo page when done, so it can delete this thread. } private: UnitTestsDemo& owner; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TestRunnerThread) }; //============================================================================== class UnitTestsDemo : public Component, public Button::Listener { public: UnitTestsDemo() : startTestButton ("Run Unit Tests...") { setOpaque (true); addAndMakeVisible (startTestButton); addAndMakeVisible (testResultsBox); testResultsBox.setMultiLine (true); testResultsBox.setFont (Font (Font::getDefaultMonospacedFontName(), 12.0f, Font::plain)); startTestButton.addListener (this); logMessage ("This panel runs all the built-in JUCE unit-tests.\n"); logMessage ("To add your own unit-tests, see the JUCE_UNIT_TESTS macro."); } ~UnitTestsDemo() { stopTest(); } //============================================================================== void paint (Graphics& g) override { g.fillAll (Colours::grey); } void resized() override { Rectangle r (getLocalBounds().reduced (6)); startTestButton.setBounds (r.removeFromTop (25).removeFromLeft (200)); testResultsBox.setBounds (r.withTrimmedTop (5)); } void buttonClicked (Button* buttonThatWasClicked) override { if (buttonThatWasClicked == &startTestButton) { startTest(); } } void startTest() { testResultsBox.clear(); startTestButton.setEnabled (false); currentTestThread = new TestRunnerThread (*this); currentTestThread->startThread(); } void stopTest() { if (currentTestThread != nullptr) { currentTestThread->stopThread (15000); currentTestThread = nullptr; } } void logMessage (const String& message) { testResultsBox.moveCaretToEnd(); testResultsBox.insertTextAtCaret (message + newLine); testResultsBox.moveCaretToEnd(); } void testFinished() { stopTest(); startTestButton.setEnabled (true); logMessage (newLine + "*** Tests finished ***"); } private: ScopedPointer currentTestThread; TextButton startTestButton; TextEditor testResultsBox; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (UnitTestsDemo) }; }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 Unit Tests"); JUCE-4.1.0/examples/Demo/Source/Demos/ValueTreesDemo.cpp000066400000000000000000000217601263452017400226550ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class ValueTreeItem : public TreeViewItem, private ValueTree::Listener { public: ValueTreeItem (const ValueTree& v, UndoManager& um) : tree (v), undoManager (um) { tree.addListener (this); } String getUniqueName() const override { return tree["name"].toString(); } bool mightContainSubItems() override { return tree.getNumChildren() > 0; } void paintItem (Graphics& g, int width, int height) override { g.setColour (Colours::black); g.setFont (15.0f); g.drawText (tree["name"].toString(), 4, 0, width - 4, height, Justification::centredLeft, true); } void itemOpennessChanged (bool isNowOpen) override { if (isNowOpen && getNumSubItems() == 0) refreshSubItems(); else clearSubItems(); } var getDragSourceDescription() override { return "Drag Demo"; } bool isInterestedInDragSource (const DragAndDropTarget::SourceDetails& dragSourceDetails) override { return dragSourceDetails.description == "Drag Demo"; } void itemDropped (const DragAndDropTarget::SourceDetails&, int insertIndex) override { OwnedArray selectedTrees; getSelectedTreeViewItems (*getOwnerView(), selectedTrees); moveItems (*getOwnerView(), selectedTrees, tree, insertIndex, undoManager); } static void moveItems (TreeView& treeView, const OwnedArray& items, ValueTree newParent, int insertIndex, UndoManager& undoManager) { if (items.size() > 0) { ScopedPointer oldOpenness (treeView.getOpennessState (false)); for (int i = items.size(); --i >= 0;) { ValueTree& v = *items.getUnchecked(i); if (v.getParent().isValid() && newParent != v && ! newParent.isAChildOf (v)) { if (v.getParent() == newParent && newParent.indexOf(v) < insertIndex) --insertIndex; v.getParent().removeChild (v, &undoManager); newParent.addChild (v, insertIndex, &undoManager); } } if (oldOpenness != nullptr) treeView.restoreOpennessState (*oldOpenness, false); } } static void getSelectedTreeViewItems (TreeView& treeView, OwnedArray& items) { const int numSelected = treeView.getNumSelectedItems(); for (int i = 0; i < numSelected; ++i) if (const ValueTreeItem* vti = dynamic_cast (treeView.getSelectedItem (i))) items.add (new ValueTree (vti->tree)); } private: ValueTree tree; UndoManager& undoManager; void refreshSubItems() { clearSubItems(); for (int i = 0; i < tree.getNumChildren(); ++i) addSubItem (new ValueTreeItem (tree.getChild (i), undoManager)); } void valueTreePropertyChanged (ValueTree&, const Identifier&) override { repaintItem(); } void valueTreeChildAdded (ValueTree& parentTree, ValueTree&) override { treeChildrenChanged (parentTree); } void valueTreeChildRemoved (ValueTree& parentTree, ValueTree&, int) override { treeChildrenChanged (parentTree); } void valueTreeChildOrderChanged (ValueTree& parentTree, int, int) override { treeChildrenChanged (parentTree); } void valueTreeParentChanged (ValueTree&) override {} void treeChildrenChanged (const ValueTree& parentTree) { if (parentTree == tree) { refreshSubItems(); treeHasChanged(); setOpen (true); } } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueTreeItem) }; //============================================================================== class ValueTreesDemo : public Component, public DragAndDropContainer, private ButtonListener, private Timer { public: ValueTreesDemo() : undoButton ("Undo"), redoButton ("Redo") { addAndMakeVisible (tree); tree.setDefaultOpenness (true); tree.setMultiSelectEnabled (true); tree.setRootItem (rootItem = new ValueTreeItem (createRootValueTree(), undoManager)); tree.setColour (TreeView::backgroundColourId, Colours::white); addAndMakeVisible (undoButton); addAndMakeVisible (redoButton); undoButton.addListener (this); redoButton.addListener (this); startTimer (500); } ~ValueTreesDemo() { tree.setRootItem (nullptr); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle r (getLocalBounds().reduced (8)); Rectangle buttons (r.removeFromBottom (22)); undoButton.setBounds (buttons.removeFromLeft (100)); buttons.removeFromLeft (6); redoButton.setBounds (buttons.removeFromLeft (100)); r.removeFromBottom (4); tree.setBounds (r); } static ValueTree createTree (const String& desc) { ValueTree t ("Item"); t.setProperty ("name", desc, nullptr); return t; } static ValueTree createRootValueTree() { ValueTree vt = createTree ("This demo displays a ValueTree as a treeview."); vt.addChild (createTree ("You can drag around the nodes to rearrange them"), -1, nullptr); vt.addChild (createTree ("..and press 'delete' to delete them"), -1, nullptr); vt.addChild (createTree ("Then, you can use the undo/redo buttons to undo these changes"), -1, nullptr); int n = 1; vt.addChild (createRandomTree (n, 0), -1, nullptr); return vt; } static ValueTree createRandomTree (int& counter, int depth) { ValueTree t = createTree ("Item " + String (counter++)); if (depth < 3) for (int i = 1 + Random::getSystemRandom().nextInt (7); --i >= 0;) t.addChild (createRandomTree (counter, depth + 1), -1, nullptr); return t; } void deleteSelectedItems() { OwnedArray selectedItems; ValueTreeItem::getSelectedTreeViewItems (tree, selectedItems); for (int i = selectedItems.size(); --i >= 0;) { ValueTree& v = *selectedItems.getUnchecked(i); if (v.getParent().isValid()) v.getParent().removeChild (v, &undoManager); } } bool keyPressed (const KeyPress& key) override { if (key == KeyPress::deleteKey) { deleteSelectedItems(); return true; } if (key == KeyPress ('z', ModifierKeys::commandModifier, 0)) { undoManager.undo(); return true; } if (key == KeyPress ('z', ModifierKeys::commandModifier | ModifierKeys::shiftModifier, 0)) { undoManager.redo(); return true; } return Component::keyPressed (key); } void buttonClicked (Button* b) override { if (b == &undoButton) undoManager.undo(); else if (b == &redoButton) undoManager.redo(); } private: TreeView tree; TextButton undoButton, redoButton; ScopedPointer rootItem; UndoManager undoManager; void timerCallback() override { undoManager.beginNewTransaction(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueTreesDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 ValueTrees"); JUCE-4.1.0/examples/Demo/Source/Demos/VideoDemo.cpp000066400000000000000000000220711263452017400216400ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #if JUCE_QUICKTIME || JUCE_DIRECTSHOW //============================================================================== // so that we can easily have two video windows each with a file browser, wrap this up as a class.. class MovieComponentWithFileBrowser : public Component, public DragAndDropTarget, private FilenameComponentListener { public: MovieComponentWithFileBrowser() : isDragOver (false), fileChooser ("movie", File::nonexistent, true, false, false, "*", String::empty, "(choose a video file to play)") { addAndMakeVisible (videoComp); addAndMakeVisible (fileChooser); fileChooser.addListener (this); fileChooser.setBrowseButtonText ("browse"); } void setFile (const File& file) { fileChooser.setCurrentFile (file, true); } void paintOverChildren (Graphics& g) { if (isDragOver) { g.setColour (Colours::red); g.drawRect (fileChooser.getBounds(), 2); } } void resized() { videoComp.setBoundsWithCorrectAspectRatio (Rectangle (0, 0, getWidth(), getHeight() - 30), Justification::centred); fileChooser.setBounds (0, getHeight() - 24, getWidth(), 24); } bool isInterestedInDragSource (const SourceDetails&) { return true; } void itemDragEnter (const SourceDetails&) { isDragOver = true; repaint(); } void itemDragExit (const SourceDetails&) { isDragOver = false; repaint(); } void itemDropped (const SourceDetails& dragSourceDetails) { setFile (dragSourceDetails.description.toString()); isDragOver = false; repaint(); } private: #if JUCE_QUICKTIME QuickTimeMovieComponent videoComp; #elif JUCE_DIRECTSHOW DirectShowComponent videoComp; #endif bool isDragOver; FilenameComponent fileChooser; void filenameComponentChanged (FilenameComponent*) override { // this is called when the user changes the filename in the file chooser box #if JUCE_QUICKTIME if (videoComp.loadMovie (fileChooser.getCurrentFile(), true)) #elif JUCE_DIRECTSHOW if (videoComp.loadMovie (fileChooser.getCurrentFile())) #endif { // loaded the file ok, so let's start it playing.. videoComp.play(); resized(); // update to reflect the video's aspect ratio } else { AlertWindow::showMessageBox (AlertWindow::WarningIcon, "Couldn't load the file!", #if JUCE_QUICKTIME "Sorry, QuickTime didn't manage to load that file!"); #elif JUCE_DIRECTSHOW "Sorry, DirectShow didn't manage to load that file!"); #endif } } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MovieComponentWithFileBrowser) }; //============================================================================== class VideoDemo : public Component, public DragAndDropContainer, private Button::Listener, private FileBrowserListener { public: VideoDemo() : moviesWildcardFilter ("*", "*", "Movies File Filter"), directoryThread ("Movie File Scanner Thread"), movieList (&moviesWildcardFilter, directoryThread), fileTree (movieList), resizerBar (&stretchableManager, 1, false) { setOpaque (true); movieList.setDirectory (File::getSpecialLocation (File::userMoviesDirectory), true, true); directoryThread.startThread (1); fileTree.addListener (this); fileTree.setColour (TreeView::backgroundColourId, Colours::lightgrey); addAndMakeVisible (fileTree); addAndMakeVisible (resizerBar); loadLeftButton.setButtonText ("Load Left"); loadRightButton.setButtonText ("Load Right"); loadLeftButton.addListener (this); loadRightButton.addListener (this); addAndMakeVisible (loadLeftButton); addAndMakeVisible (loadRightButton); addAndMakeVisible (movieCompLeft); addAndMakeVisible (movieCompRight); // we have to set up our StretchableLayoutManager so it know the limits and preferred sizes of it's contents stretchableManager.setItemLayout (0, // for the fileTree -0.1, -0.9, // must be between 50 pixels and 90% of the available space -0.3); // and its preferred size is 30% of the total available space stretchableManager.setItemLayout (1, // for the resize bar 5, 5, 5); // hard limit to 5 pixels stretchableManager.setItemLayout (2, // for the movie components -0.1, -0.9, // size must be between 50 pixels and 90% of the available space -0.7); // and its preferred size is 70% of the total available space } ~VideoDemo() { loadLeftButton.removeListener (this); loadRightButton.removeListener (this); fileTree.removeListener (this); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { // make a list of two of our child components that we want to reposition Component* comps[] = { &fileTree, &resizerBar, nullptr }; // this will position the 3 components, one above the other, to fit // vertically into the rectangle provided. stretchableManager.layOutComponents (comps, 3, 0, 0, getWidth(), getHeight(), true, true); // now position out two video components in the space that's left Rectangle area (getLocalBounds().removeFromBottom (getHeight() - resizerBar.getBottom())); { Rectangle buttonArea (area.removeFromTop (30)); loadLeftButton.setBounds (buttonArea.removeFromLeft (buttonArea.getWidth() / 2).reduced (5)); loadRightButton.setBounds (buttonArea.reduced (5)); } movieCompLeft.setBounds (area.removeFromLeft (area.getWidth() / 2).reduced (5)); movieCompRight.setBounds (area.reduced (5)); } private: WildcardFileFilter moviesWildcardFilter; TimeSliceThread directoryThread; DirectoryContentsList movieList; FileTreeComponent fileTree; StretchableLayoutManager stretchableManager; StretchableLayoutResizerBar resizerBar; TextButton loadLeftButton, loadRightButton; MovieComponentWithFileBrowser movieCompLeft, movieCompRight; void buttonClicked (Button* button) override { if (button == &loadLeftButton) movieCompLeft.setFile (fileTree.getSelectedFile (0)); else if (button == &loadRightButton) movieCompRight.setFile (fileTree.getSelectedFile (0)); } void selectionChanged() override { // we're just going to update the drag description of out tree so that rows can be dragged onto the file players fileTree.setDragAndDropDescription (fileTree.getSelectedFile().getFullPathName()); } void fileClicked (const File&, const MouseEvent&) override {} void fileDoubleClicked (const File&) override {} void browserRootChanged (const File&) override {} JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VideoDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("29 Graphics: Video Playback"); #endif JUCE-4.1.0/examples/Demo/Source/Demos/WavefrontObjParser.h000066400000000000000000000276461263452017400232320ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include //============================================================================== /** This is a quick-and-dirty parser for the 3D OBJ file format. Just call load() and if there aren't any errors, the 'shapes' array should be filled with all the shape objects that were loaded from the file. */ class WavefrontObjFile { public: WavefrontObjFile() {} Result load (const String& objFileContent) { shapes.clear(); return parseObjFile (StringArray::fromLines (objFileContent)); } Result load (const File& file) { sourceFile = file; return load (file.loadFileAsString()); } //============================================================================== typedef juce::uint32 Index; struct Vertex { float x, y, z; }; struct TextureCoord { float x, y; }; struct Mesh { Array vertices, normals; Array textureCoords; Array indices; }; struct Material { Material() noexcept : shininess (1.0f), refractiveIndex (0.0f) { zerostruct (ambient); zerostruct (diffuse); zerostruct (specular); zerostruct (transmittance); zerostruct (emission); } String name; Vertex ambient, diffuse, specular, transmittance, emission; float shininess, refractiveIndex; String ambientTextureName, diffuseTextureName, specularTextureName, normalTextureName; StringPairArray parameters; }; struct Shape { String name; Mesh mesh; Material material; }; OwnedArray shapes; private: //============================================================================== File sourceFile; struct TripleIndex { TripleIndex() noexcept : vertexIndex (-1), textureIndex (-1), normalIndex (-1) {} bool operator< (const TripleIndex& other) const noexcept { if (this == &other) return false; if (vertexIndex != other.vertexIndex) return vertexIndex < other.vertexIndex; if (textureIndex != other.textureIndex) return textureIndex < other.textureIndex; return normalIndex < other.normalIndex; } int vertexIndex, textureIndex, normalIndex; }; struct IndexMap { std::map map; Index getIndexFor (TripleIndex i, Mesh& newMesh, const Mesh& srcMesh) { const std::map::iterator it (map.find (i)); if (it != map.end()) return it->second; const Index index = (Index) newMesh.vertices.size(); if (isPositiveAndBelow (i.vertexIndex, srcMesh.vertices.size())) newMesh.vertices.add (srcMesh.vertices.getReference (i.vertexIndex)); if (isPositiveAndBelow (i.normalIndex, srcMesh.normals.size())) newMesh.normals.add (srcMesh.normals.getReference (i.normalIndex)); if (isPositiveAndBelow (i.textureIndex, srcMesh.textureCoords.size())) newMesh.textureCoords.add (srcMesh.textureCoords.getReference (i.textureIndex)); map[i] = index; return index; } }; static float parseFloat (String::CharPointerType& t) { t = t.findEndOfWhitespace(); return (float) CharacterFunctions::readDoubleValue (t); } static Vertex parseVertex (String::CharPointerType t) { Vertex v; v.x = parseFloat (t); v.y = parseFloat (t); v.z = parseFloat (t); return v; } static TextureCoord parseTextureCoord (String::CharPointerType t) { TextureCoord tc; tc.x = parseFloat (t); tc.y = parseFloat (t); return tc; } static bool matchToken (String::CharPointerType& t, const char* token) { const int len = (int) strlen (token); if (CharacterFunctions::compareUpTo (CharPointer_ASCII (token), t, len) == 0) { String::CharPointerType end = t + len; if (end.isEmpty() || end.isWhitespace()) { t = end.findEndOfWhitespace(); return true; } } return false; } struct Face { Face (String::CharPointerType t) { while (! t.isEmpty()) triples.add (parseTriple (t)); } Array triples; void addIndices (Mesh& newMesh, const Mesh& srcMesh, IndexMap& indexMap) { TripleIndex i0 (triples[0]), i1, i2 (triples[1]); for (int i = 2; i < triples.size(); ++i) { i1 = i2; i2 = triples.getReference (i); newMesh.indices.add (indexMap.getIndexFor (i0, newMesh, srcMesh)); newMesh.indices.add (indexMap.getIndexFor (i1, newMesh, srcMesh)); newMesh.indices.add (indexMap.getIndexFor (i2, newMesh, srcMesh)); } } static TripleIndex parseTriple (String::CharPointerType& t) { TripleIndex i; t = t.findEndOfWhitespace(); i.vertexIndex = t.getIntValue32() - 1; t = findEndOfFaceToken (t); if (t.isEmpty() || t.getAndAdvance() != '/') return i; if (*t == '/') { ++t; } else { i.textureIndex = t.getIntValue32() - 1; t = findEndOfFaceToken (t); if (t.isEmpty() || t.getAndAdvance() != '/') return i; } i.normalIndex = t.getIntValue32() - 1; t = findEndOfFaceToken (t); return i; } static String::CharPointerType findEndOfFaceToken (String::CharPointerType t) noexcept { return CharacterFunctions::findEndOfToken (t, CharPointer_ASCII ("/ \t"), String::empty.getCharPointer()); } }; static Shape* parseFaceGroup (const Mesh& srcMesh, const Array& faceGroup, const Material& material, const String& name) { if (faceGroup.size() == 0) return nullptr; ScopedPointer shape (new Shape()); shape->name = name; shape->material = material; IndexMap indexMap; for (int i = 0; i < faceGroup.size(); ++i) faceGroup.getReference(i).addIndices (shape->mesh, srcMesh, indexMap); return shape.release(); } Result parseObjFile (const StringArray& lines) { Mesh mesh; Array faceGroup; Array knownMaterials; Material lastMaterial; String lastName; for (int lineNum = 0; lineNum < lines.size(); ++lineNum) { String::CharPointerType l = lines[lineNum].getCharPointer().findEndOfWhitespace(); if (matchToken (l, "v")) { mesh.vertices.add (parseVertex (l)); continue; } if (matchToken (l, "vn")) { mesh.normals.add (parseVertex (l)); continue; } if (matchToken (l, "vt")) { mesh.textureCoords.add (parseTextureCoord (l)); continue; } if (matchToken (l, "f")) { faceGroup.add (Face (l)); continue; } if (matchToken (l, "usemtl")) { const String name (String (l).trim()); for (int i = knownMaterials.size(); --i >= 0;) { if (knownMaterials.getReference(i).name == name) { lastMaterial = knownMaterials.getReference(i); break; } } continue; } if (matchToken (l, "mtllib")) { Result r = parseMaterial (knownMaterials, String (l).trim()); continue; } if (matchToken (l, "g") || matchToken (l, "o")) { if (Shape* shape = parseFaceGroup (mesh, faceGroup, lastMaterial, lastName)) shapes.add (shape); faceGroup.clear(); lastName = StringArray::fromTokens (l, " \t", "")[0]; continue; } } if (Shape* shape = parseFaceGroup (mesh, faceGroup, lastMaterial, lastName)) shapes.add (shape); return Result::ok(); } Result parseMaterial (Array& materials, const String& filename) { jassert (sourceFile.exists()); File f (sourceFile.getSiblingFile (filename)); if (! f.exists()) return Result::fail ("Cannot open file: " + filename); StringArray lines; lines.addLines (f.loadFileAsString()); materials.clear(); Material material; for (int i = 0; i < lines.size(); ++i) { String::CharPointerType l (lines[i].getCharPointer().findEndOfWhitespace()); if (matchToken (l, "newmtl")) { materials.add (material); material.name = String (l).trim(); continue; } if (matchToken (l, "Ka")) { material.ambient = parseVertex (l); continue; } if (matchToken (l, "Kd")) { material.diffuse = parseVertex (l); continue; } if (matchToken (l, "Ks")) { material.specular = parseVertex (l); continue; } if (matchToken (l, "Kt")) { material.transmittance = parseVertex (l); continue; } if (matchToken (l, "Ke")) { material.emission = parseVertex (l); continue; } if (matchToken (l, "Ni")) { material.refractiveIndex = parseFloat (l); continue; } if (matchToken (l, "Ns")) { material.shininess = parseFloat (l); continue; } if (matchToken (l, "map_Ka")) { material.ambientTextureName = String (l).trim(); continue; } if (matchToken (l, "map_Kd")) { material.diffuseTextureName = String (l).trim(); continue; } if (matchToken (l, "map_Ks")) { material.specularTextureName = String (l).trim(); continue; } if (matchToken (l, "map_Ns")) { material.normalTextureName = String (l).trim(); continue; } StringArray tokens; tokens.addTokens (l, " \t", ""); if (tokens.size() >= 2) material.parameters.set (tokens[0].trim(), tokens[1].trim()); } materials.add (material); return Result::ok(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WavefrontObjFile) }; JUCE-4.1.0/examples/Demo/Source/Demos/WebBrowserDemo.cpp000066400000000000000000000116061263452017400226550ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" #if JUCE_WEB_BROWSER //============================================================================== /** We'll use a subclass of WebBrowserComponent to demonstrate how to get callbacks when the browser changes URL. You don't need to do this, you can just also just use the WebBrowserComponent class directly. */ class DemoBrowserComponent : public WebBrowserComponent { public: //============================================================================== DemoBrowserComponent (TextEditor& addressBox) : addressTextBox (addressBox) { } // This method gets called when the browser is about to go to a new URL.. bool pageAboutToLoad (const String& newURL) override { // We'll just update our address box to reflect the new location.. addressTextBox.setText (newURL, false); // we could return false here to tell the browser not to go ahead with // loading the page. return true; } // This method gets called when the browser is requested to launch a new window void newWindowAttemptingToLoad (const String& newURL) override { // We'll just load the URL into the main window goToURL (newURL); } private: TextEditor& addressTextBox; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoBrowserComponent) }; //============================================================================== class WebBrowserDemo : public Component, private TextEditor::Listener, private ButtonListener { public: WebBrowserDemo() : goButton ("Go", "Go to URL"), backButton ("<<", "Back"), forwardButton (">>", "Forward") { setOpaque (true); // Create an address box.. addAndMakeVisible (addressTextBox); addressTextBox.setTextToShowWhenEmpty ("Enter a web address, e.g. http://www.juce.com", Colours::grey); addressTextBox.addListener (this); // create the actual browser component addAndMakeVisible (webView = new DemoBrowserComponent (addressTextBox)); // add some buttons.. addAndMakeVisible (goButton); goButton.addListener (this); addAndMakeVisible (backButton); backButton.addListener (this); addAndMakeVisible (forwardButton); forwardButton.addListener (this); // send the browser to a start page.. webView->goToURL ("http://www.juce.com"); } void paint (Graphics& g) override { g.fillAll (Colours::grey); } void resized() override { webView->setBounds (10, 45, getWidth() - 20, getHeight() - 55); goButton.setBounds (getWidth() - 45, 10, 35, 25); addressTextBox.setBounds (100, 10, getWidth() - 155, 25); backButton.setBounds (10, 10, 35, 25); forwardButton.setBounds (55, 10, 35, 25); } private: ScopedPointer webView; TextEditor addressTextBox; TextButton goButton, backButton, forwardButton; void textEditorTextChanged (TextEditor&) override {} void textEditorEscapeKeyPressed (TextEditor&) override {} void textEditorFocusLost (TextEditor&) override {} void textEditorReturnKeyPressed (TextEditor&) override { webView->goToURL (addressTextBox.getText()); } void buttonClicked (Button* b) override { if (b == &backButton) webView->goBack(); else if (b == &forwardButton) webView->goForward(); else if (b == &goButton) webView->goToURL (addressTextBox.getText()); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WebBrowserDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Web Browser"); #endif // JUCE_WEB_BROWSER JUCE-4.1.0/examples/Demo/Source/Demos/WidgetsDemo.cpp000066400000000000000000001615301263452017400222040ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" static void showBubbleMessage (Component* targetComponent, const String& textToShow) { BubbleMessageComponent* bmc = new BubbleMessageComponent(); if (Desktop::canUseSemiTransparentWindows()) { bmc->setAlwaysOnTop (true); bmc->addToDesktop (0); } else { targetComponent->getTopLevelComponent()->addChildComponent (bmc); } AttributedString text (textToShow); text.setJustification (Justification::centred); bmc->showAt (targetComponent, text, 2000, true, true); } //============================================================================== /** To demonstrate how sliders can have custom snapping applied to their values, this simple class snaps the value to 50 if it comes near. */ struct SnappingSlider : public Slider { double snapValue (double attemptedValue, DragMode dragMode) override { if (dragMode == notDragging) return attemptedValue; // if they're entering the value in the text-box, don't mess with it. if (attemptedValue > 40 && attemptedValue < 60) return 50.0; return attemptedValue; } }; /** A TextButton that pops up a colour chooser to change its colours. */ class ColourChangeButton : public TextButton, public ChangeListener { public: ColourChangeButton() : TextButton ("Click to change colour...") { setSize (10, 24); changeWidthToFitText(); } void clicked() override { ColourSelector* colourSelector = new ColourSelector(); colourSelector->setName ("background"); colourSelector->setCurrentColour (findColour (TextButton::buttonColourId)); colourSelector->addChangeListener (this); colourSelector->setColour (ColourSelector::backgroundColourId, Colours::transparentBlack); colourSelector->setSize (300, 400); CallOutBox::launchAsynchronously (colourSelector, getScreenBounds(), nullptr); } void changeListenerCallback (ChangeBroadcaster* source) override { if (ColourSelector* cs = dynamic_cast (source)) setColour (TextButton::buttonColourId, cs->getCurrentColour()); } }; //============================================================================== struct SlidersPage : public Component { SlidersPage() : hintLabel ("hint", "Try right-clicking on a slider for an options menu. \n\n" "Also, holding down CTRL while dragging will turn on a slider's velocity-sensitive mode") { Slider* s = createSlider (false); s->setSliderStyle (Slider::LinearVertical); s->setTextBoxStyle (Slider::TextBoxBelow, false, 100, 20); s->setBounds (10, 25, 70, 200); s->setDoubleClickReturnValue (true, 50.0); // double-clicking this slider will set it to 50.0 s->setTextValueSuffix (" units"); s = createSlider (false); s->setSliderStyle (Slider::LinearVertical); s->setVelocityBasedMode (true); s->setSkewFactor (0.5); s->setTextBoxStyle (Slider::TextBoxAbove, true, 100, 20); s->setBounds (85, 25, 70, 200); s->setTextValueSuffix (" rels"); s = createSlider (true); s->setSliderStyle (Slider::LinearHorizontal); s->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); s->setBounds (180, 35, 150, 20); s = createSlider (false); s->setSliderStyle (Slider::LinearHorizontal); s->setTextBoxStyle (Slider::NoTextBox, false, 0, 0); s->setBounds (180, 65, 150, 20); s->setPopupDisplayEnabled (true, this); s->setTextValueSuffix (" nuns required to change a lightbulb"); s = createSlider (false); s->setSliderStyle (Slider::IncDecButtons); s->setTextBoxStyle (Slider::TextBoxLeft, false, 50, 20); s->setBounds (180, 105, 100, 20); s->setIncDecButtonsMode (Slider::incDecButtonsDraggable_Vertical); s = createSlider (false); s->setSliderStyle (Slider::Rotary); s->setRotaryParameters (float_Pi * 1.2f, float_Pi * 2.8f, false); s->setTextBoxStyle (Slider::TextBoxRight, false, 70, 20); s->setBounds (190, 145, 120, 40); s->setTextValueSuffix (" mm"); s = createSlider (false); s->setSliderStyle (Slider::LinearBar); s->setBounds (180, 195, 100, 30); s->setTextValueSuffix (" gallons"); s = createSlider (false); s->setSliderStyle (Slider::TwoValueHorizontal); s->setBounds (360, 20, 160, 40); s = createSlider (false); s->setSliderStyle (Slider::TwoValueVertical); s->setBounds (360, 110, 40, 160); s = createSlider (false); s->setSliderStyle (Slider::ThreeValueHorizontal); s->setBounds (360, 70, 160, 40); s = createSlider (false); s->setSliderStyle (Slider::ThreeValueVertical); s->setBounds (440, 110, 40, 160); s = createSlider (false); s->setSliderStyle (Slider::LinearBarVertical); s->setTextBoxStyle (Slider::NoTextBox, false, 0, 0); s->setBounds (540, 35, 20, 230); s->setPopupDisplayEnabled (true, this); s->setTextValueSuffix (" mickles in a muckle"); for (int i = 7; i <= 10; ++i) { sliders.getUnchecked(i)->setTextBoxStyle (Slider::NoTextBox, false, 0, 0); sliders.getUnchecked(i)->setPopupDisplayEnabled (true, this); } /* Here, we'll create a Value object, and tell a bunch of our sliders to use it as their value source. By telling them all to share the same Value, they'll stay in sync with each other. We could also optionally keep a copy of this Value elsewhere, and by changing it, cause all the sliders to automatically update. */ Value sharedValue; sharedValue = Random::getSystemRandom().nextDouble() * 100; for (int i = 0; i < 7; ++i) sliders.getUnchecked(i)->getValueObject().referTo (sharedValue); // ..and now we'll do the same for all our min/max slider values.. Value sharedValueMin, sharedValueMax; sharedValueMin = Random::getSystemRandom().nextDouble() * 40.0; sharedValueMax = Random::getSystemRandom().nextDouble() * 40.0 + 60.0; for (int i = 7; i <= 10; ++i) { sliders.getUnchecked(i)->getMaxValueObject().referTo (sharedValueMax); sliders.getUnchecked(i)->getMinValueObject().referTo (sharedValueMin); } hintLabel.setBounds (20, 245, 350, 150); addAndMakeVisible (hintLabel); } private: OwnedArray sliders; Label hintLabel; Slider* createSlider (bool isSnapping) { Slider* s = isSnapping ? new SnappingSlider() : new Slider(); sliders.add (s); addAndMakeVisible (s); s->setRange (0.0, 100.0, 0.1); s->setPopupMenuEnabled (true); s->setValue (Random::getSystemRandom().nextDouble() * 100.0, dontSendNotification); return s; } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SlidersPage) }; //============================================================================== struct ButtonsPage : public Component, public ButtonListener { ButtonsPage() { { GroupComponent* group = addToList (new GroupComponent ("group", "Radio buttons")); group->setBounds (20, 20, 220, 140); } for (int i = 0; i < 4; ++i) { ToggleButton* tb = addToList (new ToggleButton ("Radio Button #" + String (i + 1))); tb->setRadioGroupId (1234); tb->setBounds (45, 46 + i * 22, 180, 22); tb->setTooltip ("A set of mutually-exclusive radio buttons"); if (i == 0) tb->setToggleState (true, dontSendNotification); } for (int i = 0; i < 4; ++i) { DrawablePath normal, over; Path p; p.addStar (Point(), i + 5, 20.0f, 50.0f, -0.2f); normal.setPath (p); normal.setFill (Colours::lightblue); normal.setStrokeFill (Colours::black); normal.setStrokeThickness (4.0f); over.setPath (p); over.setFill (Colours::blue); over.setStrokeFill (Colours::black); over.setStrokeThickness (4.0f); DrawableButton* db = addToList (new DrawableButton (String (i + 5) + " points", DrawableButton::ImageAboveTextLabel)); db->setImages (&normal, &over, 0); db->setClickingTogglesState (true); db->setRadioGroupId (23456); const int buttonSize = 50; db->setBounds (25 + i * buttonSize, 180, buttonSize, buttonSize); if (i == 0) db->setToggleState (true, dontSendNotification); } for (int i = 0; i < 4; ++i) { TextButton* tb = addToList (new TextButton ("Button " + String (i + 1))); tb->setClickingTogglesState (true); tb->setRadioGroupId (34567); tb->setColour (TextButton::buttonColourId, Colours::white); tb->setColour (TextButton::buttonOnColourId, Colours::blueviolet.brighter()); tb->setBounds (20 + i * 55, 260, 55, 24); tb->setConnectedEdges (((i != 0) ? Button::ConnectedOnLeft : 0) | ((i != 3) ? Button::ConnectedOnRight : 0)); if (i == 0) tb->setToggleState (true, dontSendNotification); } { ColourChangeButton* colourChangeButton = new ColourChangeButton(); components.add (colourChangeButton); addAndMakeVisible (colourChangeButton); colourChangeButton->setTopLeftPosition (20, 320); } { HyperlinkButton* hyperlink = addToList (new HyperlinkButton ("This is a HyperlinkButton", URL ("http://www.juce.com"))); hyperlink->setBounds (260, 20, 200, 24); } // create some drawables to use for our drawable buttons... DrawablePath normal, over; { Path p; p.addStar (Point(), 5, 20.0f, 50.0f, 0.2f); normal.setPath (p); normal.setFill (getRandomDarkColour()); } { Path p; p.addStar (Point(), 9, 25.0f, 50.0f, 0.0f); over.setPath (p); over.setFill (getRandomBrightColour()); over.setStrokeFill (getRandomDarkColour()); over.setStrokeThickness (5.0f); } DrawableImage down; down.setImage (ImageCache::getFromMemory (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize)); down.setOverlayColour (Colours::black.withAlpha (0.3f)); { // create an image-above-text button from these drawables.. DrawableButton* db = addToList (new DrawableButton ("Button 1", DrawableButton::ImageAboveTextLabel)); db->setImages (&normal, &over, &down); db->setBounds (260, 60, 80, 80); db->setTooltip ("This is a DrawableButton with a label"); db->addListener (this); } { // create an image-only button from these drawables.. DrawableButton* db = addToList (new DrawableButton ("Button 2", DrawableButton::ImageFitted)); db->setImages (&normal, &over, &down); db->setClickingTogglesState (true); db->setBounds (370, 60, 80, 80); db->setTooltip ("This is an image-only DrawableButton"); db->addListener (this); } { // create an image-on-button-shape button from the same drawables.. DrawableButton* db = addToList (new DrawableButton ("Button 3", DrawableButton::ImageOnButtonBackground)); db->setImages (&normal, 0, 0); db->setBounds (260, 160, 110, 25); db->setTooltip ("This is a DrawableButton on a standard button background"); db->addListener (this); } { DrawableButton* db = addToList (new DrawableButton ("Button 4", DrawableButton::ImageOnButtonBackground)); db->setImages (&normal, &over, &down); db->setClickingTogglesState (true); db->setColour (DrawableButton::backgroundColourId, Colours::white); db->setColour (DrawableButton::backgroundOnColourId, Colours::yellow); db->setBounds (400, 150, 50, 50); db->setTooltip ("This is a DrawableButton on a standard button background"); db->addListener (this); } { ShapeButton* sb = addToList (new ShapeButton ("ShapeButton", getRandomDarkColour(), getRandomDarkColour(), getRandomDarkColour())); sb->setShape (MainAppWindow::getJUCELogoPath(), false, true, false); sb->setBounds (260, 220, 200, 120); } { ImageButton* ib = addToList (new ImageButton ("ImageButton")); Image juceImage = ImageCache::getFromMemory (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize); ib->setImages (true, true, true, juceImage, 0.7f, Colours::transparentBlack, juceImage, 1.0f, Colours::transparentBlack, juceImage, 1.0f, getRandomBrightColour().withAlpha (0.8f), 0.5f); ib->setBounds (260, 350, 100, 100); ib->setTooltip ("ImageButton - showing alpha-channel hit-testing and colour overlay when clicked"); } } private: OwnedArray components; // This little function avoids a bit of code-duplication by adding a component to // our list as well as calling addAndMakeVisible on it.. template ComponentType* addToList (ComponentType* newComp) { components.add (newComp); addAndMakeVisible (newComp); return newComp; } void buttonClicked (Button* button) override { showBubbleMessage (button, "This is a demo of the BubbleMessageComponent, which lets you pop up a message pointing " "at a component or somewhere on the screen.\n\n" "The message bubbles will disappear after a timeout period, or when the mouse is clicked."); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ButtonsPage) }; //============================================================================== struct MiscPage : public Component { MiscPage() : textEditor2 ("Password", (juce_wchar) 0x2022), comboBox ("Combo") { addAndMakeVisible (textEditor1); textEditor1.setBounds (10, 25, 200, 24); textEditor1.setText ("Single-line text box"); addAndMakeVisible (textEditor2); textEditor2.setBounds (10, 55, 200, 24); textEditor2.setText ("Password"); addAndMakeVisible (comboBox); comboBox.setBounds (10, 85, 200, 24); comboBox.setEditableText (true); comboBox.setJustificationType (Justification::centred); for (int i = 1; i < 100; ++i) comboBox.addItem ("combo box item " + String (i), i); comboBox.setSelectedId (1); } TextEditor textEditor1, textEditor2; ComboBox comboBox; }; //============================================================================== class ToolbarDemoComp : public Component, public SliderListener, public ButtonListener { public: ToolbarDemoComp() : depthLabel (String::empty, "Toolbar depth:"), infoLabel (String::empty, "As well as showing off toolbars, this demo illustrates how to store " "a set of SVG files in a Zip file, embed that in your application, and read " "them back in at runtime.\n\nThe icon images here are taken from the open-source " "Tango icon project."), orientationButton ("Vertical/Horizontal"), customiseButton ("Customise...") { // Create and add the toolbar... addAndMakeVisible (toolbar); // And use our item factory to add a set of default icons to it... toolbar.addDefaultItems (factory); // Now we'll just create the other sliders and buttons on the demo page, which adjust // the toolbar's properties... addAndMakeVisible (infoLabel); infoLabel.setJustificationType (Justification::topLeft); infoLabel.setBounds (80, 80, 450, 100); infoLabel.setInterceptsMouseClicks (false, false); addAndMakeVisible (depthSlider); depthSlider.setRange (10.0, 200.0, 1.0); depthSlider.setValue (50, dontSendNotification); depthSlider.setSliderStyle (Slider::LinearHorizontal); depthSlider.setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); depthSlider.addListener (this); depthSlider.setBounds (80, 210, 300, 22); depthLabel.attachToComponent (&depthSlider, false); addAndMakeVisible (orientationButton); orientationButton.addListener (this); orientationButton.changeWidthToFitText (22); orientationButton.setTopLeftPosition (depthSlider.getX(), depthSlider.getBottom() + 20); addAndMakeVisible (customiseButton); customiseButton.addListener (this); customiseButton.changeWidthToFitText (22); customiseButton.setTopLeftPosition (orientationButton.getRight() + 20, orientationButton.getY()); } void resized() override { int toolbarThickness = (int) depthSlider.getValue(); if (toolbar.isVertical()) toolbar.setBounds (getLocalBounds().removeFromLeft (toolbarThickness)); else toolbar.setBounds (getLocalBounds().removeFromTop (toolbarThickness)); } void sliderValueChanged (Slider*) override { resized(); } void buttonClicked (Button* button) override { if (button == &orientationButton) { toolbar.setVertical (! toolbar.isVertical()); resized(); } else if (button == &customiseButton) { toolbar.showCustomisationDialog (factory); } } private: Toolbar toolbar; Slider depthSlider; Label depthLabel, infoLabel; TextButton orientationButton, customiseButton; //============================================================================== class DemoToolbarItemFactory : public ToolbarItemFactory { public: DemoToolbarItemFactory() {} //============================================================================== // Each type of item a toolbar can contain must be given a unique ID. These // are the ones we'll use in this demo. enum DemoToolbarItemIds { doc_new = 1, doc_open = 2, doc_save = 3, doc_saveAs = 4, edit_copy = 5, edit_cut = 6, edit_paste = 7, juceLogoButton = 8, customComboBox = 9 }; void getAllToolbarItemIds (Array& ids) override { // This returns the complete list of all item IDs that are allowed to // go in our toolbar. Any items you might want to add must be listed here. The // order in which they are listed will be used by the toolbar customisation panel. ids.add (doc_new); ids.add (doc_open); ids.add (doc_save); ids.add (doc_saveAs); ids.add (edit_copy); ids.add (edit_cut); ids.add (edit_paste); ids.add (juceLogoButton); ids.add (customComboBox); // If you're going to use separators, then they must also be added explicitly // to the list. ids.add (separatorBarId); ids.add (spacerId); ids.add (flexibleSpacerId); } void getDefaultItemSet (Array& ids) override { // This returns an ordered list of the set of items that make up a // toolbar's default set. Not all items need to be on this list, and // items can appear multiple times (e.g. the separators used here). ids.add (doc_new); ids.add (doc_open); ids.add (doc_save); ids.add (doc_saveAs); ids.add (spacerId); ids.add (separatorBarId); ids.add (edit_copy); ids.add (edit_cut); ids.add (edit_paste); ids.add (separatorBarId); ids.add (flexibleSpacerId); ids.add (customComboBox); ids.add (flexibleSpacerId); ids.add (separatorBarId); ids.add (juceLogoButton); } ToolbarItemComponent* createItem (int itemId) override { switch (itemId) { case doc_new: return createButtonFromZipFileSVG (itemId, "new", "document-new.svg"); case doc_open: return createButtonFromZipFileSVG (itemId, "open", "document-open.svg"); case doc_save: return createButtonFromZipFileSVG (itemId, "save", "document-save.svg"); case doc_saveAs: return createButtonFromZipFileSVG (itemId, "save as", "document-save-as.svg"); case edit_copy: return createButtonFromZipFileSVG (itemId, "copy", "edit-copy.svg"); case edit_cut: return createButtonFromZipFileSVG (itemId, "cut", "edit-cut.svg"); case edit_paste: return createButtonFromZipFileSVG (itemId, "paste", "edit-paste.svg"); case juceLogoButton: return new ToolbarButton (itemId, "juce!", Drawable::createFromImageData (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize), 0); case customComboBox: return new CustomToolbarComboBox (itemId); default: break; } return nullptr; } private: StringArray iconNames; OwnedArray iconsFromZipFile; // This is a little utility to create a button with one of the SVG images in // our embedded ZIP file "icons.zip" ToolbarButton* createButtonFromZipFileSVG (const int itemId, const String& text, const String& filename) { if (iconsFromZipFile.size() == 0) { // If we've not already done so, load all the images from the zip file.. MemoryInputStream iconsFileStream (BinaryData::icons_zip, BinaryData::icons_zipSize, false); ZipFile icons (&iconsFileStream, false); for (int i = 0; i < icons.getNumEntries(); ++i) { ScopedPointer svgFileStream (icons.createStreamForEntry (i)); if (svgFileStream != nullptr) { iconNames.add (icons.getEntry(i)->filename); iconsFromZipFile.add (Drawable::createFromImageDataStream (*svgFileStream)); } } } Drawable* image = iconsFromZipFile [iconNames.indexOf (filename)]->createCopy(); return new ToolbarButton (itemId, text, image, 0); } // Demonstrates how to put a custom component into a toolbar - this one contains // a ComboBox. class CustomToolbarComboBox : public ToolbarItemComponent { public: CustomToolbarComboBox (const int toolbarItemId) : ToolbarItemComponent (toolbarItemId, "Custom Toolbar Item", false), comboBox ("demo toolbar combo box") { addAndMakeVisible (comboBox); for (int i = 1; i < 20; ++i) comboBox.addItem ("Toolbar ComboBox item " + String (i), i); comboBox.setSelectedId (1); comboBox.setEditableText (true); } bool getToolbarItemSizes (int /*toolbarDepth*/, bool isVertical, int& preferredSize, int& minSize, int& maxSize) override { if (isVertical) return false; preferredSize = 250; minSize = 80; maxSize = 300; return true; } void paintButtonArea (Graphics&, int, int, bool, bool) override { } void contentAreaChanged (const Rectangle& newArea) override { comboBox.setSize (newArea.getWidth() - 2, jmin (newArea.getHeight() - 2, 22)); comboBox.setCentrePosition (newArea.getCentreX(), newArea.getCentreY()); } private: ComboBox comboBox; }; }; DemoToolbarItemFactory factory; }; //============================================================================== /** This class shows how to implement a TableListBoxModel to show in a TableListBox. */ class TableDemoComponent : public Component, public TableListBoxModel { public: TableDemoComponent() : font (14.0f) { // Load some data from an embedded XML file.. loadData(); // Create our table component and add it to this component.. addAndMakeVisible (table); table.setModel (this); // give it a border table.setColour (ListBox::outlineColourId, Colours::grey); table.setOutlineThickness (1); // Add some columns to the table header, based on the column list in our database.. forEachXmlChildElement (*columnList, columnXml) { table.getHeader().addColumn (columnXml->getStringAttribute ("name"), columnXml->getIntAttribute ("columnId"), columnXml->getIntAttribute ("width"), 50, 400, TableHeaderComponent::defaultFlags); } // we could now change some initial settings.. table.getHeader().setSortColumnId (1, true); // sort forwards by the ID column table.getHeader().setColumnVisible (7, false); // hide the "length" column until the user shows it // un-comment this line to have a go of stretch-to-fit mode // table.getHeader().setStretchToFitActive (true); table.setMultipleSelectionEnabled (true); } // This is overloaded from TableListBoxModel, and must return the total number of rows in our table int getNumRows() override { return numRows; } // This is overloaded from TableListBoxModel, and should fill in the background of the whole row void paintRowBackground (Graphics& g, int rowNumber, int /*width*/, int /*height*/, bool rowIsSelected) override { if (rowIsSelected) g.fillAll (Colours::lightblue); else if (rowNumber % 2) g.fillAll (Colour (0xffeeeeee)); } // This is overloaded from TableListBoxModel, and must paint any cells that aren't using custom // components. void paintCell (Graphics& g, int rowNumber, int columnId, int width, int height, bool /*rowIsSelected*/) override { g.setColour (Colours::black); g.setFont (font); if (const XmlElement* rowElement = dataList->getChildElement (rowNumber)) { const String text (rowElement->getStringAttribute (getAttributeNameForColumnId (columnId))); g.drawText (text, 2, 0, width - 4, height, Justification::centredLeft, true); } g.setColour (Colours::black.withAlpha (0.2f)); g.fillRect (width - 1, 0, 1, height); } // This is overloaded from TableListBoxModel, and tells us that the user has clicked a table header // to change the sort order. void sortOrderChanged (int newSortColumnId, bool isForwards) override { if (newSortColumnId != 0) { DemoDataSorter sorter (getAttributeNameForColumnId (newSortColumnId), isForwards); dataList->sortChildElements (sorter); table.updateContent(); } } // This is overloaded from TableListBoxModel, and must update any custom components that we're using Component* refreshComponentForCell (int rowNumber, int columnId, bool /*isRowSelected*/, Component* existingComponentToUpdate) override { if (columnId == 1 || columnId == 7) // The ID and Length columns do not have a custom component { jassert (existingComponentToUpdate == nullptr); return nullptr; } if (columnId == 5) // For the ratings column, we return the custom combobox component { RatingColumnCustomComponent* ratingsBox = static_cast (existingComponentToUpdate); // If an existing component is being passed-in for updating, we'll re-use it, but // if not, we'll have to create one. if (ratingsBox == nullptr) ratingsBox = new RatingColumnCustomComponent (*this); ratingsBox->setRowAndColumn (rowNumber, columnId); return ratingsBox; } // The other columns are editable text columns, for which we use the custom Label component EditableTextCustomComponent* textLabel = static_cast (existingComponentToUpdate); // same as above... if (textLabel == nullptr) textLabel = new EditableTextCustomComponent (*this); textLabel->setRowAndColumn (rowNumber, columnId); return textLabel; } // This is overloaded from TableListBoxModel, and should choose the best width for the specified // column. int getColumnAutoSizeWidth (int columnId) override { if (columnId == 5) return 100; // (this is the ratings column, containing a custom combobox component) int widest = 32; // find the widest bit of text in this column.. for (int i = getNumRows(); --i >= 0;) { if (const XmlElement* rowElement = dataList->getChildElement (i)) { const String text (rowElement->getStringAttribute (getAttributeNameForColumnId (columnId))); widest = jmax (widest, font.getStringWidth (text)); } } return widest + 8; } // A couple of quick methods to set and get cell values when the user changes them int getRating (const int rowNumber) const { return dataList->getChildElement (rowNumber)->getIntAttribute ("Rating"); } void setRating (const int rowNumber, const int newRating) { dataList->getChildElement (rowNumber)->setAttribute ("Rating", newRating); } String getText (const int columnNumber, const int rowNumber) const { return dataList->getChildElement (rowNumber)->getStringAttribute ( getAttributeNameForColumnId(columnNumber)); } void setText (const int columnNumber, const int rowNumber, const String& newText) { const String& columnName = table.getHeader().getColumnName (columnNumber); dataList->getChildElement (rowNumber)->setAttribute (columnName, newText); } //============================================================================== void resized() override { // position our table with a gap around its edge table.setBoundsInset (BorderSize (8)); } private: TableListBox table; // the table component itself Font font; ScopedPointer demoData; // This is the XML document loaded from the embedded file "demo table data.xml" XmlElement* columnList; // A pointer to the sub-node of demoData that contains the list of columns XmlElement* dataList; // A pointer to the sub-node of demoData that contains the list of data rows int numRows; // The number of rows of data we've got //============================================================================== // This is a custom Label component, which we use for the table's editable text columns. class EditableTextCustomComponent : public Label { public: EditableTextCustomComponent (TableDemoComponent& td) : owner (td) { // double click to edit the label text; single click handled below setEditable (false, true, false); setColour (textColourId, Colours::black); } void mouseDown (const MouseEvent& event) override { // single click on the label should simply select the row owner.table.selectRowsBasedOnModifierKeys (row, event.mods, false); Label::mouseDown (event); } void textWasEdited() override { owner.setText (columnId, row, getText()); } // Our demo code will call this when we may need to update our contents void setRowAndColumn (const int newRow, const int newColumn) { row = newRow; columnId = newColumn; setText (owner.getText(columnId, row), dontSendNotification); } private: TableDemoComponent& owner; int row, columnId; }; //============================================================================== // This is a custom component containing a combo box, which we're going to put inside // our table's "rating" column. class RatingColumnCustomComponent : public Component, private ComboBoxListener { public: RatingColumnCustomComponent (TableDemoComponent& td) : owner (td) { // just put a combo box inside this component addAndMakeVisible (comboBox); comboBox.addItem ("fab", 1); comboBox.addItem ("groovy", 2); comboBox.addItem ("hep", 3); comboBox.addItem ("mad for it", 4); comboBox.addItem ("neat", 5); comboBox.addItem ("swingin", 6); comboBox.addItem ("wild", 7); // when the combo is changed, we'll get a callback. comboBox.addListener (this); comboBox.setWantsKeyboardFocus (false); } void resized() override { comboBox.setBoundsInset (BorderSize (2)); } // Our demo code will call this when we may need to update our contents void setRowAndColumn (int newRow, int newColumn) { row = newRow; columnId = newColumn; comboBox.setSelectedId (owner.getRating (row), dontSendNotification); } void comboBoxChanged (ComboBox*) override { owner.setRating (row, comboBox.getSelectedId()); } private: TableDemoComponent& owner; ComboBox comboBox; int row, columnId; }; //============================================================================== // A comparator used to sort our data when the user clicks a column header class DemoDataSorter { public: DemoDataSorter (const String& attributeToSortBy, bool forwards) : attributeToSort (attributeToSortBy), direction (forwards ? 1 : -1) { } int compareElements (XmlElement* first, XmlElement* second) const { int result = first->getStringAttribute (attributeToSort) .compareNatural (second->getStringAttribute (attributeToSort)); if (result == 0) result = first->getStringAttribute ("ID") .compareNatural (second->getStringAttribute ("ID")); return direction * result; } private: String attributeToSort; int direction; }; //============================================================================== // this loads the embedded database XML file into memory void loadData() { demoData = XmlDocument::parse (BinaryData::demo_table_data_xml); dataList = demoData->getChildByName ("DATA"); columnList = demoData->getChildByName ("COLUMNS"); numRows = dataList->getNumChildElements(); } // (a utility method to search our XML for the attribute that matches a column ID) String getAttributeNameForColumnId (const int columnId) const { forEachXmlChildElement (*columnList, columnXml) { if (columnXml->getIntAttribute ("columnId") == columnId) return columnXml->getStringAttribute ("name"); } return String(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TableDemoComponent) }; //============================================================================== class DragAndDropDemo : public Component, public DragAndDropContainer { public: DragAndDropDemo() : sourceListBox ("D+D source", nullptr) { setName ("Drag-and-Drop"); sourceListBox.setModel (&sourceModel); sourceListBox.setMultipleSelectionEnabled (true); addAndMakeVisible (sourceListBox); addAndMakeVisible (target); } void resized() override { Rectangle r (getLocalBounds().reduced (8)); sourceListBox.setBounds (r.withSize (250, 180)); target.setBounds (r.removeFromBottom (150).removeFromRight (250)); } private: //============================================================================== struct SourceItemListboxContents : public ListBoxModel { // The following methods implement the necessary virtual functions from ListBoxModel, // telling the listbox how many rows there are, painting them, etc. int getNumRows() override { return 30; } void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) override { if (rowIsSelected) g.fillAll (Colours::lightblue); g.setColour (Colours::black); g.setFont (height * 0.7f); g.drawText ("Draggable Thing #" + String (rowNumber + 1), 5, 0, width, height, Justification::centredLeft, true); } var getDragSourceDescription (const SparseSet& selectedRows) override { // for our drag description, we'll just make a comma-separated list of the selected row // numbers - this will be picked up by the drag target and displayed in its box. StringArray rows; for (int i = 0; i < selectedRows.size(); ++i) rows.add (String (selectedRows[i] + 1)); return rows.joinIntoString (", "); } }; //============================================================================== // and this is a component that can have things dropped onto it.. class DragAndDropDemoTarget : public Component, public DragAndDropTarget, public FileDragAndDropTarget, public TextDragAndDropTarget { public: DragAndDropDemoTarget() : message ("Drag-and-drop some rows from the top-left box onto this component!\n\n" "You can also drag-and-drop files and text from other apps"), somethingIsBeingDraggedOver (false) { } void paint (Graphics& g) override { g.fillAll (Colours::green.withAlpha (0.2f)); // draw a red line around the comp if the user's currently dragging something over it.. if (somethingIsBeingDraggedOver) { g.setColour (Colours::red); g.drawRect (getLocalBounds(), 3); } g.setColour (Colours::black); g.setFont (14.0f); g.drawFittedText (message, getLocalBounds().reduced (10, 0), Justification::centred, 4); } //============================================================================== // These methods implement the DragAndDropTarget interface, and allow our component // to accept drag-and-drop of objects from other Juce components.. bool isInterestedInDragSource (const SourceDetails& /*dragSourceDetails*/) override { // normally you'd check the sourceDescription value to see if it's the // sort of object that you're interested in before returning true, but for // the demo, we'll say yes to anything.. return true; } void itemDragEnter (const SourceDetails& /*dragSourceDetails*/) override { somethingIsBeingDraggedOver = true; repaint(); } void itemDragMove (const SourceDetails& /*dragSourceDetails*/) override { } void itemDragExit (const SourceDetails& /*dragSourceDetails*/) override { somethingIsBeingDraggedOver = false; repaint(); } void itemDropped (const SourceDetails& dragSourceDetails) override { message = "Items dropped: " + dragSourceDetails.description.toString(); somethingIsBeingDraggedOver = false; repaint(); } //============================================================================== // These methods implement the FileDragAndDropTarget interface, and allow our component // to accept drag-and-drop of files.. bool isInterestedInFileDrag (const StringArray& /*files*/) override { // normally you'd check these files to see if they're something that you're // interested in before returning true, but for the demo, we'll say yes to anything.. return true; } void fileDragEnter (const StringArray& /*files*/, int /*x*/, int /*y*/) override { somethingIsBeingDraggedOver = true; repaint(); } void fileDragMove (const StringArray& /*files*/, int /*x*/, int /*y*/) override { } void fileDragExit (const StringArray& /*files*/) override { somethingIsBeingDraggedOver = false; repaint(); } void filesDropped (const StringArray& files, int /*x*/, int /*y*/) override { message = "Files dropped: " + files.joinIntoString ("\n"); somethingIsBeingDraggedOver = false; repaint(); } //============================================================================== // These methods implement the TextDragAndDropTarget interface, and allow our component // to accept drag-and-drop of text.. bool isInterestedInTextDrag (const String& /*text*/) override { return true; } void textDragEnter (const String& /*text*/, int /*x*/, int /*y*/) override { somethingIsBeingDraggedOver = true; repaint(); } void textDragMove (const String& /*text*/, int /*x*/, int /*y*/) override { } void textDragExit (const String& /*text*/) override { somethingIsBeingDraggedOver = false; repaint(); } void textDropped (const String& text, int /*x*/, int /*y*/) override { message = "Text dropped:\n" + text; somethingIsBeingDraggedOver = false; repaint(); } private: String message; bool somethingIsBeingDraggedOver; }; //============================================================================== ListBox sourceListBox; SourceItemListboxContents sourceModel; DragAndDropDemoTarget target; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DragAndDropDemo) }; //============================================================================== class MenusDemo : public Component, public MenuBarModel, private Button::Listener { public: MenusDemo() { addAndMakeVisible (menuBar = new MenuBarComponent (this)); popupButton.setButtonText ("Show Popup Menu"); popupButton.setTriggeredOnMouseDown (true); popupButton.addListener (this); addAndMakeVisible (popupButton); setApplicationCommandManagerToWatch (&MainAppWindow::getApplicationCommandManager()); } ~MenusDemo() { #if JUCE_MAC MenuBarModel::setMacMainMenu (nullptr); #endif PopupMenu::dismissAllActiveMenus(); popupButton.removeListener (this); } void resized() override { Rectangle area (getLocalBounds()); menuBar->setBounds (area.removeFromTop (LookAndFeel::getDefaultLookAndFeel().getDefaultMenuBarHeight())); area.removeFromTop (20); area = area.removeFromTop (33); popupButton.setBounds (area.removeFromLeft (200).reduced (5)); } //============================================================================== StringArray getMenuBarNames() override { const char* const names[] = { "Demo", "Look-and-feel", "Tabs", "Misc", nullptr }; return StringArray (names); } PopupMenu getMenuForIndex (int menuIndex, const String& /*menuName*/) override { ApplicationCommandManager* commandManager = &MainAppWindow::getApplicationCommandManager(); PopupMenu menu; if (menuIndex == 0) { menu.addCommandItem (commandManager, MainAppWindow::showPreviousDemo); menu.addCommandItem (commandManager, MainAppWindow::showNextDemo); menu.addSeparator(); menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit); } else if (menuIndex == 1) { menu.addCommandItem (commandManager, MainAppWindow::useLookAndFeelV1); menu.addCommandItem (commandManager, MainAppWindow::useLookAndFeelV2); menu.addCommandItem (commandManager, MainAppWindow::useLookAndFeelV3); menu.addSeparator(); menu.addCommandItem (commandManager, MainAppWindow::useNativeTitleBar); #if JUCE_MAC menu.addItem (6000, "Use Native Menu Bar"); #endif #if ! JUCE_LINUX menu.addCommandItem (commandManager, MainAppWindow::goToKioskMode); #endif if (MainAppWindow* mainWindow = MainAppWindow::getMainAppWindow()) { StringArray engines (mainWindow->getRenderingEngines()); if (engines.size() > 1) { menu.addSeparator(); for (int i = 0; i < engines.size(); ++i) menu.addCommandItem (commandManager, MainAppWindow::renderingEngineOne + i); } } } else if (menuIndex == 2) { if (TabbedComponent* tabs = findParentComponentOfClass()) { menu.addItem (3000, "Tabs at Top", true, tabs->getOrientation() == TabbedButtonBar::TabsAtTop); menu.addItem (3001, "Tabs at Bottom", true, tabs->getOrientation() == TabbedButtonBar::TabsAtBottom); menu.addItem (3002, "Tabs on Left", true, tabs->getOrientation() == TabbedButtonBar::TabsAtLeft); menu.addItem (3003, "Tabs on Right", true, tabs->getOrientation() == TabbedButtonBar::TabsAtRight); } } else if (menuIndex == 3) { return getDummyPopupMenu(); } return menu; } void menuItemSelected (int menuItemID, int /*topLevelMenuIndex*/) override { // most of our menu items are invoked automatically as commands, but we can handle the // other special cases here.. if (menuItemID == 6000) { #if JUCE_MAC if (MenuBarModel::getMacMainMenu() != nullptr) { MenuBarModel::setMacMainMenu (nullptr); menuBar->setModel (this); } else { menuBar->setModel (nullptr); MenuBarModel::setMacMainMenu (this); } #endif } else if (menuItemID >= 3000 && menuItemID <= 3003) { if (TabbedComponent* tabs = findParentComponentOfClass()) { TabbedButtonBar::Orientation o = TabbedButtonBar::TabsAtTop; if (menuItemID == 3001) o = TabbedButtonBar::TabsAtBottom; if (menuItemID == 3002) o = TabbedButtonBar::TabsAtLeft; if (menuItemID == 3003) o = TabbedButtonBar::TabsAtRight; tabs->setOrientation (o); } } } private: TextButton popupButton; ScopedPointer menuBar; PopupMenu getDummyPopupMenu() { PopupMenu m; m.addItem (1, "Normal item"); m.addItem (2, "Disabled item", false); m.addItem (3, "Ticked item", true, true); m.addColouredItem (4, "Coloured item", Colours::green); m.addSeparator(); m.addCustomItem (5, new CustomMenuComponent()); m.addSeparator(); for (int i = 0; i < 8; ++i) { PopupMenu subMenu; for (int s = 0; s < 8; ++s) { PopupMenu subSubMenu; for (int item = 0; item < 8; ++item) subSubMenu.addItem (1000 + (i * s * item), "Item " + String (item + 1)); subMenu.addSubMenu ("Sub-sub menu " + String (s + 1), subSubMenu); } m.addSubMenu ("Sub menu " + String (i + 1), subMenu); } return m; } //============================================================================== void buttonClicked (Button* button) override { if (button == &popupButton) getDummyPopupMenu().showMenuAsync (PopupMenu::Options().withTargetComponent (&popupButton), nullptr); } //============================================================================== class CustomMenuComponent : public PopupMenu::CustomComponent, private Timer { public: CustomMenuComponent() { // set off a timer to move a blob around on this component every // 300 milliseconds - see the timerCallback() method. startTimer (300); } void getIdealSize (int& idealWidth, int& idealHeight) override { // tells the menu how big we'd like to be.. idealWidth = 200; idealHeight = 60; } void paint (Graphics& g) override { g.fillAll (Colours::yellow.withAlpha (0.3f)); g.setColour (Colours::pink); g.fillEllipse (blobPosition); g.setFont (Font (14.0f, Font::italic)); g.setColour (Colours::black); g.drawFittedText ("This is a customised menu item (also demonstrating the Timer class)...", getLocalBounds().reduced (4, 0), Justification::centred, 3); } private: void timerCallback() override { Random random; blobPosition.setBounds ((float) random.nextInt (getWidth()), (float) random.nextInt (getHeight()), 40.0f, 30.0f); repaint(); } Rectangle blobPosition; }; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MenusDemo) }; //============================================================================== class DemoTabbedComponent : public TabbedComponent { public: DemoTabbedComponent() : TabbedComponent (TabbedButtonBar::TabsAtTop) { addTab ("Menus", getRandomTabBackgroundColour(), new MenusDemo(), true); addTab ("Buttons", getRandomTabBackgroundColour(), new ButtonsPage(), true); addTab ("Sliders", getRandomTabBackgroundColour(), new SlidersPage(), true); addTab ("Toolbars", getRandomTabBackgroundColour(), new ToolbarDemoComp(), true); addTab ("Misc", getRandomTabBackgroundColour(), new MiscPage(), true); addTab ("Tables", getRandomTabBackgroundColour(), new TableDemoComponent(), true); addTab ("Drag & Drop", getRandomTabBackgroundColour(), new DragAndDropDemo(), true); getTabbedButtonBar().getTabButton (5)->setExtraComponent (new CustomTabButton(), TabBarButton::afterText); } static Colour getRandomTabBackgroundColour() { return Colour (Random::getSystemRandom().nextFloat(), 0.1f, 0.97f, 1.0f); } // This is a small star button that is put inside one of the tabs. You can // use this technique to create things like "close tab" buttons, etc. class CustomTabButton : public Component { public: CustomTabButton() { setSize (20, 20); } void paint (Graphics& g) override { Path star; star.addStar (Point(), 7, 1.0f, 2.0f); g.setColour (Colours::green); g.fillPath (star, star.getTransformToScaleToFit (getLocalBounds().reduced (2).toFloat(), true)); } void mouseDown (const MouseEvent&) override { showBubbleMessage (this, "This is a custom tab component\n" "\n" "You can use these to implement things like close-buttons " "or status displays for your tabs."); } }; }; //============================================================================== class WidgetsDemo : public Component { public: WidgetsDemo() { setOpaque (true); addAndMakeVisible (tabs); } void paint (Graphics& g) override { g.fillAll (Colours::white); } void resized() override { tabs.setBounds (getLocalBounds().reduced (4)); } private: DemoTabbedComponent tabs; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WidgetsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("09 Components: Tabs & Widgets"); JUCE-4.1.0/examples/Demo/Source/Demos/WindowsDemo.cpp000066400000000000000000000253441263452017400222320ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== /** Just a simple window that deletes itself when closed. */ class BasicWindow : public DocumentWindow { public: BasicWindow (const String& name, Colour backgroundColour, int buttonsNeeded) : DocumentWindow (name, backgroundColour, buttonsNeeded) { } void closeButtonPressed() { delete this; } private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BasicWindow) }; //============================================================================== /** This window contains a ColourSelector which can be used to change the window's colour. */ class ColourSelectorWindow : public DocumentWindow, private ChangeListener { public: ColourSelectorWindow (const String& name, Colour backgroundColour, int buttonsNeeded) : DocumentWindow (name, backgroundColour, buttonsNeeded), selector (ColourSelector::showColourAtTop | ColourSelector::showSliders | ColourSelector::showColourspace) { selector.setCurrentColour (backgroundColour); selector.setColour (ColourSelector::backgroundColourId, Colours::transparentWhite); selector.addChangeListener (this); setContentOwned (&selector, false); } ~ColourSelectorWindow() { selector.removeChangeListener (this); } void closeButtonPressed() { delete this; } private: ColourSelector selector; void changeListenerCallback (ChangeBroadcaster* source) { if (source == &selector) setBackgroundColour (selector.getCurrentColour()); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ColourSelectorWindow) }; //============================================================================== class BouncingBallComponent : public Component, public Timer { public: BouncingBallComponent() { setInterceptsMouseClicks (false, false); Random random; const float size = 10.0f + random.nextInt (30); ballBounds.setBounds (random.nextFloat() * 100.0f, random.nextFloat() * 100.0f, size, size); direction.x = random.nextFloat() * 8.0f - 4.0f; direction.y = random.nextFloat() * 8.0f - 4.0f; colour = Colour ((juce::uint32) random.nextInt()) .withAlpha (0.5f) .withBrightness (0.7f); startTimer (60); } void paint (Graphics& g) { g.setColour (colour); g.fillEllipse (ballBounds - getPosition().toFloat()); } void timerCallback() { ballBounds += direction; if (ballBounds.getX() < 0) direction.x = std::abs (direction.x); if (ballBounds.getY() < 0) direction.y = std::abs (direction.y); if (ballBounds.getRight() > getParentWidth()) direction.x = -std::abs (direction.x); if (ballBounds.getBottom() > getParentHeight()) direction.y = -std::abs (direction.y); setBounds (ballBounds.getSmallestIntegerContainer()); } private: Colour colour; Rectangle ballBounds; Point direction; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BouncingBallComponent) }; //============================================================================== class BouncingBallsContainer : public Component { public: BouncingBallsContainer (int numBalls) { for (int i = 0; i < numBalls; ++i) { BouncingBallComponent* newBall = new BouncingBallComponent(); balls.add (newBall); addAndMakeVisible (newBall); } } void mouseDown (const MouseEvent& e) { dragger.startDraggingComponent (this, e); } void mouseDrag (const MouseEvent& e) { // as there's no titlebar we have to manage the dragging ourselves dragger.dragComponent (this, e, 0); } void paint (Graphics& g) { if (isOpaque()) g.fillAll (Colours::white); else g.fillAll (Colours::blue.withAlpha (0.2f)); g.setFont (16.0f); g.setColour (Colours::black); g.drawFittedText ("This window has no titlebar and a transparent background.", getLocalBounds().reduced (8, 0), Justification::centred, 5); g.drawRect (getLocalBounds()); } private: ComponentDragger dragger; OwnedArray balls; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BouncingBallsContainer) }; //============================================================================== class WindowsDemo : public Component, private Button::Listener { public: enum Windows { dialog, document, alert, numWindows }; WindowsDemo() { setOpaque (true); showWindowsButton.setButtonText ("Show Windows"); addAndMakeVisible (showWindowsButton); showWindowsButton.addListener (this); closeWindowsButton.setButtonText ("Close Windows"); addAndMakeVisible (closeWindowsButton); closeWindowsButton.addListener (this); } ~WindowsDemo() { closeAllWindows(); closeWindowsButton.removeListener (this); showWindowsButton.removeListener (this); } void paint (Graphics& g) override { g.fillAll (Colours::grey); } void resized() override { const Rectangle buttonSize (0, 0, 108, 28); Rectangle area ((getWidth() / 2) - (buttonSize.getWidth() / 2), (getHeight() / 2) - buttonSize.getHeight(), buttonSize.getWidth(), buttonSize.getHeight()); showWindowsButton.setBounds (area.reduced (2)); closeWindowsButton.setBounds (area.translated (0, buttonSize.getHeight()).reduced (2)); } private: // Because in this demo the windows delete themselves, we'll use the // Component::SafePointer class to point to them, which automatically becomes // null when the component that it points to is deleted. Array< Component::SafePointer > windows; TextButton showWindowsButton, closeWindowsButton; void showAllWindows() { closeAllWindows(); showDocumentWindow (false); showDocumentWindow (true); showTransparentWindow(); showDialogWindow(); } void closeAllWindows() { for (int i = 0; i < windows.size(); ++i) windows.getReference(i).deleteAndZero(); windows.clear(); } void showDialogWindow() { String m; m << "Dialog Windows can be used to quickly show a component, usually blocking mouse input to other windows." << newLine << newLine << "They can also be quickly closed with the escape key, try it now."; DialogWindow::LaunchOptions options; Label* label = new Label(); label->setText (m, dontSendNotification); label->setColour (Label::textColourId, Colours::whitesmoke); options.content.setOwned (label); Rectangle area (0, 0, 300, 200); options.content->setSize (area.getWidth(), area.getHeight()); options.dialogTitle = "Dialog Window"; options.dialogBackgroundColour = Colour (0xff0e345a); options.escapeKeyTriggersCloseButton = true; options.useNativeTitleBar = false; options.resizable = true; const RectanglePlacement placement (RectanglePlacement::xRight + RectanglePlacement::yBottom + RectanglePlacement::doNotResize); DialogWindow* dw = options.launchAsync(); dw->centreWithSize (300, 200); } void showDocumentWindow (bool native) { DocumentWindow* dw = new ColourSelectorWindow ("Document Window", getRandomBrightColour(), DocumentWindow::allButtons); windows.add (dw); Rectangle area (0, 0, 300, 400); const RectanglePlacement placement ((native ? RectanglePlacement::xLeft : RectanglePlacement::xRight) + RectanglePlacement::yTop + RectanglePlacement::doNotResize); Rectangle result (placement.appliedTo (area, Desktop::getInstance().getDisplays().getMainDisplay().userArea.reduced (20))); dw->setBounds (result); dw->setResizable (true, ! native); dw->setUsingNativeTitleBar (native); dw->setVisible (true); } void showTransparentWindow() { BouncingBallsContainer* balls = new BouncingBallsContainer (3); balls->addToDesktop (ComponentPeer::windowIsTemporary); windows.add (balls); Rectangle area (0, 0, 200, 200); const RectanglePlacement placement (RectanglePlacement::xLeft + RectanglePlacement::yBottom + RectanglePlacement::doNotResize); Rectangle result (placement.appliedTo (area, Desktop::getInstance().getDisplays().getMainDisplay().userArea.reduced (20))); balls->setBounds (result); balls->setVisible (true); } void buttonClicked (Button* button) override { if (button == &showWindowsButton) showAllWindows(); else if (button == &closeWindowsButton) closeAllWindows(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WindowsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("10 Components: Windows"); JUCE-4.1.0/examples/Demo/Source/Demos/XMLandJSONDemo.cpp000066400000000000000000000275751263452017400224250ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceDemoHeader.h" //============================================================================== class XmlTreeItem : public TreeViewItem { public: XmlTreeItem (XmlElement& x) : xml (x) { } String getUniqueName() const override { if (xml.getTagName().isEmpty()) return "unknown"; return xml.getTagName(); } bool mightContainSubItems() override { return xml.getFirstChildElement() != nullptr; } void paintItem (Graphics& g, int width, int height) override { // if this item is selected, fill it with a background colour.. if (isSelected()) g.fillAll (Colours::blue.withAlpha (0.3f)); // use a "colour" attribute in the xml tag for this node to set the text colour.. g.setColour (Colour::fromString (xml.getStringAttribute ("colour", "ff000000"))); g.setFont (height * 0.7f); // draw the xml element's tag name.. g.drawText (xml.getTagName(), 4, 0, width - 4, height, Justification::centredLeft, true); } void itemOpennessChanged (bool isNowOpen) override { if (isNowOpen) { // if we've not already done so, we'll now add the tree's sub-items. You could // also choose to delete the existing ones and refresh them if that's more suitable // in your app. if (getNumSubItems() == 0) { // create and add sub-items to this node of the tree, corresponding to // each sub-element in the XML.. forEachXmlChildElement (xml, child) { jassert (child != nullptr); addSubItem (new XmlTreeItem (*child)); } } } else { // in this case, we'll leave any sub-items in the tree when the node gets closed, // though you could choose to delete them if that's more appropriate for // your application. } } private: XmlElement& xml; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (XmlTreeItem) }; //============================================================================== class JsonTreeItem : public TreeViewItem { public: JsonTreeItem (Identifier i, var value) : identifier (i), json (value) { } String getUniqueName() const override { return identifier.toString() + "_id"; } bool mightContainSubItems() override { if (DynamicObject* obj = json.getDynamicObject()) return obj->getProperties().size() > 0; return json.isArray(); } void paintItem (Graphics& g, int width, int height) override { // if this item is selected, fill it with a background colour.. if (isSelected()) g.fillAll (Colours::blue.withAlpha (0.3f)); g.setColour (Colours::black); g.setFont (height * 0.7f); // draw the element's tag name.. g.drawText (getText(), 4, 0, width - 4, height, Justification::centredLeft, true); } void itemOpennessChanged (bool isNowOpen) override { if (isNowOpen) { // if we've not already done so, we'll now add the tree's sub-items. You could // also choose to delete the existing ones and refresh them if that's more suitable // in your app. if (getNumSubItems() == 0) { // create and add sub-items to this node of the tree, corresponding to // the type of object this var represents if (json.isArray()) { for (int i = 0; i < json.size(); ++i) { var& child (json[i]); jassert (! child.isVoid()); addSubItem (new JsonTreeItem (Identifier(), child)); } } else if (DynamicObject* obj = json.getDynamicObject()) { NamedValueSet& props (obj->getProperties()); for (int i = 0; i < props.size(); ++i) { const Identifier id (props.getName (i)); var child (props[id]); jassert (! child.isVoid()); addSubItem (new JsonTreeItem (id, child)); } } } } else { // in this case, we'll leave any sub-items in the tree when the node gets closed, // though you could choose to delete them if that's more appropriate for // your application. } } private: Identifier identifier; var json; /** Returns the text to display in the tree. This is a little more complex for JSON than XML as nodes can be strings, objects or arrays. */ String getText() const { String text; if (identifier.isValid()) text << identifier.toString(); if (! json.isVoid()) { if (text.isNotEmpty() && (! json.isArray())) text << ": "; if (json.isObject() && (! identifier.isValid())) text << "[Array]"; else if (! json.isArray()) text << json.toString(); } return text; } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JsonTreeItem) }; //============================================================================== class StringsDemo : public Component, private ComboBox::Listener, private CodeDocument::Listener { public: /** The type of database to parse. */ enum Type { xml, json }; StringsDemo() : codeDocumentComponent (codeDocument, nullptr) { setOpaque (true); addAndMakeVisible (typeBox); typeBox.addListener (this); typeBox.addItem ("XML", 1); typeBox.addItem ("JSON", 2); comboBoxLabel.setText ("Database Type:", dontSendNotification); comboBoxLabel.attachToComponent (&typeBox, true); addAndMakeVisible (codeDocumentComponent); codeDocument.addListener (this); addAndMakeVisible (resultsTree); resultsTree.setColour (TreeView::backgroundColourId, Colours::white); resultsTree.setDefaultOpenness (true); addAndMakeVisible (errorMessage); errorMessage.setReadOnly (true); errorMessage.setMultiLine (true); errorMessage.setCaretVisible (false); errorMessage.setColour (TextEditor::outlineColourId, Colours::transparentWhite); errorMessage.setColour (TextEditor::shadowColourId, Colours::transparentWhite); typeBox.setSelectedId (1); } ~StringsDemo() { resultsTree.setRootItem (nullptr); } void paint (Graphics& g) override { fillStandardDemoBackground (g); } void resized() override { Rectangle area (getLocalBounds()); typeBox.setBounds (area.removeFromTop (36).removeFromRight (150).reduced (8)); codeDocumentComponent.setBounds (area.removeFromTop(area.getHeight() / 2).reduced (8)); resultsTree.setBounds (area.reduced (8)); errorMessage.setBounds (resultsTree.getBounds()); } private: ComboBox typeBox; Label comboBoxLabel; CodeDocument codeDocument; CodeEditorComponent codeDocumentComponent; TreeView resultsTree; ScopedPointer rootItem; ScopedPointer parsedXml; TextEditor errorMessage; void rebuildTree() { ScopedPointer openness; if (rootItem != nullptr) openness = rootItem->getOpennessState(); createNewRootNode(); if (openness != nullptr && rootItem != nullptr) rootItem->restoreOpennessState (*openness); } void createNewRootNode() { // clear the current tree resultsTree.setRootItem (nullptr); rootItem = nullptr; // try and parse the editor's contents switch (typeBox.getSelectedItemIndex()) { case xml: rootItem = rebuildXml(); break; case json: rootItem = rebuildJson(); break; default: rootItem = nullptr; break; } // if we have a valid TreeViewItem hide any old error messages and set our TreeView to use it if (rootItem != nullptr) errorMessage.clear(); errorMessage.setVisible (! errorMessage.isEmpty()); resultsTree.setRootItem (rootItem); } /** Parses the editors contects as XML. */ TreeViewItem* rebuildXml() { parsedXml = nullptr; XmlDocument doc (codeDocument.getAllContent()); parsedXml = doc.getDocumentElement(); if (parsedXml == nullptr) { String error (doc.getLastParseError()); if (error.isEmpty()) error = "Unknown error"; errorMessage.setText ("Error parsing XML: " + error, dontSendNotification); return nullptr; } return new XmlTreeItem (*parsedXml); } /** Parses the editors contects as JSON. */ TreeViewItem* rebuildJson() { var parsedJson; Result result = JSON::parse (codeDocument.getAllContent(), parsedJson); if (! result.wasOk()) { errorMessage.setText ("Error parsing JSON: " + result.getErrorMessage()); return nullptr; } return new JsonTreeItem (Identifier(), parsedJson); } /** Clears the editor and loads some default text. */ void reset (Type type) { switch (type) { case xml: codeDocument.replaceAllContent (BinaryData::treedemo_xml); break; case json: codeDocument.replaceAllContent (BinaryData::juce_module_info); break; default: codeDocument.replaceAllContent (String::empty); break; } } void comboBoxChanged (ComboBox* box) override { if (box == &typeBox) { if (typeBox.getSelectedId() == 1) reset (xml); else reset (json); } } void codeDocumentTextInserted (const String&, int) override { rebuildTree(); } void codeDocumentTextDeleted (int, int) override { rebuildTree(); } JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (StringsDemo) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("40 XML & JSON"); JUCE-4.1.0/examples/Demo/Source/IntroScreen.cpp000066400000000000000000000103771263452017400211570ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "JuceDemoHeader.h" //============================================================================== class IntroScreen : public Component { public: IntroScreen() : linkButton ("www.juce.com", URL ("http://www.juce.com")) { setOpaque (true); addAndMakeVisible (versionLabel); addAndMakeVisible (linkButton); addAndMakeVisible (logo); versionLabel.setColour (Label::textColourId, Colours::white); versionLabel.setText (String ("{version} built on {date}") .replace ("{version}", SystemStats::getJUCEVersion()) .replace ("{date}", String (__DATE__).replace (" ", " ")), dontSendNotification); linkButton.setColour (HyperlinkButton::textColourId, Colours::lightblue); } void paint (Graphics& g) override { g.fillAll (Colour (0xff4d4d4d)); } void resized() override { Rectangle area (getLocalBounds().reduced (10)); logo.setBounds (area); area = area.removeFromBottom (24); linkButton.setBounds (area.removeFromRight (getWidth() / 4)); versionLabel.setBounds (area); } private: Label versionLabel; HyperlinkButton linkButton; //============================================================================== struct LogoDrawComponent : public Component, private Timer { LogoDrawComponent() : logoPath (MainAppWindow::getJUCELogoPath()), elapsed (0.0f) { startTimerHz (30); // repaint at 30 fps } void paint (Graphics& g) override { Path wavePath; const float waveStep = 10.0f; const float waveY = getHeight() * 0.44f; int i = 0; for (float x = waveStep * 0.5f; x < getWidth(); x += waveStep) { const float y1 = waveY + getHeight() * 0.05f * std::sin (i * 0.38f + elapsed); const float y2 = waveY + getHeight() * 0.10f * std::sin (i * 0.20f + elapsed * 2.0f); wavePath.addLineSegment (Line (x, y1, x, y2), 2.0f); wavePath.addEllipse (x - waveStep * 0.3f, y1 - waveStep * 0.3f, waveStep * 0.6f, waveStep * 0.6f); wavePath.addEllipse (x - waveStep * 0.3f, y2 - waveStep * 0.3f, waveStep * 0.6f, waveStep * 0.6f); ++i; } g.setColour (Colour::greyLevel (0.4f)); g.fillPath (wavePath); g.setColour (Colour (0xc4f39082)); g.fillPath (logoPath, RectanglePlacement (RectanglePlacement::centred) .getTransformToFit (logoPath.getBounds(), getLocalBounds().reduced (20, getHeight() / 4).toFloat())); } private: void timerCallback() override { repaint(); elapsed += 0.02f; } Path logoPath; float elapsed; }; LogoDrawComponent logo; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (IntroScreen) }; // This static object will register this demo type in a global list of demos.. static JuceDemoType demo ("00 Welcome!"); JUCE-4.1.0/examples/Demo/Source/JuceDemoHeader.h000066400000000000000000000041751263452017400211740ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef __JUCEDEMOHEADER_H_EE664D1A__ #define __JUCEDEMOHEADER_H_EE664D1A__ #include "../JuceLibraryCode/JuceHeader.h" #include "MainWindow.h" #include "DemoUtilities.h" //============================================================================== /** Static subclasses of this class are created in each of the demo modules, to register each of the demo types. */ class JuceDemoTypeBase { public: JuceDemoTypeBase (const String& demoName); virtual ~JuceDemoTypeBase(); virtual Component* createComponent() = 0; const String name; static Array& getDemoTypeList(); private: JUCE_DECLARE_NON_COPYABLE (JuceDemoTypeBase) }; //============================================================================== /** A templated subclass of JuceDemoTypeBase to make it easy for our demos to declare themselves. */ template class JuceDemoType : public JuceDemoTypeBase { public: JuceDemoType (const String& demoName) : JuceDemoTypeBase (demoName) {} Component* createComponent() { return new DemoType(); } private: JUCE_DECLARE_NON_COPYABLE (JuceDemoType) }; #endif // __JUCEDEMOHEADER_H_EE664D1A__ JUCE-4.1.0/examples/Demo/Source/Main.cpp000066400000000000000000000056141263452017400176060ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "JuceDemoHeader.h" #include "MainWindow.h" bool invokeChildProcessDemo (const String& commandLine); //============================================================================== class JuceDemoApplication : public JUCEApplication { public: JuceDemoApplication() {} //============================================================================== void initialise (const String& commandLine) override { if (invokeChildProcessDemo (commandLine)) return; Desktop::getInstance().setOrientationsEnabled (Desktop::allOrientations); // Do your application's initialisation code here.. mainWindow = new MainAppWindow(); } void shutdown() override { // Do your application's shutdown code here.. mainWindow = nullptr; } //============================================================================== void systemRequestedQuit() override { // This gets called when the OS wants our app to quit. You may want to // ask the user to save documents, close windows, etc here, but in this // case we'll just call quit(), which tells the message loop to stop and // allows the app to (asynchronously) exit. quit(); } //============================================================================== const String getApplicationName() override { return "JuceDemo"; } const String getApplicationVersion() override { return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return true; } void anotherInstanceStarted (const String& /*commandLine*/) override { } private: ScopedPointer mainWindow; }; //============================================================================== // This macro generates the main() routine that starts the app. START_JUCE_APPLICATION(JuceDemoApplication) JUCE-4.1.0/examples/Demo/Source/MainWindow.cpp000066400000000000000000000643211263452017400207760ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "JuceDemoHeader.h" //============================================================================== struct AlphabeticDemoSorter { static int compareElements (const JuceDemoTypeBase* first, const JuceDemoTypeBase* second) { return first->name.compare (second->name); } }; JuceDemoTypeBase::JuceDemoTypeBase (const String& demoName) : name (demoName) { AlphabeticDemoSorter sorter; getDemoTypeList().addSorted (sorter, this); } JuceDemoTypeBase::~JuceDemoTypeBase() { getDemoTypeList().removeFirstMatchingValue (this); } Array& JuceDemoTypeBase::getDemoTypeList() { static Array list; return list; } //============================================================================== #if JUCE_WINDOWS || JUCE_LINUX || JUCE_MAC // Just add a simple icon to the Window system tray area or Mac menu bar.. class DemoTaskbarComponent : public SystemTrayIconComponent, private Timer { public: DemoTaskbarComponent() { setIconImage (ImageCache::getFromMemory (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize)); setIconTooltip ("Juce Demo App!"); } void mouseDown (const MouseEvent&) override { // On OSX, there can be problems launching a menu when we're not the foreground // process, so just in case, we'll first make our process active, and then use a // timer to wait a moment before opening our menu, which gives the OS some time to // get its act together and bring our windows to the front. Process::makeForegroundProcess(); startTimer (50); } // This is invoked when the menu is clicked or dismissed static void menuInvocationCallback (int chosenItemID, DemoTaskbarComponent*) { if (chosenItemID == 1) JUCEApplication::getInstance()->systemRequestedQuit(); } private: void timerCallback() override { stopTimer(); PopupMenu m; m.addItem (1, "Quit the Juce demo"); // It's always better to open menus asynchronously when possible. m.showMenuAsync (PopupMenu::Options(), ModalCallbackFunction::forComponent (menuInvocationCallback, this)); } }; #endif bool juceDemoRepaintDebuggingActive = false; //============================================================================== class ContentComponent : public Component, public ListBoxModel, public ApplicationCommandTarget { public: ContentComponent() { // set lookAndFeel colour properties lookAndFeelV3.setColour (Label::textColourId, Colours::white); lookAndFeelV3.setColour (Label::textColourId, Colours::white); lookAndFeelV3.setColour (ToggleButton::textColourId, Colours::white); LookAndFeel::setDefaultLookAndFeel (&lookAndFeelV3); demoList.setModel (this); demoList.setColour (ListBox::backgroundColourId, Colour::greyLevel (0.2f)); demoList.selectRow (0); addAndMakeVisible (demoList); } void clearCurrentDemo() { currentDemo = nullptr; } void resized() override { Rectangle r (getLocalBounds()); if (r.getWidth() > 600) { demoList.setBounds (r.removeFromLeft (210)); demoList.setRowHeight (20); } else { demoList.setBounds (r.removeFromLeft (130)); demoList.setRowHeight (30); } if (currentDemo != nullptr) currentDemo->setBounds (r); } int getNumRows() override { return JuceDemoTypeBase::getDemoTypeList().size(); } void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected) override { if (rowIsSelected) g.fillAll (Colours::deepskyblue); if (JuceDemoTypeBase* type = JuceDemoTypeBase::getDemoTypeList() [rowNumber]) { String name (type->name.trimCharactersAtStart ("0123456789").trimStart()); AttributedString a; a.setJustification (Justification::centredLeft); String category; if (name.containsChar (':')) { category = name.upToFirstOccurrenceOf (":", true, false); name = name.fromFirstOccurrenceOf (":", false, false).trim(); if (height > 20) category << "\n"; else category << " "; } if (category.isNotEmpty()) a.append (category, Font (10.0f), Colour::greyLevel (0.5f)); a.append (name, Font (13.0f), Colours::white.withAlpha (0.9f)); a.draw (g, Rectangle (width + 10, height).reduced (6, 0).toFloat()); } } void selectedRowsChanged (int lastRowSelected) override { if (JuceDemoTypeBase* selectedDemoType = JuceDemoTypeBase::getDemoTypeList() [lastRowSelected]) { currentDemo = nullptr; addAndMakeVisible (currentDemo = selectedDemoType->createComponent()); currentDemo->setName (selectedDemoType->name); resized(); } } MouseCursor getMouseCursorForRow (int /*row*/) override { return MouseCursor::PointingHandCursor; } int getCurrentPageIndex() const noexcept { if (currentDemo == nullptr) return -1; Array& demos (JuceDemoTypeBase::getDemoTypeList()); for (int i = demos.size(); --i >= 0;) if (demos.getUnchecked (i)->name == currentDemo->getName()) return i; return -1; } void moveDemoPages (int numPagesToMove) { const int newIndex = negativeAwareModulo (getCurrentPageIndex() + numPagesToMove, JuceDemoTypeBase::getDemoTypeList().size()); demoList.selectRow (newIndex); // we have to go through our demo list here or it won't be updated to reflect the current demo } bool isShowingOpenGLDemo() const { return currentDemo != nullptr && currentDemo->getName().contains ("OpenGL") && ! isShowingOpenGL2DDemo(); } bool isShowingOpenGL2DDemo() const { return currentDemo != nullptr && currentDemo->getName().contains ("OpenGL 2D"); } private: ListBox demoList; ScopedPointer currentDemo; LookAndFeel_V1 lookAndFeelV1; LookAndFeel_V2 lookAndFeelV2; LookAndFeel_V3 lookAndFeelV3; //============================================================================== // The following methods implement the ApplicationCommandTarget interface, allowing // this window to publish a set of actions it can perform, and which can be mapped // onto menus, keypresses, etc. ApplicationCommandTarget* getNextCommandTarget() override { // this will return the next parent component that is an ApplicationCommandTarget (in this // case, there probably isn't one, but it's best to use this method in your own apps). return findFirstTargetParentComponent(); } void getAllCommands (Array& commands) override { // this returns the set of all commands that this target can perform.. const CommandID ids[] = { MainAppWindow::showPreviousDemo, MainAppWindow::showNextDemo, MainAppWindow::welcome, MainAppWindow::componentsAnimation, MainAppWindow::componentsDialogBoxes, MainAppWindow::componentsKeyMappings, MainAppWindow::componentsMDI, MainAppWindow::componentsPropertyEditors, MainAppWindow::componentsTransforms, MainAppWindow::componentsWebBrowsers, MainAppWindow::componentsWidgets, MainAppWindow::useLookAndFeelV1, MainAppWindow::useLookAndFeelV2, MainAppWindow::useLookAndFeelV3, MainAppWindow::toggleRepaintDebugging, #if ! JUCE_LINUX MainAppWindow::goToKioskMode, #endif MainAppWindow::useNativeTitleBar }; commands.addArray (ids, numElementsInArray (ids)); const CommandID engineIDs[] = { MainAppWindow::renderingEngineOne, MainAppWindow::renderingEngineTwo, MainAppWindow::renderingEngineThree }; StringArray renderingEngines (MainAppWindow::getMainAppWindow()->getRenderingEngines()); commands.addArray (engineIDs, renderingEngines.size()); } void getCommandInfo (CommandID commandID, ApplicationCommandInfo& result) override { const String generalCategory ("General"); const String demosCategory ("Demos"); switch (commandID) { case MainAppWindow::showPreviousDemo: result.setInfo ("Previous Demo", "Shows the previous demo in the list", demosCategory, 0); result.addDefaultKeypress ('-', ModifierKeys::commandModifier); break; case MainAppWindow::showNextDemo: result.setInfo ("Next Demo", "Shows the next demo in the list", demosCategory, 0); result.addDefaultKeypress ('=', ModifierKeys::commandModifier); break; case MainAppWindow::welcome: result.setInfo ("Welcome Demo", "Shows the 'Welcome' demo", demosCategory, 0); result.addDefaultKeypress ('1', ModifierKeys::commandModifier); break; case MainAppWindow::componentsAnimation: result.setInfo ("Animation Demo", "Shows the 'Animation' demo", demosCategory, 0); result.addDefaultKeypress ('2', ModifierKeys::commandModifier); break; case MainAppWindow::componentsDialogBoxes: result.setInfo ("Dialog Boxes Demo", "Shows the 'Dialog Boxes' demo", demosCategory, 0); result.addDefaultKeypress ('3', ModifierKeys::commandModifier); break; case MainAppWindow::componentsKeyMappings: result.setInfo ("Key Mappings Demo", "Shows the 'Key Mappings' demo", demosCategory, 0); result.addDefaultKeypress ('4', ModifierKeys::commandModifier); break; case MainAppWindow::componentsMDI: result.setInfo ("Multi-Document Demo", "Shows the 'Multi-Document' demo", demosCategory, 0); result.addDefaultKeypress ('5', ModifierKeys::commandModifier); break; case MainAppWindow::componentsPropertyEditors: result.setInfo ("Property Editor Demo", "Shows the 'Property Editor' demo", demosCategory, 0); result.addDefaultKeypress ('6', ModifierKeys::commandModifier); break; case MainAppWindow::componentsTransforms: result.setInfo ("Component Transforms Demo", "Shows the 'Transforms' demo", demosCategory, 0); result.addDefaultKeypress ('7', ModifierKeys::commandModifier); break; case MainAppWindow::componentsWebBrowsers: result.setInfo ("Web Browser Demo", "Shows the 'Web Browser' demo", demosCategory, 0); result.addDefaultKeypress ('8', ModifierKeys::commandModifier); break; case MainAppWindow::componentsWidgets: result.setInfo ("Widgets Demo", "Shows the 'Widgets' demo", demosCategory, 0); result.addDefaultKeypress ('9', ModifierKeys::commandModifier); break; case MainAppWindow::renderingEngineOne: case MainAppWindow::renderingEngineTwo: case MainAppWindow::renderingEngineThree: { MainAppWindow& mainWindow = *MainAppWindow::getMainAppWindow(); const StringArray engines (mainWindow.getRenderingEngines()); const int index = commandID - MainAppWindow::renderingEngineOne; result.setInfo ("Use " + engines[index], "Uses the " + engines[index] + " engine to render the UI", generalCategory, 0); result.setTicked (mainWindow.getActiveRenderingEngine() == index); result.addDefaultKeypress ('1' + index, ModifierKeys::noModifiers); break; } case MainAppWindow::useLookAndFeelV1: result.setInfo ("Use LookAndFeel_V1", String::empty, generalCategory, 0); result.addDefaultKeypress ('i', ModifierKeys::commandModifier); result.setTicked (isLookAndFeelSelected()); break; case MainAppWindow::useLookAndFeelV2: result.setInfo ("Use LookAndFeel_V2", String::empty, generalCategory, 0); result.addDefaultKeypress ('o', ModifierKeys::commandModifier); result.setTicked (isLookAndFeelSelected()); break; case MainAppWindow::useLookAndFeelV3: result.setInfo ("Use LookAndFeel_V3", String::empty, generalCategory, 0); result.addDefaultKeypress ('p', ModifierKeys::commandModifier); result.setTicked (isLookAndFeelSelected()); break; case MainAppWindow::toggleRepaintDebugging: result.setInfo ("Toggle repaint display", String::empty, generalCategory, 0); result.addDefaultKeypress ('r', ModifierKeys()); result.setTicked (juceDemoRepaintDebuggingActive); break; case MainAppWindow::useNativeTitleBar: { result.setInfo ("Use native window title bar", String::empty, generalCategory, 0); result.addDefaultKeypress ('n', ModifierKeys::commandModifier); bool nativeTitlebar = false; if (MainAppWindow* map = MainAppWindow::getMainAppWindow()) nativeTitlebar = map->isUsingNativeTitleBar(); result.setTicked (nativeTitlebar); break; } #if ! JUCE_LINUX case MainAppWindow::goToKioskMode: result.setInfo ("Show full-screen kiosk mode", String::empty, generalCategory, 0); result.addDefaultKeypress ('f', ModifierKeys::commandModifier); result.setTicked (Desktop::getInstance().getKioskModeComponent() != 0); break; #endif default: break; } } bool perform (const InvocationInfo& info) override { MainAppWindow* mainWindow = MainAppWindow::getMainAppWindow(); if (mainWindow == nullptr) return true; switch (info.commandID) { case MainAppWindow::showPreviousDemo: moveDemoPages (-1); break; case MainAppWindow::showNextDemo: moveDemoPages ( 1); break; case MainAppWindow::welcome: case MainAppWindow::componentsAnimation: case MainAppWindow::componentsDialogBoxes: case MainAppWindow::componentsKeyMappings: case MainAppWindow::componentsMDI: case MainAppWindow::componentsPropertyEditors: case MainAppWindow::componentsTransforms: case MainAppWindow::componentsWebBrowsers: case MainAppWindow::componentsWidgets: demoList.selectRow (info.commandID - MainAppWindow::welcome); break; case MainAppWindow::renderingEngineOne: case MainAppWindow::renderingEngineTwo: case MainAppWindow::renderingEngineThree: mainWindow->setRenderingEngine (info.commandID - MainAppWindow::renderingEngineOne); break; case MainAppWindow::useLookAndFeelV1: LookAndFeel::setDefaultLookAndFeel (&lookAndFeelV1); break; case MainAppWindow::useLookAndFeelV2: LookAndFeel::setDefaultLookAndFeel (&lookAndFeelV2); break; case MainAppWindow::useLookAndFeelV3: LookAndFeel::setDefaultLookAndFeel (&lookAndFeelV3); break; case MainAppWindow::toggleRepaintDebugging: juceDemoRepaintDebuggingActive = ! juceDemoRepaintDebuggingActive; mainWindow->repaint(); break; case MainAppWindow::useNativeTitleBar: mainWindow->setUsingNativeTitleBar (! mainWindow->isUsingNativeTitleBar()); break; #if ! JUCE_LINUX case MainAppWindow::goToKioskMode: { Desktop& desktop = Desktop::getInstance(); if (desktop.getKioskModeComponent() == nullptr) desktop.setKioskModeComponent (getTopLevelComponent()); else desktop.setKioskModeComponent (nullptr); break; } #endif default: return false; } return true; } template bool isLookAndFeelSelected() { LookAndFeel& lf = getLookAndFeel(); return typeid (LookAndFeelType) == typeid (lf); } }; //============================================================================== static ScopedPointer applicationCommandManager; static ScopedPointer sharedAudioDeviceManager; MainAppWindow::MainAppWindow() : DocumentWindow (JUCEApplication::getInstance()->getApplicationName(), Colours::lightgrey, DocumentWindow::allButtons) { setUsingNativeTitleBar (true); setResizable (true, false); setResizeLimits (400, 400, 10000, 10000); #if JUCE_IOS || JUCE_ANDROID setFullScreen (true); #else setBounds ((int) (0.1f * getParentWidth()), (int) (0.1f * getParentHeight()), jmax (850, (int) (0.5f * getParentWidth())), jmax (600, (int) (0.7f * getParentHeight()))); #endif contentComponent = new ContentComponent(); setContentNonOwned (contentComponent, false); setVisible (true); // this lets the command manager use keypresses that arrive in our window to send out commands addKeyListener (getApplicationCommandManager().getKeyMappings()); #if JUCE_WINDOWS || JUCE_LINUX || JUCE_MAC taskbarIcon = new DemoTaskbarComponent(); #endif #if JUCE_ANDROID setOpenGLRenderingEngine(); #endif triggerAsyncUpdate(); } MainAppWindow::~MainAppWindow() { contentComponent->clearCurrentDemo(); clearContentComponent(); contentComponent = nullptr; applicationCommandManager = nullptr; sharedAudioDeviceManager = nullptr; #if JUCE_OPENGL openGLContext.detach(); #endif } void MainAppWindow::closeButtonPressed() { JUCEApplication::getInstance()->systemRequestedQuit(); } ApplicationCommandManager& MainAppWindow::getApplicationCommandManager() { if (applicationCommandManager == nullptr) applicationCommandManager = new ApplicationCommandManager(); return *applicationCommandManager; } AudioDeviceManager& MainAppWindow::getSharedAudioDeviceManager() { if (sharedAudioDeviceManager == nullptr) { sharedAudioDeviceManager = new AudioDeviceManager(); sharedAudioDeviceManager->initialise (2, 2, 0, true, String(), 0); } return *sharedAudioDeviceManager; } MainAppWindow* MainAppWindow::getMainAppWindow() { for (int i = TopLevelWindow::getNumTopLevelWindows(); --i >= 0;) if (MainAppWindow* maw = dynamic_cast (TopLevelWindow::getTopLevelWindow (i))) return maw; return nullptr; } void MainAppWindow::handleAsyncUpdate() { // This registers all of our commands with the command manager but has to be done after the window has // been created so we can find the number of rendering engines available ApplicationCommandManager& commandManager = MainAppWindow::getApplicationCommandManager(); commandManager.registerAllCommandsForTarget (contentComponent); commandManager.registerAllCommandsForTarget (JUCEApplication::getInstance()); } void MainAppWindow::showMessageBubble (const String& text) { currentBubbleMessage = new BubbleMessageComponent (500); getContentComponent()->addChildComponent (currentBubbleMessage); AttributedString attString; attString.append (text, Font (15.0f)); currentBubbleMessage->showAt (Rectangle (getLocalBounds().getCentreX(), 10, 1, 1), attString, 500, // numMillisecondsBeforeRemoving true, // removeWhenMouseClicked false); // deleteSelfAfterUse } static const char* openGLRendererName = "OpenGL Renderer"; StringArray MainAppWindow::getRenderingEngines() const { StringArray renderingEngines; if (ComponentPeer* peer = getPeer()) renderingEngines = peer->getAvailableRenderingEngines(); #if JUCE_OPENGL renderingEngines.add (openGLRendererName); #endif return renderingEngines; } void MainAppWindow::setRenderingEngine (int index) { showMessageBubble (getRenderingEngines()[index]); #if JUCE_OPENGL if (getRenderingEngines()[index] == openGLRendererName && contentComponent != nullptr && ! contentComponent->isShowingOpenGLDemo()) { openGLContext.attachTo (*getTopLevelComponent()); return; } openGLContext.detach(); #endif if (ComponentPeer* peer = getPeer()) peer->setCurrentRenderingEngine (index); } void MainAppWindow::setOpenGLRenderingEngine() { setRenderingEngine (getRenderingEngines().indexOf (openGLRendererName)); } int MainAppWindow::getActiveRenderingEngine() const { #if JUCE_OPENGL if (openGLContext.isAttached()) return getRenderingEngines().indexOf (openGLRendererName); #endif if (ComponentPeer* peer = getPeer()) return peer->getCurrentRenderingEngine(); return 0; } Path MainAppWindow::getJUCELogoPath() { return Drawable::parseSVGPath ( "M250,301.3c-37.2,0-67.5-30.3-67.5-67.5s30.3-67.5,67.5-67.5s67.5,30.3,67.5,67.5S287.2,301.3,250,301.3zM250,170.8c-34.7,0-63,28.3-63,63s28.3,63,63,63s63-28.3,63-63S284.7,170.8,250,170.8z" "M247.8,180.4c0-2.3-1.8-4.1-4.1-4.1c-0.2,0-0.3,0-0.5,0c-10.6,1.2-20.6,5.4-29,12c-1,0.8-1.5,1.8-1.6,2.9c-0.1,1.2,0.4,2.3,1.3,3.2l32.5,32.5c0.5,0.5,1.4,0.1,1.4-0.6V180.4z" "M303.2,231.6c1.2,0,2.3-0.4,3.1-1.2c0.9-0.9,1.3-2.1,1.1-3.3c-1.2-10.6-5.4-20.6-12-29c-0.8-1-1.9-1.6-3.2-1.6c-1.1,0-2.1,0.5-3,1.3l-32.5,32.5c-0.5,0.5-0.1,1.4,0.6,1.4L303.2,231.6z" "M287.4,191.3c-0.1-1.1-0.6-2.2-1.6-2.9c-8.4-6.6-18.4-10.8-29-12c-0.2,0-0.3,0-0.5,0c-2.3,0-4.1,1.9-4.1,4.1v46c0,0.7,0.9,1.1,1.4,0.6l32.5-32.5C287,193.6,287.5,192.5,287.4,191.3z" "M252.2,287.2c0,2.3,1.8,4.1,4.1,4.1c0.2,0,0.3,0,0.5,0c10.6-1.2,20.6-5.4,29-12c1-0.8,1.5-1.8,1.6-2.9c0.1-1.2-0.4-2.3-1.3-3.2l-32.5-32.5c-0.5-0.5-1.4-0.1-1.4,0.6V287.2z" "M292.3,271.2L292.3,271.2c1.2,0,2.4-0.6,3.2-1.6c6.6-8.4,10.8-18.4,12-29c0.1-1.2-0.3-2.4-1.1-3.3c-0.8-0.8-1.9-1.2-3.1-1.2l-45.9,0c-0.7,0-1.1,0.9-0.6,1.4l32.5,32.5C290.2,270.8,291.2,271.2,292.3,271.2z" "M207.7,196.4c-1.2,0-2.4,0.6-3.2,1.6c-6.6,8.4-10.8,18.4-12,29c-0.1,1.2,0.3,2.4,1.1,3.3c0.8,0.8,1.9,1.2,3.1,1.2l45.9,0c0.7,0,1.1-0.9,0.6-1.4l-32.5-32.5C209.8,196.8,208.8,196.4,207.7,196.4z" "M242.6,236.1l-45.9,0c-1.2,0-2.3,0.4-3.1,1.2c-0.9,0.9-1.3,2.1-1.1,3.3c1.2,10.6,5.4,20.6,12,29c0.8,1,1.9,1.6,3.2,1.6c1.1,0,2.1-0.5,3-1.3c0,0,0,0,0,0l32.5-32.5C243.7,236.9,243.4,236.1,242.6,236.1z" "M213.8,273.1L213.8,273.1c-0.9,0.9-1.3,2-1.3,3.2c0.1,1.1,0.6,2.2,1.6,2.9c8.4,6.6,18.4,10.8,29,12c0.2,0,0.3,0,0.5,0h0c1.2,0,2.3-0.5,3.1-1.4c0.7-0.8,1-1.8,1-2.9v-45.9c0-0.7-0.9-1.1-1.4-0.6l-13.9,13.9L213.8,273.1z" "M197.2,353c-4.1,0-7.4-1.5-10.4-5.4l4-3.5c2,2.6,3.9,3.6,6.4,3.6c4.4,0,7.4-3.3,7.4-8.3v-24.7h5.6v24.7C210.2,347.5,204.8,353,197.2,353z" "M232.4,353c-8.1,0-15-6-15-15.8v-22.5h5.6v22.2c0,6.6,3.9,10.8,9.5,10.8c5.6,0,9.5-4.3,9.5-10.8v-22.2h5.6v22.5C247.5,347,240.5,353,232.4,353z" "M272,353c-10.8,0-19.5-8.6-19.5-19.3c0-10.8,8.8-19.3,19.5-19.3c4.8,0,9,1.6,12.3,4.4l-3.3,4.1c-3.4-2.4-5.7-3.2-8.9-3.2c-7.7,0-13.8,6.2-13.8,14.1c0,7.9,6.1,14.1,13.8,14.1c3.1,0,5.6-1,8.8-3.2l3.3,4.1C280.1,351.9,276.4,353,272,353z" "M290.4,352.5v-37.8h22.7v5H296v11.2h16.5v5H296v11.6h17.2v5H290.4z"); }; JUCE-4.1.0/examples/Demo/Source/MainWindow.h000066400000000000000000000102301263452017400204310ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef __MAINWINDOW_H_7DB41986__ #define __MAINWINDOW_H_7DB41986__ class ContentComponent; //============================================================================== class MainAppWindow : public DocumentWindow, private AsyncUpdater { public: //============================================================================== MainAppWindow(); ~MainAppWindow(); static MainAppWindow* getMainAppWindow(); // returns the MainWindow if it exists. // called by the OS when the window's close button is pressed. void closeButtonPressed() override; // (return the command manager object used to dispatch command events) static ApplicationCommandManager& getApplicationCommandManager(); // (returns a shared AudioDeviceManager object that all the demos can use) static AudioDeviceManager& getSharedAudioDeviceManager(); StringArray getRenderingEngines() const; int getActiveRenderingEngine() const; void setRenderingEngine (int index); void setOpenGLRenderingEngine(); // (returns the exploding JUCE logo path) static Path getJUCELogoPath(); /* Note: Be careful when overriding DocumentWindow methods - the base class uses a lot of them, so by overriding you might break its functionality. It's best to do all your work in you content component instead, but if you really have to override any DocumentWindow methods, make sure your implementation calls the superclass's method. */ //============================================================================== enum CommandIDs { showPreviousDemo = 0x2100, showNextDemo = 0x2101, welcome = 0x2000, componentsAnimation = 0x2001, componentsDialogBoxes = 0x2002, componentsKeyMappings = 0x2003, componentsMDI = 0x2004, componentsPropertyEditors = 0x2005, componentsTransforms = 0x2006, componentsWebBrowsers = 0x2007, componentsWidgets = 0x2008, renderingEngineOne = 0x2300, renderingEngineTwo = 0x2301, renderingEngineThree = 0x2302, // these must be contiguous! useLookAndFeelV1 = 0x200b, useLookAndFeelV2 = 0x200c, useLookAndFeelV3 = 0x200d, toggleRepaintDebugging = 0x200e, useNativeTitleBar = 0x201d, goToKioskMode = 0x200f }; private: ScopedPointer contentComponent; ScopedPointer taskbarIcon; ScopedPointer currentBubbleMessage; TooltipWindow tooltipWindow; // to add tooltips to an application, you // just need to create one of these and leave it // there to do its work.. #if JUCE_OPENGL OpenGLContext openGLContext; #endif void handleAsyncUpdate() override; void showMessageBubble (const String&); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainAppWindow) }; #endif // __MAINWINDOW_H_7DB41986__ JUCE-4.1.0/examples/ExpressiveMidiTest/000077500000000000000000000000001263452017400176645ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/000077500000000000000000000000001263452017400211065ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/LinuxMakefile/000077500000000000000000000000001263452017400236435ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/LinuxMakefile/Makefile000066400000000000000000000135211263452017400253050ustar00rootroot00000000000000# Automatically generated makefile, created by the Introjucer # Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project! # (this disables dependency generation if multiple architectures are set) DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) ifndef CONFIG CONFIG=Debug endif ifeq ($(CONFIG),Debug) BINDIR := build LIBDIR := build OBJDIR := build/intermediate/Debug OUTDIR := build ifeq ($(TARGET_ARCH),) TARGET_ARCH := -march=native endif CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 CXXFLAGS += $(CFLAGS) -std=c++11 LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt TARGET := ExpressiveMidiTest BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif ifeq ($(CONFIG),Release) BINDIR := build LIBDIR := build OBJDIR := build/intermediate/Release OUTDIR := build ifeq ($(TARGET_ARCH),) TARGET_ARCH := -march=native endif CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_6D53C8B4=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 CXXFLAGS += $(CFLAGS) -std=c++11 LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt TARGET := ExpressiveMidiTest BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif OBJECTS := \ $(OBJDIR)/Main_90ebc5c2.o \ $(OBJDIR)/juce_audio_basics_399a455e.o \ $(OBJDIR)/juce_audio_devices_c1c9ba9c.o \ $(OBJDIR)/juce_audio_formats_f04b043c.o \ $(OBJDIR)/juce_audio_processors_eb9ae116.o \ $(OBJDIR)/juce_audio_utils_cf18005c.o \ $(OBJDIR)/juce_core_1ee54a40.o \ $(OBJDIR)/juce_cryptography_3b1f489a.o \ $(OBJDIR)/juce_data_structures_84790dfc.o \ $(OBJDIR)/juce_events_584896b4.o \ $(OBJDIR)/juce_graphics_f9afc18.o \ $(OBJDIR)/juce_gui_basics_90929794.o \ $(OBJDIR)/juce_gui_extra_b81d9e1c.o \ $(OBJDIR)/juce_opengl_1890bee0.o \ $(OBJDIR)/juce_video_86a19d3c.o \ .PHONY: clean $(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES) @echo Linking ExpressiveMidiTest -@mkdir -p $(BINDIR) -@mkdir -p $(LIBDIR) -@mkdir -p $(OUTDIR) @$(BLDCMD) clean: @echo Cleaning ExpressiveMidiTest @$(CLEANCMD) strip: @echo Stripping ExpressiveMidiTest -@strip --strip-unneeded $(OUTDIR)/$(TARGET) $(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Main.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_basics_399a455e.o: ../../../../modules/juce_audio_basics/juce_audio_basics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_basics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_devices_c1c9ba9c.o: ../../../../modules/juce_audio_devices/juce_audio_devices.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_devices.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_formats_f04b043c.o: ../../../../modules/juce_audio_formats/juce_audio_formats.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_formats.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_processors_eb9ae116.o: ../../../../modules/juce_audio_processors/juce_audio_processors.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_processors.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_audio_utils_cf18005c.o: ../../../../modules/juce_audio_utils/juce_audio_utils.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_audio_utils.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_core_1ee54a40.o: ../../../../modules/juce_core/juce_core.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_core.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_cryptography_3b1f489a.o: ../../../../modules/juce_cryptography/juce_cryptography.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_cryptography.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_data_structures_84790dfc.o: ../../../../modules/juce_data_structures/juce_data_structures.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_data_structures.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_events_584896b4.o: ../../../../modules/juce_events/juce_events.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_events.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_graphics_f9afc18.o: ../../../../modules/juce_graphics/juce_graphics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_graphics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_gui_basics_90929794.o: ../../../../modules/juce_gui_basics/juce_gui_basics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_gui_basics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_gui_extra_b81d9e1c.o: ../../../../modules/juce_gui_extra/juce_gui_extra.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_gui_extra.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_opengl_1890bee0.o: ../../../../modules/juce_opengl/juce_opengl.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_opengl.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_video_86a19d3c.o: ../../../../modules/juce_video/juce_video.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_video.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -include $(OBJECTS:%.o=%.d) JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/MacOSX/000077500000000000000000000000001263452017400222005ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/MacOSX/ExpressiveMidiTest.xcodeproj/000077500000000000000000000000001263452017400277745ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/MacOSX/ExpressiveMidiTest.xcodeproj/project.pbxproj000066400000000000000000010161171263452017400330570ustar00rootroot00000000000000// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { CE2807371257B52B1D2B06E0 = {isa = PBXBuildFile; fileRef = D8FF2E14B072C8B9544C95BF; }; 189A987224B9646B9AA0D399 = {isa = PBXBuildFile; fileRef = C64527E74752ECF0B056A9F5; }; 354BBD7645C4F76503133A20 = {isa = PBXBuildFile; fileRef = 90E350DA6DF0535788EDA0C7; }; C568BD20102D15116F05E6D4 = {isa = PBXBuildFile; fileRef = AE90B98838251D28244F281D; }; A3BEED6474CF4D29FB8CA568 = {isa = PBXBuildFile; fileRef = 87D653D986B3CB91809A6AA1; }; 62B45B3673D1655B7418C1E6 = {isa = PBXBuildFile; fileRef = FC7EF3CDEE50B555E15E362D; }; 02EF462BC2B7477532926CB4 = {isa = PBXBuildFile; fileRef = DCC6CD0D96DF5D56628DC513; }; 5C9DA179BB22AE2F8A500E54 = {isa = PBXBuildFile; fileRef = CD39F20F8A8273B62632EBCC; }; 06DE20E82AAD9548CAFD1E56 = {isa = PBXBuildFile; fileRef = D69B16D06E21D1FBEA756A3D; }; 98683F976996F65C9839FF5B = {isa = PBXBuildFile; fileRef = 2F9C29AEE0C8D4BE771F59A8; }; 9A24423E8EB4E7B5AA0FD499 = {isa = PBXBuildFile; fileRef = 32C1BC49BCC54FEED453CFD0; }; 88E739BEDD7197917839D7C6 = {isa = PBXBuildFile; fileRef = AB17BDF654E684FC179BB7DD; }; 8489C516E3B50AC1AF94A2B7 = {isa = PBXBuildFile; fileRef = A373D65BDAB25C19EC6A05AE; }; B911480598E3B26D6C5CD121 = {isa = PBXBuildFile; fileRef = 563C94CB5AD0F745076DF69B; }; 9624DEADA1180DF1694DC960 = {isa = PBXBuildFile; fileRef = 24A91402E8066EE92308ED53; }; 11799C013AE3020D49E30FAA = {isa = PBXBuildFile; fileRef = 38E1ABBD84C884FA0415656D; }; 1D658D4157BE1B43D8479B90 = {isa = PBXBuildFile; fileRef = 832DA01918B8312FEC0909CB; }; BACF830AD2D2A4A355CF6416 = {isa = PBXBuildFile; fileRef = 9A95B88EAC68EEDBB4A6EA80; }; 40CE4D54E8E5C3D69BE6B28A = {isa = PBXBuildFile; fileRef = 08DC2C6ABC78DEA6ADDA07C7; }; 3BE3610CFA0A5492C15C2B28 = {isa = PBXBuildFile; fileRef = E121AC6E7E98A5CAFDA979A5; }; 3554BDF7A9BA55927CE0EEC2 = {isa = PBXBuildFile; fileRef = 25B67ED795BC11D69805D4A8; }; FC8EF6180A541E21AFA8B61D = {isa = PBXBuildFile; fileRef = C6CE8E894E9EF9F77754F88C; }; 0ACA2AC433B06D3C3F0E8437 = {isa = PBXBuildFile; fileRef = 6EC90B8CF8A53493F8D3AA92; }; BCCD66263B8293322F1DF6AC = {isa = PBXBuildFile; fileRef = EA74FE68F55905DCC00E5F9B; }; C08120E7D42077C188537D18 = {isa = PBXBuildFile; fileRef = 81D922DED89925E8726146B5; }; A97103497F3243952961BB2C = {isa = PBXBuildFile; fileRef = AB53E74A974E246BF80A79E6; }; 818B6DDE1AD290C3D843D934 = {isa = PBXBuildFile; fileRef = 24F5F702BEEE4A103E7100C3; }; 539BE2D6F29A2DEAA304A22F = {isa = PBXBuildFile; fileRef = 06993C00B6249E3DA3F7E3DD; }; 80D9D554D874198024A99E12 = {isa = PBXBuildFile; fileRef = 84BAC21CF2D5009634F00330; }; 001595A5B01C0F1EBB38054F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioIODeviceType.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp"; sourceTree = "SOURCE_ROOT"; }; 002DBBBB1D4CAA23FF7991DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 00331FA93EEBE239AAF33926 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; }; 00643E30A5A0B008BE0F35CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 0165787521D72C0F5D608B29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 01982E7F111EA0F64A134DAB = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 020EE4DB59648F4FB8516FA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; 02570D7EEA9EECE2355D09A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 02AF229CB188EEBE3B0213B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiRPN.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiRPN.h"; sourceTree = "SOURCE_ROOT"; }; 030A438E1EE9564FF921DC9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilterAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 033CF8E14902A81FF64A0EF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; }; 035F7E38035024592C9CC7BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorGraph.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h"; sourceTree = "SOURCE_ROOT"; }; 0364DE831A6E6B4B0A83D3D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; 03D75F52F5707AB35D6BA8EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; }; 04713D6B292066E0E5F9E3BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OggVorbisAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 04A9E8ACA19D89D3B4EE5FBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; }; 05238D17EC276B357390E5D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; }; 0575302FD50DFE761DAE40B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; 0591FF86C4D808638C1E1B31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; }; 05B043441E6AD4C671E76907 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; }; 063919C782AAE385A7A829A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemTrayIconComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 06993C00B6249E3DA3F7E3DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_opengl.mm"; path = "../../../../modules/juce_opengl/juce_opengl.mm"; sourceTree = "SOURCE_ROOT"; }; 07304207015792AD04B49951 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 073B9D4A117401CAB7E589F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; 0760036B9D3615440627B5E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../../modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; }; 076628E712D4AD6AAA111947 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 0772E67E5B580EAE2C4A248A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 07898F72AF374731C8D58113 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTreeSynchroniser.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h"; sourceTree = "SOURCE_ROOT"; }; 07986389020D0AB5D139286C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_android_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; 07A30AAAFC7A005BE5BD13CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLAppComponent.h"; path = "../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 07B0233D286E466E20AC2887 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Headers.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h"; sourceTree = "SOURCE_ROOT"; }; 0881FC00E66C06A97AE5D44E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; 0892D5D2CB6A4453365FBB2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PlatformDefs.h"; path = "../../../../modules/juce_core/system/juce_PlatformDefs.h"; sourceTree = "SOURCE_ROOT"; }; 08B60F139B2A313DB825ED18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 08DC2C6ABC78DEA6ADDA07C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; }; 0908AC305FF07665C1ED181B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; 096393D9E6EBD72262AF3D77 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 098829F7BA0AC367A8DBD55E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEZoneLayout.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 09D41C26F44CB7D5AE9C3303 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 0A078E86A69712204CD5256A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FloatVectorOperations.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h"; sourceTree = "SOURCE_ROOT"; }; 0A5EA78978E6DAD9B563ED02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; 0A7749697A76FDBB036E1B55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsMediaAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 0A8CD57178A1419CC58AE215 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; }; 0AB0EB7DB8293C2AB03F001B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessageCollector.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h"; sourceTree = "SOURCE_ROOT"; }; 0B4BE6C38E70E7391A88B4CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; 0B544DB0EBE315150B7DB69E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; 0C03AA02839664626F4DEECB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatWriter.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp"; sourceTree = "SOURCE_ROOT"; }; 0C0752466019BB68BD8A77AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 0C1AE743A7F57659EDCAFEC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; 0C614464266C8D7861BB4688 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; 0D8E6523CB4D0315377B874D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 0DC3165A5F3B775232531A23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; 0DC3607C9300A572222E9668 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; }; 0E4A876D029AF3B748C520E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; }; 0E4DE3F2A6C3A5DF58A717DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 0E9623E6E7FF23C09E3B1AFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODevice.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h"; sourceTree = "SOURCE_ROOT"; }; 0ED6AF00F8FD440991D6E9B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiOutput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.h"; sourceTree = "SOURCE_ROOT"; }; 0F4BDA5EDC7B99927EDE3F84 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; 0FD3D4A7B7481F8361E14D82 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; 109575E72FCBE619A842EADB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; }; 10DCFDBEB5A9192F4AF351D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 10E32F03CD02144B4E150066 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 1130B7A258A90A3443048D10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioThumbnailCache.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 11A3D99C5AF2C6619ABBF176 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; }; 121DCBEAD9B2A41250FE1A8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 12321A80AB65526F1CBCC467 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEValue.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.h"; sourceTree = "SOURCE_ROOT"; }; 12A38F9DB2A92D7E4D566697 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; }; 12ACB548CCAA9C20A91F671A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 12DA948C2F890AFCEC584E18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiFile.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 12DCC9E84F6D9B4191F0059E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; }; 1319CFA9BEB6EF9A0CCA5DE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_events/messages/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; 131E8EC2DA7B6E7AA27A6D9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 135B6889C5DB189F0BD5E5D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; }; 143EBC60EF7CD518951B3DFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; }; 148CD006F32196E97DB2E15F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 149DDBEC3F5A2D3920A7C974 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 152F9CC2FD2D12CD202427EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadPool.cpp"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.cpp"; sourceTree = "SOURCE_ROOT"; }; 15326497248BF0C5248444F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HeapBlock.h"; path = "../../../../modules/juce_core/memory/juce_HeapBlock.h"; sourceTree = "SOURCE_ROOT"; }; 15586852872DD0E50CE31622 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; }; 1672341168714E02AED9122E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 1683945897B57B67297DE68E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileLogger.cpp"; path = "../../../../modules/juce_core/logging/juce_FileLogger.cpp"; sourceTree = "SOURCE_ROOT"; }; 1693F25ED160AF15F12B1EDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; }; 16DA36707AE772CAA1B6810E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_QuickTimeMovieComponent.mm"; path = "../../../../modules/juce_video/native/juce_mac_QuickTimeMovieComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 16EABF4921D82BAD71BB7AB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToggleButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 170C1744EC38808860EC5FF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; 1768D1D4C1D416203C163E00 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLContext.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLContext.h"; sourceTree = "SOURCE_ROOT"; }; 17AB90878E18D665B5F05E1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; 1840BA14C3C29EF2AF08434B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 19F1E0A1D16107BC0A21D8B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; }; 1A88388BE44AED2870102576 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; }; 1A9CD64FD02DC991351F79D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 1AD6B4D9A3ABFC32D70230D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; 1ADE791CC67330FE1018794F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Network.mm"; path = "../../../../modules/juce_core/native/juce_mac_Network.mm"; sourceTree = "SOURCE_ROOT"; }; 1BBE5A8CC950364880DE6DA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedXLock.h"; path = "../../../../modules/juce_events/native/juce_ScopedXLock.h"; sourceTree = "SOURCE_ROOT"; }; 1C3DEE2DA57222B58398ADB2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 1C4B851DCA88F1B74D37A957 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; }; 1C5D3E2D967DCB9B6171F8D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; }; 1C75EA4C7928F352F3C5843A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; 1D60F9B4132C6DEF087C6102 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1D6DA0212DB2562D54FE2E33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; }; 1D766E0719754559EDA33816 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WavAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 1D78EC4983FF07EF7F5B90F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarComponent.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1DB0E5D44E06C20E9596193D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AiffAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 1DB6C92024C5D0273B576FFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Time.h"; path = "../../../../modules/juce_core/time/juce_Time.h"; sourceTree = "SOURCE_ROOT"; }; 1DD6065C0B6DFD88EA23F7D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 1E1A13BFC2C3B8C2F85EEED5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CameraDevice.cpp"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 1E471A2744F7DAA2E2746F59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; }; 1E566116CD030074BE41AE7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Vector3D.h"; path = "../../../../modules/juce_opengl/geometry/juce_Vector3D.h"; sourceTree = "SOURCE_ROOT"; }; 1EE89A61F329252103888090 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; }; 1F08617D548E6203B649283C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; }; 1F2C3B261C75AFE0815B4F6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; 1F7B60B2FB93D6B84720AA08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 1F80940BD86054B4AA0369A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableObjectResizer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h"; sourceTree = "SOURCE_ROOT"; }; 1F9241B5C167C0419181B5E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 1F9EF1E392691DF9CC82A715 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Draggable3DOrientation.h"; path = "../../../../modules/juce_opengl/geometry/juce_Draggable3DOrientation.h"; sourceTree = "SOURCE_ROOT"; }; 208C1446FD1A325C1AB92D7B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Quaternion.h"; path = "../../../../modules/juce_opengl/geometry/juce_Quaternion.h"; sourceTree = "SOURCE_ROOT"; }; 20A2A473C608297870499BDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileFilter.h"; path = "../../../../modules/juce_core/files/juce_FileFilter.h"; sourceTree = "SOURCE_ROOT"; }; 21FC0D072DCC9C6AC57D6C45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LocalisedStrings.cpp"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.cpp"; sourceTree = "SOURCE_ROOT"; }; 226FD52F4533F8CE03C8DF20 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; 22A8E10FA861E5E3824C37C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEInstrument.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.h"; sourceTree = "SOURCE_ROOT"; }; 22FF2F2FF1B698E1712DE7BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; 230A9419C6C9B6D00D2BB8A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; 231871077A08BA845DA197F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLHelpers.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; 237324C3262FA4A6854BAE69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 23986EADB0FA1118A421AB50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_android_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 23B55CF0886E4D70AD727E19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 23D167475E6FE0FAA20C55CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../../modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; }; 23F3CC2C225B17A90D900CD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; 2481B3B84FE81519A2FCE441 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; }; 2484173D7D4BA02BB498C49E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 24A91402E8066EE92308ED53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = "SOURCE_ROOT"; }; 24F5F702BEEE4A103E7100C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; 24F636F42CCC4684B24491B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CameraDevice.mm"; path = "../../../../modules/juce_video/native/juce_mac_CameraDevice.mm"; sourceTree = "SOURCE_ROOT"; }; 252D26C60E79A2C069E172E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; 25679A32335DD3ADDA3902E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Misc.cpp"; path = "../../../../modules/juce_core/native/juce_android_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; 25908D5017FC87CB6E801484 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../../modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; 25B67ED795BC11D69805D4A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; 25CFE2B2F50BF6AC1F57C0CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChannelRemappingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 260FF0356209F0FAC5EF72F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; 2711898DEDADE22BFD3A59E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; 275924B6B61ADC7DC45DF465 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; }; 27642EB0181BACE6A55FA013 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 27F112C058EF5A258E9AC6BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; }; 281EDA11196A278E6AB4B7FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 294E38D35B22AEDC556CDDEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FFT.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.cpp"; sourceTree = "SOURCE_ROOT"; }; 29565FA867CDE49665585AC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 29FC11849A8427D248E2D21A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; }; 2A5FD9B8CEF55D9CB0BD863F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2AAAEBE53A14BA001544D40D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; }; 2B6313BEE19952B09B892F97 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageSequence.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp"; sourceTree = "SOURCE_ROOT"; }; 2B700EED388A0D5BCD27119C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NormalisableRange.h"; path = "../../../../modules/juce_core/maths/juce_NormalisableRange.h"; sourceTree = "SOURCE_ROOT"; }; 2BC851F3F90C739945A358E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 2BF9277EE9D23E6756DDEAAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 2C8137E945F72BA9105D65C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; }; 2CB483940897747625E0DEF0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 2D096B9C273751E74770F8A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ASIO.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp"; sourceTree = "SOURCE_ROOT"; }; 2DDDB0D5D31784DE584658A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; 2E156BE3E6DBAA7865B0F3C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 2E19514EB12ED8C007D02BED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; }; 2E216EC91202D5C65AE63F7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBoundsConstrainer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp"; sourceTree = "SOURCE_ROOT"; }; 2E4AA3AC87FCE4E51218FCAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F0226716C7B97307DC10F14 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; 2F9C29AEE0C8D4BE771F59A8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; 2FD97DD724D2656CF1E0D166 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 2FDF6E187E8341031460DC5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPressMappingSet.h"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h"; sourceTree = "SOURCE_ROOT"; }; 30B0695DFBFC7FF870A58DE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReverbAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 30EAE83CBD3493EA5E75C943 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; 313744A137B12D90ABC32ADF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Justification.h"; path = "../../../../modules/juce_graphics/placement/juce_Justification.h"; sourceTree = "SOURCE_ROOT"; }; 3138762B0FB6AE1FEB2A444D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSubsectionReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp"; sourceTree = "SOURCE_ROOT"; }; 31400B4D421980AB72921D8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; 31B770F0F6BD21F867E24035 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableImage.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h"; sourceTree = "SOURCE_ROOT"; }; 31C21E360B87491DCA771EDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; 325027EE270BBF650E805564 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LuaCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 32C1BC49BCC54FEED453CFD0 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 32E90C7EB3FED091E0719B69 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; }; 32FB34EFF836CC859B88D59A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HyperlinkButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h"; sourceTree = "SOURCE_ROOT"; }; 334367A18F54C928DC48ACA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioIODevice.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp"; sourceTree = "SOURCE_ROOT"; }; 34A028F41F6B89FE6879A252 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 34A2FB33D2EEC064397B7531 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyPanel.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 34CDFC07974C484C788CCEF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; }; 34F6D81CDDA0736524995278 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WASAPI.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp"; sourceTree = "SOURCE_ROOT"; }; 350B2C6A55A8CC92FE9FACD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; 35303BDED3573FD025AA6BF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; }; 3530734CC3320BD8D4AAAFAE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 355BB193F5BCA256A8F08E02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; 35B0BB5C14EA49DAB3BFC581 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceSelectorComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 360380932997DAF4065415CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; 365B29176E55C070CD0A9F5A = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = "SOURCE_ROOT"; }; 368ACA792AA63A2A353D9241 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarComponent.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h"; sourceTree = "SOURCE_ROOT"; }; 36EBA0C5C75594F6432CAA0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 3729299D2A64E43C1F08345D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResamplingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 37769779C54F5EAA72386EA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../../modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; 380CF7E6B4A92C10348D923E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; }; 380DE52CF0881D08E28EF459 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 381C61E5D8990308F006A622 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 388594124789651D112746E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 38B43C95BCC69F232C7A941D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AlertWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 38C6EF1A2390CCC6DC9F9307 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; 38E1ABBD84C884FA0415656D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 38E9379C8C6490ED44B87159 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterFloat.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h"; sourceTree = "SOURCE_ROOT"; }; 39044A002A444195B2A5350E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 391416CDD6D0F5ED2F788D1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; }; 391E4320D4B26E7C1D1E77BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; }; 3926A9B46D728AA024FA23B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnection.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h"; sourceTree = "SOURCE_ROOT"; }; 394EB2D6CECEDF1C9BA4555B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; 3953B849E9B19989A39B9268 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 398F6C198EC4DB253F24A2ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLImage.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLImage.h"; sourceTree = "SOURCE_ROOT"; }; 39A0C2C528E433AB151366CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 39D44FF56380385B8384F81C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorValueTreeState.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h"; sourceTree = "SOURCE_ROOT"; }; 3A44297947691ABDFE965AD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../../modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; 3B86FA979F365227E1EB9592 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_processors.h"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.h"; sourceTree = "SOURCE_ROOT"; }; 3BC401D5C6F376B3E8A98BE9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; 3C3914CF4EB61FC23AEA3490 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_core.h"; path = "../../../../modules/juce_core/juce_core.h"; sourceTree = "SOURCE_ROOT"; }; 3C5EB4E00CDBA4EAE7C96902 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLTexture.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.cpp"; sourceTree = "SOURCE_ROOT"; }; 3CBCE009F649A76261CC81C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D0A72C575B21608CC08323F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; 3D1B0F640AC066EDBE4FCA90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; 3D23A96B33496215A0A41752 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 3DA4C013F3A87FB9066D9A06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; 3E298D7161D5A18EA25B0852 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextDiff.cpp"; path = "../../../../modules/juce_core/text/juce_TextDiff.cpp"; sourceTree = "SOURCE_ROOT"; }; 3E3006AC0AD8CBA944F20C19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; 3E77C173AE32F62B892CF01F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; }; 3E994268B5F30A3299CAFB5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 3EA36ED5181F96146B13E1A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; }; 3EF6F6A74D6521ADC75318C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F23E79E8D215B53423F66EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; 3F38B8657F25B4ED7A44AA58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F5354BF6BADA9E5AB9C8762 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEMessages.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h"; sourceTree = "SOURCE_ROOT"; }; 3F73AB01E7AFDF8672EF6E53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLFrameBuffer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.h"; sourceTree = "SOURCE_ROOT"; }; 3FC1061502C287C1D0099B21 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceManager.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 3FD9075B28C4450CFC36F949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BlowFish.h"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.h"; sourceTree = "SOURCE_ROOT"; }; 405855C9B41EB9CAC7DDDD17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AnimatedAppComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 40596589E6A4CA47E84EE943 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_utils/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 4129D412D114068734D0831B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 418A6B140F02F7642B04C53D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 42371152802017F57D1D7E7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToneGeneratorAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 424EE6A1FC2ED9C33D5F25A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; }; 42671DCA829C86E21A41AA48 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; 4329C1D2114988B6B33E4ECA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WavAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 4339E4AC89EC3FA5C5F4CCD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; 435805944C64D39060796749 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; }; 4383EC8C6E41BF29C8C6D228 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_curl_Network.cpp"; path = "../../../../modules/juce_core/native/juce_curl_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 43C676DCCF3EF43C3E461DBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandManager.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h"; sourceTree = "SOURCE_ROOT"; }; 44144EB6BBF8C91984B24B26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; 4432F3C2A9B250C270BC8C98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; 44524BF33AC80E3F57C0522B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; }; 445B50E2E1C2C48FC9C938CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLPixelFormat.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 4473E95B23F65C8E5F7FE05B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; 44888289A2CF2F4FAE8A7216 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 44B170978A7B6AFAA7528EFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../../modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; 44E830CE4F46500243B0F095 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceManager.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h"; sourceTree = "SOURCE_ROOT"; }; 44F7EDE4220F31B641051082 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; 459847CA0F57CBD0381236E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; 45F17D16348AC92ABF12AE4F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 46EE2A1578E998C3FDAF9E90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooserDialogBox.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h"; sourceTree = "SOURCE_ROOT"; }; 4709326ADD1AEB0FAE3F0E28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; 47BBFABAEE4BB9362BBF81CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; 47CA6B2483E98530ED21101E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 47F996A2BA101821A84B1294 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 481F5349D5FC0457C31ECCEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; 483B36334E2D7C2A6F6D5C1E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; }; 483FDD4DC1AAE6377594EBC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Viewport.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp"; sourceTree = "SOURCE_ROOT"; }; 486B26EF01146242F3C661F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; 49100F48E2E4004CF5473D49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 498D7E415C0E24045E8CC34A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTreeSynchroniser.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 49E4C6DD3893245B406C90BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; }; 49F2723942EAE756E456ECF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 4A13A7A56AAF148FE41452A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZoneLayout.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h"; sourceTree = "SOURCE_ROOT"; }; 4A150B258184228CDB6E3065 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLPixelFormat.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h"; sourceTree = "SOURCE_ROOT"; }; 4A17352DBA7235663A22CA37 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 4A7DE0647A682256D4E61BB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Reverb.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Reverb.h"; sourceTree = "SOURCE_ROOT"; }; 4A83BA7F930D8A2D7377C4F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 4B3B9FF56E20E06A7CCA6EBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 4B6C721DBA89F46FB5134D7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeEditorComponent.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 4C5018AA4799F86499662B0E = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 4C66A0301EF302CE34C09C92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; 4CD401D9D010608EA9D68C35 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_devices/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 4D082B7993A7A8B7A84E5AA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; }; 4DB650E1059524F73A732BC1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_video.h"; path = "../../../../modules/juce_video/juce_video.h"; sourceTree = "SOURCE_ROOT"; }; 4DFE65A65E05E238FE866846 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CharacterFunctions.cpp"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.cpp"; sourceTree = "SOURCE_ROOT"; }; 4E247FD4978713561FAD3C42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; 4EB5C90296983797A68A25B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; }; 4F19EA0D6C57032FB00BA151 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 4F371455D5C271A26FB4272C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageCollector.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp"; sourceTree = "SOURCE_ROOT"; }; 4F7F3DF2110623AD17177CC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedAudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_MemoryMappedAudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; 4FB8831B363370118A37844C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 4FD427089A9CDE1B5B0C4664 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 508ECF11083AD7BE530896DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; 511C8FD7DF51C5D0ECA87751 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLHelpers.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 51FB54FB93F826E8B4207DAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginInstance.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"; sourceTree = "SOURCE_ROOT"; }; 522CD93708D62677267D572C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../../modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; 522EB405E3DDB9138DBB4704 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FillType.h"; path = "../../../../modules/juce_graphics/colour/juce_FillType.h"; sourceTree = "SOURCE_ROOT"; }; 5242C34113987084B2A220E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseCursor.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp"; sourceTree = "SOURCE_ROOT"; }; 5296588DFEE115D050FFDBE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailBase.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailBase.h"; sourceTree = "SOURCE_ROOT"; }; 52C3173E0EE9C79C08C5DDFA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; }; 53111224BD873CB59FD4E6AD = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 5349789C9506EED7C8705BC1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedButtonBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h"; sourceTree = "SOURCE_ROOT"; }; 53679FA0362E193DBB53E5B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; }; 539990B2CDD50F397B743256 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 53F6ABA12780FECACEB5B595 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V1.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h"; sourceTree = "SOURCE_ROOT"; }; 54683E42FA3E4E644B5BA342 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Sampler.cpp"; path = "../../../../modules/juce_audio_formats/sampler/juce_Sampler.cpp"; sourceTree = "SOURCE_ROOT"; }; 55318EBDA23C2918FC8D838E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormat.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; 55774BDDEFF8D07E7657F2D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 55B57622C00BFCBD2B2AC3AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 55B994CF8C32B8FAE0C8BD29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_AudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 55E7B636B43C78D7D5A2F3BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageFileFormat.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 5623335C91C27A0ED7A4CBEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; }; 562D0A3E3BC11FEEC83922A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 563C94CB5AD0F745076DF69B = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; }; 56612A865FA5B0E49552BA7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; }; 569FA642C1BD9436D90CAE02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 570B9DC717F39CD9455B6A4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemAudioVolume.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h"; sourceTree = "SOURCE_ROOT"; }; 571B4FA4AE8176E2B4328567 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.h"; sourceTree = "SOURCE_ROOT"; }; 575C1AF87615D28A9766B9EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UndoManager.cpp"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 576F07120DA4768B0CB14570 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 58587BC050F0D9A45940FE62 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODeviceType.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h"; sourceTree = "SOURCE_ROOT"; }; 58DC77B1478A9F35AC2DFB36 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 594503FB43ADDEB6168FEC32 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MissingGLDefinitions.h"; path = "../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h"; sourceTree = "SOURCE_ROOT"; }; 59746D5A7A92DEA51E39AC29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; }; 5975D093AA16540D75DFC05E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_BluetoothMidiDevicePairingDialogue.mm"; path = "../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm"; sourceTree = "SOURCE_ROOT"; }; 5984276E446D5C9A035D9FC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; 59BE5C6F0A513D6CCF776C33 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; 59C5684A0F1049099993BD31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioThumbnail.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.cpp"; sourceTree = "SOURCE_ROOT"; }; 5A28DED9BBEDC2E03C6AECFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDReader.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h"; sourceTree = "SOURCE_ROOT"; }; 5A2CA150FB56C7A955847790 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5A69C1F35C3FB44D42654DC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 5A917183D906C359DC72C343 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MixerAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B1A209CBE6AEB1063FB149F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; 5BCFBCD0F10A1CA1755A6496 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 5C0DAC2F2E64A243C0EE8A23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MP3AudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 5C198C39CC5322356263DE10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KnownPluginList.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.h"; sourceTree = "SOURCE_ROOT"; }; 5C2CB310BBE49D88B96FDEF0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; 5CE908DBC0AD9E238B960303 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 5D9714FDF6CC158ED499F67A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5DA875ED1131E5FF6529B0CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; 5DAA0C0CDF8A539F6FCEFAA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPDecompressorInputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 5DAC8E916AE370AAAB459391 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZone.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZone.h"; sourceTree = "SOURCE_ROOT"; }; 5DE9D9EBA17102EFC3DECDBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterBool.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h"; sourceTree = "SOURCE_ROOT"; }; 5E45C2171455CA101B0782EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; }; 5E85FF9DADED1BF2F393CA7B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 5EEB8F8B7C5FE167380BE097 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; 5F4AB4FE887CEE13DD04B691 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 5F5EC6184D029A61D4EAFEB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiOutput.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp"; sourceTree = "SOURCE_ROOT"; }; 5F652BEA513040A30DF9B82E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 5F906D2606C9F07B104120B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 5FE360FAE9A403ABFF04FBFF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FF0AE9C309D0F00EE9D93B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; }; 604A0F57022215439EBAF444 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 61205D36742D1BFA2C342241 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; }; 6135C09E481C8C987F2DBB0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 61C15F781039DFD34048F987 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 61E9F7EEC1E8A9BC83431E55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; }; 62500028F4BBCC38D0CED34D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 6285DDA600803EFB4D1F8EC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; 6338FC98FAF82F3C9A15E943 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; }; 6401226633396ABB651ACF9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ios_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; 641800593DAE412AA2630600 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; 64CE05BF5F2A115665AFE76B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_File.h"; path = "../../../../modules/juce_core/files/juce_File.h"; sourceTree = "SOURCE_ROOT"; }; 652B01D78B35590B9ECA9592 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; }; 6572780DEF7C396030F7E88F = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_formats/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 6583002220C32FC6E2ABC427 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnection.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp"; sourceTree = "SOURCE_ROOT"; }; 662F9B9615942BB97D1C50C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditorKeyMapper.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h"; sourceTree = "SOURCE_ROOT"; }; 6651651E2DB80985AE11BC2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Sampler.h"; path = "../../../../modules/juce_audio_formats/sampler/juce_Sampler.h"; sourceTree = "SOURCE_ROOT"; }; 66B6F0A0B4CFBAB1C1352742 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; }; 66DB34EE165CA04ACACB104D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 6706AC981DAB99A2716BD5A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; }; 670D4EE6E16AB62126E09DE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterInt.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h"; sourceTree = "SOURCE_ROOT"; }; 6715F6B8526A84C7D7F96130 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; 676612F907956EE00D5C9856 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_video/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 6827D79ECEE15C9A98A6B135 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandTarget.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp"; sourceTree = "SOURCE_ROOT"; }; 683ABA8E00BCCEDDCABDE1A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; }; 6847021E92EA605C660B2E95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserBase.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h"; sourceTree = "SOURCE_ROOT"; }; 687D3BEBD01B7089DA7EBAD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colour.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colour.cpp"; sourceTree = "SOURCE_ROOT"; }; 6996A01131F6EC782335849A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 69E514BDB41278F42D52E932 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; }; 6AADF3E468257D223D3942CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserBase.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B08381BCFD3448AB40EB764 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B4A3C085C5D53EA256808B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_android_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 6BCD122B109FEA7382F86B6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; }; 6C03D708D1A0BE6E3315D8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; 6CB919D0572583A79239C10D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertiesFile.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h"; sourceTree = "SOURCE_ROOT"; }; 6CE9869F76A0BDBBAAFC2AD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; }; 6D45A9F8D00AF9F3FBF43394 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CaretComponent.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 6DBAA8FC487AE3C94BF0EA9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_ios.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_ios.h"; sourceTree = "SOURCE_ROOT"; }; 6E515F0982E797C04C1B4612 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CameraDevice.h"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.h"; sourceTree = "SOURCE_ROOT"; }; 6E52C52B8794D97378E70B01 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterChoice.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h"; sourceTree = "SOURCE_ROOT"; }; 6E74B73FC38D61B2E9838178 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; }; 6E993A8C1ED9ECC3852FE787 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; 6E9C575B96F65E6DDD4F62B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTMidiEventList.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"; sourceTree = "SOURCE_ROOT"; }; 6EC90B8CF8A53493F8D3AA92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; 6EEB164FC6C3D32E231A15C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; 6F47E5D0F6E40ED2846E6572 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../../modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; }; 6F70AE9408F0C6C37FBC2824 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; }; 6FF0F98B0B0A872157CE5D60 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEValue.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp"; sourceTree = "SOURCE_ROOT"; }; 703E93210140FC510B4C30B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorPlayer.h"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h"; sourceTree = "SOURCE_ROOT"; }; 70401CA75FB474FF0D1052E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7060321468CD7FF42AAF182E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceSelectorComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 70D59B63181ABCB009B6248D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 7120C1DA3DF4C3FE1E82AD0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; 715049CBFF51DD0B6C96C4AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 71C76E49F379F9B05389C3CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginDescription.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp"; sourceTree = "SOURCE_ROOT"; }; 7257482194FCB2E6510D816C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLGraphicsContext.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 72FA76AAEC0B844D6A97B04F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; }; 734A9DABB685FB4C6FBFF63A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; 73F442AEA16947270FABB59A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; }; 74A2BEFDB54B8061082429CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; 74C004337047593335F0EB2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; 74D28D21EF6BAA38475B5DC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardState.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h"; sourceTree = "SOURCE_ROOT"; }; 74EAE983AF79D27EE6858539 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GenericAudioProcessorEditor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h"; sourceTree = "SOURCE_ROOT"; }; 75160F42498EEF24CDFF6C1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; }; 75321A674B370F32E25E4FBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_graphics.h"; path = "../../../../modules/juce_graphics/juce_graphics.h"; sourceTree = "SOURCE_ROOT"; }; 7585B4D0AF0B0B94FFF5754B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInactivityDetector.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h"; sourceTree = "SOURCE_ROOT"; }; 7597D668A9F5F71F9D02D8DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDescription.h"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.h"; sourceTree = "SOURCE_ROOT"; }; 75C8387A8EA8DE5E856952DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; }; 76053E841EC59CD6923EF248 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; }; 762F1D3C34A3070C92736819 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7678218746FA8A0FE22E8BF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPENote.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.h"; sourceTree = "SOURCE_ROOT"; }; 768ED0B52F40AF137ABB4B23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; 76A004283D71BFD31D9ACB8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; 76DFDF2933729C113013EA3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 772FC3C9E091EF0A66C077C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorGraph.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp"; sourceTree = "SOURCE_ROOT"; }; 77831CE7DF0F7C089A0E8EC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_QuickTimeMovieComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 77BDC4AE92BEEEFA03C6C05D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BorderSize.h"; path = "../../../../modules/juce_graphics/geometry/juce_BorderSize.h"; sourceTree = "SOURCE_ROOT"; }; 77DA69E8D9174B38C4F330EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedAppComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7816A52096E7A88C501B1130 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SHA256.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.cpp"; sourceTree = "SOURCE_ROOT"; }; 7861AA53364025BA5B10E816 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 7911CEDEA3547CAB3813DA45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 797024ADCC2EBD68FDC1C5A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; 79C500C091AF9E639F37C514 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; }; 7A08DDF75B40A0BB8EC435D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; }; 7A389934F2E8BE092DABF7F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; 7A4BC1998983615017DC2BF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; 7A5F3AA95E30A442F123B2C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLRenderer.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 7B3E7CFDA9BE759870114F56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; 7B4BED87BE117AF628DDC1EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BigInteger.cpp"; path = "../../../../modules/juce_core/maths/juce_BigInteger.cpp"; sourceTree = "SOURCE_ROOT"; }; 7BD2190159E33306493A2F15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; 7BF0F10BC424F0558F6E346C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlElement.h"; path = "../../../../modules/juce_core/xml/juce_XmlElement.h"; sourceTree = "SOURCE_ROOT"; }; 7C263AD6FB3F219F513FC2AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../../modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; }; 7C4B94E6E74999267FF81409 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C997A5BA57D7568AB3E0F79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; 7CB98E68960B2BB58EE8A903 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; 7CCCB8DF5D4F39091A296F19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; 7DCDF71BCE61BDA76974A47E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 7E380BA307E4A53923F32491 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_utils.h"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.h"; sourceTree = "SOURCE_ROOT"; }; 7E3D799471D4CEFDA9559628 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; }; 7E8ECB3FC70DFC32CC40E487 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; 7F3776EEB353DCFCE936872F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 7F555DDE48B74E14F99C805F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; }; 807FB66424227F43DB1E720A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LADSPAPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 80888401EE0F8AC038266306 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 80A4083D5F12CF76E89D3772 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeMovieComponent.h"; path = "../../../../modules/juce_video/playback/juce_QuickTimeMovieComponent.h"; sourceTree = "SOURCE_ROOT"; }; 80DA8A6E51A23964A6590918 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AudioCDBurner.mm"; path = "../../../../modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm"; sourceTree = "SOURCE_ROOT"; }; 8105E14C122672883486A562 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 812D84E4F3A82B1C61214191 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DeletedAtShutdown.h"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h"; sourceTree = "SOURCE_ROOT"; }; 814ED3A6EFB59ADEF6747D30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Uuid.h"; path = "../../../../modules/juce_core/misc/juce_Uuid.h"; sourceTree = "SOURCE_ROOT"; }; 814EF966AA71A45BCC8C4A30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessage.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h"; sourceTree = "SOURCE_ROOT"; }; 81531B2A0B3EFDF3AA98F33A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; 81979AE0B2796459699657AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 81D922DED89925E8726146B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; 821E625B06C44D6189F224D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AudioCDReader.mm"; path = "../../../../modules/juce_audio_devices/native/juce_mac_AudioCDReader.mm"; sourceTree = "SOURCE_ROOT"; }; 829C1B8BE77DFC515A7AA26D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; }; 82AB090E4FDB3EE467CC1D5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LAMEEncoderAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 832DA01918B8312FEC0909CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; }; 839BB72EB3C380942B175961 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Synth.h; path = ../../Source/Synth.h; sourceTree = "SOURCE_ROOT"; }; 83A6706DABCA6472080498B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathIterator.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; 83AE6F73E2AB5E8368098F82 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; }; 83EB1BA403786C5C84D79B31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; }; 845F400AE7591D486FD12323 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; 847246F31A8A11B09027094D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 84BAC21CF2D5009634F00330 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_video.mm"; path = "../../../../modules/juce_video/juce_video.mm"; sourceTree = "SOURCE_ROOT"; }; 84BDA14D7DC9213E854ACD09 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../../modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; }; 84F8234BF77E0D6A16945175 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 8522BED67A89A1DFEAE4FD54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; 8533CFE78DDDAB7BD643071C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; 854311676B3921D8DD3D0157 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; 85608CBD070076019F0A5AAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioAppComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 85843AACDFA8061F182556AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentAnimator.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp"; sourceTree = "SOURCE_ROOT"; }; 859A3E99E9C43B195F80F648 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; }; 861B3C3F2D0A1C24E85233EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginListComponent.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 862E55A52A3835786CABBA97 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 864B819B16A5912645B76472 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; 8665D9D9CE72D78FA1DB8400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseEvent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h"; sourceTree = "SOURCE_ROOT"; }; 866DF75570266BD14E146D0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RSAKey.h"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.h"; sourceTree = "SOURCE_ROOT"; }; 86CCBF0A2BA002DD4F6EF744 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; 87077F5EFF965C2D201F6E14 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Primes.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.cpp"; sourceTree = "SOURCE_ROOT"; }; 8740DC474D052F86D39902A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; }; 87C79B3F7798AA8550362662 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; 87D653D986B3CB91809A6AA1 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; 87F331B36CC2CA9730B478D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; 87F84688081C0FAAF3BB8BE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; 88A6977E6C431A7B8E41B87A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 88D60BD76FD4D2DDDEC812BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; }; 8937E49637ED97118277A146 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Primes.h"; path = "../../../../modules/juce_cryptography/encryption/juce_Primes.h"; sourceTree = "SOURCE_ROOT"; }; 89A9ABEAE3260E88A8286832 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; }; 89DADBB730BD793525216677 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; }; 8A00D34ABCC62F277B89FED1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; }; 8A05FE986C91C1BB9EA88AE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Setup.h; path = ../../Source/Setup.h; sourceTree = "SOURCE_ROOT"; }; 8B2483DC502CFB85054091C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 8B4618262B4BB0A436C51B6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"; sourceTree = "SOURCE_ROOT"; }; 8B64303D4A4877BE3D9ECA23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; 8C557330D246823A53B449A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; }; 8C6D860D00B9D27F59BE688A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatManager.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 8D0FED07A31C8C9F84ECDAD8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 8D2FC9A82A2C76FAB8AFA963 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; 8D4C070861B82AC3C9018A6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Line.h"; path = "../../../../modules/juce_graphics/geometry/juce_Line.h"; sourceTree = "SOURCE_ROOT"; }; 8D9DDE982773DF3829A5D2EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_VST3PluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 8E21F6EF4E830FF170C5B569 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeRectangle.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 8EAB66AFD0A5824AF6C38F56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; }; 8EC8237E53FD84E9697F2C34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Whirlpool.h"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h"; sourceTree = "SOURCE_ROOT"; }; 8ED647B92C0CB084AB1756B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; }; 8F48D8208E29A75118A98737 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToneGeneratorAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ToneGeneratorAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; 8FC849BFEF9953E872591AE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Whirlpool.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.cpp"; sourceTree = "SOURCE_ROOT"; }; 90054A29105E825D9737130B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectShowComponent.h"; path = "../../../../modules/juce_video/playback/juce_DirectShowComponent.h"; sourceTree = "SOURCE_ROOT"; }; 906858F4D1A91AE92FE33431 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LagrangeInterpolator.h"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h"; sourceTree = "SOURCE_ROOT"; }; 90E350DA6DF0535788EDA0C7 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 9123CC1339B2671E33A3BF0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; }; 91CC923684BB3404154A74E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; 922591A6E5E820CB10974DA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; }; 92306B69EF888E52654C7A26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; 92340E879472D423470A8ACB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 9241AB0AAE9428D1D3404DAE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CoreAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 925C571487EEB3DCE49D5767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioTransportSource.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h"; sourceTree = "SOURCE_ROOT"; }; 92691651B73E582D8419516E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 9287FEB418423DF0B158B3BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; 92AB3D8F15EC41F68BD98735 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; }; 92E263576EE09D2FFB2488D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; 93841F898FCD5F4D7E8DBCE5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; 93E62B431FD26A26B8955220 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 94326617CCCB546B084196BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; 94F9D3988E9B53DA9BC5F37B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 95166B9DCE9F8F0C5704AAFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLContext.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 9599D7A27E31328EB5BAE931 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailCache.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h"; sourceTree = "SOURCE_ROOT"; }; 95EBA44CEF397A39E5A4FB18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; }; 96FA1FB83212CA1F7B24340F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; }; 975DC4180E69ABD56CFBD45B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; 97BA5E8EABCECBF2507DCB31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResamplingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 97C8203B745D9AFE10D00FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; 97EE4852EA4CC6213A4DB03D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; 98249E2CE3DB75CC7E110B95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; 988A1AF75EB5E8F25AAD1632 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; 98A33952B59DC73987AB3F3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; 9915F52C7A0F1EB8A2C19B55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLFrameBuffer.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; 991C62245D7F40A04BF7A7A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; 9963DA20A3A169F096DA9FCF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; 9993C464C5F2B833CCB80E73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../../modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; }; 99BFCDD644103FBB6DB8C288 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSourcePlayer.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h"; sourceTree = "SOURCE_ROOT"; }; 9A24B551B171C6CE823CC0E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 9A345A87139ECBCED9ECED0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; }; 9A95B88EAC68EEDBB4A6EA80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; }; 9AB400909E97F5649F5A99A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TimeSliceThread.cpp"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp"; sourceTree = "SOURCE_ROOT"; }; 9AB9C86B8CA403F869AE410A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; }; 9B06BBF43F6B0721E7616790 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentMovementWatcher.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B3CF30A3919BE54493D59FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLAppComponent.cpp"; path = "../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B941207317C228D2E7FEA4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 9BAF53E9F559484E89236B95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageManager.h"; path = "../../../../modules/juce_events/messages/juce_MessageManager.h"; sourceTree = "SOURCE_ROOT"; }; 9C0AAFB1E56B8FF6CB8F614B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorValueTreeState.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp"; sourceTree = "SOURCE_ROOT"; }; 9C731D9984CC3858193A2C17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; }; 9C9DC2BD4FEE0C379DE12571 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 9D50273101DC464219A633AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; 9DA161A15B4C68C62A63A0D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_opengl.h"; path = "../../../../modules/juce_opengl/juce_opengl.h"; sourceTree = "SOURCE_ROOT"; }; 9DB04269AF81BBB96EA3BB19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameter.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h"; sourceTree = "SOURCE_ROOT"; }; 9E4BB78272577D198F7CEA4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferedInputStream.h"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 9E5D3DF0A5372D0EE20D7C52 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; }; 9E757FCCA80FD5CDE38CE39C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; }; 9E801E5784DD299F44CCC555 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; 9EAEC4C3DC466EB31FBDA4E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; }; 9ED8CA84B312E34694E2A6AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LuaCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 9EE84FBC6D21836516BE409A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_basics.h"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.h"; sourceTree = "SOURCE_ROOT"; }; 9F0EEFDFFB29330643715D31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FloatVectorOperations.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp"; sourceTree = "SOURCE_ROOT"; }; 9F5F2836C2D83C3F53254241 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; 9F73DCCD91827818100240F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPairArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringPairArray.cpp"; sourceTree = "SOURCE_ROOT"; }; 9F9ABD34F4E3D415CD8E3548 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 9FD19371668CCB2116D7D7BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 9FED900E158DF7D8CD3C3157 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; A004966E7468D0F909B144B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; }; A016A16A72E6597E19D0117C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; A070B9FA4EEB5C5AEED5561A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Base64.h"; path = "../../../../modules/juce_core/text/juce_Base64.h"; sourceTree = "SOURCE_ROOT"; }; A084D01ED9334EBAFB966862 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KnownPluginList.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp"; sourceTree = "SOURCE_ROOT"; }; A0C8388A92088676B9F60B7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CoreAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; A0C842CBFBEF097902336B9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; A0D33AB1C8AEDB4245670498 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPress.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h"; sourceTree = "SOURCE_ROOT"; }; A10C76922D7BDC73DF81540D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; A11E58F0D28254BF0C5E6CBC = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; A13E91A475BACB16352E4536 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; }; A1697BA9955319A199576BC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; A197C8251B7D0C4E6F502433 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeTime.h"; path = "../../../../modules/juce_core/time/juce_RelativeTime.h"; sourceTree = "SOURCE_ROOT"; }; A2515767F54BBB1189F67674 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; A2579D66249C62C1DEE92E1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDataConverters.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.cpp"; sourceTree = "SOURCE_ROOT"; }; A2B7929C90425363F8F88BD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; A2CDBE41FA1F8EC3E492683C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringRef.h"; path = "../../../../modules/juce_core/text/juce_StringRef.h"; sourceTree = "SOURCE_ROOT"; }; A2F3BC68972901383B331361 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; A353726F76D426E1528DF4E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEInstrument.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp"; sourceTree = "SOURCE_ROOT"; }; A373D65BDAB25C19EC6A05AE = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; A39AD70F4C86A88879AEE98E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; }; A441178DDFDC6458E849F535 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioVisualiserComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h"; sourceTree = "SOURCE_ROOT"; }; A4C684C69EC69A6FCA57E4F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; }; A4D41578D2FC92EBF6D6157F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; A510130632DD97A188B6C814 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinkedListPointer.h"; path = "../../../../modules/juce_core/containers/juce_LinkedListPointer.h"; sourceTree = "SOURCE_ROOT"; }; A5136F150AC3C3D48C8B5BEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectSound.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp"; sourceTree = "SOURCE_ROOT"; }; A55F7E43C7EBDAB0936E49DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemStats.cpp"; path = "../../../../modules/juce_core/system/juce_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; A59547388F399186B5559860 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; A5C776304CEA43636F46A5FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; }; A60F4908677D0C613FB1737C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ElementComparator.h"; path = "../../../../modules/juce_core/containers/juce_ElementComparator.h"; sourceTree = "SOURCE_ROOT"; }; A62B2A3C8BD64FCB92519B71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../../modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; }; A6352E758302225B3893D9BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; }; A67CA597C2F003ACCB9C931D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; }; A68450207C4150B561E61A30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDirectoryScanner.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h"; sourceTree = "SOURCE_ROOT"; }; A6A60C3C36A7788E8226E80D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; A6BC9FC87555B39B73778711 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; A6C0EBBD5187121DDE0C45AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; A77C703EF249E18E4314B50B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooser.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h"; sourceTree = "SOURCE_ROOT"; }; A77D3FB03D23EC79D35A3583 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LADSPAPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; A802D4B2EC2895FC9409844A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiFile.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.h"; sourceTree = "SOURCE_ROOT"; }; A808793AE99B03FF99E3FADA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLImage.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLImage.cpp"; sourceTree = "SOURCE_ROOT"; }; A816E22F2317F3AB90262CB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; A82DBA408269C87D418906BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; A843CE531AEC32940221ABA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; }; A8DE43E4A9F916584738AA7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; A9235E9E60C4A238FA54047B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ArrowButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp"; sourceTree = "SOURCE_ROOT"; }; AA21DA98CEF52C5F09BEEC38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputSource.cpp"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; AB0F764CBA1600621049FAE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; AB17BDF654E684FC179BB7DD = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = System/Library/Frameworks/QuickTime.framework; sourceTree = SDKROOT; }; AB209E34B329FDEFA3032277 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameterWithID.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h"; sourceTree = "SOURCE_ROOT"; }; AB25A2883C749400DBBD2F3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; AB53E74A974E246BF80A79E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; AC3A1878FFA5E36CC67EF642 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_VSTPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; AC410B09B6B19E3DBFA81342 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; ACF5C8CA1E6228ACCFB67F2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; }; ACF70D3C6DFCF9CE58921468 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; ACF8C9B787F071A59D0D7EFF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; }; AD47911F727BBE2907742B6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatManager.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; ADE8A1AFA8463F99F681D830 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; ADF727BFA0B03E4BB95B2E21 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; AE071AE60A488A88983388A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; AE90B98838251D28244F281D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; AECE3E00CA23B8BC04DC0326 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiBuffer.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h"; sourceTree = "SOURCE_ROOT"; }; AF04AAABB333D46EAE2FD387 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; AF7854B0FC7EB465C1A31A3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; AF8A2C37DFCE17AAC5976773 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; }; AF9CDD2400A6940A7E8DFE5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; }; AF9E7DC232E9C7125103A08E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; AFEEDEBED70B5B1D1B0AE490 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; B0037C53204AAC9C8255C2BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; B021D4BF80511343AF4D9652 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../../modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; }; B02859F63C4DB6CFB687B30F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; }; B03367C60569B1910FD00AC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; B05E72AB3D6C98EE78B78396 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GenericAudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; B0BDEB05BCB1301C1931075B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; B0C68D7A03725EB5C4D6B2F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLGraphicsContext.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; B0EC575BAE9C7CA8148B2814 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; B1A70491D38102254282A55B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReverbAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; B1D0E807C8AA03DCD59D95CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReaderSource.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.h"; sourceTree = "SOURCE_ROOT"; }; B233151970C7D711A52DF35B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; }; B28125595ED641D8D708A672 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiRPN.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiRPN.cpp"; sourceTree = "SOURCE_ROOT"; }; B28A031B821E7D99B96609CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePoint.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp"; sourceTree = "SOURCE_ROOT"; }; B2CE1594EB33B071195025DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; }; B3345A12095B5451B31BC2B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; B346F61236D50FFFAA93DB58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReaderSource.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp"; sourceTree = "SOURCE_ROOT"; }; B3B09D930294921308A25479 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInactivityDetector.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp"; sourceTree = "SOURCE_ROOT"; }; B3CBFBDBA3189C6F33B4C980 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; B3D740F535AE6C7211B7F346 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Random.cpp"; path = "../../../../modules/juce_core/maths/juce_Random.cpp"; sourceTree = "SOURCE_ROOT"; }; B4066FBC70F48956A5613954 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; B4627ACD9DAE391505B47CC8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; B492A15E9ED021566DDDF527 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Javascript.cpp"; path = "../../../../modules/juce_core/javascript/juce_Javascript.cpp"; sourceTree = "SOURCE_ROOT"; }; B4EF43855D18382AC6F26A01 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; }; B50A8EE15B6ED3D2A655C0F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_devices.h"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.h"; sourceTree = "SOURCE_ROOT"; }; B53A535D45DC0A485F1D7A03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessageSequence.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessageSequence.h"; sourceTree = "SOURCE_ROOT"; }; B59F17512F4995C0DA023400 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPENote.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp"; sourceTree = "SOURCE_ROOT"; }; B5A05D33611D8BAC85D43C8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; B5C2E2E572443EBC683A308B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; B5EA0961ABF5E581D4DA94C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; B654E7DD258B9A755CCA7BEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; B66835ECFEB59CEE77211F94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; B66D5720A6D53D145235B680 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LocalisedStrings.h"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.h"; sourceTree = "SOURCE_ROOT"; }; B6AC3B42995EFACA5218BBCC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LiveConstantEditor.h"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h"; sourceTree = "SOURCE_ROOT"; }; B6B15C5ACA212627415B92A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; B737F86A97583158D47EED8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; B76CFD3BC6CEDC9DBA1E63EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; }; B7995F7528DB0AFA151402D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; }; B82A885925538D2A750B5077 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BigInteger.h"; path = "../../../../modules/juce_core/maths/juce_BigInteger.h"; sourceTree = "SOURCE_ROOT"; }; B84ECC2C7B1E0C5283C5DE92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; }; B8CA9856C1004FCC5CC4F710 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPool.cpp"; path = "../../../../modules/juce_core/text/juce_StringPool.cpp"; sourceTree = "SOURCE_ROOT"; }; B8E4371A1812FB6544696147 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemClipboard.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h"; sourceTree = "SOURCE_ROOT"; }; B8F33A418BB2AEEA980B25FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; B97AF825D9F4F24DF5751FB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; BA24E4AEE7BD1C7CDF793728 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; BA74CBA07F7E462B824D155B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_formats.h"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.h"; sourceTree = "SOURCE_ROOT"; }; BADDBE325E0F54D65375A0E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../../modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; }; BAFFF07065ABA4EF9E038D2D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../../modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; }; BB43F941001F9EDECDEC4836 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; }; BBA80FB6E7B8CC2B36236750 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationBase.h"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.h"; sourceTree = "SOURCE_ROOT"; }; BBBDDFA136909E051E416C80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; }; BC379633DCC75D8A5F2582D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPool.h"; path = "../../../../modules/juce_core/text/juce_StringPool.h"; sourceTree = "SOURCE_ROOT"; }; BC44D402B4EC2091612352B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseEvent.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp"; sourceTree = "SOURCE_ROOT"; }; BCC009DED67EBAE7E35C74DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; BCCBB4E9E23CF1A2376675E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; }; BCCD4D99EC4AAD2FB7DBCEF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MountedVolumeListChangeDetector.h"; path = "../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h"; sourceTree = "SOURCE_ROOT"; }; BCF92E9C27C5F13C1CECF184 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PositionableAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_PositionableAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; BD22F15779DC50BF4A27B33F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; BDA1F22AECB324960FD04B8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; }; BDA5300CE231168A0DFD9706 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; BDE06F7154D61ECE453CB356 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; BE353035E54BBD637701274C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorPlayer.cpp"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp"; sourceTree = "SOURCE_ROOT"; }; BF1DED2E1BA1C076425B8CA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_basics.h"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.h"; sourceTree = "SOURCE_ROOT"; }; BF4B42874613F1E620EB9A7F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; BF636F03555370A34F3E92E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FFT.h"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.h"; sourceTree = "SOURCE_ROOT"; }; C00E40B39075B28FE2A6CFA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSourcePlayer.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp"; sourceTree = "SOURCE_ROOT"; }; C0294ADFDB35341825074EB3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; }; C034BC82CE4EB8F2568629E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../../modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; }; C0624E7928A6685285622AA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_android_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; C0636FF79924D1DE1FC5F8CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; }; C1CDE97113A08C356493680A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; }; C22D2E1636E4E08CCC2A30CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; C27C6E28C83CFDDE48D68C36 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; C2B858DF72CD2801C22C109C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; C2C02D2BE263F8050442D47A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; }; C35854B72C47F401808A93D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; }; C3C6ED0B48A81623AAE57AFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C3DAB6E6D5D1C1CF8AD15E8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; }; C495993112F10E9129851E8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPCompressorOutputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; C6072BB69D5A3F12142BC115 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_extra/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; C622457017D7A56DC4C7FC67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../../modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; }; C63E20DAEDFA5299CE44D5B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; C64527E74752ECF0B056A9F5 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; C6CE8E894E9EF9F77754F88C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; C6D05CB8E473C762FB2FCD7F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C6E0CA97537C58A56F34EA44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C6E0CF2ABA1A9BA45B0AED68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; C75AB0FC6F1A4F57D95397EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Font.h"; path = "../../../../modules/juce_graphics/fonts/juce_Font.h"; sourceTree = "SOURCE_ROOT"; }; C762137F95A067D877B2DDB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; }; C7D441D167E579678DA387D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; }; C80BA373E25BE1EBCA733FDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; }; C897DAA514552248B4BEB8B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; C8CF6019DC71E9EBC2AF7640 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDBurner.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp"; sourceTree = "SOURCE_ROOT"; }; C8DB56C59EEE6F10765F1880 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; C9D87BCB93AFB0E715801097 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; CAD2314B200074610B2B3CC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnail.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h"; sourceTree = "SOURCE_ROOT"; }; CADCB071D5B0B5B6C355EBFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDiff.h"; path = "../../../../modules/juce_core/text/juce_TextDiff.h"; sourceTree = "SOURCE_ROOT"; }; CAE879F535FD4BCC9DD18A96 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; }; CB0C9A0921B30250FE6A1E31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChannelRemappingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; CB833C35F124FADDB489217A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; CC2A62060FD202B17EACBC03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MP3AudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_MP3AudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; CD0684C129832B1A2C6AE8E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CD309FAA7F85CA991A489A08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; CD33944EC8F554BA64242262 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; CD39F20F8A8273B62632EBCC = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; CD4D4588493F1466A53E7CD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_CoreMidi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_mac_CoreMidi.cpp"; sourceTree = "SOURCE_ROOT"; }; CD58F563ABCAA111263D8255 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; CDCA935BA045154E92DEE09D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; }; CE02BE1A0291F4C6C55DD14D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; CE37C0B005EECA7D52093A82 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; CE5EFD0B93A7DD3687B3FA11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; CE6199FD4EDDB4537A206D63 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; CEBF81D1689753BB5F3FDBE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableBorderComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CED4C734633F91C89BFD3829 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; }; CF9C14069C105C1A217F194A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_QuickTimeAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; D01042D887575822E0081B0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; D02AAF5A413CDBA06CC7DFE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; }; D04BA00975A92412026A237A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MACAddress.cpp"; path = "../../../../modules/juce_core/network/juce_MACAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; D078B13C5448B055AD1587EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorListener.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h"; sourceTree = "SOURCE_ROOT"; }; D0BBABAF387DC7B741787440 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; D19CD21192E82B0ADDEA153F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; D19E7811EB87D4AAB4FBF421 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Visualiser.h; path = ../../Source/Visualiser.h; sourceTree = "SOURCE_ROOT"; }; D1E4737C60EBD969197A6FA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; }; D254890C63ADC9C6812BDF93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; }; D2A8BDAAD64FF5A5442F1C3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessage.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp"; sourceTree = "SOURCE_ROOT"; }; D2B89986858D8B327441661A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; }; D2BC77B38E85C0126AEDC3F1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MD5.h"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.h"; sourceTree = "SOURCE_ROOT"; }; D30D77B2572852C5C9FF86C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../../modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; }; D3FE216B5EAC55834446D659 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_BluetoothMidiDevicePairingDialogue.mm"; path = "../../../../modules/juce_audio_utils/native/juce_ios_BluetoothMidiDevicePairingDialogue.mm"; sourceTree = "SOURCE_ROOT"; }; D408CA86079E3FE98FEAFF99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadower.h"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.h"; sourceTree = "SOURCE_ROOT"; }; D424D907C93822CBBABB39D4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Matrix3D.h"; path = "../../../../modules/juce_opengl/geometry/juce_Matrix3D.h"; sourceTree = "SOURCE_ROOT"; }; D48FE428CE33968C024759F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginDirectoryScanner.cpp"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp"; sourceTree = "SOURCE_ROOT"; }; D5CFFAB59CC287F87A6F67BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Common.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3Common.h"; sourceTree = "SOURCE_ROOT"; }; D665353CD91C952945B5C0CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioVisualiserComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D690112A5DB4AC36AE518836 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; }; D69B16D06E21D1FBEA756A3D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; D6DBFE153ED66744A79FD7C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioAppComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D6E871933044DB7C729653D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; }; D6F4411BCCEA6358FADA3BC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; D7021C3CB4B5DC28A2BEB886 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlacAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; D7402ACDB1AAA5A345B61529 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; D7694A3176492013902BBF3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; D783DFE1BF328D75FA4EB7EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImagePreviewComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D8275ED6BFD4AAD7BF13CC2D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTree.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.cpp"; sourceTree = "SOURCE_ROOT"; }; D8D65FD4A2F1B4572540A21D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; D8DDE8B0AB11A6FFB9C7A8B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoableAction.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; D8F87300D82C3F5E989A9011 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; D8FF2E14B072C8B9544C95BF = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; D97D04E27CEBD97B988F3F7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_cryptography.h"; path = "../../../../modules/juce_cryptography/juce_cryptography.h"; sourceTree = "SOURCE_ROOT"; }; DA03D10FD1896F49D3AA2D81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; }; DAA02F90C34CFED97483236C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_win32_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; DB096C620CC605E3347E49DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; DB130B7171062DA7585C54F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; DB3CD0B067F5FABA895758A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; DB68CB04F33818FB58F304B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../../modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; }; DB895ABF03BA62DAC80F9B7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AiffAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; DBFBB4E07B66E9FB6EFC0CA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormatManager.cpp"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; DC40896B34539B4CDFD98A83 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDataConverters.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h"; sourceTree = "SOURCE_ROOT"; }; DC8568B8091FCF34F5F2B264 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Synthesiser.h"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"; sourceTree = "SOURCE_ROOT"; }; DCC6CD0D96DF5D56628DC513 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; }; DD5088088E2F96F2A90F846C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OggVorbisAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; DD814F83C89F94E61871C009 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; }; DDD9956A34EECD84627E4D23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; DE21CD502DCDD7D2934F72BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; DE51539BA5A479C76A8BB82E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; DE5BD7F4C4C455FAE894D657 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatWriter.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.h"; sourceTree = "SOURCE_ROOT"; }; DE96C095E423324993DCAC8E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormat.cpp"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; DE9C13FD08D8717984C5306B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; }; DEE0007C38531B281E20A2A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPlayHead.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPlayHead.h"; sourceTree = "SOURCE_ROOT"; }; DF0BF35672EB45AE2A8E0966 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; DF1EA5A6EA5F6AE282F2A49B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; }; DF63EBB2114464E14D80E087 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; DF65E154752472424051E11B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; }; DF77C09D912D32A137200C50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; DFF18D2054F756B486247AF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RenderingHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_RenderingHelpers.h"; sourceTree = "SOURCE_ROOT"; }; E012ACB1A57FAAF6CB476741 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; }; E026A53FF9F9EF195C0EE710 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E0513862E1966494CD8EC68A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlacAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; E0AFFDE86D2593F1FF21FEFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; }; E121AC6E7E98A5CAFDA979A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_utils.mm"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; E1CB32FBE6F6E310599E2D26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; }; E1E2599D827CB64258EC9EB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WindowsMediaAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; E1EFD62896E03997AD0B77AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; }; E22DA44980799F3DA64DDE25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; }; E2867ABC0D315CD6C4239554 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectShowComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_DirectShowComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E28C99608B801215B814EE25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MixerAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; E2A4A21072EC5C3AF96939AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; E2D1B06DF3B78955E6076686 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; }; E2DA6A821B25A153D3860A13 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEMessages.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.cpp"; sourceTree = "SOURCE_ROOT"; }; E2EDD6CB9434A89412CB83D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; E3432D2DC4E51EA2B58C49F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E37337FE5F1EA5C0675E05EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; E39A3A161533974224B415C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; E3EBACD5CB6769BBB22735D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; }; E41EFBEDF1FCC35FA46E0758 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; E42FD3B1912D5F551179D1DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; E55E5BA2A453E87D427CB4FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; E5B599378BB30FA87B3E360C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; }; E62F93F0E69F1FDDBC40E5FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; }; E630DE24659C252E9EBFE366 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; E6BBD52DEEF5BB309A5E0D36 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; }; E6C36657CECAF4AA1AD8558D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_freetype_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; E746C564E0175FB54090D87A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; }; E75814074C88E2E781498AAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; }; E79180FB373A881C6F5B60E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorEditor.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h"; sourceTree = "SOURCE_ROOT"; }; E7ABB8B409A117BB3FEEEE0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; E7E7C43041E9BA05EB4FCBD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorParameters.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp"; sourceTree = "SOURCE_ROOT"; }; E81E701E50B80CD8D7ADD9A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BluetoothMidiDevicePairingDialogue.h"; path = "../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h"; sourceTree = "SOURCE_ROOT"; }; E833D66716056A926C5C89F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; E84138DC7565FE1416315C8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScrollBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h"; sourceTree = "SOURCE_ROOT"; }; E853BEF233C01DBAFE0DDD63 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; E8669227B7C5605F03DB0218 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BooleanPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; E8859539419AFAB74AD0E592 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; }; E8BF6B3522E318AF306DB68D = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_events/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; E903BD2C42BC73A2D07B2D56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; E9812566DAAA2B50B3A21FBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_ComSmartPtr.h"; path = "../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h"; sourceTree = "SOURCE_ROOT"; }; EA305103C28E10C02723A54C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LagrangeInterpolator.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp"; sourceTree = "SOURCE_ROOT"; }; EA74FE68F55905DCC00E5F9B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_events.mm"; path = "../../../../modules/juce_events/juce_events.mm"; sourceTree = "SOURCE_ROOT"; }; EB151DF44C739572E4BC1E16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyListener.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h"; sourceTree = "SOURCE_ROOT"; }; EB9428C401AEE0E7D09B5566 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; }; EBDAA7D47F11011A2332666C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; EC102CE64BE3F8AF1D3B720C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; ECDBA884241B6AAA334E0D23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; ED067DE4926598C42B4EBC8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; ED6A7341ECDCC395ABB50FF0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; }; ED8B57E5C91C21AE53C2693F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; }; EDEA57CD386F98DE9E17C6BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MD5.cpp"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.cpp"; sourceTree = "SOURCE_ROOT"; }; EDF6D41F0DD4DAC224C6BCC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; }; EE25A55A433D3F49D9CEB7E2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; }; EE7FAEA30D9CE2164584A78A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; EEAA56CA1D734C607F3CDDA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLTexture.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLTexture.h"; sourceTree = "SOURCE_ROOT"; }; EED0A429D445855F953C216C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; EF2B4989E0D155EE1D678F08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; EF5C5733F527839385058414 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; F008D0FCAC412A662ACF8CE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; F038C05A3CE96C4713D2A1C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; F069C0B7A0FA2E1ABCDDCC59 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; F0FDA8930B43FE5CB66D6CB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; F10DC52CBB1B254FC223A215 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; F1DB507A323F101AF64C0BD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; }; F229305EABC54A0360E3F43D = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_core/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; F234E0468AAAF83CC3181F58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; }; F242D93EC6CECD96C182FFEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; F244FC45098CF46687C0437E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiBuffer.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; F24DBB309D44148115EE7202 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SelectedItemSet.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h"; sourceTree = "SOURCE_ROOT"; }; F2ED06DE39A6A3BB84A23F8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; F2EE77BFC5289905F345230C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; F339D1DFAAD5B0D011B72AC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEZone.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZone.cpp"; sourceTree = "SOURCE_ROOT"; }; F34AF47FEC2C9342DBA43833 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputSource.h"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.h"; sourceTree = "SOURCE_ROOT"; }; F40683744DB687F8B72C133C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; F4479BE62D0A08B4D2C02DB9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; F47E8376EC7BDC4528239031 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BlowFish.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp"; sourceTree = "SOURCE_ROOT"; }; F4EF587736A179433A6784CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../../modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; }; F6346CA0038C6218ACC926B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; F6892B7A65D34CEA069065ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; }; F6A72C0BF37C9ECC315FEE8E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; F6B60D635CDCF67189D36226 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; F6B6B1365187B9519FC0A206 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; }; F7369DF5ABFBA560A5FD5E71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioUnitPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; F7E832627C87C46DCDFEE64C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainComponent.h; path = ../../Source/MainComponent.h; sourceTree = "SOURCE_ROOT"; }; FC7EF3CDEE50B555E15E362D = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; F2F5F067109EB7C9537DD9AD = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ExpressiveMidiTest.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; F43667EA56F363AEB2B05633 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; F4515E036F6B680D6D6DC8C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; F7ACBF56597C2D60F4795F64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; F870C5032CF4205C73C7D6BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; F8A78774C3D5B868C9B284F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_JackAudio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_JackAudio.cpp"; sourceTree = "SOURCE_ROOT"; }; F8C9CB0B192609E85304CFD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; F966FD65D75BE3D11D0C5FF6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; F99DE3F007FFF9F697C63849 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Clipboard.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Clipboard.cpp"; sourceTree = "SOURCE_ROOT"; }; F9AAC643E9F18D7EFB610EF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; F9F9A26F9FF90E3D18275949 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_opengl/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; FA161FD5E96B2B2115B6476D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; }; FA41FA5168778882CD66481B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; }; FA6C06C38C3B71CDA2D8919A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; FBA1D6C3F0CE4D37146DDE37 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; }; FBA615F612FB406896AEFE5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; }; FC14C5899F93765A74125329 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormatManager.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; FC847EE9B175571189CEB522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPosition.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h"; sourceTree = "SOURCE_ROOT"; }; FC90CD1022F5AEDEAB769D66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilenameComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h"; sourceTree = "SOURCE_ROOT"; }; FD0A0A1DBC1E2CEF451EB097 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; FDB6B9D5EBB59B8C2069A0E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; }; FDC14145C1B7FCA7797DF38A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_ALSA.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp"; sourceTree = "SOURCE_ROOT"; }; FDC95CF6C957C43FF646C7DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; FE207453DEB0158B218F1EEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; FE31FF67DA4B994486AF30B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; FE3743EE4D35B41B46F938D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniserFunctions.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h"; sourceTree = "SOURCE_ROOT"; }; FE3B1B765FD79B42BAB31946 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; }; FEA9025EC5AFF06C3119E2DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../../modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; FF8B79CC34C6EEEAE3C31C7F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LAMEEncoderAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; FFA933744B1A866F8733BA0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; FFA9C3C0C173CB01D1AB7EC0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SubregionStream.h"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.h"; sourceTree = "SOURCE_ROOT"; }; FFBF68910D82B4BC2BB3D5E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; FFD0216F53E975D8EF78328B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 47DF0B5F0B14AE411808F7CE = {isa = PBXGroup; children = ( 24A91402E8066EE92308ED53, F7E832627C87C46DCDFEE64C, 8A05FE986C91C1BB9EA88AE6, 839BB72EB3C380942B175961, D19E7811EB87D4AAB4FBF421, ); name = Source; sourceTree = ""; }; C69BCE512948465235B05858 = {isa = PBXGroup; children = ( 47DF0B5F0B14AE411808F7CE, ); name = ExpressiveMidiTest; sourceTree = ""; }; 5489D521ADF9019843119414 = {isa = PBXGroup; children = ( A2579D66249C62C1DEE92E1D, DC40896B34539B4CDFD98A83, 033CF8E14902A81FF64A0EF7, 9F0EEFDFFB29330643715D31, 0A078E86A69712204CD5256A, ); name = buffers; sourceTree = ""; }; 217610183EA8BD76B32A1091 = {isa = PBXGroup; children = ( 8EAB66AFD0A5824AF6C38F56, 294E38D35B22AEDC556CDDEA, BF636F03555370A34F3E92E8, 3CBCE009F649A76261CC81C7, 92AB3D8F15EC41F68BD98735, EA305103C28E10C02723A54C, 906858F4D1A91AE92FE33431, 4A7DE0647A682256D4E61BB6, ); name = effects; sourceTree = ""; }; 5FA8DBD6DF93443F73A1872B = {isa = PBXGroup; children = ( F244FC45098CF46687C0437E, AECE3E00CA23B8BC04DC0326, 12DA948C2F890AFCEC584E18, A802D4B2EC2895FC9409844A, B2CE1594EB33B071195025DF, 74D28D21EF6BAA38475B5DC4, D2A8BDAAD64FF5A5442F1C3B, 814EF966AA71A45BCC8C4A30, 2B6313BEE19952B09B892F97, B53A535D45DC0A485F1D7A03, B28125595ED641D8D708A672, 02AF229CB188EEBE3B0213B4, ); name = midi; sourceTree = ""; }; 9BCB14578B2C8CC21FDA6382 = {isa = PBXGroup; children = ( A353726F76D426E1528DF4E5, 22A8E10FA861E5E3824C37C8, E2DA6A821B25A153D3860A13, 3F5354BF6BADA9E5AB9C8762, B59F17512F4995C0DA023400, 7678218746FA8A0FE22E8BF6, 6AADF3E468257D223D3942CA, 6847021E92EA605C660B2E95, 6FF0F98B0B0A872157CE5D60, 12321A80AB65526F1CBCC467, F339D1DFAAD5B0D011B72AC7, 5DAC8E916AE370AAAB459391, 098829F7BA0AC367A8DBD55E, 4A13A7A56AAF148FE41452A5, ); name = mpe; sourceTree = ""; }; 40898647F35D01F6A2699106 = {isa = PBXGroup; children = ( 55B994CF8C32B8FAE0C8BD29, CE37C0B005EECA7D52093A82, 149DDBEC3F5A2D3920A7C974, 25CFE2B2F50BF6AC1F57C0CF, CB0C9A0921B30250FE6A1E31, 991C62245D7F40A04BF7A7A9, 030A438E1EE9564FF921DC9C, 5A917183D906C359DC72C343, E28C99608B801215B814EE25, BCF92E9C27C5F13C1CECF184, 97BA5E8EABCECBF2507DCB31, 3729299D2A64E43C1F08345D, B1A70491D38102254282A55B, 30B0695DFBFC7FF870A58DE6, 42371152802017F57D1D7E7A, 8F48D8208E29A75118A98737, ); name = sources; sourceTree = ""; }; 4E643F9CD9EE691AE833B64B = {isa = PBXGroup; children = ( 75C8387A8EA8DE5E856952DF, DC8568B8091FCF34F5F2B264, ); name = synthesisers; sourceTree = ""; }; 6D6BD190E0292674F39E8980 = {isa = PBXGroup; children = ( 5489D521ADF9019843119414, 217610183EA8BD76B32A1091, 5FA8DBD6DF93443F73A1872B, 9BCB14578B2C8CC21FDA6382, 40898647F35D01F6A2699106, 4E643F9CD9EE691AE833B64B, 4C5018AA4799F86499662B0E, 9EE84FBC6D21836516BE409A, ); name = "juce_audio_basics"; sourceTree = ""; }; 4E68B457C9E7F2B65A5B88DA = {isa = PBXGroup; children = ( 3FC1061502C287C1D0099B21, 44E830CE4F46500243B0F095, 334367A18F54C928DC48ACA8, 0E9623E6E7FF23C09E3B1AFC, 001595A5B01C0F1EBB38054F, 58587BC050F0D9A45940FE62, 570B9DC717F39CD9455B6A4C, ); name = "audio_io"; sourceTree = ""; }; 8163EFE6597F8420428189E3 = {isa = PBXGroup; children = ( 00331FA93EEBE239AAF33926, 4F371455D5C271A26FB4272C, 0AB0EB7DB8293C2AB03F001B, 5F5EC6184D029A61D4EAFEB4, 0ED6AF00F8FD440991D6E9B4, ); name = "midi_io"; sourceTree = ""; }; BFE026E2BC00A379694115B9 = {isa = PBXGroup; children = ( C00E40B39075B28FE2A6CFA8, 99BFCDD644103FBB6DB8C288, D254890C63ADC9C6812BDF93, 925C571487EEB3DCE49D5767, ); name = sources; sourceTree = ""; }; 72B1340F1020F9087F37A76F = {isa = PBXGroup; children = ( 49E4C6DD3893245B406C90BB, E0AFFDE86D2593F1FF21FEFC, 5A28DED9BBEDC2E03C6AECFB, ); name = "audio_cd"; sourceTree = ""; }; 2B2C179AA15B3FF9075EECC3 = {isa = PBXGroup; children = ( 3F38B8657F25B4ED7A44AA58, 226FD52F4533F8CE03C8DF20, 44524BF33AC80E3F57C0522B, 6401226633396ABB651ACF9A, FDC14145C1B7FCA7797DF38A, 6E993A8C1ED9ECC3852FE787, F8A78774C3D5B868C9B284F4, B66835ECFEB59CEE77211F94, 80DA8A6E51A23964A6590918, 821E625B06C44D6189F224D4, 22FF2F2FF1B698E1712DE7BF, CD4D4588493F1466A53E7CD0, DE9C13FD08D8717984C5306B, 2D096B9C273751E74770F8A6, C8CF6019DC71E9EBC2AF7640, 5DA875ED1131E5FF6529B0CA, A5136F150AC3C3D48C8B5BEF, 08B60F139B2A313DB825ED18, 34F6D81CDDA0736524995278, ); name = native; sourceTree = ""; }; 6FA8D51AF51DE1C29574C6FE = {isa = PBXGroup; children = ( 4E68B457C9E7F2B65A5B88DA, 8163EFE6597F8420428189E3, BFE026E2BC00A379694115B9, 72B1340F1020F9087F37A76F, 2B2C179AA15B3FF9075EECC3, 4CD401D9D010608EA9D68C35, B50A8EE15B6ED3D2A655C0F4, ); name = "juce_audio_devices"; sourceTree = ""; }; D9636748AB4515EA6F70F6F1 = {isa = PBXGroup; children = ( 66DB34EE165CA04ACACB104D, 55318EBDA23C2918FC8D838E, 8C6D860D00B9D27F59BE688A, AD47911F727BBE2907742B6C, E6BBD52DEEF5BB309A5E0D36, 44F7EDE4220F31B641051082, B346F61236D50FFFAA93DB58, B1D0E807C8AA03DCD59D95CC, 0C03AA02839664626F4DEECB, DE5BD7F4C4C455FAE894D657, 3138762B0FB6AE1FEB2A444D, 6338FC98FAF82F3C9A15E943, 3E77C173AE32F62B892CF01F, B84ECC2C7B1E0C5283C5DE92, 4F7F3DF2110623AD17177CC9, ); name = format; sourceTree = ""; }; 0FE231DB06C13D3823C690EC = {isa = PBXGroup; children = ( DB895ABF03BA62DAC80F9B7D, 1DB0E5D44E06C20E9596193D, 9241AB0AAE9428D1D3404DAE, A0C8388A92088676B9F60B7D, D7021C3CB4B5DC28A2BEB886, E0513862E1966494CD8EC68A, 82AB090E4FDB3EE467CC1D5E, FF8B79CC34C6EEEAE3C31C7F, 5C0DAC2F2E64A243C0EE8A23, CC2A62060FD202B17EACBC03, DD5088088E2F96F2A90F846C, 04713D6B292066E0E5F9E3BA, CF9C14069C105C1A217F194A, 096393D9E6EBD72262AF3D77, 4329C1D2114988B6B33E4ECA, 1D766E0719754559EDA33816, E1E2599D827CB64258EC9EB0, 0A7749697A76FDBB036E1B55, ); name = codecs; sourceTree = ""; }; 8ABF3BD4A9FEBEC19699733B = {isa = PBXGroup; children = ( 54683E42FA3E4E644B5BA342, 6651651E2DB80985AE11BC2A, ); name = sampler; sourceTree = ""; }; B0157000DB5FEB5AF75E4F9E = {isa = PBXGroup; children = ( D9636748AB4515EA6F70F6F1, 0FE231DB06C13D3823C690EC, 8ABF3BD4A9FEBEC19699733B, 6572780DEF7C396030F7E88F, BA74CBA07F7E462B824D155B, ); name = "juce_audio_formats"; sourceTree = ""; }; B141FE8425056D7A1111F49C = {isa = PBXGroup; children = ( DEE0007C38531B281E20A2A3, 51FB54FB93F826E8B4207DAA, 8B4618262B4BB0A436C51B6C, 571B4FA4AE8176E2B4328567, 8D2FC9A82A2C76FAB8AFA963, E79180FB373A881C6F5B60E1, 772FC3C9E091EF0A66C077C1, 035F7E38035024592C9CC7BC, D078B13C5448B055AD1587EF, 9DB04269AF81BBB96EA3BB19, B05E72AB3D6C98EE78B78396, 74EAE983AF79D27EE6858539, 71C76E49F379F9B05389C3CA, 7597D668A9F5F71F9D02D8DC, ); name = processors; sourceTree = ""; }; 56224860442B325B89B3D560 = {isa = PBXGroup; children = ( DE96C095E423324993DCAC8E, 3DA4C013F3A87FB9066D9A06, DBFBB4E07B66E9FB6EFC0CA4, FC14C5899F93765A74125329, ); name = format; sourceTree = ""; }; 8399A36C496E0E4B8C36120B = {isa = PBXGroup; children = ( F7369DF5ABFBA560A5FD5E71, DD814F83C89F94E61871C009, 807FB66424227F43DB1E720A, A77D3FB03D23EC79D35A3583, D5CFFAB59CC287F87A6F67BD, 07B0233D286E466E20AC2887, 8D9DDE982773DF3829A5D2EC, 3BC401D5C6F376B3E8A98BE9, 6E9C575B96F65E6DDD4F62B8, AC3A1878FFA5E36CC67EF642, B5EA0961ABF5E581D4DA94C1, ); name = "format_types"; sourceTree = ""; }; 4AE5724854053F8845688903 = {isa = PBXGroup; children = ( A084D01ED9334EBAFB966862, 5C198C39CC5322356263DE10, D48FE428CE33968C024759F7, A68450207C4150B561E61A30, 861B3C3F2D0A1C24E85233EF, 418A6B140F02F7642B04C53D, ); name = scanning; sourceTree = ""; }; D8411DCED586C411659DD219 = {isa = PBXGroup; children = ( 5DE9D9EBA17102EFC3DECDBE, 6E52C52B8794D97378E70B01, 38E9379C8C6490ED44B87159, 670D4EE6E16AB62126E09DE8, E7E7C43041E9BA05EB4FCBD2, AB209E34B329FDEFA3032277, 9C0AAFB1E56B8FF6CB8F614B, 39D44FF56380385B8384F81C, ); name = utilities; sourceTree = ""; }; AB48A58D44AEFCA3F21E8D14 = {isa = PBXGroup; children = ( B141FE8425056D7A1111F49C, 56224860442B325B89B3D560, 8399A36C496E0E4B8C36120B, 4AE5724854053F8845688903, D8411DCED586C411659DD219, 01982E7F111EA0F64A134DAB, 3B86FA979F365227E1EB9592, ); name = "juce_audio_processors"; sourceTree = ""; }; BD867FD0796BCA4D85BA1A2B = {isa = PBXGroup; children = ( D6DBFE153ED66744A79FD7C7, 85608CBD070076019F0A5AAB, 7060321468CD7FF42AAF182E, 35B0BB5C14EA49DAB3BFC581, 59C5684A0F1049099993BD31, CAD2314B200074610B2B3CC5, 5296588DFEE115D050FFDBE4, 1130B7A258A90A3443048D10, 9599D7A27E31328EB5BAE931, D665353CD91C952945B5C0CD, A441178DDFDC6458E849F535, E81E701E50B80CD8D7ADD9A0, 6B08381BCFD3448AB40EB764, 109575E72FCBE619A842EADB, ); name = gui; sourceTree = ""; }; 53729100FC8FB30CBB91B28A = {isa = PBXGroup; children = ( BE353035E54BBD637701274C, 703E93210140FC510B4C30B7, ); name = players; sourceTree = ""; }; FCAEACFE743F52A057EB2683 = {isa = PBXGroup; children = ( 07986389020D0AB5D139286C, D3FE216B5EAC55834446D659, 5FF0AE9C309D0F00EE9D93B8, 5975D093AA16540D75DFC05E, 360380932997DAF4065415CC, ); name = native; sourceTree = ""; }; B41158B4484EA0875E08A9DA = {isa = PBXGroup; children = ( BD867FD0796BCA4D85BA1A2B, 53729100FC8FB30CBB91B28A, FCAEACFE743F52A057EB2683, 40596589E6A4CA47E84EE943, 7E380BA307E4A53923F32491, ); name = "juce_audio_utils"; sourceTree = ""; }; 93B788DFC1C7243528F1FA3D = {isa = PBXGroup; children = ( E75814074C88E2E781498AAB, A070B9FA4EEB5C5AEED5561A, 4DFE65A65E05E238FE866846, E37337FE5F1EA5C0675E05EB, CED4C734633F91C89BFD3829, BB43F941001F9EDECDEC4836, AFEEDEBED70B5B1D1B0AE490, 7A4BC1998983615017DC2BF1, 355BB193F5BCA256A8F08E02, E2EDD6CB9434A89412CB83D5, 21FC0D072DCC9C6AC57D6C45, B66D5720A6D53D145235B680, 98A33952B59DC73987AB3F3E, 0FD3D4A7B7481F8361E14D82, 522CD93708D62677267D572C, 29FC11849A8427D248E2D21A, 94326617CCCB546B084196BC, 9F73DCCD91827818100240F0, 7BD2190159E33306493A2F15, B8CA9856C1004FCC5CC4F710, BC379633DCC75D8A5F2582D8, A2CDBE41FA1F8EC3E492683C, 3E298D7161D5A18EA25B0852, CADCB071D5B0B5B6C355EBFB, ); name = text; sourceTree = ""; }; 316F29C45111629E4CFADFD9 = {isa = PBXGroup; children = ( 7B4BED87BE117AF628DDC1EF, B82A885925538D2A750B5077, 0DC3165A5F3B775232531A23, AF8A2C37DFCE17AAC5976773, 88A6977E6C431A7B8E41B87A, 2B700EED388A0D5BCD27119C, B3D740F535AE6C7211B7F346, 52C3173E0EE9C79C08C5DDFA, C622457017D7A56DC4C7FC67, ); name = maths; sourceTree = ""; }; 4D4790E42CCA98AACE00B679 = {isa = PBXGroup; children = ( 6BCD122B109FEA7382F86B6F, 79C500C091AF9E639F37C514, 7F555DDE48B74E14F99C805F, 15326497248BF0C5248444F7, EBDAA7D47F11011A2332666C, 260FF0356209F0FAC5EF72F9, 73F442AEA16947270FABB59A, 8ED647B92C0CB084AB1756B8, 5B1A209CBE6AEB1063FB149F, 6CE9869F76A0BDBBAAFC2AD2, B8F33A418BB2AEEA980B25FE, B02859F63C4DB6CFB687B30F, 0591FF86C4D808638C1E1B31, D30D77B2572852C5C9FF86C0, ); name = memory; sourceTree = ""; }; 5992DD47776CE4F001ECE043 = {isa = PBXGroup; children = ( 9963DA20A3A169F096DA9FCF, CE5EFD0B93A7DD3687B3FA11, E833D66716056A926C5C89F4, 5623335C91C27A0ED7A4CBEB, C1CDE97113A08C356493680A, F43667EA56F363AEB2B05633, A60F4908677D0C613FB1737C, 1C75EA4C7928F352F3C5843A, A510130632DD97A188B6C814, 97C8203B745D9AFE10D00FDC, 1672341168714E02AED9122E, D02AAF5A413CDBA06CC7DFE1, C2B858DF72CD2801C22C109C, AB25A2883C749400DBBD2F3A, 6EEB164FC6C3D32E231A15C0, 0E4A876D029AF3B748C520E4, 5E45C2171455CA101B0782EF, 4709326ADD1AEB0FAE3F0E28, 72FA76AAEC0B844D6A97B04F, 9E757FCCA80FD5CDE38CE39C, 89A9ABEAE3260E88A8286832, ); name = containers; sourceTree = ""; }; CCB563EF33548D5CC941B744 = {isa = PBXGroup; children = ( 17AB90878E18D665B5F05E1D, 4A17352DBA7235663A22CA37, 2E19514EB12ED8C007D02BED, A5C776304CEA43636F46A5FE, 380DE52CF0881D08E28EF459, 435805944C64D39060796749, 3EA36ED5181F96146B13E1A3, B0EC575BAE9C7CA8148B2814, F4515E036F6B680D6D6DC8C9, 47CA6B2483E98530ED21101E, 143EBC60EF7CD518951B3DFB, 380CF7E6B4A92C10348D923E, 55774BDDEFF8D07E7657F2D9, 30EAE83CBD3493EA5E75C943, 69E514BDB41278F42D52E932, 988A1AF75EB5E8F25AAD1632, 0C614464266C8D7861BB4688, 152F9CC2FD2D12CD202427EE, 9AB9C86B8CA403F869AE410A, 9AB400909E97F5649F5A99A0, B76CFD3BC6CEDC9DBA1E63EB, A67CA597C2F003ACCB9C931D, ); name = threads; sourceTree = ""; }; 6184FF3D83820107C5B1024A = {isa = PBXGroup; children = ( FA161FD5E96B2B2115B6476D, 6285DDA600803EFB4D1F8EC6, 0DC3607C9300A572222E9668, A197C8251B7D0C4E6F502433, 74C004337047593335F0EB2F, 1DB6C92024C5D0273B576FFB, ); name = time; sourceTree = ""; }; 22310530F28620B8D9BA128C = {isa = PBXGroup; children = ( 42671DCA829C86E21A41AA48, B5C2E2E572443EBC683A308B, 1EE89A61F329252103888090, 64CE05BF5F2A115665AFE76B, 10DCFDBEB5A9192F4AF351D5, 20A2A473C608297870499BDE, 3530734CC3320BD8D4AAAFAE, 539990B2CDD50F397B743256, 70D59B63181ABCB009B6248D, 3953B849E9B19989A39B9268, 508ECF11083AD7BE530896DE, E5B599378BB30FA87B3E360C, BF4B42874613F1E620EB9A7F, 58DC77B1478A9F35AC2DFB36, D7694A3176492013902BBF3F, 237324C3262FA4A6854BAE69, 5EEB8F8B7C5FE167380BE097, ); name = files; sourceTree = ""; }; D6B10605190A8ACEDF432FF1 = {isa = PBXGroup; children = ( 2E4AA3AC87FCE4E51218FCAD, 9993C464C5F2B833CCB80E73, D04BA00975A92412026A237A, 7C263AD6FB3F219F513FC2AD, 9C9DC2BD4FEE0C379DE12571, 9F5F2836C2D83C3F53254241, A816E22F2317F3AB90262CB4, DB68CB04F33818FB58F304B7, E62F93F0E69F1FDDBC40E5FA, D01042D887575822E0081B0E, ); name = network; sourceTree = ""; }; 5ACD43AB3DA26EA8E78D5F52 = {isa = PBXGroup; children = ( 7861AA53364025BA5B10E816, 9E4BB78272577D198F7CEA4E, AA21DA98CEF52C5F09BEEC38, F34AF47FEC2C9342DBA43833, ED8B57E5C91C21AE53C2693F, 2BF9277EE9D23E6756DDEAAD, 53679FA0362E193DBB53E5B6, 381C61E5D8990308F006A622, 4A83BA7F930D8A2D7377C4F8, 1A9CD64FD02DC991351F79D0, F870C5032CF4205C73C7D6BE, 3D23A96B33496215A0A41752, 2FD97DD724D2656CF1E0D166, A004966E7468D0F909B144B8, FFA9C3C0C173CB01D1AB7EC0, ); name = streams; sourceTree = ""; }; C18471B46EC423B7B641B6DC = {isa = PBXGroup; children = ( 1683945897B57B67297DE68E, 0760036B9D3615440627B5E1, F2ED06DE39A6A3BB84A23F8D, 37769779C54F5EAA72386EA8, ); name = logging; sourceTree = ""; }; 25774FF13894F0C8069E0942 = {isa = PBXGroup; children = ( E1CB32FBE6F6E310599E2D26, 0892D5D2CB6A4453365FBB2E, 2DDDB0D5D31784DE584658A3, A55F7E43C7EBDAB0936E49DE, 230A9419C6C9B6D00D2BB8A2, 86CCBF0A2BA002DD4F6EF744, ); name = system; sourceTree = ""; }; D3D244BE0B0E2F4909304C21 = {isa = PBXGroup; children = ( C27C6E28C83CFDDE48D68C36, 864B819B16A5912645B76472, 9A345A87139ECBCED9ECED0C, 7BF0F10BC424F0558F6E346C, ); name = xml; sourceTree = ""; }; D10F20151607501065C2E850 = {isa = PBXGroup; children = ( B492A15E9ED021566DDDF527, 12A38F9DB2A92D7E4D566697, 89DADBB730BD793525216677, 9EAEC4C3DC466EB31FBDA4E9, ); name = javascript; sourceTree = ""; }; 2588A788741DCD917C0F5756 = {isa = PBXGroup; children = ( 2CB483940897747625E0DEF0, C495993112F10E9129851E8C, 5DAA0C0CDF8A539F6FCEFAA5, B03367C60569B1910FD00AC6, E22DA44980799F3DA64DDE25, 0B4BE6C38E70E7391A88B4CF, ); name = zip; sourceTree = ""; }; BBD3ACD1D6192688C7E8FE6C = {isa = PBXGroup; children = ( F0FDA8930B43FE5CB66D6CB7, 6C03D708D1A0BE6E3315D8AF, ); name = "unit_tests"; sourceTree = ""; }; C4F26089A6CEE0C99EC8FA55 = {isa = PBXGroup; children = ( FEA9025EC5AFF06C3119E2DE, 7CCCB8DF5D4F39091A296F19, 6F47E5D0F6E40ED2846E6572, 814ED3A6EFB59ADEF6747D30, 44144EB6BBF8C91984B24B26, ); name = misc; sourceTree = ""; }; F38C88E1DC944F4C43265644 = {isa = PBXGroup; children = ( 4129D412D114068734D0831B, 5F906D2606C9F07B104120B3, 25679A32335DD3ADDA3902E2, 862E55A52A3835786CABBA97, 2484173D7D4BA02BB498C49E, 6B4A3C085C5D53EA256808B2, A62B2A3C8BD64FCB92519B71, 4383EC8C6E41BF29C8C6D228, BAFFF07065ABA4EF9E038D2D, 49100F48E2E4004CF5473D49, 9FD19371668CCB2116D7D7BB, AF9E7DC232E9C7125103A08E, 92340E879472D423470A8ACB, 25908D5017FC87CB6E801484, 1ADE791CC67330FE1018794F, B7995F7528DB0AFA151402D3, 44B170978A7B6AFAA7528EFB, 459847CA0F57CBD0381236E7, EE25A55A433D3F49D9CEB7E2, 5CE908DBC0AD9E238B960303, 93841F898FCD5F4D7E8DBCE5, E9812566DAAA2B50B3A21FBF, FFD0216F53E975D8EF78328B, 7DCDF71BCE61BDA76974A47E, 391416CDD6D0F5ED2F788D1C, DAA02F90C34CFED97483236C, 5F4AB4FE887CEE13DD04B691, ); name = native; sourceTree = ""; }; A8FC72E4F19FEC8B91E632C8 = {isa = PBXGroup; children = ( 93B788DFC1C7243528F1FA3D, 316F29C45111629E4CFADFD9, 4D4790E42CCA98AACE00B679, 5992DD47776CE4F001ECE043, CCB563EF33548D5CC941B744, 6184FF3D83820107C5B1024A, 22310530F28620B8D9BA128C, D6B10605190A8ACEDF432FF1, 5ACD43AB3DA26EA8E78D5F52, C18471B46EC423B7B641B6DC, 25774FF13894F0C8069E0942, D3D244BE0B0E2F4909304C21, D10F20151607501065C2E850, 2588A788741DCD917C0F5756, BBD3ACD1D6192688C7E8FE6C, C4F26089A6CEE0C99EC8FA55, F38C88E1DC944F4C43265644, F229305EABC54A0360E3F43D, 3C3914CF4EB61FC23AEA3490, ); name = "juce_core"; sourceTree = ""; }; A87A8F3E687B87185D390390 = {isa = PBXGroup; children = ( F47E8376EC7BDC4528239031, 3FD9075B28C4450CFC36F949, 87077F5EFF965C2D201F6E14, 8937E49637ED97118277A146, F6B6B1365187B9519FC0A206, 866DF75570266BD14E146D0E, ); name = encryption; sourceTree = ""; }; 5A9B169E349FCD88C8D3FFF1 = {isa = PBXGroup; children = ( EDEA57CD386F98DE9E17C6BA, D2BC77B38E85C0126AEDC3F1, 7816A52096E7A88C501B1130, 4339E4AC89EC3FA5C5F4CCD5, 8FC849BFEF9953E872591AE4, 8EC8237E53FD84E9697F2C34, ); name = hashing; sourceTree = ""; }; 0FF7D030BAE4E164EAF53EED = {isa = PBXGroup; children = ( A87A8F3E687B87185D390390, 5A9B169E349FCD88C8D3FFF1, F069C0B7A0FA2E1ABCDDCC59, D97D04E27CEBD97B988F3F7E, ); name = "juce_cryptography"; sourceTree = ""; }; C187B575F71B5C6F3B2A3A89 = {isa = PBXGroup; children = ( F1DB507A323F101AF64C0BD2, C034BC82CE4EB8F2568629E0, D8275ED6BFD4AAD7BF13CC2D, 04A9E8ACA19D89D3B4EE5FBF, 498D7E415C0E24045E8CC34A, 07898F72AF374731C8D58113, ); name = values; sourceTree = ""; }; D05C3DF63345D322742D3539 = {isa = PBXGroup; children = ( D8DDE8B0AB11A6FFB9C7A8B9, 575C1AF87615D28A9766B9EE, E630DE24659C252E9EBFE366, ); name = undomanager; sourceTree = ""; }; C42F76D7A76EDD94516EDDA6 = {isa = PBXGroup; children = ( 35303BDED3573FD025AA6BF6, 61E9F7EEC1E8A9BC83431E55, 81979AE0B2796459699657AF, 6CB919D0572583A79239C10D, ); name = "app_properties"; sourceTree = ""; }; E97E404EBE9BAAE69CF6EBF1 = {isa = PBXGroup; children = ( C187B575F71B5C6F3B2A3A89, D05C3DF63345D322742D3539, C42F76D7A76EDD94516EDDA6, A11E58F0D28254BF0C5E6CBC, E2D1B06DF3B78955E6076686, ); name = "juce_data_structures"; sourceTree = ""; }; 11E41E38163B29A096760242 = {isa = PBXGroup; children = ( 020EE4DB59648F4FB8516FA9, BBA80FB6E7B8CC2B36236750, 2711898DEDADE22BFD3A59E4, ACF5C8CA1E6228ACCFB67F2B, 812D84E4F3A82B1C61214191, 1319CFA9BEB6EF9A0CCA5DE1, DF65E154752472424051E11B, 576F07120DA4768B0CB14570, 7120C1DA3DF4C3FE1E82AD0D, 39A0C2C528E433AB151366CE, 9BAF53E9F559484E89236B95, BCCD4D99EC4AAD2FB7DBCEF3, E012ACB1A57FAAF6CB476741, ); name = messages; sourceTree = ""; }; F9AA32A6D2CD2C9600C49E58 = {isa = PBXGroup; children = ( B654E7DD258B9A755CCA7BEA, 19F1E0A1D16107BC0A21D8B0, F6346CA0038C6218ACC926B9, AF04AAABB333D46EAE2FD387, ); name = timers; sourceTree = ""; }; 0D3B940E483EED260C9233E8 = {isa = PBXGroup; children = ( 0F4BDA5EDC7B99927EDE3F84, 31400B4D421980AB72921D8F, C0294ADFDB35341825074EB3, 6715F6B8526A84C7D7F96130, 83AE6F73E2AB5E8368098F82, 3EF6F6A74D6521ADC75318C0, 5984276E446D5C9A035D9FC7, 8533CFE78DDDAB7BD643071C, ); name = broadcasters; sourceTree = ""; }; F7E869FCC6C7B5E60166E628 = {isa = PBXGroup; children = ( DDD9956A34EECD84627E4D23, 5BCFBCD0F10A1CA1755A6496, 6583002220C32FC6E2ABC427, 3926A9B46D728AA024FA23B2, 4E247FD4978713561FAD3C42, 03D75F52F5707AB35D6BA8EC, ); name = interprocess; sourceTree = ""; }; FB1C700442C42DFDF562E24E = {isa = PBXGroup; children = ( 23986EADB0FA1118A421AB50, 148CD006F32196E97DB2E15F, EE7FAEA30D9CE2164584A78A, CE02BE1A0291F4C6C55DD14D, 4D082B7993A7A8B7A84E5AA4, 1BBE5A8CC950364880DE6DA1, 481F5349D5FC0457C31ECCEB, 09D41C26F44CB7D5AE9C3303, ); name = native; sourceTree = ""; }; 2FE035201A22BC055E791509 = {isa = PBXGroup; children = ( 11E41E38163B29A096760242, F9AA32A6D2CD2C9600C49E58, 0D3B940E483EED260C9233E8, F7E869FCC6C7B5E60166E628, FB1C700442C42DFDF562E24E, E8BF6B3522E318AF306DB68D, 3F23E79E8D215B53423F66EF, ); name = "juce_events"; sourceTree = ""; }; F9847817E9BB5512AE44F69D = {isa = PBXGroup; children = ( 687D3BEBD01B7089DA7EBAD1, 84BDA14D7DC9213E854ACD09, F234E0468AAAF83CC3181F58, 0A5EA78978E6DAD9B563ED02, 8740DC474D052F86D39902A7, B021D4BF80511343AF4D9652, F008D0FCAC412A662ACF8CE3, 522EB405E3DDB9138DBB4704, 23D167475E6FE0FAA20C55CD, ); name = colour; sourceTree = ""; }; D1572B954DD1F694A3F2F6B9 = {isa = PBXGroup; children = ( 49F2723942EAE756E456ECF9, 9A24B551B171C6CE823CC0E5, 002DBBBB1D4CAA23FF7991DD, 70401CA75FB474FF0D1052E7, 5E85FF9DADED1BF2F393CA7B, 9F9ABD34F4E3D415CD8E3548, 7F3776EEB353DCFCE936872F, ); name = contexts; sourceTree = ""; }; 372BE2FD5F53BE0867B3023B = {isa = PBXGroup; children = ( B737F86A97583158D47EED8F, A2F3BC68972901383B331361, 2E156BE3E6DBAA7865B0F3C0, 2C8137E945F72BA9105D65C6, 32E90C7EB3FED091E0719B69, BA24E4AEE7BD1C7CDF793728, 55E7B636B43C78D7D5A2F3BD, EDF6D41F0DD4DAC224C6BCC3, ); name = images; sourceTree = ""; }; E36FF72E9ACA557159FF17DF = {isa = PBXGroup; children = ( 8B2483DC502CFB85054091C5, 80888401EE0F8AC038266306, FFBF68910D82B4BC2BB3D5E0, ); name = "image_formats"; sourceTree = ""; }; 5422E92020E708C5C9AD48AB = {isa = PBXGroup; children = ( 2AAAEBE53A14BA001544D40D, 1A88388BE44AED2870102576, 77BDC4AE92BEEEFA03C6C05D, B233151970C7D711A52DF35B, DE21CD502DCDD7D2934F72BB, 8D4C070861B82AC3C9018A6D, 4EB5C90296983797A68A25B7, BADDBE325E0F54D65375A0E6, 83A6706DABCA6472080498B5, D8F87300D82C3F5E989A9011, 1E471A2744F7DAA2E2746F59, D0BBABAF387DC7B741787440, 3A44297947691ABDFE965AD5, 683ABA8E00BCCEDDCABDE1A9, DF63EBB2114464E14D80E087, ); name = geometry; sourceTree = ""; }; 20228E5F8C3C731001D0A5FC = {isa = PBXGroup; children = ( 313744A137B12D90ABC32ADF, 76A004283D71BFD31D9ACB8B, 1C4B851DCA88F1B74D37A957, ); name = placement; sourceTree = ""; }; 7052E1E31883BD4DA5A9A70E = {isa = PBXGroup; children = ( C7D441D167E579678DA387D7, 9C731D9984CC3858193A2C17, 0575302FD50DFE761DAE40B9, F6A72C0BF37C9ECC315FEE8E, 59BE5C6F0A513D6CCF776C33, C75AB0FC6F1A4F57D95397EB, DB096C620CC605E3347E49DA, F2EE77BFC5289905F345230C, 604A0F57022215439EBAF444, 15586852872DD0E50CE31622, ED6A7341ECDCC395ABB50FF0, 3E3006AC0AD8CBA944F20C19, ); name = fonts; sourceTree = ""; }; D57E40A1961685032E00EBDD = {isa = PBXGroup; children = ( 47BBFABAEE4BB9362BBF81CC, A2515767F54BBB1189F67674, 073B9D4A117401CAB7E589F9, EB9428C401AEE0E7D09B5566, DA03D10FD1896F49D3AA2D81, ); name = effects; sourceTree = ""; }; 5AFC1E3D3E4C607478ADEB41 = {isa = PBXGroup; children = ( 36EBA0C5C75594F6432CAA0F, EF5C5733F527839385058414, E6C36657CECAF4AA1AD8558D, AF7854B0FC7EB465C1A31A3B, F038C05A3CE96C4713D2A1C2, 74A2BEFDB54B8061082429CD, 847246F31A8A11B09027094D, B3CBFBDBA3189C6F33B4C980, DFF18D2054F756B486247AF6, FE207453DEB0158B218F1EEB, 3D1B0F640AC066EDBE4FCA90, 076628E712D4AD6AAA111947, 0C0752466019BB68BD8A77AD, ); name = native; sourceTree = ""; }; 03B60629C9CC9D1D5FC4272B = {isa = PBXGroup; children = ( F9847817E9BB5512AE44F69D, D1572B954DD1F694A3F2F6B9, 372BE2FD5F53BE0867B3023B, E36FF72E9ACA557159FF17DF, 5422E92020E708C5C9AD48AB, 20228E5F8C3C731001D0A5FC, 7052E1E31883BD4DA5A9A70E, D57E40A1961685032E00EBDD, 5AFC1E3D3E4C607478ADEB41, A6BC9FC87555B39B73778711, 75321A674B370F32E25E4FBD, ); name = "juce_graphics"; sourceTree = ""; }; DCE64BC7DA75227D26FEFF4D = {isa = PBXGroup; children = ( 8522BED67A89A1DFEAE4FD54, FA41FA5168778882CD66481B, F4EF587736A179433A6784CA, 388594124789651D112746E2, 424EE6A1FC2ED9C33D5F25A4, 845F400AE7591D486FD12323, B4627ACD9DAE391505B47CC8, C6E0CF2ABA1A9BA45B0AED68, E3EBACD5CB6769BBB22735D1, ); name = components; sourceTree = ""; }; 14FC85DB4914D81BFBFBD76E = {isa = PBXGroup; children = ( FE3B1B765FD79B42BAB31946, 6E74B73FC38D61B2E9838178, C0636FF79924D1DE1FC5F8CB, A016A16A72E6597E19D0117C, 8105E14C122672883486A562, 1F9241B5C167C0419181B5E5, BDE06F7154D61ECE453CB356, 5242C34113987084B2A220E2, 1AD6B4D9A3ABFC32D70230D8, BC44D402B4EC2091612352B2, 8665D9D9CE72D78FA1DB8400, B3B09D930294921308A25479, 7585B4D0AF0B0B94FFF5754B, 562D0A3E3BC11FEEC83922A2, 7A08DDF75B40A0BB8EC435D1, 39044A002A444195B2A5350E, 486B26EF01146242F3C661F7, F24DBB309D44148115EE7202, 569FA642C1BD9436D90CAE02, FBA1D6C3F0CE4D37146DDE37, ); name = mouse; sourceTree = ""; }; E5C9AB6C3BBCB8C77E074B9C = {isa = PBXGroup; children = ( 6D45A9F8D00AF9F3FBF43394, C9D87BCB93AFB0E715801097, 252D26C60E79A2C069E172E5, A82DBA408269C87D418906BF, EF2B4989E0D155EE1D678F08, EB151DF44C739572E4BC1E16, A6352E758302225B3893D9BC, A0D33AB1C8AEDB4245670498, B4EF43855D18382AC6F26A01, 92306B69EF888E52654C7A26, B8E4371A1812FB6544696147, 662F9B9615942BB97D1C50C0, BDA1F22AECB324960FD04B8C, ); name = keyboard; sourceTree = ""; }; F3E951F87E31E5EF048AAE41 = {isa = PBXGroup; children = ( 715049CBFF51DD0B6C96C4AD, BDA5300CE231168A0DFD9706, E026A53FF9F9EF195C0EE710, D8D65FD4A2F1B4572540A21D, 81531B2A0B3EFDF3AA98F33A, 9E5D3DF0A5372D0EE20D7C52, 34A028F41F6B89FE6879A252, A59547388F399186B5559860, C2C02D2BE263F8050442D47A, 92E263576EE09D2FFB2488D4, 83EB1BA403786C5C84D79B31, E903BD2C42BC73A2D07B2D56, 61C15F781039DFD34048F987, CDCA935BA045154E92DEE09D, 3E994268B5F30A3299CAFB5D, 1F2C3B261C75AFE0815B4F6C, DF77C09D912D32A137200C50, 96FA1FB83212CA1F7B24340F, 652B01D78B35590B9ECA9592, 6706AC981DAB99A2716BD5A9, 84F8234BF77E0D6A16945175, 762F1D3C34A3070C92736819, 59746D5A7A92DEA51E39AC29, 7A389934F2E8BE092DABF7F6, B6B15C5ACA212627415B92A6, 350B2C6A55A8CC92FE9FACD0, A39AD70F4C86A88879AEE98E, ); name = widgets; sourceTree = ""; }; EE0090F4548A821EE653E4CD = {isa = PBXGroup; children = ( 38B43C95BCC69F232C7A941D, FDB6B9D5EBB59B8C2069A0E6, 4FD427089A9CDE1B5B0C4664, 38C6EF1A2390CCC6DC9F9307, 483B36334E2D7C2A6F6D5C1E, A10C76922D7BDC73DF81540D, C897DAA514552248B4BEB8B1, C762137F95A067D877B2DDB4, A8DE43E4A9F916584738AA7E, 31C21E360B87491DCA771EDE, C22D2E1636E4E08CCC2A30CD, F4479BE62D0A08B4D2C02DB9, E7ABB8B409A117BB3FEEEE0E, ACF70D3C6DFCF9CE58921468, 7B3E7CFDA9BE759870114F56, E39A3A161533974224B415C8, D2B89986858D8B327441661A, F40683744DB687F8B72C133C, D19CD21192E82B0ADDEA153F, ); name = windows; sourceTree = ""; }; 29473F02ECE1905E01BEB82A = {isa = PBXGroup; children = ( 1D78EC4983FF07EF7F5B90F8, 368ACA792AA63A2A353D9241, CD33944EC8F554BA64242262, 734A9DABB685FB4C6FBFF63A, 170C1744EC38808860EC5FF5, 797024ADCC2EBD68FDC1C5A5, ); name = menus; sourceTree = ""; }; 694D48159B04EAE4F7521F78 = {isa = PBXGroup; children = ( FC847EE9B175571189CEB522, 135B6889C5DB189F0BD5E5D5, 85843AACDFA8061F182556AE, A6C0EBBD5187121DDE0C45AE, 2E216EC91202D5C65AE63F7D, 2F0226716C7B97307DC10F14, CD309FAA7F85CA991A489A08, 1F08617D548E6203B649283C, 9B06BBF43F6B0721E7616790, B97AF825D9F4F24DF5751FB1, A6A60C3C36A7788E8226E80D, E42FD3B1912D5F551179D1DB, 29565FA867CDE49665585AC3, E1EFD62896E03997AD0B77AF, DB130B7171062DA7585C54F9, EED0A429D445855F953C216C, CEBF81D1689753BB5F3FDBE6, 5D9714FDF6CC158ED499F67A, EC102CE64BE3F8AF1D3B720C, 0881FC00E66C06A97AE5D44E, C6D05CB8E473C762FB2FCD7F, B5A05D33611D8BAC85D43C8C, C80BA373E25BE1EBCA733FDF, E84138DC7565FE1416315C8C, A4C684C69EC69A6FCA57E4F8, 9E801E5784DD299F44CCC555, 5F652BEA513040A30DF9B82E, E746C564E0175FB54090D87A, 23F3CC2C225B17A90D900CD0, 1F80940BD86054B4AA0369A6, AF9CDD2400A6940A7E8DFE5F, 5349789C9506EED7C8705BC1, C3C6ED0B48A81623AAE57AFC, 66B6F0A0B4CFBAB1C1352742, 483FDD4DC1AAE6377594EBC5, 11A3D99C5AF2C6619ABBF176, ); name = layout; sourceTree = ""; }; 2C4FD197868903FA32A10559 = {isa = PBXGroup; children = ( A9235E9E60C4A238FA54047B, CE6199FD4EDDB4537A206D63, CAE879F535FD4BCC9DD18A96, F6892B7A65D34CEA069065ED, BCCBB4E9E23CF1A2376675E1, ACF8C9B787F071A59D0D7EFF, DF1EA5A6EA5F6AE282F2A49B, 32FB34EFF836CC859B88D59A, D6E871933044DB7C729653D1, ED067DE4926598C42B4EBC8B, 10E32F03CD02144B4E150066, 88D60BD76FD4D2DDDEC812BF, 1840BA14C3C29EF2AF08434B, 859A3E99E9C43B195F80F648, 16EABF4921D82BAD71BB7AB5, AC410B09B6B19E3DBFA81342, 281EDA11196A278E6AB4B7FE, 2481B3B84FE81519A2FCE441, ); name = buttons; sourceTree = ""; }; 35E72F0F5305CCDA027D8FD0 = {isa = PBXGroup; children = ( 854311676B3921D8DD3D0157, 7E3D799471D4CEFDA9559628, 05B043441E6AD4C671E76907, E55E5BA2A453E87D427CB4FA, 05238D17EC276B357390E5D7, 394EB2D6CECEDF1C9BA4555B, CB833C35F124FADDB489217A, A843CE531AEC32940221ABA1, B28A031B821E7D99B96609CA, 91CC923684BB3404154A74E6, 1C5D3E2D967DCB9B6171F8D1, 922591A6E5E820CB10974DA5, 8E21F6EF4E830FF170C5B569, 23B55CF0886E4D70AD727E19, ); name = positioning; sourceTree = ""; }; 5CBE527B5452FBD68EF69F25 = {isa = PBXGroup; children = ( 0908AC305FF07665C1ED181B, AB0F764CBA1600621049FAE6, 5FE360FAE9A403ABFF04FBFF, F9AAC643E9F18D7EFB610EF5, 275924B6B61ADC7DC45DF465, 31B770F0F6BD21F867E24035, 8C557330D246823A53B449A5, 27F112C058EF5A258E9AC6BE, 1F7B60B2FB93D6B84720AA08, 131E8EC2DA7B6E7AA27A6D9B, 641800593DAE412AA2630600, 97EE4852EA4CC6213A4DB03D, 7C997A5BA57D7568AB3E0F79, 0B544DB0EBE315150B7DB69E, C35854B72C47F401808A93D6, ); name = drawables; sourceTree = ""; }; 0E9D9BA8DBBC6609F085ED08 = {isa = PBXGroup; children = ( 6135C09E481C8C987F2DBB0E, E8669227B7C5605F03DB0218, 44888289A2CF2F4FAE8A7216, D6F4411BCCEA6358FADA3BC3, FA6C06C38C3B71CDA2D8919A, 4FB8831B363370118A37844C, BD22F15779DC50BF4A27B33F, 0772E67E5B580EAE2C4A248A, 34A2FB33D2EEC064397B7531, 8A00D34ABCC62F277B89FED1, FD0A0A1DBC1E2CEF451EB097, 62500028F4BBCC38D0CED34D, F8C9CB0B192609E85304CFD1, DE51539BA5A479C76A8BB82E, ); name = properties; sourceTree = ""; }; 9454110AC9CFB425E28985EA = {isa = PBXGroup; children = ( F6B60D635CDCF67189D36226, DF0BF35672EB45AE2A8E0966, 1693F25ED160AF15F12B1EDF, 53F6ABA12780FECACEB5B595, A13E91A475BACB16352E4536, C3DAB6E6D5D1C1CF8AD15E8A, BBBDDFA136909E051E416C80, 0A8CD57178A1419CC58AE215, ); name = lookandfeel; sourceTree = ""; }; 2E79909678FCA63C13A6342E = {isa = PBXGroup; children = ( 93E62B431FD26A26B8955220, 75160F42498EEF24CDFF6C1F, 7E8ECB3FC70DFC32CC40E487, 4473E95B23F65C8E5F7FE05B, CD0684C129832B1A2C6AE8E1, B0037C53204AAC9C8255C2BD, 829C1B8BE77DFC515A7AA26D, 92691651B73E582D8419516E, A77C703EF249E18E4314B50B, B4066FBC70F48956A5613954, 46EE2A1578E998C3FDAF9E90, 9B941207317C228D2E7FEA4A, C8DB56C59EEE6F10765F1880, 5A69C1F35C3FB44D42654DC2, FC90CD1022F5AEDEAB769D66, 7911CEDEA3547CAB3813DA45, 45F17D16348AC92ABF12AE4F, 121DCBEAD9B2A41250FE1A8C, 1D60F9B4132C6DEF087C6102, AE071AE60A488A88983388A8, D783DFE1BF328D75FA4EB7EA, ADF727BFA0B03E4BB95B2E21, ); name = filebrowser; sourceTree = ""; }; D93EB826B373D2EF3A582BF6 = {isa = PBXGroup; children = ( 768ED0B52F40AF137ABB4B23, 0C1AE743A7F57659EDCAFEC7, A0C842CBFBEF097902336B9F, 6996A01131F6EC782335849A, 43C676DCCF3EF43C3E461DBF, 6827D79ECEE15C9A98A6B135, 87C79B3F7798AA8550362662, 4F19EA0D6C57032FB00BA151, 2FDF6E187E8341031460DC5E, ); name = commands; sourceTree = ""; }; 15F986546C5C25997A7B0342 = {isa = PBXGroup; children = ( 76DFDF2933729C113013EA3E, 3D0A72C575B21608CC08323F, 95EBA44CEF397A39E5A4FB18, D408CA86079E3FE98FEAFF99, ); name = misc; sourceTree = ""; }; FAFE45DB3117768DDB36C10B = {isa = PBXGroup; children = ( 7C4B94E6E74999267FF81409, 8B64303D4A4877BE3D9ECA23, ); name = application; sourceTree = ""; }; FF33525A8F472392FB59EDCE = {isa = PBXGroup; children = ( 0D8E6523CB4D0315377B874D, 4C66A0301EF302CE34C09C92, 87F84688081C0FAAF3BB8BE1, 7CB98E68960B2BB58EE8A903, F99DE3F007FFF9F697C63849, 00643E30A5A0B008BE0F35CA, FDC95CF6C957C43FF646C7DA, 4432F3C2A9B250C270BC8C98, 9287FEB418423DF0B158B3BB, FBA615F612FB406896AEFE5E, CD58F563ABCAA111263D8255, 87F331B36CC2CA9730B478D3, A2B7929C90425363F8F88BD0, BCC009DED67EBAE7E35C74DE, E853BEF233C01DBAFE0DDD63, A4D41578D2FC92EBF6D6157F, ); name = native; sourceTree = ""; }; DC7A247CC600A1D363C7E386 = {isa = PBXGroup; children = ( DCE64BC7DA75227D26FEFF4D, 14FC85DB4914D81BFBFBD76E, E5C9AB6C3BBCB8C77E074B9C, F3E951F87E31E5EF048AAE41, EE0090F4548A821EE653E4CD, 29473F02ECE1905E01BEB82A, 694D48159B04EAE4F7521F78, 2C4FD197868903FA32A10559, 35E72F0F5305CCDA027D8FD0, 5CBE527B5452FBD68EF69F25, 0E9D9BA8DBBC6609F085ED08, 9454110AC9CFB425E28985EA, 2E79909678FCA63C13A6342E, D93EB826B373D2EF3A582BF6, 15F986546C5C25997A7B0342, FAFE45DB3117768DDB36C10B, FF33525A8F472392FB59EDCE, 53111224BD873CB59FD4E6AD, BF1DED2E1BA1C076425B8CA0, ); name = "juce_gui_basics"; sourceTree = ""; }; 908BC53083FC3B9D6BB417EE = {isa = PBXGroup; children = ( 55B57622C00BFCBD2B2AC3AD, A1697BA9955319A199576BC6, 94F9D3988E9B53DA9BC5F37B, 4B6C721DBA89F46FB5134D7E, B0BDEB05BCB1301C1931075B, 1C3DEE2DA57222B58398ADB2, D7402ACDB1AAA5A345B61529, FE3743EE4D35B41B46F938D2, 325027EE270BBF650E805564, 9ED8CA84B312E34694E2A6AE, E2A4A21072EC5C3AF96939AF, 27642EB0181BACE6A55FA013, ); name = "code_editor"; sourceTree = ""; }; 9D7A116479131A33668EB9E0 = {isa = PBXGroup; children = ( 02570D7EEA9EECE2355D09A2, 975DC4180E69ABD56CFBD45B, ); name = documents; sourceTree = ""; }; 29DA925FB1C79A3D2F60DD2C = {isa = PBXGroup; children = ( 9123CC1339B2671E33A3BF0C, 07304207015792AD04B49951, 47F996A2BA101821A84B1294, ); name = embedding; sourceTree = ""; }; EEC35FA255E758C24F5C3887 = {isa = PBXGroup; children = ( 405855C9B41EB9CAC7DDDD17, 77DA69E8D9174B38C4F330EF, 76053E841EC59CD6923EF248, 0165787521D72C0F5D608B29, 1DD6065C0B6DFD88EA23F7D4, 391E4320D4B26E7C1D1E77BD, 34CDFC07974C484C788CCEF3, 0E4DE3F2A6C3A5DF58A717DA, 2A5FD9B8CEF55D9CB0BD863F, FFA933744B1A866F8733BA0C, B6AC3B42995EFACA5218BBCC, 2BC851F3F90C739945A358E9, 98249E2CE3DB75CC7E110B95, 12DCC9E84F6D9B4191F0059E, E41EFBEDF1FCC35FA46E0758, 5C2CB310BBE49D88B96FDEF0, F7ACBF56597C2D60F4795F64, 063919C782AAE385A7A829A1, 5A2CA150FB56C7A955847790, 8D0FED07A31C8C9F84ECDAD8, ); name = misc; sourceTree = ""; }; CEFBCB523E84D6B602487BFB = {isa = PBXGroup; children = ( 12ACB548CCAA9C20A91F671A, C63E20DAEDFA5299CE44D5B4, F966FD65D75BE3D11D0C5FF6, ADE8A1AFA8463F99F681D830, 9D50273101DC464219A633AC, F242D93EC6CECD96C182FFEC, ECDBA884241B6AAA334E0D23, F10DC52CBB1B254FC223A215, 4B3B9FF56E20E06A7CCA6EBD, E3432D2DC4E51EA2B58C49F8, 9FED900E158DF7D8CD3C3157, C6E0CA97537C58A56F34EA44, ); name = native; sourceTree = ""; }; F15DB15FFB9331BA2613D133 = {isa = PBXGroup; children = ( 908BC53083FC3B9D6BB417EE, 9D7A116479131A33668EB9E0, 29DA925FB1C79A3D2F60DD2C, EEC35FA255E758C24F5C3887, CEFBCB523E84D6B602487BFB, C6072BB69D5A3F12142BC115, B3345A12095B5451B31BC2B9, ); name = "juce_gui_extra"; sourceTree = ""; }; 0C071A8378C82B49A8B5C3F5 = {isa = PBXGroup; children = ( 95166B9DCE9F8F0C5704AAFB, 1768D1D4C1D416203C163E00, 9915F52C7A0F1EB8A2C19B55, 3F73AB01E7AFDF8672EF6E53, B0C68D7A03725EB5C4D6B2F5, 7257482194FCB2E6510D816C, 231871077A08BA845DA197F3, 511C8FD7DF51C5D0ECA87751, A808793AE99B03FF99E3FADA, 398F6C198EC4DB253F24A2ED, 445B50E2E1C2C48FC9C938CE, 4A150B258184228CDB6E3065, 7A5F3AA95E30A442F123B2C0, 1D6DA0212DB2562D54FE2E33, E8859539419AFAB74AD0E592, 3C5EB4E00CDBA4EAE7C96902, EEAA56CA1D734C607F3CDDA8, ); name = opengl; sourceTree = ""; }; D25566AFCC8A2DC64ECC7C4A = {isa = PBXGroup; children = ( 1F9EF1E392691DF9CC82A715, D424D907C93822CBBABB39D4, 208C1446FD1A325C1AB92D7B, 1E566116CD030074BE41AE7C, ); name = geometry; sourceTree = ""; }; C77A8EF5C52BD85E7C709F21 = {isa = PBXGroup; children = ( 9B3CF30A3919BE54493D59FB, 07A30AAAFC7A005BE5BD13CF, ); name = utils; sourceTree = ""; }; A925452EC20B59A6CC305A1A = {isa = PBXGroup; children = ( 594503FB43ADDEB6168FEC32, 6F70AE9408F0C6C37FBC2824, 6DBAA8FC487AE3C94BF0EA9D, 56612A865FA5B0E49552BA7A, D1E4737C60EBD969197A6FA7, 61205D36742D1BFA2C342241, D690112A5DB4AC36AE518836, ); name = native; sourceTree = ""; }; 9A05C793DA07104EA1F82DD2 = {isa = PBXGroup; children = ( 0C071A8378C82B49A8B5C3F5, D25566AFCC8A2DC64ECC7C4A, C77A8EF5C52BD85E7C709F21, A925452EC20B59A6CC305A1A, F9F9A26F9FF90E3D18275949, 9DA161A15B4C68C62A63A0D1, ); name = "juce_opengl"; sourceTree = ""; }; DFC0B79DDB8F8248544C34F8 = {isa = PBXGroup; children = ( 90054A29105E825D9737130B, 80A4083D5F12CF76E89D3772, ); name = playback; sourceTree = ""; }; 61DD27E50054ABB8A4C4B8EA = {isa = PBXGroup; children = ( 1E1A13BFC2C3B8C2F85EEED5, 6E515F0982E797C04C1B4612, ); name = capture; sourceTree = ""; }; CCE2EB560C10174C66B79CAC = {isa = PBXGroup; children = ( C0624E7928A6685285622AA2, 24F636F42CCC4684B24491B2, 16DA36707AE772CAA1B6810E, DB3CD0B067F5FABA895758A1, E2867ABC0D315CD6C4239554, 77831CE7DF0F7C089A0E8EC9, ); name = native; sourceTree = ""; }; 73ECFA6363C272906389BC2F = {isa = PBXGroup; children = ( DFC0B79DDB8F8248544C34F8, 61DD27E50054ABB8A4C4B8EA, CCE2EB560C10174C66B79CAC, 676612F907956EE00D5C9856, 4DB650E1059524F73A732BC1, ); name = "juce_video"; sourceTree = ""; }; 38592324982B511EF7CF4FE1 = {isa = PBXGroup; children = ( 6D6BD190E0292674F39E8980, 6FA8D51AF51DE1C29574C6FE, B0157000DB5FEB5AF75E4F9E, AB48A58D44AEFCA3F21E8D14, B41158B4484EA0875E08A9DA, A8FC72E4F19FEC8B91E632C8, 0FF7D030BAE4E164EAF53EED, E97E404EBE9BAAE69CF6EBF1, 2FE035201A22BC055E791509, 03B60629C9CC9D1D5FC4272B, DC7A247CC600A1D363C7E386, F15DB15FFB9331BA2613D133, 9A05C793DA07104EA1F82DD2, 73ECFA6363C272906389BC2F, ); name = "Juce Modules"; sourceTree = ""; }; 8FD50932910B01056900DB55 = {isa = PBXGroup; children = ( 0364DE831A6E6B4B0A83D3D1, 38E1ABBD84C884FA0415656D, 832DA01918B8312FEC0909CB, 9A95B88EAC68EEDBB4A6EA80, 08DC2C6ABC78DEA6ADDA07C7, E121AC6E7E98A5CAFDA979A5, 25B67ED795BC11D69805D4A8, C6CE8E894E9EF9F77754F88C, 6EC90B8CF8A53493F8D3AA92, EA74FE68F55905DCC00E5F9B, 81D922DED89925E8726146B5, AB53E74A974E246BF80A79E6, 24F5F702BEEE4A103E7100C3, 06993C00B6249E3DA3F7E3DD, 84BAC21CF2D5009634F00330, FE31FF67DA4B994486AF30B5, ); name = "Juce Library Code"; sourceTree = ""; }; 43FDB2C2DEB73A9729490F71 = {isa = PBXGroup; children = ( 365B29176E55C070CD0A9F5A, 563C94CB5AD0F745076DF69B, ); name = Resources; sourceTree = ""; }; 27CABD79CAE4AAD868B6F6AE = {isa = PBXGroup; children = ( D8FF2E14B072C8B9544C95BF, C64527E74752ECF0B056A9F5, 90E350DA6DF0535788EDA0C7, AE90B98838251D28244F281D, 87D653D986B3CB91809A6AA1, FC7EF3CDEE50B555E15E362D, DCC6CD0D96DF5D56628DC513, CD39F20F8A8273B62632EBCC, D69B16D06E21D1FBEA756A3D, 2F9C29AEE0C8D4BE771F59A8, 32C1BC49BCC54FEED453CFD0, AB17BDF654E684FC179BB7DD, A373D65BDAB25C19EC6A05AE, ); name = Frameworks; sourceTree = ""; }; D2EAA17C8503A297B197A159 = {isa = PBXGroup; children = ( F2F5F067109EB7C9537DD9AD, ); name = Products; sourceTree = ""; }; 9F958921F12E7C784E909D34 = {isa = PBXGroup; children = ( C69BCE512948465235B05858, 38592324982B511EF7CF4FE1, 8FD50932910B01056900DB55, 43FDB2C2DEB73A9729490F71, 27CABD79CAE4AAD868B6F6AE, D2EAA17C8503A297B197A159, ); name = Source; sourceTree = ""; }; 13DD017E82BE73DE17E3061F = {isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "_DEBUG=1", "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1", "JUCE_APP_VERSION=1.0.0", "JUCE_APP_VERSION_HEX=0x10000", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.10; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; SDKROOT_ppc = macosx10.5; }; name = Debug; }; 8A3A5202D74C4ED05D01A48C = {isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; DEAD_CODE_STRIPPING = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 3; GCC_PREPROCESSOR_DEFINITIONS = ( "_NDEBUG=1", "NDEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1", "JUCE_APP_VERSION=1.0.0", "JUCE_APP_VERSION_HEX=0x10000", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.10; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; SDKROOT_ppc = macosx10.5; }; name = Release; }; FEF5C4C4E770A72077867343 = {isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "ExpressiveMidiTest"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Debug; }; 40FE0A8C9EA53BF7A25086B3 = {isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "ExpressiveMidiTest"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Release; }; CC7502C8943D2FC599DFC557 = {isa = XCConfigurationList; buildConfigurations = ( FEF5C4C4E770A72077867343, 40FE0A8C9EA53BF7A25086B3, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; EC2B3731DA5499850A21A4DA = {isa = XCConfigurationList; buildConfigurations = ( 13DD017E82BE73DE17E3061F, 8A3A5202D74C4ED05D01A48C, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 26CE613F6C9512DE5B5EA90A = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( B911480598E3B26D6C5CD121, ); runOnlyForDeploymentPostprocessing = 0; }; C6DDDDC410B54D1BB911DCE8 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 9624DEADA1180DF1694DC960, 11799C013AE3020D49E30FAA, 1D658D4157BE1B43D8479B90, BACF830AD2D2A4A355CF6416, 40CE4D54E8E5C3D69BE6B28A, 3BE3610CFA0A5492C15C2B28, 3554BDF7A9BA55927CE0EEC2, FC8EF6180A541E21AFA8B61D, 0ACA2AC433B06D3C3F0E8437, BCCD66263B8293322F1DF6AC, C08120E7D42077C188537D18, A97103497F3243952961BB2C, 818B6DDE1AD290C3D843D934, 539BE2D6F29A2DEAA304A22F, 80D9D554D874198024A99E12, ); runOnlyForDeploymentPostprocessing = 0; }; 2757C15324B1437EA7429DA4 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( CE2807371257B52B1D2B06E0, 189A987224B9646B9AA0D399, 354BBD7645C4F76503133A20, C568BD20102D15116F05E6D4, A3BEED6474CF4D29FB8CA568, 62B45B3673D1655B7418C1E6, 02EF462BC2B7477532926CB4, 5C9DA179BB22AE2F8A500E54, 06DE20E82AAD9548CAFD1E56, 98683F976996F65C9839FF5B, 9A24423E8EB4E7B5AA0FD499, 88E739BEDD7197917839D7C6, 8489C516E3B50AC1AF94A2B7, ); runOnlyForDeploymentPostprocessing = 0; }; 3F4BE438A23C638EFAB20578 = {isa = PBXNativeTarget; buildConfigurationList = EC2B3731DA5499850A21A4DA; buildPhases = ( 26CE613F6C9512DE5B5EA90A, C6DDDDC410B54D1BB911DCE8, 2757C15324B1437EA7429DA4, ); buildRules = ( ); dependencies = ( ); name = ExpressiveMidiTest; productName = ExpressiveMidiTest; productReference = F2F5F067109EB7C9537DD9AD; productInstallPath = "$(HOME)/Applications"; productType = "com.apple.product-type.application"; }; 9606743A47FFF871B775B1AB = {isa = PBXProject; buildConfigurationList = CC7502C8943D2FC599DFC557; attributes = { LastUpgradeCheck = 0440; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 9F958921F12E7C784E909D34; projectDirPath = ""; projectRoot = ""; targets = ( 3F4BE438A23C638EFAB20578 ); }; }; rootObject = 9606743A47FFF871B775B1AB; } JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/MacOSX/Info.plist000066400000000000000000000015241263452017400241520ustar00rootroot00000000000000 CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile CFBundleIdentifier com.yourcompany.ExpressiveMidiTest CFBundleName ExpressiveMidiTest CFBundlePackageType APPL CFBundleSignature ???? CFBundleShortVersionString 1.0.0 CFBundleVersion 1.0.0 NSHumanReadableCopyright NSHighResolutionCapable JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/MacOSX/RecentFilesMenuTemplate.nib000066400000000000000000000054321263452017400274220ustar00rootroot00000000000000bplist0056X$versionX$objectsY$archiverT$topJ#$*.259JMNVWapqrwxy|  !"#$%&'()*+,/2U$null _NSVisibleWindows]NSObjectsKeysVNSRoot\NSOidsValuesV$classZNSOidsKeys]NSConnections_NSObjectsValues_NSAccessibilityConnectors_NSAccessibilityOidsKeys_NSAccessibilityOidsValues 7I65GHH !"[NSClassName]NSApplication%&'(Z$classnameX$classes^NSCustomObject')XNSObject +,-ZNS.objects%&/0\NSMutableSet/1)UNSSet +34%&67^NSMutableArray68)WNSArray +:;4<=>?@ABCDEFGHI -'!#+)/2 !L ]NSApplicationO PQRSTU[NSMenuItemsVNSNameWNSTitle&1 YAMainMenu +3Y?A@GF>H')+-/bcd efgQh=jklmno_NSKeyEquivModMaskVNSMenuYNSOnImageZNSKeyEquiv]NSMnemonicLoc\NSMixedImage [delmeAppKitP s tuv^NSResourceNameWNSImage_NSMenuCheckmark%&z{_NSCustomResourcez) s t~v_NSMenuMixedState%&ZNSMenuItem)bcd efgQhB=jklmnXNSActionYNSSubmenu TFile^submenuAction:O QS& +3Cbcd efgQhDBjklmn ![Open Recent^submenuAction:O PQS"&% +3E#bcd efgQhDjklmn!$ZClear Menu__NSRecentDocumentsMenu%&VNSMenu)bcd efgQh=jklmn (TEditcd efgQ=jklmnǀ *VFormatbcd efgQh=jklmnπ ,TViewbcd efgQh=jklmn׀ .VWindowcd efgQ=jklmn߀ 0THelp[_NSMainMenu !3]NSFontManager%&88) +:4====ABCD=== !  +:4<=>?@ABCDEFGHI -'!#+)/2 +: 489:;<=>?@ABCDEF !"#$ +3. +:14%&34^NSIBObjectData3)_NSKeyedArchiver78]IB.objectdata"+5:? *1>EP^p+09BMOPYfms|~")13579CLN]_acegik$6?RWdfhj} BDFHJLNPR^m~!#%').KMOQSUW^  "'02OQSUWY[]_acegiktv  #&),578ACDM\asx9JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/VisualStudio2015/000077500000000000000000000000001263452017400240515ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/VisualStudio2015/ExpressiveMidiTest.sln000066400000000000000000000016011263452017400303650ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2015 Project("{DD2CC1DB-1ED9-B756-AC06-88E9916DBFEF}") = "ExpressiveMidiTest", "ExpressiveMidiTest.vcxproj", "{160A79F2-5429-4B16-BB1A-9F5761EFACD4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {160A79F2-5429-4B16-BB1A-9F5761EFACD4}.Debug|Win32.ActiveCfg = Debug|Win32 {160A79F2-5429-4B16-BB1A-9F5761EFACD4}.Debug|Win32.Build.0 = Debug|Win32 {160A79F2-5429-4B16-BB1A-9F5761EFACD4}.Release|Win32.ActiveCfg = Release|Win32 {160A79F2-5429-4B16-BB1A-9F5761EFACD4}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/VisualStudio2015/ExpressiveMidiTest.vcxproj000066400000000000000000003452521263452017400313010ustar00rootroot00000000000000 Debug Win32 Release Win32 {160A79F2-5429-4B16-BB1A-9F5761EFACD4} v140 Application false v140 Application false true v140 v140 <_ProjectFileVersion>10.0.30319.1 ExpressiveMidiTest true ExpressiveMidiTest true v140 _DEBUG;%(PreprocessorDefinitions) true true Win32 Disabled EditAndContinue ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true _DEBUG;%(PreprocessorDefinitions) $(OutDir)\ExpressiveMidiTest.exe true libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries) true $(IntDir)\ExpressiveMidiTest.pdb Windows MachineX86 false true true $(IntDir)\ExpressiveMidiTest.bsc NDEBUG;%(PreprocessorDefinitions) true true Win32 Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreaded true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true NDEBUG;%(PreprocessorDefinitions) $(OutDir)\ExpressiveMidiTest.exe true %(IgnoreSpecificDefaultLibraries) false $(IntDir)\ExpressiveMidiTest.pdb Windows MachineX86 true true true true $(IntDir)\ExpressiveMidiTest.bsc true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/VisualStudio2015/ExpressiveMidiTest.vcxproj.filters000066400000000000000000005225561263452017400327540ustar00rootroot00000000000000 {7D43BCF4-9D0B-D7C7-73A4-6AE2F10B9DC5} {0948021C-0DAF-A3AF-D265-E3DF8B94B0C6} {422C46B7-0467-2DB0-BF3C-16DFCAFD69AC} {3247ED97-A75A-F50B-8CCC-46155E895806} {A33A1E1D-AC2C-6382-8681-48B0FC374C60} {11A75801-B027-40BD-4993-023023ACCBF7} {3FD908F5-98C8-9A61-FC03-0BAF8913CBB0} {8C868E51-156D-A916-047C-0D9EA1393675} {EF2CAB40-0432-429B-C517-86ADF136BB8A} {8F7EC212-3168-AD81-5064-C45BA838C408} {CACD7B50-4DB3-76AF-A6E8-90DF94F8F594} {9D270B31-2425-8FDB-84A4-6A2288FF5B2F} {0F766DD4-A277-CB86-5647-42498C8B41E1} {D64942B4-6984-3623-3347-45D472AE1C61} {45C2CE26-EC4B-BA52-58F3-297C408E1483} {01603E05-423B-5FC3-1BEE-E15ED33B5688} {65CB28F8-0422-A8F3-9A17-959E12A1F8E2} {2FE25F4C-E9DF-04A5-CAED-6E4B7CF28C59} {0CD9E281-DDD0-91EC-6F77-EA9D9D5E0E1A} {40C5CA7C-AEBB-05B1-11CE-AE41D87B5CCB} {0B0E7392-324B-088C-FBEB-5FE999D61782} {77E2C34E-A4D6-EDB5-A107-7CB3CEF0E8EF} {20254EFE-6CBD-31A7-2119-92B1E0E0E311} {70796D73-6D30-8A1B-4732-7C021E47C05A} {EB8DD942-E2CB-869F-D381-E02A65BA790B} {8F91DFC0-7A71-1BA8-D8D9-6B4CF49151A4} {B63F69FD-8A40-8E1E-E7ED-419B8DC1C12B} {8167E753-09C7-5D1C-EF2B-32D297557443} {AEDCB7F7-7A36-5392-8E9A-715F5BDE35CB} {B48C883A-8483-AF6D-808C-1D9A749048D8} {95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88} {244D11B0-2D68-3C08-A0B7-0D12469BC3AA} {476C69CE-0B67-6B85-E888-45D91E37A29E} {7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6} {0608ADE9-66EF-1A19-6D57-12D07F76EB53} {05F3DB8A-499C-6ACA-282F-5BF8455A0DE1} {C9F6D785-BF78-5AA1-B479-111C65397864} {C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D} {DA0DC4AC-B511-A2D4-199A-C93454D6F114} {91929C6F-7902-B87D-5260-2F6CBF8ACD93} {C294408A-2005-2E9E-7AC0-8D3ABE8AC175} {4634FFAE-9586-A970-364C-4FDDA635F99F} {F2B2F310-F30F-7166-42A9-9BF9C230DA78} {1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B} {F03654BC-34D8-F975-BEA3-750CC2783D23} {4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F} {FA891A58-9FDA-9651-43C4-714A19B5D08D} {C79A4D23-7866-8F3E-AC39-BD68C52A9259} {3C7C8F35-6C08-9866-6663-6FEFE2EFC9FC} {7703D2CE-C32A-936A-0EEF-949FE6E52EB5} {8D283B6C-13BA-9EF6-1B18-B1C393786943} {928D8FCC-5E00-174B-6538-93E8D75AB396} {1988E68A-A964-64CA-0E0C-26FF9BC5176C} {3DF036EA-3B80-553B-2494-3AAC835CAE75} {358AEA11-3F96-36AE-7B32-71373B5C5396} {F2A38F45-6E55-E147-2E52-64A89FDD9D59} {6172822C-01A5-E824-12DA-FA43FA934D35} {41DC3BE3-D629-8A17-C32B-F5B4008B5FAD} {B098BC87-3298-7E6B-12DC-D26C09CDCAED} {6322B88F-984A-C3CD-6263-38D7AA49B6EC} {73C1E759-AD90-59A3-942E-2D10FAA29107} {EE1AE8C3-0908-8F53-A4E5-D930C7C97C26} {4926B3FF-E797-F586-857A-69D9703FA2D1} {EBC65085-3AD5-280C-1A29-2B1683643AA1} {413F481F-075C-2958-115C-D8268682FCB7} {69E1179D-76EC-26DC-C3E6-6602ED26D783} {C1A1A236-AB01-173E-96C3-0706BFF93B1E} {1182303F-ECA3-166D-AC0C-92C5E762CB93} {26ECA2AF-7368-C6CC-58EF-017ECD1862D0} {E37D25CD-4350-4614-055B-7ABC55E67895} {FFC6E1CC-C772-75E6-5087-FB5D4E016799} {8E43579F-C185-266D-DD67-F8B95BD80F2F} {2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D} {796B7886-44A7-34CC-9B95-BF4FB2C7B6F4} {A92719C7-70BE-57C4-CE9E-A9BC9DFEB757} {75F1F352-251A-75E0-D941-8431588F5C1E} {DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC} {7BCEAB87-62FD-0327-EB5D-679E54EDB9B1} {E980FADB-6E3F-B93C-DE02-CE4271C9BA93} {C3B2EB8A-1A2F-306F-AA78-3E9D1593788B} {7A53E6F1-1343-33B8-4CA8-1D7B714A0E76} {5A0AA36E-3957-E413-14C6-31CBE15271DF} {D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB} {F408DCA2-D5E2-0A3A-A064-A1D045889BC1} {5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4} {46535B56-3737-2BE8-E3A0-571BCBEB2DA4} {C2B9505B-27B4-F650-12BD-F477D4BBCBAA} {61712B09-5783-ADFA-2001-5A0C3D7764EB} {8A80BA78-D3A8-C0F8-7FFD-61AA028CE852} {8EC9572F-3CCA-E930-74B6-CB6139DE0E17} {C60A6FCA-9462-922E-AD8D-69F10C9049AF} {D56498EE-E354-1F00-5EEE-8CF7944BEAFB} {61B2920C-494D-D8CB-C0C7-5DBF3D76D164} {66C9B809-8739-A217-C78D-A15D6089B8E3} {C413328B-5D81-89EE-F4F3-75752E700DE4} {639E16C5-DA8B-ADBA-6E24-7B596378EAB2} {2D8D0E19-E676-83EB-38D9-F73500DD6B79} {B3141847-8F13-F67D-45B2-E3ECF6E09088} {9E586194-C056-101C-5311-F2AF5191AC80} {151B49D8-6102-F802-1C07-D59931BC0574} {72A923E2-C729-DB92-D7BF-A9D4AFAE5896} {0E43EA8A-95EE-4253-E1B7-160F38ACBB00} {7F11E7D2-54C0-2A36-5F15-BEC0A5374A08} {EE985DEA-CD83-8132-7219-542BB1DAD560} {8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61} ExpressiveMidiTest\Source Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_audio_utils\native Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\utils Juce Modules\juce_video\capture Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Modules\juce_video\native Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code ExpressiveMidiTest\Source ExpressiveMidiTest\Source ExpressiveMidiTest\Source ExpressiveMidiTest\Source Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\buffers Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\effects Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\midi Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\mpe Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\sources Juce Modules\juce_audio_basics\synthesisers Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\audio_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\midi_io Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\sources Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\audio_cd Juce Modules\juce_audio_devices\native Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\format Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\codecs Juce Modules\juce_audio_formats\sampler Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\processors Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\format_types Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\scanning Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors\utilities Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\gui Juce Modules\juce_audio_utils\players Juce Modules\juce_audio_utils Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\encryption Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography\hashing Juce Modules\juce_cryptography Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\opengl Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\geometry Juce Modules\juce_opengl\utils Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl\native Juce Modules\juce_opengl Juce Modules\juce_video\playback Juce Modules\juce_video\playback Juce Modules\juce_video\capture Juce Modules\juce_video Juce Library Code Juce Library Code Juce Modules\juce_audio_basics Juce Modules\juce_audio_devices Juce Modules\juce_audio_formats Juce Modules\juce_audio_processors Juce Modules\juce_audio_utils Juce Modules\juce_core Juce Modules\juce_cryptography Juce Modules\juce_data_structures Juce Modules\juce_events Juce Modules\juce_graphics Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra Juce Modules\juce_opengl Juce Modules\juce_video Juce Library Code JUCE-4.1.0/examples/ExpressiveMidiTest/Builds/VisualStudio2015/resources.rc000066400000000000000000000011131263452017400264050ustar00rootroot00000000000000#ifdef JUCE_USER_DEFINED_RC_FILE #include JUCE_USER_DEFINED_RC_FILE #else #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "FileDescription", "ExpressiveMidiTest\0" VALUE "FileVersion", "1.0.0\0" VALUE "ProductName", "ExpressiveMidiTest\0" VALUE "ProductVersion", "1.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif JUCE-4.1.0/examples/ExpressiveMidiTest/ExpressiveMidiTest.jucer000066400000000000000000000141771263452017400245300ustar00rootroot00000000000000 JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/000077500000000000000000000000001263452017400226725ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/AppConfig.h000066400000000000000000000124131263452017400247120ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! There's a section below where you can add your own custom code safely, and the Introjucer will preserve the contents of that block, but the best way to change any of these definitions is by using the Introjucer's project settings. Any commented-out settings will assume their default values. */ #ifndef __JUCE_APPCONFIG_IILE7R__ #define __JUCE_APPCONFIG_IILE7R__ //============================================================================== // [BEGIN_USER_CODE_SECTION] // (You can add your own code in this section, and the Introjucer will not overwrite it) // [END_USER_CODE_SECTION] //============================================================================== #define JUCE_MODULE_AVAILABLE_juce_audio_basics 1 #define JUCE_MODULE_AVAILABLE_juce_audio_devices 1 #define JUCE_MODULE_AVAILABLE_juce_audio_formats 1 #define JUCE_MODULE_AVAILABLE_juce_audio_processors 1 #define JUCE_MODULE_AVAILABLE_juce_audio_utils 1 #define JUCE_MODULE_AVAILABLE_juce_core 1 #define JUCE_MODULE_AVAILABLE_juce_cryptography 1 #define JUCE_MODULE_AVAILABLE_juce_data_structures 1 #define JUCE_MODULE_AVAILABLE_juce_events 1 #define JUCE_MODULE_AVAILABLE_juce_graphics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_basics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_extra 1 #define JUCE_MODULE_AVAILABLE_juce_opengl 1 #define JUCE_MODULE_AVAILABLE_juce_video 1 //============================================================================== #ifndef JUCE_STANDALONE_APPLICATION #define JUCE_STANDALONE_APPLICATION 1 #endif //============================================================================== // juce_audio_devices flags: #ifndef JUCE_ASIO //#define JUCE_ASIO #endif #ifndef JUCE_WASAPI //#define JUCE_WASAPI #endif #ifndef JUCE_WASAPI_EXCLUSIVE //#define JUCE_WASAPI_EXCLUSIVE #endif #ifndef JUCE_DIRECTSOUND //#define JUCE_DIRECTSOUND #endif #ifndef JUCE_ALSA //#define JUCE_ALSA #endif #ifndef JUCE_JACK //#define JUCE_JACK #endif #ifndef JUCE_USE_ANDROID_OPENSLES //#define JUCE_USE_ANDROID_OPENSLES #endif #ifndef JUCE_USE_CDREADER //#define JUCE_USE_CDREADER #endif #ifndef JUCE_USE_CDBURNER //#define JUCE_USE_CDBURNER #endif //============================================================================== // juce_audio_formats flags: #ifndef JUCE_USE_FLAC //#define JUCE_USE_FLAC #endif #ifndef JUCE_USE_OGGVORBIS //#define JUCE_USE_OGGVORBIS #endif #ifndef JUCE_USE_MP3AUDIOFORMAT //#define JUCE_USE_MP3AUDIOFORMAT #endif #ifndef JUCE_USE_LAME_AUDIO_FORMAT //#define JUCE_USE_LAME_AUDIO_FORMAT #endif #ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT //#define JUCE_USE_WINDOWS_MEDIA_FORMAT #endif //============================================================================== // juce_audio_processors flags: #ifndef JUCE_PLUGINHOST_VST //#define JUCE_PLUGINHOST_VST #endif #ifndef JUCE_PLUGINHOST_VST3 //#define JUCE_PLUGINHOST_VST3 #endif #ifndef JUCE_PLUGINHOST_AU //#define JUCE_PLUGINHOST_AU #endif //============================================================================== // juce_core flags: #ifndef JUCE_FORCE_DEBUG //#define JUCE_FORCE_DEBUG #endif #ifndef JUCE_LOG_ASSERTIONS //#define JUCE_LOG_ASSERTIONS #endif #ifndef JUCE_CHECK_MEMORY_LEAKS //#define JUCE_CHECK_MEMORY_LEAKS #endif #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES #endif #ifndef JUCE_INCLUDE_ZLIB_CODE //#define JUCE_INCLUDE_ZLIB_CODE #endif #ifndef JUCE_USE_CURL //#define JUCE_USE_CURL #endif //============================================================================== // juce_graphics flags: #ifndef JUCE_USE_COREIMAGE_LOADER //#define JUCE_USE_COREIMAGE_LOADER #endif #ifndef JUCE_USE_DIRECTWRITE //#define JUCE_USE_DIRECTWRITE #endif //============================================================================== // juce_gui_basics flags: #ifndef JUCE_ENABLE_REPAINT_DEBUGGING //#define JUCE_ENABLE_REPAINT_DEBUGGING #endif #ifndef JUCE_USE_XSHM //#define JUCE_USE_XSHM #endif #ifndef JUCE_USE_XRENDER //#define JUCE_USE_XRENDER #endif #ifndef JUCE_USE_XCURSOR //#define JUCE_USE_XCURSOR #endif //============================================================================== // juce_gui_extra flags: #ifndef JUCE_WEB_BROWSER //#define JUCE_WEB_BROWSER #endif #ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR //#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR #endif //============================================================================== // juce_video flags: #ifndef JUCE_DIRECTSHOW //#define JUCE_DIRECTSHOW #endif #ifndef JUCE_MEDIAFOUNDATION //#define JUCE_MEDIAFOUNDATION #endif #ifndef JUCE_QUICKTIME //#define JUCE_QUICKTIME #endif #ifndef JUCE_USE_CAMERA //#define JUCE_USE_CAMERA #endif #endif // __JUCE_APPCONFIG_IILE7R__ JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/JuceHeader.h000066400000000000000000000034111263452017400250410ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! This is the header file that your files should include in order to get all the JUCE library headers. You should avoid including the JUCE headers directly in your own source files, because that wouldn't pick up the correct configuration options for your app. */ #ifndef __APPHEADERFILE_IILE7R__ #define __APPHEADERFILE_IILE7R__ #include "AppConfig.h" #include "modules/juce_audio_basics/juce_audio_basics.h" #include "modules/juce_audio_devices/juce_audio_devices.h" #include "modules/juce_audio_formats/juce_audio_formats.h" #include "modules/juce_audio_processors/juce_audio_processors.h" #include "modules/juce_audio_utils/juce_audio_utils.h" #include "modules/juce_core/juce_core.h" #include "modules/juce_cryptography/juce_cryptography.h" #include "modules/juce_data_structures/juce_data_structures.h" #include "modules/juce_events/juce_events.h" #include "modules/juce_graphics/juce_graphics.h" #include "modules/juce_gui_basics/juce_gui_basics.h" #include "modules/juce_gui_extra/juce_gui_extra.h" #include "modules/juce_opengl/juce_opengl.h" #include "modules/juce_video/juce_video.h" #if ! DONT_SET_USING_JUCE_NAMESPACE // If your code uses a lot of JUCE classes, then this will obviously save you // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. using namespace juce; #endif #if ! JUCE_DONT_DECLARE_PROJECTINFO namespace ProjectInfo { const char* const projectName = "ExpressiveMidiTest"; const char* const versionString = "1.0.0"; const int versionNumber = 0x10000; } #endif #endif // __APPHEADERFILE_IILE7R__ JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/ReadMe.txt000066400000000000000000000011231263452017400245650ustar00rootroot00000000000000 Important Note!! ================ The purpose of this folder is to contain files that are auto-generated by the Introjucer, and ALL files in this folder will be mercilessly DELETED and completely re-written whenever the Introjucer saves your project. Therefore, it's a bad idea to make any manual changes to the files in here, or to put any of your own files in here if you don't want to lose them. (Of course you may choose to add the folder's contents to your version-control system so that you can re-merge your own modifications after the Introjucer has saved its changes). JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/000077500000000000000000000000001263452017400243425ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_basics/000077500000000000000000000000001263452017400277755ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_basics/juce_audio_basics.h000066400000000000000000000002721263452017400336020ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_basics/juce_audio_basics.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_devices/000077500000000000000000000000001263452017400301535ustar00rootroot00000000000000juce_audio_devices.h000066400000000000000000000002741263452017400340610ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_devices// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_devices/juce_audio_devices.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_formats/000077500000000000000000000000001263452017400302045ustar00rootroot00000000000000juce_audio_formats.h000066400000000000000000000002741263452017400341430ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_formats// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_formats/juce_audio_formats.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_processors/000077500000000000000000000000001263452017400307335ustar00rootroot00000000000000juce_audio_processors.h000066400000000000000000000003021263452017400354110ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_processors// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_processors/juce_audio_processors.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_utils/000077500000000000000000000000001263452017400276715ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_audio_utils/juce_audio_utils.h000066400000000000000000000002701263452017400333700ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_audio_utils/juce_audio_utils.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_core/000077500000000000000000000000001263452017400263005ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_core/juce_core.h000066400000000000000000000002521263452017400304060ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_core/juce_core.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_cryptography/000077500000000000000000000000001263452017400301035ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_cryptography/juce_cryptography.h000066400000000000000000000002721263452017400340160ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_cryptography/juce_cryptography.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_data_structures/000077500000000000000000000000001263452017400305645ustar00rootroot00000000000000juce_data_structures.h000066400000000000000000000003001263452017400350710ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_data_structures// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_data_structures/juce_data_structures.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_events/000077500000000000000000000000001263452017400266545ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_events/juce_events.h000066400000000000000000000002561263452017400313420ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_events/juce_events.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_graphics/000077500000000000000000000000001263452017400271505ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_graphics/juce_graphics.h000066400000000000000000000002621263452017400321270ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_graphics/juce_graphics.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_gui_basics/000077500000000000000000000000001263452017400274605ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h000066400000000000000000000002661263452017400327530ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_basics/juce_gui_basics.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_gui_extra/000077500000000000000000000000001263452017400273375ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h000066400000000000000000000002641263452017400325070ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_extra/juce_gui_extra.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_opengl/000077500000000000000000000000001263452017400266345ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_opengl/juce_opengl.h000066400000000000000000000002561263452017400313020ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_opengl/juce_opengl.h" JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_video/000077500000000000000000000000001263452017400264565ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/JuceLibraryCode/modules/juce_video/juce_video.h000066400000000000000000000002541263452017400307440ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_video/juce_video.h" JUCE-4.1.0/examples/ExpressiveMidiTest/Source/000077500000000000000000000000001263452017400211245ustar00rootroot00000000000000JUCE-4.1.0/examples/ExpressiveMidiTest/Source/Main.cpp000066400000000000000000000057571263452017400225320ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "../JuceLibraryCode/JuceHeader.h" struct ExpressiveMidiTestClasses { #include "Setup.h" #include "Synth.h" #include "Visualiser.h" #include "MainComponent.h" }; //============================================================================== class ExpressiveMidiTestApplication : public JUCEApplication { public: //========================================================================== ExpressiveMidiTestApplication() {} const String getApplicationName() override { return ProjectInfo::projectName; } const String getApplicationVersion() override { return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return true; } //========================================================================== void initialise (const String& commandLine) override { mainWindow = new MainWindow (getApplicationName()); } void shutdown() override { mainWindow = nullptr; } void systemRequestedQuit() override { quit(); } //========================================================================== class MainWindow : public DocumentWindow { public: MainWindow (String name) : DocumentWindow (name, Colours::lightgrey, DocumentWindow::allButtons) { setUsingNativeTitleBar (true); setContentOwned (new ExpressiveMidiTestClasses::MainComponent(), true); centreWithSize (getWidth(), getHeight()); setVisible (true); } void closeButtonPressed() override { JUCEApplication::getInstance()->systemRequestedQuit(); } private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) }; private: //========================================================================== ScopedPointer mainWindow; }; //============================================================================== START_JUCE_APPLICATION (ExpressiveMidiTestApplication) JUCE-4.1.0/examples/ExpressiveMidiTest/Source/MainComponent.h000066400000000000000000000131731263452017400240510ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef MAINCOMPONENT_H_INCLUDED #define MAINCOMPONENT_H_INCLUDED //============================================================================== class MainComponent : public Component, private AudioIODeviceCallback, private MidiInputCallback, private ZoneLayoutComponent::Listener { public: //========================================================================== MainComponent() : audioSetupComp (audioDeviceManager, 0, 0, 0, 256, true, true, true, false) { setLookAndFeel (&lookAndFeel); setSize (880, 670); audioDeviceManager.initialise (0, 2, 0, true, String::empty, 0); audioDeviceManager.addMidiInputCallback(String::empty, this); audioDeviceManager.addAudioCallback (this); addAndMakeVisible (audioSetupComp); addAndMakeVisible (expressiveMidiSetupComp); addAndMakeVisible (zoneLayoutComp); addAndMakeVisible (visualiserViewport); visualiserViewport.setScrollBarsShown (false, true); visualiserViewport.setViewedComponent (&visualiserComp, false); visualiserViewport.setViewPositionProportionately (0.5, 0.0); expressiveMidiSetupComp.addListener (&zoneLayoutComp); expressiveMidiSetupComp.addListener (this); visualiserInstrument.addListener (&visualiserComp); } ~MainComponent() { audioDeviceManager.removeMidiInputCallback (String::empty, this); } //========================================================================== void resized() override { const int visualiserCompWidth = 2800; const int visualiserCompHeight = 300; const int zoneLayoutCompHeight = 60; const float audioSetupCompRelativeWidth = 0.6f; Rectangle r (getLocalBounds()); visualiserViewport.setBounds (r.removeFromBottom (visualiserCompHeight)); visualiserComp.setBounds (Rectangle (visualiserCompWidth, visualiserViewport.getHeight() - visualiserViewport.getScrollBarThickness())); zoneLayoutComp.setBounds (r.removeFromBottom (zoneLayoutCompHeight)); audioSetupComp.setBounds (r.removeFromLeft (proportionOfWidth (audioSetupCompRelativeWidth))); expressiveMidiSetupComp.setBounds (r); } //========================================================================== void audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, float** outputChannelData, int numOutputChannels, int numSamples) override { AudioBuffer buffer (outputChannelData, numOutputChannels, numSamples); buffer.clear(); MidiBuffer incomingMidi; midiCollector.removeNextBlockOfMessages (incomingMidi, numSamples); synth.renderNextBlock (buffer, incomingMidi, 0, numSamples); } void audioDeviceAboutToStart (AudioIODevice* device) override { const double sampleRate = device->getCurrentSampleRate(); midiCollector.reset (sampleRate); synth.setCurrentPlaybackSampleRate (sampleRate); } void audioDeviceStopped() override { } private: //========================================================================== void handleIncomingMidiMessage (MidiInput* /*source*/, const MidiMessage& message) override { visualiserInstrument.processNextMidiEvent (message); midiCollector.addMessageToQueue (message); } //========================================================================== void expressiveMidiZoneLayoutChanged (ExpressiveMidiZoneLayout newLayout) override { MidiOutput* midiOutput = audioDeviceManager.getDefaultMidiOutput(); if (midiOutput != nullptr) midiOutput->sendBlockOfMessagesNow (ExpressiveMidiMessages::setZoneLayout (newLayout)); visualiserInstrument.setZoneLayout (newLayout); synth.setZoneLayout (newLayout); } //========================================================================== LookAndFeel_V3 lookAndFeel; AudioDeviceManager audioDeviceManager; AudioDeviceSelectorComponent audioSetupComp; ExpressiveMidiSetupComponent expressiveMidiSetupComp; ZoneLayoutComponent zoneLayoutComp; Visualiser visualiserComp; Viewport visualiserViewport; ExpressiveMidiInstrument visualiserInstrument; DemoSynth synth; MidiMessageCollector midiCollector; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent) }; #endif // MAINCOMPONENT_H_INCLUDED JUCE-4.1.0/examples/ExpressiveMidiTest/Source/Setup.h000066400000000000000000000244701263452017400224040ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef SETUP_H_INCLUDED #define SETUP_H_INCLUDED //============================================================================== struct Utilities { static Colour getZoneColour (int index) noexcept { return Colours::red; // TIMUR TODO: use different colours for different zones! } }; //============================================================================== class ExpressiveMidiSetupComponent : public Component, public ChangeBroadcaster, private Button::Listener { public: //========================================================================== ExpressiveMidiSetupComponent() : masterChannelLabel (String::empty, "Master channel:"), noteChannelsLabel (String::empty, "Nr. of note channels:"), masterPitchbendRangeLabel (String::empty, "Master pitchbend range (semitones):"), notePitchbendRangeLabel (String::empty, "Note pitchbend range (semitones):"), addZoneButton ("Add this zone"), clearAllZonesButton ("Clear all zones") { initialiseComboBoxWithConsecutiveIntegers (masterChannel, masterChannelLabel, 1, 15, defaultMasterChannel); initialiseComboBoxWithConsecutiveIntegers (noteChannels, noteChannelsLabel, 1, 15, defaultNoteChannels); initialiseComboBoxWithConsecutiveIntegers (masterPitchbendRange, masterPitchbendRangeLabel, 0, 96, defaultMasterPitchbendRange); initialiseComboBoxWithConsecutiveIntegers (notePitchbendRange, notePitchbendRangeLabel, 0, 96, defaultNotePitchbendRange); initialiseTextButton (addZoneButton); initialiseTextButton (clearAllZonesButton); } //========================================================================== void resized() override { Rectangle r (proportionOfWidth (0.65f), 15, proportionOfWidth (0.25f), 3000); const int h = 24; const int space = h / 4; masterChannel.setBounds (r.removeFromTop (h)); r.removeFromTop (space); noteChannels.setBounds (r.removeFromTop (h)); r.removeFromTop (space); masterPitchbendRange.setBounds (r.removeFromTop (h)); r.removeFromTop (space); notePitchbendRange.setBounds (r.removeFromTop (h)); r.removeFromTop (18); r.setLeft (proportionOfWidth (0.5f)); addZoneButton.setBounds (r.removeFromTop (h)); r.removeFromTop (space); clearAllZonesButton.setBounds (r.removeFromTop (h)); } //========================================================================== class Listener { public: virtual ~Listener() {} virtual void expressiveMidiZoneLayoutChanged (ExpressiveMidiZoneLayout newLayout) = 0; }; void addListener (Listener* listenerToAdd) { listeners.add (listenerToAdd); if (zoneLayout.getNumZones() > 0) // make the new listener immediately aware of current zone layout listenerToAdd->expressiveMidiZoneLayoutChanged (zoneLayout); } void removeListener (Listener* listenerToRemove) { listeners.remove (listenerToRemove); } private: //========================================================================== void initialiseComboBoxWithConsecutiveIntegers (ComboBox& comboBox, Label& labelToAttach, int firstValue, int numValues, int valueToSelect) { addAndMakeVisible (comboBox); for (int i = 0; i < numValues; ++i) comboBox.addItem (String (i + firstValue), i + 1); comboBox.setSelectedId (valueToSelect - firstValue + 1); labelToAttach.attachToComponent (&comboBox, true); } //========================================================================== void initialiseTextButton (TextButton& button) { addAndMakeVisible (button); button.addListener (this); } //========================================================================== void buttonClicked (Button* button) override { if (button == &addZoneButton) addZoneButtonClicked(); else if (button == &clearAllZonesButton) clearAllZonesButtonClicked(); } //========================================================================== void addZoneButtonClicked() { if (selectedZoneParametersValid()) { ExpressiveMidiZone newZone (masterChannel.getText().getIntValue(), noteChannels.getText().getIntValue(), notePitchbendRange.getText().getIntValue(), masterPitchbendRange.getText().getIntValue()); zoneLayout.addZone (newZone); listeners.call (&Listener::expressiveMidiZoneLayoutChanged, zoneLayout); } else { handleInvalidNrOfNoteChannels(); } } //========================================================================== void clearAllZonesButtonClicked() { zoneLayout.clearAllZones(); listeners.call (&Listener::expressiveMidiZoneLayoutChanged, zoneLayout); } //========================================================================== bool selectedZoneParametersValid() const { int maxPossibleNumNoteChannels = 16 - masterChannel.getText().getIntValue(); return noteChannels.getText().getIntValue() <= maxPossibleNumNoteChannels; } //========================================================================== void handleInvalidNrOfNoteChannels() const { AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon, "Invalid zone layout", "Cannot create Expressive MIDI zone:\n" "Invalid zone parameters selected!", "Got it"); } //========================================================================== ExpressiveMidiZoneLayout zoneLayout; ComboBox masterChannel, noteChannels, masterPitchbendRange, notePitchbendRange; Label masterChannelLabel, noteChannelsLabel, masterPitchbendRangeLabel, notePitchbendRangeLabel; TextButton addZoneButton, clearAllZonesButton; ListenerList listeners; const int defaultMasterChannel = 1, defaultNoteChannels = 15, defaultMasterPitchbendRange = 2, defaultNotePitchbendRange = 48; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ExpressiveMidiSetupComponent) }; //============================================================================== class ZoneLayoutComponent : public Component, public ExpressiveMidiSetupComponent::Listener { public: //========================================================================== void paint (Graphics& g) override { g.setColour (Colours::black); float channelWidth = getChannelRectangleWidth(); for (int i = 0; i < numMidiChannels; ++i) { float x = float (i) * channelWidth; Rectangle channelArea (x, 0.0f, channelWidth, getHeight()); Line line (x, 0.0f, x, float (getHeight())); g.drawLine (line); g.drawText (String (i + 1), channelArea.reduced (4, 4), Justification::topLeft, false); } paintZones (g); } //========================================================================== void paintZones (Graphics& g) { float channelWidth = getChannelRectangleWidth(); for (int i = 0; i < zoneLayout.getNumZones(); ++i) { ExpressiveMidiZone zone = zoneLayout.getZone (i); Rectangle zoneRect (getChannelRectangleWidth() * (zone.getMasterChannel() - 1), 0, getChannelRectangleWidth() * (zone.getNumNoteChannels() + 1), getHeight()); zoneRect.removeFromTop (20); g.setColour (Utilities::getZoneColour (i).withAlpha (0.3f)); g.fillRect (zoneRect.withWidth (channelWidth)); g.setColour (Utilities::getZoneColour (i)); g.drawRect (zoneRect, 3); g.drawText ("<>" + String (zone.getPerNotePitchbendRange()), zoneRect.withTrimmedLeft (channelWidth).reduced (4, 4), Justification::bottomLeft, false); g.setColour (Colours::black); g.drawText ("ZONE " + String (i + 1), zoneRect.reduced (4, 4), Justification::topLeft, false); g.drawText ("<>" + String (zone.getMasterPitchbendRange()), zoneRect.reduced (4, 4), Justification::bottomLeft, false); } } //========================================================================== void expressiveMidiZoneLayoutChanged (ExpressiveMidiZoneLayout newLayout) override { zoneLayout = newLayout; repaint(); } private: //========================================================================== float getChannelRectangleWidth() const noexcept { return float (getWidth()) / numMidiChannels; } //========================================================================== ExpressiveMidiZoneLayout zoneLayout; const int numMidiChannels = 16; }; #endif // SETUP_H_INCLUDED JUCE-4.1.0/examples/ExpressiveMidiTest/Source/Synth.h000066400000000000000000000045541263452017400224120ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef SYNTH_H_INCLUDED #define SYNTH_H_INCLUDED //============================================================================== class DemoSynth: public ExpressiveMidiSynthesiserBase { public: DemoSynth() : noiseLevel (0.0f) { } void noteAdded (ExpressiveMidiNote newNote) override { noiseLevel += 0.05f; } void noteChanged (ExpressiveMidiNote changedNote) override { // nothing! } void noteReleased (ExpressiveMidiNote finishedNote) override { noiseLevel -= 0.05f; } protected: //========================================================================== void renderNextSubBlock (AudioBuffer& outputAudio, int startSample, int numSamples) override { while (--numSamples >= 0) { for (int i = outputAudio.getNumChannels(); --i >= 0;) { float randomFloatWithinRange = (2.0f * float (std::rand()) / float (std::numeric_limits::max())) - 1.0f; const float currentSample = noiseLevel * randomFloatWithinRange; outputAudio.addSample (i, startSample, currentSample); } ++startSample; } } private: //========================================================================== float noiseLevel; }; #endif // SYNTH_H_INCLUDED JUCE-4.1.0/examples/ExpressiveMidiTest/Source/Visualiser.h000066400000000000000000000172451263452017400234340ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef VISUALISER_H_INCLUDED #define VISUALISER_H_INCLUDED //============================================================================== class NoteComponent : public Component { public: NoteComponent (const ExpressiveMidiNote& n) : note (n) { } //========================================================================== void update (const ExpressiveMidiNote& newNote, Point newCentre) { note = newNote; centre = newCentre; setBounds (getSquareAroundCentre (jmax (getNoteOnRadius(), getPressureRadius())) .getUnion (getTextRectangle()) .getSmallestIntegerContainer() .expanded (3)); repaint(); } //========================================================================== void paint (Graphics& g) override { Colour colour (Colours::red); // TODO g.setColour (colour.withAlpha (0.3f)); g.fillEllipse (translateToLocalBounds (getSquareAroundCentre (getNoteOnRadius()))); g.setColour (colour); // TODO g.drawEllipse (translateToLocalBounds (getSquareAroundCentre (getPressureRadius())), 2.0f); Rectangle textBounds = translateToLocalBounds (getTextRectangle()).getSmallestIntegerContainer(); g.drawText ("+", textBounds, Justification::centred); g.drawText (MidiMessage::getMidiNoteName (note.initialNote, true, true, 3), textBounds, Justification::centredBottom); g.setFont (Font (22.0f, Font::bold)); g.drawText (String (note.midiChannel), textBounds, Justification::centredTop); } //========================================================================== ExpressiveMidiNote note; Point centre; private: //========================================================================== Rectangle getSquareAroundCentre (float radius) const noexcept { return Rectangle (radius * 2.0f, radius * 2.0f).withCentre (centre); } Rectangle translateToLocalBounds (Rectangle r) const noexcept { return r - getPosition().toFloat(); } Rectangle getTextRectangle() const noexcept { return Rectangle (30.0f, 50.0f).withCentre (centre); } float getNoteOnRadius() const { return note.noteOnVelocity.asUnsignedFloat() * maxNoteRadius; } float getPressureRadius() const { return note.pressure.asUnsignedFloat() * maxNoteRadius; } const float maxNoteRadius = 100.0f; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NoteComponent) }; //============================================================================== class Visualiser : public Component, public ExpressiveMidiInstrument::Listener, private AsyncUpdater { public: //========================================================================== Visualiser() {} //========================================================================== void paint (Graphics& g) override { g.fillAll (Colours::black); float noteDistance = float (getWidth()) / 128; for (int i = 0; i < 128; ++i) { float x = noteDistance * i; int noteHeight = MidiMessage::isMidiNoteBlack (i) ? 0.7 * getHeight() : getHeight(); g.setColour (MidiMessage::isMidiNoteBlack (i) ? Colours::white : Colours::grey); g.drawLine (x, 0.0f, x, noteHeight); if (i > 0 && i % 12 == 0) { g.setColour (Colours::grey); int octaveNumber = (i / 12) - 2; g.drawText ("C" + String (octaveNumber), x - 15, getHeight() - 30, 30, 30, Justification::centredBottom); // TIMUR TODO: beautify this! } } } //========================================================================== void noteAdded (ExpressiveMidiNote newNote) override { const ScopedLock sl (lock); activeNotes.add (newNote); triggerAsyncUpdate(); } void noteChanged (ExpressiveMidiNote changedNote) override { const ScopedLock sl (lock); for (auto& note : activeNotes) if (note.noteID == changedNote.noteID) note = changedNote; triggerAsyncUpdate(); } void noteReleased (ExpressiveMidiNote finishedNote) override { const ScopedLock sl (lock); for (int i = activeNotes.size(); --i >= 0;) if (activeNotes.getReference(i).noteID == finishedNote.noteID) activeNotes.remove (i); triggerAsyncUpdate(); } private: //========================================================================== ExpressiveMidiNote* findActiveNote (int noteID) const noexcept { for (auto& note : activeNotes) if (note.noteID == noteID) return ¬e; return nullptr; } NoteComponent* findNoteComponent (int noteID) const noexcept { for (auto& noteComp : noteComponents) if (noteComp->note.noteID == noteID) return noteComp; return nullptr; } //========================================================================== void handleAsyncUpdate() override { const ScopedLock sl (lock); for (int i = noteComponents.size(); --i >= 0;) if (findActiveNote (noteComponents.getUnchecked(i)->note.noteID) == nullptr) noteComponents.remove (i); for (auto& note : activeNotes) if (findNoteComponent (note.noteID) == nullptr) addAndMakeVisible (noteComponents.add (new NoteComponent (note))); for (auto& noteComp : noteComponents) if (auto* noteInfo = findActiveNote (noteComp->note.noteID)) noteComp->update (*noteInfo, getCentrePositionForNote (*noteInfo)); } //========================================================================== Point getCentrePositionForNote (ExpressiveMidiNote note) const { float pitchbendRange = 24.0f; // TIMUR TODO: get actual range !!! float n = float (note.initialNote) + note.pitchbend.asPitchbendInSemitones (pitchbendRange); float x = getWidth() * n / 128; float y = getHeight() * (1 - note.timbre.asUnsignedFloat()); return Point (x, y); } //========================================================================== OwnedArray noteComponents; CriticalSection lock; Array activeNotes; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Visualiser) }; #endif // VISUALISER_H_INCLUDED JUCE-4.1.0/examples/HelloWorld/000077500000000000000000000000001263452017400161375ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/000077500000000000000000000000001263452017400173615ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/Linux/000077500000000000000000000000001263452017400204605ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/Linux/Makefile000066400000000000000000000100661263452017400221230ustar00rootroot00000000000000# Automatically generated makefile, created by the Introjucer # Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project! # (this disables dependency generation if multiple architectures are set) DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) ifndef CONFIG CONFIG=Debug endif ifeq ($(CONFIG),Debug) BINDIR := build LIBDIR := build OBJDIR := build/intermediate/Debug OUTDIR := build ifeq ($(TARGET_ARCH),) TARGET_ARCH := -march=native endif CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 CXXFLAGS += $(CFLAGS) -std=c++11 LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt TARGET := HelloWorld BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif ifeq ($(CONFIG),Release) BINDIR := build LIBDIR := build OBJDIR := build/intermediate/Release OUTDIR := build ifeq ($(TARGET_ARCH),) TARGET_ARCH := -march=native endif CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=1.0.0" -D "JUCE_APP_VERSION_HEX=0x10000" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os CXXFLAGS += $(CFLAGS) -std=c++11 LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt TARGET := HelloWorld BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH) CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR) endif OBJECTS := \ $(OBJDIR)/Main_90ebc5c2.o \ $(OBJDIR)/MainComponent_a6ffb4a5.o \ $(OBJDIR)/juce_core_1ee54a40.o \ $(OBJDIR)/juce_data_structures_84790dfc.o \ $(OBJDIR)/juce_events_584896b4.o \ $(OBJDIR)/juce_graphics_f9afc18.o \ $(OBJDIR)/juce_gui_basics_90929794.o \ $(OBJDIR)/juce_gui_extra_b81d9e1c.o \ .PHONY: clean $(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES) @echo Linking HelloWorld -@mkdir -p $(BINDIR) -@mkdir -p $(LIBDIR) -@mkdir -p $(OUTDIR) @$(BLDCMD) clean: @echo Cleaning HelloWorld @$(CLEANCMD) strip: @echo Stripping HelloWorld -@strip --strip-unneeded $(OUTDIR)/$(TARGET) $(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp -@mkdir -p $(OBJDIR) @echo "Compiling Main.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/MainComponent_a6ffb4a5.o: ../../Source/MainComponent.cpp -@mkdir -p $(OBJDIR) @echo "Compiling MainComponent.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_core_1ee54a40.o: ../../../../modules/juce_core/juce_core.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_core.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_data_structures_84790dfc.o: ../../../../modules/juce_data_structures/juce_data_structures.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_data_structures.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_events_584896b4.o: ../../../../modules/juce_events/juce_events.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_events.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_graphics_f9afc18.o: ../../../../modules/juce_graphics/juce_graphics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_graphics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_gui_basics_90929794.o: ../../../../modules/juce_gui_basics/juce_gui_basics.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_gui_basics.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" $(OBJDIR)/juce_gui_extra_b81d9e1c.o: ../../../../modules/juce_gui_extra/juce_gui_extra.cpp -@mkdir -p $(OBJDIR) @echo "Compiling juce_gui_extra.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" -include $(OBJECTS:%.o=%.d) JUCE-4.1.0/examples/HelloWorld/Builds/MacOSX/000077500000000000000000000000001263452017400204535ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/MacOSX/HelloWorld.xcodeproj/000077500000000000000000000000001263452017400245225ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/MacOSX/HelloWorld.xcodeproj/project.pbxproj000066400000000000000000005563631263452017400276200ustar00rootroot00000000000000// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { 4DB01A361C3EB8BBBE893AAC = {isa = PBXBuildFile; fileRef = 21A912CCEA1FC0733AD65075; }; 51A76E3A281D21F429C75F0E = {isa = PBXBuildFile; fileRef = A9E35E85D16F32AD3EA135BE; }; 820ECCDC2115F6687BEC40C6 = {isa = PBXBuildFile; fileRef = 156FD1B428979C9E5D43DDC2; }; EAA5A5EECF04D2B7FCF768FC = {isa = PBXBuildFile; fileRef = EF932865774E86525CE7FC55; }; 6CEBF944E27D7BE88E78945D = {isa = PBXBuildFile; fileRef = 6E43583682EFEBAE58D59BA4; }; 6E85E85F989CB43995D01BAF = {isa = PBXBuildFile; fileRef = D071023526C8D2E38D1C95C5; }; 535A340E26E5D6766D1780CA = {isa = PBXBuildFile; fileRef = B3978067F1432E1A2618A5DB; }; 31E87C6EC193B9C408D16F20 = {isa = PBXBuildFile; fileRef = 0EDDB91E8D84944C3EBACFFE; }; F1FECDFA7E29BD6B703AF52B = {isa = PBXBuildFile; fileRef = 116E9A279FB25AE32174C42F; }; EA50C8A2A8471D0EB4B8E644 = {isa = PBXBuildFile; fileRef = C1980330512BAADDA1CB0D24; }; 10A93C9ECE23E879115D5B95 = {isa = PBXBuildFile; fileRef = 8FC7BFF093D665F8178EC297; }; 16890172C661285B431823B1 = {isa = PBXBuildFile; fileRef = B2650D0AA7710D3C2627238A; }; 7DCA87102FFCD304FA172464 = {isa = PBXBuildFile; fileRef = 01D2B9B2D33BFF1F4B571B7E; }; 219E48FBEA32F43040A9970C = {isa = PBXBuildFile; fileRef = F21F13BF684528EB7041BD67; }; 00BB14FB0329250A897855F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; }; 00D9EB5B09E980D4A78D852A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; }; 00FD1194DB59F69CA9DFCFAF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemClipboard.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h"; sourceTree = "SOURCE_ROOT"; }; 016AB5DF7206562FA4B48A81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationBase.h"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.h"; sourceTree = "SOURCE_ROOT"; }; 01A853C55CAE8341C207A758 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; 01D2B9B2D33BFF1F4B571B7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 01D5DC75EA54630B8805AD59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 02123F620ABB8F19FCE4E7E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; 02BD81436ED17F1341E19522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../../modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; }; 02C0DD7DC29B27B39D5FF154 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 02FA201D32033D122C04A1B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Justification.h"; path = "../../../../modules/juce_graphics/placement/juce_Justification.h"; sourceTree = "SOURCE_ROOT"; }; 0324378725B8DEBC11E93953 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedButtonBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h"; sourceTree = "SOURCE_ROOT"; }; 03BB1C54D9DEDDAB20B854AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextDiff.cpp"; path = "../../../../modules/juce_core/text/juce_TextDiff.cpp"; sourceTree = "SOURCE_ROOT"; }; 03E4C81E1D323C0CD78DC8A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; }; 0493323D5A1374BBEFCFE455 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; 04A6FE27FC63E4D27E857CBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 0525B4E0F2387B1F3AA520F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; }; 068349E735D107BE09BEC641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; 06EF239CDE579FFC28F65BE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 07064C4F0CA036ABDCF9C708 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; }; 0784B69B6377F90FB264DCB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainComponent.h; path = ../../Source/MainComponent.h; sourceTree = "SOURCE_ROOT"; }; 07B9E81DB1A4F13B7FF54FD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 07D2814B9A8E25F3269B675D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; 081B7C7D1B9CB7F72A193DEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandManager.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h"; sourceTree = "SOURCE_ROOT"; }; 08603D6A5C7D8DDDA1AE4DA3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LuaCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 08C449B44C89E728A89013F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; 08C730BD0BD4755B55E99BAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeEditorComponent.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 09A3E1630BFC67C63AFEDE3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; 0A421597B03EA9CA355D8BD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 0A82B6536AC2C02E099AB0AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; }; 0B62C1B2DFE2EE1C8E1EB5B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NormalisableRange.h"; path = "../../../../modules/juce_core/maths/juce_NormalisableRange.h"; sourceTree = "SOURCE_ROOT"; }; 0B92355966B36E2B913BC8EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; }; 0C1C8C5879770EF4E8824EF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; }; 0C36123881F7A4B6A144F272 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; 0C5169FC4BAB96B2F16BF5B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_curl_Network.cpp"; path = "../../../../modules/juce_core/native/juce_curl_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 0C90578962B82B1AE222578E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; }; 0CE43A8B78FB46CE63C0AB6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; 0CFAADB1812DF1EFFFE48116 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; 0D3ACCBA2F79A0C6444AF72C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 0DBB48BEAC0B38D509A6ED6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 0E0B382367017DA9380D3C61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferedInputStream.h"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 0EBBED2D984949E34DA34E8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 0EDDB91E8D84944C3EBACFFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainComponent.cpp; path = ../../Source/MainComponent.cpp; sourceTree = "SOURCE_ROOT"; }; 0F5CBF5A5C2283DA1344E55E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 10650C6BB284DC0F6E7DCB5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 116E9A279FB25AE32174C42F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; 118B13BE32C7FDCE82BDC495 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1259079CB2A8907577BBBAA3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertiesFile.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h"; sourceTree = "SOURCE_ROOT"; }; 130A28E84D438B08C6B5D5A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 1316BB7ACE3F151F3B44A3EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; }; 133B528A88E99C116B75BFDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarComponent.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 140B14E0142DF835F1C6D951 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; 140BFF25B0078C0709FF2461 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1473903057B414B186B8D6A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 14EED238D31DAABE590C749A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 14F44BEA5F54F7E064122CC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; }; 15569873F24C4157977C8D9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; }; 156FD1B428979C9E5D43DDC2 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; 158F40026FBDA4EE9F90CF02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; 15DBBA2C2CCC22B3488B48F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 1657734A03E0F21166FAE9E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; 1667021AB391F5D9B82B186D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 1679AB8658094A527E7A2811 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; }; 17697EA857D23FAC8FF46868 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../../modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; 1818AAD83B5C0FC5B322446F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 1846D85E50A6B97BBC5EDD6E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooser.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h"; sourceTree = "SOURCE_ROOT"; }; 189CC2967B6148BE990281E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; }; 18BF5D458C9584CD0136DCC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeRectangle.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 18F87CFF17A2C8B806B58028 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; }; 1A07D7AE9814E2D42F2B2EEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; 1A6CC0CB9A61C67DF712B06E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToggleButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A849B3BFFE1598017793994 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UndoManager.cpp"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A8917A61F4F6E9766564420 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../../modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; }; 1B799004320846B17A0D2820 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; 1B9D255022E9F460E5F710C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; 1BAB3298971199DD4A26042B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; 1BF703172DA6AC2179913394 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../../modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; }; 1C2A1CDE2DA322901B0899F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; 1C3E6A1B46D80DBFEE6CF33B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 1CAE226BEF2243B1FA8CC646 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 1CCD30C2315CF5CD327FFA99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; 1D610C9DF69B955B05EB9A54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 1D68491BDF0E63AC125D454C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; 1DFCB49A7B79D79376629528 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 1E19C8C3F46E236277F58F42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; }; 1EC7132F648E537E2B1F95EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 1EECC1DDB24892ED2BE2FC44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 1F16E8AF03971A15157AD981 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HeapBlock.h"; path = "../../../../modules/juce_core/memory/juce_HeapBlock.h"; sourceTree = "SOURCE_ROOT"; }; 1F32C178FF93792406789660 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; 1F4C7ECC97B4C80BD98F32C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 1FC1E37865F424D91228A888 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 1FC89BBE37A0162D7B8A8E64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; }; 2026B0F45584BD5BECC4EFBA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileLogger.cpp"; path = "../../../../modules/juce_core/logging/juce_FileLogger.cpp"; sourceTree = "SOURCE_ROOT"; }; 207945846A9C6558F509C745 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInactivityDetector.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp"; sourceTree = "SOURCE_ROOT"; }; 20A5A541366F7C22EF633114 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; 20BC71D082643A43C9BD37C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableImage.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h"; sourceTree = "SOURCE_ROOT"; }; 2162A9A1F6F5DF44CBAC2129 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 2199D426EC85451D81636490 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 219B89271C840E2D7E512612 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_android_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 21A118094F4A8DC6E9343AC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; 21A912CCEA1FC0733AD65075 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 2206F8DB2D2D3042FFB24820 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../../modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; }; 230C6175514E621AA9037C67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; }; 2327E88F48EE9DBD166727F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BooleanPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 234F4B105DF97B936ED47100 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScrollBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h"; sourceTree = "SOURCE_ROOT"; }; 23925ED31BD8E2D82FF86A31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 23A21EE368F8679E0C40323B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; 23B5C7121187E9533B66FFCB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; }; 2575944C94EF083E2CBDBFA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; 26341A8D55A799AC0ED8B33F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Random.cpp"; path = "../../../../modules/juce_core/maths/juce_Random.cpp"; sourceTree = "SOURCE_ROOT"; }; 26D9D7114D4E9ECBABA9C391 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 27A1A9F9CB957FACCFF348D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 27E36BA8310CE73DCCA58AC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentAnimator.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp"; sourceTree = "SOURCE_ROOT"; }; 293CD4C7F50623F81F3D6297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; 294C8642232443EEC9C4DF3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 295439C55D8A711959ADABD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_win32_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 29610D1C68DD1FA2043A0D95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 2A1CE4FC4448FBE9D4713C5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; }; 2A3D243054F8E1C94ED0A0E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2BB6FE1F813E3EF9FB1FAACE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 2CBD98BBA9322461A3ED0D05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; 2DB2C70618EAA8DC81B2564F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 2DB4D07F237B52911EB0B812 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2DBE41449BBADA6D1242D7E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 2E621C1E7F2E9FC6A6D14282 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; 2EC797F05D27994FD0B4F19B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F014FFE6BB6209B7BBBCB79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; }; 2F1A2B5F25C3F2502932EFF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; }; 2F3A411E38028AE655F7EF95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; 2F55E9B82505B501C1E9B0D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableObjectResizer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h"; sourceTree = "SOURCE_ROOT"; }; 2F5EFAB6DFDBD1661C8D53A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; }; 302AFDDB94F243E1C82AF3E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; 304137C2E24F2CC1863D9731 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; }; 30453B2E00C2367919B4AC25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_freetype_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 305C7AE4DF0701B34616E4FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; 309B10A91B0698EC749802D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnection.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h"; sourceTree = "SOURCE_ROOT"; }; 30D62F5F1125F39CE8D28C78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; }; 3123FA92E774DD0E4788E9FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; }; 31F1BE05C5BC30558F8039AD = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 31FED87B0FA79D42C5B63186 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 32A77D14749535446A0BC825 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; }; 32B8A985D15EAE4008F43D5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 33BDA746816EE0D0EBB559DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FillType.h"; path = "../../../../modules/juce_graphics/colour/juce_FillType.h"; sourceTree = "SOURCE_ROOT"; }; 3437B0E3EA85400DBEEE0074 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; }; 348CDBF399D99B719511B313 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; }; 34B6C8553DCBD14A2F7207FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 3549AF6032831F9553E74467 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_events/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 35BD72D236BE7ADC019B5564 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../../modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; }; 35CCF611A1FFF0A68FA75161 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 3705B72C4B467A1EABEC9C49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 37380DEDD5BEE5E9267FA12F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; 373E70565BE10D615B096C28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; 3824684DA7C61AA29E386158 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnection.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp"; sourceTree = "SOURCE_ROOT"; }; 3832110FA8DA58E650AB6F9E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; 38E5FF4A3CBEA8C42D9F14CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; }; 3944F07DE8E0975B663BFEB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 39F7F5DC827150D2E57F1DBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 3A1128BBCB04C3DCE2E5D37E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; 3A8FC4F98008643A60177AEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; 3A9E838A0D5461D20726AE71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; 3B3F316BC1E0486A4FD27686 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; 3B51C055A70A99CDCEDFA399 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../../modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; 3BE1A6F6B461F08095CABAC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Base64.h"; path = "../../../../modules/juce_core/text/juce_Base64.h"; sourceTree = "SOURCE_ROOT"; }; 3CBF4CE2F60BBF9EB9637BC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; 3D32372B5CC311AA696124D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPCompressorOutputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 3D52A3BB485767A61EF457E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; }; 3D95AB0F7898371918F9E8FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; }; 3E5B3814C7B1B21431D4F234 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; }; 3E65BE3F701901EC447327AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F111FBCEE1230015F476C68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; }; 3FB71EFD64D47E52DADCACA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 403E7E9949CFE8BD73DDD909 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; 408110CA0AFFDF83F3AF497D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; }; 40A7C1EB6363A8FC4A9900B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditorKeyMapper.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h"; sourceTree = "SOURCE_ROOT"; }; 41535CB61E936ECEBB04FFAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemStats.cpp"; path = "../../../../modules/juce_core/system/juce_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 4239AF0A782192683CE4F2A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyListener.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h"; sourceTree = "SOURCE_ROOT"; }; 42D4C2092537DD2A5054134F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; 451343A64FCB48BC926E0962 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; 453B6D80B6389BE1341A0A29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; }; 4543C730A5DA77649C20B6B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; 458C003240D4C31FF940A99C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; 45905746CA7C3BFE98B583C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; 45A89EE380DBADF9105B866A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; }; 46393FE4FE6D8683444CD1A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; 46A2A110922BAD26FB4298C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 46BD0A7BCF4C608DB94285EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; }; 47051A94D9B45B21017A867F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LuaCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 47B6D5118C5FE2D6A452A487 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilenameComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h"; sourceTree = "SOURCE_ROOT"; }; 47BB119E08A7A1A468564B9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; 47D12441679F0062EB7C96AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../../modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; }; 48D212A6051005FB7A4BC338 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageFileFormat.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 492FBEED85D887CC01080068 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; }; 495652C9E6B06C891281D040 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; 4961AA10B3563523AE1B0BFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooserDialogBox.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h"; sourceTree = "SOURCE_ROOT"; }; 498778ED99DF1BA68A6E3A18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 4A20547D0C763ABB1DE5A9C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; 4A5ED88CC2ED6ADD8A5B102A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; 4A8C64BB96FB93919DDF2166 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 4AA6BD2A3FDFADDCB0322F9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; }; 4C34CB4DC542D86A193C055A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RenderingHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_RenderingHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 4CC331BEE18B3EC4BADF38CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../../modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; }; 4D44E9AD19469774ED8245B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 4D6C90354134741F7F295412 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 4DD07E53E4ABDE534D34981E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HyperlinkButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h"; sourceTree = "SOURCE_ROOT"; }; 4E1058572E25FD04B7D60700 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; 4E2E741BA1779C70049641D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; 4FF67CE1DFACAFF545D8E9AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 5044BE1EA711B629563F70CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; 505E065430B4C61E119415FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; 5136E02D20343ED8DCD90A20 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 5187A18B4BAC7087C4FE8060 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; 51A4935D712C05D9C75CDDDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; 51F215744097662A34943493 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 521C8693B71C04C387C178F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; }; 523B09319B14E721921D830A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; 52AAE149F3EC7BAB0E7703DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 52D7E72C26E3D1589A6A1BD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; 536EB9664EDB02A4CBF9BD28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; 53F3EB3D456B15EF5CC6FC67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 543A10EED475842E60CE7F3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; 5457E4C7D67E767CCD8B0964 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; }; 54FF1D1CC748FA043A28004F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 555CE1B4514C7E3BBB1A009E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; }; 558FEC99442C039E45679325 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; }; 55E627FDBA6A7978821CB281 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; }; 56E41C2987E763CEE092B7A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; 56F46591D347CA4272001691 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B0D2EC9A8AC716C07B61137 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyPanel.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B67F01C0BA9323892900AF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedXLock.h"; path = "../../../../modules/juce_events/native/juce_ScopedXLock.h"; sourceTree = "SOURCE_ROOT"; }; 5B6BC49A6F74A8021E73E3A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B7AF55C74CE6D19A9AC7354 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; 5B9C910F85E921B561995ED3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; }; 5BFC164CB4F8BC4FD839EDC8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5C49EBA49810FE7840039EA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 5C4A0785E529A72663FC155E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 5D8B625E558414B158ACA721 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 5DBA0BFB2868C3E1F1E871FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandTarget.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp"; sourceTree = "SOURCE_ROOT"; }; 5E2CB1D4DC6ED933AA81C43A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5E38635277CA0767A3B1A229 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; }; 5E4F70838E79D6A25B8A80B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedAppComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5E716763BE04772CA06592DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputSource.h"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.h"; sourceTree = "SOURCE_ROOT"; }; 5F55D2FE7338877E1CDD4B45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; }; 5FCCDEEE0E7A1AD4179D1E1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BigInteger.cpp"; path = "../../../../modules/juce_core/maths/juce_BigInteger.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FE579E53ADAEEDEDF2AA2D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../../modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; }; 601874CF9435F18E7B69AE6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; }; 60DDA3B2D06C918647F0F2FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; }; 60F8D50274C2C6DEA40C13AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 6108C64B7B0AD2CA64F30DC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 614E3EC828D056202DC10732 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_basics.h"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.h"; sourceTree = "SOURCE_ROOT"; }; 61E66D9A002421AAA36E6CA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 6261EB3783A9DF264A122DC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; 62733AC6CAD0F79BEAE0CF4F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; 62B84090765C713CC4250BB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; 62DF24F1C7E14730CDA3F27B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; }; 62E67D3BBC3098E5BC56F835 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 632A6E49E7D869A9744A4491 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; 6421875FDD1DB8F8C322F3A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 64D016CA7156861886442427 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; 6501D18FEF031C7FEF45F39E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 65269D81DF23F8211A61032E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 652822ADCD7393AF40945DA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Viewport.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp"; sourceTree = "SOURCE_ROOT"; }; 659BEDAE6C17DD4FA6B74971 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 65A7736ECC548A9FD10E4F42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; }; 65A88D5E8C1F0BE74F05C072 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; 65B0A35F0ED651E60556A0E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; }; 65DBA30ACD7C6156850F1F4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; }; 65FC1A9B2D0CDCD2D0180A17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 6603F93CB38F0E7BEB779A9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TimeSliceThread.cpp"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp"; sourceTree = "SOURCE_ROOT"; }; 6615B376201BA6A338D7177E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../../modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; }; 67313924EE210EADEB66ECBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 675E6456CBD23C87B8F14544 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; 6816BB0D62EC676409B3587F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; }; 6889EF825EA839830C733D07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; 68CC5DF188B4F8D9BC4A397A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_ClangBugWorkaround.h"; path = "../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h"; sourceTree = "SOURCE_ROOT"; }; 69266B83D819323230CB67B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 6930D056DFFC6EAA2B52E045 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; 699E20F1575B18C3D909940A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 6A8D0F24F0A1F95A52845506 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; 6B1B6046C54E082A9E25D69C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; 6B252EAC72CB94D5DC06C284 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; 6B29E55E890064489381C65A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePoint.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B625D967F13EC4AFB7BADCA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; 6C556B58616171CC70488F0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; }; 6C632E34FD1B617525987657 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; }; 6CB12AF57587118CCC37BC8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6DE47E2E070BC5173F0985BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Uuid.h"; path = "../../../../modules/juce_core/misc/juce_Uuid.h"; sourceTree = "SOURCE_ROOT"; }; 6E43583682EFEBAE58D59BA4 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 6E8326A0BC2AAA5F82287220 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; 6ED446E76E238A6243800BB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 6FD7AFA0B4E7F4E848E33737 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ElementComparator.h"; path = "../../../../modules/juce_core/containers/juce_ElementComparator.h"; sourceTree = "SOURCE_ROOT"; }; 70C7586ACDA27A1FFC0C7AEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 70EEC63C3D1175FD705583F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBoundsConstrainer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp"; sourceTree = "SOURCE_ROOT"; }; 70F0A80A99565603FECCF39D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 717C583F454C2AF7BAF710A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ArrowButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 71B6F45D512F8B8D802B1927 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; }; 71D4E1218CF09450B41469B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../../modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; }; 71D588CCC35F0C1A5A0E9E3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; 71D7F3CED9D84ECF00E3C7DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; 71D8C3F48801BEF5DB86B619 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; }; 71EA769D5757AB3B16E5E6E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7224FBF6C8769342A0E3AC71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; }; 732EB7C9CF8E817B7239DBA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; }; 7402FA767F4FD9CCD3DD1578 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 744475CFFBA91FDA03DDF659 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniserFunctions.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 74AB579ADDC7C355C5704A16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; }; 75228523BAA6F029F315E6F1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; 754A3F88F55E0FB7F179F2E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; }; 755B3410E5F1D6CD7CA350E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 774896BADE9613608E2A1EFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 786ABCE38FCC63E58ED44C5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_android_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 793CDD14387F49E8757B9042 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTree.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.cpp"; sourceTree = "SOURCE_ROOT"; }; 79A4F1CF3FB5D20104693598 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; 7A6E2A815D9AE276CF064A24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemTrayIconComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7A704BB75CD29EA20C349CDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; }; 7A969F79FFA4031B868F9EED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; }; 7B78D4684FE1D74EA847C1B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; 7BB92A7F312D9DA6AA53FAC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 7C019D56F09C3415D36A0058 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7C8D639A2FC3EA14709367B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C91591CECC16FC22329ADB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C9FE884EFA2EF696132B4D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathIterator.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; 7D41725B59E3415350C8E035 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; }; 7D87E3CB6613ADCE674B00BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 7E6FE81AB4D5B08FF0F4E8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; }; 7E8133ED13638E1D0C6F849F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; }; 7E9061B22520E892C910ECC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7EBAA8C6B6447AC1707EA1A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; 7EE080AF681F1D927DF35B95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; 81A30FE08E3703C49D5ECC93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; 8215524ADDC78289AD8BD4CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; 822342F0C44B761EAB020F86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlElement.h"; path = "../../../../modules/juce_core/xml/juce_XmlElement.h"; sourceTree = "SOURCE_ROOT"; }; 8288AF688CC74640DDA9309F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; 8299092A070FB3E459760F8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LocalisedStrings.h"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.h"; sourceTree = "SOURCE_ROOT"; }; 832D1429ADEE1B07AB3693A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; 83F74BA834946705EB9ED79C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 8414F7B17DA39B4D0B4C3739 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 84F1747F90732DE67C601E3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; 85CC7C10F36E6A615CF24289 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; 86152CB848C36CC25014D020 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; }; 86A5EC73BF65BF9D75A87BD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 86AE81E813B7FC9D59B66C05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; }; 86ECCFC606602CF42A755A8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; }; 8894A48D347FE788EFD7D0AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; }; 88DA5DAE40649E777AD45ECA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; 895273CAD9B1B37100C11B0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; 89898A337D18F63C9DDE1AEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 898C4B2D036C170A6ED46DD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; 89A3C346A8D9173D9CBDD088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; }; 89C44D65C6EA486543A139E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; }; 89F164CF6D809DD8AB8FDB55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; }; 8A3F6FFBE098968DC1C4538C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BA63270C9EBFE66AF17E7EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BEBE3E3D47AD3E8AAACF7BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; }; 8C439BE182790867BCC9ADFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; 8E018B63249825F4D00DEB6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; 8E07428942BF09DB0CC43EE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 8E1A22B596E70DF1D0C15F8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; 8E3F7589FDC16A7DA986FC42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 8EA982741224B1BF1BB840B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 8EED918F1D3876E4EB17F5A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; }; 8F6E58F2C5CA9D3C6DFEDDB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; 8F92FD719B301B68F4945EA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PlatformDefs.h"; path = "../../../../modules/juce_core/system/juce_PlatformDefs.h"; sourceTree = "SOURCE_ROOT"; }; 8F977FE20118240233D8E05E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTreeSynchroniser.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h"; sourceTree = "SOURCE_ROOT"; }; 8FA331691E39F5D8FB0DCDF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 8FBE4F804ECCBADAA37592F0 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_extra/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 8FC7BFF093D665F8178EC297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_events.mm"; path = "../../../../modules/juce_events/juce_events.mm"; sourceTree = "SOURCE_ROOT"; }; 8FE02C7AD75EE732A416DA8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; 90CFC8BC9D8A156A512D2A39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentMovementWatcher.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp"; sourceTree = "SOURCE_ROOT"; }; 9132D1324A6D6D049C9B2FFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; }; 918FA23368FDE2ECDDC1CD08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseCursor.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp"; sourceTree = "SOURCE_ROOT"; }; 937C0CF5DC3FFF6161D7776D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 939EC86DADE3927918AA327C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 93D1FA25103C27AFCCA1AAAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AlertWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 942E454B72BC4A6CF702F2B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../../modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 94852FE71706851643C6BDE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 956BE6001A359C423014CED7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 95FFFE6A27ACBB4E28739E88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinkedListPointer.h"; path = "../../../../modules/juce_core/containers/juce_LinkedListPointer.h"; sourceTree = "SOURCE_ROOT"; }; 966BC35C454118B1B895436D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; 971270DAD06B91F5B156C362 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPool.cpp"; path = "../../../../modules/juce_core/text/juce_StringPool.cpp"; sourceTree = "SOURCE_ROOT"; }; 97BFE20948105F757379B4F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; 981D4316CDD5076577509386 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 984AA2236CD860A916ACF57E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MountedVolumeListChangeDetector.h"; path = "../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h"; sourceTree = "SOURCE_ROOT"; }; 988BF5A923D08778EAFA524F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../../modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; }; 98B2591FE72E0B3D259F332F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LocalisedStrings.cpp"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.cpp"; sourceTree = "SOURCE_ROOT"; }; 994C767AF66B2C4731EAF528 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 994F654E220C76091B1672F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; 99FBA3CCFA443DB353B07F71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; }; 9AF8A6A41A7FFACC570EBCF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; 9B02109FBEEB89243D72FC11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B0ADC4932AEE1AEDBAAB8AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B5E2905BAEE2A1E7B7657AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringRef.h"; path = "../../../../modules/juce_core/text/juce_StringRef.h"; sourceTree = "SOURCE_ROOT"; }; 9CBEE085CF47C89A93F2783E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 9D0323FECB030B06FBD0F627 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; 9EDBF1BC8604795A1B0774C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 9EF2F14290768DC26DBA6149 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; 9F3BAC34BBE550826A0C2B4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; }; 9F994395393E0BFB8A320B04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../../modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; 9FBFACCA56589CDCC3D78F0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadPool.cpp"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.cpp"; sourceTree = "SOURCE_ROOT"; }; A0816F5D3CB1D0509C714252 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V1.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h"; sourceTree = "SOURCE_ROOT"; }; A10311375CB3203008B0DD24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTreeSynchroniser.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp"; sourceTree = "SOURCE_ROOT"; }; A1637DEBD3438ACB0D7F48E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colour.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colour.cpp"; sourceTree = "SOURCE_ROOT"; }; A16B3D0EA58919EDAEB08792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseEvent.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp"; sourceTree = "SOURCE_ROOT"; }; A16DA9030A96B26C6BF52FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; A17E8E8081DF2A399C206DF2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; }; A1C2A2081FDEF1CB6DB1E1BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../../modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; }; A20C7B40F6C5309CBEC5038E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; A29400BAA8E7CD1D1CA48C79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; A2E15C0836AF048130C893F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; A387B8D5928ABA707B55736D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; A3961F3261459774B65EBD3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; A42FDF7379A2708B3726B0BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; A4C303DC411E19BA54A10871 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; A507DE8ED0DFE58D8443F1D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A53847EDB5D843028F3F1938 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPress.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h"; sourceTree = "SOURCE_ROOT"; }; A53EADE9B0E95059589408D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; A546FAE114D127B368A631D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; A570C960A1D5C3F9E50A928D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; A5AFA37677301D3BEFDEB596 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DeletedAtShutdown.h"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h"; sourceTree = "SOURCE_ROOT"; }; A5E748EC8CB636CEBF7BA497 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; A74B522F55C871C8C41E253A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableBorderComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A75D66A07D6443E350214CC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; A7BF2E0EF7E381B811ED7981 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; A7F0F0269FBC2B91DCB49989 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Network.mm"; path = "../../../../modules/juce_core/native/juce_mac_Network.mm"; sourceTree = "SOURCE_ROOT"; }; A829611659CB4BDC11F0B649 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_File.h"; path = "../../../../modules/juce_core/files/juce_File.h"; sourceTree = "SOURCE_ROOT"; }; A85BC2CE425BF6058D12702A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; A88106868D7BACF251D9EAA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPDecompressorInputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; A93E36A200F473B766F6A8BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; A93E7F99453C2CD22B7B7115 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; A9CCD637A179CD1BA7A27028 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A9DFB028B3E73E65E1407098 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; A9E35E85D16F32AD3EA135BE = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; AA75E89A148ADF8C55671CA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; }; AB5FD54FE20E3B8792AE7601 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; }; AB625562B978102C10FD5311 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; }; AB7582784F8607123662C3EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Time.h"; path = "../../../../modules/juce_core/time/juce_Time.h"; sourceTree = "SOURCE_ROOT"; }; AC0B866AA2C5F577AA221143 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; }; AC488F0777290DB214E6E937 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Misc.cpp"; path = "../../../../modules/juce_core/native/juce_android_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; AC975C4D82A4C525F6D879A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; ACD09DE112FDD1028AC1E11B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; }; ACD0AD8EACA79E8A6273413E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; AD0FE0F54DE76E0C35A3B692 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Clipboard.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Clipboard.cpp"; sourceTree = "SOURCE_ROOT"; }; AD1F1A9815D8660FA0305028 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDiff.h"; path = "../../../../modules/juce_core/text/juce_TextDiff.h"; sourceTree = "SOURCE_ROOT"; }; ADC3125F0DCD2924ACB173EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImagePreviewComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; ADC4B846B6B3C43868E7E739 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; AE8492E6A10C324142D09EA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; AEB923D05C620EF9E927B48C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Javascript.cpp"; path = "../../../../modules/juce_core/javascript/juce_Javascript.cpp"; sourceTree = "SOURCE_ROOT"; }; AF388A883A899EBF58A39D68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; AFED7B4CED7DCA33DEA5F546 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; B05CF8A5EE33A7062E10DFD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; B0644268B39736787E910714 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInactivityDetector.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h"; sourceTree = "SOURCE_ROOT"; }; B0D3494829C70D3D31E7195C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; B12282D4958ECC33E33301E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; }; B14210A622924919775310DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; }; B1557FE77AC7D7FBF5A745F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B16933E10DCBA3CC20ADFAFF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; }; B2485AFF4249D9C40B9B54CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; B2650D0AA7710D3C2627238A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; B2C3D53237084A8C79EE8B16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; B2EE22875A0E4C2679EFD3CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; B3978067F1432E1A2618A5DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = "SOURCE_ROOT"; }; B39A0E62D1C43A61243F6864 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; B3AE3983352E66690C865088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; B3CEFD554B22D2764327CC70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; }; B4A651618E07F64027C2DB75 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; }; B531D38613FDEC368336A51E = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = "SOURCE_ROOT"; }; B5880B8DE2B7362EF263D82A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; }; B5D117435CCB80BF33D4AD00 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; B63040F76DC9E9F5256AC022 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SelectedItemSet.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h"; sourceTree = "SOURCE_ROOT"; }; B6AC99C26F679771A2F942B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; B6C28B2DAE4802FA291E3487 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; }; B6C345F16BFAD37B64A5605A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; }; B78154B28539A2E8152D2B9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; }; B7F363708A0CDC05D9C04876 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; }; B86F88CBFF4E577BCCF8D620 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; B8E7EC57DAC2DE65CFEC21E0 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; B909BE26785040CF82533E80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; }; B93ACCE3F29334143039311C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; B9BC9B5BC286D2C9356DDF47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; BA4ECA72D6EADF487141684A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../../modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; BA5EF35337DDE160BCA69BE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SubregionStream.h"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.h"; sourceTree = "SOURCE_ROOT"; }; BA92F6D1BF35CF6623B0BD1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; BAC8A1406F49B48E85DBF2E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; BD8335C336E988FF37044F21 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputSource.cpp"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; BDA5AC3B903F05E4ACBD16DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; }; BDCB1657E429C9F03CB17827 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; BE2B2B455F814E0C076837C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; BE4B29F0D308D1BA1046D8DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; BE72D524BA45BC24B3264F2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; }; BF2D0795D820910CCB587033 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; BFF18A9C80EEDD74D0223EEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CharacterFunctions.cpp"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.cpp"; sourceTree = "SOURCE_ROOT"; }; C001B0F67BB17E32A3BC8F92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; C016810AF5F23520BE9EBF2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; C1980330512BAADDA1CB0D24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; C1A8DCB1BD40331EFC186CF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C1CC6D2EB9A261B4D2B926BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseEvent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h"; sourceTree = "SOURCE_ROOT"; }; C2012B18C8652969617417E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; }; C22BEA19FDBE55F5AAFE9D36 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; C234FBE6290024F51478686E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; }; C26182D37D8E31BD85FDEF5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CaretComponent.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C2F65CD24CD207EFD5FAF7F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; C3AC4696140DE22682732FB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; C40948D9BB7965E367551251 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Line.h"; path = "../../../../modules/juce_graphics/geometry/juce_Line.h"; sourceTree = "SOURCE_ROOT"; }; C4272B1ABE77520CD6E55EB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; }; C4788802A0C1A2908645028B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; C511170BCB0784C896826010 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; C5401AF900EB8056416C1294 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; }; C546B9AC32E553D5969B2537 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_events/messages/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; C56DB2DC67E1DBA6C29044CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; }; C626FA20C4D021076A4B943E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; C6313E766ECDCE48435BA5A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; }; C63DB03ADC0A6E3C45DD88C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; C64E52A86F2984D4A5F82EF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeTime.h"; path = "../../../../modules/juce_core/time/juce_RelativeTime.h"; sourceTree = "SOURCE_ROOT"; }; C6A1B4D93C11BA29F36801E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BorderSize.h"; path = "../../../../modules/juce_graphics/geometry/juce_BorderSize.h"; sourceTree = "SOURCE_ROOT"; }; C6BCFCD2732C7153C33B6168 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; C71BB293CEF65605741E0CDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; }; C743089A221B553DA6B45F65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; C75917573F92864DA80C9A11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; C76F648E207E0B0E8E98C8B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; C794DBEF09A83E199223D205 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_graphics.h"; path = "../../../../modules/juce_graphics/juce_graphics.h"; sourceTree = "SOURCE_ROOT"; }; C79D5D6DDCC88F29C3616761 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; C7A6585C8F7FB3EF78837563 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; C7D88B24A0DC64FDD1EE28FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; C7E5E361633310B5C84C86C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileFilter.h"; path = "../../../../modules/juce_core/files/juce_FileFilter.h"; sourceTree = "SOURCE_ROOT"; }; C86288867D1603D982FB9AC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_ComSmartPtr.h"; path = "../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h"; sourceTree = "SOURCE_ROOT"; }; C88CAA67E7AD9181F1C9E3CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; }; C894801E6F257C0E84E5C03F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; }; C8AF9CABB9019702BBAE46AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; }; CAA3289777033409B1E9050C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; CAC058A2D753BB9E0559D8EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadower.h"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.h"; sourceTree = "SOURCE_ROOT"; }; CB568736EE6D12C909B6A8F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; }; CB713D4A63E08276975B7639 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CB85029BEDE10DB68C5BAA21 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; CBE147D9B86A9F69A7CCEC3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CC95B7798FE5B9D685B3573D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CD87ECBCB1347FDB040D63FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; CD9D30D3D61F095124F6D916 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CE290D98DCBBDC902406E73F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; CE68E38ECB2AB54F08F79917 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; CF9F9D13FD1B7ED219092643 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; D06CEB2AEDFB98E1406E06F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; }; D071023526C8D2E38D1C95C5 = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; }; D0B7D5B46558A7393B43C79B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarComponent.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h"; sourceTree = "SOURCE_ROOT"; }; D45C31982C2D140B6B64D1C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; D49594C439C67202647804D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../../modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; }; D4ED28003B9120E85F5CD490 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; D4F8F05BFF087B2BCA01CB71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MACAddress.cpp"; path = "../../../../modules/juce_core/network/juce_MACAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; D5054A3D5EBDC47D51FC99F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D53B158241A875303FC52D8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageManager.h"; path = "../../../../modules/juce_events/messages/juce_MessageManager.h"; sourceTree = "SOURCE_ROOT"; }; D5AAA258357323FD8DBC7B08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; D624E1F31ADE1C718E97A3C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; }; D6BC0BD9CD8133D8634FFAB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; D711FA513F8E9F696570DBB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; }; D735FA88C8465C02D4217A39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; D882D6E64CEFE8FFE435EF40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; DA64460418AFD14930104FEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../../modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; DA8CFA399CD27524DB69AD78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; DB57D9360A4FA63286A9E305 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; }; DB995735BEC8A6CCA141BEAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; }; DBBD318E15A635AACB31E1DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPosition.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h"; sourceTree = "SOURCE_ROOT"; }; DBE5789816F028CE53FD3EB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; DC4EE2A66A86B99C8D9B0068 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; }; DCCDA2F20A439FE5044946DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AnimatedAppComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; DD10783090721EFE21E4FAA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; DD374C28FF1CF5F121C3C6E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; DD6356DF25DE4F39BFB2BD87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; }; DD7B2584B0C91BB4124A397E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; DD7DC4C53F386AD914887EDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPool.h"; path = "../../../../modules/juce_core/text/juce_StringPool.h"; sourceTree = "SOURCE_ROOT"; }; DF82F535AAA1380C3213FF03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; DFB1FF7E047D9883528DECF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; E02684265B013C418CC7A242 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; E02BE252CF20E4FABAC9A7B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; E04A33E4F8847DE1E285C089 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; E143BF0720845D8A25BB16E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; }; E1592FAB1A9F6FAC33F051BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; }; E1774E60A49BD0CC9F7DB6B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; E281E7EA009C44FA607DAFEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; E2C9F5675F700544E40B46C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E31FA0995B22027AEF89904B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; }; E3273B696D8398C56B0F1A40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; }; E41E6A613E45920223A133F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; E422C589FA0328C35A0549FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; E4AF8704D952EA14B38CA782 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; E536D2E0E822CA257FA97875 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; E58624F033F218AF36C7F9FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; E597DB183789D09B45395742 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; E597E0071A0752D8B87C0C7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; }; E62053E448B91F1A968D6B0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; }; E6CD70420EF8F0E3CAD9ED5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; }; E7405CD3B6CF257A84E60DB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; E7CEB65B72C024546E5927A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; }; E80A7D62B2B3F4BD2CD3F170 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; }; E830FDCCA2799244C53AEB8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; }; E833133B78833DA0D34F48A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; E862612C6909A6188FBEB8C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; }; E8C858BC5875BA7F76E62B28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; }; E8DCBADAA3B789839C797F82 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; E945ED94EAF101B29713C322 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; }; E96CBEBCDABA3EA741C4C2EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; E9904E84AFCF3AB39B03BAA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; }; EA433D25CF79DF86FEF978D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; ECC4847BBD2AC72116506F0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; }; ED872E47438BBE6325FE78F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; EE785DBFA288EFA2E7AB2108 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; EF28BA2B5E24F4749F732230 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; EF3A7A1A871BAB32EA1B46EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../../modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; EF932865774E86525CE7FC55 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; EA398D9C544440E06637C134 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; ED577465CA22A65861192A35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; }; EF54929F7151858D8FF8107B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; EFE00478AEAFE39D81B0E59D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; EFE65E031B01332448C2BE5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; }; F003AC63C800E3F090BF217F = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_core/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; F08B148BBAEA45BCDA3F066F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; F0A440A64636CA5008C1D76A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; F21F13BF684528EB7041BD67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; F26B1DF1D28880AA0099B36D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; F2AA4EBDE6E999C033A8CA65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; }; F2C96C26ACDFFE9D480D5561 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; }; F3327A4ED4197E583711EC38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; F35CA3BED53A2146B7623ECA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoableAction.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; F3F9135662EDBBC14EBC448C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; F420591CACE7056F78000039 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; }; F45A8AE5F6E6FA5F6AEC8D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; }; F4AB976B460420C5C94E6E9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; F5047DA45BA2ECE24D308403 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LiveConstantEditor.h"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h"; sourceTree = "SOURCE_ROOT"; }; F58C62E4CFF820B85CEF0A9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; }; F59A5377B8D4476B34214F98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPressMappingSet.h"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h"; sourceTree = "SOURCE_ROOT"; }; F5D2E9784191EC7F2DFA3949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; F5FD842A428369A565BC92E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; F69E6E1AC446B803B6C6A6B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Font.h"; path = "../../../../modules/juce_graphics/fonts/juce_Font.h"; sourceTree = "SOURCE_ROOT"; }; F6B44EB4315A24F4359BF2B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPairArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringPairArray.cpp"; sourceTree = "SOURCE_ROOT"; }; F6CA8CB0E2135154E38E9707 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; F78633365BAD28DA5864C502 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; F83EC8D59072A524F5DA56B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../../modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; }; F86158611AE1654F4BCAFC47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; F8FDB57B9F26F2B0582CBEED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; }; F92040E5407E1B24B9D740C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; }; F93E87E35290A40DC20A4D44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; }; F9816E9564DF0FD05C77B845 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; FA3161F4692D54C87001BCD7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; FB1A1B08CB724305EBC233A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; }; FB3723E1113ED13B4B8DF09A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; FB845B6C46248D66EB02A862 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; FB9E2985FBE36494513C83A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; }; FC00A16A6756DBFE0B875F5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; FC47B303DF1BE68BE78F9079 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; FD5D001673478C39B79A9C6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BigInteger.h"; path = "../../../../modules/juce_core/maths/juce_BigInteger.h"; sourceTree = "SOURCE_ROOT"; }; FD7E5A4B8C6532BD458B2A94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; FDDA86C3FCCC3C74F7CDA53D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_core.h"; path = "../../../../modules/juce_core/juce_core.h"; sourceTree = "SOURCE_ROOT"; }; FE39F19585CBAE3EE247840C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; }; FE8B93BA3F56CCC0BB37A5C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; FEA9C3FC8BE313C619C3D195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; FED2586B3C7EA1BBA5512D58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; FF06CDF5B9CF3DE2EA741D54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; FF263A986694A1ADAA51D156 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; FF49DBB348CFFF3F396FB712 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; 39BDB517F5C4ED09B374411D = {isa = PBXGroup; children = ( B3978067F1432E1A2618A5DB, 0EDDB91E8D84944C3EBACFFE, 0784B69B6377F90FB264DCB0, ); name = Source; sourceTree = ""; }; 23A603C0DAA7E2E423A4123A = {isa = PBXGroup; children = ( 39BDB517F5C4ED09B374411D, ); name = HelloWorld; sourceTree = ""; }; 53B7ECB896E5903DD2493E14 = {isa = PBXGroup; children = ( F92040E5407E1B24B9D740C2, 3BE1A6F6B461F08095CABAC9, BFF18A9C80EEDD74D0223EEC, 5D8B625E558414B158ACA721, E597E0071A0752D8B87C0C7A, E62053E448B91F1A968D6B0C, C743089A221B553DA6B45F65, 898C4B2D036C170A6ED46DD0, E02684265B013C418CC7A242, 293CD4C7F50623F81F3D6297, 98B2591FE72E0B3D259F332F, 8299092A070FB3E459760F8C, 2E621C1E7F2E9FC6A6D14282, 52D7E72C26E3D1589A6A1BD4, BA4ECA72D6EADF487141684A, 408110CA0AFFDF83F3AF497D, D4ED28003B9120E85F5CD490, F6B44EB4315A24F4359BF2B5, 1D68491BDF0E63AC125D454C, 971270DAD06B91F5B156C362, DD7DC4C53F386AD914887EDA, 9B5E2905BAEE2A1E7B7657AF, 03BB1C54D9DEDDAB20B854AD, AD1F1A9815D8660FA0305028, ); name = text; sourceTree = ""; }; C3BF0F36B4C2A20B594B2C17 = {isa = PBXGroup; children = ( 5FCCDEEE0E7A1AD4179D1E1D, FD5D001673478C39B79A9C6A, 403E7E9949CFE8BD73DDD909, AB625562B978102C10FD5311, 39F7F5DC827150D2E57F1DBF, 0B62C1B2DFE2EE1C8E1EB5B6, 26341A8D55A799AC0ED8B33F, 38E5FF4A3CBEA8C42D9F14CD, F83EC8D59072A524F5DA56B0, ); name = maths; sourceTree = ""; }; 283F53CC2F8E672B54F90A31 = {isa = PBXGroup; children = ( 60DDA3B2D06C918647F0F2FF, AA75E89A148ADF8C55671CA0, C5401AF900EB8056416C1294, 1F16E8AF03971A15157AD981, 62733AC6CAD0F79BEAE0CF4F, 09A3E1630BFC67C63AFEDE3A, 46BD0A7BCF4C608DB94285EC, 0B92355966B36E2B913BC8EE, EF28BA2B5E24F4749F732230, 601874CF9435F18E7B69AE6A, 45905746CA7C3BFE98B583C9, 89F164CF6D809DD8AB8FDB55, 6C556B58616171CC70488F0D, 6615B376201BA6A338D7177E, ); name = memory; sourceTree = ""; }; 7582B2AE14482E2927B3AE2F = {isa = PBXGroup; children = ( 02123F620ABB8F19FCE4E7E5, F5D2E9784191EC7F2DFA3949, 068349E735D107BE09BEC641, 348CDBF399D99B719511B313, E945ED94EAF101B29713C322, 8288AF688CC74640DDA9309F, 6FD7AFA0B4E7F4E848E33737, B5D117435CCB80BF33D4AD00, 95FFFE6A27ACBB4E28739E88, 1B799004320846B17A0D2820, 07B9E81DB1A4F13B7FF54FD4, 453B6D80B6389BE1341A0A29, 632A6E49E7D869A9744A4491, 675E6456CBD23C87B8F14544, FF263A986694A1ADAA51D156, B6C345F16BFAD37B64A5605A, 5E38635277CA0767A3B1A229, E04A33E4F8847DE1E285C089, E6CD70420EF8F0E3CAD9ED5B, 7A969F79FFA4031B868F9EED, A17E8E8081DF2A399C206DF2, ); name = containers; sourceTree = ""; }; BF229D931FB1A5222CD9DB43 = {isa = PBXGroup; children = ( C3AC4696140DE22682732FB6, 61E66D9A002421AAA36E6CA2, F93E87E35290A40DC20A4D44, 65B0A35F0ED651E60556A0E4, 7C91591CECC16FC22329ADB8, 8EED918F1D3876E4EB17F5A5, E7CEB65B72C024546E5927A7, 6B625D967F13EC4AFB7BADCA, DA8CFA399CD27524DB69AD78, 1DFCB49A7B79D79376629528, E830FDCCA2799244C53AEB8F, 71B6F45D512F8B8D802B1927, C016810AF5F23520BE9EBF2E, 832D1429ADEE1B07AB3693A3, 62DF24F1C7E14730CDA3F27B, 0CE43A8B78FB46CE63C0AB6A, B6AC99C26F679771A2F942B5, 9FBFACCA56589CDCC3D78F0E, 65DBA30ACD7C6156850F1F4E, 6603F93CB38F0E7BEB779A9D, B4A651618E07F64027C2DB75, D624E1F31ADE1C718E97A3C1, ); name = threads; sourceTree = ""; }; CFA0FE5274773CA97B9EA5A1 = {isa = PBXGroup; children = ( B5880B8DE2B7362EF263D82A, 8E1A22B596E70DF1D0C15F8C, 15569873F24C4157977C8D9F, C64E52A86F2984D4A5F82EF8, 8215524ADDC78289AD8BD4CE, AB7582784F8607123662C3EC, ); name = time; sourceTree = ""; }; 120D356AA058212F80C97EAB = {isa = PBXGroup; children = ( FC47B303DF1BE68BE78F9079, D882D6E64CEFE8FFE435EF40, 5457E4C7D67E767CCD8B0964, A829611659CB4BDC11F0B649, 1473903057B414B186B8D6A7, C7E5E361633310B5C84C86C8, BE2B2B455F814E0C076837C2, 3944F07DE8E0975B663BFEB8, D6BC0BD9CD8133D8634FFAB7, F26B1DF1D28880AA0099B36D, AF388A883A899EBF58A39D68, BDA5AC3B903F05E4ACBD16DC, C79D5D6DDCC88F29C3616761, 1CAE226BEF2243B1FA8CC646, F5FD842A428369A565BC92E4, 83F74BA834946705EB9ED79C, 1657734A03E0F21166FAE9E8, ); name = files; sourceTree = ""; }; 2AE9B24F8D2F81FB9B7FF4C7 = {isa = PBXGroup; children = ( 21A118094F4A8DC6E9343AC6, 2206F8DB2D2D3042FFB24820, D4F8F05BFF087B2BCA01CB71, 71D4E1218CF09450B41469B9, 0A421597B03EA9CA355D8BD1, 6B252EAC72CB94D5DC06C284, E02BE252CF20E4FABAC9A7B2, 1BF703172DA6AC2179913394, DD6356DF25DE4F39BFB2BD87, 3A1128BBCB04C3DCE2E5D37E, ); name = network; sourceTree = ""; }; D46664D5E1C590C441D4F80B = {isa = PBXGroup; children = ( 0DBB48BEAC0B38D509A6ED6F, 0E0B382367017DA9380D3C61, BD8335C336E988FF37044F21, 5E716763BE04772CA06592DC, 7E6FE81AB4D5B08FF0F4E8AF, BE4B29F0D308D1BA1046D8DC, 2F1A2B5F25C3F2502932EFF4, 3E65BE3F701901EC447327AE, 1EECC1DDB24892ED2BE2FC44, 5C49EBA49810FE7840039EA9, E1774E60A49BD0CC9F7DB6B8, 956BE6001A359C423014CED7, FE39F19585CBAE3EE247840C, 70C7586ACDA27A1FFC0C7AEE, BA5EF35337DDE160BCA69BE2, ); name = streams; sourceTree = ""; }; F87D6E9F1E5FE32A55A2A8DB = {isa = PBXGroup; children = ( 2026B0F45584BD5BECC4EFBA, 1A8917A61F4F6E9766564420, 3832110FA8DA58E650AB6F9E, EF3A7A1A871BAB32EA1B46EF, ); name = logging; sourceTree = ""; }; A18C218B66BAD36C1F6FDB5D = {isa = PBXGroup; children = ( 6816BB0D62EC676409B3587F, 8F92FD719B301B68F4945EA9, F08B148BBAEA45BCDA3F066F, 41535CB61E936ECEBB04FFAC, EF54929F7151858D8FF8107B, 966BC35C454118B1B895436D, ); name = system; sourceTree = ""; }; E3BC172EB1F1CA22B436FC42 = {isa = PBXGroup; children = ( 498778ED99DF1BA68A6E3A18, 46393FE4FE6D8683444CD1A3, 32A77D14749535446A0BC825, 822342F0C44B761EAB020F86, ); name = xml; sourceTree = ""; }; D959EACECE951B6D139A99C8 = {isa = PBXGroup; children = ( AEB923D05C620EF9E927B48C, 99FBA3CCFA443DB353B07F71, C4272B1ABE77520CD6E55EB7, ECC4847BBD2AC72116506F0E, ); name = javascript; sourceTree = ""; }; D0CB81045FF79BEAD1744CAD = {isa = PBXGroup; children = ( E8DCBADAA3B789839C797F82, 3D32372B5CC311AA696124D2, A88106868D7BACF251D9EAA8, 8EA982741224B1BF1BB840B6, F2C96C26ACDFFE9D480D5561, 8E018B63249825F4D00DEB6C, ); name = zip; sourceTree = ""; }; 9AE02D48833B87EB32478790 = {isa = PBXGroup; children = ( 85CC7C10F36E6A615CF24289, 0C36123881F7A4B6A144F272, ); name = "unit_tests"; sourceTree = ""; }; 47B575A04992E9EA22045F72 = {isa = PBXGroup; children = ( 17697EA857D23FAC8FF46868, 4A5ED88CC2ED6ADD8A5B102A, 35BD72D236BE7ADC019B5564, 6DE47E2E070BC5173F0985BB, 79A4F1CF3FB5D20104693598, ); name = misc; sourceTree = ""; }; 95B8EA2C19F69EB464681FD5 = {isa = PBXGroup; children = ( 7D87E3CB6613ADCE674B00BE, C7A6585C8F7FB3EF78837563, AC488F0777290DB214E6E937, A85BC2CE425BF6058D12702A, F3F9135662EDBBC14EBC448C, 786ABCE38FCC63E58ED44C5B, 47D12441679F0062EB7C96AF, 0C5169FC4BAB96B2F16BF5B8, 942E454B72BC4A6CF702F2B4, 5C4A0785E529A72663FC155E, 23925ED31BD8E2D82FF86A31, F78633365BAD28DA5864C502, 1EC7132F648E537E2B1F95EC, 68CC5DF188B4F8D9BC4A397A, 9F994395393E0BFB8A320B04, A7F0F0269FBC2B91DCB49989, 89C44D65C6EA486543A139E9, DA64460418AFD14930104FEC, 6A8D0F24F0A1F95A52845506, 04A6FE27FC63E4D27E857CBF, 9CBEE085CF47C89A93F2783E, 158F40026FBDA4EE9F90CF02, C86288867D1603D982FB9AC9, 994C767AF66B2C4731EAF528, 6108C64B7B0AD2CA64F30DC7, 14F44BEA5F54F7E064122CC7, 295439C55D8A711959ADABD3, A75D66A07D6443E350214CC3, ); name = native; sourceTree = ""; }; 077C855D265E61FB93F96107 = {isa = PBXGroup; children = ( 53B7ECB896E5903DD2493E14, C3BF0F36B4C2A20B594B2C17, 283F53CC2F8E672B54F90A31, 7582B2AE14482E2927B3AE2F, BF229D931FB1A5222CD9DB43, CFA0FE5274773CA97B9EA5A1, 120D356AA058212F80C97EAB, 2AE9B24F8D2F81FB9B7FF4C7, D46664D5E1C590C441D4F80B, F87D6E9F1E5FE32A55A2A8DB, A18C218B66BAD36C1F6FDB5D, E3BC172EB1F1CA22B436FC42, D959EACECE951B6D139A99C8, D0CB81045FF79BEAD1744CAD, 9AE02D48833B87EB32478790, 47B575A04992E9EA22045F72, 95B8EA2C19F69EB464681FD5, F003AC63C800E3F090BF217F, FDDA86C3FCCC3C74F7CDA53D, ); name = "juce_core"; sourceTree = ""; }; DB193F277014CB2D4EED9B10 = {isa = PBXGroup; children = ( F420591CACE7056F78000039, D49594C439C67202647804D2, 793CDD14387F49E8757B9042, 3123FA92E774DD0E4788E9FB, A10311375CB3203008B0DD24, 8F977FE20118240233D8E05E, ); name = values; sourceTree = ""; }; 3F1B3F5816792824A8FED9CF = {isa = PBXGroup; children = ( F35CA3BED53A2146B7623ECA, 1A849B3BFFE1598017793994, E58624F033F218AF36C7F9FD, ); name = undomanager; sourceTree = ""; }; F27B1321E6B098E31C61FD54 = {isa = PBXGroup; children = ( E3273B696D8398C56B0F1A40, DC4EE2A66A86B99C8D9B0068, 89898A337D18F63C9DDE1AEE, 1259079CB2A8907577BBBAA3, ); name = "app_properties"; sourceTree = ""; }; 2D4BDB90369FB93DE77234CD = {isa = PBXGroup; children = ( DB193F277014CB2D4EED9B10, 3F1B3F5816792824A8FED9CF, F27B1321E6B098E31C61FD54, B8E7EC57DAC2DE65CFEC21E0, 5F55D2FE7338877E1CDD4B45, ); name = "juce_data_structures"; sourceTree = ""; }; FF92A51DE50343C6AA33A0DB = {isa = PBXGroup; children = ( C4788802A0C1A2908645028B, 016AB5DF7206562FA4B48A81, A387B8D5928ABA707B55736D, E862612C6909A6188FBEB8C8, A5AFA37677301D3BEFDEB596, C546B9AC32E553D5969B2537, 86AE81E813B7FC9D59B66C05, 29610D1C68DD1FA2043A0D95, 1B9D255022E9F460E5F710C5, 6501D18FEF031C7FEF45F39E, D53B158241A875303FC52D8B, 984AA2236CD860A916ACF57E, B3CEFD554B22D2764327CC70, ); name = messages; sourceTree = ""; }; A9B3363B5E302799D0945C6C = {isa = PBXGroup; children = ( 8414F7B17DA39B4D0B4C3739, C894801E6F257C0E84E5C03F, DBE5789816F028CE53FD3EB4, 62B84090765C713CC4250BB6, ); name = timers; sourceTree = ""; }; A045CC1D9919072B85C45336 = {isa = PBXGroup; children = ( 536EB9664EDB02A4CBF9BD28, 2575944C94EF083E2CBDBFA1, 0C90578962B82B1AE222578E, C2F65CD24CD207EFD5FAF7F9, B78154B28539A2E8152D2B9C, E4AF8704D952EA14B38CA782, E536D2E0E822CA257FA97875, 6B1B6046C54E082A9E25D69C, ); name = broadcasters; sourceTree = ""; }; 67DB973FF5A1FFA8D81AA280 = {isa = PBXGroup; children = ( CAA3289777033409B1E9050C, 1818AAD83B5C0FC5B322446F, 3824684DA7C61AA29E386158, 309B10A91B0698EC749802D5, 71EA769D5757AB3B16E5E6E6, EFE65E031B01332448C2BE5E, ); name = interprocess; sourceTree = ""; }; 21AFBAFF05B76A3121EDCBFC = {isa = PBXGroup; children = ( 219B89271C840E2D7E512612, 4A8C64BB96FB93919DDF2166, A93E36A200F473B766F6A8BA, 8E07428942BF09DB0CC43EE4, 00BB14FB0329250A897855F4, 5B67F01C0BA9323892900AF8, 7EBAA8C6B6447AC1707EA1A7, 1C3E6A1B46D80DBFEE6CF33B, ); name = native; sourceTree = ""; }; C0F8D0D123397FF7AF17F3F8 = {isa = PBXGroup; children = ( FF92A51DE50343C6AA33A0DB, A9B3363B5E302799D0945C6C, A045CC1D9919072B85C45336, 67DB973FF5A1FFA8D81AA280, 21AFBAFF05B76A3121EDCBFC, 3549AF6032831F9553E74467, 08C449B44C89E728A89013F3, ); name = "juce_events"; sourceTree = ""; }; 39D7580AE0D199F462A0411D = {isa = PBXGroup; children = ( A1637DEBD3438ACB0D7F48E0, 988BF5A923D08778EAFA524F, F2AA4EBDE6E999C033A8CA65, F4AB976B460420C5C94E6E9A, 55E627FDBA6A7978821CB281, 4CC331BEE18B3EC4BADF38CE, B3AE3983352E66690C865088, 33BDA746816EE0D0EBB559DD, A1C2A2081FDEF1CB6DB1E1BE, ); name = colour; sourceTree = ""; }; 8090AB4707E33400125CA4C9 = {isa = PBXGroup; children = ( 4FF67CE1DFACAFF545D8E9AA, CE68E38ECB2AB54F08F79917, 51F215744097662A34943493, 34B6C8553DCBD14A2F7207FA, 65FC1A9B2D0CDCD2D0180A17, 60F8D50274C2C6DEA40C13AC, AB5FD54FE20E3B8792AE7601, ); name = contexts; sourceTree = ""; }; 6DD41751A3949FBC19CC8416 = {isa = PBXGroup; children = ( 4E2E741BA1779C70049641D0, C63DB03ADC0A6E3C45DD88C9, 981D4316CDD5076577509386, 3D95AB0F7898371918F9E8FA, F58C62E4CFF820B85CEF0A9A, AE8492E6A10C324142D09EA8, 48D212A6051005FB7A4BC338, 8BEBE3E3D47AD3E8AAACF7BA, ); name = images; sourceTree = ""; }; 39F75EB88C131A0C1E7C5350 = {isa = PBXGroup; children = ( EE785DBFA288EFA2E7AB2108, 659BEDAE6C17DD4FA6B74971, 35CCF611A1FFF0A68FA75161, ); name = "image_formats"; sourceTree = ""; }; 1B141638D452CFF03036C180 = {isa = PBXGroup; children = ( 07064C4F0CA036ABDCF9C708, 86152CB848C36CC25014D020, C6A1B4D93C11BA29F36801E1, DB995735BEC8A6CCA141BEAD, 1F32C178FF93792406789660, C40948D9BB7965E367551251, 3E5B3814C7B1B21431D4F234, 5FE579E53ADAEEDEDF2AA2D0, 7C9FE884EFA2EF696132B4D2, 51A4935D712C05D9C75CDDDF, 8BA63270C9EBFE66AF17E7EC, 6889EF825EA839830C733D07, 3B51C055A70A99CDCEDFA399, 189CC2967B6148BE990281E8, 9EF2F14290768DC26DBA6149, ); name = geometry; sourceTree = ""; }; C8E76BBA092B9546D62BFFE4 = {isa = PBXGroup; children = ( 02FA201D32033D122C04A1B5, 7EE080AF681F1D927DF35B95, C71BB293CEF65605741E0CDA, ); name = placement; sourceTree = ""; }; CBF50CCCB6412B6D1DC75BAC = {isa = PBXGroup; children = ( 1316BB7ACE3F151F3B44A3EC, ACD09DE112FDD1028AC1E11B, CB85029BEDE10DB68C5BAA21, EFE00478AEAFE39D81B0E59D, FF49DBB348CFFF3F396FB712, F69E6E1AC446B803B6C6A6B4, ED872E47438BBE6325FE78F2, 523B09319B14E721921D830A, A546FAE114D127B368A631D9, B909BE26785040CF82533E80, B7F363708A0CDC05D9C04876, F86158611AE1654F4BCAFC47, ); name = fonts; sourceTree = ""; }; 9860A568DF9EDABCEE8B9490 = {isa = PBXGroup; children = ( 373E70565BE10D615B096C28, A16DA9030A96B26C6BF52FDC, BDCB1657E429C9F03CB17827, 1FC89BBE37A0162D7B8A8E64, 2F014FFE6BB6209B7BBBCB79, ); name = effects; sourceTree = ""; }; B3A6498CEE78E75BCCC0DC93 = {isa = PBXGroup; children = ( 56F46591D347CA4272001691, 6421875FDD1DB8F8C322F3A8, 30453B2E00C2367919B4AC25, A53EADE9B0E95059589408D1, 6ED446E76E238A6243800BB8, 65A88D5E8C1F0BE74F05C072, 06EF239CDE579FFC28F65BE2, C6BCFCD2732C7153C33B6168, 4C34CB4DC542D86A193C055A, A3961F3261459774B65EBD3B, 0493323D5A1374BBEFCFE455, 53F3EB3D456B15EF5CC6FC67, A5E748EC8CB636CEBF7BA497, ); name = native; sourceTree = ""; }; 0BD57F3380CCDFE06E36335D = {isa = PBXGroup; children = ( 39D7580AE0D199F462A0411D, 8090AB4707E33400125CA4C9, 6DD41751A3949FBC19CC8416, 39F75EB88C131A0C1E7C5350, 1B141638D452CFF03036C180, C8E76BBA092B9546D62BFFE4, CBF50CCCB6412B6D1DC75BAC, 9860A568DF9EDABCEE8B9490, B3A6498CEE78E75BCCC0DC93, 7402FA767F4FD9CCD3DD1578, C794DBEF09A83E199223D205, ); name = "juce_graphics"; sourceTree = ""; }; 51F1DE322ACA481FA5B3E623 = {isa = PBXGroup; children = ( 37380DEDD5BEE5E9267FA12F, 9132D1324A6D6D049C9B2FFE, 02BD81436ED17F1341E19522, 01D5DC75EA54630B8805AD59, 23B5C7121187E9533B66FFCB, ADC4B846B6B3C43868E7E739, F0A440A64636CA5008C1D76A, 2EC797F05D27994FD0B4F19B, 71D8C3F48801BEF5DB86B619, ); name = components; sourceTree = ""; }; 01EB66B6B2CBE57DEC21DE34 = {isa = PBXGroup; children = ( 1679AB8658094A527E7A2811, 03E4C81E1D323C0CD78DC8A7, 2F5EFAB6DFDBD1661C8D53A9, C76F648E207E0B0E8E98C8B3, 774896BADE9613608E2A1EFE, 26D9D7114D4E9ECBABA9C391, B9BC9B5BC286D2C9356DDF47, 918FA23368FDE2ECDDC1CD08, E597DB183789D09B45395742, A16B3D0EA58919EDAEB08792, C1CC6D2EB9A261B4D2B926BF, 207945846A9C6558F509C745, B0644268B39736787E910714, B39A0E62D1C43A61243F6864, 18F87CFF17A2C8B806B58028, CF9F9D13FD1B7ED219092643, 8FE02C7AD75EE732A416DA8C, B63040F76DC9E9F5256AC022, 9EDBF1BC8604795A1B0774C9, ED577465CA22A65861192A35, ); name = mouse; sourceTree = ""; }; 05CB0B9F5C39B9F9CE569275 = {isa = PBXGroup; children = ( C26182D37D8E31BD85FDEF5D, 0CFAADB1812DF1EFFFE48116, 6CB12AF57587118CCC37BC8B, 1A07D7AE9814E2D42F2B2EEB, 86A5EC73BF65BF9D75A87BD1, 4239AF0A782192683CE4F2A9, 8A3F6FFBE098968DC1C4538C, A53847EDB5D843028F3F1938, 521C8693B71C04C387C178F4, 5B7AF55C74CE6D19A9AC7354, 00FD1194DB59F69CA9DFCFAF, 40A7C1EB6363A8FC4A9900B0, E1592FAB1A9F6FAC33F051BC, ); name = keyboard; sourceTree = ""; }; 47736D14938B4000F6823B04 = {isa = PBXGroup; children = ( 755B3410E5F1D6CD7CA350E0, 75228523BAA6F029F315E6F1, BAC8A1406F49B48E85DBF2E7, 70F0A80A99565603FECCF39D, C511170BCB0784C896826010, FB9E2985FBE36494513C83A6, B05CF8A5EE33A7062E10DFD2, 3B3F316BC1E0486A4FD27686, DB57D9360A4FA63286A9E305, 4543C730A5DA77649C20B6B8, CB568736EE6D12C909B6A8F7, 4A20547D0C763ABB1DE5A9C4, FC00A16A6756DBFE0B875F5C, C8AF9CABB9019702BBAE46AC, FA3161F4692D54C87001BCD7, 3A9E838A0D5461D20726AE71, B86F88CBFF4E577BCCF8D620, FB1A1B08CB724305EBC233A4, 304137C2E24F2CC1863D9731, 00D9EB5B09E980D4A78D852A, 7C8D639A2FC3EA14709367B1, FED2586B3C7EA1BBA5512D58, 3D52A3BB485767A61EF457E7, 8F6E58F2C5CA9D3C6DFEDDB5, E41E6A613E45920223A133F7, 458C003240D4C31FF940A99C, 732EB7C9CF8E817B7239DBA1, ); name = widgets; sourceTree = ""; }; 398BACFBDE29E0514F4CA907 = {isa = PBXGroup; children = ( 93D1FA25103C27AFCCA1AAAA, 555CE1B4514C7E3BBB1A009E, FD7E5A4B8C6532BD458B2A94, 2F3A411E38028AE655F7EF95, 2A1CE4FC4448FBE9D4713C5B, A9DFB028B3E73E65E1407098, ACD0AD8EACA79E8A6273413E, 230C6175514E621AA9037C67, FEA9C3FC8BE313C619C3D195, C75917573F92864DA80C9A11, 81A30FE08E3703C49D5ECC93, 69266B83D819323230CB67B9, A4C303DC411E19BA54A10871, A29400BAA8E7CD1D1CA48C79, 84F1747F90732DE67C601E3A, 31FED87B0FA79D42C5B63186, 5B9C910F85E921B561995ED3, 65269D81DF23F8211A61032E, 9AF8A6A41A7FFACC570EBCF5, ); name = windows; sourceTree = ""; }; CDFF2D1465961758C0EF3C4F = {isa = PBXGroup; children = ( 133B528A88E99C116B75BFDA, D0B7D5B46558A7393B43C79B, 9B0ADC4932AEE1AEDBAAB8AE, 3CBF4CE2F60BBF9EB9637BC5, DD374C28FF1CF5F121C3C6E5, 5187A18B4BAC7087C4FE8060, ); name = menus; sourceTree = ""; }; 4D9B59FA6727E6D1680D884E = {isa = PBXGroup; children = ( DBBD318E15A635AACB31E1DE, C6313E766ECDCE48435BA5A0, 27E36BA8310CE73DCCA58AC9, 42D4C2092537DD2A5054134F, 70EEC63C3D1175FD705583F7, 56E41C2987E763CEE092B7A4, 64D016CA7156861886442427, C2012B18C8652969617417E3, 90CFC8BC9D8A156A512D2A39, C22BEA19FDBE55F5AAFE9D36, FF06CDF5B9CF3DE2EA741D54, 699E20F1575B18C3D909940A, D5054A3D5EBDC47D51FC99F6, E143BF0720845D8A25BB16E6, B2C3D53237084A8C79EE8B16, F9816E9564DF0FD05C77B845, A74B522F55C871C8C41E253A, B0D3494829C70D3D31E7195C, 2162A9A1F6F5DF44CBAC2129, A42FDF7379A2708B3726B0BC, A9CCD637A179CD1BA7A27028, 2A3D243054F8E1C94ED0A0E4, B14210A622924919775310DD, 234F4B105DF97B936ED47100, 62E67D3BBC3098E5BC56F835, BF2D0795D820910CCB587033, 15DBBA2C2CCC22B3488B48F6, B12282D4958ECC33E33301E6, 1CCD30C2315CF5CD327FFA99, 2F55E9B82505B501C1E9B0D7, F45A8AE5F6E6FA5F6AEC8D12, 0324378725B8DEBC11E93953, B1557FE77AC7D7FBF5A745F8, 65A7736ECC548A9FD10E4F42, 652822ADCD7393AF40945DA2, 89A3C346A8D9173D9CBDD088, ); name = layout; sourceTree = ""; }; 75C0000D478F969885805A58 = {isa = PBXGroup; children = ( 717C583F454C2AF7BAF710A7, 71D588CCC35F0C1A5A0E9E3F, 1E19C8C3F46E236277F58F42, 0C1C8C5879770EF4E8824EF3, E80A7D62B2B3F4BD2CD3F170, 3F111FBCEE1230015F476C68, 130A28E84D438B08C6B5D5A5, 4DD07E53E4ABDE534D34981E, D711FA513F8E9F696570DBB5, 302AFDDB94F243E1C82AF3E9, A20C7B40F6C5309CBEC5038E, 0A82B6536AC2C02E099AB0AB, 14EED238D31DAABE590C749A, C88CAA67E7AD9181F1C9E3CE, 1A6CC0CB9A61C67DF712B06E, CE290D98DCBBDC902406E73F, FB3723E1113ED13B4B8DF09A, 0525B4E0F2387B1F3AA520F8, ); name = buttons; sourceTree = ""; }; 778CF3546E5DBE366BF63E99 = {isa = PBXGroup; children = ( F3327A4ED4197E583711EC38, 8894A48D347FE788EFD7D0AC, AC0B866AA2C5F577AA221143, 6930D056DFFC6EAA2B52E045, BE72D524BA45BC24B3264F2C, 543A10EED475842E60CE7F3C, E281E7EA009C44FA607DAFEB, B16933E10DCBA3CC20ADFAFF, 6B29E55E890064489381C65A, 1BAB3298971199DD4A26042B, 558FEC99442C039E45679325, 45A89EE380DBADF9105B866A, 18BF5D458C9584CD0136DCC7, 2DBE41449BBADA6D1242D7E4, ); name = positioning; sourceTree = ""; }; D36ED2585AFE0D1ADA95740C = {isa = PBXGroup; children = ( B2485AFF4249D9C40B9B54CB, E833133B78833DA0D34F48A4, 451343A64FCB48BC926E0962, 1C2A1CDE2DA322901B0899F8, 7A704BB75CD29EA20C349CDA, 20BC71D082643A43C9BD37C1, F8FDB57B9F26F2B0582CBEED, B6C28B2DAE4802FA291E3487, 32B8A985D15EAE4008F43D5F, A93E7F99453C2CD22B7B7115, 71D7F3CED9D84ECF00E3C7DF, BA92F6D1BF35CF6623B0BD1F, E7405CD3B6CF257A84E60DB5, 505E065430B4C61E119415FE, 9F3BAC34BBE550826A0C2B4D, ); name = drawables; sourceTree = ""; }; AA44D87FE68F20BC9038C07C = {isa = PBXGroup; children = ( 294C8642232443EEC9C4DF3D, 2327E88F48EE9DBD166727F4, A507DE8ED0DFE58D8443F1D0, 7C019D56F09C3415D36A0058, DF82F535AAA1380C3213FF03, D5AAA258357323FD8DBC7B08, 2BB6FE1F813E3EF9FB1FAACE, CD87ECBCB1347FDB040D63FC, 5B0D2EC9A8AC716C07B61137, 86ECCFC606602CF42A755A8D, 27A1A9F9CB957FACCFF348D3, DFB1FF7E047D9883528DECF8, C1A8DCB1BD40331EFC186CF7, 5BFC164CB4F8BC4FD839EDC8, ); name = properties; sourceTree = ""; }; 0497AE7C3FF9222448CEC17B = {isa = PBXGroup; children = ( 9D0323FECB030B06FBD0F627, 01A853C55CAE8341C207A758, 7E8133ED13638E1D0C6F849F, A0816F5D3CB1D0509C714252, C56DB2DC67E1DBA6C29044CD, 492FBEED85D887CC01080068, 4AA6BD2A3FDFADDCB0322F9C, 7224FBF6C8769342A0E3AC71, ); name = lookandfeel; sourceTree = ""; }; B0DA666A72BF97CE5C6452EA = {isa = PBXGroup; children = ( 4D6C90354134741F7F295412, D06CEB2AEDFB98E1406E06F7, 88DA5DAE40649E777AD45ECA, 3A8FC4F98008643A60177AEC, CD9D30D3D61F095124F6D916, 94852FE71706851643C6BDE3, 7D41725B59E3415350C8E035, 2DB2C70618EAA8DC81B2564F, 1846D85E50A6B97BBC5EDD6E, 52AAE149F3EC7BAB0E7703DC, 4961AA10B3563523AE1B0BFE, 10650C6BB284DC0F6E7DCB5C, 54FF1D1CC748FA043A28004F, 7E9061B22520E892C910ECC9, 47B6D5118C5FE2D6A452A487, 1D610C9DF69B955B05EB9A54, 140BFF25B0078C0709FF2461, 2DB4D07F237B52911EB0B812, CBE147D9B86A9F69A7CCEC3D, A2E15C0836AF048130C893F4, ADC3125F0DCD2924ACB173EB, AC975C4D82A4C525F6D879A5, ); name = filebrowser; sourceTree = ""; }; 8BA9558E831744561590ACEA = {isa = PBXGroup; children = ( DD7B2584B0C91BB4124A397E, 5044BE1EA711B629563F70CD, 6E8326A0BC2AAA5F82287220, E9904E84AFCF3AB39B03BAA9, 081B7C7D1B9CB7F72A193DEF, 5DBA0BFB2868C3E1F1E871FB, E422C589FA0328C35A0549FD, 1FC1E37865F424D91228A888, F59A5377B8D4476B34214F98, ); name = commands; sourceTree = ""; }; 9BFEAB312F069BA6BD17F30C = {isa = PBXGroup; children = ( 3FB71EFD64D47E52DADCACA4, 20A5A541366F7C22EF633114, 3437B0E3EA85400DBEEE0074, CAC058A2D753BB9E0559D8EB, ); name = misc; sourceTree = ""; }; FFADE91960A55164D44E8FCE = {isa = PBXGroup; children = ( E31FA0995B22027AEF89904B, A570C960A1D5C3F9E50A928D, ); name = application; sourceTree = ""; }; 61EFC47D10826ECFA538F192 = {isa = PBXGroup; children = ( 8E3F7589FDC16A7DA986FC42, E96CBEBCDABA3EA741C4C2EC, 305C7AE4DF0701B34616E4FA, 4E1058572E25FD04B7D60700, AD0FE0F54DE76E0C35A3B692, 67313924EE210EADEB66ECBD, 47BB119E08A7A1A468564B9D, B2EE22875A0E4C2679EFD3CB, C626FA20C4D021076A4B943E, E8C858BC5875BA7F76E62B28, 895273CAD9B1B37100C11B0F, 97BFE20948105F757379B4F8, 23A21EE368F8679E0C40323B, 07D2814B9A8E25F3269B675D, 3705B72C4B467A1EABEC9C49, FE8B93BA3F56CCC0BB37A5C8, ); name = native; sourceTree = ""; }; CBE7B44549D0E7411076D57F = {isa = PBXGroup; children = ( 51F1DE322ACA481FA5B3E623, 01EB66B6B2CBE57DEC21DE34, 05CB0B9F5C39B9F9CE569275, 47736D14938B4000F6823B04, 398BACFBDE29E0514F4CA907, CDFF2D1465961758C0EF3C4F, 4D9B59FA6727E6D1680D884E, 75C0000D478F969885805A58, 778CF3546E5DBE366BF63E99, D36ED2585AFE0D1ADA95740C, AA44D87FE68F20BC9038C07C, 0497AE7C3FF9222448CEC17B, B0DA666A72BF97CE5C6452EA, 8BA9558E831744561590ACEA, 9BFEAB312F069BA6BD17F30C, FFADE91960A55164D44E8FCE, 61EFC47D10826ECFA538F192, 31F1BE05C5BC30558F8039AD, 614E3EC828D056202DC10732, ); name = "juce_gui_basics"; sourceTree = ""; }; E40525D81D015389B0388510 = {isa = PBXGroup; children = ( 46A2A110922BAD26FB4298C5, 6261EB3783A9DF264A122DC6, 4D44E9AD19469774ED8245B2, 08C730BD0BD4755B55E99BAC, C7D88B24A0DC64FDD1EE28FD, 937C0CF5DC3FFF6161D7776D, 7BB92A7F312D9DA6AA53FAC3, 744475CFFBA91FDA03DDF659, 08603D6A5C7D8DDDA1AE4DA3, 47051A94D9B45B21017A867F, B93ACCE3F29334143039311C, D735FA88C8465C02D4217A39, ); name = "code_editor"; sourceTree = ""; }; 7A7F0DF75E9B01FE9A9470B2 = {isa = PBXGroup; children = ( 1667021AB391F5D9B82B186D, 2CBD98BBA9322461A3ED0D05, ); name = documents; sourceTree = ""; }; 5339003A04D05F6E3F333436 = {isa = PBXGroup; children = ( 6C632E34FD1B617525987657, 02C0DD7DC29B27B39D5FF154, DD10783090721EFE21E4FAA5, ); name = embedding; sourceTree = ""; }; F4FF39023AE719A2C1FDFCF6 = {isa = PBXGroup; children = ( DCCDA2F20A439FE5044946DE, 5E4F70838E79D6A25B8A80B0, 74AB579ADDC7C355C5704A16, CB713D4A63E08276975B7639, 5E2CB1D4DC6ED933AA81C43A, 754A3F88F55E0FB7F179F2E3, C234FBE6290024F51478686E, 2199D426EC85451D81636490, 0F5CBF5A5C2283DA1344E55E, EA433D25CF79DF86FEF978D1, F5047DA45BA2ECE24D308403, 0D3ACCBA2F79A0C6444AF72C, 495652C9E6B06C891281D040, 30D62F5F1125F39CE8D28C78, 7B78D4684FE1D74EA847C1B7, A7BF2E0EF7E381B811ED7981, D45C31982C2D140B6B64D1C7, 7A6E2A815D9AE276CF064A24, 8C439BE182790867BCC9ADFC, 1F4C7ECC97B4C80BD98F32C1, ); name = misc; sourceTree = ""; }; E145BB5F87254EDB7C912760 = {isa = PBXGroup; children = ( 118B13BE32C7FDCE82BDC495, 939EC86DADE3927918AA327C, 8FA331691E39F5D8FB0DCDF8, E2C9F5675F700544E40B46C1, FB845B6C46248D66EB02A862, 140B14E0142DF835F1C6D951, 5136E02D20343ED8DCD90A20, AFED7B4CED7DCA33DEA5F546, 0EBBED2D984949E34DA34E8A, CC95B7798FE5B9D685B3573D, 5B6BC49A6F74A8021E73E3A2, 9B02109FBEEB89243D72FC11, ); name = native; sourceTree = ""; }; D073C93C9EC5893BBF5B728C = {isa = PBXGroup; children = ( E40525D81D015389B0388510, 7A7F0DF75E9B01FE9A9470B2, 5339003A04D05F6E3F333436, F4FF39023AE719A2C1FDFCF6, E145BB5F87254EDB7C912760, 8FBE4F804ECCBADAA37592F0, C001B0F67BB17E32A3BC8F92, ); name = "juce_gui_extra"; sourceTree = ""; }; C37CC96B89E62143A0E75336 = {isa = PBXGroup; children = ( 077C855D265E61FB93F96107, 2D4BDB90369FB93DE77234CD, C0F8D0D123397FF7AF17F3F8, 0BD57F3380CCDFE06E36335D, CBE7B44549D0E7411076D57F, D073C93C9EC5893BBF5B728C, ); name = "Juce Modules"; sourceTree = ""; }; 70A885E880F4C1F36DBA276E = {isa = PBXGroup; children = ( 994F654E220C76091B1672F8, 116E9A279FB25AE32174C42F, C1980330512BAADDA1CB0D24, 8FC7BFF093D665F8178EC297, B2650D0AA7710D3C2627238A, 01D2B9B2D33BFF1F4B571B7E, F21F13BF684528EB7041BD67, F6CA8CB0E2135154E38E9707, ); name = "Juce Library Code"; sourceTree = ""; }; F75EB749D5026E5AC86B6C4B = {isa = PBXGroup; children = ( B531D38613FDEC368336A51E, D071023526C8D2E38D1C95C5, ); name = Resources; sourceTree = ""; }; C581D34B32A781E9AED7F7B0 = {isa = PBXGroup; children = ( 21A912CCEA1FC0733AD65075, A9E35E85D16F32AD3EA135BE, 156FD1B428979C9E5D43DDC2, EF932865774E86525CE7FC55, 6E43583682EFEBAE58D59BA4, ); name = Frameworks; sourceTree = ""; }; 1C83313FCFBC3FAFA8CDB087 = {isa = PBXGroup; children = ( EA398D9C544440E06637C134, ); name = Products; sourceTree = ""; }; CB9C4DF3F11D65C6BF6B80AD = {isa = PBXGroup; children = ( 23A603C0DAA7E2E423A4123A, C37CC96B89E62143A0E75336, 70A885E880F4C1F36DBA276E, F75EB749D5026E5AC86B6C4B, C581D34B32A781E9AED7F7B0, 1C83313FCFBC3FAFA8CDB087, ); name = Source; sourceTree = ""; }; 34AEE2803DA0D6192C299422 = {isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "_DEBUG=1", "DEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1", "JUCE_APP_VERSION=1.0.0", "JUCE_APP_VERSION_HEX=0x10000", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; SDKROOT_ppc = macosx10.5; }; name = Debug; }; 339C95D5B2E96DD37B176D75 = {isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; DEAD_CODE_STRIPPING = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PREPROCESSOR_DEFINITIONS = ( "_NDEBUG=1", "NDEBUG=1", "JUCER_XCODE_MAC_F6D2F4CF=1", "JUCE_APP_VERSION=1.0.0", "JUCE_APP_VERSION_HEX=0x10000", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; SDKROOT_ppc = macosx10.5; }; name = Release; }; F6DA01300C80F2338FCBD24A = {isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "HelloWorld"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Debug; }; CA9F73DE863A75BEA780D77E = {isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "HelloWorld"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Release; }; D5495970AC0AFC78DD0ADE12 = {isa = XCConfigurationList; buildConfigurations = ( F6DA01300C80F2338FCBD24A, CA9F73DE863A75BEA780D77E, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; D2ABD8290ABA5095AE85F9A6 = {isa = XCConfigurationList; buildConfigurations = ( 34AEE2803DA0D6192C299422, 339C95D5B2E96DD37B176D75, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 7B2C68FAAB7FB794B44BA476 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 6E85E85F989CB43995D01BAF, ); runOnlyForDeploymentPostprocessing = 0; }; 5C249F77DD3C907CDA919026 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 535A340E26E5D6766D1780CA, 31E87C6EC193B9C408D16F20, F1FECDFA7E29BD6B703AF52B, EA50C8A2A8471D0EB4B8E644, 10A93C9ECE23E879115D5B95, 16890172C661285B431823B1, 7DCA87102FFCD304FA172464, 219E48FBEA32F43040A9970C, ); runOnlyForDeploymentPostprocessing = 0; }; A8FE28D8F12C03C93B8EAD1D = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4DB01A361C3EB8BBBE893AAC, 51A76E3A281D21F429C75F0E, 820ECCDC2115F6687BEC40C6, EAA5A5EECF04D2B7FCF768FC, 6CEBF944E27D7BE88E78945D, ); runOnlyForDeploymentPostprocessing = 0; }; 9337F8263A94B688D61D5B68 = {isa = PBXNativeTarget; buildConfigurationList = D2ABD8290ABA5095AE85F9A6; buildPhases = ( 7B2C68FAAB7FB794B44BA476, 5C249F77DD3C907CDA919026, A8FE28D8F12C03C93B8EAD1D, ); buildRules = ( ); dependencies = ( ); name = HelloWorld; productName = HelloWorld; productReference = EA398D9C544440E06637C134; productInstallPath = "$(HOME)/Applications"; productType = "com.apple.product-type.application"; }; E34D5B980741D93050D0BB6B = {isa = PBXProject; buildConfigurationList = D5495970AC0AFC78DD0ADE12; attributes = { LastUpgradeCheck = 0440; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = CB9C4DF3F11D65C6BF6B80AD; projectDirPath = ""; projectRoot = ""; targets = ( 9337F8263A94B688D61D5B68 ); }; }; rootObject = E34D5B980741D93050D0BB6B; } JUCE-4.1.0/examples/HelloWorld/Builds/MacOSX/Info.plist000066400000000000000000000015121263452017400224220ustar00rootroot00000000000000 CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile CFBundleIdentifier com.roli.jucehelloworld CFBundleName HelloWorld CFBundlePackageType APPL CFBundleSignature ???? CFBundleShortVersionString 1.0.0 CFBundleVersion 1.0.0 NSHumanReadableCopyright ROLI Ltd. NSHighResolutionCapable JUCE-4.1.0/examples/HelloWorld/Builds/MacOSX/RecentFilesMenuTemplate.nib000066400000000000000000000054321263452017400256750ustar00rootroot00000000000000bplist0056X$versionX$objectsY$archiverT$topJ#$*.259JMNVWapqrwxy|  !"#$%&'()*+,/2U$null _NSVisibleWindows]NSObjectsKeysVNSRoot\NSOidsValuesV$classZNSOidsKeys]NSConnections_NSObjectsValues_NSAccessibilityConnectors_NSAccessibilityOidsKeys_NSAccessibilityOidsValues 7I65GHH !"[NSClassName]NSApplication%&'(Z$classnameX$classes^NSCustomObject')XNSObject +,-ZNS.objects%&/0\NSMutableSet/1)UNSSet +34%&67^NSMutableArray68)WNSArray +:;4<=>?@ABCDEFGHI -'!#+)/2 !L ]NSApplicationO PQRSTU[NSMenuItemsVNSNameWNSTitle&1 YAMainMenu +3Y?A@GF>H')+-/bcd efgQh=jklmno_NSKeyEquivModMaskVNSMenuYNSOnImageZNSKeyEquiv]NSMnemonicLoc\NSMixedImage [delmeAppKitP s tuv^NSResourceNameWNSImage_NSMenuCheckmark%&z{_NSCustomResourcez) s t~v_NSMenuMixedState%&ZNSMenuItem)bcd efgQhB=jklmnXNSActionYNSSubmenu TFile^submenuAction:O QS& +3Cbcd efgQhDBjklmn ![Open Recent^submenuAction:O PQS"&% +3E#bcd efgQhDjklmn!$ZClear Menu__NSRecentDocumentsMenu%&VNSMenu)bcd efgQh=jklmn (TEditcd efgQ=jklmnǀ *VFormatbcd efgQh=jklmnπ ,TViewbcd efgQh=jklmn׀ .VWindowcd efgQ=jklmn߀ 0THelp[_NSMainMenu !3]NSFontManager%&88) +:4====ABCD=== !  +:4<=>?@ABCDEFGHI -'!#+)/2 +: 489:;<=>?@ABCDEF !"#$ +3. +:14%&34^NSIBObjectData3)_NSKeyedArchiver78]IB.objectdata"+5:? *1>EP^p+09BMOPYfms|~")13579CLN]_acegik$6?RWdfhj} BDFHJLNPR^m~!#%').KMOQSUW^  "'02OQSUWY[]_acegiktv  #&),578ACDM\asx9JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2010/000077500000000000000000000000001263452017400223175ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2010/HelloWorld.sln000066400000000000000000000015611263452017400251130ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{5FF0139D-D865-F437-0399-F3B8D04FF3DC}") = "HelloWorld", "HelloWorld.vcxproj", "{DE45EB49-4787-51B4-1A66-9F94E58BE282}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Debug|Win32.ActiveCfg = Debug|Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Debug|Win32.Build.0 = Debug|Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Release|Win32.ActiveCfg = Release|Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2010/HelloWorld.vcxproj000066400000000000000000002436531263452017400260240ustar00rootroot00000000000000 Debug Win32 Release Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282} Application false Application false true <_ProjectFileVersion>10.0.30319.1 HelloWorld true HelloWorld true _DEBUG;%(PreprocessorDefinitions) true true Win32 Disabled EditAndContinue ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2010_78A501D=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true _DEBUG;%(PreprocessorDefinitions) $(OutDir)\HelloWorld.exe true libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries) true $(IntDir)\HelloWorld.pdb Windows MachineX86 false true true $(IntDir)\HelloWorld.bsc NDEBUG;%(PreprocessorDefinitions) true true Win32 Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2010_78A501D=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreaded true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true NDEBUG;%(PreprocessorDefinitions) $(OutDir)\HelloWorld.exe true %(IgnoreSpecificDefaultLibraries) false $(IntDir)\HelloWorld.pdb Windows MachineX86 true true true true $(IntDir)\HelloWorld.bsc true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2010/HelloWorld.vcxproj.filters000066400000000000000000003515211263452017400274650ustar00rootroot00000000000000 {75F51951-F2D8-4FF2-0DBF-4E68D1A58E5D} {2871A501-FC02-59F8-073A-E81F04E3463F} {422C46B7-0467-2DB0-BF3C-16DFCAFD69AC} {95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88} {244D11B0-2D68-3C08-A0B7-0D12469BC3AA} {476C69CE-0B67-6B85-E888-45D91E37A29E} {7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6} {0608ADE9-66EF-1A19-6D57-12D07F76EB53} {05F3DB8A-499C-6ACA-282F-5BF8455A0DE1} {C9F6D785-BF78-5AA1-B479-111C65397864} {C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D} {DA0DC4AC-B511-A2D4-199A-C93454D6F114} {91929C6F-7902-B87D-5260-2F6CBF8ACD93} {C294408A-2005-2E9E-7AC0-8D3ABE8AC175} {4634FFAE-9586-A970-364C-4FDDA635F99F} {F2B2F310-F30F-7166-42A9-9BF9C230DA78} {1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B} {F03654BC-34D8-F975-BEA3-750CC2783D23} {4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F} {FA891A58-9FDA-9651-43C4-714A19B5D08D} {C79A4D23-7866-8F3E-AC39-BD68C52A9259} {928D8FCC-5E00-174B-6538-93E8D75AB396} {1988E68A-A964-64CA-0E0C-26FF9BC5176C} {3DF036EA-3B80-553B-2494-3AAC835CAE75} {358AEA11-3F96-36AE-7B32-71373B5C5396} {F2A38F45-6E55-E147-2E52-64A89FDD9D59} {6172822C-01A5-E824-12DA-FA43FA934D35} {41DC3BE3-D629-8A17-C32B-F5B4008B5FAD} {B098BC87-3298-7E6B-12DC-D26C09CDCAED} {6322B88F-984A-C3CD-6263-38D7AA49B6EC} {73C1E759-AD90-59A3-942E-2D10FAA29107} {EE1AE8C3-0908-8F53-A4E5-D930C7C97C26} {4926B3FF-E797-F586-857A-69D9703FA2D1} {EBC65085-3AD5-280C-1A29-2B1683643AA1} {413F481F-075C-2958-115C-D8268682FCB7} {69E1179D-76EC-26DC-C3E6-6602ED26D783} {C1A1A236-AB01-173E-96C3-0706BFF93B1E} {1182303F-ECA3-166D-AC0C-92C5E762CB93} {26ECA2AF-7368-C6CC-58EF-017ECD1862D0} {E37D25CD-4350-4614-055B-7ABC55E67895} {FFC6E1CC-C772-75E6-5087-FB5D4E016799} {8E43579F-C185-266D-DD67-F8B95BD80F2F} {2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D} {796B7886-44A7-34CC-9B95-BF4FB2C7B6F4} {A92719C7-70BE-57C4-CE9E-A9BC9DFEB757} {75F1F352-251A-75E0-D941-8431588F5C1E} {DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC} {7BCEAB87-62FD-0327-EB5D-679E54EDB9B1} {E980FADB-6E3F-B93C-DE02-CE4271C9BA93} {C3B2EB8A-1A2F-306F-AA78-3E9D1593788B} {7A53E6F1-1343-33B8-4CA8-1D7B714A0E76} {5A0AA36E-3957-E413-14C6-31CBE15271DF} {D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB} {F408DCA2-D5E2-0A3A-A064-A1D045889BC1} {5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4} {46535B56-3737-2BE8-E3A0-571BCBEB2DA4} {C2B9505B-27B4-F650-12BD-F477D4BBCBAA} {61712B09-5783-ADFA-2001-5A0C3D7764EB} {8A80BA78-D3A8-C0F8-7FFD-61AA028CE852} {8EC9572F-3CCA-E930-74B6-CB6139DE0E17} {C60A6FCA-9462-922E-AD8D-69F10C9049AF} {D56498EE-E354-1F00-5EEE-8CF7944BEAFB} {61B2920C-494D-D8CB-C0C7-5DBF3D76D164} {66C9B809-8739-A217-C78D-A15D6089B8E3} {C413328B-5D81-89EE-F4F3-75752E700DE4} {8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61} HelloWorld\Source HelloWorld\Source Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code HelloWorld\Source Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra Juce Library Code Juce Library Code Juce Modules\juce_core Juce Modules\juce_data_structures Juce Modules\juce_events Juce Modules\juce_graphics Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra Juce Library Code JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2010/resources.rc000066400000000000000000000011461263452017400246610ustar00rootroot00000000000000#ifdef JUCE_USER_DEFINED_RC_FILE #include JUCE_USER_DEFINED_RC_FILE #else #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "CompanyName", "ROLI Ltd.\0" VALUE "FileDescription", "HelloWorld\0" VALUE "FileVersion", "1.0.0\0" VALUE "ProductName", "HelloWorld\0" VALUE "ProductVersion", "1.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2015/000077500000000000000000000000001263452017400223245ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2015/HelloWorld.sln000066400000000000000000000015611263452017400251200ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2015 Project("{5FF0139D-D865-F437-0399-F3B8D04FF3DC}") = "HelloWorld", "HelloWorld.vcxproj", "{DE45EB49-4787-51B4-1A66-9F94E58BE282}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Debug|Win32.ActiveCfg = Debug|Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Debug|Win32.Build.0 = Debug|Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Release|Win32.ActiveCfg = Release|Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2015/HelloWorld.vcxproj000066400000000000000000002442401263452017400260220ustar00rootroot00000000000000 Debug Win32 Release Win32 {DE45EB49-4787-51B4-1A66-9F94E58BE282} v140 Application false v140 Application false true v140 v140 <_ProjectFileVersion>10.0.30319.1 HelloWorld true HelloWorld true v140 _DEBUG;%(PreprocessorDefinitions) true true Win32 Disabled EditAndContinue ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true _DEBUG;%(PreprocessorDefinitions) $(OutDir)\HelloWorld.exe true libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries) true $(IntDir)\HelloWorld.pdb Windows MachineX86 false true true $(IntDir)\HelloWorld.bsc NDEBUG;%(PreprocessorDefinitions) true true Win32 Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;%(PreprocessorDefinitions) MultiThreaded true $(IntDir)\ $(IntDir)\ $(IntDir)\ Level4 true true NDEBUG;%(PreprocessorDefinitions) $(OutDir)\HelloWorld.exe true %(IgnoreSpecificDefaultLibraries) false $(IntDir)\HelloWorld.pdb Windows MachineX86 true true true true $(IntDir)\HelloWorld.bsc true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2015/HelloWorld.vcxproj.filters000066400000000000000000003515221263452017400274730ustar00rootroot00000000000000 {75F51951-F2D8-4FF2-0DBF-4E68D1A58E5D} {2871A501-FC02-59F8-073A-E81F04E3463F} {422C46B7-0467-2DB0-BF3C-16DFCAFD69AC} {95CA1506-2B94-0DEE-0C8D-85EDEBBC4E88} {244D11B0-2D68-3C08-A0B7-0D12469BC3AA} {476C69CE-0B67-6B85-E888-45D91E37A29E} {7C5AD030-F8CC-6E85-0AF6-196B3ED40AC6} {0608ADE9-66EF-1A19-6D57-12D07F76EB53} {05F3DB8A-499C-6ACA-282F-5BF8455A0DE1} {C9F6D785-BF78-5AA1-B479-111C65397864} {C8F726FC-26BF-2E6B-4ED5-55A7FE316D7D} {DA0DC4AC-B511-A2D4-199A-C93454D6F114} {91929C6F-7902-B87D-5260-2F6CBF8ACD93} {C294408A-2005-2E9E-7AC0-8D3ABE8AC175} {4634FFAE-9586-A970-364C-4FDDA635F99F} {F2B2F310-F30F-7166-42A9-9BF9C230DA78} {1B67A7C0-86E0-53F6-6AE3-7AD93B8DC95B} {F03654BC-34D8-F975-BEA3-750CC2783D23} {4927C7A1-9235-4AA1-93CD-B4E67E6F1E5F} {FA891A58-9FDA-9651-43C4-714A19B5D08D} {C79A4D23-7866-8F3E-AC39-BD68C52A9259} {928D8FCC-5E00-174B-6538-93E8D75AB396} {1988E68A-A964-64CA-0E0C-26FF9BC5176C} {3DF036EA-3B80-553B-2494-3AAC835CAE75} {358AEA11-3F96-36AE-7B32-71373B5C5396} {F2A38F45-6E55-E147-2E52-64A89FDD9D59} {6172822C-01A5-E824-12DA-FA43FA934D35} {41DC3BE3-D629-8A17-C32B-F5B4008B5FAD} {B098BC87-3298-7E6B-12DC-D26C09CDCAED} {6322B88F-984A-C3CD-6263-38D7AA49B6EC} {73C1E759-AD90-59A3-942E-2D10FAA29107} {EE1AE8C3-0908-8F53-A4E5-D930C7C97C26} {4926B3FF-E797-F586-857A-69D9703FA2D1} {EBC65085-3AD5-280C-1A29-2B1683643AA1} {413F481F-075C-2958-115C-D8268682FCB7} {69E1179D-76EC-26DC-C3E6-6602ED26D783} {C1A1A236-AB01-173E-96C3-0706BFF93B1E} {1182303F-ECA3-166D-AC0C-92C5E762CB93} {26ECA2AF-7368-C6CC-58EF-017ECD1862D0} {E37D25CD-4350-4614-055B-7ABC55E67895} {FFC6E1CC-C772-75E6-5087-FB5D4E016799} {8E43579F-C185-266D-DD67-F8B95BD80F2F} {2CB59E7C-D0E4-7D27-2ACF-C7ABADEE936D} {796B7886-44A7-34CC-9B95-BF4FB2C7B6F4} {A92719C7-70BE-57C4-CE9E-A9BC9DFEB757} {75F1F352-251A-75E0-D941-8431588F5C1E} {DB6E3D09-66DA-12DA-BAE8-A5BFFA7A14AC} {7BCEAB87-62FD-0327-EB5D-679E54EDB9B1} {E980FADB-6E3F-B93C-DE02-CE4271C9BA93} {C3B2EB8A-1A2F-306F-AA78-3E9D1593788B} {7A53E6F1-1343-33B8-4CA8-1D7B714A0E76} {5A0AA36E-3957-E413-14C6-31CBE15271DF} {D7E3D10F-3ED8-DFC5-6DB3-E4ACBF8678FB} {F408DCA2-D5E2-0A3A-A064-A1D045889BC1} {5FDBD6B1-9BBD-392F-4DA5-FEA40A9370C4} {46535B56-3737-2BE8-E3A0-571BCBEB2DA4} {C2B9505B-27B4-F650-12BD-F477D4BBCBAA} {61712B09-5783-ADFA-2001-5A0C3D7764EB} {8A80BA78-D3A8-C0F8-7FFD-61AA028CE852} {8EC9572F-3CCA-E930-74B6-CB6139DE0E17} {C60A6FCA-9462-922E-AD8D-69F10C9049AF} {D56498EE-E354-1F00-5EEE-8CF7944BEAFB} {61B2920C-494D-D8CB-C0C7-5DBF3D76D164} {66C9B809-8739-A217-C78D-A15D6089B8E3} {C413328B-5D81-89EE-F4F3-75752E700DE4} {8B4D1BAA-6DB4-CAEC-A0FA-271F354D5C61} HelloWorld\Source HelloWorld\Source Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\image_formats Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra\native Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code Juce Library Code HelloWorld\Source Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\text Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\maths Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\memory Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\containers Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\threads Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\time Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\files Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\network Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\streams Juce Modules\juce_core\logging Juce Modules\juce_core\logging Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\system Juce Modules\juce_core\xml Juce Modules\juce_core\xml Juce Modules\juce_core\javascript Juce Modules\juce_core\javascript Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\zip Juce Modules\juce_core\unit_tests Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\misc Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core\native Juce Modules\juce_core Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\values Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\undomanager Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures\app_properties Juce Modules\juce_data_structures Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\messages Juce Modules\juce_events\timers Juce Modules\juce_events\timers Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\broadcasters Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\interprocess Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events\native Juce Modules\juce_events Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\colour Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\contexts Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\images Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\geometry Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\placement Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\fonts Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\effects Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics\native Juce Modules\juce_graphics Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\components Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\mouse Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\keyboard Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\widgets Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\windows Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\menus Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\layout Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\buttons Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\positioning Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\drawables Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\properties Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\lookandfeel Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\filebrowser Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\commands Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\misc Juce Modules\juce_gui_basics\application Juce Modules\juce_gui_basics\native Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\code_editor Juce Modules\juce_gui_extra\documents Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\embedding Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\misc Juce Modules\juce_gui_extra\native Juce Modules\juce_gui_extra Juce Library Code Juce Library Code Juce Modules\juce_core Juce Modules\juce_data_structures Juce Modules\juce_events Juce Modules\juce_graphics Juce Modules\juce_gui_basics Juce Modules\juce_gui_extra Juce Library Code JUCE-4.1.0/examples/HelloWorld/Builds/VisualStudio2015/resources.rc000066400000000000000000000011461263452017400246660ustar00rootroot00000000000000#ifdef JUCE_USER_DEFINED_RC_FILE #include JUCE_USER_DEFINED_RC_FILE #else #undef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #include VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "CompanyName", "ROLI Ltd.\0" VALUE "FileDescription", "HelloWorld\0" VALUE "FileVersion", "1.0.0\0" VALUE "ProductName", "HelloWorld\0" VALUE "ProductVersion", "1.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif JUCE-4.1.0/examples/HelloWorld/Builds/iOS/000077500000000000000000000000001263452017400200535ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld.xcodeproj/000077500000000000000000000000001263452017400241225ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld.xcodeproj/project.pbxproj000066400000000000000000005571171263452017400272160ustar00rootroot00000000000000// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { F70117123739E2303A99AD70 = {isa = PBXBuildFile; fileRef = AF0CC5F28EB37B1FABBDD5DD; }; 02F0D49EDD6A3E82D98302F3 = {isa = PBXBuildFile; fileRef = FE9531D38CA4C273B6FB87A7; }; 9C737750FC4663FBFDF8C048 = {isa = PBXBuildFile; fileRef = FB6FA17C00AB569935B5CFF8; }; EAA5A5EECF04D2B7FCF768FC = {isa = PBXBuildFile; fileRef = EF932865774E86525CE7FC55; }; ACB6DFC6389AFB78A7EF0A61 = {isa = PBXBuildFile; fileRef = 07D50D8347ED27B84F822D6C; }; 7AA2F50DAEF3BA88A7C9C97E = {isa = PBXBuildFile; fileRef = B700739654886DC8E7C1293B; }; 535A340E26E5D6766D1780CA = {isa = PBXBuildFile; fileRef = B3978067F1432E1A2618A5DB; }; 31E87C6EC193B9C408D16F20 = {isa = PBXBuildFile; fileRef = 0EDDB91E8D84944C3EBACFFE; }; F1FECDFA7E29BD6B703AF52B = {isa = PBXBuildFile; fileRef = 116E9A279FB25AE32174C42F; }; EA50C8A2A8471D0EB4B8E644 = {isa = PBXBuildFile; fileRef = C1980330512BAADDA1CB0D24; }; 10A93C9ECE23E879115D5B95 = {isa = PBXBuildFile; fileRef = 8FC7BFF093D665F8178EC297; }; 16890172C661285B431823B1 = {isa = PBXBuildFile; fileRef = B2650D0AA7710D3C2627238A; }; 7DCA87102FFCD304FA172464 = {isa = PBXBuildFile; fileRef = 01D2B9B2D33BFF1F4B571B7E; }; 219E48FBEA32F43040A9970C = {isa = PBXBuildFile; fileRef = F21F13BF684528EB7041BD67; }; 00BB14FB0329250A897855F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; }; 00D9EB5B09E980D4A78D852A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; }; 00FD1194DB59F69CA9DFCFAF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemClipboard.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_SystemClipboard.h"; sourceTree = "SOURCE_ROOT"; }; 016AB5DF7206562FA4B48A81 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationBase.h"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.h"; sourceTree = "SOURCE_ROOT"; }; 01A853C55CAE8341C207A758 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; 01D2B9B2D33BFF1F4B571B7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; }; 01D5DC75EA54630B8805AD59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 02123F620ABB8F19FCE4E7E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; 02BD81436ED17F1341E19522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Component.h"; path = "../../../../modules/juce_gui_basics/components/juce_Component.h"; sourceTree = "SOURCE_ROOT"; }; 02C0DD7DC29B27B39D5FF154 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 02FA201D32033D122C04A1B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Justification.h"; path = "../../../../modules/juce_graphics/placement/juce_Justification.h"; sourceTree = "SOURCE_ROOT"; }; 0324378725B8DEBC11E93953 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedButtonBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.h"; sourceTree = "SOURCE_ROOT"; }; 03BB1C54D9DEDDAB20B854AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextDiff.cpp"; path = "../../../../modules/juce_core/text/juce_TextDiff.cpp"; sourceTree = "SOURCE_ROOT"; }; 03E4C81E1D323C0CD78DC8A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; }; 0493323D5A1374BBEFCFE455 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; 04A6FE27FC63E4D27E857CBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 0525B4E0F2387B1F3AA520F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; }; 068349E735D107BE09BEC641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; 06EF239CDE579FFC28F65BE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 07064C4F0CA036ABDCF9C708 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; }; 0784B69B6377F90FB264DCB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainComponent.h; path = ../../Source/MainComponent.h; sourceTree = "SOURCE_ROOT"; }; 07B9E81DB1A4F13B7FF54FD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 07D2814B9A8E25F3269B675D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; 07D50D8347ED27B84F822D6C = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 081B7C7D1B9CB7F72A193DEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandManager.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h"; sourceTree = "SOURCE_ROOT"; }; 08603D6A5C7D8DDDA1AE4DA3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LuaCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 08C449B44C89E728A89013F3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; 08C730BD0BD4755B55E99BAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeEditorComponent.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 09A3E1630BFC67C63AFEDE3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; 0A421597B03EA9CA355D8BD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 0A82B6536AC2C02E099AB0AB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; }; 0B62C1B2DFE2EE1C8E1EB5B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NormalisableRange.h"; path = "../../../../modules/juce_core/maths/juce_NormalisableRange.h"; sourceTree = "SOURCE_ROOT"; }; 0B92355966B36E2B913BC8EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; }; 0C1C8C5879770EF4E8824EF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; }; 0C36123881F7A4B6A144F272 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; 0C5169FC4BAB96B2F16BF5B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_curl_Network.cpp"; path = "../../../../modules/juce_core/native/juce_curl_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 0C90578962B82B1AE222578E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; }; 0CE43A8B78FB46CE63C0AB6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; 0CFAADB1812DF1EFFFE48116 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; 0D3ACCBA2F79A0C6444AF72C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 0DBB48BEAC0B38D509A6ED6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 0E0B382367017DA9380D3C61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferedInputStream.h"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 0EBBED2D984949E34DA34E8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 0EDDB91E8D84944C3EBACFFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MainComponent.cpp; path = ../../Source/MainComponent.cpp; sourceTree = "SOURCE_ROOT"; }; 0F5CBF5A5C2283DA1344E55E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; 10650C6BB284DC0F6E7DCB5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 116E9A279FB25AE32174C42F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; 118B13BE32C7FDCE82BDC495 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1259079CB2A8907577BBBAA3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertiesFile.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.h"; sourceTree = "SOURCE_ROOT"; }; 130A28E84D438B08C6B5D5A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HyperlinkButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 1316BB7ACE3F151F3B44A3EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; }; 133B528A88E99C116B75BFDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarComponent.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 140B14E0142DF835F1C6D951 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; 140BFF25B0078C0709FF2461 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 1473903057B414B186B8D6A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 14EED238D31DAABE590C749A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 14F44BEA5F54F7E064122CC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; }; 15569873F24C4157977C8D9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; }; 158F40026FBDA4EE9F90CF02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; 15DBBA2C2CCC22B3488B48F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; 1657734A03E0F21166FAE9E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; 1667021AB391F5D9B82B186D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 1679AB8658094A527E7A2811 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; }; 17697EA857D23FAC8FF46868 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../../modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; 1818AAD83B5C0FC5B322446F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConnectedChildProcess.h"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 1846D85E50A6B97BBC5EDD6E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooser.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.h"; sourceTree = "SOURCE_ROOT"; }; 189CC2967B6148BE990281E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; }; 18BF5D458C9584CD0136DCC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeRectangle.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 18F87CFF17A2C8B806B58028 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; }; 1A07D7AE9814E2D42F2B2EEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; 1A6CC0CB9A61C67DF712B06E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToggleButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A849B3BFFE1598017793994 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UndoManager.cpp"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 1A8917A61F4F6E9766564420 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../../modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; }; 1B799004320846B17A0D2820 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; 1B9D255022E9F460E5F710C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; 1BAB3298971199DD4A26042B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; 1BF703172DA6AC2179913394 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Socket.h"; path = "../../../../modules/juce_core/network/juce_Socket.h"; sourceTree = "SOURCE_ROOT"; }; 1C2A1CDE2DA322901B0899F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; 1C3E6A1B46D80DBFEE6CF33B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 1CAE226BEF2243B1FA8CC646 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 1CCD30C2315CF5CD327FFA99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; 1D610C9DF69B955B05EB9A54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; 1D68491BDF0E63AC125D454C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; 1DFCB49A7B79D79376629528 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; 1E19C8C3F46E236277F58F42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; }; 1EC7132F648E537E2B1F95EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 1EECC1DDB24892ED2BE2FC44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 1F16E8AF03971A15157AD981 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HeapBlock.h"; path = "../../../../modules/juce_core/memory/juce_HeapBlock.h"; sourceTree = "SOURCE_ROOT"; }; 1F32C178FF93792406789660 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; 1F4C7ECC97B4C80BD98F32C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 1FC1E37865F424D91228A888 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; }; 1FC89BBE37A0162D7B8A8E64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; }; 2026B0F45584BD5BECC4EFBA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileLogger.cpp"; path = "../../../../modules/juce_core/logging/juce_FileLogger.cpp"; sourceTree = "SOURCE_ROOT"; }; 207945846A9C6558F509C745 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInactivityDetector.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp"; sourceTree = "SOURCE_ROOT"; }; 20A5A541366F7C22EF633114 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; 20BC71D082643A43C9BD37C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableImage.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.h"; sourceTree = "SOURCE_ROOT"; }; 2162A9A1F6F5DF44CBAC2129 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 2199D426EC85451D81636490 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 219B89271C840E2D7E512612 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_android_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; 21A118094F4A8DC6E9343AC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; 2206F8DB2D2D3042FFB24820 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IPAddress.h"; path = "../../../../modules/juce_core/network/juce_IPAddress.h"; sourceTree = "SOURCE_ROOT"; }; 230C6175514E621AA9037C67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; }; 2327E88F48EE9DBD166727F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BooleanPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 234F4B105DF97B936ED47100 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScrollBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.h"; sourceTree = "SOURCE_ROOT"; }; 23925ED31BD8E2D82FF86A31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 23A21EE368F8679E0C40323B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; 23B5C7121187E9533B66FFCB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; }; 2575944C94EF083E2CBDBFA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; 26341A8D55A799AC0ED8B33F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Random.cpp"; path = "../../../../modules/juce_core/maths/juce_Random.cpp"; sourceTree = "SOURCE_ROOT"; }; 26D9D7114D4E9ECBABA9C391 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 27A1A9F9CB957FACCFF348D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 27E36BA8310CE73DCCA58AC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentAnimator.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp"; sourceTree = "SOURCE_ROOT"; }; 293CD4C7F50623F81F3D6297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; 294C8642232443EEC9C4DF3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 295439C55D8A711959ADABD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_win32_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 29610D1C68DD1FA2043A0D95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 2A1CE4FC4448FBE9D4713C5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; }; 2A3D243054F8E1C94ED0A0E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2BB6FE1F813E3EF9FB1FAACE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 2CBD98BBA9322461A3ED0D05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; 2DB2C70618EAA8DC81B2564F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 2DB4D07F237B52911EB0B812 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 2DBE41449BBADA6D1242D7E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; }; 2E621C1E7F2E9FC6A6D14282 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; 2EC797F05D27994FD0B4F19B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 2F014FFE6BB6209B7BBBCB79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; }; 2F1A2B5F25C3F2502932EFF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; }; 2F3A411E38028AE655F7EF95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; 2F55E9B82505B501C1E9B0D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableObjectResizer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h"; sourceTree = "SOURCE_ROOT"; }; 2F5EFAB6DFDBD1661C8D53A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; }; 302AFDDB94F243E1C82AF3E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; }; 304137C2E24F2CC1863D9731 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; }; 30453B2E00C2367919B4AC25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_freetype_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_freetype_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 305C7AE4DF0701B34616E4FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; 309B10A91B0698EC749802D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnection.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.h"; sourceTree = "SOURCE_ROOT"; }; 30D62F5F1125F39CE8D28C78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; }; 3123FA92E774DD0E4788E9FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; }; 31F1BE05C5BC30558F8039AD = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 31FED87B0FA79D42C5B63186 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 32A77D14749535446A0BC825 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; }; 32B8A985D15EAE4008F43D5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; 33BDA746816EE0D0EBB559DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FillType.h"; path = "../../../../modules/juce_graphics/colour/juce_FillType.h"; sourceTree = "SOURCE_ROOT"; }; 3437B0E3EA85400DBEEE0074 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; }; 348CDBF399D99B719511B313 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; }; 34B6C8553DCBD14A2F7207FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 3549AF6032831F9553E74467 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_events/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 35BD72D236BE7ADC019B5564 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../../modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; }; 35CCF611A1FFF0A68FA75161 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 3705B72C4B467A1EABEC9C49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 37380DEDD5BEE5E9267FA12F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; 373E70565BE10D615B096C28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; 3824684DA7C61AA29E386158 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnection.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp"; sourceTree = "SOURCE_ROOT"; }; 3832110FA8DA58E650AB6F9E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; 38E5FF4A3CBEA8C42D9F14CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Random.h"; path = "../../../../modules/juce_core/maths/juce_Random.h"; sourceTree = "SOURCE_ROOT"; }; 3944F07DE8E0975B663BFEB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 39F7F5DC827150D2E57F1DBF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 3A1128BBCB04C3DCE2E5D37E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; 3A8FC4F98008643A60177AEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; 3A9E838A0D5461D20726AE71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; 3B3F316BC1E0486A4FD27686 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; 3B51C055A70A99CDCEDFA399 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../../modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; 3BE1A6F6B461F08095CABAC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Base64.h"; path = "../../../../modules/juce_core/text/juce_Base64.h"; sourceTree = "SOURCE_ROOT"; }; 3CBF4CE2F60BBF9EB9637BC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; 3D32372B5CC311AA696124D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPCompressorOutputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; 3D52A3BB485767A61EF457E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; }; 3D95AB0F7898371918F9E8FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; }; 3E5B3814C7B1B21431D4F234 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; }; 3E65BE3F701901EC447327AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 3F111FBCEE1230015F476C68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; }; 3FB71EFD64D47E52DADCACA4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 403E7E9949CFE8BD73DDD909 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; 408110CA0AFFDF83F3AF497D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; }; 40A7C1EB6363A8FC4A9900B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditorKeyMapper.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h"; sourceTree = "SOURCE_ROOT"; }; 41535CB61E936ECEBB04FFAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemStats.cpp"; path = "../../../../modules/juce_core/system/juce_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; 4239AF0A782192683CE4F2A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyListener.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.h"; sourceTree = "SOURCE_ROOT"; }; 42D4C2092537DD2A5054134F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; 451343A64FCB48BC926E0962 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; 453B6D80B6389BE1341A0A29 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; }; 4543C730A5DA77649C20B6B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; 458C003240D4C31FF940A99C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; 45905746CA7C3BFE98B583C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; 45A89EE380DBADF9105B866A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; }; 46393FE4FE6D8683444CD1A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; 46A2A110922BAD26FB4298C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 46BD0A7BCF4C608DB94285EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; }; 47051A94D9B45B21017A867F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LuaCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 47B6D5118C5FE2D6A452A487 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilenameComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h"; sourceTree = "SOURCE_ROOT"; }; 47BB119E08A7A1A468564B9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; 47D12441679F0062EB7C96AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../../modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; }; 48D212A6051005FB7A4BC338 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageFileFormat.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; 492FBEED85D887CC01080068 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; }; 495652C9E6B06C891281D040 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; 4961AA10B3563523AE1B0BFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileChooserDialogBox.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h"; sourceTree = "SOURCE_ROOT"; }; 498778ED99DF1BA68A6E3A18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; 4A20547D0C763ABB1DE5A9C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; 4A5ED88CC2ED6ADD8A5B102A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; 4A8C64BB96FB93919DDF2166 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 4AA6BD2A3FDFADDCB0322F9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; }; 4C34CB4DC542D86A193C055A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RenderingHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_RenderingHelpers.h"; sourceTree = "SOURCE_ROOT"; }; 4CC331BEE18B3EC4BADF38CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../../modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; }; 4D44E9AD19469774ED8245B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 4D6C90354134741F7F295412 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 4DD07E53E4ABDE534D34981E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HyperlinkButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_HyperlinkButton.h"; sourceTree = "SOURCE_ROOT"; }; 4E1058572E25FD04B7D60700 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; 4E2E741BA1779C70049641D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; 4FF67CE1DFACAFF545D8E9AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 5044BE1EA711B629563F70CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; 505E065430B4C61E119415FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; 5136E02D20343ED8DCD90A20 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 5187A18B4BAC7087C4FE8060 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; 51A4935D712C05D9C75CDDDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; 51F215744097662A34943493 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 521C8693B71C04C387C178F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModifierKeys.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp"; sourceTree = "SOURCE_ROOT"; }; 523B09319B14E721921D830A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; 52AAE149F3EC7BAB0E7703DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 52D7E72C26E3D1589A6A1BD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; 536EB9664EDB02A4CBF9BD28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; 53F3EB3D456B15EF5CC6FC67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; 543A10EED475842E60CE7F3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; 5457E4C7D67E767CCD8B0964 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; }; 54FF1D1CC748FA043A28004F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; 555CE1B4514C7E3BBB1A009E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; }; 558FEC99442C039E45679325 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; }; 55E627FDBA6A7978821CB281 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; }; 56E41C2987E763CEE092B7A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; 56F46591D347CA4272001691 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B0D2EC9A8AC716C07B61137 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyPanel.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B67F01C0BA9323892900AF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedXLock.h"; path = "../../../../modules/juce_events/native/juce_ScopedXLock.h"; sourceTree = "SOURCE_ROOT"; }; 5B6BC49A6F74A8021E73E3A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 5B7AF55C74CE6D19A9AC7354 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; 5B9C910F85E921B561995ED3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; }; 5BFC164CB4F8BC4FD839EDC8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5C49EBA49810FE7840039EA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 5C4A0785E529A72663FC155E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 5D8B625E558414B158ACA721 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 5DBA0BFB2868C3E1F1E871FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandTarget.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp"; sourceTree = "SOURCE_ROOT"; }; 5E2CB1D4DC6ED933AA81C43A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5E38635277CA0767A3B1A229 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; }; 5E4F70838E79D6A25B8A80B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedAppComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h"; sourceTree = "SOURCE_ROOT"; }; 5E716763BE04772CA06592DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputSource.h"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.h"; sourceTree = "SOURCE_ROOT"; }; 5F55D2FE7338877E1CDD4B45 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; }; 5FCCDEEE0E7A1AD4179D1E1D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BigInteger.cpp"; path = "../../../../modules/juce_core/maths/juce_BigInteger.cpp"; sourceTree = "SOURCE_ROOT"; }; 5FE579E53ADAEEDEDF2AA2D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Path.h"; path = "../../../../modules/juce_graphics/geometry/juce_Path.h"; sourceTree = "SOURCE_ROOT"; }; 601874CF9435F18E7B69AE6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; }; 60DDA3B2D06C918647F0F2FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; }; 60F8D50274C2C6DEA40C13AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; 6108C64B7B0AD2CA64F30DC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; 614E3EC828D056202DC10732 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_basics.h"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.h"; sourceTree = "SOURCE_ROOT"; }; 61E66D9A002421AAA36E6CA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; }; 6261EB3783A9DF264A122DC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; 62733AC6CAD0F79BEAE0CF4F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; 62B84090765C713CC4250BB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; 62DF24F1C7E14730CDA3F27B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; }; 62E67D3BBC3098E5BC56F835 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 632A6E49E7D869A9744A4491 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; 6421875FDD1DB8F8C322F3A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; 64D016CA7156861886442427 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; 6501D18FEF031C7FEF45F39E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; }; 65269D81DF23F8211A61032E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 652822ADCD7393AF40945DA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Viewport.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.cpp"; sourceTree = "SOURCE_ROOT"; }; 659BEDAE6C17DD4FA6B74971 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; 65A7736ECC548A9FD10E4F42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; }; 65A88D5E8C1F0BE74F05C072 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; 65B0A35F0ED651E60556A0E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; }; 65DBA30ACD7C6156850F1F4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; }; 65FC1A9B2D0CDCD2D0180A17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; }; 6603F93CB38F0E7BEB779A9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TimeSliceThread.cpp"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp"; sourceTree = "SOURCE_ROOT"; }; 6615B376201BA6A338D7177E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../../modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; }; 67313924EE210EADEB66ECBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 675E6456CBD23C87B8F14544 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; 6816BB0D62EC676409B3587F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; }; 6889EF825EA839830C733D07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathStrokeType.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.h"; sourceTree = "SOURCE_ROOT"; }; 68CC5DF188B4F8D9BC4A397A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_ClangBugWorkaround.h"; path = "../../../../modules/juce_core/native/juce_mac_ClangBugWorkaround.h"; sourceTree = "SOURCE_ROOT"; }; 69266B83D819323230CB67B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 6930D056DFFC6EAA2B52E045 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinate.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h"; sourceTree = "SOURCE_ROOT"; }; 699E20F1575B18C3D909940A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; }; 6A8D0F24F0A1F95A52845506 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; 6B1B6046C54E082A9E25D69C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; 6B252EAC72CB94D5DC06C284 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; }; 6B29E55E890064489381C65A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePoint.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp"; sourceTree = "SOURCE_ROOT"; }; 6B625D967F13EC4AFB7BADCA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; 6C556B58616171CC70488F0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; }; 6C632E34FD1B617525987657 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; }; 6CB12AF57587118CCC37BC8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; 6DE47E2E070BC5173F0985BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Uuid.h"; path = "../../../../modules/juce_core/misc/juce_Uuid.h"; sourceTree = "SOURCE_ROOT"; }; 6E8326A0BC2AAA5F82287220 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; 6ED446E76E238A6243800BB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; 6FD7AFA0B4E7F4E848E33737 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ElementComparator.h"; path = "../../../../modules/juce_core/containers/juce_ElementComparator.h"; sourceTree = "SOURCE_ROOT"; }; 70C7586ACDA27A1FFC0C7AEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 70EEC63C3D1175FD705583F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBoundsConstrainer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp"; sourceTree = "SOURCE_ROOT"; }; 70F0A80A99565603FECCF39D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; 717C583F454C2AF7BAF710A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ArrowButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.cpp"; sourceTree = "SOURCE_ROOT"; }; 71B6F45D512F8B8D802B1927 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; }; 71D4E1218CF09450B41469B9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../../modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; }; 71D588CCC35F0C1A5A0E9E3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; 71D7F3CED9D84ECF00E3C7DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; 71D8C3F48801BEF5DB86B619 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; }; 71EA769D5757AB3B16E5E6E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7224FBF6C8769342A0E3AC71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; }; 732EB7C9CF8E817B7239DBA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; }; 7402FA767F4FD9CCD3DD1578 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 744475CFFBA91FDA03DDF659 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniserFunctions.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h"; sourceTree = "SOURCE_ROOT"; }; 74AB579ADDC7C355C5704A16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; }; 75228523BAA6F029F315E6F1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; 754A3F88F55E0FB7F179F2E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; }; 755B3410E5F1D6CD7CA350E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; 774896BADE9613608E2A1EFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 786ABCE38FCC63E58ED44C5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_android_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; 793CDD14387F49E8757B9042 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTree.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTree.cpp"; sourceTree = "SOURCE_ROOT"; }; 79A4F1CF3FB5D20104693598 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; 7A6E2A815D9AE276CF064A24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemTrayIconComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7A704BB75CD29EA20C349CDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableImage.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableImage.cpp"; sourceTree = "SOURCE_ROOT"; }; 7A969F79FFA4031B868F9EED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; }; 7B78D4684FE1D74EA847C1B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; 7BB92A7F312D9DA6AA53FAC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; 7C019D56F09C3415D36A0058 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; 7C8D639A2FC3EA14709367B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C91591CECC16FC22329ADB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 7C9FE884EFA2EF696132B4D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathIterator.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; 7D41725B59E3415350C8E035 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserListener.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h"; sourceTree = "SOURCE_ROOT"; }; 7D87E3CB6613ADCE674B00BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 7E6FE81AB4D5B08FF0F4E8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; }; 7E8133ED13638E1D0C6F849F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; }; 7E9061B22520E892C910ECC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 7EBAA8C6B6447AC1707EA1A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../../../modules/juce_events/native/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; 7EE080AF681F1D927DF35B95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; 81A30FE08E3703C49D5ECC93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; 8215524ADDC78289AD8BD4CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; 822342F0C44B761EAB020F86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlElement.h"; path = "../../../../modules/juce_core/xml/juce_XmlElement.h"; sourceTree = "SOURCE_ROOT"; }; 8288AF688CC74640DDA9309F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; 8299092A070FB3E459760F8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LocalisedStrings.h"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.h"; sourceTree = "SOURCE_ROOT"; }; 832D1429ADEE1B07AB3693A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; 83F74BA834946705EB9ED79C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; 8414F7B17DA39B4D0B4C3739 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; 84F1747F90732DE67C601E3A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; 85CC7C10F36E6A615CF24289 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; 86152CB848C36CC25014D020 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; }; 86A5EC73BF65BF9D75A87BD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; 86AE81E813B7FC9D59B66C05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; }; 86ECCFC606602CF42A755A8D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; }; 8894A48D347FE788EFD7D0AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; }; 88DA5DAE40649E777AD45ECA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; 895273CAD9B1B37100C11B0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; }; 89898A337D18F63C9DDE1AEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 898C4B2D036C170A6ED46DD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; 89A3C346A8D9173D9CBDD088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; }; 89C44D65C6EA486543A139E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; }; 89F164CF6D809DD8AB8FDB55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SharedResourcePointer.h"; path = "../../../../modules/juce_core/memory/juce_SharedResourcePointer.h"; sourceTree = "SOURCE_ROOT"; }; 8A3F6FFBE098968DC1C4538C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPress.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BA63270C9EBFE66AF17E7EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; }; 8BEBE3E3D47AD3E8AAACF7BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; }; 8C439BE182790867BCC9ADFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; 8E018B63249825F4D00DEB6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; 8E07428942BF09DB0CC43EE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; 8E1A22B596E70DF1D0C15F8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; 8E3F7589FDC16A7DA986FC42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; 8EA982741224B1BF1BB840B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; 8EED918F1D3876E4EB17F5A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HighResolutionTimer.h"; path = "../../../../modules/juce_core/threads/juce_HighResolutionTimer.h"; sourceTree = "SOURCE_ROOT"; }; 8F6E58F2C5CA9D3C6DFEDDB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; 8F92FD719B301B68F4945EA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PlatformDefs.h"; path = "../../../../modules/juce_core/system/juce_PlatformDefs.h"; sourceTree = "SOURCE_ROOT"; }; 8F977FE20118240233D8E05E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTreeSynchroniser.h"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h"; sourceTree = "SOURCE_ROOT"; }; 8FA331691E39F5D8FB0DCDF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; 8FBE4F804ECCBADAA37592F0 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_gui_extra/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; 8FC7BFF093D665F8178EC297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_events.mm"; path = "../../../../modules/juce_events/juce_events.mm"; sourceTree = "SOURCE_ROOT"; }; 8FE02C7AD75EE732A416DA8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; 90CFC8BC9D8A156A512D2A39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentMovementWatcher.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp"; sourceTree = "SOURCE_ROOT"; }; 9132D1324A6D6D049C9B2FFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; }; 918FA23368FDE2ECDDC1CD08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseCursor.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.cpp"; sourceTree = "SOURCE_ROOT"; }; 937C0CF5DC3FFF6161D7776D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; 939EC86DADE3927918AA327C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; }; 93D1FA25103C27AFCCA1AAAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AlertWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; 942E454B72BC4A6CF702F2B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_CommonFile.cpp"; path = "../../../../modules/juce_core/native/juce_linux_CommonFile.cpp"; sourceTree = "SOURCE_ROOT"; }; 94852FE71706851643C6BDE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBrowserComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; }; 956BE6001A359C423014CED7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; 95FFFE6A27ACBB4E28739E88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LinkedListPointer.h"; path = "../../../../modules/juce_core/containers/juce_LinkedListPointer.h"; sourceTree = "SOURCE_ROOT"; }; 966BC35C454118B1B895436D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; 971270DAD06B91F5B156C362 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPool.cpp"; path = "../../../../modules/juce_core/text/juce_StringPool.cpp"; sourceTree = "SOURCE_ROOT"; }; 97BFE20948105F757379B4F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; 981D4316CDD5076577509386 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; }; 984AA2236CD860A916ACF57E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MountedVolumeListChangeDetector.h"; path = "../../../../modules/juce_events/messages/juce_MountedVolumeListChangeDetector.h"; sourceTree = "SOURCE_ROOT"; }; 988BF5A923D08778EAFA524F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colour.h"; path = "../../../../modules/juce_graphics/colour/juce_Colour.h"; sourceTree = "SOURCE_ROOT"; }; 98B2591FE72E0B3D259F332F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LocalisedStrings.cpp"; path = "../../../../modules/juce_core/text/juce_LocalisedStrings.cpp"; sourceTree = "SOURCE_ROOT"; }; 994C767AF66B2C4731EAF528 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; 994F654E220C76091B1672F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = ../../JuceLibraryCode/AppConfig.h; sourceTree = "SOURCE_ROOT"; }; 99FBA3CCFA443DB353B07F71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; }; 9AF8A6A41A7FFACC570EBCF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; 9B02109FBEEB89243D72FC11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B0ADC4932AEE1AEDBAAB8AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; 9B5E2905BAEE2A1E7B7657AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringRef.h"; path = "../../../../modules/juce_core/text/juce_StringRef.h"; sourceTree = "SOURCE_ROOT"; }; 9CBEE085CF47C89A93F2783E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; }; 9D0323FECB030B06FBD0F627 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; 9EDBF1BC8604795A1B0774C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; }; 9EF2F14290768DC26DBA6149 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; 9F3BAC34BBE550826A0C2B4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SVGParser.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_SVGParser.cpp"; sourceTree = "SOURCE_ROOT"; }; 9F994395393E0BFB8A320B04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../../modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; }; 9FBFACCA56589CDCC3D78F0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadPool.cpp"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.cpp"; sourceTree = "SOURCE_ROOT"; }; A0816F5D3CB1D0509C714252 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V1.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h"; sourceTree = "SOURCE_ROOT"; }; A10311375CB3203008B0DD24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTreeSynchroniser.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp"; sourceTree = "SOURCE_ROOT"; }; A1637DEBD3438ACB0D7F48E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colour.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colour.cpp"; sourceTree = "SOURCE_ROOT"; }; A16B3D0EA58919EDAEB08792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseEvent.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.cpp"; sourceTree = "SOURCE_ROOT"; }; A16DA9030A96B26C6BF52FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; A17E8E8081DF2A399C206DF2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; }; A1C2A2081FDEF1CB6DB1E1BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../../modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; }; A20C7B40F6C5309CBEC5038E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; A29400BAA8E7CD1D1CA48C79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; A2E15C0836AF048130C893F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; A387B8D5928ABA707B55736D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; A3961F3261459774B65EBD3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; A42FDF7379A2708B3726B0BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; A4C303DC411E19BA54A10871 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; A507DE8ED0DFE58D8443F1D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ButtonPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A53847EDB5D843028F3F1938 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPress.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h"; sourceTree = "SOURCE_ROOT"; }; A53EADE9B0E95059589408D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; A546FAE114D127B368A631D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; }; A570C960A1D5C3F9E50A928D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; A5AFA37677301D3BEFDEB596 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DeletedAtShutdown.h"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.h"; sourceTree = "SOURCE_ROOT"; }; A5E748EC8CB636CEBF7BA497 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; A74B522F55C871C8C41E253A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableBorderComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A75D66A07D6443E350214CC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; A7BF2E0EF7E381B811ED7981 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; A7F0F0269FBC2B91DCB49989 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Network.mm"; path = "../../../../modules/juce_core/native/juce_mac_Network.mm"; sourceTree = "SOURCE_ROOT"; }; A829611659CB4BDC11F0B649 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_File.h"; path = "../../../../modules/juce_core/files/juce_File.h"; sourceTree = "SOURCE_ROOT"; }; A85BC2CE425BF6058D12702A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; A88106868D7BACF251D9EAA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPDecompressorInputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; A93E36A200F473B766F6A8BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; A93E7F99453C2CD22B7B7115 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; A9CCD637A179CD1BA7A27028 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableEdgeComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; A9DFB028B3E73E65E1407098 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; AA75E89A148ADF8C55671CA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; }; AB5FD54FE20E3B8792AE7601 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; }; AB625562B978102C10FD5311 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; }; AB7582784F8607123662C3EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Time.h"; path = "../../../../modules/juce_core/time/juce_Time.h"; sourceTree = "SOURCE_ROOT"; }; AC0B866AA2C5F577AA221143 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; }; AC488F0777290DB214E6E937 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Misc.cpp"; path = "../../../../modules/juce_core/native/juce_android_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; AC975C4D82A4C525F6D879A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; ACD09DE112FDD1028AC1E11B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; }; ACD0AD8EACA79E8A6273413E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; AD0FE0F54DE76E0C35A3B692 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Clipboard.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Clipboard.cpp"; sourceTree = "SOURCE_ROOT"; }; AD1F1A9815D8660FA0305028 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDiff.h"; path = "../../../../modules/juce_core/text/juce_TextDiff.h"; sourceTree = "SOURCE_ROOT"; }; ADC3125F0DCD2924ACB173EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImagePreviewComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; ADC4B846B6B3C43868E7E739 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; AE8492E6A10C324142D09EA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; AEB923D05C620EF9E927B48C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Javascript.cpp"; path = "../../../../modules/juce_core/javascript/juce_Javascript.cpp"; sourceTree = "SOURCE_ROOT"; }; AF0CC5F28EB37B1FABBDD5DD = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; AF388A883A899EBF58A39D68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; AFED7B4CED7DCA33DEA5F546 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_mac_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; B05CF8A5EE33A7062E10DFD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; B0644268B39736787E910714 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInactivityDetector.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h"; sourceTree = "SOURCE_ROOT"; }; B0D3494829C70D3D31E7195C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; B12282D4958ECC33E33301E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; }; B14210A622924919775310DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; }; B1557FE77AC7D7FBF5A745F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; B16933E10DCBA3CC20ADFAFF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; }; B2485AFF4249D9C40B9B54CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; B2650D0AA7710D3C2627238A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; B2C3D53237084A8C79EE8B16 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; B2EE22875A0E4C2679EFD3CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; B3978067F1432E1A2618A5DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = "SOURCE_ROOT"; }; B39A0E62D1C43A61243F6864 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; B3AE3983352E66690C865088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; B3CEFD554B22D2764327CC70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; }; B4A651618E07F64027C2DB75 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; }; B531D38613FDEC368336A51E = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = "SOURCE_ROOT"; }; B5880B8DE2B7362EF263D82A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; }; B5D117435CCB80BF33D4AD00 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; B63040F76DC9E9F5256AC022 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SelectedItemSet.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_SelectedItemSet.h"; sourceTree = "SOURCE_ROOT"; }; B6AC99C26F679771A2F942B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; B6C28B2DAE4802FA291E3487 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; }; B6C345F16BFAD37B64A5605A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; }; B700739654886DC8E7C1293B = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = "SOURCE_ROOT"; }; B78154B28539A2E8152D2B9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; }; B7F363708A0CDC05D9C04876 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; }; B86F88CBFF4E577BCCF8D620 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; B8E7EC57DAC2DE65CFEC21E0 = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; B909BE26785040CF82533E80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; }; B93ACCE3F29334143039311C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; }; B9BC9B5BC286D2C9356DDF47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; BA4ECA72D6EADF487141684A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../../modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; BA5EF35337DDE160BCA69BE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SubregionStream.h"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.h"; sourceTree = "SOURCE_ROOT"; }; BA92F6D1BF35CF6623B0BD1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; BAC8A1406F49B48E85DBF2E7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; BD8335C336E988FF37044F21 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputSource.cpp"; path = "../../../../modules/juce_core/streams/juce_FileInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; BDA5AC3B903F05E4ACBD16DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; }; BDCB1657E429C9F03CB17827 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; BE2B2B455F814E0C076837C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; BE4B29F0D308D1BA1046D8DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; BE72D524BA45BC24B3264F2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; }; BF2D0795D820910CCB587033 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; BFF18A9C80EEDD74D0223EEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CharacterFunctions.cpp"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.cpp"; sourceTree = "SOURCE_ROOT"; }; C001B0F67BB17E32A3BC8F92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; C016810AF5F23520BE9EBF2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; C1980330512BAADDA1CB0D24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; C1A8DCB1BD40331EFC186CF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C1CC6D2EB9A261B4D2B926BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseEvent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseEvent.h"; sourceTree = "SOURCE_ROOT"; }; C2012B18C8652969617417E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; }; C22BEA19FDBE55F5AAFE9D36 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; C234FBE6290024F51478686E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; }; C26182D37D8E31BD85FDEF5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CaretComponent.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; C2F65CD24CD207EFD5FAF7F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; C3AC4696140DE22682732FB6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; C40948D9BB7965E367551251 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Line.h"; path = "../../../../modules/juce_graphics/geometry/juce_Line.h"; sourceTree = "SOURCE_ROOT"; }; C4272B1ABE77520CD6E55EB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; }; C4788802A0C1A2908645028B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; C511170BCB0784C896826010 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; C5401AF900EB8056416C1294 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ContainerDeletePolicy.h"; path = "../../../../modules/juce_core/memory/juce_ContainerDeletePolicy.h"; sourceTree = "SOURCE_ROOT"; }; C546B9AC32E553D5969B2537 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_events/messages/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; C56DB2DC67E1DBA6C29044CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V2.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp"; sourceTree = "SOURCE_ROOT"; }; C626FA20C4D021076A4B943E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; C6313E766ECDCE48435BA5A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; }; C63DB03ADC0A6E3C45DD88C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; C64E52A86F2984D4A5F82EF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeTime.h"; path = "../../../../modules/juce_core/time/juce_RelativeTime.h"; sourceTree = "SOURCE_ROOT"; }; C6A1B4D93C11BA29F36801E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BorderSize.h"; path = "../../../../modules/juce_graphics/geometry/juce_BorderSize.h"; sourceTree = "SOURCE_ROOT"; }; C6BCFCD2732C7153C33B6168 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; }; C71BB293CEF65605741E0CDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; }; C743089A221B553DA6B45F65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; C75917573F92864DA80C9A11 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; C76F648E207E0B0E8E98C8B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; C794DBEF09A83E199223D205 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_graphics.h"; path = "../../../../modules/juce_graphics/juce_graphics.h"; sourceTree = "SOURCE_ROOT"; }; C79D5D6DDCC88F29C3616761 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; C7A6585C8F7FB3EF78837563 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; C7D88B24A0DC64FDD1EE28FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; C7E5E361633310B5C84C86C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileFilter.h"; path = "../../../../modules/juce_core/files/juce_FileFilter.h"; sourceTree = "SOURCE_ROOT"; }; C86288867D1603D982FB9AC9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_ComSmartPtr.h"; path = "../../../../modules/juce_core/native/juce_win32_ComSmartPtr.h"; sourceTree = "SOURCE_ROOT"; }; C88CAA67E7AD9181F1C9E3CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; }; C894801E6F257C0E84E5C03F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTimer.h"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.h"; sourceTree = "SOURCE_ROOT"; }; C8AF9CABB9019702BBAE46AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; }; CAA3289777033409B1E9050C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; CAC058A2D753BB9E0559D8EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadower.h"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.h"; sourceTree = "SOURCE_ROOT"; }; CB568736EE6D12C909B6A8F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; }; CB713D4A63E08276975B7639 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CB85029BEDE10DB68C5BAA21 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; CBE147D9B86A9F69A7CCEC3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CC95B7798FE5B9D685B3573D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CD87ECBCB1347FDB040D63FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; CD9D30D3D61F095124F6D916 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBrowserComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; CE290D98DCBBDC902406E73F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; CE68E38ECB2AB54F08F79917 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.h"; sourceTree = "SOURCE_ROOT"; }; CF9F9D13FD1B7ED219092643 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; D06CEB2AEDFB98E1406E06F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; }; D0B7D5B46558A7393B43C79B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarComponent.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarComponent.h"; sourceTree = "SOURCE_ROOT"; }; D45C31982C2D140B6B64D1C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; D49594C439C67202647804D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Value.h"; path = "../../../../modules/juce_data_structures/values/juce_Value.h"; sourceTree = "SOURCE_ROOT"; }; D4ED28003B9120E85F5CD490 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; D4F8F05BFF087B2BCA01CB71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MACAddress.cpp"; path = "../../../../modules/juce_core/network/juce_MACAddress.cpp"; sourceTree = "SOURCE_ROOT"; }; D5054A3D5EBDC47D51FC99F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; D53B158241A875303FC52D8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageManager.h"; path = "../../../../modules/juce_events/messages/juce_MessageManager.h"; sourceTree = "SOURCE_ROOT"; }; D5AAA258357323FD8DBC7B08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; D624E1F31ADE1C718E97A3C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; }; D6BC0BD9CD8133D8634FFAB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; D711FA513F8E9F696570DBB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; }; D735FA88C8465C02D4217A39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; D882D6E64CEFE8FFE435EF40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; DA64460418AFD14930104FEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_SystemStats.mm"; path = "../../../../modules/juce_core/native/juce_mac_SystemStats.mm"; sourceTree = "SOURCE_ROOT"; }; DA8CFA399CD27524DB69AD78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; DB57D9360A4FA63286A9E305 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ProgressBar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.cpp"; sourceTree = "SOURCE_ROOT"; }; DB995735BEC8A6CCA141BEAD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; }; DBBD318E15A635AACB31E1DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPosition.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPosition.h"; sourceTree = "SOURCE_ROOT"; }; DBE5789816F028CE53FD3EB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; DC4EE2A66A86B99C8D9B0068 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; }; DCCDA2F20A439FE5044946DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AnimatedAppComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; DD10783090721EFE21E4FAA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; DD374C28FF1CF5F121C3C6E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; DD6356DF25DE4F39BFB2BD87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; }; DD7B2584B0C91BB4124A397E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; DD7DC4C53F386AD914887EDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPool.h"; path = "../../../../modules/juce_core/text/juce_StringPool.h"; sourceTree = "SOURCE_ROOT"; }; DF82F535AAA1380C3213FF03 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; DFB1FF7E047D9883528DECF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; E02684265B013C418CC7A242 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; E02BE252CF20E4FABAC9A7B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; }; E04A33E4F8847DE1E285C089 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; E143BF0720845D8A25BB16E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; }; E1592FAB1A9F6FAC33F051BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; }; E1774E60A49BD0CC9F7DB6B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; E281E7EA009C44FA607DAFEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; E2C9F5675F700544E40B46C1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; E31FA0995B22027AEF89904B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; }; E3273B696D8398C56B0F1A40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; }; E41E6A613E45920223A133F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; E422C589FA0328C35A0549FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; E4AF8704D952EA14B38CA782 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; E536D2E0E822CA257FA97875 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; E58624F033F218AF36C7F9FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; E597DB183789D09B45395742 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; E597E0071A0752D8B87C0C7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; }; E62053E448B91F1A968D6B0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; }; E6CD70420EF8F0E3CAD9ED5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; }; E7405CD3B6CF257A84E60DB5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; }; E7CEB65B72C024546E5927A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; }; E80A7D62B2B3F4BD2CD3F170 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; }; E830FDCCA2799244C53AEB8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; }; E833133B78833DA0D34F48A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; E862612C6909A6188FBEB8C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; }; E8C858BC5875BA7F76E62B28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; }; E8DCBADAA3B789839C797F82 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; E945ED94EAF101B29713C322 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; }; E96CBEBCDABA3EA741C4C2EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; E9904E84AFCF3AB39B03BAA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; }; EA433D25CF79DF86FEF978D1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; ECC4847BBD2AC72116506F0E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_JSON.h"; path = "../../../../modules/juce_core/javascript/juce_JSON.h"; sourceTree = "SOURCE_ROOT"; }; ED577465CA22A65861192A35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; }; ED872E47438BBE6325FE78F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; EE785DBFA288EFA2E7AB2108 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; EF28BA2B5E24F4749F732230 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; }; EF3A7A1A871BAB32EA1B46EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../../modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; EF54929F7151858D8FF8107B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; EF932865774E86525CE7FC55 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; EFE00478AEAFE39D81B0E59D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; }; EFE65E031B01332448C2BE5E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; }; F003AC63C800E3F090BF217F = {isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_core/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; F08B148BBAEA45BCDA3F066F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; F0A440A64636CA5008C1D76A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; F21F13BF684528EB7041BD67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; }; F26B1DF1D28880AA0099B36D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; F2AA4EBDE6E999C033A8CA65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; }; F2C96C26ACDFFE9D480D5561 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; }; F3327A4ED4197E583711EC38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; F35CA3BED53A2146B7623ECA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoableAction.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoableAction.h"; sourceTree = "SOURCE_ROOT"; }; F3F9135662EDBBC14EBC448C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_android_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; F420591CACE7056F78000039 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; }; F45A8AE5F6E6FA5F6AEC8D12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; }; F4AB976B460420C5C94E6E9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; F5047DA45BA2ECE24D308403 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LiveConstantEditor.h"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.h"; sourceTree = "SOURCE_ROOT"; }; F58C62E4CFF820B85CEF0A9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; }; F59A5377B8D4476B34214F98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPressMappingSet.h"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h"; sourceTree = "SOURCE_ROOT"; }; F5D2E9784191EC7F2DFA3949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; F5FD842A428369A565BC92E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; F69E6E1AC446B803B6C6A6B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Font.h"; path = "../../../../modules/juce_graphics/fonts/juce_Font.h"; sourceTree = "SOURCE_ROOT"; }; F6B44EB4315A24F4359BF2B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPairArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringPairArray.cpp"; sourceTree = "SOURCE_ROOT"; }; F6CA8CB0E2135154E38E9707 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; F78633365BAD28DA5864C502 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; }; F83EC8D59072A524F5DA56B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../../modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; }; F86158611AE1654F4BCAFC47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; F8FDB57B9F26F2B0582CBEED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; }; F92040E5407E1B24B9D740C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; }; F93E87E35290A40DC20A4D44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; }; F9816E9564DF0FD05C77B845 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiDocumentPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h"; sourceTree = "SOURCE_ROOT"; }; FA3161F4692D54C87001BCD7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; }; FB1A1B08CB724305EBC233A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; }; FB3723E1113ED13B4B8DF09A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp"; sourceTree = "SOURCE_ROOT"; }; FB6FA17C00AB569935B5CFF8 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; FB845B6C46248D66EB02A862 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; FB9E2985FBE36494513C83A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; }; FC00A16A6756DBFE0B875F5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; FC47B303DF1BE68BE78F9079 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; }; FD5D001673478C39B79A9C6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BigInteger.h"; path = "../../../../modules/juce_core/maths/juce_BigInteger.h"; sourceTree = "SOURCE_ROOT"; }; FD7E5A4B8C6532BD458B2A94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; FDDA86C3FCCC3C74F7CDA53D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_core.h"; path = "../../../../modules/juce_core/juce_core.h"; sourceTree = "SOURCE_ROOT"; }; FE39F19585CBAE3EE247840C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; }; FE8B93BA3F56CCC0BB37A5C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; FE9531D38CA4C273B6FB87A7 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; EA398D9C544440E06637C134 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; FEA9C3FC8BE313C619C3D195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DocumentWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; FED2586B3C7EA1BBA5512D58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; FF06CDF5B9CF3DE2EA741D54 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConcertinaPanel.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; FF263A986694A1ADAA51D156 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; }; FF49DBB348CFFF3F396FB712 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; }; 39BDB517F5C4ED09B374411D = {isa = PBXGroup; children = ( B3978067F1432E1A2618A5DB, 0EDDB91E8D84944C3EBACFFE, 0784B69B6377F90FB264DCB0, ); name = Source; sourceTree = ""; }; 23A603C0DAA7E2E423A4123A = {isa = PBXGroup; children = ( 39BDB517F5C4ED09B374411D, ); name = HelloWorld; sourceTree = ""; }; 53B7ECB896E5903DD2493E14 = {isa = PBXGroup; children = ( F92040E5407E1B24B9D740C2, 3BE1A6F6B461F08095CABAC9, BFF18A9C80EEDD74D0223EEC, 5D8B625E558414B158ACA721, E597E0071A0752D8B87C0C7A, E62053E448B91F1A968D6B0C, C743089A221B553DA6B45F65, 898C4B2D036C170A6ED46DD0, E02684265B013C418CC7A242, 293CD4C7F50623F81F3D6297, 98B2591FE72E0B3D259F332F, 8299092A070FB3E459760F8C, 2E621C1E7F2E9FC6A6D14282, 52D7E72C26E3D1589A6A1BD4, BA4ECA72D6EADF487141684A, 408110CA0AFFDF83F3AF497D, D4ED28003B9120E85F5CD490, F6B44EB4315A24F4359BF2B5, 1D68491BDF0E63AC125D454C, 971270DAD06B91F5B156C362, DD7DC4C53F386AD914887EDA, 9B5E2905BAEE2A1E7B7657AF, 03BB1C54D9DEDDAB20B854AD, AD1F1A9815D8660FA0305028, ); name = text; sourceTree = ""; }; C3BF0F36B4C2A20B594B2C17 = {isa = PBXGroup; children = ( 5FCCDEEE0E7A1AD4179D1E1D, FD5D001673478C39B79A9C6A, 403E7E9949CFE8BD73DDD909, AB625562B978102C10FD5311, 39F7F5DC827150D2E57F1DBF, 0B62C1B2DFE2EE1C8E1EB5B6, 26341A8D55A799AC0ED8B33F, 38E5FF4A3CBEA8C42D9F14CD, F83EC8D59072A524F5DA56B0, ); name = maths; sourceTree = ""; }; 283F53CC2F8E672B54F90A31 = {isa = PBXGroup; children = ( 60DDA3B2D06C918647F0F2FF, AA75E89A148ADF8C55671CA0, C5401AF900EB8056416C1294, 1F16E8AF03971A15157AD981, 62733AC6CAD0F79BEAE0CF4F, 09A3E1630BFC67C63AFEDE3A, 46BD0A7BCF4C608DB94285EC, 0B92355966B36E2B913BC8EE, EF28BA2B5E24F4749F732230, 601874CF9435F18E7B69AE6A, 45905746CA7C3BFE98B583C9, 89F164CF6D809DD8AB8FDB55, 6C556B58616171CC70488F0D, 6615B376201BA6A338D7177E, ); name = memory; sourceTree = ""; }; 7582B2AE14482E2927B3AE2F = {isa = PBXGroup; children = ( 02123F620ABB8F19FCE4E7E5, F5D2E9784191EC7F2DFA3949, 068349E735D107BE09BEC641, 348CDBF399D99B719511B313, E945ED94EAF101B29713C322, 8288AF688CC74640DDA9309F, 6FD7AFA0B4E7F4E848E33737, B5D117435CCB80BF33D4AD00, 95FFFE6A27ACBB4E28739E88, 1B799004320846B17A0D2820, 07B9E81DB1A4F13B7FF54FD4, 453B6D80B6389BE1341A0A29, 632A6E49E7D869A9744A4491, 675E6456CBD23C87B8F14544, FF263A986694A1ADAA51D156, B6C345F16BFAD37B64A5605A, 5E38635277CA0767A3B1A229, E04A33E4F8847DE1E285C089, E6CD70420EF8F0E3CAD9ED5B, 7A969F79FFA4031B868F9EED, A17E8E8081DF2A399C206DF2, ); name = containers; sourceTree = ""; }; BF229D931FB1A5222CD9DB43 = {isa = PBXGroup; children = ( C3AC4696140DE22682732FB6, 61E66D9A002421AAA36E6CA2, F93E87E35290A40DC20A4D44, 65B0A35F0ED651E60556A0E4, 7C91591CECC16FC22329ADB8, 8EED918F1D3876E4EB17F5A5, E7CEB65B72C024546E5927A7, 6B625D967F13EC4AFB7BADCA, DA8CFA399CD27524DB69AD78, 1DFCB49A7B79D79376629528, E830FDCCA2799244C53AEB8F, 71B6F45D512F8B8D802B1927, C016810AF5F23520BE9EBF2E, 832D1429ADEE1B07AB3693A3, 62DF24F1C7E14730CDA3F27B, 0CE43A8B78FB46CE63C0AB6A, B6AC99C26F679771A2F942B5, 9FBFACCA56589CDCC3D78F0E, 65DBA30ACD7C6156850F1F4E, 6603F93CB38F0E7BEB779A9D, B4A651618E07F64027C2DB75, D624E1F31ADE1C718E97A3C1, ); name = threads; sourceTree = ""; }; CFA0FE5274773CA97B9EA5A1 = {isa = PBXGroup; children = ( B5880B8DE2B7362EF263D82A, 8E1A22B596E70DF1D0C15F8C, 15569873F24C4157977C8D9F, C64E52A86F2984D4A5F82EF8, 8215524ADDC78289AD8BD4CE, AB7582784F8607123662C3EC, ); name = time; sourceTree = ""; }; 120D356AA058212F80C97EAB = {isa = PBXGroup; children = ( FC47B303DF1BE68BE78F9079, D882D6E64CEFE8FFE435EF40, 5457E4C7D67E767CCD8B0964, A829611659CB4BDC11F0B649, 1473903057B414B186B8D6A7, C7E5E361633310B5C84C86C8, BE2B2B455F814E0C076837C2, 3944F07DE8E0975B663BFEB8, D6BC0BD9CD8133D8634FFAB7, F26B1DF1D28880AA0099B36D, AF388A883A899EBF58A39D68, BDA5AC3B903F05E4ACBD16DC, C79D5D6DDCC88F29C3616761, 1CAE226BEF2243B1FA8CC646, F5FD842A428369A565BC92E4, 83F74BA834946705EB9ED79C, 1657734A03E0F21166FAE9E8, ); name = files; sourceTree = ""; }; 2AE9B24F8D2F81FB9B7FF4C7 = {isa = PBXGroup; children = ( 21A118094F4A8DC6E9343AC6, 2206F8DB2D2D3042FFB24820, D4F8F05BFF087B2BCA01CB71, 71D4E1218CF09450B41469B9, 0A421597B03EA9CA355D8BD1, 6B252EAC72CB94D5DC06C284, E02BE252CF20E4FABAC9A7B2, 1BF703172DA6AC2179913394, DD6356DF25DE4F39BFB2BD87, 3A1128BBCB04C3DCE2E5D37E, ); name = network; sourceTree = ""; }; D46664D5E1C590C441D4F80B = {isa = PBXGroup; children = ( 0DBB48BEAC0B38D509A6ED6F, 0E0B382367017DA9380D3C61, BD8335C336E988FF37044F21, 5E716763BE04772CA06592DC, 7E6FE81AB4D5B08FF0F4E8AF, BE4B29F0D308D1BA1046D8DC, 2F1A2B5F25C3F2502932EFF4, 3E65BE3F701901EC447327AE, 1EECC1DDB24892ED2BE2FC44, 5C49EBA49810FE7840039EA9, E1774E60A49BD0CC9F7DB6B8, 956BE6001A359C423014CED7, FE39F19585CBAE3EE247840C, 70C7586ACDA27A1FFC0C7AEE, BA5EF35337DDE160BCA69BE2, ); name = streams; sourceTree = ""; }; F87D6E9F1E5FE32A55A2A8DB = {isa = PBXGroup; children = ( 2026B0F45584BD5BECC4EFBA, 1A8917A61F4F6E9766564420, 3832110FA8DA58E650AB6F9E, EF3A7A1A871BAB32EA1B46EF, ); name = logging; sourceTree = ""; }; A18C218B66BAD36C1F6FDB5D = {isa = PBXGroup; children = ( 6816BB0D62EC676409B3587F, 8F92FD719B301B68F4945EA9, F08B148BBAEA45BCDA3F066F, 41535CB61E936ECEBB04FFAC, EF54929F7151858D8FF8107B, 966BC35C454118B1B895436D, ); name = system; sourceTree = ""; }; E3BC172EB1F1CA22B436FC42 = {isa = PBXGroup; children = ( 498778ED99DF1BA68A6E3A18, 46393FE4FE6D8683444CD1A3, 32A77D14749535446A0BC825, 822342F0C44B761EAB020F86, ); name = xml; sourceTree = ""; }; D959EACECE951B6D139A99C8 = {isa = PBXGroup; children = ( AEB923D05C620EF9E927B48C, 99FBA3CCFA443DB353B07F71, C4272B1ABE77520CD6E55EB7, ECC4847BBD2AC72116506F0E, ); name = javascript; sourceTree = ""; }; D0CB81045FF79BEAD1744CAD = {isa = PBXGroup; children = ( E8DCBADAA3B789839C797F82, 3D32372B5CC311AA696124D2, A88106868D7BACF251D9EAA8, 8EA982741224B1BF1BB840B6, F2C96C26ACDFFE9D480D5561, 8E018B63249825F4D00DEB6C, ); name = zip; sourceTree = ""; }; 9AE02D48833B87EB32478790 = {isa = PBXGroup; children = ( 85CC7C10F36E6A615CF24289, 0C36123881F7A4B6A144F272, ); name = "unit_tests"; sourceTree = ""; }; 47B575A04992E9EA22045F72 = {isa = PBXGroup; children = ( 17697EA857D23FAC8FF46868, 4A5ED88CC2ED6ADD8A5B102A, 35BD72D236BE7ADC019B5564, 6DE47E2E070BC5173F0985BB, 79A4F1CF3FB5D20104693598, ); name = misc; sourceTree = ""; }; 95B8EA2C19F69EB464681FD5 = {isa = PBXGroup; children = ( 7D87E3CB6613ADCE674B00BE, C7A6585C8F7FB3EF78837563, AC488F0777290DB214E6E937, A85BC2CE425BF6058D12702A, F3F9135662EDBBC14EBC448C, 786ABCE38FCC63E58ED44C5B, 47D12441679F0062EB7C96AF, 0C5169FC4BAB96B2F16BF5B8, 942E454B72BC4A6CF702F2B4, 5C4A0785E529A72663FC155E, 23925ED31BD8E2D82FF86A31, F78633365BAD28DA5864C502, 1EC7132F648E537E2B1F95EC, 68CC5DF188B4F8D9BC4A397A, 9F994395393E0BFB8A320B04, A7F0F0269FBC2B91DCB49989, 89C44D65C6EA486543A139E9, DA64460418AFD14930104FEC, 6A8D0F24F0A1F95A52845506, 04A6FE27FC63E4D27E857CBF, 9CBEE085CF47C89A93F2783E, 158F40026FBDA4EE9F90CF02, C86288867D1603D982FB9AC9, 994C767AF66B2C4731EAF528, 6108C64B7B0AD2CA64F30DC7, 14F44BEA5F54F7E064122CC7, 295439C55D8A711959ADABD3, A75D66A07D6443E350214CC3, ); name = native; sourceTree = ""; }; 077C855D265E61FB93F96107 = {isa = PBXGroup; children = ( 53B7ECB896E5903DD2493E14, C3BF0F36B4C2A20B594B2C17, 283F53CC2F8E672B54F90A31, 7582B2AE14482E2927B3AE2F, BF229D931FB1A5222CD9DB43, CFA0FE5274773CA97B9EA5A1, 120D356AA058212F80C97EAB, 2AE9B24F8D2F81FB9B7FF4C7, D46664D5E1C590C441D4F80B, F87D6E9F1E5FE32A55A2A8DB, A18C218B66BAD36C1F6FDB5D, E3BC172EB1F1CA22B436FC42, D959EACECE951B6D139A99C8, D0CB81045FF79BEAD1744CAD, 9AE02D48833B87EB32478790, 47B575A04992E9EA22045F72, 95B8EA2C19F69EB464681FD5, F003AC63C800E3F090BF217F, FDDA86C3FCCC3C74F7CDA53D, ); name = "juce_core"; sourceTree = ""; }; DB193F277014CB2D4EED9B10 = {isa = PBXGroup; children = ( F420591CACE7056F78000039, D49594C439C67202647804D2, 793CDD14387F49E8757B9042, 3123FA92E774DD0E4788E9FB, A10311375CB3203008B0DD24, 8F977FE20118240233D8E05E, ); name = values; sourceTree = ""; }; 3F1B3F5816792824A8FED9CF = {isa = PBXGroup; children = ( F35CA3BED53A2146B7623ECA, 1A849B3BFFE1598017793994, E58624F033F218AF36C7F9FD, ); name = undomanager; sourceTree = ""; }; F27B1321E6B098E31C61FD54 = {isa = PBXGroup; children = ( E3273B696D8398C56B0F1A40, DC4EE2A66A86B99C8D9B0068, 89898A337D18F63C9DDE1AEE, 1259079CB2A8907577BBBAA3, ); name = "app_properties"; sourceTree = ""; }; 2D4BDB90369FB93DE77234CD = {isa = PBXGroup; children = ( DB193F277014CB2D4EED9B10, 3F1B3F5816792824A8FED9CF, F27B1321E6B098E31C61FD54, B8E7EC57DAC2DE65CFEC21E0, 5F55D2FE7338877E1CDD4B45, ); name = "juce_data_structures"; sourceTree = ""; }; FF92A51DE50343C6AA33A0DB = {isa = PBXGroup; children = ( C4788802A0C1A2908645028B, 016AB5DF7206562FA4B48A81, A387B8D5928ABA707B55736D, E862612C6909A6188FBEB8C8, A5AFA37677301D3BEFDEB596, C546B9AC32E553D5969B2537, 86AE81E813B7FC9D59B66C05, 29610D1C68DD1FA2043A0D95, 1B9D255022E9F460E5F710C5, 6501D18FEF031C7FEF45F39E, D53B158241A875303FC52D8B, 984AA2236CD860A916ACF57E, B3CEFD554B22D2764327CC70, ); name = messages; sourceTree = ""; }; A9B3363B5E302799D0945C6C = {isa = PBXGroup; children = ( 8414F7B17DA39B4D0B4C3739, C894801E6F257C0E84E5C03F, DBE5789816F028CE53FD3EB4, 62B84090765C713CC4250BB6, ); name = timers; sourceTree = ""; }; A045CC1D9919072B85C45336 = {isa = PBXGroup; children = ( 536EB9664EDB02A4CBF9BD28, 2575944C94EF083E2CBDBFA1, 0C90578962B82B1AE222578E, C2F65CD24CD207EFD5FAF7F9, B78154B28539A2E8152D2B9C, E4AF8704D952EA14B38CA782, E536D2E0E822CA257FA97875, 6B1B6046C54E082A9E25D69C, ); name = broadcasters; sourceTree = ""; }; 67DB973FF5A1FFA8D81AA280 = {isa = PBXGroup; children = ( CAA3289777033409B1E9050C, 1818AAD83B5C0FC5B322446F, 3824684DA7C61AA29E386158, 309B10A91B0698EC749802D5, 71EA769D5757AB3B16E5E6E6, EFE65E031B01332448C2BE5E, ); name = interprocess; sourceTree = ""; }; 21AFBAFF05B76A3121EDCBFC = {isa = PBXGroup; children = ( 219B89271C840E2D7E512612, 4A8C64BB96FB93919DDF2166, A93E36A200F473B766F6A8BA, 8E07428942BF09DB0CC43EE4, 00BB14FB0329250A897855F4, 5B67F01C0BA9323892900AF8, 7EBAA8C6B6447AC1707EA1A7, 1C3E6A1B46D80DBFEE6CF33B, ); name = native; sourceTree = ""; }; C0F8D0D123397FF7AF17F3F8 = {isa = PBXGroup; children = ( FF92A51DE50343C6AA33A0DB, A9B3363B5E302799D0945C6C, A045CC1D9919072B85C45336, 67DB973FF5A1FFA8D81AA280, 21AFBAFF05B76A3121EDCBFC, 3549AF6032831F9553E74467, 08C449B44C89E728A89013F3, ); name = "juce_events"; sourceTree = ""; }; 39D7580AE0D199F462A0411D = {isa = PBXGroup; children = ( A1637DEBD3438ACB0D7F48E0, 988BF5A923D08778EAFA524F, F2AA4EBDE6E999C033A8CA65, F4AB976B460420C5C94E6E9A, 55E627FDBA6A7978821CB281, 4CC331BEE18B3EC4BADF38CE, B3AE3983352E66690C865088, 33BDA746816EE0D0EBB559DD, A1C2A2081FDEF1CB6DB1E1BE, ); name = colour; sourceTree = ""; }; 8090AB4707E33400125CA4C9 = {isa = PBXGroup; children = ( 4FF67CE1DFACAFF545D8E9AA, CE68E38ECB2AB54F08F79917, 51F215744097662A34943493, 34B6C8553DCBD14A2F7207FA, 65FC1A9B2D0CDCD2D0180A17, 60F8D50274C2C6DEA40C13AC, AB5FD54FE20E3B8792AE7601, ); name = contexts; sourceTree = ""; }; 6DD41751A3949FBC19CC8416 = {isa = PBXGroup; children = ( 4E2E741BA1779C70049641D0, C63DB03ADC0A6E3C45DD88C9, 981D4316CDD5076577509386, 3D95AB0F7898371918F9E8FA, F58C62E4CFF820B85CEF0A9A, AE8492E6A10C324142D09EA8, 48D212A6051005FB7A4BC338, 8BEBE3E3D47AD3E8AAACF7BA, ); name = images; sourceTree = ""; }; 39F75EB88C131A0C1E7C5350 = {isa = PBXGroup; children = ( EE785DBFA288EFA2E7AB2108, 659BEDAE6C17DD4FA6B74971, 35CCF611A1FFF0A68FA75161, ); name = "image_formats"; sourceTree = ""; }; 1B141638D452CFF03036C180 = {isa = PBXGroup; children = ( 07064C4F0CA036ABDCF9C708, 86152CB848C36CC25014D020, C6A1B4D93C11BA29F36801E1, DB995735BEC8A6CCA141BEAD, 1F32C178FF93792406789660, C40948D9BB7965E367551251, 3E5B3814C7B1B21431D4F234, 5FE579E53ADAEEDEDF2AA2D0, 7C9FE884EFA2EF696132B4D2, 51A4935D712C05D9C75CDDDF, 8BA63270C9EBFE66AF17E7EC, 6889EF825EA839830C733D07, 3B51C055A70A99CDCEDFA399, 189CC2967B6148BE990281E8, 9EF2F14290768DC26DBA6149, ); name = geometry; sourceTree = ""; }; C8E76BBA092B9546D62BFFE4 = {isa = PBXGroup; children = ( 02FA201D32033D122C04A1B5, 7EE080AF681F1D927DF35B95, C71BB293CEF65605741E0CDA, ); name = placement; sourceTree = ""; }; CBF50CCCB6412B6D1DC75BAC = {isa = PBXGroup; children = ( 1316BB7ACE3F151F3B44A3EC, ACD09DE112FDD1028AC1E11B, CB85029BEDE10DB68C5BAA21, EFE00478AEAFE39D81B0E59D, FF49DBB348CFFF3F396FB712, F69E6E1AC446B803B6C6A6B4, ED872E47438BBE6325FE78F2, 523B09319B14E721921D830A, A546FAE114D127B368A631D9, B909BE26785040CF82533E80, B7F363708A0CDC05D9C04876, F86158611AE1654F4BCAFC47, ); name = fonts; sourceTree = ""; }; 9860A568DF9EDABCEE8B9490 = {isa = PBXGroup; children = ( 373E70565BE10D615B096C28, A16DA9030A96B26C6BF52FDC, BDCB1657E429C9F03CB17827, 1FC89BBE37A0162D7B8A8E64, 2F014FFE6BB6209B7BBBCB79, ); name = effects; sourceTree = ""; }; B3A6498CEE78E75BCCC0DC93 = {isa = PBXGroup; children = ( 56F46591D347CA4272001691, 6421875FDD1DB8F8C322F3A8, 30453B2E00C2367919B4AC25, A53EADE9B0E95059589408D1, 6ED446E76E238A6243800BB8, 65A88D5E8C1F0BE74F05C072, 06EF239CDE579FFC28F65BE2, C6BCFCD2732C7153C33B6168, 4C34CB4DC542D86A193C055A, A3961F3261459774B65EBD3B, 0493323D5A1374BBEFCFE455, 53F3EB3D456B15EF5CC6FC67, A5E748EC8CB636CEBF7BA497, ); name = native; sourceTree = ""; }; 0BD57F3380CCDFE06E36335D = {isa = PBXGroup; children = ( 39D7580AE0D199F462A0411D, 8090AB4707E33400125CA4C9, 6DD41751A3949FBC19CC8416, 39F75EB88C131A0C1E7C5350, 1B141638D452CFF03036C180, C8E76BBA092B9546D62BFFE4, CBF50CCCB6412B6D1DC75BAC, 9860A568DF9EDABCEE8B9490, B3A6498CEE78E75BCCC0DC93, 7402FA767F4FD9CCD3DD1578, C794DBEF09A83E199223D205, ); name = "juce_graphics"; sourceTree = ""; }; 51F1DE322ACA481FA5B3E623 = {isa = PBXGroup; children = ( 37380DEDD5BEE5E9267FA12F, 9132D1324A6D6D049C9B2FFE, 02BD81436ED17F1341E19522, 01D5DC75EA54630B8805AD59, 23B5C7121187E9533B66FFCB, ADC4B846B6B3C43868E7E739, F0A440A64636CA5008C1D76A, 2EC797F05D27994FD0B4F19B, 71D8C3F48801BEF5DB86B619, ); name = components; sourceTree = ""; }; 01EB66B6B2CBE57DEC21DE34 = {isa = PBXGroup; children = ( 1679AB8658094A527E7A2811, 03E4C81E1D323C0CD78DC8A7, 2F5EFAB6DFDBD1661C8D53A9, C76F648E207E0B0E8E98C8B3, 774896BADE9613608E2A1EFE, 26D9D7114D4E9ECBABA9C391, B9BC9B5BC286D2C9356DDF47, 918FA23368FDE2ECDDC1CD08, E597DB183789D09B45395742, A16B3D0EA58919EDAEB08792, C1CC6D2EB9A261B4D2B926BF, 207945846A9C6558F509C745, B0644268B39736787E910714, B39A0E62D1C43A61243F6864, 18F87CFF17A2C8B806B58028, CF9F9D13FD1B7ED219092643, 8FE02C7AD75EE732A416DA8C, B63040F76DC9E9F5256AC022, 9EDBF1BC8604795A1B0774C9, ED577465CA22A65861192A35, ); name = mouse; sourceTree = ""; }; 05CB0B9F5C39B9F9CE569275 = {isa = PBXGroup; children = ( C26182D37D8E31BD85FDEF5D, 0CFAADB1812DF1EFFFE48116, 6CB12AF57587118CCC37BC8B, 1A07D7AE9814E2D42F2B2EEB, 86A5EC73BF65BF9D75A87BD1, 4239AF0A782192683CE4F2A9, 8A3F6FFBE098968DC1C4538C, A53847EDB5D843028F3F1938, 521C8693B71C04C387C178F4, 5B7AF55C74CE6D19A9AC7354, 00FD1194DB59F69CA9DFCFAF, 40A7C1EB6363A8FC4A9900B0, E1592FAB1A9F6FAC33F051BC, ); name = keyboard; sourceTree = ""; }; 47736D14938B4000F6823B04 = {isa = PBXGroup; children = ( 755B3410E5F1D6CD7CA350E0, 75228523BAA6F029F315E6F1, BAC8A1406F49B48E85DBF2E7, 70F0A80A99565603FECCF39D, C511170BCB0784C896826010, FB9E2985FBE36494513C83A6, B05CF8A5EE33A7062E10DFD2, 3B3F316BC1E0486A4FD27686, DB57D9360A4FA63286A9E305, 4543C730A5DA77649C20B6B8, CB568736EE6D12C909B6A8F7, 4A20547D0C763ABB1DE5A9C4, FC00A16A6756DBFE0B875F5C, C8AF9CABB9019702BBAE46AC, FA3161F4692D54C87001BCD7, 3A9E838A0D5461D20726AE71, B86F88CBFF4E577BCCF8D620, FB1A1B08CB724305EBC233A4, 304137C2E24F2CC1863D9731, 00D9EB5B09E980D4A78D852A, 7C8D639A2FC3EA14709367B1, FED2586B3C7EA1BBA5512D58, 3D52A3BB485767A61EF457E7, 8F6E58F2C5CA9D3C6DFEDDB5, E41E6A613E45920223A133F7, 458C003240D4C31FF940A99C, 732EB7C9CF8E817B7239DBA1, ); name = widgets; sourceTree = ""; }; 398BACFBDE29E0514F4CA907 = {isa = PBXGroup; children = ( 93D1FA25103C27AFCCA1AAAA, 555CE1B4514C7E3BBB1A009E, FD7E5A4B8C6532BD458B2A94, 2F3A411E38028AE655F7EF95, 2A1CE4FC4448FBE9D4713C5B, A9DFB028B3E73E65E1407098, ACD0AD8EACA79E8A6273413E, 230C6175514E621AA9037C67, FEA9C3FC8BE313C619C3D195, C75917573F92864DA80C9A11, 81A30FE08E3703C49D5ECC93, 69266B83D819323230CB67B9, A4C303DC411E19BA54A10871, A29400BAA8E7CD1D1CA48C79, 84F1747F90732DE67C601E3A, 31FED87B0FA79D42C5B63186, 5B9C910F85E921B561995ED3, 65269D81DF23F8211A61032E, 9AF8A6A41A7FFACC570EBCF5, ); name = windows; sourceTree = ""; }; CDFF2D1465961758C0EF3C4F = {isa = PBXGroup; children = ( 133B528A88E99C116B75BFDA, D0B7D5B46558A7393B43C79B, 9B0ADC4932AEE1AEDBAAB8AE, 3CBF4CE2F60BBF9EB9637BC5, DD374C28FF1CF5F121C3C6E5, 5187A18B4BAC7087C4FE8060, ); name = menus; sourceTree = ""; }; 4D9B59FA6727E6D1680D884E = {isa = PBXGroup; children = ( DBBD318E15A635AACB31E1DE, C6313E766ECDCE48435BA5A0, 27E36BA8310CE73DCCA58AC9, 42D4C2092537DD2A5054134F, 70EEC63C3D1175FD705583F7, 56E41C2987E763CEE092B7A4, 64D016CA7156861886442427, C2012B18C8652969617417E3, 90CFC8BC9D8A156A512D2A39, C22BEA19FDBE55F5AAFE9D36, FF06CDF5B9CF3DE2EA741D54, 699E20F1575B18C3D909940A, D5054A3D5EBDC47D51FC99F6, E143BF0720845D8A25BB16E6, B2C3D53237084A8C79EE8B16, F9816E9564DF0FD05C77B845, A74B522F55C871C8C41E253A, B0D3494829C70D3D31E7195C, 2162A9A1F6F5DF44CBAC2129, A42FDF7379A2708B3726B0BC, A9CCD637A179CD1BA7A27028, 2A3D243054F8E1C94ED0A0E4, B14210A622924919775310DD, 234F4B105DF97B936ED47100, 62E67D3BBC3098E5BC56F835, BF2D0795D820910CCB587033, 15DBBA2C2CCC22B3488B48F6, B12282D4958ECC33E33301E6, 1CCD30C2315CF5CD327FFA99, 2F55E9B82505B501C1E9B0D7, F45A8AE5F6E6FA5F6AEC8D12, 0324378725B8DEBC11E93953, B1557FE77AC7D7FBF5A745F8, 65A7736ECC548A9FD10E4F42, 652822ADCD7393AF40945DA2, 89A3C346A8D9173D9CBDD088, ); name = layout; sourceTree = ""; }; 75C0000D478F969885805A58 = {isa = PBXGroup; children = ( 717C583F454C2AF7BAF710A7, 71D588CCC35F0C1A5A0E9E3F, 1E19C8C3F46E236277F58F42, 0C1C8C5879770EF4E8824EF3, E80A7D62B2B3F4BD2CD3F170, 3F111FBCEE1230015F476C68, 130A28E84D438B08C6B5D5A5, 4DD07E53E4ABDE534D34981E, D711FA513F8E9F696570DBB5, 302AFDDB94F243E1C82AF3E9, A20C7B40F6C5309CBEC5038E, 0A82B6536AC2C02E099AB0AB, 14EED238D31DAABE590C749A, C88CAA67E7AD9181F1C9E3CE, 1A6CC0CB9A61C67DF712B06E, CE290D98DCBBDC902406E73F, FB3723E1113ED13B4B8DF09A, 0525B4E0F2387B1F3AA520F8, ); name = buttons; sourceTree = ""; }; 778CF3546E5DBE366BF63E99 = {isa = PBXGroup; children = ( F3327A4ED4197E583711EC38, 8894A48D347FE788EFD7D0AC, AC0B866AA2C5F577AA221143, 6930D056DFFC6EAA2B52E045, BE72D524BA45BC24B3264F2C, 543A10EED475842E60CE7F3C, E281E7EA009C44FA607DAFEB, B16933E10DCBA3CC20ADFAFF, 6B29E55E890064489381C65A, 1BAB3298971199DD4A26042B, 558FEC99442C039E45679325, 45A89EE380DBADF9105B866A, 18BF5D458C9584CD0136DCC7, 2DBE41449BBADA6D1242D7E4, ); name = positioning; sourceTree = ""; }; D36ED2585AFE0D1ADA95740C = {isa = PBXGroup; children = ( B2485AFF4249D9C40B9B54CB, E833133B78833DA0D34F48A4, 451343A64FCB48BC926E0962, 1C2A1CDE2DA322901B0899F8, 7A704BB75CD29EA20C349CDA, 20BC71D082643A43C9BD37C1, F8FDB57B9F26F2B0582CBEED, B6C28B2DAE4802FA291E3487, 32B8A985D15EAE4008F43D5F, A93E7F99453C2CD22B7B7115, 71D7F3CED9D84ECF00E3C7DF, BA92F6D1BF35CF6623B0BD1F, E7405CD3B6CF257A84E60DB5, 505E065430B4C61E119415FE, 9F3BAC34BBE550826A0C2B4D, ); name = drawables; sourceTree = ""; }; AA44D87FE68F20BC9038C07C = {isa = PBXGroup; children = ( 294C8642232443EEC9C4DF3D, 2327E88F48EE9DBD166727F4, A507DE8ED0DFE58D8443F1D0, 7C019D56F09C3415D36A0058, DF82F535AAA1380C3213FF03, D5AAA258357323FD8DBC7B08, 2BB6FE1F813E3EF9FB1FAACE, CD87ECBCB1347FDB040D63FC, 5B0D2EC9A8AC716C07B61137, 86ECCFC606602CF42A755A8D, 27A1A9F9CB957FACCFF348D3, DFB1FF7E047D9883528DECF8, C1A8DCB1BD40331EFC186CF7, 5BFC164CB4F8BC4FD839EDC8, ); name = properties; sourceTree = ""; }; 0497AE7C3FF9222448CEC17B = {isa = PBXGroup; children = ( 9D0323FECB030B06FBD0F627, 01A853C55CAE8341C207A758, 7E8133ED13638E1D0C6F849F, A0816F5D3CB1D0509C714252, C56DB2DC67E1DBA6C29044CD, 492FBEED85D887CC01080068, 4AA6BD2A3FDFADDCB0322F9C, 7224FBF6C8769342A0E3AC71, ); name = lookandfeel; sourceTree = ""; }; B0DA666A72BF97CE5C6452EA = {isa = PBXGroup; children = ( 4D6C90354134741F7F295412, D06CEB2AEDFB98E1406E06F7, 88DA5DAE40649E777AD45ECA, 3A8FC4F98008643A60177AEC, CD9D30D3D61F095124F6D916, 94852FE71706851643C6BDE3, 7D41725B59E3415350C8E035, 2DB2C70618EAA8DC81B2564F, 1846D85E50A6B97BBC5EDD6E, 52AAE149F3EC7BAB0E7703DC, 4961AA10B3563523AE1B0BFE, 10650C6BB284DC0F6E7DCB5C, 54FF1D1CC748FA043A28004F, 7E9061B22520E892C910ECC9, 47B6D5118C5FE2D6A452A487, 1D610C9DF69B955B05EB9A54, 140BFF25B0078C0709FF2461, 2DB4D07F237B52911EB0B812, CBE147D9B86A9F69A7CCEC3D, A2E15C0836AF048130C893F4, ADC3125F0DCD2924ACB173EB, AC975C4D82A4C525F6D879A5, ); name = filebrowser; sourceTree = ""; }; 8BA9558E831744561590ACEA = {isa = PBXGroup; children = ( DD7B2584B0C91BB4124A397E, 5044BE1EA711B629563F70CD, 6E8326A0BC2AAA5F82287220, E9904E84AFCF3AB39B03BAA9, 081B7C7D1B9CB7F72A193DEF, 5DBA0BFB2868C3E1F1E871FB, E422C589FA0328C35A0549FD, 1FC1E37865F424D91228A888, F59A5377B8D4476B34214F98, ); name = commands; sourceTree = ""; }; 9BFEAB312F069BA6BD17F30C = {isa = PBXGroup; children = ( 3FB71EFD64D47E52DADCACA4, 20A5A541366F7C22EF633114, 3437B0E3EA85400DBEEE0074, CAC058A2D753BB9E0559D8EB, ); name = misc; sourceTree = ""; }; FFADE91960A55164D44E8FCE = {isa = PBXGroup; children = ( E31FA0995B22027AEF89904B, A570C960A1D5C3F9E50A928D, ); name = application; sourceTree = ""; }; 61EFC47D10826ECFA538F192 = {isa = PBXGroup; children = ( 8E3F7589FDC16A7DA986FC42, E96CBEBCDABA3EA741C4C2EC, 305C7AE4DF0701B34616E4FA, 4E1058572E25FD04B7D60700, AD0FE0F54DE76E0C35A3B692, 67313924EE210EADEB66ECBD, 47BB119E08A7A1A468564B9D, B2EE22875A0E4C2679EFD3CB, C626FA20C4D021076A4B943E, E8C858BC5875BA7F76E62B28, 895273CAD9B1B37100C11B0F, 97BFE20948105F757379B4F8, 23A21EE368F8679E0C40323B, 07D2814B9A8E25F3269B675D, 3705B72C4B467A1EABEC9C49, FE8B93BA3F56CCC0BB37A5C8, ); name = native; sourceTree = ""; }; CBE7B44549D0E7411076D57F = {isa = PBXGroup; children = ( 51F1DE322ACA481FA5B3E623, 01EB66B6B2CBE57DEC21DE34, 05CB0B9F5C39B9F9CE569275, 47736D14938B4000F6823B04, 398BACFBDE29E0514F4CA907, CDFF2D1465961758C0EF3C4F, 4D9B59FA6727E6D1680D884E, 75C0000D478F969885805A58, 778CF3546E5DBE366BF63E99, D36ED2585AFE0D1ADA95740C, AA44D87FE68F20BC9038C07C, 0497AE7C3FF9222448CEC17B, B0DA666A72BF97CE5C6452EA, 8BA9558E831744561590ACEA, 9BFEAB312F069BA6BD17F30C, FFADE91960A55164D44E8FCE, 61EFC47D10826ECFA538F192, 31F1BE05C5BC30558F8039AD, 614E3EC828D056202DC10732, ); name = "juce_gui_basics"; sourceTree = ""; }; E40525D81D015389B0388510 = {isa = PBXGroup; children = ( 46A2A110922BAD26FB4298C5, 6261EB3783A9DF264A122DC6, 4D44E9AD19469774ED8245B2, 08C730BD0BD4755B55E99BAC, C7D88B24A0DC64FDD1EE28FD, 937C0CF5DC3FFF6161D7776D, 7BB92A7F312D9DA6AA53FAC3, 744475CFFBA91FDA03DDF659, 08603D6A5C7D8DDDA1AE4DA3, 47051A94D9B45B21017A867F, B93ACCE3F29334143039311C, D735FA88C8465C02D4217A39, ); name = "code_editor"; sourceTree = ""; }; 7A7F0DF75E9B01FE9A9470B2 = {isa = PBXGroup; children = ( 1667021AB391F5D9B82B186D, 2CBD98BBA9322461A3ED0D05, ); name = documents; sourceTree = ""; }; 5339003A04D05F6E3F333436 = {isa = PBXGroup; children = ( 6C632E34FD1B617525987657, 02C0DD7DC29B27B39D5FF154, DD10783090721EFE21E4FAA5, ); name = embedding; sourceTree = ""; }; F4FF39023AE719A2C1FDFCF6 = {isa = PBXGroup; children = ( DCCDA2F20A439FE5044946DE, 5E4F70838E79D6A25B8A80B0, 74AB579ADDC7C355C5704A16, CB713D4A63E08276975B7639, 5E2CB1D4DC6ED933AA81C43A, 754A3F88F55E0FB7F179F2E3, C234FBE6290024F51478686E, 2199D426EC85451D81636490, 0F5CBF5A5C2283DA1344E55E, EA433D25CF79DF86FEF978D1, F5047DA45BA2ECE24D308403, 0D3ACCBA2F79A0C6444AF72C, 495652C9E6B06C891281D040, 30D62F5F1125F39CE8D28C78, 7B78D4684FE1D74EA847C1B7, A7BF2E0EF7E381B811ED7981, D45C31982C2D140B6B64D1C7, 7A6E2A815D9AE276CF064A24, 8C439BE182790867BCC9ADFC, 1F4C7ECC97B4C80BD98F32C1, ); name = misc; sourceTree = ""; }; E145BB5F87254EDB7C912760 = {isa = PBXGroup; children = ( 118B13BE32C7FDCE82BDC495, 939EC86DADE3927918AA327C, 8FA331691E39F5D8FB0DCDF8, E2C9F5675F700544E40B46C1, FB845B6C46248D66EB02A862, 140B14E0142DF835F1C6D951, 5136E02D20343ED8DCD90A20, AFED7B4CED7DCA33DEA5F546, 0EBBED2D984949E34DA34E8A, CC95B7798FE5B9D685B3573D, 5B6BC49A6F74A8021E73E3A2, 9B02109FBEEB89243D72FC11, ); name = native; sourceTree = ""; }; D073C93C9EC5893BBF5B728C = {isa = PBXGroup; children = ( E40525D81D015389B0388510, 7A7F0DF75E9B01FE9A9470B2, 5339003A04D05F6E3F333436, F4FF39023AE719A2C1FDFCF6, E145BB5F87254EDB7C912760, 8FBE4F804ECCBADAA37592F0, C001B0F67BB17E32A3BC8F92, ); name = "juce_gui_extra"; sourceTree = ""; }; C37CC96B89E62143A0E75336 = {isa = PBXGroup; children = ( 077C855D265E61FB93F96107, 2D4BDB90369FB93DE77234CD, C0F8D0D123397FF7AF17F3F8, 0BD57F3380CCDFE06E36335D, CBE7B44549D0E7411076D57F, D073C93C9EC5893BBF5B728C, ); name = "Juce Modules"; sourceTree = ""; }; 70A885E880F4C1F36DBA276E = {isa = PBXGroup; children = ( 994F654E220C76091B1672F8, 116E9A279FB25AE32174C42F, C1980330512BAADDA1CB0D24, 8FC7BFF093D665F8178EC297, B2650D0AA7710D3C2627238A, 01D2B9B2D33BFF1F4B571B7E, F21F13BF684528EB7041BD67, F6CA8CB0E2135154E38E9707, ); name = "Juce Library Code"; sourceTree = ""; }; F75EB749D5026E5AC86B6C4B = {isa = PBXGroup; children = ( B531D38613FDEC368336A51E, B700739654886DC8E7C1293B, ); name = Resources; sourceTree = ""; }; C581D34B32A781E9AED7F7B0 = {isa = PBXGroup; children = ( AF0CC5F28EB37B1FABBDD5DD, FE9531D38CA4C273B6FB87A7, FB6FA17C00AB569935B5CFF8, EF932865774E86525CE7FC55, 07D50D8347ED27B84F822D6C, ); name = Frameworks; sourceTree = ""; }; 1C83313FCFBC3FAFA8CDB087 = {isa = PBXGroup; children = ( EA398D9C544440E06637C134, ); name = Products; sourceTree = ""; }; CB9C4DF3F11D65C6BF6B80AD = {isa = PBXGroup; children = ( 23A603C0DAA7E2E423A4123A, C37CC96B89E62143A0E75336, 70A885E880F4C1F36DBA276E, F75EB749D5026E5AC86B6C4B, C581D34B32A781E9AED7F7B0, 1C83313FCFBC3FAFA8CDB087, ); name = Source; sourceTree = ""; }; 34AEE2803DA0D6192C299422 = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "_DEBUG=1", "DEBUG=1", "JUCER_XCODE_IPHONE_5BC26AE3=1", "JUCE_APP_VERSION=1.0.0", "JUCE_APP_VERSION_HEX=0x10000", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; }; name = Debug; }; 339C95D5B2E96DD37B176D75 = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_LINK_OBJC_RUNTIME = NO; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)"; DEAD_CODE_STRIPPING = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PREPROCESSOR_DEFINITIONS = ( "_NDEBUG=1", "NDEBUG=1", "JUCER_XCODE_IPHONE_5BC26AE3=1", "JUCE_APP_VERSION=1.0.0", "JUCE_APP_VERSION_HEX=0x10000", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)"); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; }; name = Release; }; F6DA01300C80F2338FCBD24A = {isa = XCBuildConfiguration; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "HelloWorld"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Debug; }; CA9F73DE863A75BEA780D77E = {isa = XCBuildConfiguration; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; ALWAYS_SEARCH_USER_PATHS = NO; DEBUG_INFORMATION_FORMAT = "dwarf"; GCC_C_LANGUAGE_STANDARD = c99; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = G5; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; GCC_WARN_MISSING_PARENTHESES = YES; GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "HelloWorld"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = -Wreorder; ZERO_LINK = NO; }; name = Release; }; D5495970AC0AFC78DD0ADE12 = {isa = XCConfigurationList; buildConfigurations = ( F6DA01300C80F2338FCBD24A, CA9F73DE863A75BEA780D77E, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; D2ABD8290ABA5095AE85F9A6 = {isa = XCConfigurationList; buildConfigurations = ( 34AEE2803DA0D6192C299422, 339C95D5B2E96DD37B176D75, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; 7B2C68FAAB7FB794B44BA476 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 7AA2F50DAEF3BA88A7C9C97E, ); runOnlyForDeploymentPostprocessing = 0; }; 5C249F77DD3C907CDA919026 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 535A340E26E5D6766D1780CA, 31E87C6EC193B9C408D16F20, F1FECDFA7E29BD6B703AF52B, EA50C8A2A8471D0EB4B8E644, 10A93C9ECE23E879115D5B95, 16890172C661285B431823B1, 7DCA87102FFCD304FA172464, 219E48FBEA32F43040A9970C, ); runOnlyForDeploymentPostprocessing = 0; }; A8FE28D8F12C03C93B8EAD1D = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F70117123739E2303A99AD70, 02F0D49EDD6A3E82D98302F3, 9C737750FC4663FBFDF8C048, EAA5A5EECF04D2B7FCF768FC, ACB6DFC6389AFB78A7EF0A61, ); runOnlyForDeploymentPostprocessing = 0; }; 9337F8263A94B688D61D5B68 = {isa = PBXNativeTarget; buildConfigurationList = D2ABD8290ABA5095AE85F9A6; buildPhases = ( 7B2C68FAAB7FB794B44BA476, 5C249F77DD3C907CDA919026, A8FE28D8F12C03C93B8EAD1D, ); buildRules = ( ); dependencies = ( ); name = HelloWorld; productName = HelloWorld; productReference = EA398D9C544440E06637C134; productInstallPath = "$(HOME)/Applications"; productType = "com.apple.product-type.application"; }; E34D5B980741D93050D0BB6B = {isa = PBXProject; buildConfigurationList = D5495970AC0AFC78DD0ADE12; attributes = { LastUpgradeCheck = 0440; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = CB9C4DF3F11D65C6BF6B80AD; projectDirPath = ""; projectRoot = ""; targets = ( 9337F8263A94B688D61D5B68 ); }; }; rootObject = E34D5B980741D93050D0BB6B; } JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/000077500000000000000000000000001263452017400221265ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/000077500000000000000000000000001263452017400251675ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/AppIcon.appiconset/000077500000000000000000000000001263452017400306645ustar00rootroot00000000000000Contents.json000066400000000000000000000046151263452017400333030ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/AppIcon.appiconset{ "images": [ { "idiom": "iphone", "size": "29x29", "filename": "Icon-Small.png", "scale": "1x" }, { "idiom": "iphone", "size": "29x29", "filename": "Icon-Small@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "29x29", "filename": "Icon-Small@3x.png", "scale": "3x" }, { "idiom": "iphone", "size": "40x40", "filename": "Icon-Spotlight-40@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "40x40", "filename": "Icon-Spotlight-40@3x.png", "scale": "3x" }, { "idiom": "iphone", "size": "57x57", "filename": "Icon.png", "scale": "1x" }, { "idiom": "iphone", "size": "57x57", "filename": "Icon@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "60x60", "filename": "Icon-60@2x.png", "scale": "2x" }, { "idiom": "iphone", "size": "60x60", "filename": "Icon-@3x.png", "scale": "3x" }, { "idiom": "ipad", "size": "29x29", "filename": "Icon-Small-1.png", "scale": "1x" }, { "idiom": "ipad", "size": "29x29", "filename": "Icon-Small@2x-1.png", "scale": "2x" }, { "idiom": "ipad", "size": "40x40", "filename": "Icon-Spotlight-40.png", "scale": "1x" }, { "idiom": "ipad", "size": "40x40", "filename": "Icon-Spotlight-40@2x-1.png", "scale": "2x" }, { "idiom": "ipad", "size": "50x50", "filename": "Icon-Small-50.png", "scale": "1x" }, { "idiom": "ipad", "size": "50x50", "filename": "Icon-Small-50@2x.png", "scale": "2x" }, { "idiom": "ipad", "size": "72x72", "filename": "Icon-72.png", "scale": "1x" }, { "idiom": "ipad", "size": "72x72", "filename": "Icon-72@2x.png", "scale": "2x" }, { "idiom": "ipad", "size": "76x76", "filename": "Icon-76.png", "scale": "1x" }, { "idiom": "ipad", "size": "76x76", "filename": "Icon-76@2x.png", "scale": "2x" } ], "info": { "version": 1, "author": "xcode" } }JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/LaunchImage.launchimage/000077500000000000000000000000001263452017400316205ustar00rootroot00000000000000Contents.json000066400000000000000000000026361263452017400342400ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/LaunchImage.launchimage{ "images": [ { "orientation": "portrait", "idiom": "iphone", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-iphone-2x.png" }, { "orientation": "portrait", "idiom": "iphone", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-iphone-retina4.png", "subtype": "retina4" }, { "orientation": "portrait", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "1x", "filename": "LaunchImage-ipad-portrait-1x.png" }, { "orientation": "landscape", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "1x", "filename": "LaunchImage-ipad-landscape-1x.png" }, { "orientation": "portrait", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-ipad-portrait-2x.png" }, { "orientation": "landscape", "idiom": "ipad", "extent": "full-screen", "minimum-system-version": "7.0", "scale": "2x", "filename": "LaunchImage-ipad-landscape-2x.png" } ], "info": { "version": 1, "author": "xcode" } }LaunchImage-ipad-landscape-1x.png000066400000000000000000000114501263452017400376160ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/LaunchImage.launchimagePNG  IHDR sBIT|dIDATx  SJĞ ﬙<; 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 =]WC IENDB`LaunchImage-ipad-landscape-2x.png000066400000000000000000000371411263452017400376240ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/LaunchImage.launchimagePNG  IHDR☨msBIT|d IDATxA!{sBIT|dIDATx1 & v a1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B 1b @!B.ZIENDB`LaunchImage-ipad-portrait-2x.png000066400000000000000000000410011263452017400375240ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/LaunchImage.launchimagePNG  IHDR6sBIT|d IDATx w%$53g;x  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 ˞ W 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!V IDATC 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C Ğ W1$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`HڈIDAT!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H!C 0$`H=8 u?BF' "IENDB`LaunchImage-iphone-2x.png000066400000000000000000000106761263452017400362450ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/LaunchImage.launchimagePNG  IHDRsBIT|duIDATx1 & zv221 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb.=͝IENDB`LaunchImage-iphone-retina4.png000066400000000000000000000123541263452017400372550ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Builds/iOS/HelloWorld/Images.xcassets/LaunchImage.launchimagePNG  IHDRpzsBIT|dIDATx1 & zv221 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb @11 @cb.B YIENDB`JUCE-4.1.0/examples/HelloWorld/Builds/iOS/Info.plist000066400000000000000000000023701263452017400220250ustar00rootroot00000000000000 LSRequiresIPhoneOS UIViewControllerBasedStatusBarAppearance CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier com.roli.jucehelloworld CFBundleName HelloWorld CFBundlePackageType APPL CFBundleSignature ???? CFBundleShortVersionString 1.0.0 CFBundleVersion 1.0.0 NSHumanReadableCopyright ROLI Ltd. NSHighResolutionCapable UIRequiresFullScreen UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight JUCE-4.1.0/examples/HelloWorld/HelloWorld.jucer000066400000000000000000000147221263452017400212520ustar00rootroot00000000000000 JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/000077500000000000000000000000001263452017400211455ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/AppConfig.h000066400000000000000000000056341263452017400231740ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! There's a section below where you can add your own custom code safely, and the Introjucer will preserve the contents of that block, but the best way to change any of these definitions is by using the Introjucer's project settings. Any commented-out settings will assume their default values. */ #ifndef __JUCE_APPCONFIG_TTAKTK1S__ #define __JUCE_APPCONFIG_TTAKTK1S__ //============================================================================== // [BEGIN_USER_CODE_SECTION] // (You can add your own code in this section, and the Introjucer will not overwrite it) // [END_USER_CODE_SECTION] //============================================================================== #define JUCE_MODULE_AVAILABLE_juce_core 1 #define JUCE_MODULE_AVAILABLE_juce_data_structures 1 #define JUCE_MODULE_AVAILABLE_juce_events 1 #define JUCE_MODULE_AVAILABLE_juce_graphics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_basics 1 #define JUCE_MODULE_AVAILABLE_juce_gui_extra 1 //============================================================================== #ifndef JUCE_STANDALONE_APPLICATION #define JUCE_STANDALONE_APPLICATION 1 #endif //============================================================================== // juce_core flags: #ifndef JUCE_FORCE_DEBUG //#define JUCE_FORCE_DEBUG #endif #ifndef JUCE_LOG_ASSERTIONS //#define JUCE_LOG_ASSERTIONS #endif #ifndef JUCE_CHECK_MEMORY_LEAKS //#define JUCE_CHECK_MEMORY_LEAKS #endif #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES #endif #ifndef JUCE_INCLUDE_ZLIB_CODE //#define JUCE_INCLUDE_ZLIB_CODE #endif #ifndef JUCE_USE_CURL //#define JUCE_USE_CURL #endif //============================================================================== // juce_graphics flags: #ifndef JUCE_USE_COREIMAGE_LOADER //#define JUCE_USE_COREIMAGE_LOADER #endif #ifndef JUCE_USE_DIRECTWRITE //#define JUCE_USE_DIRECTWRITE #endif //============================================================================== // juce_gui_basics flags: #ifndef JUCE_ENABLE_REPAINT_DEBUGGING //#define JUCE_ENABLE_REPAINT_DEBUGGING #endif #ifndef JUCE_USE_XSHM //#define JUCE_USE_XSHM #endif #ifndef JUCE_USE_XRENDER //#define JUCE_USE_XRENDER #endif #ifndef JUCE_USE_XCURSOR //#define JUCE_USE_XCURSOR #endif //============================================================================== // juce_gui_extra flags: #ifndef JUCE_WEB_BROWSER //#define JUCE_WEB_BROWSER #endif #ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR //#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR #endif #endif // __JUCE_APPCONFIG_TTAKTK1S__ JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/JuceHeader.h000066400000000000000000000025071263452017400233210ustar00rootroot00000000000000/* IMPORTANT! This file is auto-generated each time you save your project - if you alter its contents, your changes may be overwritten! This is the header file that your files should include in order to get all the JUCE library headers. You should avoid including the JUCE headers directly in your own source files, because that wouldn't pick up the correct configuration options for your app. */ #ifndef __APPHEADERFILE_TTAKTK1S__ #define __APPHEADERFILE_TTAKTK1S__ #include "AppConfig.h" #include "modules/juce_core/juce_core.h" #include "modules/juce_data_structures/juce_data_structures.h" #include "modules/juce_events/juce_events.h" #include "modules/juce_graphics/juce_graphics.h" #include "modules/juce_gui_basics/juce_gui_basics.h" #include "modules/juce_gui_extra/juce_gui_extra.h" #if ! DONT_SET_USING_JUCE_NAMESPACE // If your code uses a lot of JUCE classes, then this will obviously save you // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. using namespace juce; #endif #if ! JUCE_DONT_DECLARE_PROJECTINFO namespace ProjectInfo { const char* const projectName = "HelloWorld"; const char* const versionString = "1.0.0"; const int versionNumber = 0x10000; } #endif #endif // __APPHEADERFILE_TTAKTK1S__ JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/ReadMe.txt000066400000000000000000000011231263452017400230400ustar00rootroot00000000000000 Important Note!! ================ The purpose of this folder is to contain files that are auto-generated by the Introjucer, and ALL files in this folder will be mercilessly DELETED and completely re-written whenever the Introjucer saves your project. Therefore, it's a bad idea to make any manual changes to the files in here, or to put any of your own files in here if you don't want to lose them. (Of course you may choose to add the folder's contents to your version-control system so that you can re-merge your own modifications after the Introjucer has saved its changes). JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/000077500000000000000000000000001263452017400226155ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_core/000077500000000000000000000000001263452017400245535ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_core/juce_core.h000066400000000000000000000002521263452017400266610ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_core/juce_core.h" JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_data_structures/000077500000000000000000000000001263452017400270375ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_data_structures/juce_data_structures.h000066400000000000000000000003001263452017400334230ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_data_structures/juce_data_structures.h" JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_events/000077500000000000000000000000001263452017400251275ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_events/juce_events.h000066400000000000000000000002561263452017400276150ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_events/juce_events.h" JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_graphics/000077500000000000000000000000001263452017400254235ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_graphics/juce_graphics.h000066400000000000000000000002621263452017400304020ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_graphics/juce_graphics.h" JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_gui_basics/000077500000000000000000000000001263452017400257335ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h000066400000000000000000000002661263452017400312260ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_basics/juce_gui_basics.h" JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_gui_extra/000077500000000000000000000000001263452017400256125ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/JuceLibraryCode/modules/juce_gui_extra/juce_gui_extra.h000066400000000000000000000002641263452017400307620ustar00rootroot00000000000000// This is an auto-generated file to redirect any included // module headers to the correct external folder. #include "../../../../../modules/juce_gui_extra/juce_gui_extra.h" JUCE-4.1.0/examples/HelloWorld/Source/000077500000000000000000000000001263452017400173775ustar00rootroot00000000000000JUCE-4.1.0/examples/HelloWorld/Source/Main.cpp000066400000000000000000000076401263452017400207760ustar00rootroot00000000000000/* ============================================================================== Demonstration "Hello World" application in JUCE Copyright 2008 by Julian Storer. ============================================================================== */ #include "../JuceLibraryCode/JuceHeader.h" #include "MainComponent.h" //============================================================================== /** This is the top-level window that we'll pop up. Inside it, we'll create and show a component from the MainComponent.cpp file (you can open this file using the Jucer to edit it). */ class HelloWorldWindow : public DocumentWindow { public: //============================================================================== HelloWorldWindow() : DocumentWindow ("JUCE Hello World!", Colours::lightgrey, DocumentWindow::allButtons, true) { // Create an instance of our main content component, and add it to our window.. setContentOwned (new MainComponent(), true); // Centre the window on the screen centreWithSize (getWidth(), getHeight()); // And show it! setVisible (true); } ~HelloWorldWindow() { // (the content component will be deleted automatically, so no need to do it here) } //============================================================================== void closeButtonPressed() override { // When the user presses the close button, we'll tell the app to quit. This // HelloWorldWindow object will be deleted by the JUCEHelloWorldApplication class. JUCEApplication::quit(); } }; //============================================================================== /** This is the application object that is started up when Juce starts. It handles the initialisation and shutdown of the whole application. */ class JUCEHelloWorldApplication : public JUCEApplication { public: //============================================================================== JUCEHelloWorldApplication() {} //============================================================================== void initialise (const String& commandLine) override { // For this demo, we'll just create the main window... helloWorldWindow = new HelloWorldWindow(); /* ..and now return, which will fall into to the main event dispatch loop, and this will run until something calls JUCEAppliction::quit(). In this case, JUCEAppliction::quit() will be called by the hello world window being clicked. */ } void shutdown() override { // This method is where you should clear-up your app's resources.. // The helloWorldWindow variable is a ScopedPointer, so setting it to a null // pointer will delete the window. helloWorldWindow = nullptr; } //============================================================================== const String getApplicationName() override { return "Hello World for JUCE"; } const String getApplicationVersion() override { // The ProjectInfo::versionString value is automatically updated by the Jucer, and // can be found in the JuceHeader.h file that it generates for our project. return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return true; } void anotherInstanceStarted (const String& commandLine) override { } private: ScopedPointer helloWorldWindow; }; //============================================================================== // This macro creates the application's main() function.. START_JUCE_APPLICATION (JUCEHelloWorldApplication) JUCE-4.1.0/examples/HelloWorld/Source/MainComponent.cpp000066400000000000000000000130331263452017400226520ustar00rootroot00000000000000/* ============================================================================== This is an automatically generated GUI class created by the Introjucer! Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Created with Introjucer version: 3.1.0 ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright (c) 2015 - ROLI Ltd. ============================================================================== */ //[Headers] You can add your own extra header files here... //[/Headers] #include "MainComponent.h" //[MiscUserDefs] You can add your own user definitions and misc code here... //[/MiscUserDefs] //============================================================================== MainComponent::MainComponent () { addAndMakeVisible (helloWorldLabel = new Label (String::empty, "Hello World!")); helloWorldLabel->setFont (Font (40.00f, Font::bold)); helloWorldLabel->setJustificationType (Justification::centred); helloWorldLabel->setEditable (false, false, false); helloWorldLabel->setColour (Label::textColourId, Colours::black); helloWorldLabel->setColour (TextEditor::textColourId, Colours::black); helloWorldLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (quitButton = new TextButton (String::empty)); quitButton->setButtonText ("Quit"); quitButton->addListener (this); //[UserPreSize] //[/UserPreSize] setSize (600, 300); //[Constructor] You can add your own custom stuff here.. //[/Constructor] } MainComponent::~MainComponent() { //[Destructor_pre]. You can add your own custom destruction code here.. //[/Destructor_pre] helloWorldLabel = nullptr; quitButton = nullptr; //[Destructor]. You can add your own custom destruction code here.. //[/Destructor] } //============================================================================== void MainComponent::paint (Graphics& g) { //[UserPrePaint] Add your own custom painting code here.. //[/UserPrePaint] g.fillAll (Colour (0xffc1d0ff)); g.setColour (Colours::white); g.fillPath (internalPath1); g.setColour (Colour (0xff6f6f6f)); g.strokePath (internalPath1, PathStrokeType (5.200f)); //[UserPaint] Add your own custom painting code here.. //[/UserPaint] } void MainComponent::resized() { helloWorldLabel->setBounds (152, 80, 296, 48); quitButton->setBounds (getWidth() - 176, getHeight() - 60, 120, 32); internalPath1.clear(); internalPath1.startNewSubPath (136.0f, 80.0f); internalPath1.quadraticTo (176.0f, 24.0f, 328.0f, 32.0f); internalPath1.quadraticTo (472.0f, 40.0f, 472.0f, 104.0f); internalPath1.quadraticTo (472.0f, 192.0f, 232.0f, 176.0f); internalPath1.lineTo (184.0f, 216.0f); internalPath1.lineTo (200.0f, 168.0f); internalPath1.quadraticTo (96.0f, 136.0f, 136.0f, 80.0f); internalPath1.closeSubPath(); //[UserResized] Add your own custom resize handling here.. //[/UserResized] } void MainComponent::buttonClicked (Button* buttonThatWasClicked) { //[UserbuttonClicked_Pre] //[/UserbuttonClicked_Pre] if (buttonThatWasClicked == quitButton) { //[UserButtonCode_quitButton] -- add your button handler code here.. JUCEApplication::quit(); //[/UserButtonCode_quitButton] } //[UserbuttonClicked_Post] //[/UserbuttonClicked_Post] } //[MiscUserCode] You can add your own definitions of your custom methods or any other code here... //[/MiscUserCode] //============================================================================== #if 0 /* -- Introjucer information section -- This is where the Introjucer stores the metadata that describe this GUI layout, so make changes in here at your peril! BEGIN_JUCER_METADATA s 136 80 q 176 24 328 32 q 472 40 472 104 q 472 192 232 176 l 184 216 l 200 168 q 96 136 136 80 x END_JUCER_METADATA */ #endif //[EndFile] You can add extra defines here... //[/EndFile] JUCE-4.1.0/examples/HelloWorld/Source/MainComponent.h000066400000000000000000000045201263452017400223200ustar00rootroot00000000000000/* ============================================================================== This is an automatically generated GUI class created by the Introjucer! Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Created with Introjucer version: 3.1.0 ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright (c) 2015 - ROLI Ltd. ============================================================================== */ #ifndef __JUCE_HEADER_9002020A4DD09B20__ #define __JUCE_HEADER_9002020A4DD09B20__ //[Headers] -- You can add your own extra header files here -- #include "../JuceLibraryCode/JuceHeader.h" //[/Headers] //============================================================================== /** //[Comments] An auto-generated component, created by the Jucer. Describe your class and how it works here! //[/Comments] */ class MainComponent : public Component, public ButtonListener { public: //============================================================================== MainComponent (); ~MainComponent(); //============================================================================== //[UserMethods] -- You can add your own custom methods in this section. //[/UserMethods] void paint (Graphics& g); void resized(); void buttonClicked (Button* buttonThatWasClicked); private: //[UserVariables] -- You can add your own custom variables in this section. //[/UserVariables] //============================================================================== ScopedPointerh0pO(uXd ۾}{ꩧľ2Ll݃6mZ0@2ϻWɺ?S-;\D N"'(S35EW\fQ/疮nzS||Nb7)7t۹s'۽{_ psmmmͣxz >a4B5P"(i;`ӧu6O}G3>ҀݵkW]xJv U;c<EZZĹB|bLl?뿧%_O|}d7xd3E^^}kT9Gɽp Xpm6O_8P%yRŸ5(EZ`/`Kk> @uacɈﯪƟ>^ך7::JeN646Z7+..]q"* `n$SrrrSВ2NV_>_#F} o T_ 16Mͬo(~H* D^N?tEN 9xN󂬬 4AM4~mv_7ZVV޽{E"ઉfAohjbmm€+u`dk)?wyKMM,Tg?S/RRRHLLŋU=7~x)ὫU0YMM OOua$%ϿCzmD-#бՄhW 삂@D0FTXXK%e!JnfUύ߱(z aڊ*ƿ]6$([.ZH8\xE$ )))x%//N4MV;vZWR(%8~"Vuг?װM.E.=_-,++[Q߱j o*ITtIO<ɶm._E$1'obmm?MѮX9`Uql٥6m~nnu=??;wnUw׳H / 1}y12{|>!:Ԅy晊LOO!o!"%NB?Rޛo\.Ϋ=Q0X"8y]|Mɐ HL)((@g?RB/ A?̺9~I*0,Oxph466="11pW\v'΂srrrdX*e=,Tg,ן@N2GGoʧ(wtTpYgN:Q8fi##Č*ku#k޽T㯵pLJgkC#T[n.oXs!”oIw#?k,v+U;':aEGvhcsiimSu_{9Ph{_|)`%z(0Z 3QҪ|E de fdd|+" vs:ʮMdkVsI<,ӧ@NWQ)'@-)<8Q@8|A>rssohu%%%v^O=wV[{6_"]+h99_ t?UKc*.|+_Q8O@mV- IKK?p)0a6m;T;;w_Z%v {DHÜTeƿM'Sq|[@ ?_Ĩ+^_җTa:t`v9_ =fOaK^u/cYYY aLNNfχY?mb](+HAx≢ɄZa uSKj fUO>I,jA˽b_<ϴ*j^z9B`9'w~^utx_"ܱ~@Rff*Gg^xjDJ;#_-@wD퓡d [HfB=Toʕm~/Ӌ'9 sXe3G?mmuvE: ;_)9RS?~4`yA8$x::؀d)**bz(@bbWF@ggdff}@wWu{)?{+VʹP鿟y&,#TD@{mQ~}{z{UxJsy0BL}O{ŊAYV[[ecƿ#wKźě6w}se:!##Ҹ8c _Idw*B ,Ef40r5vT301RZ{Xo:́O; >]!/bccco)xb*P|^~yknn`# `E{ߘhOZav(4yg dOX,2.JԠZ&b.B7=N(@۫ΝfΜ)=_p?6==+A{~76!Nb9ˋ/ p%" D[W5ZLɆqǛCzg',B:/{ @dOhSxr +,,r&q1@ȸ"OeekX{GND@z:=d/ @˥#l$''_›3sݔxl<53WyF\y!=iq::T9։'@ʉmef_p8Ch s%[իHDj,"Lcrw T#ɗO?]QgK 4&--R2%ux쫪;G3` _Ӱ?5edtuurK0* xa\\hCJ xql)TUO;B;@(&Ѱ(-w2BjN,k*6f>F8FSB#c=g)+6qpd9?9``xɒL6|䤐Z'_܋<(K,Q<ֽ6Bh/"0iDPV8'x{I88γ 9T[xr/Qgt3333ټyǡC7D_PE@"0س?FO׫JI ϗ^0LQ]2n{a\\\l?[,ʅَXuu J&:^!`?<`AaW:QEI;xd.Pĕ2ƟÅjoVz!Pe(@Oo*sseeɑ `',3*gZ,2t ٴio޼h'RQzrH)%wj $  qJݮM&S'p(eÆD {TGQ'),B@6rCboxrV2 *ɠc?E@ul3JxTޕeӹ4.`5  #]L?yR(lHӵ@ul}B9X)H2@,|n@(nOFP&@mUᄏt-[ #?$dw 0LR";r dDMXW 7nT%h%Lw LEu@{ͬl "ǹhZIhqD6n^IIػwG󟐈`ρ;oq\ O(r9p8 ~$+nRX H6;vVeo$VTT,]rN˳"'Setæ͛."@@WYPXde29sy5L3fK1b2;l6\Yf2l۶?D1+Qx5 P!:7{,鮀%$؏8Fv{%7I2f 7`"Hr@(d/nQ|S s8 x}t)l6͡5رCԑ""@ÜTlpe挲2~cܦNc@oXB$" (>m[#(1kwBGx R]YY)0Pn6[R!>`3R)CJ=c,:@_A䇷p ^3gΠR" 66n*!>^E@T/2ԮnRYgg'<@@T#?>7%j,dgg4hn[k`ZFI,(5cNtP/dGTb@r0f)>=`@`9 + oƌL;?`0Z!>UǛg 56f (\uu"Ɍ:$J)++gFI.QlbO-L`eϡ bEߌ/52Ҷj++gۦqCnɃ&{M@8EW: Ɵ!#]DE1o@*|?E@.itB|K# S$x @ۜ+l0YPmX[YY nbSs9] :[?e+U"1)10 Evդh,4L.j,87EynE]]=Ť ,G?8V#0??TUxs^nhSȑmD-RUUFGG0RQD@v9'@{|008))),99YW n1,K@.,.P" o&yIDZZm3!>qQ2h$#ho>'fA4MsًAyR\>LK"nFl!SA72^P;LAwWL"@d@AA0660IL2%PP܃hhd>8f7rgN}hc drָOwř*ʓ)jjkHE<`J/:J%\.)W#wz8 ~1ҸHIX,,33C9:u??axxDndwRSS߯=taD' TGTXbtf>`2SŬu]мO;?:Li@6j@'QPpS(J:0fi!y;>UOqq"=TEVdff*|F;Ea ȢR@jT.l%/e 0ҭM|b>Quj@t_a?i`EFFDQpv9@lP霟l0Q 0A/Ͱ#MF< RSCSs3@eH4ola ˾Sm6[2}-=qp#l0\2%#R|4h|ltٗ% ܈Za ӄ~"BTo9@$1.FϮ)GX,9-/5S LLL$QBXg9 !ۣƸ%h\숏 rKJJR‹L"@.8}o$mS#@K2*ٜ="]՚!wd@[$q "@A(6B? -38J!8#Ld% \D'$InSnP@=nflOx4Q݉ϣ6" //GD(YR\?OwfxA0zhT6.V˔45j^>cxllTJ__?AD#%jV[[ˢ瞛بΪrr7ۡsWG?N6*#+f+s0r'n-;e"Pc*Pᶐ) XA~j^ xVݲlJXxBl*&#j99 D@(l\XDt"9_R0C;&[ayz1͊A#  "fJtN$wT`2;%`S`P| " `@KF t:ȌL,8en_AyY& #DXmVU$۝V{ %}SQ6"/ď̄8Q-7$DUkmĮ~! &c YP)S̙ÅiqȜ:OŦD by@LΚ^Z>/0,0ḁvV gFīUUU]֨8<1Il6vx^!NBq_2h;\8śL,όc#V0@ ?uBmL/ "}T&_!OzÇ>|8xKOS}?]Pe"4;u:(#nI=0AL@an>XlLg6҂cd. ,)=E@ ꛨbttTHB(2j((Y(!}hhqd DG ^D $v;eŀ%:8$Haylh СkmmcͬA<@g.;;M>-$ϟ{6:cˌ8bI 0ɀ61h$t4W_}F<h򪫮d7xcH{Gg'۶}x.x9N ̿QjaI,5%Yԧ%s. Ov4Mn I m<}Qo OHe 14<3`EEE!#\^.jj -ĴP| @dȆu6:y^lvQ{7nکI+F 4i ֐$ZHĠB$'1@kk`˘ͦ\NS6g^V2o_irB<%2Jvy@%119pŤ@@MSףgP_fY΍}8h9!)(/qA$ t M*~y]bIII!u,!ChEhzU>{ Swx!w&ͮ`v "[߹ke Z:+n"Ԃ<+Ph(?餓B{L&.fr` x. eՎIΨmEV'T044#yXj /{ E@Hİz.Qԝ(6<<̍{#@__*@ϿD?rb^߀Udz)*FGGdg^VUU~OJw䶬#b(XLFvMQ28۷oIQV`$ s'R6==~gPC0?| `p7/ZDh\SS0|` a\2X>^AɯwlW~===#3@b !B`$zc'@JaeY#" !v)qL' d&ЮnU&"lW K Q{‚lٲn:;EsjZ*;SbQQTM[~EH;JPXoo2(W0@P#T$[(N .?'3¸=w]/}<^|ikniag>c5\HnU c.T';:zI!55_f6cA={JS~߀A%u<_MD@ Z Tȝ)g-q/'"#088${ڔO"_Í<7eß8T0 '?sJ p2*Pԉs֦<"<P6-"/U;;g|dh9Zf!CZ _J t>99f?QuCCT}pFGG}t!˼B/-b)@ FK`㯮@u8![ŸT\'oaHJRNڧ)_m:ČE9 D X1+N*`p.@=H;d*hrijjV|yP|v&"SFvۍMқ |^IiPL;E*>B&č"@>SE3d*q>ٛR]] Ĥ@ @uYC IneNQoDvLxjjG233E" &㯥ЦDX 0 F92" P G &vȼ`E=lB" 87bMND,ƯŪ*-nTFx<{rQ%E:;;PJqq18MuJg jmRHǩZߦk@퀹$R`5ϡ\JՁH1lFgC= f)g]Lo\앹9tQU^UQXX$#M$@ I슏qA=hsp<f t#߯PZTm!;`W.'xѭ|z&:dG:ק,SZZ*}s?x^@♰Xo{nq;\cTGf$AFQ;ڃaƌ-0hgyVm`D Pyzd>>7TUUIStw^ٳ[9O[E!&0" cBPꀈP|j,oР.Ž;CNNl5H@FTD8;^7xwA|gI7%JL6  ?AvGdAU]t*4ھ}TtxОVϠ=QHB3 ٳga=Mb m ȁ #xC OFPnL+3fv${T|`|!Cm] ֡y7oQ|,??ck,|YT{Qj.c39_(X5SMy4a2@dZsP*ƘbaxڼyTTxJTDt7imz4($GHT r*)ڱc;1SGG2Qթ/lݺU9-pCJh D@xBDKq?@ z{{I w {-dzJ -4@'Ȯr]c}}}o[RN8a&s=gQ>cNG?b6 }^|MSWp֬Y,)) ?D@V" ǤDǡ;w9aS?(zFZnwdmذA9P(}@ALM ' tmѨJ?Q@4/tuu[0006ʬЄifUT$=bdbf!766 'R&@4ηEm[T93X$ "4nTywwz^h.~MM͊cΜ9,'';P8N'Qfᮮη T90#SNF5@a(Hh*rǔtzk:!TsGf"&vKlFE@xHsUX'ʘ]mgC"b 'ny[ƒ۹sS|EEEh +u{_\ZT̢@D 9e4'cZֿY𴷷 "YmYggǿd%r]|;f2˖-eLAhV0:.3+>VUU۵k!OZjP{`O>ed3nA @FO$_"qVg k2+lS}EpBB;ԅlp0 Da"AZv2PX w22кLggek2Mj|rf#l$'@@T^ҧe˖b 曩B)wR_z=͡rBMkkKXfn:Q %Ξ=#?rEBrŒ[OOSժUbyWf>=ÐxQzIj =d D@U: 뛔(R륎EƟ;I]J/z۶?!^~Y` (G?*`дY46`11,+3Sc] 6r. ikk]344 3qSYǦMXmm*g/ch-&"ϩ]"Z{oB](ljj)痢o!'B턹t[VW+ @=Q6ց#[%ǎ%[ϝhmmaL *|#!.]d@M<A"Zl Ԇ2vKJLTx?ʶh_!W+܀oI$Cm&eN[Uld |N.ui ŧV͜6m*T7;1 xE>oM\\NvtND.촱'@!''Ws5kɪ#|! .J?; pݺ6wc lGcV+TJ[;~+WT\ BS^D& o[z0HVv s_b+B@ծɃAQ`Άaǎ3x 7PPPWfA;s9V Accӣ@CCmmm6hje[FF]pdDN w@jN "KO8y=h][[b@~֭'̞=(?:@8)dsD/_.S.t:ʓ著 Z֖h@@:u*i*U80"s_ x)8oi[[9Fվ;z0MƆOmmjrժR *7$F׌?r#( H?%9Yȯ-c7˫n Cx;mU[nU\.SӠom]N)^4X?oqFޥvvvv@CsN_mkS_}LB8 gT9O+7߬l<;QѨ?{0Ujx*vءpw3g۵0'":5lye55h͚lgPWWh46BZwں"ϟ ^?٭ ?pH;`.}u^?nMTSS_?@UU:P8 pQŢ2TqgTo&DwE_sLt4 Ut:xzn`(pC[m6sl5 ,>|b/UW]EG)j໑P8xt>qW;j ***^^+*S<_Goa,o4mQ|Q:0VpAvbB+Acc#}7vy:nC^%mTWW}!>)[B{JުV׼nO{Zrbt7ӰaC`OA(n%'K-+--kMkM8FEmN(App0uם@8Ip|u"VStTbG FaYok0zZ27.%#K|9]p4}t'"/)w~}Çi۶mrA[2{ulyW]]bՐphŊTQQ9}]ؾ0x v,Ź.V{yֹ]ee\pbb甐@vfS"mCDsQl?fӦMtA{+7j7{B{U;3I&yT*DVXz~4"cb) 7}v(⧼ b(Q6HNzwkr޼/+?J}{ugzY$_|}M+w{Xzi[[{Vdg$"==̹U^0xpH:?C&'+_u+**q@ F/BB*v^frT?Lk Ew۲uAmm퇍9^Vܬ_gkw`￯9 }(""VH@Ú.Y?B ںuMx.\VV?穾n 8pPJMM˭ ":͂ou;;mFt{ǴVCx! YޱgG(.|75W_}5]|r"Qݧ0O>'+ş|^*4|E+//{Z TIx~#Uk=appTaD׮? S3.|]6V?m _o~d:j-^wrLt.͞}39wUc$&duG)c0E?wٲevucĴY\\8c6|RXeeeس$C|\s3g8mi ?n P|u7?G\njI,>rÏJ'za/3?_}:n=7X=((v^l}Qux=?.V!J~k&SթB)_c>+X="~6jx577ˁȟ@WE@@=ou蓓E?믿mw0[[[ |a˫cO]?$lo, D? ppTpV{vk^YY/-?_JKK^7Lwq!E[oiӦ)ңʉ\9=JѼ?G^~2b~"ۗǕ 1:ϩ^K/)cU>أ4fbECL0EZklGh߾}vyh4444dkE⥪-ؿ0HIx̋/HƍZN%/<<ӊ)ShrG]v> ǣV8##;<-Ni`p0𚫮P>44}5ҡi3P?,P]iUr7V{M{{{a@,***GxxCl̓кuekU<9J+bP ;+l 3YPPpdjƨ Nh4KKKw 7|~ls \4/e ] G5}Yjn۟re连C1Z ~beϠcg7U#8mw߂b@4*ꟼ\AEEEK//:Y9ө 檮;L&#io.]1xoذ>3EcV8|zפgmV݁pPUU{R w0G1j?r;t{]܊]\\4F͈lkkv{k_犀z5'6's8 *Uޭ 6%˝#g=F_zBroVuiM0xhj{7֭[eԞ9rP^^vN(PZVVj@aM/[_o^V@*.)C~G7p(@Qq[ffO<Wғ/ 6 JJﰷ,^~*++*+Fd(@0U5nl(+xkF󢽞2>XF^ȱcBkT.|6obw?vČF!*o=+ )QPXKKF{"<`yk~~=b1A?^ zŋҥKz(fs0Yj}wM=l*u(*^&\)w;pݪ t!N[[km^^ޟf].\Cq߹s'-XN5+++Spu foQ5K>pɵp^(+|zZMMMKT*sx.3ZEbrhlѢh/~QQQ.MAG0!!N^d޿=x0{sss6?n04/OphWp*oJMIA AqNʲ2?%N'#΍`usƶ}xR=6lk1BCC 9%9)i ~yڵÎi‚z}&aXZr쨰ȅE{m󏌈ѣG^Ax?hD;?TUUE][9GlSC=Bb3jo翈' 1myy p4rH<.  /p@?0T*_ _//(ȟ$QVV_JL[6JMKc'.~WOa)$dݟ5P---;сdσUJoFґ͛7;鞹wQ(D80 3(5%١USS# eީ g^ގ~MAAz~R.afNJ0;.x4Gdpo, %&&͔5= ͻ{}ֿgGYVV̖G˖}sa׿Yxr?a8v@Rq  ex^cssv% `+4\zG"}`GOH9aZE?(C_XXp#sD!QOmwY~^ rr2=lQf}x^uGd_){"?~J< SpM[%J&H>W ,S J0T!9qT /QHH\Jv2 s=z~)S?8n{Ōh 1pw~'sߕH1df5kT!|:++{PG `x#qU.u4t5W_%_f!caСtQfpD^}Uz뭷ׯ|k;?[UBΚ!^hDGrss{<_]q ޹Ao 隫0gkk+=|Z jT*b)>,ǓYɞ!^nE }O۷owu 6|~K{)e~] Y&N?7l"Jߜ͗x=#JXd2ʂ?)y3{$`',9>rmlLS7++νrrrdTQ C/uYgg>|eKKJt dXLpnٲe_jg f^s5}4|0 @~u=LF*vwswޡ?ހa%yzNʻWƿCW 1N)/ Gwu7 I27H!"A~^Fqu4vh}NG}>#i{8j!w0c?8 6dgg]+DWJpFoYA&&iS/<wy2"A~-}F>\%),,iϫ{.mݺMJ5pQe%Tx$$D *Vl,X@/@z"&&niwRZZ*~awrV΄;{}rW`>g9}qs({E@WV῏11))1m|/_N%%裏RzzӮkԨQA;v줍6Scc&*rcϔ[o;o8+x3*a:&g0!^Jz\"51Ta͑uͣ.yL8tڸqG9)Pb1MKMs9'&8JJJ矧l9(_gee O/(?_U@*#멧\wɿstѤIh ta`!cA謳Π\rďN~\h4o @ TUU}խ>|RDDv~y.RI{Bnvur۩HY9"!\{_TT0eU?}Kя _ bb@Œ̏9X:ի;ӧZO0^*U>m=bBp;gMֽ#23צ ݻw ?HV?VTyϡ7p4f4yԨC~d]@Pv~' 9r<+h]rM`8.XpTԔ٫hRjN[atRw+ oX܌f}١C.1b3u y\f,λK[qeҞ=hR:>33Ә1]ɡz8_ !xF|_TMX,#G:tԴWV_5` xgi2-0l0^73p3h2U{*..!,4WdoEGGӈ q ܁VZxǸ#ސ?Pʛ'#xU\\`0dgdd~0`Jصipo⁜ \-V(//={ё#G2B_1<y^ֻÞ>{AAddiԈLӝJ[nEޓ9~?XVVPYY;\\ QWWu#_^>J1^h}tmє)+{߿_LΔ:,YsdĞg 7ߧ޵|4|P>"##<{/nֺ^ohAAmu0BE;]VC,)'NxY̙3i+!4sV,>B555[ lCGT8mwGNޜ'#c% vI%__-X9y g2A!LvEo {322+&3N 0ꔽ-[ o͜y O75BbbBBOÇQJrr[>Cj.|{.++}_i'@#AL1bqs{&CeS"AN boJz{:rENR il=nÖ>d7;5ox2d.e0tQU~ NW}tA9FjjjL ܕ}Orr֡C-0YA} ,OZlL_|EZf ϳ颋.r{‘ qdo^^_@Z2LzxOE &mk? rr]a)<,T!irIw6LQQ-^)m۶MPGnӥѨvVx?UUU+ þ3^hc]-PPP@=8}Y4{l:3̐`!Zc>Y;FXLz < HǍ]?~g!c9m' x-Y֭@-;2bcW{4V̈ijb333S.Դ[SSSh@_=I|~o1cx̽jdJOnN, \-?bacN'| uy/In;l /РA,O ^N~-IHЯma3͘] ! JDDUprzɲȑ#=~qDpJ[!wj؜)6 ;WTE?-_q\9s8WؘXJLLĄxS}~ŊrJ9ͪzjjaփ #sb2sd4jD`r^@]wGEJxUR1]UU%zjmmt\n5Jʆ9RxvÖ_VwkS[7=}w!~g4L/6&FTdGZj^-)->!c K|A<藄{A'Njke~7l-dXo_OH 딅?QFM7INXϵ6n"I}}oֹV\A6m)"g^Aij50A@S"888fСccc3Xy7n]s4el֢Amim%]S55d*wX2 iѣZWydYy<8m4oÆ>HzX˿6X?t萼l{-͚*sF@@b2d9xY6HFbǭ q8Ŀ~zޅSGUlll\TZZ`@@ <ЄM1ѫ~#fj„ 4c SbdeeѺue6p 6mM8^xiAxX(((vڱc'"ԻR[[p*" >7..n)“5GcIL}2*J6m> LW4#6t_UVVpO ք$'/1.GyL9/'ڿLV͆] ]ى'߲eV~2OYpUc_<8Ar ~{hiiڷo/8pP;eȶt 0Uÿ  BCCC8{"""nojmuw߭}ϠOH'N!:Y#tA͕ {8;l+c+B^;^INN{ll_pYU XW0ݭ5Q df}qq; py|| گ˥'zq}|^ϼ#[ YpС锒Bqq)M"}#UWWJW5ܬ9|?g#25o2jZ͒z_! zZ6ĵ$w||uq֐o&CHpC"ð0o HH'q+E˶%;lf  2']_ $\_[^~ss3F) Ͼ'Pϼ+{o1>owc& 10[̫sǨF  Iz܅*l= BBe <<"" J9LPv`1%x0YD0mnb=x^[o0HC/]O>c5}=d>"ݽ;Ľ&⺺L&6(0Fjw!<>&&Fa/++ ~Mr:Q濷^ՐZ{~b:s:=zXs4o?E/Ԩ@miieeGEEV?w4w->&=uЭg }[Ӥ0lj|`,XŌ@z~VYظ86hb"#00.22r!XdǠPwuu5lvdB%?Xѿ cf]%{ )kxv644hllh0qbiZǀ#΍:""!$)9F^]MMM E^; `flnn :=""K0*=XCce{cc㚦ƝF}7nj???,,lDFF]2) ;Dj5Y:~^,<&p>/t*>J8p`GDD\$D  A_<^mmmx@pѨV HpppgFDD.44QB[Auuƾ!K0E~gs~{o 1$$t ̆z{x;FL&S0Z[[v͇ZK::::q@)ACQ߿XhhhBBBNa0(Pֳg8^. ~Nss6drGBNbqh -P! F a0.(ho\XUT0,~ЋYgfJxGZZZͦ"akw>lfs#}ֿ祇 HB`!!AAABD&}@O@Du{q*VaFD޾ Xx8J C/_~BD?18x~q DA Qջa@=~+nk{6?CwOL#$3^h|eggWYխA,o' •F^e 6B VAf 6ZH{x*DBP`` o׿[?F> 4Nwş[ho޻05S/Fu:auw3 x~A=[ϼ8įM}=^8Gu8bGr~BDp<|aM7*+,*B_H?ɓ]ݧ!~ @ @@ @@idIENDB`JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_AnimatedComponentTemplate.cpp000066400000000000000000000036351263452017400301620ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! ============================================================================== */ #ifndef MAINCOMPONENT_H_INCLUDED #define MAINCOMPONENT_H_INCLUDED INCLUDE_JUCE //============================================================================== /* This component lives inside our window, and this is where you should put all your controls and content. */ class MainContentComponent : public AnimatedAppComponent { public: //============================================================================== MainContentComponent() { setSize (800, 600); setFramesPerSecond (60); } ~MainContentComponent() { } void update() override { // This function is called at the frequency specified by the setFramesPerSecond() call // in the constructor. You can use it to update counters, animate values, etc. } void paint (Graphics& g) override { // (Our component is opaque, so we must completely fill the background with a solid colour) g.fillAll (Colours::black); // You can add your drawing code here! } void resized() override { // This is called when the MainContentComponent is resized. // If you add any child components, this is where you should // update their positions. } private: //============================================================================== // Your private member variables go here... JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent) }; // (This function is called by the app startup code to create our main component) Component* createMainContentComponent() { return new MainContentComponent(); } #endif // MAINCOMPONENT_H_INCLUDED JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_AudioComponentTemplate.cpp000066400000000000000000000061651263452017400275020ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! ============================================================================== */ #ifndef MAINCOMPONENT_H_INCLUDED #define MAINCOMPONENT_H_INCLUDED INCLUDE_JUCE //============================================================================== /* This component lives inside our window, and this is where you should put all your controls and content. */ class MainContentComponent : public AudioAppComponent { public: //============================================================================== MainContentComponent() { setSize (800, 600); // specify the number of input and output channels that we want to open setAudioChannels (2, 2); } ~MainContentComponent() { shutdownAudio(); } //======================================================================= void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override { // This function will be called when the audio device is started, or when // its settings (i.e. sample rate, block size, etc) are changed. // You can use this function to initialise any resources you might need, // but be careful - it will be called on the audio thread, not the GUI thread. // For more details, see the help for AudioProcessor::prepareToPlay() } void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override { // Your audio-processing code goes here! // For more details, see the help for AudioProcessor::getNextAudioBlock() // Right now we are not producing any data, in which case we need to clear the buffer // (to prevent the output of random noise) bufferToFill.clearActiveBufferRegion(); } void releaseResources() override { // This will be called when the audio device stops, or when it is being // restarted due to a setting change. // For more details, see the help for AudioProcessor::releaseResources() } //======================================================================= void paint (Graphics& g) override { // (Our component is opaque, so we must completely fill the background with a solid colour) g.fillAll (Colours::black); // You can add your drawing code here! } void resized() override { // This is called when the MainContentComponent is resized. // If you add any child components, this is where you should // update their positions. } private: //============================================================================== // Your private member variables go here... JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent) }; // (This function is called by the app startup code to create our main component) Component* createMainContentComponent() { return new MainContentComponent(); } #endif // MAINCOMPONENT_H_INCLUDED JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_AudioPluginEditorTemplate.cpp000066400000000000000000000022341263452017400301360ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic framework code for a JUCE plugin editor. ============================================================================== */ EDITORCPPHEADERS //============================================================================== EDITORCLASSNAME::EDITORCLASSNAME (FILTERCLASSNAME& p) : AudioProcessorEditor (&p), processor (p) { // Make sure that before the constructor has finished, you've set the // editor's size to whatever you need it to be. setSize (400, 300); } EDITORCLASSNAME::~EDITORCLASSNAME() { } //============================================================================== void EDITORCLASSNAME::paint (Graphics& g) { g.fillAll (Colours::white); g.setColour (Colours::black); g.setFont (15.0f); g.drawFittedText ("Hello World!", getLocalBounds(), Justification::centred, 1); } void EDITORCLASSNAME::resized() { // This is generally where you'll want to lay out the positions of any // subcomponents in your editor.. } JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_AudioPluginEditorTemplate.h000066400000000000000000000017641263452017400276120ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic framework code for a JUCE plugin editor. ============================================================================== */ #ifndef HEADERGUARD #define HEADERGUARD EDITORHEADERS //============================================================================== /** */ class EDITORCLASSNAME : public AudioProcessorEditor { public: EDITORCLASSNAME (FILTERCLASSNAME&); ~EDITORCLASSNAME(); //============================================================================== void paint (Graphics&) override; void resized() override; private: // This reference is provided as a quick way for your editor to // access the processor object that created it. FILTERCLASSNAME& processor; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EDITORCLASSNAME) }; #endif // HEADERGUARD JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp000066400000000000000000000101701263452017400301330ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic framework code for a JUCE plugin processor. ============================================================================== */ FILTERHEADERS //============================================================================== FILTERCLASSNAME::FILTERCLASSNAME() { } FILTERCLASSNAME::~FILTERCLASSNAME() { } //============================================================================== const String FILTERCLASSNAME::getName() const { return JucePlugin_Name; } bool FILTERCLASSNAME::acceptsMidi() const { #if JucePlugin_WantsMidiInput return true; #else return false; #endif } bool FILTERCLASSNAME::producesMidi() const { #if JucePlugin_ProducesMidiOutput return true; #else return false; #endif } bool FILTERCLASSNAME::silenceInProducesSilenceOut() const { return false; } double FILTERCLASSNAME::getTailLengthSeconds() const { return 0.0; } int FILTERCLASSNAME::getNumPrograms() { return 1; // NB: some hosts don't cope very well if you tell them there are 0 programs, // so this should be at least 1, even if you're not really implementing programs. } int FILTERCLASSNAME::getCurrentProgram() { return 0; } void FILTERCLASSNAME::setCurrentProgram (int index) { } const String FILTERCLASSNAME::getProgramName (int index) { return String(); } void FILTERCLASSNAME::changeProgramName (int index, const String& newName) { } //============================================================================== void FILTERCLASSNAME::prepareToPlay (double sampleRate, int samplesPerBlock) { // Use this method as the place to do any pre-playback // initialisation that you need.. } void FILTERCLASSNAME::releaseResources() { // When playback stops, you can use this as an opportunity to free up any // spare memory, etc. } void FILTERCLASSNAME::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages) { // In case we have more outputs than inputs, this code clears any output // channels that didn't contain input data, (because these aren't // guaranteed to be empty - they may contain garbage). // I've added this to avoid people getting screaming feedback // when they first compile the plugin, but obviously you don't need to // this code if your algorithm already fills all the output channels. for (int i = getNumInputChannels(); i < getNumOutputChannels(); ++i) buffer.clear (i, 0, buffer.getNumSamples()); // This is the place where you'd normally do the guts of your plugin's // audio processing... for (int channel = 0; channel < getNumInputChannels(); ++channel) { float* channelData = buffer.getWritePointer (channel); // ..do something to the data... } } //============================================================================== bool FILTERCLASSNAME::hasEditor() const { return true; // (change this to false if you choose to not supply an editor) } AudioProcessorEditor* FILTERCLASSNAME::createEditor() { return new EDITORCLASSNAME (*this); } //============================================================================== void FILTERCLASSNAME::getStateInformation (MemoryBlock& destData) { // You should use this method to store your parameters in the memory block. // You could do that either as raw data, or use the XML or ValueTree classes // as intermediaries to make it easy to save and load complex data. } void FILTERCLASSNAME::setStateInformation (const void* data, int sizeInBytes) { // You should use this method to restore your parameters from this memory block, // whose contents will have been created by the getStateInformation() call. } //============================================================================== // This creates new instances of the plugin.. AudioProcessor* JUCE_CALLTYPE createPluginFilter() { return new FILTERCLASSNAME(); } JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_AudioPluginFilterTemplate.h000066400000000000000000000042141263452017400276020ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic framework code for a JUCE plugin processor. ============================================================================== */ #ifndef HEADERGUARD #define HEADERGUARD APPHEADERS //============================================================================== /** */ class FILTERCLASSNAME : public AudioProcessor { public: //============================================================================== FILTERCLASSNAME(); ~FILTERCLASSNAME(); //============================================================================== void prepareToPlay (double sampleRate, int samplesPerBlock) override; void releaseResources() override; void processBlock (AudioSampleBuffer&, MidiBuffer&) override; //============================================================================== AudioProcessorEditor* createEditor() override; bool hasEditor() const override; //============================================================================== const String getName() const override; bool acceptsMidi() const override; bool producesMidi() const override; bool silenceInProducesSilenceOut() const override; double getTailLengthSeconds() const override; //============================================================================== int getNumPrograms() override; int getCurrentProgram() override; void setCurrentProgram (int index) override; const String getProgramName (int index) override; void changeProgramName (int index, const String& newName) override; //============================================================================== void getStateInformation (MemoryBlock& destData) override; void setStateInformation (const void* data, int sizeInBytes) override; private: //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FILTERCLASSNAME) }; #endif // HEADERGUARD JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_ComponentTemplate.cpp000066400000000000000000000041611263452017400265120ustar00rootroot00000000000000/* ============================================================================== This is an automatically generated GUI class created by the Introjucer! Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Created with Introjucer version: %%version%% ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright (c) 2015 - ROLI Ltd. ============================================================================== */ //[Headers] You can add your own extra header files here... //[/Headers] %%includeFilesCPP%% //[MiscUserDefs] You can add your own user definitions and misc code here... //[/MiscUserDefs] //============================================================================== %%className%%::%%className%% (%%constructorParams%%) %%initialisers%%{ //[Constructor_pre] You can add your own custom stuff here.. //[/Constructor_pre] %%constructor%% //[Constructor] You can add your own custom stuff here.. //[/Constructor] } %%className%%::~%%className%%() { //[Destructor_pre]. You can add your own custom destruction code here.. //[/Destructor_pre] %%destructor%% //[Destructor]. You can add your own custom destruction code here.. //[/Destructor] } //============================================================================== %%methodDefinitions%% //[MiscUserCode] You can add your own definitions of your custom methods or any other code here... //[/MiscUserCode] //============================================================================== #if 0 /* -- Introjucer information section -- This is where the Introjucer stores the metadata that describe this GUI layout, so make changes in here at your peril! BEGIN_JUCER_METADATA %%metadata%% END_JUCER_METADATA */ #endif %%staticMemberDefinitions%% //[EndFile] You can add extra defines here... //[/EndFile] JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_ComponentTemplate.h000066400000000000000000000041351263452017400261600ustar00rootroot00000000000000/* ============================================================================== This is an automatically generated GUI class created by the Introjucer! Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Created with Introjucer version: %%version%% ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright (c) 2015 - ROLI Ltd. ============================================================================== */ #ifndef %%headerGuard%% #define %%headerGuard%% //[Headers] -- You can add your own extra header files here -- #include "JuceHeader.h" //[/Headers] %%includeFilesH%% //============================================================================== /** //[Comments] An auto-generated component, created by the Introjucer. Describe your class and how it works here! //[/Comments] */ %%classDeclaration%% { public: //============================================================================== %%className%% (%%constructorParams%%); ~%%className%%(); //============================================================================== //[UserMethods] -- You can add your own custom methods in this section. //[/UserMethods] %%publicMemberDeclarations%% private: //[UserVariables] -- You can add your own custom variables in this section. //[/UserVariables] //============================================================================== %%privateMemberDeclarations%% //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%className%%) }; //[EndFile] You can add extra defines here... //[/EndFile] #endif // %%headerGuard%% JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_ContentCompTemplate.cpp000066400000000000000000000015661263452017400270070ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! ============================================================================== */ INCLUDE_CORRESPONDING_HEADER //============================================================================== CONTENTCOMPCLASS::CONTENTCOMPCLASS() { setSize (600, 400); } CONTENTCOMPCLASS::~CONTENTCOMPCLASS() { } void CONTENTCOMPCLASS::paint (Graphics& g) { g.fillAll (Colour (0xff001F36)); g.setFont (Font (16.0f)); g.setColour (Colours::white); g.drawText ("Hello World!", getLocalBounds(), Justification::centred, true); } void CONTENTCOMPCLASS::resized() { // This is called when the CONTENTCOMPCLASS is resized. // If you add any child components, this is where you should // update their positions. } JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_ContentCompTemplate.h000066400000000000000000000016341263452017400264500ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! ============================================================================== */ #ifndef HEADERGUARD #define HEADERGUARD INCLUDE_JUCE //============================================================================== /* This component lives inside our window, and this is where you should put all your controls and content. */ class CONTENTCOMPCLASS : public Component { public: //============================================================================== CONTENTCOMPCLASS(); ~CONTENTCOMPCLASS(); void paint (Graphics&); void resized(); private: //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CONTENTCOMPCLASS) }; #endif // HEADERGUARD JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_InlineComponentTemplate.h000066400000000000000000000021671263452017400273220ustar00rootroot00000000000000//============================================================================== class COMPONENTCLASS : public Component { public: COMPONENTCLASS() { // In your constructor, you should add any child components, and // initialise any special settings that your component needs. } ~COMPONENTCLASS() { } void paint (Graphics& g) { // You should replace everything in this method with your own drawing code.. g.fillAll (Colours::white); // clear the background g.setColour (Colours::grey); g.drawRect (getLocalBounds(), 1); // draw an outline around the component g.setColour (Colours::lightblue); g.setFont (14.0f); g.drawText ("COMPONENTCLASS", getLocalBounds(), Justification::centred, true); // draw some placeholder text } void resized() { // This method is where you should set the bounds of any child // components that your component contains.. } private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (COMPONENTCLASS) }; JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_MainConsoleAppTemplate.cpp000066400000000000000000000007261263452017400274230ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! It contains the basic startup code for a Juce application. ============================================================================== */ APPHEADERS //============================================================================== int main (int argc, char* argv[]) { // ..your code goes here! return 0; } JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_MainTemplate_NoWindow.cpp000066400000000000000000000037321263452017400272630ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic startup code for a Juce application. ============================================================================== */ APPHEADERS //============================================================================== class APPCLASSNAME : public JUCEApplication { public: //============================================================================== APPCLASSNAME() {} const String getApplicationName() override { return ProjectInfo::projectName; } const String getApplicationVersion() override { return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return ALLOWMORETHANONEINSTANCE; } //============================================================================== void initialise (const String& commandLine) override { // Add your application's initialisation code here.. } void shutdown() override { // Add your application's shutdown code here.. } //============================================================================== void systemRequestedQuit() override { // This is called when the app is being asked to quit: you can ignore this // request and let the app carry on running, or call quit() to allow the app to close. quit(); } void anotherInstanceStarted (const String& commandLine) override { // When another instance of the app is launched while this one is running, // this method is invoked, and the commandLine parameter tells you what // the other instance's command-line arguments were. } }; //============================================================================== // This macro generates the main() routine that launches the app. START_JUCE_APPLICATION (APPCLASSNAME) JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_MainTemplate_SimpleWindow.cpp000066400000000000000000000074321263452017400301410ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic startup code for a Juce application. ============================================================================== */ APPHEADERS Component* createMainContentComponent(); //============================================================================== class APPCLASSNAME : public JUCEApplication { public: //============================================================================== APPCLASSNAME() {} const String getApplicationName() override { return ProjectInfo::projectName; } const String getApplicationVersion() override { return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return ALLOWMORETHANONEINSTANCE; } //============================================================================== void initialise (const String& commandLine) override { // This method is where you should put your application's initialisation code.. mainWindow = new MainWindow (getApplicationName()); } void shutdown() override { // Add your application's shutdown code here.. mainWindow = nullptr; // (deletes our window) } //============================================================================== void systemRequestedQuit() override { // This is called when the app is being asked to quit: you can ignore this // request and let the app carry on running, or call quit() to allow the app to close. quit(); } void anotherInstanceStarted (const String& commandLine) override { // When another instance of the app is launched while this one is running, // this method is invoked, and the commandLine parameter tells you what // the other instance's command-line arguments were. } //============================================================================== /* This class implements the desktop window that contains an instance of our CONTENTCOMPCLASS class. */ class MainWindow : public DocumentWindow { public: MainWindow (String name) : DocumentWindow (name, Colours::lightgrey, DocumentWindow::allButtons) { setUsingNativeTitleBar (true); setContentOwned (createMainContentComponent(), true); setResizable (true, true); centreWithSize (getWidth(), getHeight()); setVisible (true); } void closeButtonPressed() override { // This is called when the user tries to close this window. Here, we'll just // ask the app to quit when this happens, but you can change this to do // whatever you need. JUCEApplication::getInstance()->systemRequestedQuit(); } /* Note: Be careful if you override any DocumentWindow methods - the base class uses a lot of them, so by overriding you might break its functionality. It's best to do all your work in your content component instead, but if you really have to override any DocumentWindow methods, make sure your subclass also calls the superclass's method. */ private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) }; private: ScopedPointer mainWindow; }; //============================================================================== // This macro generates the main() routine that launches the app. START_JUCE_APPLICATION (APPCLASSNAME) JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_MainTemplate_Window.cpp000066400000000000000000000073021263452017400267630ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated by the Introjucer! It contains the basic startup code for a Juce application. ============================================================================== */ APPHEADERS //============================================================================== class APPCLASSNAME : public JUCEApplication { public: //============================================================================== APPCLASSNAME() {} const String getApplicationName() override { return ProjectInfo::projectName; } const String getApplicationVersion() override { return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() override { return ALLOWMORETHANONEINSTANCE; } //============================================================================== void initialise (const String& commandLine) override { // This method is where you should put your application's initialisation code.. mainWindow = new MainWindow (getApplicationName()); } void shutdown() override { // Add your application's shutdown code here.. mainWindow = nullptr; // (deletes our window) } //============================================================================== void systemRequestedQuit() override { // This is called when the app is being asked to quit: you can ignore this // request and let the app carry on running, or call quit() to allow the app to close. quit(); } void anotherInstanceStarted (const String& commandLine) override { // When another instance of the app is launched while this one is running, // this method is invoked, and the commandLine parameter tells you what // the other instance's command-line arguments were. } //============================================================================== /* This class implements the desktop window that contains an instance of our CONTENTCOMPCLASS class. */ class MainWindow : public DocumentWindow { public: MainWindow (String name) : DocumentWindow (name, Colours::lightgrey, DocumentWindow::allButtons) { setUsingNativeTitleBar (true); setContentOwned (new CONTENTCOMPCLASS(), true); centreWithSize (getWidth(), getHeight()); setVisible (true); } void closeButtonPressed() override { // This is called when the user tries to close this window. Here, we'll just // ask the app to quit when this happens, but you can change this to do // whatever you need. JUCEApplication::getInstance()->systemRequestedQuit(); } /* Note: Be careful if you override any DocumentWindow methods - the base class uses a lot of them, so by overriding you might break its functionality. It's best to do all your work in your content component instead, but if you really have to override any DocumentWindow methods, make sure your subclass also calls the superclass's method. */ private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) }; private: ScopedPointer mainWindow; }; //============================================================================== // This macro generates the main() routine that launches the app. START_JUCE_APPLICATION (APPCLASSNAME) JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_NewComponentTemplate.cpp000066400000000000000000000025551263452017400271710ustar00rootroot00000000000000/* ============================================================================== FILENAME Created: DATE Author: AUTHOR ============================================================================== */ INCLUDE_JUCE INCLUDE_CORRESPONDING_HEADER //============================================================================== COMPONENTCLASS::COMPONENTCLASS() { // In your constructor, you should add any child components, and // initialise any special settings that your component needs. } COMPONENTCLASS::~COMPONENTCLASS() { } void COMPONENTCLASS::paint (Graphics& g) { /* This demo code just fills the component's background and draws some placeholder text to get you started. You should replace everything in this method with your own drawing code.. */ g.fillAll (Colours::white); // clear the background g.setColour (Colours::grey); g.drawRect (getLocalBounds(), 1); // draw an outline around the component g.setColour (Colours::lightblue); g.setFont (14.0f); g.drawText ("COMPONENTCLASS", getLocalBounds(), Justification::centred, true); // draw some placeholder text } void COMPONENTCLASS::resized() { // This method is where you should set the bounds of any child // components that your component contains.. } JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_NewComponentTemplate.h000066400000000000000000000012101263452017400266210ustar00rootroot00000000000000/* ============================================================================== FILENAME Created: DATE Author: AUTHOR ============================================================================== */ #ifndef HEADERGUARD #define HEADERGUARD INCLUDE_JUCE //============================================================================== /* */ class COMPONENTCLASS : public Component { public: COMPONENTCLASS(); ~COMPONENTCLASS(); void paint (Graphics&); void resized(); private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (COMPONENTCLASS) }; #endif // HEADERGUARD JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_NewCppFileTemplate.cpp000066400000000000000000000004061263452017400265420ustar00rootroot00000000000000/* ============================================================================== FILENAME Created: DATE Author: AUTHOR ============================================================================== */ INCLUDE_CORRESPONDING_HEADER JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_NewCppFileTemplate.h000066400000000000000000000004641263452017400262130ustar00rootroot00000000000000/* ============================================================================== FILENAME Created: DATE Author: AUTHOR ============================================================================== */ #ifndef HEADERGUARD #define HEADERGUARD #endif // HEADERGUARD JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_NewInlineComponentTemplate.h000066400000000000000000000031321263452017400277650ustar00rootroot00000000000000/* ============================================================================== FILENAME Created: DATE Author: AUTHOR ============================================================================== */ #ifndef HEADERGUARD #define HEADERGUARD INCLUDE_JUCE //============================================================================== /* */ class COMPONENTCLASS : public Component { public: COMPONENTCLASS() { // In your constructor, you should add any child components, and // initialise any special settings that your component needs. } ~COMPONENTCLASS() { } void paint (Graphics& g) { /* This demo code just fills the component's background and draws some placeholder text to get you started. You should replace everything in this method with your own drawing code.. */ g.fillAll (Colours::white); // clear the background g.setColour (Colours::grey); g.drawRect (getLocalBounds(), 1); // draw an outline around the component g.setColour (Colours::lightblue); g.setFont (14.0f); g.drawText ("COMPONENTCLASS", getLocalBounds(), Justification::centred, true); // draw some placeholder text } void resized() { // This method is where you should set the bounds of any child // components that your component contains.. } private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (COMPONENTCLASS) }; #endif // HEADERGUARD JUCE-4.1.0/extras/Introjucer/Source/BinaryData/jucer_OpenGLComponentTemplate.cpp000066400000000000000000000034431263452017400275610ustar00rootroot00000000000000/* ============================================================================== This file was auto-generated! ============================================================================== */ #ifndef MAINCOMPONENT_H_INCLUDED #define MAINCOMPONENT_H_INCLUDED INCLUDE_JUCE //============================================================================== /* This component lives inside our window, and this is where you should put all your controls and content. */ class MainContentComponent : public OpenGLAppComponent { public: //============================================================================== MainContentComponent() { setSize (800, 600); } ~MainContentComponent() { shutdownOpenGL(); } void initialise() override { } void shutdown() override { } void render() override { OpenGLHelpers::clear (Colours::black); } void paint (Graphics& g) override { // You can add your component specific drawing code here! // This will draw over the top of the openGL background. } void resized() override { // This is called when the MainContentComponent is resized. // If you add any child components, this is where you should // update their positions. } private: //============================================================================== // private member variables JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent) }; // (This function is called by the app startup code to create our main component) Component* createMainContentComponent() { return new MainContentComponent(); } #endif // MAINCOMPONENT_H_INCLUDED JUCE-4.1.0/extras/Introjucer/Source/BinaryData/projectIconAndroid.png000066400000000000000000000177261263452017400254610ustar00rootroot00000000000000PNG  IHDR>atEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp iIDATx] TՕ>o*zoٷqel܍_LfQcM8ql~It,f1 ЙhQ&18J .L, , ]UWos{hꦪyWUޫz=, v6^5^5^5^sxD9iyvW?>/a@8k«q`:E׍U8<__e%Q/uƨD\.7 p >mel>$7xhc܇?PKB:q|&A2u]{ApK% 0Ӂ@`xbN/@_uoͦ~?0WQҴl6zߟ)ueoC dXȲEQn7!}@/9?O|>pB >bYfEHKD8\9Dl8 7Ik8C5Nu #mx -2$սSjy H8\9PhfN<_m-I# G .A'HIl9x g$m}Dw"!~*w@EXSncH4 ZLs0_ Zk A3T`0t$Bc$Hx,BHI*mj~ĿdqN"6ks,lfݾ{y\ 4Ԑ@PQM7^,~SMW`Gßz ~!"/"A$(@`m6rc@. á[0UtqِsGgD&^S`٫GȕKipID+P=/eHxt"@Έ?l+:^@}^r~8Eiav͠TX9"+a!?}=fEcFa ų/:3x >ч@2D<}g]-?Fѿ`> H:Ç=ܴbƶO~+Jg%|q upgD@}FܙB}?@l.zCx! rT'C1X77|h_6q|}%EubB4(PJMt&,(QS0c/_fgv"bh吘Z>D9ar%m:L*B hj?վ(zf6 i[2LrꏢюSsf%+A0kw! `s/`{/CPnDwa9ّ(bCϴt4r_CmL2|x ڔ7 C4J$IH`ͪ!U=-_`߄Qw@7ROwg2*<d܎fX]OaKog1M/GUrԉ/@t:}< p}s0-n9I8|oZIFJ +Rh΀ Zf45#XT}:cN 6`kE]`Q/y9s+#4DgCp锯;ڞW .Pe}# އ̘ hݏbYqczX@b,F)I$~,׽=4 utUUhәooXA}OQջ,} z Esy y# ϣfIt= 3'݈G555+y;upXhDsgGcȒOG}4vuޅs8|< ]—p}hE_*Φ`d2͆ay 9xo)*?ްp5;|jw|}p&\9svs\ Vt싯&H&P|’ -h`chOH4O ͇yM& f5|g.uI:}u'7"?J=,̜Uw*r-E4*VNA wA1ck,T;'HPK`9bܜ? fThbv0R uDٔOVAO{?70O"nh}R]5 ݒNN},6@.!qT= 75Q%oF(2oQ G=^dU~`<5`|_=O!Dk=@dn%8|~:<-=tΣ/"(D}Y6$Rm.{te,#EI݌>O`mw@ ?(r}ƚ z;8`D:3kF >8`v2n>fh4n#&dk\b?Q.CĦݣRHY":Z| 2~!A/ n<V7oW8/KD_Ȕ$UB鸔"#h3=`'&Y,kdxlG?,bā*xU=zx,/d29B޽wA!QWaY4p8a*HLA5d 3Fg#AxuCBOG9<ϑ! ?ΕŜՈj7bl/r`%ZweGe Nbq ͪP݊jޙQ|^LiEl_8kAPMa I %W hIuM3p,D1٭i;8 eY/T"k֪8`DEq'D\|ZkgA2O9}c= |]]:Unql *AbIy$aq8@B˼FʛS`Y#[,5]\f5͡zIwá|qRȧO~}Ibe9{b3ܹvwH[LS ӈ9,I/E> iR^* .^S<\tQŜ"-JczM)>. yv%yRs*Qه<*-`/]cq v5<<2;.94 ,<Ŋ})S~F wױ_f.nZ!(7 ;IM+Ek{mG~KowsC@j`"h+ܜd~XUUU2X@|/y{\UK}?܉l]f;Qw0xm@X;CR[`e$!!2h܅ FuEC Oʅ{c/ ȜrN4z+1 g"+;䏸 T{QfKahZҙ f$&4Aͦi@/ ǃxY;dsf^JxNFvmY4"߸wh%]UJ ^'Ϣq#IŤsy5^5^5^5^5^5^5^5^pyC:֍+OP|O't[xfBnY^e%D.>'4g6UV߶jb(K|dwr At;kk4%'}XKg ́]NBh "בHNayn/--K`[!Agk!g$Nz-Ya扪hiش (U6I*i@ Go(KmM8 0,%Z^$oZO^2 )}4S9FzTGaA]0G7 BEy+  *0I뺾 4Vn?>ʺ J̆gR#a7*?IHcAN}.x?N(N;JJZ *W]UU|a]8/cVprdc'c`M΍fm']J%`UͩDZkv -o݂Q{&{I~ E],#X3 ڮgk8sk@ AQWJGExXm5C~u,> Ap\ eT, ut:ކgD&.uQm`”;]mB#g$MIzQr蘲6ro#A^ǷKOdnB{ZwMs E4]:&T{W|>֮x^,%珉 B:;,TWWfTREI\XD"|-wPJr?֜O; g$("#(5T*oeieGGp8Lc*Fn3 } A&ijkkh4oO-eՋ  q#_s?Fs0t h!vl7+8Íbr*[r@x:+5s„@ @"b8i<" T x;@e҇N#n=`/͂F^9`X@Tih')̮]) 4$SFBEY$ HC嗋W2x9d/ek J,/a!M1h͂:f3={a W 8hAwWnlrbbam7 f1s{ J:Ҩ~b47Tt4I2_YO=Sb5)eogz4E r8*Am~hCpHY˸ʶ)|h#!EM83>ʈ1R_I$JG(ER\7SbKk ?+1nEEɓ;86Y8$!H$;Ȓ}go|ۏG8,'`;r6>q~{bX8ZU7,g#"~,D7sTYu,"{F# REI}>߃ hVЇ^~;ӆ99J8v/">G*dً:;;W$8nY7n"qFSph$]H Lwbks%7o(==;c7L6P(4f;UpMBt:}$.4BE(!fJ1t(}`:֔v(nF gM]][Omgy9bH#,rt]zL&ǯOM^ ,D+Rkjj:*MxP wC$S$4G%}!˒Q˂r{Awn}FAKo Jʍ,u;5šk*Sw/u*)bP]䨯uՆR;- )Wt'XqYZNFS~|Bm~IY7@/a_(utrzHBOn47MK[j3i֎F6DSլ/j{iBC"H#5^7)]gȢd?|l)yčܻVԡZ^~ +͟? ."ov򉨵)0f<2rH۠~@,ɕ2"=s#,{N%~;PbM6neW 6tg{z~pppUUUφtE30=zd8u+lUywty^ITԀ,˯rڋzhh.|hγ0 BiXؔҴ(K NK5}-fz(UWWH0dSZؒ?K:`6H7 UvpٴF500T4CbƵ RFWՖ uk< n&r+DsA|yIۿ@m-eY2kν'-"(~H9>hKD rK`_wj>q`s tf&M{Z@aIʩΠPwHVPkWp8|W[[[YC0STy@B>}0 GոS"<ط3eki*h1X A i fs*DtZG.Quu7TƆwg$SQ]7C7n֏2SٹYj( q.\AЁ3(oB׫^fƃ l6 MSO466:նlMbd2r*Ļ{O;~`Db[<{*尻|{<>EUõ7nϋ3Ѫ;cHEQ7F"A$Hk.ř٤jPj\bb$|u8o Ǐ7e< *q2>$&l96`Q:! n= m`6OuO)ϐؼug@96ܥ',}ˮrJ|  yyy '6 @IENDB`JUCE-4.1.0/extras/Introjucer/Source/BinaryData/projectIconCodeblocks.png000066400000000000000000000272151263452017400261430ustar00rootroot00000000000000PNG  IHDR>atEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp hk|*IDATx}Y,ɕV}Kv/Vfg06ex҈G^@H8}0)bPWFr cZ0 hoҾvWIdbs5K&&.)zqj2P޳_(nKrb]!Ж7VzCJޠlHagҒI tc>n=keY1֤PϷKf ʌF^ 3?-4j-s C̅f]зKLJg}K/B"i@ ` JO7ÿ0q^VW #Gh,LDuu1S gd{[{^rb)-8>)јk!@y7!MS9)a(aY1ACvpڛǀL&$nFGu8%Jgy]5<9BVch(1[, %~wFګ1< p IqƋ|(Ճd,e9E>qCYY{˰3ꠑ(VFp \+ $ %0Wj ^9'rDWl0tz8O(G rL'p>5&R&/$^|.Njf['ʕciX@iL"3ǨFm8Vz@.2!\i4P4of7@ΘGp^1B%#w{|z6"wU{ӳ̋QܑI½՛++IG@DzrѧdVYT8x! OQl<)Ď|  }Xaq3n1AXU)Y\plCɶDc#1?$!@1D1gayL[Y-+s_PAl:#g8GLxVk^C"R%*#Yp>Z$JkאQXIG6rG_mF"$ ;tJ<p|U %內t/,r`rv " NJSi ̽47Ǐ,F&14kZ]&DI*<)Nvn}.bWTdMr0L@ink=oYz>^ho+0*R%w8L<X ?ЂL` lVf;r.;\PWE1EqNE {Ŀ], B@ҿ"jK$.33vp5k<@53BqGb>9W9 |A|2TXhv" FQ u :8|KyCHmHz|"Ƥcath_83-MBk<ϴK(''ÓQ  $d'Ȣl@|UPǰA Ge1c$Hgٶ4G< ~;ƁΕmࡅ])vU^Cb-Ȝgle"FݽO| !v5LV@Hq(䕲ذ!iSy #iiQl$e("WW**;)8M<د܎ քl1k1Pa,A^ O1b"CEһ[&^G/J-??}R]1d"Ǽb#)OY=Oga=|~2Q11U40VеoTGLEm6UxAn3 FXrпW&Spʦ9O8D X6 ( 4Hjt|%`hkGJD,ڴB/mÁF'pG(1F»]AwXҾzdDUֵpq32'=x{7(-ͷ}Pؗ&_)7:TEoV(؀n?I  -ya K|wZz$)<~ ӛBc=PK, ,[|/LQ.B( h,Zsb+# xh'P$R@wfJSq}lVJ*~+o)>y4ԭEuC%^A'Hː.[v 9ܩh%NZHm_,[9čj+?B2ZUVW #D+2"}sX^ƈg* ,'=mHh˂<LXPT5Fw=ȅN$ӧnKhDdi%Y7ccnPxG-%C>x4!N|T^m٬Fԃ~3]0(!Tـ jΠG t14to{?u8v1)(K]Y`_pkOˇAx:!ba=u123AL 9<loA y.!NZ8 N4p劮hW"S NDueJ6v bT.(=62E3+-.dt, /9'vH8/*%TUT T`{mDĨ>uu1 /bM ?8聃r 7@S`QD`urcZNeٯ*5pU~\2lvSUK_JX" .zR#~-F@x`j| ݋Lv hGZr[a@a|/{"Z8ISЉو.hy#"L1D6JԮnO{ \Pü&'ɅUv7CjI6IQ[jDj#WiVUQLEGոgx 0" pEt܉ĆqP{1/%7P Aνl1znꆵ1Q]T 9s[0~}-==d`=+ GnA$4P5L@d^I4IarsA@=sp lI)C_R4E:/=OUI#hbzeѐU JƇrzk a- R^&r,n/[$DOk'iBԒ%+OݚͶ6)M4I~;oI&ux|Y6 K!Ei`JA`2hčD M䙦5˳)o;I5W$J@uJA;;g_t_0LyZ(\'֕Zt*L nDK AOaZ ^~ T%h*8{u+? 5H0q.;;m/V*u2$ELp3O$;$Z’$aX08O~P SV~GuQ |7/^oWv_Kt%ӟԒ)huʕ4M/S 4i 1lj~ԔF#@WeV$ňJZ 6~ͥ$ b aJVI hO?'ķ0Ìv9{d Зz@N@p>6 '7^w/OnbZ"6M(MM OF\k䮍3tuzǒ̊B#hх!||. rj(v͢r9iƲ2m=83 C[&8E2>Ljٔq{ʽ7Ͽؿ?Rm 0fBEee5곳?k|/|ybdDyL؈}U^Jl$*R@PN=Цuy[jHn%MJ cC׍[,Mx01 h)R+y=5.URz{c8h4Wmm{ु6.PSn /<~4k!iuhz}kly-TZC((L^SL5:RZ+$b)ě'z|2-#\l zQgmg?k;'zUY1s_Wve@5kkRw>w> Y&iD2qݪ A t?'hUEƃh8tV`ID{MXa(ςrC-+ 3@n̩RT@@I3ALP?3~}c?%4WӴW /L_j˲J$d&Q"_ ?+=sՠmajnm|h2Ac*je"*g찪1dJ EILg5c $վHSr0?5@}ʧ{,Xl6PAIu:%CUB*C < ck&2x[o~3gw&˔ڭ#RӚSwu/|ww?(x}Y…~[4aju~/w^cE$P|w;3;E$E9,E6*!*..j@AShgd SE* fd"P i#(CKOO? }FS B dFYlJN iK-ˀ"xD ]J,ެfN}'7PD ;F{;0daWbTVYM-$ɵn_zRELJv! ]^J"qDvYU >T!mYys|Z^.ĥ3`2ۘ䷲4h ﷃ9Qq.)yq$ 4' ;1` 8=ݾcIt+`l:>d+"9evVq0bpt_;{*7dٔ#:asJb;]3h .-iᱶ ‹:ݴ߫v:iZ]͏r1n'lX_9[}_5@.BlC9+']DN,^"cf&=T^Xf:)Κ ك % +VdU+dbtmt"a\.oko%RfmhLG .>w4ЊA$KLwqo@jh^hJfJ(䠇%.vn5(.x-;0u6uŇu%Rf`9@*I`=ij ه+ q[@}qoRNJ[kd,3"¡ ׵ثjRc?3"uuU u=!$nK0dKȄ"LAGXžfQtN5$mk3}(K pk8byJhX3 zrja6_c! yp6RVk>ybܺiӼ`0'P#@އ^]F>`, vUɖ g P|819Vzxs ,M!7J]z6'3GLi|Efl'"b(OvmjWUswzq=ATUH*?ZgݶJ_{[f֋/*!|Iº U;]1賕t E@cETfDl"jDRPH/gy]ЎA M !e\mi: &v&QB 3"Z&wL/H/uF0٤$wb(~ ذUd£Fv7"`=n 5*Gvy2Zg ٔݐ|4R0yuEÛƸݯ{q_?6bALuu@Ջ 4rw"zRFsv:=9WqVד2S DIwX.`m?|Ξ@ݕ`oi]!thهw7EZ$etY<"~{$ Dpw'_cWk:S%|z,RÆr]( ~E<8It6֙n$Ь XU0ϧ7v2S-W\^+]CRܸc L=# "x y̶ ~)U DpSp,u=o|puWwbv+)#A#CoC G嚈`DI+I|=I=\3yTa{%@ߊ%vS&wF_xG`0O 76I8=U7a˖l,boKbAg~o.K,KvS˚0rjy%%$`U V~,/twtx;;hp#קz4Mτ78_QҴLWHKuaHS<2N](PTlg?[[ RJ@ ?t{͏~o} aL[r:nk b>e1O˵}jWDTj![V.OhAt c#iyM0DLڀ)EL~ y3T&7sY*t zCöׅ+)=a;~^`F?A!h%}<'=k=0A e.T[x )oo8ݓ %;z > > > > > > > > > > > > > >~'YIENDB`JUCE-4.1.0/extras/Introjucer/Source/BinaryData/projectIconLinuxMakefile.png000066400000000000000000000400741263452017400266260ustar00rootroot00000000000000PNG  IHDRn\ AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs  5IDATx}ŵ鞙yWZ®"!$@`# 8`,l d3(%PλO?>v>(=V&xgR?Y[pю *1ᙦ"{q᭣$ڲla?sLn ~3=MH4ٶ \/p ~H+!x^{{'ꏻ8h+'Hw!6C)}]6~ {<I))@8^}]T 71bS^^s Ÿ ?_ 蘍lTK.e% 2 ƱؑG){F#x.==]ZZZ4OYY >\--[ȑ#.B ")p&FLg*ZڪB7`Q=g2ydիWDRCF֬Yrꩧ*Їvz衒)<7N&L /ve>Q1[O_V๔U N?8cA4e˖w-gq'eÆ F@^Biﷶ孷*sΕ'|jTqLԌ=Z98qGvqǩ\uU*u %#mo~SPڷ?cțnI*++=~D㟪K26%.BGڭC !BLUU$1`<Z\4yꩧ gO+[j94QQ'qeq SIHWPP;\RG{`*æM(6Pz 4uuu4۷o7?[omu/恵+pTdTѤ ߀0s'`M%K P͢E0R ,Cgj\p!:J!sss}jLJ61h3yW4}k{xfȬGhҺ7|Sx 3fT<4yyyrkr^P5o}^AHY@A2'y۱FÕk^] |{l;vh ^zI}YyeRZΐz:4 Ywťe˯ztf7|K>l'F1k?yc! ސqH"3%@p-guI0Ӹ?;FH4L]vՍ5 }4M+lR5l^O 02XZo!pD!,cdǫeq5^i1gʍY KťrjtLQQaIƃ+f0zrV1o~1Kۿ,M#Oe#99mTijjTdZ& 'd-)ġO@/̐\tr/o r\?儓dժ†vq|2~2*i(7'|(ܜ&?]# m&9rɵRwG$:D)$YUpPHx8%.ّJemϧJds+ԘdS!*\PMPޟP9R:Aeu}:j"0G~wXtA"R` u[nu: ɇUIa Dl`6蚪 #:H[pυx)@,.HHiyM7KsIKqM9T*U qr?;ik ɏ.GJ JA#C{܁Dy5Slj;|B 6S<ė=TFM&߹(y u#Aw!6*Gk[Lô3 闂< ^VY@a Pu7I6o'MIaAN/ESc7qY/i_ p =U,J+L8ڗ9;󓋗dGfad(d A™kvy5B!&.!̢pk}?P֬YXq x&~MuPEAyJLAfEӼRwim2/uh1꡹ NAjʿlq<Bn9d"H6 A&L|373p0V UcŪ>pUʔ̜X:myǸ9mJY1.͎Ay)uțo˦M>Rcd( 7MkU䳶ˤ}I#X.;w97$ VUmru6p' j ཁZTRUU*`#2cٸV{wHCm.FqD m&2stsAcXɆ$ߗA+YYXt; b$3<4RR82C0Q/mydߖer|ocmgLڶS֣j,AJ b:ٳg VuY}W wG={ lnV"ilXKe؟ 2.rz9GZIS"16Cry. XWQnhj əv7U $vqO?#PcOSt ã> 90<=qTepY0z4j+Uߌ3t3r% cWrr28#3C `L:,̛Y(͗_~8IHheŁNٸl\SPGoq #~3m$@4 qkBVFPV!TbRAOvВ૯Cn{Q"RU vܥ px3'@y,{-?"G^J_QA(OuDZFd%ۉ ztͥpT1RzxTtHKX}7|`/dMHlR2{X^^~|n˴2IY;<1!V02J*3)yfΜ9ff vkD&uk:w*s+;qJvQtRnF]o %gw 󋝂ۭBXwIniG 8= Q.&X$TAhR^R&v&mzg@1guRgz4rЏU]u:^{0Zp?Bʆк G#@;qh :' t4ׅc#|"sKiN Ԃ% O_0 H@:( d7 ;6h2SXw0#": L6~P,A1m}F@N&sdΝXh݂Mw㥗^i݊4"@p2gUcb2[9YkQR>n@Cu0qʊ[8 M~ާЂS>l;uޒ`aټO`U坉kJ4{G*LNP 1 _3%dZa %8[`sƍn:,/A%rΏb sY`G8i|Hxbr%"=F(I47[>W Teee9c.FA@xmO;礃kul4TxP)& 6os [L zxֿ;ס'!TNJ3TS2 !S@#Y wihx "U(-H6ľ<Ȇa UP}ҊlniVu; D4aCiLԱEُ!d\}z$kBn6aҖ|E;~˴>/-, |lT֓OR>q$lH,d'?,0P3ᨐNp [2ݍ7ި'٥hJP?Z:Z{^쟱9c]YI\c;+uyHDeσc#Zj}0's9V1F:(ObݸɈ%<#6=sZJ*D_rFZ :J-x(9@?_`F{^g#(eL5gr砖֪dR^tI:i [FKC" =l+7ќp$*5l i:[!ps$l?fA3ObhC&x6B⬴1.< 5qMwi)x,ؗ_9/)@]<]YoOc&GoO=vJ]jfB< d}؊Μ93jSN+9;"\YUks>Y$ְ֩YJgK?%( Tq:RGqUсv^.Y k֕4*piqP뱚d8- l gqcǾJef_n^,U ][rUPXτ8Rן,jxJDٶN{oe'}my)y,kp@BglPy2z8}8DqC36li!Zf}q-{ RNoZɳ-lgl$a (qr%q@ht8J'[fa_iUOkZ HHwKAN$qNuIZ4¡Xy=/X+**8+5vnmmEA {4Po&WjdX #BOoT?lji ɂEє"rO7isj_j=C_LM[<ܞ1@OL'V,o6ac-uIy')"c/t0 C=dqGf(]k1 ^6Mk7^ϔlyˏػshX{\rַkHy~<q 8Q_gVV0d#Mxa1 l>1]&lh,]V6ֱ'8p ;Lլ?OR@QbMP96 Cפ)ߠ,#3>ab7r<ڍH6R_8K_q iQFJdG 3JɕP>%.EA3:9p08CWс*$mB0oKJÔ':#?l1q ّOSg&[@;pgoA *TgF-|^<PS鐰fgaF]QG7%\ If| ?~&5~v|Gj^3Kޫg ߵx@Lp, Nxb(u4jޫS|T|d|iĺIw0s}x4`.v轕E.@wB84\)PNpPOv>G@u桕si1/Z˼xfuz .FDFa=Hs= # 횐7!0)DX2r9B ,35#҅? !_ȡE|.Aw{ndn$c H\+Q#hr<㗤8nS -D 0"7|ǭnƫ=%>Y~nS~|ɞ봴Xyfs]HU bR uk\ra"C+1.S8L]1)+T0lo͌Ka;}KžI.&^فE,HngӁz60@ ]ӄ5}|h:LbHOIr.Ɵ5YRHlC>r玖ܵ嘌㯮5R0޿hzTF0 ql1|vrRꖪةoDʇPytߵ6;ЎGۇhŢ-% O& U'Vkaѥ-# Zzp6`]zSc?j"#u;6JX+^>Mث*L&#9~ &Vʋp_-b ڵ[Pv,S%$2?5~_G#y3-#]Q9gCLqn(#ouޭCsD EnuF@/SPIř˘jRIidgˆ c{fZp?щvǑ/"\3X*&okCdf/M,>vI{#1΁I>"Ztv dOU&~#heVC;t'ٲy{TacΜܯ+LvK/Կ<-y_lC%){*˶FC_n$Qh|OIqTsHN V7ؿRf8N]Jd\~dF rڊ}`Iq杲CiETIQoV! #.r5ݿY2lC0^0X.^&ShU" !`l6˙g)؉<3@MURUTҦi%ehLe㗼f||ۯN9uTKb͑tnD4O$@5z8[_DAC-2jȊgɴTJl2>#@iR+4)ܺu)LNB`Fq6SD䂶0vFeݵͭU~=Gc}}ૢ檪c& U8N82~_B{ڲYr4f<WHaAr^'MLSSZ?7'rϏ C5AcV]KW˺־H)M0jv{7T]7Oz# 1NjQ#o(CsތT0!XUxF:ۚmYT%#g\yrɵ7YSӹ4ͩ|gM~S{cGn:"<,G'Q@;Stev|'[E?Za s }.m,?I|Rr['$ƌ1<|6->? 5B \{caVTiU9͇^>%ǹq9C0l>$O&Uutɮ6!%s  $7ck|Z ֩GU4Zӱk0tSIOi2^cor毝ݜ[9Vdт$$eNc \ɫpFcrE( d8dFC 5n,-HcEA6 %֋p !(ytX~GDl_DžP\A"`,>ްc8r DHƳ'_yub/@0.Mn 7vo6GKw}$9Pu_G b>S.Փ8~AΐҺS˫F]U%/S ;f%qVDlBp֌5J&\n#RGEZ-Qg.͙,SlGKG$i\_`eĨcK(:A#X7ƒPG4{^riG ok?h2i{NGk- ڮ"iQy 6[wkh$;nQ9ލ|mh]/y5 P(PyP- ' aNFyxHO&rQ}8`vnx&b hF!`},pQb; 6oWnw| 75r8h//Vug[k\u1W @Kgޓм)\*߾Wj7>2?K YPX8@  @4ќtLi'O?UBT:2֙U,uFO3?@-5DlW0%m*,469LJf3XS6pC۶W?މR[]'%Q4>9:7IʳC$mPޭuvhlbEGO2#s2Ђ\gFvt)4b`u,RSZS8=+a8a;nǏ!+i6F*oB!uAxa!eJA?:Yߚ@ B"WHh_ "7?m}<3$G^粒tlk+1t X7ޣӺߦTvse )Mx15pPnAcSi'z۸ͬ~]gքWVX#< ꗼ^'Jd? X Vʂo!6xo ̀Fn؍u1gcMY3X3s0-7cЋ21c*2&/fݳZsXIh*qZh*f0 bup[-W?qk~qw ?]B阡6<6A7j G?^TUSp:T܍*NM"q+&$ZIUeFgs43ʋc s%*O@z ֪Bi[;v~oKh$k&i*X/(->q87*޸|Ó̟ʊ؏9 b$7 %iGkqRC5"+, aN+;񕴭҆ #o"]@ސ+6~*U5 8 6:c2%քGnp܊!lZ&2VTuA걑 -9?*/>V)*zLW@|jF3\WL̀(4ٿ6JMUs5O9P|k4D:-׉u  8 %,6@b:+݃[2ͪ]}J9F,G:Ȝˮ-rn4 )jh}⬜eeHbYD,}7(5JLhu'xsK0\xfYhlI!tF vul+f+{!c4 vQL3-8[;;a#7*3?i 69ol؅֡¦:,+m!+o-XyKmxm@];uXmE2.xl׉t ,Ck14B٤:UZ] z#T!O)caggasRGBiTXtXML:com.adobe.xmp xmp.iid:dbec8938-8168-44fe-a72f-e3070fdc7e35 adobe:docid:photoshop:7d735308-94df-1177-a5db-85c1d0b56a52 xmp.did:1368EE6C4C7911E4962CA13B6E540E36 xmp.iid:131DEF2A4C7911E4962CA13B6E540E36 adobe:docid:photoshop:3ac2ecb7-94df-1177-a5db-85c1d0b56a52 1 Adobe Photoshop CC 2014 (Macintosh) R"IDATx] TՕ>]][(#(5cDAmA1(fh>3~5~N"*QA" JPQAl޵WzUU-]^]s=":i h h h h h h h h h h h h h h h h h h h h h h h h h h h d 6#G[:eE_102]Lp8dٲeh")**ReuHVSJUUd*КY~ 0@l6hE)U]d„ ֹ-(rIyyj `,  ai̓R\-6l?Xg-4o/]ϳjXK>_@g }t >"k`-}|}E6PZ5OWxt;02#b#UdrDFxW R` ²d7eiGȄ˿z.VC +@v,/7ooޔ==0$75l>}p͛U1߆v!%R1ɛʊyȕM>_T'-O+#J.֐30{* n{ꩧUW]V۶m{C"AFe|T:҇T'o~Q߻FJ ]UZ^VwQrdĸCĕŸ=;b׶:Ma̙3뮓JS# >\X"NRS,xN懽ayꖥ(v5ow 0~Ӟfy7%/8VF둒?2Bv;M2!ɓK/  Dqu 0ܳ1K3W̧!d>F]^[.{+>' YLC">Ȗ񿦍$%%%jhou:%mu|ʽKO燕ڏXǖ 08 R>Dl}s>4 r-ߝ/7X@_.W!B}. >)T(FY~ V0+GRtr$O3M_e0R˛.;\NWa҃G OLCSDgxm$.H>~o_[~L?LyrwWor T1|TD'`7;iQ%2d% OR k;o'fD1̡'[B7/\Pd8N5Kd()ə:z+_ k5#C=h*+/oxN<|OiMk(>7]&7m}RP'%JŐRng#6h HJ]{{);.)dY?Dh[Yk7q P<D)ʡYݭ;&2XTQ(yny>{g>*;Ԩ㣅DxC_,%|2o,~o@Ξ}OO#_'qu4VmQcwpŖU\do^4iʇ@6Ǚvɏg[OM^յ/S7Mˤf)D@ΰ K\Q41dDèlA%g_uŠ|ilhT:u6 6q<.2iΙ6X_ZC0p;%0ݍF&+'`Nݦ@ To?m3/?ҟ/ObЈ-: sG4\u& c0!O X: Llq@I:CVJ^[Q&ܦG0A#e5n@Sw4@|-(ȗO7lG<#5[HbU6V>l+{;d10Z<XLK 7SR 5|0k[d}R0BGSjX@ p;C2w+Oez1\kvb\5m2C}R^ \  ,R ߹RR#v > ijnVq ۽;T$à2asϩ6eK׹u*º>h)u:ę"! *RRϏ#owJ/c*Y}&.S9Ey.v/ dYo"0y|ײRT$XH\jXWa$+2PH^d#ûǨaZ=ty2#U;ct`!V~@@ˠAYYEV/_%?}:"H# %=7 ƱkZf%Gf[j?v;_*,)(`>ǟ3VzbC׋YA2˰dתXD`@ -Ŭ"Cf)˧ag. Y8Ft2H,я$-}@;IE= O:(ñ$+d4s?Gr$m_g 3TοT#&b%M!hgLS1_'%cX AGt|! kV>nOb* ͽH+ ؔAWd3Tt? Z!o_qā=;٭6HTnކLzZy0JЇUHaϜ+bA1@`&`>рDNH G tܗN`'0$Ŋ3PT~|l${\]Ǿ %.oB9+񌩓WƗn(n۩|_4,D|=PUmSGÐM1X}5KI-E;LզSaZ@3hO¨{ DW(!$p K,Y#x7c XdyR666]:Jw3oTI>:9@xyOȌ]4_RmS풏icz)tF!X"0BƟ; F)GS0 57Gjj:3tDAp K\W4ny9Egu|ݫdomi-]S]wh#8LMT%0^m&a ȫ22D0Nf"AC(2 MjYt 9dIH8Be>! D4DJR4K'֕ )4̡`̽hĶ-lP;=};yN| J{ fl-EL9Gb7!h}8.Hl+i`F2۸+89ԣNZH8Ȕ s~!DW NY_*4a|7?;x%ȿ wd˜g9sȟ{j!}+`oG>:1 :6Nm`j #_rp$Q +!1D< 1I1Oկ@/ <ѡIENDB`JUCE-4.1.0/extras/Introjucer/Source/BinaryData/projectIconXcode.png000066400000000000000000000435511263452017400251360ustar00rootroot00000000000000PNG  IHDR>atEXtSoftwareAdobe ImageReadyqe<(iTXtXML:com.adobe.xmp 9YCIDATx} ]Uu;)a$ (sAXQ[+Ҋb_~UjKZT(8aP@0A@< w8gos~_.gy=s^{ _k 5?FV^ //ٳgĉϦ/6lWU:7hGtMp嗿@?00>h1J&RBP L^mV+6}R: 2!J>C^PtͽH{T]?Y*=R*TBT!?x_ˏxc=؉Nv^/֦wV qt@'U#&w%x4smd\ 3ZgH<}+*S  쵒Tݓ+-lL{CL iQZjbA5}hnۜ}vUsӏ_K `&^*ѥ^tLv9N\_MBwEwa' Yh!IFE*r\5"!F[^YU~~ϵZN $_A72 kfM.ws &6#tiR@ tzƒ)( ~ Ξ-b)0A*da6ڕtOx sPsJ/ /헾Ϟlkяs ;UDZ,"=OB"O8Qc중ɒ={+d {'15zUƓ.Xٵ=w=$P$lgw|OoPB0>h! HJm&!LIaޜ`U>fڨfnNPNC.<>όVK:((e -fB$'@.Pe2V<%!oB/9 pb[8fݨ+(]x ~<Nfr=g`Þa2K@[oYZ-`axƐ}xܽl5|WLʵOY! qi!HGXl' WUeQ@W$`A sL k8Csz# S0q7aN\_]s=d5,)hkvdp NAW`>K+n ͮ`"Iᗛ0BٓeK`4r^ (v('JЗa@qn)?rxuGi)$_ ]Pk>ί^?(#XB'92Hk):ǥe.yNZ zOfF$ц~LCjy$)Ql^Sլ>^j׾Xg>xj!H 胿P0+xj䉫5v"+8c-rN;PG)YC5M:>BRV+Id\(6GYqT zt ze|h|d:1Q)?}b?b2}_$O%FȎT7!]b]%=o0poC<(xi#L`.ExfUqߦBIv &t, HTqB&,HeΫ=GnDA7]ܢ⁷ 9:wRdI2Ǔn:L$BF=i;V$dpae{ucţ;Æq7Uվ8:mB9c?ig)C;d=,hgU1H+`bRb<dOA|2Z\[[`GrZT t7Xޞ.V|7]|%O=Vj-(ï%XUT<"vr ZB”ӡcΫtXC&Xa!Nh`5k$9P+GgMZk_p M8q&@T>ZؕCRJ^:is8qN A.%%T]:L3`O$)׶y #9eUVT Bp}YfA ǺM#&.<^- ʛ^x۞SADciIpj6Ak9z,$2{+ddH&x!'~N>(ߘ;w+Q?-2DHmWY `OBBn+'SyiDn &jv;;Fc6_*yDlTpI;Օۏ~i iZty~ ,8ӆ% ~mB ;5F%>9 Wn&8T8JIUАH+:r1LjWkf&\FĘk~p$ ig_2`̇IۥrN9M aM9|I㟓 M%DhU޸.泐(Y$Ji*L M㏜ s|jG?kNjEܔoeTGϚ zoYpctbvʶ+Z6@Vtd߲Qs'|g'M vpUktac a] v<VA92)sT DŽMD QH#Y.X~pZ7]x4s_z":M0бo3E\Կ4 d4pw_6KQtBaC4UeO`Ke3,l` N<zȴTA/㣂S{ƿ ? z.Lx>? -Ce߾mQ` YS&O]%ty|v2;ʄeB֔pNrO>>HkiDS րiOJ18վJRFsV :֖ Fej97Nr"y¬nxv|G[N{fg֮_aq=@@v3I K~wa1RExI!NOG 6M1&T]쟶3 lҨiF& FYֆ&K)~7\ tW8s Uq8VQss:A:~i[0%hsϣPNTlG&p?>Y(B 2}YKOh)c.8e)oEOf4HP •OjIGt1QRFS)#,1,}%Fj ƇӯZS0b8`KF :R`n?Y9IP>ϋ8]b I`e^"zwYSl {^$3 Td "6<o2,T3EJS@C,&QT{j-㹻KPy]pUK4Xo폰tDko26ڌa\<Ϋyڝ:Ni pl' '~< ל7lߟA( Y' 141m$|rItrscLr8k0}r Rd*g׭[<:VOQ;RdWEX,mLpt)p,8jJw;΢S*,]|u7ι><)".k 6-I2Pw=<uQTO D 0HwGzM򩧜V.A;՘epam_ص,vŧ~+]&D$ j-\.Du |^xnWG/+=0gW־ IR4_*Џ»Ć}RHa_ZaaޫG]TUH}h溡k($ .13HJMVְ%Iwe! \< ӺBtB,4ekӎE jQsG+U D{\@T?ahӔF Jf)I ݽgG'/1?GgJ ˰m/(@t`ԠzYI0M ((zTǩ^[ EB~ӻ=M(hϞW ܀" ë0II#Rx"  Me4, d ^$I25XI9#zϏlVr誕 XK;/~LUX`Fw &֜)nϥ}#=pptTy$|~<\!GolRA e\R&O @t1H˂a#P2p-=E&g3Bg3IvH+]5\O& ت?OֶbW"d=eLg|#aJҳ|kH&i8qTxLJᜣ*07޵NGkjמ 'MD@Zm ,lrMfɐ$r+$.'N‘:azN0#a3vO& ֪h $~˺<]L’!և%s$XפR.6`s+gݕg ))Y`oaKR4%jO+Rg` K1 2!~ s>fc&*0&]z>2uc >xQ !͕J><}|n`lҘ{j2ڝn3W(ϕ{W Y\›j@(OOY)N0Y@PNnVt17鱳# pHD2"3ǧpڜLS))|lܛ9GW` Mh= B.&V 73S {^,0\¦}6SL+rpG,#1>@p9v Zn!R礹d P R; RUHmsK5Uhz/,샇7{+pLEu^XM\0%)|SU,e;TmYRrQlNOsl;uNkei$ݣT]>G¤P/Eu{Q4Яe ۈ}qz Z((gEjj 0D,QA#/򅿼l?K|]c < * ,WR9}-@4%slYK o X8Z*E+h#A(r /5ymUQLb@L ù<+t1sH 2NZ0-TrMhR.BBW> \tBG30;~?7/bit38ԳDl -"!M'Ih.$+PM@wYX.%ZopH^8< Obl PEc#!9F2} L;8ptbF7AdQy [: 11 'z'tJmٓҍ5lN] U،%Il*c$V?r>EfzOa1!*b~Ad Vo-We}L+hsz t@>Bw ؼ_qS8zdb3[5>.Sc.~l&|+:^uF8 $Ąw:*zcD5Š8$i q]If #{Iɞaÿ+E!`\1 O0N|OBa;NpO3̾%8~pWú݊W}`$ _?2ܽ è?"ʚEQ5R.o!|W2OqQ>g~xUI 9f|b#/_qZ)8 8PeGpݛБ>0t-': s&J>N'f(%8'~Е{ (3Yy_W xEϟ^ŭΧ =ײƁ=e)7UF4_N9i\EhXKcWQӪI gW9MϭO`٦8~ F5ހ܊C-A(YcHhv?`q4@?;FuZJ`"Ϸ2Cxu.,0|ܔ T$3}m]#IgRʩS VHd (ǾOF[VL5+rrI]z˂5 vS'$ 梳 a#nr؎9L]րS_÷jGM5Tq =A0 C{zku޼ ˷0 C؇e .)%ZaB*܂dfǧ@7]<U!V\<P*p@/6 Md.hE_Y<#W^iq?O3;3]2M&BQҊ< /Ïִx׳x I?.;ykBN\fix{\wA/!7+ wG($#vF2o6Bl4Lt @Mn˸\q``ϐ斲ϡggUa}6q}jaC&iUv&5!N"xOa8=*LaMǐv !S@WTa#\Wpc ;uހbnUR &z~4Gv3L9kxL3TXM%?ё(cM!$DMReƱ9 8$ 3 J^/ԙSo; LlU~ZB;ā}ۗq \[`F![0\xYG(<5ʢi ۓs*&6.{E{ dh ү8 +dP8 ז\3gz!vU4i+쟜~x EOn!O?q2M_E@AS鰿M:VWD3PTQI5((F9Y̳0ѣﴧ#LaH+n!L,ᛙ\8;^41'L'٣h 9zo:w]EÝOб @UJfUA;*Њ0tM ns|͎)U3@&.NJٕzKJmd 9~! zlGqrOb9&':: (_I}H\mUS|P4sL N3 ~uNF*&KpP Wt*v]ZWyN+p)xG6Mb<~,׌ēbRv-!Vrw 1$PF/9Bn*3YMS-3䅓J TlC?=yV7\ڀ7/,slb5NR f/U(Sebt-,HMS8j}#]E`϶8*skL,H-'V˜ɱsъ'҂W䄏2!m+wBDt0n%qhvR@T^[H_[45,/$s+J=\u7/__-GS w7*CYN 'u%l? Dُ+| V&"_~tn} ~vc &$7YM˚7Ua%:c|z&src5[1"c'󠕻倩'~ls7l g,[]*Vp?k (] /Wf Gg؊mܐb?obHQFtW0 n?>l,ܸe:ZNdxu~$j)h_T+2x84 8*AFMbehfڇʴ@ɡu-28 ?m-&!wp͙](9|KcHI? >@w3Šx-lԖ1QB5c kWrxO 7?ڄ Q= ŏFu{ۣ py0\2M+{Fx W Zт89={օ,`C{}Wmֿ0kO4;/gxro_ބ-*Û9Xuǻ}iF9dXo W,/0\@ΓP 2w2z'Lm'MS_y:eD߂KBs1iç9"8Y$b!l$J<7?D߂(|8 ] u=ih3D0$"p{B/G^cÞRR&;~ 5T E@[S- o _~?W\XU?.h9ϩ 'zZI9|-j0V^>Ȉ&4no)t:q[݆1IQyS70- !P] fK8{nhSV3)܉8Fɨ"Z5D\+! `~+c/!싎+>׼f Mh(a: wrN%p@k @!N?e }~z~B&>>D{6+NjNki œKCر鈖[@CSt֜:ĀE_E9?ބ|qxU/t E"e,jr4Ɗ Ǯpe;QS)h2Yg?bz.ڲWGP x| -9G .yR,'(^=[(z`ӕ{9mL SGڊ"b!\}X 2R:G'ضqqKhM W|iT2'h$a\k8Wl;64"lvmi0G}EIzx |ިmD&]1g\*Mln.PȻ\( sJJwjwϰq2_\hWp YէؤHl1w-o˽&"KJCUDBAh .$C$_ǛLG$% ^+SeNOԮ8-oj$"TC,RqF3pR'H2^b4. Sْ-ny,c ( <լBiQ"WUhg -r䄞77espI#ȚLBtrI7'cj VK* hߞvv?J(4OfT= 78xj݁#H)//sɀ&o_[Hĸ-ȚY:z"*Hض"8o"TSYTڎlʔDL 8EN$va,Į۫abuUhNv\Gy̵HF!(tx?tD9 ߧ&D7gڃgw)ua b!I:5'8L5vWe|=8QSu'MkNSzfDYS D&6?H0Ҟa޺Qє87WfW6s 'HIi jƂH9Unz-5IK=NMx [qAK|YYo~뀆l|!Myrs\p\enRj&IܧW,E$c[ur kwg*Tp\;ɡr\_M L\9v+ Й_dup◮W)qxrl)&t.v,kpbo[Ö!1I5~䒫H}i\|K:9+c)]gv]v%MB mGYd* dSSj* -0&>DASMA&z1uHo9pݏ;P>4/ˤ濶Rs-s{LJxy\Bd_<4x|4 f|kB\ 콤2T|K4s8M+(+S{ 9w ׺ug0Ħ~T`,Ws/> *mv9sEܹmagjO@pfQ.#:ٔEt=4Wabmqm|].ey{388Y16f1(M,e42ډK'jv8o=Ah2`9 C0 8BZU x˞׌P52Qǯt{PDj>q,etKXOx}Cu_]mV4TpVl8k_- ~@K"OuHZ䅚KNHo w7UE\A""RС [pdLD "-2ֲYBC;ۂ& y~)BBV hI18@ߦaNR!Q/8Jr/j4g2=I: |i@#DD_tKj7*G]BġVR"SHDP"vi&Ԣ:|c&}PժmObP1AB!Aͧ4 };\ز+r|5F?J1  *6kخ3K4|[`И2J9H@Xb[h&Fd @D;7+qp|M6z9u;pG iwMR1_MMA@-}8ٍ}<8Ж]f"!R 掕(f:An=bv# ZG9wQDᣅԅ."lHm5@Z "ĐBKYaL(27ehEEǛ>ǵ0NHʢ9ImI9#vKm;KgZ^B1AJǶ|U&Nս0&Z*PiiphW@Bj&Lޠb%p 5F:A9l&k n Amդn$TNRӦi 0>0~ ͥM }B\K%a'>GǂFQoDmwP3lDFm6f;8"Eﰊ=[})Vg](;s!m|ᵅV &7 ͪV쌪wQJ3)f_kϥoӜ}"= cGR Q .1?ͨvxG/ٞHda B4 .BV:(lڪ(v-[.u)pFVQ=67uѱ\t-]hZ ۚ&+ӡq||^=hCO W {U1l+M7ɭwo_uĦSUƉuv5VN&10)_X/ |a5 2m|LrbQhX,RHJ;7lss$Hjo=zog{ao6$hgh 0>^#4h%{Vs+-CAݎg.QbP&+exQUٱGA1>*|ޤx-EֲF( oY~qޏRC}Y^xf &;ΘKCwnď02X?|RG?c`Sp&IENDB`JUCE-4.1.0/extras/Introjucer/Source/BinaryData/projectIconXcodeIOS.png000066400000000000000000000432771263452017400255160ustar00rootroot00000000000000PNG  IHDR>atEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp A8BIDATx}|՝-,ɽql@prKK.\}.HrpSzB ₍6ے%YmW3~̼]dɶ,CW_cBO6źup,xF}gcmp9 Rog|Rs]w݅ٳgx 755Ɗ$%ChE4?\?9V遱tH @F{}dsOagϑra[@Py0ScxChngQ60˄|T",Cxig;piiByм1?'O_oX0̇` Z)a[~&װ/+D>d\ +c-0hdm{wyu׶_b7:P\/?p!|'Dـz>!ȶZ!*H1i 4ݙ!e:Z(n A,')ܵ:a%0 {|`Xa>$uZD<ZWm]̽}]ȏ$w4IU~ " E>+mSDE>>@i!t-l^^jF06y=ԳPĦ"s}h&4:Nh w4ɘa $߷W\V 2Et:0=y)>3?vǗ𹯘ox'2 3x .m@-vOcG]~g0*j-'Hs;HF֌QoI'dr2!sT\3U>CmhB7 π>/1@ 9ryiBnoׯz ~;ݠQx1#,SFP&͸>W{PAU* -jshj q֘j[BM=A3 Jq4qF"TK!#_=- R8jr I %YT)ɄY xR ص́<̡Jz*U&Ւ%y<^X䧾Ždo  Lg`bOMJӘ9"> H 3j䃯m8BV )Է 4J!iJHaD+9R붃HUe86#_p|!rryL)eHJogI5-$4K;r0gcT_@jY%l%P%7L-ۈ{_J.'vI!pNƥy )D>(ջ/RO5\:BoTOlUok[jk[B:")ok~ xpy) OfFh$nqTHLI̋tEsȵejAidk[1SqoMw8;@r'g._ h<W+㨱%y) rN۠#EDtхP,K( k{Brz['4T!>x >*ҧuLHg]F{֍%xLpfUL/ՒG߃G6zGGLɉظZQիB 7pRtlL} yIfv#CmFatXV$ӱbBN0ȜH)#RLJZ+k L1Tj%RE9{P٫tZ]C\s뇿gn+i4frCVē_M>P s+VŃF`ٰa Lym:"b1!& èdZ VfL j,nQtYb2J+.oo߾Wt5djR*(4t>~{"s՗سRǙQ MZfn݆*SL$qREb}E6y <9)UJ ࢋ.:g?كÇv]i 'mʙ4y"9hm1c 6)%;NyI tvPedf}0B@0 "R&K64VVVB}U2"̚5 z߼y rzGdmmmGAбZ?!1zÐwt>{~[ӢIa]39 jg&Q>+c&fE,Fk9y"ӰnZTd>=|e<{,ŔFnՠ *m} XF+E%%R0B;J/[j /^"npWİ?dfΜ7}k_^zIz Gw{FKKKI& F ݨ C.E֔vBD(]kWfs|KiHy@11ް&M@K?*4A3enDy%}akW_=qz^pƍ~}>S]]}OOJz+H 2%UJOhi,F ]7>tF`Ee/FqAE-3cMP*:։'(LC Px6mڄg?[.5\_~E뮻-]Tawf $+o f3$4"zGU01 x < yNǙWv=gu!+կ~u4=s|ߒn-܂_~YwV.c&Ư%+4Dj #c蝵UH[F3H܆wg[qlU¸s1C\m.X*"h|+/bG[M.dw}%hd7$Vs=w )sL@,!I7f* ٸ.fM@ *2_nS=cX"oŜ`+QRĶwD' %x†c 10&L@q|\ŹLݼy$cTG'u:X?L҅jZ|BHEOSM_%NsN<ߢyU'yN]h<DǪ&К cvdkDMQ/Xl;w_g'3Ó;v HLpͳ>>ޓ qI~uh8Aa&MaӣPĶ8 ytFPh҃%Ӛ(gA -FwQ`@_窖DG|z+|ӄVVA*]Х$]CE|{fK/o 4͑#GZ>L$JVB^Smb)h8Eˡ>6Øs k`LIcC'e\p-\W%>c4pU*F [GЕcho.I0${HBeEmMM `{GjHD;w*T"t)o}Z )F a <[g@&l0ETC9%0}J5sT6Owq)7R/Rrpr%rJVPm)&p7"yd>}:$#`˖-H FNK1c}ժUߤ{:tOAH>N +GMJ b Gx9..ʌUQYA6Ehۨ~] Fi0E#ܳL-Z[^is^SІuf}eJQ`助1,L3y DÌ3/ۡC% #nP*NU8*%s%äXaߋ+`*D"U<*&ln8R-MCA~=2"=`K|#6RDΘٳ: uuuJ-fXJjt]b 6eʔ'"0tmMEKSn հykMF+U%1UrI3T/€ 6'̹(+ꭄqiR[""`+6G f!NڄZJ;d\n۶}=Y8FDHJ?_pf}&3[a?l@e KLyIq fT5 2w4uBa+M@\T\bp( Eq$%͸Jl+;WgN%3mEva?Iw6ɚ* @. i T#Kϕbm@I&h ۈeRSf( ;e^񣔫 #86ԤtuXMxgN᪩e*Fa[[VnC~شe"X2+W;bb@2=f(ިDsԾN]A_z5q#qVYट,#DJ3zPъsƤT=KI#TcHoM\Goy4r, ;c4P<6FbQF? `lﳨC {tB4ȳnܴoAF϶xʼn(p:;0D 6]94-kAC&?]RYG';؅/b8d]ߑwW6I7H,:Džq/gO%\I_ 3OqTxЊV\8.!-5') #ThH l)Z$0#t1C緒lMJiRZbcǎR0j&7x_ClTEl Rl:|ø .bQ'EE&&;šԊ^.aަ,v5qF9Vխ+3C4 a;@f C ^w) 3*2p.N[Twi ?)rowP/I& cj 7`_mCuE<tK`:=J̤X2 \FZ4nj$ea;A[Kh -]y n@(Q%L3F%зgc@\O^2]5i.:%e.꜄]uU;c:f1I&tp 'W쬑>j}7k({gFڝN-0e`МiLD>$.]; U̞U7d\e+ mM"+-FG*uj4*~z=zt+_@Ri>G^Nm=;tQQ/WaA8xe@ʣKF9l K͸gY+3܈iCj\ MfjZ]7KZ涳sX܃*pEo_gTњUT; \ :uꝖIZZI;c ֧qz*-Z7H^tDexy"n!ج46,.;%H1q^J/lVI%Fp}swn;`sG#pXJT=1N>RK2`8Pcg \A*+J0v.3m9?m@X%oMONw9i>Cq= C'˰zO5!ieF$x~3CUxh AR#ULО/6_ۿ)G P]]x)MۄQ lkjWi [qby?T L|nG`&ߗ &1[z<=5**炿TG3-6h#8mڴG2ey/40@<1 pʷ5ÐE +' %cg BkB>2Ex?('&ݽA.Ho<դBIZJ ʡg\?oOE8릂"ɤO_b {L)rV!*wr >A +61k¬{sTwSR݇}5 n 0S?`G}^ ={k*$?GRj~Ź6Ϝ9s~A:S"-& t7yAKRVBC7Qm<26Ng5m%ݻ<]B:~\Nj +iTUHKtJ?'>;ƈ{)Y@T vU%Ca5H>E3踈a>vfJދ 1,!5[r PHT}b҅.눨zLqV/$"& ޽E܂MMb{}"srI_ ;u^ C=PQYsŶz Jc5@1ڂR3!O[IqB@ (_ A|[c?sK'$F FD N3~U ިB|ihሆ.2%B"/g3zY|ߐS* JT$4jT!l5~+ #tϕZŸC3 3FlڴW$8 yz1.5=ZCS0( 8"HiyT1Ӈ\9+-6%exV}dR{xe~:UN Օ0fXf:u]e`W tΜ9 Swo.5i44>R9q%=3/*3#|9-۞j%16I_/eq,Z$8wTBٗ2ѓ@`d< (W<[Yx7PD|Fmm4սŚ3͡M0șփB8*"MRn{> ۤ-"I+1}>+/#s!V)`o.3Ҙ5Q9fէ[TD0$o! TȔ2 xLTXT}gw!C̟?:"( ]Iwk2,!]D0dNP7uF_,%_4~/?{TR-&uf$J rI[ek'@G &eTfT?}W=Q{Y.{|ΝT5^Dg[@ǿӚd&tnq*i҇oߓ Ւr)8>>3-EC pDpԄ4-ϬIU*HSlPt&Pd˻֏aòk֬<4&bG3zb]a‘|`WP)t,5 (nIx7' -yn MbK'p4jwFʙ $-y[0&|g?cc.or(L&P^aÆQű, 5dlj[,uL!_r:`D~>GVA~'Y|xZ4{վPIԙi< k\xH2yX߫Ԛ/i1 @[ccRC}u/J J^Cg݃"IWC1OD#*Wp.`Q ziթ +BIX+xJJ~CsnIjo MW}|M^J$&ʐ8\JIuN/,bZ{bE (@`xACgEШuIb}TOz [;Mcp(F@9JI7OϟG2Spܵ ߺ8|RT6"xs7ܣzVY΀Mϸi$ }/-q=VshwU$A;BR,)%_ISrqߊMߏ >gQΔfmy˅)<*%Ҳ,b( %2l *;rʻ-xpznmb xfPE\Ժ60RHKXw ji]ӴT-]~xe]ކ*"H!=ワ!ÖaT`I3@`Uf箻n?5"g}Z9<־(=nD <ď[ɽH? %AiH'Hɿn?߆OObSmf±ypZa$<1 h<I>R$ŒWR_W@\wc2j̴Jdlڣ.s_fCO鹻F \,o WE$1ìs )W-ajX`ˎJ۫=5~]=l?I>}SR8&\pvgvJ1[<qdY)$i!0HM?׹=l?~&L?hʹI(%iis3= =wWZ7/\48D\ 'qXO?{FxsOħrǙlSRYDv3XmUiߑʵNy#^t=RU1'cHXm`zl\GKP|%x9}+&yB&/>(G{VqpOI;?g>/'U }afH$HRWhjZ/h~CEߙף)/ю PYT,Hn d 3/8(D* ,DTPG=&^T.18Փx\ogqeT2Xxz8+nkcgW:FH3qPkX=B܅G`Mm={ {lz ⷍ ;B)MLBo_޸~)2pĄ.#Hc sGUc|ue0HWC'ϨoF3Mi{GIjtH } GգѰ^{:6& ZWBjW$ߕ} RiNë]#7ecdJ$QݰOy6}$՘6 = <.lՑU@9c ȩ#x#E{$JNOP+?_S:1D~)[xyuN#as]0ܧ >K$'<GiIl9,tRc{>wUlXd]<zbfQhOĈݎ}Pxz&ݿ>WnIO0T6֋9u? ϣ"k<~m;T5;3D7~RBKkYX:ѲpK ;2E4xB1H 9QX7Tf;4r+=|׭WƲC&HY@[n8i =ϕ|ʡ@vA#j#ZrJœ uC-xjD̎|afJ>C'{($R*+ ,1OHIh\TZ7U8vz5y#v)f8R[׏L@>ոqMbfqKG?Ftk`W4@hDAJ4fu~qBu~nzZ! cx,o<+^W+}_z8 G;wϽ Lv*--jQvӢ 1 iAcM1{aƏ'xP`C)K#q<6-z u MH)B6*HZD~r*>]x$'Q=ō&=zzh]2Zt t̡Lu,WU$B9XC|f2@ױE~∀N$P__i"]~ztg֡^&ۅO+ PJ;bn:?P=%n*excwT-&+\8 <Ѻ-kH66S81S\HbJ$u!5}$PܗX_c"I 5b"`bR#Θ"5:c:'O;ԧGJo+Nj "ZAbhL0˻tFƓCUZ4."Aļܮ,lE6f'5yy 9*1謏bGkh'J,:6>11e 4f?t}oQ ( h5̮r2{u&D:zHHi^T|nkX2tMZ׏3e?CL1M,Ⱥ6 FL+MWwv(v3wP]l*~٠8 \[Լ+5 O2E*^v. y ٶmnݪL3# B_/^0O35„1P*EO;9Nwž&tU.qkX<Z9u"qh$$1 cFʴ|ƌ ki^;0x7Fݵk3G3$t_%qLQd#u'PVJDwW .컧R`Eԙ"hs@>kq'r?DYHtR7n܈?>j{~;vUtGPC>2} ,~y$ P,-> `Ct1n !O[;4BD,^ˮ(JA;LZLjy(P}7ñ;qZ5Z&LuX(GH"٩ۤlκYy [OHKFާy5.uMClb(}v;P3mݖ *pd(Oy|2Z YbedBg5Q =MCxbu@j9g.A yx{b4nd5HzIE*OHЦ̅d ԪiXAqJiWa A%Q"gl_Cu7g:4 ')ouZG)N4XtƌEb%HHh[m=&bX=;ψ&:`5U SQ%P<[fͻ9pIsy0}iϵIZMu<7I^f,g gxRB*T<Ӹ8*Tjs<ܻ"R}SЊ-7ވ J=w-IKgҴ8/AK&8+l~gx'J5 de MȖ3C Ġ](v ?'O*_5VX8p&d$/b!:&`d~0/(iv &Unr 8iZlCP-Ɵ dL-bubSBÊA;11sCpaMa-N[̘FqB$uLo 4ѐIb LwR(/}hbZ-Gt=0O5/ y HqM(^zr)=hX1 eQ:R3IBgڢxb9.*m+ ?#GĉNH{hkXat/`%KU'/ԃY`B_-Y$$|uSnT)t0KbGxEK1l B!指@@ΕAr1jOU!iTAC8x3K3 %0K4l]% `ǝVdA#Ьlab=F ;T2 (_ު%`krۖeb_,eh{a[.X1I*>n%nZn:n ZEuFs+,e{4uZm=@QX R_y\ddKBh`ŁE";j* +7&˵̂;E}vT<%B:nյOanBĠ&k)\Q+vf}g܋ >לf}ȣ~%), hFQ 7˜.; 4kV׍,iBu /^Au輤LmUFe^av/N/Ίӻ6c"zf{&u&Ul:п ,:N'$Mj 9[s1AI~K>.:([>8$Tk<6T錡g *06kعɤ [ukM>4zXNjQ{0w_rm/ Qݽt%`ra\K=쬩+ o6L6B_үtk[:k7F gZ)=dTȔ T󦃔UDts]_(ߧ(My:Hk3`A40Z* i]m7_ QvֺSD̄;L[3[=DzoS~~XBukf 8,9I+7`fmqW23VbFEkE}jVV{kP +9cBLL^ЋڡK=^ Luq\An^qAM!{O! ]yT{sYMxhln߽W4FZ̸:/Mfjk`X?NAk6Ml6 ޥQ?[ Sp<όJ LkwLkhma< 'fț;%k"mJLp?.0I+a Wi# @>OugVLTC{%gɓe 4sIENDB`JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_AnimatedApp.svg000066400000000000000000000056231263452017400254500ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_AudioApp.svg000066400000000000000000000231121263452017400247600ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_AudioPlugin.svg000066400000000000000000000250711263452017400255040ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_ConsoleApp.svg000066400000000000000000000022641263452017400253260ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_DLL.svg000066400000000000000000000070041263452017400236730ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_GUI.svg000066400000000000000000000065701263452017400237130ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_Highlight.svg000066400000000000000000000011761263452017400251730ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_OpenGL.svg000066400000000000000000000047011263452017400244050ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_Openfile.svg000066400000000000000000000012561263452017400250240ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/BinaryData/wizard_StaticLibrary.svg000066400000000000000000000067531263452017400260460ustar00rootroot00000000000000 JUCE-4.1.0/extras/Introjucer/Source/Code Editor/000077500000000000000000000000001263452017400212215ustar00rootroot00000000000000JUCE-4.1.0/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp000066400000000000000000000516431263452017400263300ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #include "jucer_SourceCodeEditor.h" #include "../Application/jucer_Application.h" #include "../Application/jucer_OpenDocumentManager.h" //============================================================================== SourceCodeDocument::SourceCodeDocument (Project* p, const File& f) : modDetector (f), project (p) { } CodeDocument& SourceCodeDocument::getCodeDocument() { if (codeDoc == nullptr) { codeDoc = new CodeDocument(); reloadInternal(); codeDoc->clearUndoHistory(); } return *codeDoc; } Component* SourceCodeDocument::createEditor() { SourceCodeEditor* e = new SourceCodeEditor (this, getCodeDocument()); applyLastState (*(e->editor)); return e; } void SourceCodeDocument::reloadFromFile() { getCodeDocument(); reloadInternal(); } void SourceCodeDocument::reloadInternal() { jassert (codeDoc != nullptr); modDetector.updateHash(); codeDoc->applyChanges (getFile().loadFileAsString()); codeDoc->setSavePoint(); } static bool writeCodeDocToFile (const File& file, CodeDocument& doc) { TemporaryFile temp (file); { FileOutputStream fo (temp.getFile()); if (! (fo.openedOk() && doc.writeToStream (fo))) return false; } return temp.overwriteTargetFileWithTemporary(); } bool SourceCodeDocument::save() { if (writeCodeDocToFile (getFile(), getCodeDocument())) { getCodeDocument().setSavePoint(); modDetector.updateHash(); return true; } return false; } bool SourceCodeDocument::saveAs() { FileChooser fc (TRANS("Save As..."), getFile(), "*"); if (! fc.browseForFileToSave (true)) return true; return writeCodeDocToFile (fc.getResult(), getCodeDocument()); } void SourceCodeDocument::updateLastState (CodeEditorComponent& editor) { lastState = new CodeEditorComponent::State (editor); } void SourceCodeDocument::applyLastState (CodeEditorComponent& editor) const { if (lastState != nullptr) lastState->restoreState (editor); } //============================================================================== SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* doc, CodeDocument& codeDocument) : DocumentEditorComponent (doc) { GenericCodeEditorComponent* ed = nullptr; const File file (document->getFile()); if (fileNeedsCppSyntaxHighlighting (file)) { ed = new CppCodeEditorComponent (file, codeDocument); } else { CodeTokeniser* tokeniser = nullptr; if (file.hasFileExtension ("xml;svg")) { static XmlTokeniser xmlTokeniser; tokeniser = &xmlTokeniser; } if (file.hasFileExtension ("lua")) { static LuaTokeniser luaTokeniser; tokeniser = &luaTokeniser; } ed = new GenericCodeEditorComponent (file, codeDocument, tokeniser); } setEditor (ed); } SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* doc, GenericCodeEditorComponent* ed) : DocumentEditorComponent (doc) { setEditor (ed); } SourceCodeEditor::~SourceCodeEditor() { if (editor != nullptr) editor->getDocument().removeListener (this); getAppSettings().appearance.settings.removeListener (this); if (SourceCodeDocument* doc = dynamic_cast (getDocument())) doc->updateLastState (*editor); } void SourceCodeEditor::setEditor (GenericCodeEditorComponent* newEditor) { if (editor != nullptr) editor->getDocument().removeListener (this); addAndMakeVisible (editor = newEditor); editor->setFont (AppearanceSettings::getDefaultCodeFont()); editor->setTabSize (4, true); updateColourScheme(); getAppSettings().appearance.settings.addListener (this); editor->getDocument().addListener (this); } void SourceCodeEditor::scrollToKeepRangeOnScreen (Range range) { const int space = jmin (10, editor->getNumLinesOnScreen() / 3); const CodeDocument::Position start (editor->getDocument(), range.getStart()); const CodeDocument::Position end (editor->getDocument(), range.getEnd()); editor->scrollToKeepLinesOnScreen (Range (start.getLineNumber() - space, end.getLineNumber() + space)); } void SourceCodeEditor::highlight (Range range, bool cursorAtStart) { scrollToKeepRangeOnScreen (range); if (cursorAtStart) { editor->moveCaretTo (CodeDocument::Position (editor->getDocument(), range.getEnd()), false); editor->moveCaretTo (CodeDocument::Position (editor->getDocument(), range.getStart()), true); } else { editor->setHighlightedRegion (range); } } void SourceCodeEditor::resized() { editor->setBounds (getLocalBounds()); } void SourceCodeEditor::updateColourScheme() { getAppSettings().appearance.applyToCodeEditor (*editor); } void SourceCodeEditor::checkSaveState() { setEditedState (getDocument()->needsSaving()); } void SourceCodeEditor::valueTreePropertyChanged (ValueTree&, const Identifier&) { updateColourScheme(); } void SourceCodeEditor::valueTreeChildAdded (ValueTree&, ValueTree&) { updateColourScheme(); } void SourceCodeEditor::valueTreeChildRemoved (ValueTree&, ValueTree&, int) { updateColourScheme(); } void SourceCodeEditor::valueTreeChildOrderChanged (ValueTree&, int, int) { updateColourScheme(); } void SourceCodeEditor::valueTreeParentChanged (ValueTree&) { updateColourScheme(); } void SourceCodeEditor::valueTreeRedirected (ValueTree&) { updateColourScheme(); } void SourceCodeEditor::codeDocumentTextInserted (const String&, int) { checkSaveState(); } void SourceCodeEditor::codeDocumentTextDeleted (int, int) { checkSaveState(); } //============================================================================== GenericCodeEditorComponent::GenericCodeEditorComponent (const File& f, CodeDocument& codeDocument, CodeTokeniser* tokeniser) : CodeEditorComponent (codeDocument, tokeniser), file (f) { setCommandManager (&IntrojucerApp::getCommandManager()); } GenericCodeEditorComponent::~GenericCodeEditorComponent() {} enum { showInFinderID = 0x2fe821e3, insertComponentID = 0x2fe821e4 }; void GenericCodeEditorComponent::addPopupMenuItems (PopupMenu& menu, const MouseEvent* e) { menu.addItem (showInFinderID, #if JUCE_MAC "Reveal " + file.getFileName() + " in Finder"); #else "Reveal " + file.getFileName() + " in Explorer"); #endif menu.addSeparator(); CodeEditorComponent::addPopupMenuItems (menu, e); } void GenericCodeEditorComponent::performPopupMenuAction (int menuItemID) { if (menuItemID == showInFinderID) file.revealToUser(); else CodeEditorComponent::performPopupMenuAction (menuItemID); } void GenericCodeEditorComponent::getAllCommands (Array & commands) { CodeEditorComponent::getAllCommands (commands); const CommandID ids[] = { CommandIDs::showFindPanel, CommandIDs::findSelection, CommandIDs::findNext, CommandIDs::findPrevious }; commands.addArray (ids, numElementsInArray (ids)); } void GenericCodeEditorComponent::getCommandInfo (const CommandID commandID, ApplicationCommandInfo& result) { const bool anythingSelected = isHighlightActive(); switch (commandID) { case CommandIDs::showFindPanel: result.setInfo (TRANS ("Find"), TRANS ("Searches for text in the current document."), "Editing", 0); result.defaultKeypresses.add (KeyPress ('f', ModifierKeys::commandModifier, 0)); break; case CommandIDs::findSelection: result.setInfo (TRANS ("Find Selection"), TRANS ("Searches for the currently selected text."), "Editing", 0); result.setActive (anythingSelected); result.defaultKeypresses.add (KeyPress ('l', ModifierKeys::commandModifier, 0)); break; case CommandIDs::findNext: result.setInfo (TRANS ("Find Next"), TRANS ("Searches for the next occurrence of the current search-term."), "Editing", 0); result.defaultKeypresses.add (KeyPress ('g', ModifierKeys::commandModifier, 0)); break; case CommandIDs::findPrevious: result.setInfo (TRANS ("Find Previous"), TRANS ("Searches for the previous occurrence of the current search-term."), "Editing", 0); result.defaultKeypresses.add (KeyPress ('g', ModifierKeys::commandModifier | ModifierKeys::shiftModifier, 0)); result.defaultKeypresses.add (KeyPress ('d', ModifierKeys::commandModifier, 0)); break; default: CodeEditorComponent::getCommandInfo (commandID, result); break; } } bool GenericCodeEditorComponent::perform (const InvocationInfo& info) { switch (info.commandID) { case CommandIDs::showFindPanel: showFindPanel(); return true; case CommandIDs::findSelection: findSelection(); return true; case CommandIDs::findNext: findNext (true, true); return true; case CommandIDs::findPrevious: findNext (false, false); return true; default: break; } return CodeEditorComponent::perform (info); } void GenericCodeEditorComponent::addListener (GenericCodeEditorComponent::Listener* listener) { listeners.add (listener); } void GenericCodeEditorComponent::removeListener (GenericCodeEditorComponent::Listener* listener) { listeners.remove (listener); } //============================================================================== class GenericCodeEditorComponent::FindPanel : public Component, private TextEditor::Listener, private ButtonListener { public: FindPanel() : caseButton ("Case-sensitive"), findPrev ("<"), findNext (">") { editor.setColour (CaretComponent::caretColourId, Colours::black); addAndMakeVisible (editor); label.setText ("Find:", dontSendNotification); label.setColour (Label::textColourId, Colours::white); label.attachToComponent (&editor, false); addAndMakeVisible (caseButton); caseButton.setColour (ToggleButton::textColourId, Colours::white); caseButton.setToggleState (isCaseSensitiveSearch(), dontSendNotification); caseButton.addListener (this); findPrev.setConnectedEdges (Button::ConnectedOnRight); findNext.setConnectedEdges (Button::ConnectedOnLeft); addAndMakeVisible (findPrev); addAndMakeVisible (findNext); setWantsKeyboardFocus (false); setFocusContainer (true); findPrev.setWantsKeyboardFocus (false); findNext.setWantsKeyboardFocus (false); editor.setText (getSearchString()); editor.addListener (this); } void setCommandManager (ApplicationCommandManager* cm) { findPrev.setCommandToTrigger (cm, CommandIDs::findPrevious, true); findNext.setCommandToTrigger (cm, CommandIDs::findNext, true); } void paint (Graphics& g) override { Path outline; outline.addRoundedRectangle (1.0f, 1.0f, getWidth() - 2.0f, getHeight() - 2.0f, 8.0f); g.setColour (Colours::black.withAlpha (0.6f)); g.fillPath (outline); g.setColour (Colours::white.withAlpha (0.8f)); g.strokePath (outline, PathStrokeType (1.0f)); } void resized() override { int y = 30; editor.setBounds (10, y, getWidth() - 20, 24); y += 30; caseButton.setBounds (10, y, getWidth() / 2 - 10, 22); findNext.setBounds (getWidth() - 40, y, 30, 22); findPrev.setBounds (getWidth() - 70, y, 30, 22); } void buttonClicked (Button*) override { setCaseSensitiveSearch (caseButton.getToggleState()); } void textEditorTextChanged (TextEditor&) override { setSearchString (editor.getText()); if (GenericCodeEditorComponent* ed = getOwner()) ed->findNext (true, false); } void textEditorFocusLost (TextEditor&) override {} void textEditorReturnKeyPressed (TextEditor&) override { IntrojucerApp::getCommandManager().invokeDirectly (CommandIDs::findNext, true); } void textEditorEscapeKeyPressed (TextEditor&) override { if (GenericCodeEditorComponent* ed = getOwner()) ed->hideFindPanel(); } GenericCodeEditorComponent* getOwner() const { return findParentComponentOfClass (); } TextEditor editor; Label label; ToggleButton caseButton; TextButton findPrev, findNext; }; void GenericCodeEditorComponent::resized() { CodeEditorComponent::resized(); if (findPanel != nullptr) { findPanel->setSize (jmin (260, getWidth() - 32), 100); findPanel->setTopRightPosition (getWidth() - 16, 8); } } void GenericCodeEditorComponent::showFindPanel() { if (findPanel == nullptr) { findPanel = new FindPanel(); findPanel->setCommandManager (&IntrojucerApp::getCommandManager()); addAndMakeVisible (findPanel); resized(); } if (findPanel != nullptr) { findPanel->editor.grabKeyboardFocus(); findPanel->editor.selectAll(); } } void GenericCodeEditorComponent::hideFindPanel() { findPanel = nullptr; } void GenericCodeEditorComponent::findSelection() { const String selected (getTextInRange (getHighlightedRegion())); if (selected.isNotEmpty()) { setSearchString (selected); findNext (true, true); } } void GenericCodeEditorComponent::findNext (bool forwards, bool skipCurrentSelection) { const Range highlight (getHighlightedRegion()); const CodeDocument::Position startPos (getDocument(), skipCurrentSelection ? highlight.getEnd() : highlight.getStart()); int lineNum = startPos.getLineNumber(); int linePos = startPos.getIndexInLine(); const int totalLines = getDocument().getNumLines(); const String searchText (getSearchString()); const bool caseSensitive = isCaseSensitiveSearch(); for (int linesToSearch = totalLines; --linesToSearch >= 0;) { String line (getDocument().getLine (lineNum)); int index; if (forwards) { index = caseSensitive ? line.indexOf (linePos, searchText) : line.indexOfIgnoreCase (linePos, searchText); } else { if (linePos >= 0) line = line.substring (0, linePos); index = caseSensitive ? line.lastIndexOf (searchText) : line.lastIndexOfIgnoreCase (searchText); } if (index >= 0) { const CodeDocument::Position p (getDocument(), lineNum, index); selectRegion (p, p.movedBy (searchText.length())); break; } if (forwards) { linePos = 0; lineNum = (lineNum + 1) % totalLines; } else { if (--lineNum < 0) lineNum = totalLines - 1; linePos = -1; } } } void GenericCodeEditorComponent::handleEscapeKey() { CodeEditorComponent::handleEscapeKey(); hideFindPanel(); } void GenericCodeEditorComponent::editorViewportPositionChanged() { CodeEditorComponent::editorViewportPositionChanged(); listeners.call (&Listener::codeEditorViewportMoved, *this); } //============================================================================== static CPlusPlusCodeTokeniser cppTokeniser; CppCodeEditorComponent::CppCodeEditorComponent (const File& f, CodeDocument& doc) : GenericCodeEditorComponent (f, doc, &cppTokeniser) { } CppCodeEditorComponent::~CppCodeEditorComponent() {} void CppCodeEditorComponent::handleReturnKey() { GenericCodeEditorComponent::handleReturnKey(); CodeDocument::Position pos (getCaretPos()); String blockIndent, lastLineIndent; CodeHelpers::getIndentForCurrentBlock (pos, getTabString (getTabSize()), blockIndent, lastLineIndent); const String remainderOfBrokenLine (pos.getLineText()); const int numLeadingWSChars = CodeHelpers::getLeadingWhitespace (remainderOfBrokenLine).length(); if (numLeadingWSChars > 0) getDocument().deleteSection (pos, pos.movedBy (numLeadingWSChars)); if (remainderOfBrokenLine.trimStart().startsWithChar ('}')) insertTextAtCaret (blockIndent); else insertTextAtCaret (lastLineIndent); const String previousLine (pos.movedByLines (-1).getLineText()); const String trimmedPreviousLine (previousLine.trim()); if ((trimmedPreviousLine.startsWith ("if ") || trimmedPreviousLine.startsWith ("if(") || trimmedPreviousLine.startsWith ("for ") || trimmedPreviousLine.startsWith ("for(") || trimmedPreviousLine.startsWith ("while(") || trimmedPreviousLine.startsWith ("while ")) && trimmedPreviousLine.endsWithChar (')')) { insertTabAtCaret(); } } void CppCodeEditorComponent::insertTextAtCaret (const String& newText) { if (getHighlightedRegion().isEmpty()) { const CodeDocument::Position pos (getCaretPos()); if ((newText == "{" || newText == "}") && pos.getLineNumber() > 0 && pos.getLineText().trim().isEmpty()) { moveCaretToStartOfLine (true); String blockIndent, lastLineIndent; if (CodeHelpers::getIndentForCurrentBlock (pos, getTabString (getTabSize()), blockIndent, lastLineIndent)) { GenericCodeEditorComponent::insertTextAtCaret (blockIndent); if (newText == "{") insertTabAtCaret(); } } } GenericCodeEditorComponent::insertTextAtCaret (newText); } void CppCodeEditorComponent::addPopupMenuItems (PopupMenu& menu, const MouseEvent* e) { GenericCodeEditorComponent::addPopupMenuItems (menu, e); menu.addSeparator(); menu.addItem (insertComponentID, TRANS("Insert code for a new Component class...")); } void CppCodeEditorComponent::performPopupMenuAction (int menuItemID) { if (menuItemID == insertComponentID) insertComponentClass(); GenericCodeEditorComponent::performPopupMenuAction (menuItemID); } void CppCodeEditorComponent::insertComponentClass() { AlertWindow aw (TRANS ("Insert a new Component class"), TRANS ("Please enter a name for the new class"), AlertWindow::NoIcon, nullptr); const char* classNameField = "Class Name"; aw.addTextEditor (classNameField, String::empty, String::empty, false); aw.addButton (TRANS ("Insert Code"), 1, KeyPress (KeyPress::returnKey)); aw.addButton (TRANS ("Cancel"), 0, KeyPress (KeyPress::escapeKey)); while (aw.runModalLoop() != 0) { const String className (aw.getTextEditorContents (classNameField).trim()); if (className == CodeHelpers::makeValidIdentifier (className, false, true, false)) { String code (BinaryData::jucer_InlineComponentTemplate_h); code = code.replace ("COMPONENTCLASS", className); insertTextAtCaret (code); break; } } } JUCE-4.1.0/extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h000066400000000000000000000220771263452017400257740ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ #ifndef JUCER_SOURCECODEEDITOR_H_INCLUDED #define JUCER_SOURCECODEEDITOR_H_INCLUDED #include "../Project/jucer_Project.h" #include "../Application/jucer_DocumentEditorComponent.h" //============================================================================== class SourceCodeDocument : public OpenDocumentManager::Document { public: SourceCodeDocument (Project*, const File&); bool loadedOk() const override { return true; } bool isForFile (const File& file) const override { return getFile() == file; } bool isForNode (const ValueTree&) const override { return false; } bool refersToProject (Project& p) const override { return project == &p; } Project* getProject() const override { return project; } String getName() const override { return getFile().getFileName(); } String getType() const override { return getFile().getFileExtension() + " file"; } File getFile() const override { return modDetector.getFile(); } bool needsSaving() const override { return codeDoc != nullptr && codeDoc->hasChangedSinceSavePoint(); } bool hasFileBeenModifiedExternally() override { return modDetector.hasBeenModified(); } void fileHasBeenRenamed (const File& newFile) override { modDetector.fileHasBeenRenamed (newFile); } String getState() const override { return lastState != nullptr ? lastState->toString() : String::empty; } void restoreState (const String& state) override { lastState = new CodeEditorComponent::State (state); } File getCounterpartFile() const override { const File file (getFile()); if (file.hasFileExtension (sourceFileExtensions)) { static const char* extensions[] = { "h", "hpp", "hxx", "hh", nullptr }; return findCounterpart (file, extensions); } if (file.hasFileExtension (headerFileExtensions)) { static const char* extensions[] = { "cpp", "mm", "cc", "cxx", "c", "m", nullptr }; return findCounterpart (file, extensions); } return File::nonexistent; } static File findCounterpart (const File& file, const char** extensions) { while (*extensions != nullptr) { const File f (file.withFileExtension (*extensions++)); if (f.existsAsFile()) return f; } return File::nonexistent; } void reloadFromFile() override; bool save() override; bool saveAs() override; Component* createEditor() override; Component* createViewer() override { return createEditor(); } void updateLastState (CodeEditorComponent&); void applyLastState (CodeEditorComponent&) const; CodeDocument& getCodeDocument(); //============================================================================== struct Type : public OpenDocumentManager::DocumentType { bool canOpenFile (const File& file) override { if (file.hasFileExtension (sourceOrHeaderFileExtensions) || file.hasFileExtension ("txt;inc;tcc;xml;plist;rtf;html;htm;php;py;rb;cs")) return true; MemoryBlock mb; if (file.loadFileAsData (mb) && seemsToBeText (static_cast (mb.getData()), (int) mb.getSize()) && ! file.hasFileExtension ("svg")) return true; return false; } static bool seemsToBeText (const char* const chars, const int num) noexcept { for (int i = 0; i < num; ++i) { const char c = chars[i]; if ((c < 32 && c != '\t' && c != '\r' && c != '\n') || chars[i] > 126) return false; } return true; } Document* openFile (Project* p, const File& file) override { return new SourceCodeDocument (p, file); } }; protected: FileModificationDetector modDetector; ScopedPointer codeDoc; Project* project; ScopedPointer lastState; void reloadInternal(); }; class GenericCodeEditorComponent; //============================================================================== class SourceCodeEditor : public DocumentEditorComponent, private ValueTree::Listener, private CodeDocument::Listener { public: SourceCodeEditor (OpenDocumentManager::Document*, CodeDocument&); SourceCodeEditor (OpenDocumentManager::Document*, GenericCodeEditorComponent*); ~SourceCodeEditor(); void scrollToKeepRangeOnScreen (Range range); void highlight (Range range, bool cursorAtStart); ScopedPointer editor; private: void resized() override; void valueTreePropertyChanged (ValueTree&, const Identifier&) override; void valueTreeChildAdded (ValueTree&, ValueTree&) override; void valueTreeChildRemoved (ValueTree&, ValueTree&, int) override; void valueTreeChildOrderChanged (ValueTree&, int, int) override; void valueTreeParentChanged (ValueTree&) override; void valueTreeRedirected (ValueTree&) override; void codeDocumentTextInserted (const String&, int) override; void codeDocumentTextDeleted (int, int) override; void setEditor (GenericCodeEditorComponent*); void updateColourScheme(); void checkSaveState(); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SourceCodeEditor) }; //============================================================================== class GenericCodeEditorComponent : public CodeEditorComponent { public: GenericCodeEditorComponent (const File&, CodeDocument&, CodeTokeniser*); ~GenericCodeEditorComponent(); void addPopupMenuItems (PopupMenu&, const MouseEvent*) override; void performPopupMenuAction (int menuItemID) override; void getAllCommands (Array&) override; void getCommandInfo (CommandID, ApplicationCommandInfo&) override; bool perform (const InvocationInfo&) override; void showFindPanel(); void hideFindPanel(); void findSelection(); void findNext (bool forwards, bool skipCurrentSelection); void handleEscapeKey() override; void editorViewportPositionChanged() override; void resized() override; static String getSearchString() { return getAppSettings().getGlobalProperties().getValue ("searchString"); } static void setSearchString (const String& s) { getAppSettings().getGlobalProperties().setValue ("searchString", s); } static bool isCaseSensitiveSearch() { return getAppSettings().getGlobalProperties().getBoolValue ("searchCaseSensitive"); } static void setCaseSensitiveSearch (bool b) { getAppSettings().getGlobalProperties().setValue ("searchCaseSensitive", b); } struct Listener { virtual ~Listener() {} virtual void codeEditorViewportMoved (CodeEditorComponent&) = 0; }; void addListener (Listener* listener); void removeListener (Listener* listener); private: File file; class FindPanel; ScopedPointer findPanel; ListenerList listeners; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GenericCodeEditorComponent) }; //============================================================================== class CppCodeEditorComponent : public GenericCodeEditorComponent { public: CppCodeEditorComponent (const File&, CodeDocument&); ~CppCodeEditorComponent(); void addPopupMenuItems (PopupMenu&, const MouseEvent*) override; void performPopupMenuAction (int menuItemID) override; void handleReturnKey() override; void insertTextAtCaret (const String& newText) override; private: void insertComponentClass(); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CppCodeEditorComponent) }; #endif // JUCER_SOURCECODEEDITOR_H_INCLUDED JUCE-4.1.0/extras/Introjucer/Source/ComponentEditor/000077500000000000000000000000001263452017400222515ustar00rootroot00000000000000JUCE-4.1.0/extras/Introjucer/Source/ComponentEditor/components/000077500000000000000000000000001263452017400244365ustar00rootroot00000000000000JUCE-4.1.0/extras/Introjucer/Source/ComponentEditor/components/jucer_ButtonHandler.h000066400000000000000000000322751263452017400305610ustar00rootroot00000000000000/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2015 - ROLI Ltd. Permission is granted to use this software under the terms of either: a) the GPL v2 (or any later version) b) the Affero GPL v3 Details of these licenses can be found at: www.gnu.org/licenses JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.juce.com for more information. ============================================================================== */ class ButtonHandler : public ComponentTypeHandler { public: ButtonHandler (const String& typeDescription_, const String& className_, const std::type_info& componentClass, const int defaultWidth_, const int defaultHeight_) : ComponentTypeHandler (typeDescription_, className_, componentClass, defaultWidth_, defaultHeight_) {} void getEditableProperties (Component* component, JucerDocument& document, Array& props) { ComponentTypeHandler::getEditableProperties (component, document, props); Button* const b = dynamic_cast (component); props.add (new ButtonTextProperty (b, document)); props.add (new ButtonCallbackProperty (b, document)); props.add (new ButtonRadioGroupProperty (b, document)); props.add (new ButtonConnectedEdgeProperty ("connected left", Button::ConnectedOnLeft, b, document)); props.add (new ButtonConnectedEdgeProperty ("connected right", Button::ConnectedOnRight, b, document)); props.add (new ButtonConnectedEdgeProperty ("connected top", Button::ConnectedOnTop, b, document)); props.add (new ButtonConnectedEdgeProperty ("connected bottom", Button::ConnectedOnBottom, b, document)); } XmlElement* createXmlFor (Component* comp, const ComponentLayout* layout) { Button* const b = dynamic_cast (comp); XmlElement* e = ComponentTypeHandler::createXmlFor (comp, layout); e->setAttribute ("buttonText", b->getButtonText()); e->setAttribute ("connectedEdges", b->getConnectedEdgeFlags()); e->setAttribute ("needsCallback", needsButtonListener (b)); e->setAttribute ("radioGroupId", b->getRadioGroupId()); return e; } bool restoreFromXml (const XmlElement& xml, Component* comp, const ComponentLayout* layout) { Button* const b = dynamic_cast (comp); if (! ComponentTypeHandler::restoreFromXml (xml, comp, layout)) return false; b->setButtonText (xml.getStringAttribute ("buttonText", b->getButtonText())); b->setConnectedEdges (xml.getIntAttribute ("connectedEdges", 0)); setNeedsButtonListener (b, xml.getBoolAttribute ("needsCallback", true)); b->setRadioGroupId (xml.getIntAttribute ("radioGroupId", 0)); return true; } String getCreationParameters (GeneratedCode&, Component* component) { return quotedString (component->getName(), false); } void fillInCreationCode (GeneratedCode& code, Component* component, const String& memberVariableName) { ComponentTypeHandler::fillInCreationCode (code, component, memberVariableName); Button* const b = dynamic_cast (component); if (b->getButtonText() != b->getName()) { code.constructorCode << memberVariableName << "->setButtonText (" << quotedString (b->getButtonText(), code.shouldUseTransMacro()) << ");\n"; } if (b->getConnectedEdgeFlags() != 0) { StringArray flags; if (b->isConnectedOnLeft()) flags.add ("Button::ConnectedOnLeft"); if (b->isConnectedOnRight()) flags.add ("Button::ConnectedOnRight"); if (b->isConnectedOnTop()) flags.add ("Button::ConnectedOnTop"); if (b->isConnectedOnBottom()) flags.add ("Button::ConnectedOnBottom"); String s; s << memberVariableName << "->setConnectedEdges (" << flags.joinIntoString (" | ") << ");\n"; code.constructorCode += s; } if (b->getRadioGroupId() != 0) code.constructorCode << memberVariableName << "->setRadioGroupId (" << b->getRadioGroupId() << ");\n"; if (needsButtonListener (component)) code.constructorCode << memberVariableName << "->addListener (this);\n"; } void fillInGeneratedCode (Component* component, GeneratedCode& code) { ComponentTypeHandler::fillInGeneratedCode (component, code); if (needsButtonListener (component)) { String& callback = code.getCallbackCode ("public ButtonListener", "void", "buttonClicked (Button* buttonThatWasClicked)", true); if (callback.isNotEmpty()) callback << "else "; const String memberVariableName (code.document->getComponentLayout()->getComponentMemberVariableName (component)); const String userCodeComment ("UserButtonCode_" + memberVariableName); callback << "if (buttonThatWasClicked == " << memberVariableName << ")\n{\n //[" << userCodeComment << "] -- add your button handler code here..\n //[/" << userCodeComment << "]\n}\n"; } } static bool needsButtonListener (Component* button) { return button->getProperties().getWithDefault ("generateListenerCallback", true); } static void setNeedsButtonListener (Component* button, const bool shouldDoCallback) { button->getProperties().set ("generateListenerCallback", shouldDoCallback); } private: //============================================================================== class ButtonTextProperty : public ComponentTextProperty