Cynthiune-1.0.0/000755 001751 000024 00000000000 12117461044 014137 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Armenian.lproj/000755 001751 000024 00000000000 11742131623 017016 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/BundleManager.h000644 001751 000024 00000002100 11733546642 017020 0ustar00multixstaff000000 000000 /* BundleManager.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef BUNDLEMANAGER_H #define BUNDLEMANAGER_H @interface BundleManager : NSObject // { // NSArray *bundles; // } + (BundleManager *) bundleManager; - (void) loadBundles; @end #endif /* BUNDLEMANAGER_H */ Cynthiune-1.0.0/BundleManager.m000644 001751 000024 00000012302 11733555306 017027 0ustar00multixstaff000000 000000 /* BundleManager.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import "FormatTester.h" #import "GeneralPreference.h" #import "PreferencesController.h" #import "BundleManager.h" static NSNotificationCenter *nc = nil; @implementation BundleManager : NSObject + (void) initialize { nc = [NSNotificationCenter defaultCenter]; } + (BundleManager *) bundleManager { static BundleManager *bundleManager = nil; if (!bundleManager) bundleManager = [BundleManager new]; return bundleManager; } // - (id) init // { // if ((self = [super init])) // { // bundles = [NSMutableArray new]; // } // return self; // } // - (void) dealloc // { // [bundles release]; // [super dealloc]; // } - (void) _registerClass: (Class) class { PreferencesController *preferencesController; FormatTester *formatTester; GeneralPreference *generalPreference; preferencesController = [PreferencesController preferencesController]; formatTester = [FormatTester formatTester]; generalPreference = [GeneralPreference instance]; if ([class conformsToProtocol: @protocol(Preference)]) [preferencesController registerPreferenceClass: class]; if ([class conformsToProtocol: @protocol(Format)]) [formatTester registerFormatClass: class]; if ([class conformsToProtocol: @protocol(Output)]) [generalPreference registerOutputClass: class]; // if ([class conformsToProtocol: @protocol(Metadata)]) // [self registerMetadataClass: class]; } - (void) loadBundlesForPath: (NSString *) path withFileManager: (NSFileManager *) fileManager { NSEnumerator *files; NSString *file, *bundlePath; NSBundle *bundle; files = [[fileManager directoryContentsAtPath: path] objectEnumerator]; while ((file = [files nextObject]) != nil) { bundlePath = [path stringByAppendingPathComponent: file]; bundle = [NSBundle bundleWithPath: bundlePath]; if (bundle) { [nc addObserver: self selector: @selector (bundleDidLoad:) name: NSBundleDidLoadNotification object: bundle]; [bundle load]; } } } - (void) bundleDidLoad: (NSNotification *) notification { NSDictionary *dictionary; NSEnumerator *classNames; NSString *className; dictionary = [notification userInfo]; classNames = [[dictionary objectForKey: NSLoadedClasses] objectEnumerator]; while ((className = [classNames nextObject]) != nil) { [self _registerClass: NSClassFromString (className)]; } [nc removeObserver: self name: NSBundleDidLoadNotification object: [notification object]]; } - (void) loadBundlesInSystemDirectories: (NSFileManager *) fileManager { NSEnumerator *paths; NSString *path; paths = [NSStandardLibraryPaths () objectEnumerator]; while ((path = [paths nextObject]) != nil) { [self loadBundlesForPath: [path stringByAppendingPathComponent: @"Bundles/Cynthiune"] withFileManager: fileManager]; } } #if defined (GNUSTEP) && defined (LOCALBUILD) /* GNUstep */ - (void) loadBundlesInLocalDirectory: (NSFileManager *) fileManager { NSString *sourceDir, *extBundlesDir, *file; NSEnumerator *files; NSArray *allFiles; sourceDir = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]; extBundlesDir = [sourceDir stringByAppendingPathComponent: @"Bundles"]; allFiles = [fileManager directoryContentsAtPath: extBundlesDir]; files = [allFiles objectEnumerator]; while ((file = [files nextObject]) != nil) { [self loadBundlesForPath: [extBundlesDir stringByAppendingPathComponent: file] withFileManager: fileManager]; } } #endif /* GNUSTEP && LOCALBUILD */ - (void) loadBundles { NSFileManager *fileManager; fileManager = [NSFileManager defaultManager]; #ifdef GNUSTEP #ifdef LOCALBUILD [self loadBundlesInLocalDirectory: fileManager]; #endif /* LOCALBUILD */ #else [self loadBundlesForPath: [[NSBundle mainBundle] builtInPlugInsPath] withFileManager: fileManager]; #endif /* GNUSTEP */ [self loadBundlesInSystemDirectories: fileManager]; } @end Cynthiune-1.0.0/COPYING000644 001751 000024 00000043110 11733546661 015205 0ustar00multixstaff000000 000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. Cynthiune-1.0.0/ChangeLog000644 001751 000024 00000501455 12112463315 015721 0ustar00multixstaff000000 000000 2013-02-24 Riccardo Mottola * Frameworks/Cynthiune/NSColorExtensions.m Remove OSX Hack. 2013-02-07: Sebastian Reitenbach * Bundles/FLAC/FLAC.h make it compile with non-fragile ABI * Bundles/Musepack/Musepack.m fix potentially uninitialized return value * CynthiuneFadingTextField.h float -> CGFloat transition * CynthiunePauseButton.m * MBResultsPanel.m * PlaylistViewController.m * Player.m NS(U)Integer transitions, and fixing some NSLog format strings All this together makes the Player fading when start playing a song work again on amd64 2013-01-27: Sebastian Reitenbach * Bundles/VorbisTags/VorbisTags.m do not leak file descriptor 2013-01-22: Sebastian Reitenbach * Cynthiune.gorm remove menu entry to send bug report mail 2012-07-23 Sebastian Reitenbach * CynthiuneController.[h|m] remove reference to Mailservice, and the sendABugReport method 2012-07-23 Yavor Doganov Enable optional MusicBrainz support, port to libmusicbrainz5/3. * GNUmakefile.preamble (_have_musicbrainz5, _have_musicbrainz3): New helper variables; attempt to detect the installed versions of libmusicbrainz. (ADDITIONAL_CPPFLAGS, ADDITIONAL_GUI_LIBS): Conditionally define based on the tests above. * SongInspectorController.m: Conditionally include or . (_setFieldsEditable:): Disable MB lookup if no version of libmusicbrainz if found. (MakeQis, FreeQis, -_generateTrmId): Remove. (-lookupThread, -_parseMB:, -readMB:track:): Adapt to the new libmusicbrainz API. * NEWS: Update. 2012-07-23 Riccardo Mottola * Frameworks/Cynthiune/MailService.m * Frameworks/Cynthiune/MailService.h Deleted * Frameworks/Cynthiune/GNUmakefile * Cynthiune.gorm Removed bug sendng option through mail. 2012-07-23 Riccardo Mottola * Player.m * Frameworks/Cynthiune/Output.h Change pointer qualifier to be Panther compatible. 2012-07-22 Sebastian Reitenbach * remove debug NSLog from Sndio backend 2012-07-22 Riccardo Mottola * Bundles/MacOSX/MacOSXPlayer.h * Bundles/MacOSX/MacOSXPlayer.m Accept and use the Endianness parameter. 2012-05-29 Riccardo Mottola * Bundles/ALSA/ALSA.m First try setting the device to the requested rate without resampling, then to 44kHz with resampling. 2012-05-28: Sebastian Reitenbach * Bundles/Sndio/Sndio.[h|m] cleanup a bit 2012-05-28 Riccardo Mottola * PreferencesController.m * Frameworks/Cynthiune/NSViewExtensions.m Use centerScanRect to avoid fractional positioning. 2012-05-28: Sebastian Reitenbach * Bundles/Sndio/Sndio.[h|m] Fix how NativeEndianness is handles call prepareDeviceWithChannels:... unconditionally when openDevice is called. This is needed when the playing was stopped (sio_stop called) and then started again. When the next played song had the same channels/rate/endianness the device would not initialized again correctly. 2012-05-25 Sebastian Reitenbach * Bundles/Sndio/Sndio.[h|m] Introduce locking comparable to AO output bundle. Makes Sndio now work for me. Still contains lots of debug output, which needs cleanup. 2012-05-21 Philippe Roussel * Bundles/ALSA/ALSA.m Protect calls with lock. 2012-05-23 Riccardo Mottola * Bundles/AudioFile/GNUmakefile * Bundles/AudioFile/GNUmakefile.preamble * Bundles/WaveOut/WaveOut.m Adapt windows port to new methods and standards. 2012-05-22 Riccardo Mottola * Bundles/ID3Tag/ID3Tag.h * Bundles/ID3Tag/ID3Tag.m Do not redefine ID3 types. * Bundles/MacOSX/MacOSXPlayer.m Conform to new endianness parameter. 2012-05-21 Philippe Roussel * Bundles/ALSA/ALSA.m * Bundles/ALSA/ALSA.h Device parameters need to be set when they change from one song to another. In that case prepareDeviceWithChannels: is called with an open device so check for pcm_handle and set params if it's not NULL. prepareDeviceWithChannels: is always called before openDevice so we can handle endianness in there. ALSA device is used by 2 threads, protect it with a lock. 2012-05-19 Riccardo Mottola * Cynthiune.nib Fix problems and add playlist. * CynthiuneController.m: Fix header imports. 2012-05-17 Philippe Roussel * PlaylistController.m Optimize adding multiple songs to the playlist by using [Playlist -addSongsInArray:] : PlaylistChangedNotification is sent only one time, not for every song added 2012-05-17 Riccardo Mottola * PlaylistController.m Fix repeat and shuffle menu items. * Frameworks/Cynthiune/utils.h Map macros to GNUstep macros and provide Mac replacements. 2012-05-16 Philippe Roussel * Player.m * Player.h Fix crashes when seeking through a file when using a threaded backend. In this case the input stream is accessed from at least two threads and so must be protected by a lock. 2012-05-15 Sebastian Reitenbach * Playlist.m just skip duplicate songs when loading playlists or trying to add a song already in the playlist instead of throwing an exception and aborting 2012-05-14 Philippe Roussel * Bundles/Timidity/Timidity.m do not crash when loading a .mid file without having timidity installed 2012-05-14 Philippe Roussel * Song.m Proper isEqual compare. * PlaylistController.m Fix playlist and bundle loading. 2012-05-13 Philippe Roussel * Playlist.m * Song.m * Bundles/Esound/EsoundPreference.m * Bundles/OSS/OSS.h * Bundles/WindowsMedia/CWMFile.cpp Fix * Bundles/Esound/Esound.m Conform to new protocol * Bundles/Ogg/Ogg.m Endianness to native. 2012-05-13 Sebastian Reitenbach * Bundles/Sndio/Sndio.[h|m] handle media-endianness given in the media bundles. 2012-05-13 Sebastian Reitenbach * Bundles/Timidity/Timidity.m Default eniannessd needs to be native, otherwise macppc play garbage Use relative name to find timidity binary Switch buffer size from 65536 to DEFAULT_BUFFER_SIZE defined in Output.h 2012-05-13 Riccardo Mottola * Bundles/FLAC/FLAC.m * Bundles/Mod/Mod.m * Bundles/Musepack/Musepack.m Set default endianness to native. 2012-05-13 Riccardo Mottola * Bundles/WindowsMedia/WindowsMedia.m Set endianness to native. 2012-05-13 Riccardo Mottola * Player.h * Player.m * Bundles/ALSA/ALSA.h * Bundles/ALSA/ALSA.m * Bundles/AO/ao.m * Bundles/AudioFile/AudioFile.m * Bundles/MP3/MP3.m * Bundles/OSS/OSS.h * Bundles/OSS/OSS.m * Bundles/WindowsMedia/WindowsMedia.m * Frameworks/Cynthiune/Format.h * Frameworks/Cynthiune/Output.h Set media-endianness in media and output bundle. 2012-05-09 Sebastian Reitenbach * GNUmakefile fix detection of OpenBSD in order to build the Sndio bundle 2012-05-09 Riccardo Mottola * PlaylistController.m Remove hacks and use runModalForTypes. 2012-05-09 Riccardo Mottola * PlaylistController.h * PlaylistController.m * Cynthiune.gorm * English.lproj/Localizable.strings Implement open playlist 2012-05-08 Sebastian Reitenbach * Bundles/AO/ao.m fix crasher when jumping automatically from one song to the next which have different bit rates patch from Philippe Roussel 2012-05-05 Sebastian Reitenbach * Bundles/Sndio/Sndio.m Force to use little endian format, to make it work on Big Endian architectures 2012-05-05 Sebastian Reitenbach * Bundles/AO/ao.m fix resetting of audio parameters when automatically jumping to next song with different bit rate. Further, use AO_FMT_LITTLE, to fix output on big endian systems, i.e. PowerPC. From Philippe Roussel, Thanks! 2012-05-04 Riccardo Mottola * GeneralPreference.m When reading preferences, transform in a mutable dictionary since that is what we expect. * SongInspectorController.m Don't set the inspector to status level: it is ugly and doesn't work on Unity and other WMs anyway. 2012-05-04 Riccardo Mottola * Bundles/ID3Tag/ID3Tag.m Compare strings with strcmp and not == 2012-05-03 Philippe Roussel * Bundles/AO/* New output bundle base on libao. * GNUmakefile Add AO bundle to the build, unless disable-ao=yes if used. 2012-05-03 Riccardo Mottola for Yavor Doganov * GNUmakefile * GeneralPreference.m * Bundles/ALSA/ALSA.h * Bundles/ALSA/ALSA.m * Bundles/ALSA/GNUmakefile * Bundles/ALSA/GNUmakefile.preamble ALSA backend fron Yavor with slight modifications 2012-05-02 Riccardo Mottola * GNUmakefile.preamble * Bundles/ASFTags/GNUmakefile * Bundles/ASFTags/GNUmakefile.preamble * Bundles/FLAC/GNUmakefile * Bundles/FLAC/GNUmakefile.preamble * Bundles/FLACTags/GNUmakefile * Bundles/FLACTags/GNUmakefile.preamble * Bundles/ID3Tag/GNUmakefile * Bundles/ID3Tag/GNUmakefile.preamble * Bundles/MP3/GNUmakefile.preamble * Bundles/OSS/GNUmakefile * Bundles/OSS/GNUmakefile.preamble * Bundles/Taglib/GNUmakefile * Bundles/Taglib/GNUmakefile.preamble * Bundles/Timidity/GNUmakefile * Bundles/Timidity/GNUmakefile.preamble * Bundles/VorbisTags/GNUmakefile * Bundles/VorbisTags/GNUmakefile.preamble * Bundles/WaveOut/GNUmakefile.preamble * Bundles/WindowsMedia/GNUmakefile * Bundles/WindowsMedia/GNUmakefile.preamble: Fix linking flags for Windows 2012-05-02 Yavor Doganov (originally 2009-04-09) * Frameworks/Cynthiune/GNUmakefile (Cynthiune_LIBRARIES_DEPEND_UPON): Add $(OBJC_LIBS). * Bundles/ID3Tag/GNUmakefile.preamble (ADDITIONAL_LDFLAGS): Rename as... (BUNDLE_LIBS): ...which is the proper variable. * Bundles/AudioFile/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/FLACTags/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/FLAC/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/Musepack/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/Esound/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/aRts/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/WindowsMedia/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/MP3/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (TAGLIB_CFLAGS, TAGLIB_LIBS): Do not define. * Bundles/Mod/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. Don't link against libstdc++. * Bundles/VorbisTags/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (VORBIS_LIBS): Don't link against libvorbisenc. * Bundles/Ogg/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (VORBIS_LIBS): Likewise. * Bundles/Taglib/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (TAGLIB_LIBS): Link only against libtaglib_c. * frameworks.make (ADDITIONAL_LDFLAGS): Rename as... (ADDITIONAL_GUI_LIBS): ...this. 2012-04-30 Sebastian Reitenbach * Bundles/Sndio/Sndio.h * Bundles/Sndio/Sndio.m try make it work more reliable, still not perfect yet 2012-04-30 Riccardo Mottola * SongInspectorController.m: * CynthiunePauseButton.m: Fix warning in initialization. * Frameworks/Cynthiune/utils.h Use new runtime function name sel_getName() 2012-04-30 Riccardo Mottola * Bundles/MP3/MP3.h * Bundles/MP3/MP3.m Do not use @def() and expose ivars public to enable compiling with non-fragile ABI. 2012-04-30: Sebastian Reitenbach * SongInspectorController.m do not include musicbrainz header for now. From Philippe Roussel 2012-04-29 Sebastian Reitenbach * README, point out how to build with old musepack API * Bundles/Musepack/CNSFileHandle.h * Bundles/Musepack/CNSFileHandle.m * Bundles/Musepack/Musepack.h * Bundles/Musepack/Musepack.m Build against new Musepack API by default, based on patches from Debian from Yavor Doganov, forwarded by Philippe Roussel Build against old API using ADDITIONAL_OBJCFLAGS=-DMUSEPACK_API_126 in the make environment while building Cynthiune 2012-04-29 Sebastian Reitenbach * GNUmakefile remove old GNUSTEP_INSTALLATION_DIR 2012-04-29 Sebastian Reitenbach Take patches from Debian, from Yavor Doganov Forwarded from Philippe Roussel, to fixFTBFS and adopt to the slightly changed avifile API. * Bundles/WindowsMedia.CWMFile.h (WMStreamReadFrames): Typo fix. * Bundles/WindowsMedia/CWMFile.cpp: Include . (WMFileAudioStreamCount, WMStreamGetFrameSize): Cast the result to unsigned int. (WMStreamReadFrames) <_samplesRead, _bytesRead>: Declare of type size_t. Amend the call to readStream->ReadFrames accordingly. 2012-04-26 Sebastian Reitenbach * Bundles/OSS/GNUmakefile.preamble only link against libossaudio on OpenBSD 2012-03-25 Sebastian Reitenbach * GNUmakefile.preamble use pkg-config to find the goom libraries 2012-03-25 Sebastian Reitenbach * Add the Sndio Output Bundle, still work in progress 2012-03-25 Sebastian Reitenbach * Bundles/Esound/EsoundPreference.m include NSDictionary.h * CynthiuneController.m do not include nonexisting header * CynthiuneAnimatedImageView.m, CynthiunePauseButton.m, CynthiuneSongTitleCell.m add [super dealloc] 2012-03-25 Sebastian Reitenbach * Frameworks/Cynthiune/GNUmakefile.preamble diable mcheck * Frameworks/Cynthiune/NSCellExtensions.m include NSFoundation.h 2012-03-25 Sebastian Reitenbach * SongInspectorController.m disable LibMusicBrainz for now * GNUmakefile, GNUmakefile.preamble disable mcheck, and libmusicbrainz, and add Sndio bundle if statement 2012-03-25 Sebastian Reitenbach * PlaylistController.m fix opening open Panel 2012-03-25 Sebastian Reitenbach * GeneralPreference.m make Sndio backend the default on OpenBSD 2012-03-25 Sebastian Reitenbach * Bundles/FLAC/FLAC.* update to newer FLAC API * Bundles/FLAC/FLACTags.m update to newer FLAC API 2012-03-25 Sebastian Reitenbach * BundleManager.m make it find Cynthiunes bundles, and simplify some while loops * Bundles/*/GNUmakefile install bundles in right location * Bundles/*/GNUmakefile.preamble do not link against mcheck when debug flag is set 2012-03-25 Sebastian Reitenbach * Initial Import to GAP CVS 2006-03-31 Wolfgang Sourdeau * GNUmakefile: release 0.9.5. * Player.m ([Player -readNextChunk:bufferwithSize:bufferSize]): return 0 if the code returned was 0 or less. 2006-03-28 Wolfgang Sourdeau * PlaylistView.m ([PlaylistView -_selectionTopByExtendingIt:keep]) ([PlaylistView -_selectionBottomByExtendingIt:keep]): take selectionDir into account. * PlaylistController.m ([PlaylistController -updateStatusLabel]): made public. ([PlaylistController -toggleShuffle:sender]): shuffle also if currentPlayerSong is not set. Adapted to new (closer) relationship with PlaylistViewController. * PlaylistViewController.m: removed setDelegate:, replaced it with the more appropriate "setPlaylistController" since we know for sure there will be one. Removed all the custom notifications from this class and invoke directly some new methods from the playlistController. * CynthiuneController.m ([CynthiuneController -awakeFromNib]): set the playlistWindow as the next responder for the playerWindow. * PlaylistView.m ([PlaylistView -performKeyEquivalent:event]): overload this method instead of keyDown: which is "lower-level" and is not invoked when the key event occurs when the focus is on another widget. ([PlaylistView -_selectionUpByExtendingIt:keep]) ([PlaylistView -_selectionDownByExtendingIt:keep]) ([PlaylistView -_selectionTopByExtendingIt:keep]) ([PlaylistView -_selectionBottomByExtendingIt:keep]): invoke scrollRowToVisible: with the appropriate argument. * PlaylistController.m ([PlaylistController -playlistViewActivateSelection:view]): new method bound to the return key. ([PlaylistController -playlistViewDeleteSelection:view]): new method bound to the delete key. * PlaylistViewController.m ([PlaylistViewController -playlistViewActivateSelection:view]) ([PlaylistViewController -playlistViewDeleteSelection:view]): added proxy methods transferring the call to PlaylistController. * PlaylistView.m ([PlaylistView -keyDown:event]): moved the keyboard handling here, replacing the one previously in CynthiuneController. * PlaylistViewController.m ([PlaylistViewController -selectSongsInArray:array]): removed the "extend" parameter. 2006-03-24 Wolfgang Sourdeau * CynthiuneController.m ([CynthiuneController -keyPressed:event]): new method to fulfill the CynthiuneWindowDelegate protocol that handles known keypresses (the arrow keys + return + delete) before the responder API does it. * PlaylistController.m ([PlaylistController -selectPreviousSong:senderbyKeepingSelection:keep]) ([PlaylistController -selectNextSong:senderbyKeepingSelection:keep]): new method to manipulate the song selection in the playlist view externally. * PlaylistViewController.m ([PlaylistViewController -selectSongsInArray:arraybyExtendingSelection:extend]): added an "extend" parameter to this method to control whether the selection should be extended rather than implicitly doing it. * CynthiuneWindow.m ([CynthiuneWindow -keyDown:]): new subclass method to intercept keypresses before the API does. * SongInspectorController.m ([SongInspectorController -song]): new accessor method. * Song.m ([Song -_tagsClassesForProtocol:protocol]): method derived from its previous "_tagsClassForProtocol:" version. Now returning all the classes found as strings in an enumerator. ([Song -_refreshSongInfos]): walk all the classes returned by _tagsClassesForProtocol: until one is found and does not return NO on the reading operation. ([Song -setTitle:newTitleartist:newArtistalbum:newAlbumgenre:newGenretrackNumber:newTrackNumberyear:newYear]): same as above but for writing. * PlaylistController.m ([PlaylistController -cleanupPlaylist:sender]): if the song viewed in the song inspector is one of the invalid songs, stop viewing it. The repeat and shuffle buttons were removed from the toolbar and put on the player window instead, since those features really have to do with the player rather than with the playlist per se. 2006-03-22 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -lookupThread]): set the mb label to an empty string whenever an error occurs so the user doesn't keep waiting. * MBResultsPanel.m ([MBResultsPanel -_createTableView:contentView]): added a column for the track number. * SongInspectorController.m ([SongInspectorController -lookupThread]): add song metadata to the parameters of the mb query so that their server can maybe return a more accurate result. Also, ask mb to use UTF8. 2006-03-21 Wolfgang Sourdeau * Bundles/ID3Tag/ID3Tag.m: bundle now conform to the TagsWriting protocol. * Bundles/Musepack/CNSFileHandle.m (CNSFileHandleCanSeek) (CNSFileHandleSeek): those functions really should return an mpc_bool_t rather than a BOOL. * Bundles/Mod/Mod.m ([Mod -readNextChunk:bufferwithSize:bufferSize]): test the architecture endianness with cpp rather than at runtime. * Bundles/Musepack/Musepack.m ([Musepack -readNextChunk:bufferwithSize:bufferSize]): invoke invertBytesInBuffer on big endian architectures. * PlaylistView.[hm]: renamed module from PlaylistTableView. * Bundles/FLACTags/FLACTags.[hm]: new tags bundle for reading tags metadata from FLAC files. * Bundles/FLAC/FLAC.m: purge code that was there for tags reading, moved to FLACTags and modified. * PlaylistViewController.m ([PlaylistViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): don't do anything with the sort order if the number of songs in the list is < 1. * CynthiuneHeaderCell.m ([CynthiuneHeaderCell -widthOfText:text]): add the size of the arrow + its offset when computing this value. * CynthiuneSongTitleCell.m ([CynthiuneSongTitleCell -widthOfText:text]): add the size of the arrow + its offset when computing this value. * PlaylistViewController.[hm]: renamed module from TableViewController. 2006-03-20 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): changed algorithm so that we would use the column identifier and the sort order rather than the previous "sortedInPlaylist" and "sortedInDuration" bools. * CynthiuneHeaderCell.m ([CynthiuneHeaderCell -cellSize]): added the size of the arrow to the regular cell size so that sizeToFit has a better reference on how much size to prepare. * Playlist.m ([-sortByPlaylistRepresentation:reverseOrder]) ([Playlist -sortByDuration:reverseOrder]): use the "reverseOrder" parameter... in correct order. 2006-03-19 Wolfgang Sourdeau * Frameworks/Cynthiune/NSStringExtensions.m ([-caseInsensitiveCompareContainingDirectory:aString]): removed method. Foundation's stringByDeletingLastPathComponent does the job for us. 2006-03-18 Wolfgang Sourdeau * Song.m ([Song -compareByPlaylistRepresentation:aSong]): modified the sort ordered so that two songs are first compared base on their parent directories. * Frameworks/Cynthiune/NSStringExtensions.m ([NSString -caseInsensitiveCompareContainingDirectory:aString]): new method to case-insensitively compare the dirname of two filenames. 2006-03-17 Wolfgang Sourdeau * Song.m ([Song -compareByPlaylistRepresentation:aSong]): modified the sort order so that the songs from the same album but from a different artist are still ordered by song number. * Bundles/aRts/aRts.m ([aRts -_launchServer]): new method to launch the artsd daemon if it's not running. * Bundles/OSS/OSSPreference.m ([OSSPreference -controlTextDidEndEditing:notification]): same as below. * Bundles/Esound/EsoundPreference.m ([EsoundPreference -controlTextDidEndEditing:notification]): this new delegate method replaces the old hostAction: and portAction: methods by modifying the value from the field that ended being modified. This replacement permits the user to no longer have to press return to validate its changes. * Bundles/Esound/Esound.m ([Esound -openDevice]): try five times to open the esound socket at 2/10th of seconds of interval to ensure the daemon is either started correctly or that it really failed. 2006-03-14 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_oPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_startOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_ejectOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_removeArrayOfSongs:array]) ([PlaylistController -removeAllSongs:sender]) ([PlaylistController -openSongFromNSApp:filename]): invoke invalidateSortedColumn on tableViewController. ([PlaylistController -cleanupPlaylist:sender]): do something only if the amount of invalid songs reported is > 0. * CynthiuneHeaderCell.m ([-drawInteriorWithFrame:cellFrameinView:controlView]): no longer use images to draw sort-order arrows, invoke the new _drawArrowOfSize:... (see below) instead. ([CynthiuneHeaderCell -_drawArrowOfSize:arrowSizeatReferencePoint:refPoint]): draws an arrow using NSBezierPath. * TableViewController.m ([TableViewController -invalidateSortedColumn]): made method public. Invoke "setNeedsDisplay:" on the [playlistView headerView] to make sure we don't see any sorting indicator while the list is unsorted. 2006-03-12 Wolfgang Sourdeau * TableViewController.m ([TableViewController -_saveSortOrderColumn:sortColumninDirection:sortDirection]) ([TableViewController -_restoreSortOrder]): added those two new methods to save the state of the sort order in the playlist and to restore it at launch time. ([TableViewController -awakeFromNib]): removed the "scrollView" ivar which was only used here anyway. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): slightly optimized methods by reducing message calls and generalizing the variables. ([TableViewController -tableView:tableViewacceptDrop:inforow:rowdropOperation:op]): call _invalidateSortedColumn after a drop. ([TableViewController -_invalidateSortedColumn]): invalidate the ivars related to sorting as well as the header appearance and the state saved to the user defaults. 2006-03-11 Wolfgang Sourdeau * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +evenRowsBackgroundColor]), ([NSColor +evenRowsBackgroundColor]): inverted the values returned by those methods to permit our tableview to display the stripes by taking into account the ones displayed by the Nesedah Camaelon theme. * Bundles/VorbisTags/VorbisTags.m: updated copyright. ([VorbisTags +setTitle:titleartist:artistalbum:albumtrackNumber:trackNumbergenre:genreyear:yearofFilename:filename]): enabled writing to vorbis file through the code taken from Poe.app. 2006-03-02 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -streamOpen:fileName]): call _resetIvars from here instead of init. ([-streamClose]): don't call _resetIvars from here. * PlaylistController.m ([PlaylistController -_initButtonImages]): added tooltips to the playlist toolbar buttons. * Player.m ([Player -setStream:newStream]): changed method definition to accept the stream to analyze as parameter instead of using the "stream" ivar. ([Player -setStream:newStream]): set the "stream" ivar to newStream only after the channels and and sample rate were defined for it. This to avoid a crash when using a threaded output plugin ([Player -stop]): if the output is threaded, send a stopThread message to the output plugin only if not paused, since this was putting us in an infinite loop (thread already stopped). * CynthiuneHeaderCell.[hm]: new class that displays an indicator of the state of the list sorting in the playlist table. 2006-02-28 Wolfgang Sourdeau * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +alternateSelectedControlTextColor]): the default selected text color modified to be visible under OSX with the orange/yellow background color we use in our NSTableView... 2006-02-25 Wolfgang Sourdeau * CynthiuneController.m ([CynthiuneController -awakeFromNib]): apply resize increment of (1, 16) to playlistWindow. 2006-02-21 Wolfgang Sourdeau * Bundles/aRts/aRts.m ([aRts -threadLoop]): adapted to the new definition of the Output protocol. * Player.m ([Player -init]): new "closingThread" ivar, indicating whether the Output thread is closing. ([Player -init]): new "streamsToClose" mutable array, containing streams to be closed when the Output thread is done using them. ([Player -_closePendingStreams]): new method to be commanded from the Output thread through the main thread to clean up the streamsToClose array. ([Player -readNextChunk:bufferwithSize:bufferSize]): if closingThread is set, stop waiting for "awaitingNewStream" to be set and do nothing else. 2006-02-19 Wolfgang Sourdeau * Bundles/WaveOut/WaveOut.m ([WaveOut -_loopIteration]): modified method to take the changes to the ParentPlayer informal protocol into account. Also, free the sound blocks with the new FreeBlock functions so as to also free the data chunk that was allocated with malloc. (FreeBlock): new method to correctly free the memory used by a WAVEHDR structure. 2006-02-17 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -init]): new "notifiedFirstSong" ivar designed to remember the first song given by the PlaylistChangedNotification. ([PlaylistController -playlistChanged:aNotification]): receive the first song given by the notification. If notifiedFirstSong is set, which means the process of feeding the playlist has not yet ceased, do nothing. Otherwise set it to the received song. ([PlaylistController -tableFilenamesDropped:aNotification]): receive the TableFilenamesDroppedNotification from the TableViewController. Feed the playlist with the songs passed through the userInfo dict. ([PlaylistController -_oPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_startOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_ejectOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -openSongFromNSApp:filename]): handle song filenames to _feedPlaylistWithTreeOfFilenames: and take notifiedFirstSong ivar into account if the Player is not running. * TableViewController.m ([TableViewController -setDelegate:anObject]): declare new TableFilenamesDroppedNotification notification. ([TableViewController -_bestFit:stringforColumn:column]): reduce the size of the string by 1 char if the string ends with a space. ([TableViewController -_acceptDroppedFiles:aFilesListatRow:row]): no longer handles the song insertion into the playlist anymore, instead post a notification with the array of filenames to the observer. * Song.m ([Song -encodeWithCoder:encoder]): encode date only if not nil. * CynthiuneController.m ([CynthiuneController -_initPlaylistWindowButtons]): new method to hide the buttons from the Playlist window title bar. ([CynthiuneController -_parseArguments]) ([CynthiuneController -application:applicationopenFile:filename]): pass the song filename as argument instead of a Song instance to PlaylistController's openSongFromNSApp: method. * GeneralPreference.m ([GeneralPreference -_initDefaults]): NSWindows are no longer textured by default. * CynthiuneSongTitleCell.m ([CynthiuneSongTitleCell -cellSize]): take the margins left and right to the image into account. ([CynthiuneSongTitleCell -drawWithFrame:cellFrameinView:controlView]): use aFrame instead of imageFrame as argument to NSRectFill(). * CynthiuneFadingTextField.m ([CynthiuneFadingTextField -awakeFromNib]): new method to add the fadeoutClone field to the parent view instead of in viewDidMoveToSuperview. ([-viewDidMoveToSuperview]): removed method. * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +evenRowsBackgroundColor]) ([NSColor +oddRowsBackgroundColor]): balance the values for red and green to obtain a pure shade of blue. ([NSColor +rowsHighlightColor]): use a softer orangish color. ([NSColor +alternateSelectedControlColor]): work-around a bug in MacOSX where the rows are highlighted with a different color than specified for a fraction of a second. * Playlist.m ([Playlist -postNotificationWithSongAsFirst:song]): new method that post the PlaylistChangedNotification notification withs the song given as argument in the userInfo dictionary. So that the PlaylistController can now which song to point to when a new batch of songs is added. ([Playlist -addSong:song], [Playlist -addSongsInArray:array]) ([Playlist -insertSong:songatIndex:index]): modified those methods to use the new method above. * Bundles/MacOSX/MacOSXPlayer.m (inputCallback): modified function to reflect to take the changes to the ParentPlayer informal protocol into account. * Frameworks/Cynthiune/Output.h: modified the ParentPlayer protocol to take account of the change below. * Player.m ([Player -readNextChunk:bufferwithSize:bufferSize]): new method derived from the obsolete readNextChunk that feeds the threaded player calling it with song data. 2006-02-16 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -hide]): compute "hideInterval" from the interval and numberOfIterations method of the title text field. 2005-12-29 Wolfgang Sourdeau * PlaylistArchiver.m ([PlaylistArchiver +_saveDictionaries:dictionariestoFile:filename]): standardize target directory name. * M3UArchiver.m ([M +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): use the playlist representation as metadata. * Song.m ([Song -setFilename:aFilename]): standardize path of filename given so that we are sure "filename" always point directly to the final file. ([Song -initWithCoder:decoder]): same as above. ([Song -encodeWithCoder:encoder]): encode the playlist representation for playlist file handlers which might make use of it. 2005-12-28 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -_resetIVars]): new "lostSyncs" ivar, defaulting to 0, meant to count the number of successive losses of frame syncs. (decodeInputBuffer): when a MAD_ERROR_LOSTSYNC occurs, compute the size mad has to skip and increase the lostSyncs ivar. * PlaylistController.m ([PlaylistController -_filteredSubtree:filename]): sort the resulting array before returning it. 2005-12-18 Wolfgang Sourdeau * Song.m ([Song -songInfosCanBeModified]): test whether the song file is writable. * SongInspectorController.m ([SongInspectorController -_setFieldsEditable:editable]): show or hide "lock.tiff" depending on whether the song metadata can or cannot be changed. 2005-12-14 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong]): set status to SongOK whenever the stream could be opened. 2005-12-07 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -lookupThread]): added code to check whether the TrmID is a the special "busy" one and if an error occured. 2005-11-30 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_initProgressSlider]): the new cell should recover the action and target from the old cell since the nib handler has set them beforehand. 2005-11-18 Wolfgang Sourdeau * CynthiuneSliderCell.m ([CynthiuneSliderCell -init]): replaced knobImage with knobCell so that the drawing code is done within NSCell (more portable and easier way of doing things). ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): no longer draw the control background since the cell is declared as non-opaque. ([CynthiuneSliderCell -isOpaque]): declare the cell as non-opaque. * TableViewController.m ([TableViewController -tableView:tableViewobjectValueForTableColumn:tableColumnrow:rowIndex]): manage columns which have a non-nil identifier. * CynthiuneSlider.[hm]: removed module after it was found unnecessary to subclass NSSlider to obtain a custom look for the song slider. * CynthiuneController.m ([CynthiuneController -awakeFromNib]): request the PlaylistController instance to create an NSToolbar instance with itself as delegate. Also, made code related to window position clearer. * PlaylistController.m ([PlaylistController -toolbar:toolbaritemForItemIdentifier:itemIdentifierwillBeInsertedIntoToolbar:flag]) ([PlaylistController -toolbarAllowedItemIdentifiers:toolbar]) ([PlaylistController -toolbarDefaultItemIdentifiers:toolbar]): new NSToolbar delegate callback methods. ([PlaylistController -_initToolbarButtons]): new method to instantiate our NSToolbarItem's. ([PlaylistController -_toolbarButtonWithIdentifier:identifiercallbackToSelf:selectorandImageName:imageName]): new method containing common code for NSToolbarItem instantiation. ([PlaylistController -playlistToolbar]): new public method that returns the NSToolbar instance which CynthiuneController should put on the playlist window. This toolbar totally replaces the previous dropdown menu system. 2005-11-02 Wolfgang Sourdeau * CynthiuneSliderCell.m ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): use windowBackgroundColor instead of controlBackgroundColor to draw the background of the cell. This fixes a bug that would appear whenever the user colors were different than the regular system colors (at least on GNUstep). 2005-10-31 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -_setFieldsEditable:editable]): also controls the aspect of lookupButton, also depending whether threadRunning is set or not. * PlaylistController.m ([PlaylistController -playerSongEnded:aNotification]): udpate the info display only after the player has stopped to avoid displaying the first song. * Bundles/Taglib/Taglib.[hm]: made this class conform to the TagsWriting protocol too. * Song.m ([Song -init]): replaced tagsClass with readingTagsClass and writingTagsClass. ([Song -_tagsClassForProtocol:protocol]): renamed from _detectTagsClass. Modified to return a tags class conform to a specified protocol. ([Song -setTitle:newTitleartist:newArtistalbum:newAlbumgenre:newGenretrackNumber:newTrackNumberyear:newYear]): new method replacing the individual set{artist, album, ...} methods and invoking the "setTitle..." method of the writingTagsClass with the values that were modified. 2005-10-25 Wolfgang Sourdeau * Bundles/VorbisTags/VorbisTags.m ([VorbisTags +_setString:stringtoComment:commentfromOvFile:ovFile]): fixed a segfault occuring when parsing an invalid vorbis file. 2005-10-24 Wolfgang Sourdeau * Song.m ([Song -songInfosCanBeModified]): returns "YES" if the tags class is not 'nil' and conforms to the new "TagsReading" protocol. * Frameworks/Cynthiune/Tags.h: splitted the "Tags" protocol in 2 separate protocols: "TagsReading" and "TagsWriting". 2005-10-04 Wolfgang Sourdeau * Song.m ([Song -songInfosCanBeModified]): new dummy method always returning 'NO' (for the moment). * SongInspectorController.m ([SongInspectorController -_updateFields]): set fields editable and make the MB lookup button accessible only if [song songInfosCanBeModified] returns 'YES'. * CynthiuneController.m ([CynthiuneController -applicationWillTerminate:notification]): invoke savePlayerState on the playlist controller. * PlaylistController.m ([PlaylistController -savePlayerState]): new method that saves the status of the repeat and shuffle modes as well as the number of the current song. ([PlaylistController -awakeFromNib]): recover the state save in the preferences. * CynthiuneController.m ([CynthiuneController -init]): ensure the user's Cynthiune directory does exist so that the default playlist can be created and read. 2005-10-03 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -addObjectRandomly:object]): modified to use srand() and rand() instead of srandom() and random(). 2005-09-30 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -addObjectRandomly:object]): raise an exception when 'object' parameter is nil. ([NSMutableArray -rotateUpToObject:object]): method that rotates the array left until the object passed as parameter reaches the first position. * PlaylistController.m ([PlaylistController -tableDoubleClick:aNotification]): invoke "shuffleFromSong:" on playlist so that we make sure the shuffle list is rotated. ([PlaylistController -toggleShuffle:sender]): if 'currentPlayerSong' is set, place it at the first position in the shuffle list. * Playlist.m ([Playlist -shuffleFromSong:song]): new method called from PlaylistController when a song is double-clicked while the list is shuffled. ([-reShuffle]): removed obsolete method. 2005-09-29 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -addObjectRandomly:object]): new method that adds given object in a random position in the array. 2005-09-26 Wolfgang Sourdeau * Bundles/ASFTags/ASFTags.[hm]: new tags module for reading tags in ASF files. * Song.m ([Song -encodeWithCoder:encoder]): encode only fields which we are sure are non-nil. ([Song -playlistRepresentation]): solved the case were the artist name could be nil and displayed as "(nil)". 2005-09-25 Wolfgang Sourdeau * Bundles/ID3Tag/ID3Tag.[hm]: new tags module for the id3tag tags library. * Frameworks/Cynthiune/Tags.h: new Tags protocol for tags module. * Bundles/Taglib/Taglib.[hm]: new tags module for the taglib tags library. * PlaylistController.m ([-toggleMute:sender]): removed method. ([PlaylistController -_initButtonImages]): removed messages on the muteButton and muteMenuItem ivars (removed). * Player.m ([Player -init]): removed "muted" ivar. ([Player -_playLoopIteration], [Player -readNextChunk]): no longer take the "muted" ivar into account since we removed the mute button. ([-setMuted:aBool]): removed method. ([-muted]): removed method. 2005-09-24 Wolfgang Sourdeau * Playlist.m ([Playlist -sortByDuration:reverseOrder]): reenabled method. ([Playlist -sortByPlaylistRepresentation:reverseOrder]): reenabled method. * Frameworks/Cynthiune/NSStringExtensions.m ([NSString -linesFromFileContent]): new method that returns an array of strings representing the lines of the file represented by the receiver. * Frameworks/Cynthiune/utils.m (linesOfFile): removed function, replaced with "linesFromFileContent" method in class NSStringExtensions. * PlaylistArchiver.m ([PlaylistUnarchiver +dictionariesFromFilenames:filenames]): common method for playlist unarchivers which build list of dictionarycoders only from an array of filenames. 2005-09-23 Wolfgang Sourdeau * M3UArchiver.m ([M +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): encode the filenames relatively if withAbsoluteFilenameReference: is set. ([M +dictionariesFromFileContent:contentinReferenceDirectory:directory]): implemented decoding method. * PLSArchiver.m ([PLSArchiver +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): encode the filenames relatively if withAbsoluteFilenameReference: is set. ([PLSUnarchiver +dictionariesFromFileContent:contentinReferenceDirectory:directory]): implemented decoding method. * PlaylistArchiver.m ([PlaylistArchiver +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): changed method signature to accept the additional "withAbsoluteFilenameReference:" boolean parameter. ([PlaylistArchiver +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): new temporary method that separates a string in different substrings representing the lines of a file. * GeneralPreference.m ([GeneralPreference -absolutePlaylistReferences]): added method that returns YES if the filenames should be absolute in the playlist files. * PlaylistFile.[hm]: removed module. Made obsolete by the new playlist archiving mechanism. 2005-09-22 Wolfgang Sourdeau * Frameworks/Cynthiune/NSStringExtensions.[hm] ([NSString -relativePathFromDirectoryToFile:filename]): new method that returns the relative path to file with the current string as a directory reference. 2005-09-19 Wolfgang Sourdeau * PlaylistArchiver.m ([PlaylistArchiver +fileContentFromDictionaries: inReferenceDirectory:]): changed method signature by adding a "directory" parameter which can serve as a reference for relative paths declared in playlist files. ([PlaylistUnarchiver +dictionariesFromFileContent: inReferenceDirectory:]): changed method signature by adding a "directory" parameter which can serve as a reference for relative paths declared in playlist files. 2005-09-17 Wolfgang Sourdeau * PlaylistArchiver.m: added a new class "PlaylistUnarchiver", implementing a subset of the NSKeyedUnarchiver API, requiring the method "dictionariesFromFileContent:" from subclasses. * PlaylistController.m ([-addSongsFolders:sender]): removed method. ([PlaylistController -addSong:sender]): removed "+ dir" entry in the playlist submenu. ([PlaylistController -_feedPlaylistWithTreeOfFilenames:filenames]): new method taking an array of filenames as parameter and which populate the playlist with song files, the content of subdirectories and the content of playlist files. * FormatTester.m ([FormatTester -extensionIsSupported:extension]): added "cPls" to the list of known extensions. ([FormatTester -fileIsPlaylist:filename]): new method returning YES if the filename passed as parameter a playlist in a known format. * Playlist.m ([Playlist -deleteAllSongsQuietly]): new method designed to remove all songs from the playlist without raising a notification. 2005-09-11 Wolfgang Sourdeau * Song.m ([Song -_readInfos]): set duration to 0 seconds when status is not SongOK. * PlaylistController.m ([PlaylistController +initialize]): new method, computing the value for the default playlist filename. ([PlaylistController -awakeFromNib]): invoke loadFromFile on the playlist with the default playlist filename given as parameter, in place of the obsolete loadFromDefaults method. ([PlaylistController -playlistChanged:aNotification]): save the list to the default playlist file. ([PlaylistController -songInspectorDidUpdateSong:aNotification]): save the list to the default playlist file. * Playlist.m ([Playlist -saveToFile:file]): compare file extension case-insensitively. ([Playlist -loadFromFile:file]): first implementation currently supporting NSKeyedUnarchiver only. This allows us to save and load default playlists again. 2005-09-09 Wolfgang Sourdeau * M3UArchiver.m ([M3UArchiver +fileContentFromDictionaries:dictionaries]): new method mostly taken from the old PlaylistFile's _M3UContent method. * PLSArchiver.m ([PLSArchiver +fileContentFromDictionaries:dictionaries]): new method mostly taken from the old PlaylistFile's _PLSContent method. * PlaylistArchiver.m: new class module implementing a subset of the NSKeyedArchiver API and most of the common code needed for its concrete subclasses. Currently, only the method "fileContentFromDictionaries:" is required. * M3UArchiver.m, PLSArchiver.m: subclassed from PlaylistArchiver because of common code. 2005-09-06 Wolfgang Sourdeau * DictionaryCoder.m ([DictionaryCoder -encodeObject:anObject:aKey]) ([DictionaryCoder -encodeBool:aBool:aKey]) ([DictionaryCoder -encodeInt:anInteger:aKey]) ([DictionaryCoder -encodeInt64:anInteger:aKey]): added encoding methods needed to save playlist state. ([DictionaryCoder -decodeObjectForKey:aKey]) ([DictionaryCoder -decodeBoolForKey:aKey]) ([DictionaryCoder -decodeIntForKey:aKey]): ([DictionaryCoder -decodeInt64ForKey:aKey]): added decoding methods needed to save playlist state. 2005-09-05 Wolfgang Sourdeau * DictionaryCoder.[hm]: new module that implements a minimal subclass of NSCoder to store song data in a dictionary. This, in order to use the NSCoding protocol of the Song class. 2005-09-04 Wolfgang Sourdeau * M3UArchiver.[hm]: new module to implement a subset of the NSKeyedArchiver API that ouputs the relevant object data into a M3U-formatted playlist file. * PLSArchiver.[hm]: new module to implement a subset of the NSKeyedArchiver API that ouputs the relevant object data into a PLS-formatted playlist file. * Playlist.m ([-saveToDefaults]): removed obsolete method. ([-loadFromDefaults]): removed obsolete method. ([Playlist -saveToFile:file]): reimplemented method by choosing an archiver Class depending on the file extension given as parameter. 2005-08-19 Wolfgang Sourdeau * Player.m ([Player -timer]): make sure rate and channels are not 0 before using them in the quotient. 2005-07-06 Wolfgang Sourdeau * Bundles/WaveOut/WaveOut.m ([WaveOut -_freeBlocks]): stop the loop when no blocks are left allocated. * Bundles/MP3/MP3.m ([MP -streamOpen:fileName]) ([MP +streamTestOpen:fileName]): open the file with "b" mode flag set so that we make sure Windows opens it in binary-mode. * Bundles/WaveOut/WaveOut.[hm]: new threaded output bundle for the standard Windows sound api. * Bundles/MP3/MP3.m (testMP3Header): u_int16_t type changed to unsigned short for portability. 2005-06-26 Wolfgang Sourdeau * Player.m ([Player -setStream:newStream]): release the previous stream after the new one is made current, so that player threads can't crash the application when reading a potentially closed stream. * CynthiuneSliderCell.m ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): use "controlShadowColor" instead of "shadowColor". 2005-06-24 Wolfgang Sourdeau * Player.m ([Player -init]): new outputIsThreaded ivar to modify our behaviour depending on whether the output bundle is declared as threaded or not. Removed the "requests" ivar, considered useless. ([Player -_handleEndOfSong]): new method that post a song-ended notification in the main thread from the new "readNextChunk" method. ([Player -readNextChunk]): new method designed to feed threaded output bundles with data on request. Manage the end of songs. ([Player -setPaused:aBool]): start or stop the thread of the threaded output bundles. * Bundles/aRts/aRts.[hm]: new threaded output bundle for the aRts sound daemon. 2005-06-21 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -seek:aPos]): compute a float to use as the multiplaction factor to find the correct position in the file. This solves a problem occuring due to the lack of precision with integer divisions. 2005-06-19 Wolfgang Sourdeau * CynthiuneSliderCell.m ([CynthiuneSliderCell -init]): the new default image for the slider knob is named "slider-knob-disabled". ([CynthiuneSliderCell -setEnabled:enabled]): if enabled, set the image to "slider-knob-enabled". ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): slider trail is one line wider. * Frameworks/Cynthiune/NSTimerExtensions.[hm]: new extension module to the NSTimer class, providing a new method "explode", which registers the current timer in the current runloop both for the NSEventTrackingRunLoopMode and the NSDefaultRunLoopMode. * PlaylistController.m ([PlaylistController -_startTimeTimer]): execute first iteration of _updateTimeDisplay. Don't retain the timer. ([PlaylistController -_stopTimeTimer]): don't release the timer since it's no longer retained. ([PlaylistController -startPlayer:sender]): check if song != nil instead of currentPlayerSong prior to start the player. * InfoDisplayController.m ([InfoDisplayController -_reallyHide]): hide the timer when the splash is hidden. * GoomView.[hm]: new subclass of NSView with support for the goom animation library. 2005-06-15 Wolfgang Sourdeau * TableViewController.m ([TableViewController -_bestFit:stringforColumn:column]): check that the length of the string is not >3, otherwise the call to NSMakeRange will generate an exception. Besides, also computes the width of the string by invoking the new [NSCell -widthOfText:] method. * MBResultsPanel.m ([MBResultsPanel -_sizeOfText:inCell:]): moved into the NSCellExtensions module. ([MBResultsPanel -_updateColumnWidth:key]): updated following the above change. * Frameworks/Cynthiune/NSCellExtensions.m ([NSCell -widthOfText:text]): new method that returns the size the text passed as parameter would take in that NSCell. * Frameworks/Cynthiune/NSCellExtensions.[hm]: new extension module to the NSCell class. 2005-06-13 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -setDelegate:anObject]): declare the new SongInspectorDidUpdateSongNotification to the notification center. ([SongInspectorController -save:sender]): notifies the observer that the song metadata was modified. ([SongInspectorController -_updateInfoField:fieldwithString:string]): new method that returns true if the new string value of a text field has changed, or false otherwise. ([SongInspectorController -_updateFieldsWithTrackInfos:trackInfos]): new method that modifies the info fields with the data contained in the dictionary passed as parameter. ([SongInspectorController -_updateSongFields:allTrackInfos]): new method that updates the fields when one song track was returned or pops up a MBResultsPanel when it was more than one. ([SongInspectorController -readMB:mbtrack:track]): new method that transforms the data received from MusicBrainz into an NSDictionary. ([SongInspectorController -_parseMB:mb]): method redesigned to call the above. ([SongInspectorController -resultsPanelDidEndWithTrackInfos:trackInfo]): new delegate method for the MBResultsPanel that updates the info fields with the data from the song track that was selected. * PlaylistController.m ([PlaylistController -songInspectorDidUpdateSong:aNotification]): new delegate method to update the table view whenever the song inspector notifies us of a change in the song metadata. Optionnally update the infodisplay if the player is currently playing the song that was just modified. * TableViewController.m ([TableViewController -tableView:tableViewwillDisplayCell:cellforTableColumn:tableColumnrow:rowIndex]) ([TableViewController -_addNeededColumns]): use the standard colors defined in our new NSColorExtensions extension module. * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +evenRowsBackgroundColor]): new extension module for NSColor designed to provide methods for standard colors of rows in our NSTableViews. * Bundles/WindowsMedia/WindowsMedia.m (extractValueFromDescriptor): treat data of type "BYTE_ARRAY" as a cString rather than a unicode string. * MBResultsPanel.[hm]: new subclass of NSPanel, designed to be called by the SongInspectorController when MusicBrainz returns more than one result. Displays a list of all the song data that were returned, permitted the user to select the one that fits best with the one of which he's modifying the info. 2005-06-11 Wolfgang Sourdeau * Tests/Cynthiune_framework/TestNSNumberExtensions.m ([TestNSNumberExtensions -testTimeStringValue]): added test for the timeStringValue extension method to NSNumber. * InfoDisplayController.m ([-resetTimerField]) ([-setTimerFromTotalSeconds:totalSeconds]): removed those methods made useless by the new mechanism used to display the total time of the playlist in its own window. * TableViewController.m ([TableViewController -deselectAll]): new proxy method that calls "deselectAll:" on playlistView. ([TableViewController -durationOfSelection]): new method that returns the total duration of the selected songs as an NSNumber. ([TableViewController -selectSongsInArray:array]): new method to select the songs passed as parameters in the array. ([TableViewController -setCurrentPlayerSong:newSong]): new method to declare the song that is currently playing so that the song pointer can be positioned. ([TableViewController -init]): initializes evenRowsBgColor and oddRowsBgColor so that the rows are differenciated more easily. * Frameworks/CynthiuneTest/SuperMetaClass.[hm]: new super class for all meta objects used in the unit tests. This class implements neutral "meta" accessors for classes which wouldn't provide them or which would provide non-neutral accessors (i.e. accessors that perform actions different than just setting the related ivar). * BundleManager.m ([BundleManager _registerArrayOfClasses]): removed method. ([BundleManager -loadBundlesForPath:pathwithFileManager:fileManager]): replaced the mechanism that was invoking "bundleClasses" on the main bundle classes with one that loads the bundle after "self" is passed as observer for the "NSBundleDidLoadNotification", hence invoking the new "bundleDidLoad:" method. ([BundleManager -bundleDidLoad:notification]): new method that register the bundle classes by examining the "NSLoadedClasses" key of the userInfo dictionary of the notification, removing the need for a "bundleClasses" method in the "CynthiuneBundle" protocol. * Tests/Cynthiune_app/TestBundleManager.m ([TestBundleManager -testRegisterBundle]): removed test. ([TestBundleManager -testBundleManager]): removed test. * Frameworks/Cynthiune/NSArrayExtensions.m ([NSArray -numberOfValuesBelowValue:value]): new method that returns the amount of values contained in self (considered as an array of numbers) that are inferior to the value passed as parameter. * Tests/Cynthiune_framework/TestNSArrayExtensions.m ([TestNSArrayExtensions -testNumberOfValuesBelowValue]): test for the new "numberOfValuesBelowValue:" method. * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -moveObjectsAtIndexes:indexestoIndex:index]): renamed from "moveObjectsAtIndices:toIndex:". * Frameworks/Cynthiune/NSIndexSetExtensions.[hm]: removed extension module since only MacOSX 10.3 and above provide NSIndexSet. 2005-06-05 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -streamOpen:fileName]): rewind the file handle after reading the metadata, so that the beginning is the sound won't be clipped. ([MP +bundleClasses], [MP +bundleDescription]) ([MP +bundleCopyrightStrings]): changes to the CynthiuneBundle protocol. * German.lproj/: added German translation, thanks to Julian Frede. * Frameworks/Cynthiune/CynthiuneBundle.h: removed the "bundleClasses" method, added bundleDescription and bundleCopyrightStrings. 2005-05-31 Wolfgang Sourdeau * BundleManager.[hm]: new class that will handle bundle loading, registration and general management. * Tests/Cynthiune_app/TestBundleManager.m ([TestBundleManager -testNew]): unit test for the new BundleManager class. 2005-05-22 Wolfgang Sourdeau * PlaylistTableView.m ([-draggingSourceOperationMaskForLocal:isLocal]): returns NSDragOperationMove | NSDragOperationGeneric explicitly when isLocal is YES. * Player.m ([Player -setStream:newStream]): no longer care for the validity of the stream given as parameter since the PlayerController should take care of that. * GeneralPreference.m ([GeneralPreference -_initializeSelector]): invoke "sizeToFit" and "centerViewHorizontally" on the bundle selector. * Playlist.m ([Playlist -arrayOfInvalidSongs]): new method that replaces delteInvalidSongs by letting the caller invoke deleteSongsInArray: with the resulting array. * Tests/Cynthiune_framework/TestNSStringExtensions.m ([TestNSStringExtensions -_createroDir]): new unit tests for our NSString extensions. * Bundles/WindowsMedia/WindowsMedia.m ([WindowsMedia -readYear]): new method required by the Format protocol. ([NSString +stringWithASFText:textlength:length]): new extension method to NSString that parses an UTF-16 field from the ASF headers. (convertGUID): convert a binary-stoded GUID to its ASCII representation. (objectIsOfType): test whether an ASF object matches a specific GUID. (asfstrndup): strndup for UTF-16 strings. (readMetaData): new function to parse ASF header for song metadata. * Bundles/Timidity/Timidity.m ([Timidity -readTrackNumber]): new method required by the Format protocol. * Bundles/Ogg/Ogg.m ([Ogg -readYear]): new method required by the Format protocol. * Bundles/Musepack/Musepack.m ([Musepack -readYear]): new method required by the Format protocol. [generic] modified to use the new libmpcdec API (rather than libmusepack 1.1, which was C++ only). * Bundles/Mod/Mod.m ([Mod -readYear]): new method required by the Format protocol. * Bundles/MP3/MP3.m ([MP -readYear]): new method required by the Format protocol. ([MP -_readStreamMetaData]): modified to take info from the Xing header if present and to compute the length of possible non-xing vbr files by doing an average for 10 frames. * Bundles/FLAC/FLAC.m ([FLAC -readYear]): new method required by the Format protocol. * Bundles/AudioFile/AudioFile.m ([AudioFile -readYear]): new method required by the Format protocol. * CynthiuneFadingTextField.[hm]: new subclass of NSTestField that gives a fading effect when the text value changes. * CynthiuneAnimatedImageView.[hm]: new subclass of NSImageView to display a small animation. * Frameworks/Cynthiune/utils.m (logRect): modified to use NSStringFromRect. (fileIsAcceptable): enhanced (fixed) to handle relative symlinks. * Frameworks/Cynthiune/Format.h: modified the Format protocol so that is requires a readYear method. * Frameworks/Cynthiune/NSViewExtensions.m ([NSView -arrangeViewRightTo:view]): new extension methods for the NSView class: arrangeViewRightTo:, arrangeViewLeftTo: and centerViewHorizontally. * Song.m ([Song -setTitle:string], [Song -setArtist:string]) ([Song -setAlbum:string], [Song -setGenre:string]) ([Song -setTrackNumber:string], [Song -setYear:string]): new setter methods for use by the new SongInspectorController. ([Song -_refreshSongInfosFromStream:stream]): when a song doesn't have a title, generate it from the new makeTitleFromFilename utility function. * Song.h: new year ivar that will contain the year of publication for the song. 2005-05-06 Wolfgang Sourdeau * Playlist.m ([Playlist -addSongsInArray:array]) ([Playlist -deleteSongsInArray:array]) ([Playlist -deleteInvalidSongs], [-lastValidSong]) ([-firstValidSong], [-duration]): replaced the method for accessing the songs in the list array with an enumerator. ([Playlist -_nextValidSongInEnumerator:songEnumerator]): new method with common code from firstValidSong and lastValidSong, taking an NSEnumerator as parameter, previously computed from their calling method as appropriate. 2005-05-05 Wolfgang Sourdeau * Playlist.m ([Playlist -replaceSongsWithArray:array]): new method that replaces the content of the playlist with the songs contained in the array passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testReplaceSongsWithArray]): added unit test for the new replaceSongsWithArray: method. 2005-04-17 Wolfgang Sourdeau * Playlist.m ([Playlist -firstValidSong]): new method that returns the first song marked as valid in the playlist. ([Playlist -lastValidSong]): new method that returns the last song marked as valid in the playlist. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testFirstValidSong]): added unit test for the new firstValidSong method. ([TestPlaylist -testLastValidSong]): added unit test for the new lastValidSong method. * Playlist.m ([Playlist -addSongsInArray:array]): new method that adds the songs contained in the NSArray passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testAddSongsInArray]) added unit test for the new addSongsInArray: method. 2005-04-05 Wolfgang Sourdeau * Tests/Cynthiune_app/Meta*.[hm]: generated meta objects automatically from a perl script. Those meta objects have the abilitity to query their ivars through "metaXX" methods which guarantee no influence on them. All of those classes are subclasses of SuperMetaClass. 2005-03-28 Wolfgang Sourdeau * Playlist.m ([Playlist -moveSongsAtIndices:indicestoIndex:index]): moved the core of the method to Frameworks/Cynthiune/NSArrayExtensions.m:moveObjectsAtIndices:toIndex:. We now call that method instead and only check whether the list has changed and if we should raise a notification. * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -moveObjectsAtIndices:indicestoIndex:index]): new method, moved from ../../Playlist.m:moveSongsAtIndices:toIndex:, that move objects indicated in the specified array indexes to the new index. * Tests/Cynthiune_framework/TestNSArrayExtensions.m ([TestNSMutableArrayExtensions -testMoveObjectsAtIndicesToIndex]): added unit test for the new moveObjectsAtIndices:toIndex: method. * Frameworks/Cynthiune/NSIndexSetExtensions.m ([NSIndexSet -adjustedIndexAfterMove:index]): new method, moved from ../../Playlist.m:_adjustedIndexAfterMove, that returns the offset an index should be shifted after the move of the specified indexes occurs. * Tests/Cynthiune_framework/TestNSIndexSetExtensions.m ([TestNSIndexSetExtensions -testAdjustedIndexAfterMove]): added unit test for the new adjustedIndexAfterMove: method. * Playlist.m ([Playlist -validSongBefore:song]): new method, similar to songBefore: but that will only return the first valid song that is found. ([Playlist -validSongAfter:song]): new method, similar to songAfter: but that will only return the first valid song that is found. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testValidSongAfter]): added unit test for the validSongAfter: method. ([TestPlaylist -testValidSongBefore]): added unit test for the validSongBefore: method. 2005-02-17 Wolfgang Sourdeau * Playlist.m ([Playlist -moveSongsAtIndices:indicestoIndex:index]): new method that moves a set of songs (contiguous or not) to the index passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testMoveSongsAtIndicesToIndex]): added unit test for the moveSongsAtIndices:toIndex: method. 2005-02-16 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSArray -subarrayWithObjectsAtIndexes:indexSet]): new method that creates a subarray of the current array with the elements indexed in the indexset passed as parameter. * Tests/Cynthiune_framework/TestNSArrayExtensions.m ([TestNSArrayExtensions -testSubarrayWithObjectsAtIndexes]): added unit test for the subarrayWithObjectsAtIndexes method. * Tests/Cynthiune_framework/TestNSArrayExtensions.[hm]: new TestCase module for the NSArrayExtensions module in the Cynthiune framework. * Frameworks/Cynthiune/NSIndexSetExtensions.m ([NSMutableIndexSet -addIndexesInArray:array]): new method that add the indexes found in the NSNumber objects contained in the array passed as parameter. * Frameworks/Cynthiune/NSIndexSetExtensions.[hm]: new module containing extension methods to the NSIndexSet and NSMutableIndexSet classes. * Tests/Cynthiune_framework/TestNSIndexSetExtensions.m ([TestNSIndexSetExtensions -testAddIndexesInArray]): added unit test for the addIndexesInArray method. * Tests/Cynthiune_framework/TestNSIndexSetExtensions.[hm]: new TestCase module for the new NSIndexSetExtensions module in the Cynthiune framework. * SongInspectorController.m ([SongInspectorController -dealloc]): added this method to remove the observer from the NSNotificationCenter whenever the SongInspectorController instance is freed. Otherwise, the playlistChanged: notification can still be posted across different instances. * Player.m ([Player -dealloc]): added this method to remove the observer from the NSNotificationCenter whenever the Player instance is freed. Otherwise, the playlistChanged: notification can still be posted across different instances. * Playlist.m ([Playlist -dealloc]): added this method to remove the observer from the NSNotificationCenter whenever the Playlist instance is freed. Otherwise, the playlistChanged: notification can still be posted across different instances. ([Playlist -addSong:song]) ([Playlist -insertSong:songatIndex:index]) ([Playlist -deleteSong:song], [Playlist -deleteAllSongs]) ([Playlist -deleteSongsInArray:array]) ([Playlist -deleteInvalidSongs]): added code to post the playlistChanged: notification when the list has at least one song added or removed. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testAddSong]) ([TestPlaylist -testInsertSongAtIndex]) ([TestPlaylist -testDeleteSong]) ([TestPlaylist -testDeleteAllSongs]) ([TestPlaylist -testDeleteInvalidSongs]) ([TestPlaylist -testDeleteSongsInArray]): ensure the corresponding methods post a playlistChanged: notification when something has changed in the list. * Playlist.m ([Playlist -setDelegate:object]): new method to remember the object that will receive the playlistChanged: notification message. ([Playlist -insertSong:songatIndex:index]): new wrapper method around the insertObject:atIndex: method from NSMutableArray. ([Playlist -indexOfSong:song]): new wrapper method around the indexOfObject: method from NSArray. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testSetDelegate]): added unit test for the setDelegate method. ([TestPlaylist -testInsertSongAtIndex]): added unit test for the insertSongAtIndex method. ([TestPlaylist -testIndexOfSong]): added unit test for the indexOfSong method. 2005-02-15 Wolfgang Sourdeau * Playlist.m ([Playlist -deleteSongsInArray:array]): new method deleting the songs contained in an array passed as parameter. ([Playlist -deleteInvalidSongs]): new method that checks that all songs in the playlist have a status equal to "SongOK" and removes them otherwise. ([Playlist -songAtIndex:index]): returns the Song specified by the index passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testDeleteInvalidSongs]): added unit test for the deleteInvalidSongs method. ([TestPlaylist -testDeleteSongsInArray]): added unit test for the deleteSongsInArray: method. ([TestPlaylist -testSongAtIndex]): added unit test for the songAtIndex: method. 2005-02-14 Wolfgang Sourdeau * Tests/Cynthiune_app/MockSong.[hm]: new module containing a subclass of Song, designed to give access to ivars. * Tests/Cynthiune_app/MockPlaylist.[hm]: new module containing a subclass of Playlistm designed to give access to ivars. * Playlist.m ([Playlist -deleteAllSongs]): new method to remove all the songs from the array. ([Playlist -songAfter:song]): new method returning the song after the one passed as parameter. ([Playlist -songBefore:song]): new method returning the song before the one passed as parameter. ([Playlist -numberOfSongs]): returns the number of songs in the playlist. ([Playlist -duration]): return an NSNumber with the total duration of the playlist in seconds. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -setUp]): initialize 3 mock songs that can be used during the tests. ([TestPlaylist -testDeleteAllSongs]): added unit test for the deleteAllSongs method. ([TestPlaylist -testSongBefore]): added unit test for the songBefore: method. ([TestPlaylist -testSongAfter]): added unit test for the songAfter: method. ([TestPlaylist -testnumberOfSongs]): added unit test for the numberOfSongs method. ([TestPlaylist -testduration]): added unit test for the duration method. * Playlist.m ([Playlist -firstSong]): new firstSong method. ([Playlist -lastSong]): new lastSong method. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testFirstSong]): added unit test for the firstSong method. ([TestPlaylist -testLastSong]): added unit test for the lastSong method. * Playlist.m ([Playlist -addSong:song]): new addSong: method. ([Playlist -deleteSong:song]): new deleteSong: method. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testAddSong]): new unit test for the addSong method. ([TestPlaylist -testDeleteSong]): new unit test for the deleteSong method. * Tests/Cynthiune_app/TestPlaylist.[hm]: new unit testsuite for the Playlist object. * Tests/Cynthiune_app: new unit testsuite for the Cynthiune application files. 2005-02-12 Wolfgang Sourdeau * Tests/Cynthiune_framework/Testutils.m ([Testutils -init]): new init method, initializing the elements of the test that have only to be initialized once during the run of the testsuite. ([Testutils -dealloc]): new dealloc methods cleaning up the elements initialized in init. ([Testutils -testlogRect]): added unit test for the logRect function. ([Testutils -testinvertBytesInBuffer]): improved the test by checking the error messages output by NSLog during a wrong invocation of invertBytesInBuffer. ([Testutils -testconvert8to16]): added unit test for the convert8to16 function. ([Testutils -testmakeTitleFromFilename]): added unit test for the makeTitleFromFilename function. 2005-02-11 Wolfgang Sourdeau * CynthiuneController.h: the appWindow ivar was renamed to playerWindow. * CynthiuneController.m (initWMWindowTitleSize): new hacking function to determine the height of the title bar on X11. ([CynthiuneController -awakeFromNib]): set WindowsTitleSize and WindowsBorderSize here, depending on the value returned by GSHandlesWindowDecorations(). All of the above happens only on GNUstep. * SongInspectorController.m ([-awakeFromNib]): the level of the inspectorPanel is now set to "NSFloatingWindowLevel" instead of "NSModalPanelWindowLevel", since it looks more appropriate; * Frameworks/Cynthiune/utils.m (reverseComparisonResult): return NSOrderedSame if result == NSOrderedSame; * Tests/Cynthiune_framework/Testutils.m ([Testutils -testfileIsAReadableDirectory]): added unit test for the fileIsAReadableDirectory function. ([Testutils -testinvertBytesInBuffer]): added unit test for the invertBytesInBuffer function. ([Testutils -testreverseComparisonResult]): added unit test for the reverseComparisonResult function. 2005-02-10 Wolfgang Sourdeau * CynthiuneSongTitleCell.m: made subclass of CynthiuneTextCell. ([CynthiuneSongTitleCell -setPointerImage:pointerImage]): new accessor method to specify the pointer image. ([CynthiuneSongTitleCell -copyWithZone:theZone]): made conform to the NSCopying protocol. * Tests/Cynthiune_framework/Testutils.m: initial unit test module for the utils.m in the Cynthiune framework. * Frameworks/Cynthiune/NSArrayExtensions.[hm]: new module containing extension methods to the NSArray and NSMutableArray classes. * Frameworks/Cynthiune/utils.m (makeTitleFromFilename): new function to the determine the title of a song from its filename. * Bundles/Timidity/Timidity.m: new Timidity format bundle that accepts midi files and reads them through a piped timidity process. * CynthiuneTextCell.[hm]: new subclass of NSTextFieldCell that accepts a specific highlight color parameter. * PlaylistController.m ([PlaylistController -_updateStatusLabel]): new method that displays the amount of songs in the playlist, the total time of the playlist and the time of the selection if songs are selected. ([PlaylistController -_addSongsFromArray:songArraywithDir:aDirectory]) ([PlaylistController -removeSelectedSongs:sender]) ([PlaylistController -removeAllSongs:sender]) ([PlaylistController -cleanupPlaylist:sender]) ([PlaylistController -openSongFromNSApp:aSong]) ([PlaylistController -tableSelectionIsChanging:aNotification]): invoke [self _updateStatusLabel] whenever something has changed in the playlist. ([-_resetTimeDisplay:aTimer], [-_updateDisplayResetTimer]) ([-_updateSelectionTimeDisplay]): removed the methods which were part of the previous mechanism to display the time of the selection in the timerField. * PlaylistController.h: the "Player" protocol no longer exists. Removed references to it. Added a new "playlistStatusLabel" ivar. 2005-01-12 Wolfgang Sourdeau * CynthiunePauseButton.m ([-sendAction:action:object]): removed overriden method since the animation has to be started when the button state changes. * PlaylistController.h: removed the pauseAnimationTimer and animationStatus ivars. * PlaylistController.m ([-_animatePauseButton]) ([-_startPauseAnimation], [-_stopPauseAnimation]): removed methods since they were moved into the new CynthiunePauseButton class. ([PlaylistController -playerPlaying:aNotification]): no longer invoke "setImage:" on pauseButton. ([-playerPaused:aNotification]): no longer invoke _startPauseAnimation and set the state of pauseButton to YES. ([PlaylistController -playerResumed:aNotification]): no longer invoke _stopPauseAnimation and set the state of pauseButton to NO. ([PlaylistController -playerStopped:aNotification]): no longer invoke "setImage:" on pauseButton. * CynthiunePauseButton.[hm]: new subclass of NSButton that is acting like a toggle button but alternates between its image and alternateImage with a timer when activated. This gives a blinking effect to the active button. * CynthiuneSongTitleCell.[hm]: new class replacing CynthiuneSongPointerCell and with a different meaning in that it is a subclass of NSTextField. Large portions of this code taken or inspired from GNUMail by Ludovic Marcotte . * TableViewController.m ([TableViewController -init]): allocate and initialize the 4 NSColor * ivars. ([TableViewController -dealloc]): release them here. ([TableViewController -_addNeededColumns]): removed the previous CynthiuneSongPointerCell and replace the cell used for the song title with an instance of the new CynthiuneSongTitleCell class. ([TableViewController -_addNeededColumns]): changed the "playlist" and "duration" identifiers to "song" and "time" for consistency. ([TableViewController -awakeFromNib]): set the cell spacing to 0.0. ([-_postTableDoubleClickNotification]) ([-_postTableSelectionDidChangeNotification]) ([-_postTableSelectionIsChangingNotification]): removed those methods so avoid a useless method call. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): use the column identifiers rather than their number to identify them. ([TableViewController -tableView:tableViewwillDisplayCell:cellforTableColumn:tableColumnrow:rowIndex]): take the class change into account with regard to the "song" column and choose an appropriate background color depending on the row number and its selection status. * TableViewController.h: added 4 new NSColor * ivars that will be used to draw the background color of the data cells: evenRowsBgColor, oddRowsBgColor, evenSelectedRowsBgColor, oddSelectedRowsBgColor. 2005-01-11 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -init]): load the SongInspector nib from here. * PreferencesController.m ([PreferencesController -setBundleView:bundlePrefsView]): tells bundleViewBox to refresh itself. * PlaylistController.m ([PlaylistController -_startTimeTimer]): release the timer after it's invalidated. ([PlaylistController -_startPauseAnimation]): new method that creates an animation timer and sets it to call _animatePauseButton. ([PlaylistController -_stopPauseAnimation]): new method that invalidates and releases the animation timer for the pause button. ([PlaylistController -_animatePauseButton]): new method to animate the pause button by changing its image alternatively. ([PlaylistController -playerPlaying:aNotification]): no longer calls setActiveSong on tableViewController but tells it to show the song pointer. ([PlaylistController -playerStopped:aNotification]): tells tableViewController to hide the song pointer. * PlaylistController.h: new pauseAnimationTimer and animationStatus ivars. * PlaylistController.m ([PlaylistController -awakeFromNib]): no longer load the SongInspector nib from here. * TableViewController.m ([-setActiveSong:song]): removed method. ([-songIsActive:aSong]): removed method. ([TableViewController -setShowSongPointer:show]): new setter method for the new displaySongPointer ivar. ([TableViewController -_addNeededColumns]): prepend a new column identified as "pointer", having a CynthiuneSongPointerCell as its data cell. ([TableViewController -tableView:aTableViewwillDisplayCell:cellforTableColumn:aTableColumnrow:rowIndex]): new delegate method that tells the pointer cell in the pointer column to display the image if the row parameter is equal to the number of the song being played and if the player is active. * TableViewController.h: new displaySongPointer BOOL ivar. * TableViewController.m ([TableViewController -setShowSongPointer:show]): setter for the new songPointer ivar. * TableViewController.h: added songPointer BOOL ivar. * CynthiuneInfo.plist: added file types handled by the WindowMedia and the Musepack format bundles. * CynthiuneController.m (GSHandlesWindowDecorations): new function which indicates, under GNUstep, whether GNUstep or the window manager handles the window decoration. This is needed to determine the correct position of the windows. ([CynthiuneController -init]): initialize WindowsTitleSize and WindowsBorderSize depending on the value returned by GSHandlesWindowDecorations. The values are valid for WindowMaker. ([CynthiuneController -_computeDeltaYOfFrame:mainFramewithFrame:aFrame]): compute the values by taking the WindowsTitleSize and WindowsBorderSize into account. ([CynthiuneController -windowWillClose:aNotification]) ([CynthiuneController -_initWindowsPosition]): the windows identifiers are changed to "PlayerWindow" and "PlaylistWindow" in the preferences. * Frameworks/Cynthiune/utils.m (logRect): print a label associated with the corresponding value. * Player.m ([Player -stop]): send a PlayerResumedNotification when paused to tell the observer we are no longer paused. * CynthiuneSongPointerCell.[mh]: new NSCell subclass to indicate the song being played. 2005-01-04 Wolfgang Sourdeau * PlaylistController.m ([-toggleSongInspector:sender]): new method replacing [-showSongInspector:]. ([PlaylistController -songInspectorWasShown:aNotification]): set state of songInspectorMenuItem to off. * SongInspectorController.m ([SongInspectorController -setDelegate:anObject]): added SongInspectorWasShownNotification and replaced SongInspectorWasClosedNotification with SongInspectorWasHiddenNotification. ([SongInspectorController -toggleDisplay]): new method replacing hide and show. ([SongInspectorController -_updateFields]): update filenameField with the full filename of the song being inspected. * SongInspectorController.h: added filenameField ivar. * Song.m ([Song -year]): new stub method that shall return the year of the song in the future. * SongInspectorController.m ([SongInspectorController -awakeFromNib]): set self as delegate for inspectorPanel. ([SongInspectorController -setDelegate:anObject]): new method. ([SongInspectorController -delegate]): new method. ([SongInspectorController -setSong:newSong]): update the song ivar and the inspector fields only if newSong != song. ([SongInspectorController -show]): new method to show the inspector panel. ([SongInspectorController -hide]): new method to hide the inspector panel. ([SongInspectorController -windowWillClose:aNotif]): delegate method that sends a notification to our delegate when the panel is closing. * PlaylistController.h: added songInspectorMenuItem ivar. * PlaylistController.m ([PlaylistController -init]): set self as delegate for songInspectorController. ([PlaylistController -awakeFromNib]): set state of songInspectorMenuItem to off. ([PlaylistController -showSongInspector:sender]): new action method requesting the songInspectorController to show the inspector window and where the state of songInspectorMenuItem is set to on. ([PlaylistController -songInspectorWasClosed:aNotification]): new delegate method received when the song inspector is closing, where we set the state of songInspectorMenuItem back to off. * SongInspectorController.[h,m]: new class implementing the controller API for the new Song inspector. It currently take cares of updating the different fields but: - it only supports one song at a time; - it can't save modifications yet. * Frameworks/Cynthiune/utils.m (findStringStart, findStringEnd) (trimmedString): removed functions since the NSString API has the stringByTrimmingSpaces method. * Frameworks/Cynthiune/Output.h: removed the outputBytes method from the Output protocol. * Bundles/Esound/OSS.h: removed the bytes ivar. * Bundles/Esound/OSS.m ([-outputBytes]): removed method since it's no longer required in the Output protocol. * Bundles/Esound/Esound.h: removed the bytes ivar. * Bundles/Esound/Esound.m ([-outputBytes]): removed method since it's no longer required in the Output protocol. 2005-01-01 Wolfgang Sourdeau * Bundles/OutputSkeleton/: new bundle directory containing the skeleton for an output bundle. 2004-12-31 Wolfgang Sourdeau * Song.m ([Song -compareByPlaylistRepresentation:aSong]): invokes numericallyCompare: on the trackNumber NSString rather than calling compareStringsNumerically(). * Frameworks/Cynthiune/NSStringExtensions.m ([NSString -numericallyCompare:aString]): new category method replacing compareStringsNumerically() in utils.m. ([NSString]): new class module containing extensions to NSString. * Frameworks/Cynthiune/utils.m (findStringEnd): end may not be less than the beginning of the string. (trimmedString): end being < start means the trimmed string will be of length 0. This solves a bug that was causing the new allocation to fail because of an excessive request of memory and hence a segfault during strncpy. (compareStringsNumerically): removed function. 2004-12-30 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -playerPlaying:aNotification]): invokes setActiveSong: instead of selectRow: on tableViewController. This initiates our change in the way we mark the song that is currently playing. * TableViewController.m ([TableViewController -setActiveSong:song]): new method replacing selectRow:, instead of an integer, it takes a Song argument. This name change refocusses on the correct purpose of this method, which is to mark the current song as being played in the playlist view. ([TableViewController -songIsActive:aSong]): new name for songIsSelected:. Renamed for the reason mentionned above. ([TableViewController -updateView]): invokes setActiveSong: instead of selectRow:. * Playlist.m ([Playlist -selectSong:aSong]): new method similar to selectSongNumber but with a Song parameter. ([Playlist -currentSong]): revived method. * Bundles/Mod/Mod.m ([Mod +initialize]): added MODPLUG_ENABLE_OVERSAMPLING to the modplug flags. 2004-12-28 Wolfgang Sourdeau * Bundles/MP3/MP3.m (returnTag): new macro that invokes the relevant taglib function. * utils.m (trimmedString): new utility function that returns a new string equal to the one passed as parameter but where we make sure any starting and ending spaces are removed. * Player.m ([Player -play]): invoke _playLoopIteration after sending the PlayerPlayingNotification so that we make sure the player is in a consistent state whenever something bad happens and triggers another notification. 2004-12-15 Wolfgang Sourdeau * Bundles/WindowsMedia/WindowsMedia.m ([WindowsMedia +canTestFileHeaders]): we now declare that we are able to test our file headers and content correctly. ([WindowsMedia +streamTestOpen:fileName]): invoke the functions in our avifile bindings to test the validity of the file passed as parameter. * Bundles/WindowsMedia/CWMFile.cpp (_testASFHeaders): new function to test if a file has a Microsoft ASF header. (WMFileOpen): now invoke _testASFHeaders and test its result before opening the file. (WMFileClose): now invoke delete on the passed WMFile parameter. (WMFileAudioStreamCount): new wrapper function around IReadFile::AudioStreamCount(). 2004-12-14 Wolfgang Sourdeau * Bundles/Musepack/Musepack.m (ShiftSigned): made inline. (CopyBuffer): idem. ([-readNextChunk:bufferwithSize:bufferSize]): copied code from the WindowsMedia format bundle to make sure the output buffer will never be overflood, through the use of an internal intermediary buffer. * Bundles/MP3/MP3.h: removed "opened" ivar. * Bundles/MP3/MP3.m ([MP -_resetIVars]): initialize all ivars here so that the same code is shared in init and streamClose. General: replaced dependency on libid3tag with one on taglib, which is much better and simpler. * Player.m ([Player -chunkFinishedPlaying]): invoke _playLoopIteration only when all requests are completed. * Bundles/Musepack/*.cpp: C++ binding code for the libmusepack library. * Bundles/Musepack/Musepack.[mh]: new format class bringing the ability for Cynthiune to read Musepack (MPC) files. 2004-12-13 Wolfgang Sourdeau * Bundles/WindowsMedia/CWMFile.[h,cpp]: new binding modules provided to glue the C++ AviFile API and the WindowsMedia ObjC code. * Bundles/WindowsMedia/WindowsMedia.[h,m]: new format class bringing the ability for Cynthiune to read ASF and WMA files. 2004-12-12 Wolfgang Sourdeau * Bundles/FormatSkeleton/: new bundle directory containing the skeleton for a format bundle. 2004-12-11 Wolfgang Sourdeau * Player.m ([Player -_playLoopIteration]): increment requests when a chunk is sent to the output bundle. ([Player -_playLoopIteration]): post a songended notification only when the amound of requests is 0. ([Player -chunkFinishedPlaying]): decrement the amount of requests. * Player.h: added a new "requests" ivar. * Bundles/Esound/Esound.h: removed unused "currentChunk" ivar. * Bundles/MP3/MP3.m (seekOffset): returns -1 if the end of file is found before any non-zero character could be found. ([MP +streamTestOpen:fileName]): returns NO if the result of seekOffset is -1. 2004-11-29 Wolfgang Sourdeau * PlaylistTableView.m ([PlaylistTableView -draggingSourceOperationMaskForLocal:isLocal]): new overriden method to permit DnD activity between Cynthiune and other applications. 2004-11-19 Wolfgang Sourdeau * GNUmakefile: release 0.9.4. * Song.m ([Song -_fileWasModified]): set status to SongFileNotFound if attributes is nil. * MailService.m ([MailService -composeBugReport]): instead of using the DO mechanism of OpenStep, use the NSURL API and the "mailto:" protocol. 2004-11-17 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -pausePlayer:sender]) ([PlaylistController -previousSong:sender], currentSongNumber) ([PlaylistController -changeTimeDisplay:sender]): player is always instantiated now and no longer can be "nil". * MailService.m ([MailService +instance]): mailService declared as static. Don't recreate if already exists. * MailService.[hm]: new class to deal with the local OS's mail application in order to compose a bug report about Cynthiune. * PlaylistController.m ([PlaylistController -init]): set self as a delegate of the playlist. ([PlaylistController -toggleMute:sender]): the state change is reflected on both the Player/Mode/Mute menu item as well as the mute toggle button. ([PlaylistController -toggleShuffle:sender]): the state change is reflected on both the Player/Mode/Shuffle menu item as well as the shuffle toggle button. ([PlaylistController -toggleRepeat:sender]): the state change is reflected on both the Player/Mode/Repeat menu item as well as the repeat toggle button. ([PlaylistController -addSongs:sender], [PlaylistController -addSongsFolders:sender]): new action methods, triggered by the application menu. ([PlaylistController -addSong:sender]): modified to call the above action methods. ([PlaylistController -removeSelectedSongs:sender], [PlaylistController -removeAllSongs:sender], [PlaylistController -cleanupPlaylist:sender]): new action methods, triggered by the application menu. ([PlaylistController -removeSong:sender]): modified to call the above action methods. ([PlaylistController -saveList:sender]) ([PlaylistController -saveListAs:sender]): new action methods, triggered by the application menu. ([PlaylistController -saveListFromPopupMenu:sender]): new method derived of the old "saveList" method, modified to call the above action methods. ([PlaylistController -playlistChanged:aNotification]): new delegate method that saves the playlist states and update the Player. * Playlist.m: added a new notification: "PlaylistChangedNotification". ([Playlist -setDelegate:anObject], [Playlist -delegate]): new methods. 2004-11-16 Wolfgang Sourdeau * PlayerPreference.[hm]: new "PlayerPreference" class, designed to handle preferences for the Player. * PlayerController.[hm]: new "PlayerController" class, designed to hold the controlling code specific to the Player initially put in PlaylistController. * CynthiuneController.m (localizeMenu): new static function implementing a new mechanism for translation menu labels. Instead of replacing them with static entries, they are scanned and replaced with their translation. This makes the code lighter and removes the constraint of keeping up with the different where to change the localized strings whenever it happens. ([-_initMenuLabels]), ([-_setStrings:stringsforSubmenu:menuwithOffset:offset]), ([-_setStrings:stringsforSubmenu:menu]), ([-_setStrings:stringsforMenu:menu]: removed methods. 2004-11-15 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:tvwriteRows:rowstoPasteboard:pboard]): removed #ifdef and only declare elements of type CynthiunePlaylistDragType to the pasteboard. The rest will be provided through pasteboard:ProvideDataForType:. ([TableViewController -pasteboard:pboardprovideDataForType:type]): implemented this delegate method from the NSPasteBoard API to provide elements of type NSFilenamesPboardType when requested. ([TableViewController -tableView:tvvalidateDrop:infoproposedRow:rowproposedDropOperation:dropOperation]): check the dragging source before requesting elements of a specific type to the pasteboard. This way, we make sure we control the right type of letting the underneath API to decide for us. This is the right way to do things and solves a couple of problems with our previous implementation. 2004-11-05 Wolfgang Sourdeau * Bundles/OSS/OSSPreference.m ([OSSPreference -_initDefaults]): use a BOOL "defaultsInitted" to check whether this method was executed. ([OSSPreference -_init]): the defaultsInited ivar was removed. ([OSSPreference -awakeFromNib]), ([OSSPreference -dspDevice]): call _initDefaults. * Bundles/Esound/EsoundPreference.m ([EsoundPreference -_initDefaults]): use a BOOL "defaultsInitted" to check whether this method was executed. ([EsoundPreference -_init]): the defaultsInited ivar was removed. ([EsoundPreference -awakeFromNib]), ([EsoundPreference -socketIsTCP]), ([EsoundPreference -tcpHostConnectString]): call _initDefaults. * Player.m ([Player -_ensureOutput]): when the output bundle has changed, we need to set rate an channels to 0 and call _reInitOutputIfNeeded so that we make sure the new output is initialized correctly. 2004-10-01 Wolfgang Sourdeau * Song.m ([Song -status]): call _readInfos, so that whenever this method is called, we make sure file operations occur that initialize the status correctly. * GeneralPreference.m ([GeneralPreference -init]): call _initDefaults to initialize the managed values with correct defaults so that they are accessible all the time. 2004-09-27 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_initPlaylistPopups]): new "Cleanup" entry in the "Remove" menu. ([PlaylistController -removeSong:sender]): if the selected menu is "Cleanup", send "removeBadEntries" to the playlist. * Playlist.m ([Playlist -removeArrayOfSongs:anArray]): cast [_regularList count] to signed int so that currentSongNumber can be -1 and let the condition be computed correctly. ([Playlist -removeBadEntries]): new method to discover and remove songs from which the "status" message does not return SongOK. 2004-09-22 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -validRequestorForSendType:returnType:]): don't check the returnType. ([PlaylistController -writeSelectionToPasteboard:pboardtypes:types]): don't check that tableViewController has any selection since it's done within validRequestorForSendType:returnType:. ([-_extensionIsAcceptable:fileExtension]): removed method (see below). ([PlaylistController -panel:sendershouldShowFilename:fileName]): reduce the use of variables. ([PlaylistController -_oPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. ([PlaylistController -_dirOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. ([PlaylistController -_startOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. ([PlaylistController -_ejectOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. * FormatTester.m ([FormatTester -extensionIsSupported:extension]): new method derived from PlaylistController:-[_extensionIsAcceptable:] and designed to replace it. * CynthiuneController.m ([-_initServices]): removed method. ([CynthiuneController +initialize]): register NSFilenamesPboardType as a service menu sendtype. ([-validRequestorForSendType:sendTypereturnType:returnType]): forward the invocation to playlistController. * TableViewController.m ([TableViewController -getFirstSelectedRow]): new name for "getSelectedRow". Now returns an int instead of an unsigned int so that -1 can be given when no song is selected. Check that the playlist actually contain any song since -[NSTableView selectedRow] does not void its selection when the list is emptied... ([TableViewController -getFirstSelectedSong]): new name for "selectedSong". ([TableViewController -getSelectedSongs]): new name for "getSelection". Ensure that the playlist is populated, otherwise returns an empty array. ([TableViewController -getSelectedSongsAsFilenames]): new name for "getSelectionAsFilenames". Ensure that the playlist is populated, otherwise returns an empty array. ([TableViewController -songIsSelected:aSong]): new name for "isSongInSelection:". 2004-09-21 Wolfgang Sourdeau * Player.m ([Player -setStream:newStream]): when a new nil stream is set post the "PlayerSongEndedNotification" so that the PlaylistController knows the song will not be read. This is not very clean and needs to be rectified lated. * Song.m ([Song -encodeWithCoder:encoder]): call _readInfos to make sure we save initialized data. 2004-09-20 Wolfgang Sourdeau * Bundles/MP3/MP3.m (decodeInputBuffer): function semantics changed to manage only buffer decoding and returning a status code about the decoded stream chunk. (calcInputRemain): the third argument was a pointer to an int we had to modify from inside this function. Now we return that value instead. ([MP -_readStreamMetaData]): completed method to use decodeInputBuffer, the same way readNextChunk:withSize: does so that we can have a correct file parsing for metadata. 2004-09-16 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([Esound -prepareDeviceWithChannels:numberOfChannelsandRate:sampleRate]): reinitialize the output socket if open. That is the only way to modify the stream settings with ESD... * TableViewController.m ([TableViewController -doubleClick:sender]): take the double-click into account only if a real row (> -1) was clicked, otherwise it might just be the column header and we don't want the player to start in that case. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): take the column number into account instead of its identifier since, on OS X, this method is called before the id's are available and it generates a warning. ([TableViewController -awakeFromNib]): disallow column selection, hoping the GNUstep team will fix NSTableView one day... * Player.m ([Player -_reInitOutputIfNeeded]): if [ prepareDeviceWithChannels:andRate:] returns 'NO', the new values are not retained. 2004-09-15 Wolfgang Sourdeau * GNUmakefile: release 0.9.3a. * Bundles/MacOSX/MacOSXPlayer.m, Bundles/MacOSX/MacOSXPlayer.h: converted to the new Output protocol. This version is far cleaner than what used to be. * Player.m ([Player -stop]): when stopped, awaitingNewStream should be set to NO. 2004-09-13 Wolfgang Sourdeau * Bundles/OSS/OSS.m ([OSS -prepareDeviceWithChannels:numberOfChannelsandRate:sampleRate]): directly update the device if open. ([OSS -closeDevice]): set the "dsp" ivar to nil when released, so that we can know whether it is open or not. * Player.m ([Player -_ensureOutput]): set rate and channels to 0 when another Output bundle is instantiated to that we make sure its device gets correctly initialized. ([Player -play]): start the play loop only if calling "openDevice" on the output instance returns "YES", otherwise ignore the request. Something else should be done, like displaying an error message or something like that but we're not there yet. * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): typo. * Bundles/OSS/OSS.m: updated to conform the new Output protocol by mixing code from the ancien OSS and the new Esound bundle. 2004-09-11 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -playerStopped:aNotification]): set currentPlayerSong to nil. * Player.m ([Player -chunkFinishedPlaying]): call _playLoopIteration if not paused AND if not stopped. * PlaylistController.m ([PlaylistController -_updatePlayer:force]): send a "setStream" message instead of "setSong" to the Player object, by previously calling "openStreamForSong" on the relevant Song. Besides, since the "song" message is no longer available, we use the new "currentPlayerSong" variable to keep track of what is currently playing. * Song.m ([Song -_refreshSongInfosFromStream:stream]): channels and rate are no longer read from the streams. ([-channels]): removed method. ([-rate]): removed method. ([Song -initWithCoder:decoder]): "channels" and "rate" keys are no longer decoded from the NSKeyedArchive. * Player.m ([Player -_playLoopIteration]): new name for "_sendChunkToOutput". ([Player -play]): simplified a lot since we no longer play "Song" objects but objects conforming to the "Format" protocol (streams). ([Player -setStream:newStream]): simplified a lot the the same reason as mentionned above. Besides, restart the play loop if the new ivar "awaitingNewStream" is set. ([Player -_playLoopIteration]): set "awaitingNewStream" to yes when the song is finished playing so that setStream can restart the loop when a "SongFinishedPlayingNotification" was sent to the Player controller. * Bundles/Esound/Esound.m ([-_writeCompleteNotification:aNotification]): no longer emit a notification but directly sends the "chunkFinishedPlaying" message to the parent player (following the recent change in the "Output" protocol). * Output.h: "setDelegate:" and "delegate" removed. Added "setParentPlayer:" instead. Also, modified the OutputDelegate informal protocol to remove the NSNotification argument to the "chunkFinishedPlaying" method. * Bundles/XMMSInput/XMMSInput.m ([XMMSInput -readDuration]): return an unsigned int instead of a NSNumber. * Player.m ([Player -_ensureOutput]): separate the conditions in two level-1 blocks. Drop output if it's class is different than the one selected in the preferences and set it to nil. Afterward, output is tested against nil and generated if needed. Besides, the output bundle is initialized with the rate and channels if needed. ([Player -setSong:aSong]): send the "prepareDeviceWithChannels:andRate:" message only if output is non-nil and the current song's channels and rate values are not those accounted for output. 2004-09-10 Wolfgang Sourdeau * Player.m ([Player -setSong:aSong]): simplified a lot by removing the code used when playing the song since it's the role of the output bundles to determine whether the device has to be reopened or not. ([Player -play]): the "prepareDeviceWithChannels:andRate:" message is called from the "setSong:" method so we don't need to call it from here anymore. ([Player -_ensureOutput]): * PlaylistController.m ([PlaylistController -_setPlayerSong:]): removed method. ([PlaylistController -_updatePlayer:force]): instead of calling "_setPlayerSong", set the Song directly. If the player is paused, "unpause" it. Reinit the progress slider through the new "_initProgressSliderFromSong:" method. ([PlaylistController -_initProgressSliderFromSong:aSong]): new method to initialize the ProgressSlider depending on the Song length and "seekability". * FormatTester.m ([FormatTester +formatTester]), GeneralPreference.m ([GeneralPreference +instance]), PreferencesController.m ([PreferencesController +preferencesController]): initialize the singleton with the "new" message instead of "alloc" and "init". 2004-09-09 Wolfgang Sourdeau * Output.h: new interface describing the Output protocol, which must now be implemented by the Output bundles in place of the old Player protocol. * Bundles/Esound/Esound.m, Bundles/Esound/Esound.h: made conform the the "Output" protocol, described in Output.h. * Player.h: the "isRunning" method was renamed to "playing". * PlaylistController.m ([PlaylistController -init]): player is now instantiated here, since it is no longer a variable object. ([-_initializePlayer]): this method was removed. * Player.m, Player.h: Player is now a real object with a centralized handling of the streams and the output of their content through the output bundles. This refactoring cleans up the code and reduces the amount of code needed to write an output bundle, which now must conform to the "Output" protocol, instead of "Player". * Format.h: the argument to seek: is called "seconds" now. * Playlist.m ([Playlist -saveToDefaults]): use NSKeyedArchiver to save the playlist. ([Playlist -loadFromDefaults]): use NSKeyedUnarchiver to load the default playlist. This way their metadata no longer need to be read through the song format bundles. This speeds up the loading of Cynthiune for large playlists. * Song.m ([Song -encodeWithCoder:encoder]) ([Song -initWithCoder:decoder]): implementation of the NSCoding protocol for archiving song data. 2004-08-31 Wolfgang Sourdeau * GeneralPreference.m ([GeneralPreference -_initDefaults]): the playlistFormat variable was querying the OutputBundle preference value instead of PlaylistFormat. ([GeneralPreference -preferredOutputClass]): new name for preferredPlayerClass. 2004-08-19 Wolfgang Sourdeau * Song.m ([Song -_refreshSongInfosFromStream:stream]): the Format protocol was changed back. readDuration returns an unsigned int again instead of an NSNumber, so we convert the unsigned int explicitly here now. 2004-08-16 Wolfgang Sourdeau * Bundles/XMMSInput/XMMSInput.m: first attempt at providing an XMMS plugin wrapper bundle. 2004-08-14 Wolfgang Sourdeau * Bundles/FLAC/FLAC.m (writeCallback): moved code of _refillBufferWithData:withSize: here to avoid a useless method call. * Song.m ([Song -_fileWasModified]): test whether a file was modified between two invocations of this method, by checking its date and filesize. ([Song -_readInfos]): use the private method _fileWasModified instead of _infosRead to detect whether to update a Song's metainfos. ([Song -init]): initialize status ivar to SongFileNotFound. ([Song -status]): new accessor. ([Song -_refreshSongInfosFromStream:stream]): new method called when everything else is fine within _readInfos. ([-_readInfos]): only refreshed the Song's status. No error message is passed here. ([-setFilename:aFilename]): don't test the Song format here. ([Song -playlistRepresentation]): compose a correct playlist representation title, depending on the status. 2004-08-12 Wolfgang Sourdeau * Bundles/FLAC/FLAC.m: new output bundle for decoding Free Lossless Audio Codec encoded sound files. 2004-07-27 Wolfgang Sourdeau * CynthiuneController.[mh]: MainController class renamed to CynthiuneController. * CynthiunePopUpButton.m ([CynthiunePopUpButton -addItemWithTitle:aTitle]): removed _updateEnabled method to avoid useless code and a useless method call. * Bundles/Esound/Esound.h: BUF_SIZE set to 176400. * Bundles/OSS/OSS.h: BUF_SIZE set to 176400 (1 second @ 44kHz/16 b/stereo). * PlaylistFile.m ([PlaylistFile _M3UContentWithArray:]): the format string should contain "%@" instead of "%d" for the song durations since they are now NSNumber's. 2004-07-14 Wolfgang Sourdeau * Song.m ([Song -playlistRepresentation]): removed useless "format" variable. 2004-07-13 Wolfgang Sourdeau * Song.m ([Song -duration]): invoke _readInfos before returning the value. ([Song -openStreamForSong]): make stream autoreleased only if it opens correctly, otherwise release it directly. * Bundles/Ogg/Ogg.m ([Ogg +streamTestOpen:fileName]): don't report when the returned NSFileHandle is nil since it could happen with any missing file. * utils.m (strndup): made non-static (for MacOS X only). * Player.m ([-initWithSong:aSong]): removed useless method. ([+playerWithSong:aSong]): removed useless method. 2004-07-07 Wolfgang Sourdeau * utils.m (compareStringsNumerically): new function to compare numerical strings waiting for the GNUstep implementation of the NSNumericSearch option in NSString. * TableViewController.m ([TableViewController +initialize]): nc is now a static global variable instead of an ivar. It is initialized here. * Song.m ([Song -compareByPlaylistRepresentation:aSong]): trackNumber is an NSString, so we cannot really use compare: on it. Instead we use our new utils function "compareStringsNumerically". ([Song -reverseCompareByDuration:aSong]): directly calls the target method instead of passing through our ascending comparison method. * PlaylistController.m ([-stopPlayer:sender]): the player ivar is released in the playerStopped: notification method, which is invoked after "stop" was sent to the player, so there is no need to do it here. ([PlaylistController -playerSongEnded:aNotification]): same thing here. * Player.m ([Player +playerWithSong:aSong]): the "song" variable really should be named "player"... * Bundles/Esound/EsoundPreference.m: class EsoundPreference split from Esound.m. 2004-07-06 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): we call the NSNumber method timeStringValue on duration instead of the old utility timeStringFromSeconds(). * Playlistcontroller.m ([PlaylistController -_updateSelectionTimeDisplay]), ([PlaylistController -playerPlaying:aNotification]): duration is now an NSNumber *, code modified accordingly. * Song.m ([Song -init]): the duration ivar is now a NSNumber. ([Song -compareByPlaylistRepresentation:aSong]): the tracknumber are compared directly using the compare: method provided by the NSNumber class. ([Song -reverseCompareByPlaylistRepresentation:aSong]) ([-reverseCompareByDuration:aSong]): we now use the new reverseComparisonResult() function from utils.h instead of providing our code. * InfoDisplayController.m ([-hideTextFields], [-hideTextFields]): code from this methods removed and directly included within the hide and show methods. ([InfoDisplayController -_setTimerFromUnsignedInt:timer]): new private method to update the timer field with the integer passed as parameter. * CynthiuneFileHandle.m: new child class of NSFileHandle for handling asynchronous I/O on file descriptors. * NSNumberExtensions.m: new module containing extension method to the NSNumber class. ([NSNumber -timeStringValue]): new implementation of old utils.m's timeStringFromSeconds. Removed test on (seconds != 0) since the result will be valid anyway. * utils.m (timeStringFromSeconds): moved to new NSNumberExtensions.m module. (reverseComparisonResult): new function for sorting methods. * Bundles/AudioFile/AudioFile.m ([AudioFile -readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Bundles/Ogg/Ogg.m ([Ogg -readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Bundles/Mod/Mod.m ([-readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Bundles/MP3/MP3.m (seekOffset, testRiffHeader, testMP3Header) (calcInputRemain): changed methods with those names to static inline functions. iRemain passed as pointer so that we can modify it directly. (fillPCMBuffer): removed intermediary variables to make code shorter. ([-readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Format.h: readDuration now returns an NSNumber *. 2004-07-04 Wolfgang Sourdeau * Bundles/MP3/MP3.m (_decodeInputBuffer): new function split from readNextChunk:withSize: to make code cleaner and shorter. Its exact purpose is to decode the data fed to it as parameter and return an the size of the decoded data or an appropriate return code if needed. 2004-06-29 Wolfgang Sourdeau * Bundles/MP3/MP3.m (_translateBufferToPCM, _fillPCMBuffer) (_audioLinearDither): new static functions that replace the methods with the same name, this makes the bundle use a bit less of CPU time since no message resolution is done. * Song.m ([Song -filename]): original purpose put in new method "shortFilename", now replaces "fullFilename". 2004-06-28 Wolfgang Sourdeau * Playlist.m ([Playlist -sortByPlaylistRepresentation:descending]): changed the signature of this method to accept a BOOL parameter indicating whether we want the resulting order to be descending or not. It selects the appropriate comparison method selector accordingly. ([Playlist -sortByDuration:descending]): same thing here. * Song.m ([Song -reverseCompareByPlaylistRepresentation:aSong]): new method that calls compareByPlaylistRepresentation: and reverse the result. ([Song -reverseCompareByDuration:aSong]): same thing here for compareByDuration:. * TableViewController.m ([TableViewController -init]): added two ivars, sortedInPlaylist and sortedInDuration so that we know when to sort the playlist in ascending or descending order. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): take sortedInPlaylist and sortedInDuration into account when sorting. One should be reversed and the other should be set to NO. ([TableViewController -_acceptDroppedFiles:aFilesListatRow:row]): set both to NO when a song file was dropped. ([TableViewController -_acceptDroppedRows:aRowsListatRow:row]): set both to NO when a song was dragged from within the list and dropped. * Bundles/OSS/OSSPreference.m: class OSSPreference split from OSS.m. 2004-06-22 Wolfgang Sourdeau * Bundles/OSS/OSS.m: entirely rewritten (except for OSSPreferences) to use the asynchronous interface of NSFileHandle instead of threads. * PlaylistController.m ([PlaylistController -_startTimeTimer]): the timer should run in the NSEventTrackingRunLoop too. * Player.h: renamed "startPlayLoop" and "StopPlayLoop" to "play" and "stop" respectively. Made the Player protocol slightly lighter by removing the initWithSong: and audioInit: method prototypes. * Player.m ([Player +load]): initialize the global variable nc here. ([Player -initWithSong:aSong]): new initializer. ([Player +playerWithSong:aSong]): new constructor based on the above. * Bundles/MP3/MP3.m ([MP -readNextChunk:bufferwithSize:bufferSize]): returns -1 when an error occurs. * CynthiuneWindow.m: new subclass of NSWindow designed to let the user whether he wants textured windows or not on MacOS X. * FormatTester.m ([FormatTester -formatClassForFile:file]): Class values can't be "nil" but "NULL". ([FormatTester -formatClassAtIndex:formatNumber]): same thing. * GeneralPreference.m ([GeneralPreference -windowsAreTextured]): new method to test whether windows should be displayed as regular or textured windows. ([GeneralPreference -_initDefaults]): initialized the new toggle related to the textured windows. ([GeneralPreference -texturedWindowsChanged:sender]): new callback method. 2004-06-18 Wolfgang Sourdeau * GeneralPreference.m ([GeneralPreference -_noDefaultOutputModuleAlert]): new method to display an alert panel when no output module is configured. ([GeneralPreference -preferredPlayerClass]): calls the above when playerClass == nil. * PreferencesController.m ([PreferencesController -loadPreferencesWindowAndSelectMenuEntry:entry]): new method. * CynthiunePopUpButton.m ([CynthiunePopUpButton -_updateEnabled]): new class derived from NSPopUpButton, that just test whether there is more than one item in the menu to enable its popup button. 2004-06-17 Wolfgang Sourdeau * Song.m ([Song -isSeekable]): cache the result in an ivar by calling _readInfos. ([Song -_readInfos]): (new name for -readInfos), test if a stream is seekable to avoid multiple openings. ([Song -setFilename:aFilename]): cache the Format class from here to avoid multiple openings and testings, this slightly improves the opening of long playlists. * Player.m: class PlayerBase renamed to Player. * FormatTester.m: -fileType renamed to -formatNumberForFile, -classForFile: renamed to formatClassForFile:, and -classForFileType: renamed to formatClassAtIndex. ([FormatTester -formatClass:formatClassacceptsFileExtension:extension]): new method. ([FormatTester -formatClassForFileExtension:extension]): new method. * Format.h: added a new protocol method "canTestFileHeaders" returning YES if the format bundle has a way of testing the file type by checking its headers. Otherwise FormatTester determines the right bundle to use by looking at its extension. * Bundles/Mod/Mod.m ([Mod +streamTestOpen:fileName]): don't test file loading since the only way we can do this is by loading entire files in memory and by relying on the result returned by ModPlug_Load, which seems to not be always accurate. * Bundles/Mod/Mod.m ([Mod -init]): removed. ([Mod +load]): initialize the library settings just after the Mod bundle is loaded in memory. The "settings" ivar is replaced with a local variable. 2004-06-15 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -initializeWidgets]): new method that take cares of initializing the widgets before they get displayed; 2004-06-11 Wolfgang Sourdeau * Bundles/AudioFile/AudioFile.m ([AudioFile -_getAudioFileIDOfType:idTypewithMax:max]): new private method to retrieve meta data tags from the input file. ([-readTitle]): returns the title of the song if found. ([AudioFile -readArtist]): returns the name of the artist of the song if found. * PreferencesController.m ([PreferencesController -loadPreferencesWindow]): test whether the prefs window is visible before displaying it so that many invocations of loadPreferencesWindow will only display the window once. * utils.m (strndup): the algorithm was wrong since it was copying one more char than requested when len was < the length of the string. 2004-06-09 Wolfgang Sourdeau * Song.m ([Song -readInfos]): determine the title from the filename if not present. 2004-06-08 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -panel:sendershouldShowFilename:fileName]): new delegate method to test the filenames case-insensitively; * Song.m ([Song -playlistRepresentation]): use a NSMutableString instead of an NSString. 2004-06-07 Wolfgang Sourdeau * *.m Bundles/*/*.m: renamed _L macro to LOCALIZED since MacOS X already defines such a name in its system libraries. * utils.m (strndup): added our own version of strndup for MacOS X which seems to be lacking it. (NSStandardLibraryPaths): idem. 2004-06-06 Wolfgang Sourdeau * Bundles/AudioFile/AudioFile.m: new module to read uncompressed sound files. ([AudioFile +load]): disable error string output by setting the AF error handler to NULL. * utils.m (convert8to16): new function designed to convert 8 bit sample frames to 16 bit ones. 2004-06-01 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -startPlayer:sender]): startPlaying renamed. ([PlaylistController -stopPlayer:sender]): stopPlaying renamed. * TableViewController.m ([TableViewController -_acceptFilesInPasteboard:pboard]): test whether a dragged filename is a directory before accepting it. * utils.m (fileIsAcceptable): new function, taken from a method with the same name in PlaylistController.m; (fileIsAReadableDirectory): new function to test whether a filename is both readable and a directory; * Bundles/Ogg/Ogg.m ([Ogg -streamOpen:fileName]): if no error is caught, the NSFileHandle should be retained to avoid a crash in the close callback. 2004-05-13 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([Esound -threadWillExit]): release lock only when no thread is active. * Bundles/OSS/OSS.m ([OSS -stopPlayLoop]): release the fileHandle to avoid leaks. ([OSS -threadWillExit]): release lock only when no thread is active. 2004-05-08 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([Esound -threadWillExit]): * Bundles/OSS/OSS.m ([OSS -threadWillExit]): release the lock to avoid a leak. 2004-05-01 Wolfgang Sourdeau * MainController.m ([MainController -validRequestorForSendType:sendTypereturnType:returnType]): on GNUstep, execute the same method on the playlistController to make sure it declares as a valid requestor. MacOSX doesn't need this. * PlaylistController.m ([PlaylistController -writeSelectionToPasteboard:pboardtypes:types]): write selection to pasteboard only when the selection is not empty. ([PlaylistController -validRequestorForSendType:returnType:]): declare as valid requestor only when the selection is not empty. * TableViewController.m ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): invoke saveToDefaults on the playlist when sorted. * Bundles/MP3/MP3.m ([MP -readComment:comString]): when the string id is not found, return @"". * Song.m ([Song -compareByPlaylistRepresentation:aSong]): new comparison method for sorting by artist, album, track number, title and finally by filename. ([Song -compareByDuration:aSong]): new comparison method for sorting by duration. * Playlist.m ([Playlist -sortByDuration]) ([Playlist -sortByPlaylistRepresentation]): new method to sort the playlist. * TableViewController.m ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): new method to trigger the sorting of the playlist depending on the column header that was clicked. ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): the "time" column in now identified with "duration", for consistency. 2004-04-30 Wolfgang Sourdeau * Playlist.m ([-loadFromDefaults]): new method to migrate the default playlist in the NSUserDefaults database to the default in the user's Library/Cynthiune. ([-saveToDefaults]): save the playlist in the user's Library/Cynthiune/DefaultPlaylist.pls. * utils.m (invertBytesInBuffer): new function taken from Esound.m to swap bytes in an even-size buffer. (_linesFromContent): work on a copy of the line where the ending character (\n or \r) is replaced with a 0. * Bundles/Mod/Mod.m ([Mod -readNextChunk:bufferwithSize:bufferSize]): invert bytes in buffer on big-endian architectures. * PlaylistFile.m ([PlaylistFile -load]): check that fileLines is not nil, otherwise do not fill the playlist at all. * MainController.m ([MainController -loadBundlesInSystemDirectories:aFileManager]): use NSStandardLibraryPaths(). * utils.m (linesOfFile): return nil if the file could not be opened. * Bundles/Mod/Mod.m ([Mod +bundleClasses]): new libmodplug-based plugin bundle to read MODs, XMs, and many many more ..... 2004-04-29 Wolfgang Sourdeau * PlaylistFile.m ([PlaylistFile -_fillPlaylistWithArray:anArray]): don't release the returned song since it's autoreleased. * Bundles/Ogg/Ogg.m (oggReadFunc,oggSeekFunc, oggCloseFunc, oggTellFunc): new callback function for ov_read_callbacks(). ([Ogg -streamOpen:fileName]): use an NSFileHandle object instead of a FILE pointer, pass it as the datasource argument to ov_read_callbacks(). * Bundles/OSS/OSS.m ([OSSPlayerThread -playerThread:dict]): release the stream when the thread is ending. Same changes as in Esound bundle (see below). * PreferencesController.m ([PreferencesController -setBundleView:bundlePrefsView]): don't release the returned view since it's now autoreleased. * Bundles/Esound/Esound.m ([-dealloc]): host is never used. Release the lock. ([EsoundPlayerThread -setStream:aStream]): retain the stream if non-nil. ([EsoundPlayerThread -flushOutputBuffer:dict]): display an error message related to the esd socket only if it failed three times to reconnect. * Playlist.m ([Playlist -loadFromDefaults]): don't release the returned song since it's now autoreleased. * GeneralPreference.m ([GeneralPreference -preferenceSheet]): autorelease the returned view. * Bundles/MP3/MP3.m ([MP -readComment:comString]): return an UTF8 encoded strings. * Song.m ([Song -displayRepresentation]): renamed to playlistRepresentation. Uses our NSString ivars directly instead of their UTF8 or C representation. ([Song +songWithFilename:aFilename]): return an autoreleased object. ([Song -openStreamForSong]): stream should be autoreleased. * Bundles/OSS/OSS.m ([OSSPlayerThread -dealloc]): new method to make sure the stream is closed and released when the thread is deallocated. * Song.m ([Song -filename]): simplified method by using short conditions rather than an intermediary variable. ([-fullFilename]): idem. ([Song -displayRepresentation]): use UTF8String rather than cString on the string components. * Bundles/*/*.m (general): we define the NSLocalLocalizedString macro for the bundle so that the localized string can be found in the plugin directory structure rather than by finding it in the main bundle. * *.m */*/*.m (general): we now use _L as the localization macro all across the project. This macro calls UTF8String on GNUstep, as well as NSLocalizedString in the main bundle and NSLocalLocalizedString (see above) for the plugin bundles. * utils.m (UTF8String): new method to obtain string declared as UTF-8 for localized strings. This permit us to use UTF8 encoded Localizable.strings files when running in a non-utf8 environment. 2004-04-26 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -setReverseTimer:reversed]): accessor to reverseTimer. * PlaylistController.m ([PlaylistController -changeTimeDisplay:sender]): new method to reverse the time display when the timer field is clicked. Originally in InfoDisplayController.m. * MainController.m ([MainController -_parseArguments]): check that no argument beginning with "-" is taken into account. * GeneralPreference.m ([GeneralPreference -_initDefaults]): set the default output plugin to a reasonable default depending on the platform. * PlaylistController.m ([PlaylistController -_removeSelectedSongs]): new method extracted from removeSong: to make code cleaner. 2004-04-25 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:tvwriteRows:rowstoPasteboard:pboard]): MacOSX seems to only accept one type of dragged elements at a time... * Song.m (general): accessors return a copy of the attributes instead of their direct reference. * PlaylistController.m ([PlaylistController -removeSong:sender]): do not release the selection since it is autoreleased. ([PlaylistController -_updatePlayer:force]): do not initialized the player automatically, display a warning if it's equal to nil. 2004-04-24 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([EsoundPlayerThread -_invertBufferBytes]): new method for big endian machines about which libesd does not give a damn. * InfoDisplayController.m ([InfoDisplayController -setTimerFromTotalSeconds:seconds]): new method to display the total given as parameter in the timer field in bold. ([InfoDisplayController -resetTimerField]): empties the timer field and reset its font back to normal. ([InfoDisplayController -timerIsReversed]): return the value of reverseTimer. * PlaylistController.m ([PlaylistController -_resetTimeDisplay:aTimer]), ([PlaylistController -_updateDisplayResetTimer]), ([PlaylistController -_updateSelectionTimeDisplay]): new methods meant to be used when the tableSelectionIsChanging notification is triggered so as to show the total time for the selected songs and to reset the timer field if needed (when the player is not running). * MainController.m ([MainController -_registerArrayOfClasses:classes]): takes the array of classes for each bundle as argument and test all of them with the different protocol managers. * CynthiuneBundle.h: Cynthiune bundle should now include this file to permit the MainController to know all of their classes. Ogg, MP3, Esound, OSS, MacOSXPlayer bundles updated. 2004-04-23 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong], [Song -readInfos]): use "release" instead of "autorelease" to free the stream from memory. * PlaylistFile.m (general): redone the interface to act as a regular class rather than a method provider. * PlaylistController.m (general): removed loadDefaultList and saveDefaultList methods. ([PlaylistController -saveList:sender]): the callback data passed to the sheet is a struct containing the integer for the return code but also a saveDir NSString, so that we can directly save the result to the correct directory. * Playlist.m ([Playlist -dealloc]): new method. ([Playlist -getSongsAsFilenames]): new method to obtain the filenames of the songs listed in the playlist. ([Playlist -loadFromFile:aFilename]): new method that instantiates a PlaylistFile object to load itself from. ([Playlist -saveToFile:aFilename]): new method that instantiates a PlaylistFile object to save itself it. 2004-04-22 Wolfgang Sourdeau * MainController.m ([MainController -_appWindowDidMove]) ([MainController -_playlistWindowDidMove]): new methods extracted from windowDidMove: to make code cleaner. * InfoDisplayController.m ([InfoDisplayController -init]): new method to initialize the class attributes rather than in awakeFromNib. * MainController.m ([MainController -_initWindowsPosition]): new method extracted from awakeFromNib to make code cleaner. 2004-04-20 Wolfgang Sourdeau * TableViewController.h (NSObject): "songlist" attribute renamed to "playlist". * TableViewController.m ([TableViewController -doubleClick:sender]): the song selected in the playlist is set from here rather than in the notification signal in PlaylistController. * MainController.m ([MainController -setPlaylistWindowVisible:isVisible]): new method to replace showPlaylistWindow and hidePlaylistWindow for consistency with the standard *step APIs. * PlaylistController.m (general): references to the playlistWindow and the playlistSwitch moved to the MainController class as well as all associated method (WindowDidMove, WindowDidResize, togglePlaylist, showPlaylistWindow, hidePlaylistWindow, repositionWindow, mainHasNewFrame...). ([PlaylistController -playerSongEnded:aNotification]): we release the player whenever we get at the end of the playlist. ([PlaylistController -stopPlaying:sender]): we release the player when stop is pressed. ([PlaylistController -loadDefaultList]): we don't update the tableview anymore since this method is called only once and before the tableview is initialized. ([PlaylistController -_updatePlayer:force]): we are now the only method to initialize "player" when it does not exist. * Bundles/Esound/Esound.m ([EsoundPlayerThread -dealloc]): close the stream before releasing it. 2004-04-19 Wolfgang Sourdeau * FormatTester.m ([FormatTester +formatTester]): major cleanup, all class methods converted to instance methods. This new method returns a singleton. * TableViewController.m ([TableViewController -_songsInRows:rows]): returns an array of songs associated to the rows contained in the array passed as argument. ([TableViewController -tableView:tvwriteRows:rowstoPasteboard:pboard]): fille the pasteboard with NSFilenamesPboardType elements. ([TableViewController -_acceptFilesInPasteboard:pboard]): new method splitted from -tableView:validateDrop:proposedRow: to test whether the list of files that's being dragged are of a readable format. ([TableViewController -tableView:tvacceptDrop:inforow:rowdropOperation:op]): if the draggingSource is our table view, query the CynthiuneSongListDragType elements from the pasteboard, otherwise query the NSFilenamesPboardType. ([TableViewController -setPlaylist:aPlaylist]): retain and release the received playlist. * Playlist.m ([Playlist -songAtNSIndex:anIndex]): return the song associated to the specified index (passed as NSNumber). * GeneralPreference.m ([GeneralPreference -awakeFromNib]): * Bundles/Esound/Esound.m ([EsoundPreferences -awakeFromNib]): * Bundles/OSS/OSS.m ([OSSPreferences -awakeFromNib]): new method. Translate labelled widgets. * Bundles/MP3/MP3.m ([MP -readStreamMetaData]): test for XING VBR header and compute duration subsequently. 2004-04-18 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -init]): added init method. 2004-04-16 Wolfgang Sourdeau * MainController.m ([MainController -_initMenuLabels]): the services menu is defined in Gorm. ([MainController -_setStrings:stringsforSubmenu:menuwithOffset:offset]): new method to translate the Windows menu properly at the correct offset after the windows list. * GeneralPreference.m ([GeneralPreference +windowsInformationAreSaved]): new method that returns whether windows location saving is set in the preferences. ([GeneralPreference +saveInformation:aWindowforWindow:windowName]): new method to store the window state in the NSUserDefaults database. ([GeneralPreference +restoreInformation:aWindowforWindow:windowName]): new method as above but to restore and apply that information. ([GeneralPreference -saveWindowsInformationChanged:sender]): new delegate method to set or unset the parameter deciding of the windows location saving mechanism. * PlaylistController.m ([PlaylistController -mainHasNewFrame:aFrame]): initialize the playlist window position from the preferences if required. ([PlaylistController -windowWillClose:aNotification]): save the playlist window position from the preferences if required. ([PlaylistController -_recheckIfIsStuck:aWindow]): new method to make windowDidMove: and windowDidResize: smaller. ([PlaylistController -writeSelectionToPasteboard:pboardtypes:types]): new delegate method to fill the pasteboard buffers with the selected song filenames when a service is invoked. * MainController.m ([MainController -_setStrings:stringsforMenu:menu]): ([MainController -_setStrings:stringsforSubmenu:menu]): new methods splitted from _initMenuLabels; ([MainController -_initServices]): new method to list the services which accept filenames as parameters. ([MainController -awakeFromNib]): restore the main window saved state if required in the preferences. ([MainController -windowWillClose:aNotification]): save the main window position, size and state if required in the preferences. ([MainController -validRequestorForSendType:returnType:]): delegate method to let NSApplication dispatch the services communication messages to the correct object. * TableViewController.m ([TableViewController -getSelectionAsFilenames]): new method to return the filename of the songs that are selected. * PlaylistTableView.m ([PlaylistTableView -dragImageForRows:dragRowsevent:dragEventdragImageOffset:dragImageOffset]): new subclass of NSTableView for providing the correct icon when one or more songs are being dragged... 2004-04-13 Wolfgang Sourdeau * TableViewController.m ([TableViewController -_timeColumnWidth]): new method to size the time column progammatically depending on the translation for "Time". ([TableViewController -addNeededColumns]): removed useless "aFrame" var. * PlaylistController.m ([PlaylistController -_initPlaylistPopups]): the NSPopupButton's are repositioned after their resizing. 2004-04-12 Wolfgang Sourdeau * MainController.m ([MainController -awakeFromNib]): the main window is now centered before being displayed. * GeneralPreference.m ([GeneralPreference -contentView]): * Bundles/Esound/Esound.m ([EsoundPreferences -contentView]): * Bundles/OSS/OSS.m ([OSSPreferences -contentView]): closing the bundle window is useless. * PreferencesController.m ([PreferencesController +loadPreferencesWindow]): make prefs a global variable so that we can control whether the prefs window is already displayed. 2004-04-11 Wolfgang Sourdeau * Bundles/MacOSX/MacOSXPlayer.m (manage_oggproblem): removed obsoleted method. ([MacOSXPlayer -init]): initialize timer, totalBytes and bytesPerSec(new) to 0. ([-streamRaiseOpenErrorException:errMsg]): removed obsoleted method. ([MacOSXPlayer -timer]): lastTickSeconds attribute renamed to "timer". * PlaylistController.m ([PlaylistController -_initPlaylistPopups]): call sizeToFit on our popups so that we make sure their widths is correct after localization. ([PlaylistController -_runDirOpenPanel:oPanel]), ([PlaylistController -_runOpenPanel:oPanel]): use beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo: on GNUstep and MacOSX. * MainController.m ([MainController -registerBundleClass:aBundle]): new method split from loadBundlesForPath:withFileManager: 2004-04-10 Wolfgang Sourdeau * PreferencesController.m ([-writeDictionaryForClass:aClass]): removed method. * Bundles/Ogg/Ogg.m ([Ogg -streamOpen:fileName]): replaced #include's with #import's. Import external files before Ogg.h. * Bundles/Ogg/Ogg.h: removed imports from file header. * PlaylistFile.m ([PlaylistFile +_parsePLSFile:fileLines]): use the C api to determine the beginning of the line instead of NSString's. * Bundles/MacOSX/MacOSXPlayer.m: updated to the NEW bundle and player protocols. * Bundles/MP3/MP3.m ([MP +_testMP3Header:buffer]): use BYTE_ORDER instead of __BYTE_ORDER. * GeneralPreference.m ([GeneralPreference -contentView]): * Bundles/OSS/OSS.m ([OSSPreferences -contentView]): * Bundles/Esound/Esound.m ([EsoundPreferences -contentView]): use "release" instead of "dealloc" to avoid crashing. * TableViewController.m ([NSTableView -dragImageForRows:event:dragImageOffset:]): override this method to display the "note(s)" drag icon. ([TableViewController -awakeFromNib]): add self as an observer for the NSViewDidFrameNotification of our parent's parent's, the scrollView. ([TableViewController -scrollViewDidResize:aNotif]): new method to resize our columns when needed. ([TableViewController -addNeededColumns]): add a title to identify our columns. 2004-04-05 Wolfgang Sourdeau * PreferencesController.m ([PreferencesController -setBundleView:bundlePrefsView]): different but better algorithm for displaying the prefs page. * GeneralPreference.m ([GeneralPreference -initializeSelector]): when no output bundle was found, display "None" and disable the widget. ([GeneralPreference -initializeWithDict:aDict]): initialize the defaults output bundle from the selector only *if* the bundle list is not empty. * MainController.m ([MainController -_initMenuLabels]): menus on MacOSX and GNUstep are different so we have to write a double-method. 2004-03-29 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): if the file can't be opened, returns 'NO'. * MainController.m ([MainController -loadBundlesInLocalDirectory:aFileManager]): computes the Bundle directory for the Application directory instead of hard-coding it. * Bundles/MP3/MP3.m ([MP +_testMP3Header:buffer]): added support for MPEG 2.5 files. 2004-03-28 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +_seekOffset:_f]): new method to return the first-non zero character of a stream. ([MP +_testRIFFHeader:bufferinFile:_fwithOffset:offset]): new method that tests whether a RIFF file contains an MP3 stream. ([MP +_testMP3Header:buffer) new method split from +streamTestOpen: to test a basic MPEG audio header. 2004-03-22 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): we do now provide support for MP2 and MPEG 2 Layer 2/3 streams. "So many standards to choose from...". 2004-02-27 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): we do now provide support for RIFF-encapsulated MPEG and MPEG Layer 3 streams. 2004-02-18 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([EsoundPreferences -selectTcpBtn:sender]): set the text fields visibily enabled. ([EsoundPreferences -selectUnixBtn:sender]): set the text fields visibily disabled. 2004-02-15 Wolfgang Sourdeau * MainController.m ([MainController -_initMenuLabels]): set submenu titles too. 2004-02-14 Wolfgang Sourdeau * utils.m (logRect): new function to display an NSRect's coordinates. * PlaylistController.m ([PlaylistController -saveDefaultList]): synchronize defaults when saving playlist. ([PlaylistController -_addSongsFromOPanel:oPanel]): update default playlist when new files are added. ([PlaylistController -_addDirSongsFromOPanel:oPanel]): idem. ([PlaylistController -removeSong:sender]): idem, when removing songs. * PreferencesController.m ([PreferencesController +loadPreferencesWindow]): initialize prefs window title for I18N; ([PreferencesController -setBundleView:bundlePrefsView]): new way of positioning preference subviews. * GeneralPreference.m ([GeneralPreference +registerPlayerClass:aClass]): display the warning regarding bundles only when it's real. * MainController.m ([MainController -_initMenuLabels]): new method to initalize i18nized menu labels. 2004-02-13 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -windowDidResize:aNotification]): new method to avoid positioning window disgracefully after it's resized (with isStuck is YES). 2004-02-05 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_updatePlayer:force]): updatePlayer now takes a BOOL argument 'force'. Also, was renamed to "_updatePlayer:". ([PlaylistController -tableDoubleClick:aNotification]): force updatePlayer to restart the current song when double-clicked. ([PlaylistController -playerSongEnded:aNotification]): when repeat is on, do repeat the song even if it's the only one. Otherwise, reinitialize the playlist position and stop. 2004-01-20 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -removeSong:sender]): don't go to the next song when the song being played is not selected. ([PlaylistController -_initButtonImages]): new shuffle button; 2004-01-19 Wolfgang Sourdeau * MainController.m ([MainController -parseArguments]): new method to add song filenames given as command-line parameters to the playlist; * PlaylistController.m ([PlaylistController -removeSong:sender]): fixed a subtle bug that was preventing the shuffle mode from working properly. When deleting a song, the next song in the real list, rather than in the shuffle list, was selected. ([PlaylistController -_initButtonImages]): new repeatButton taken into ccount. 2004-01-16 Wolfgang Sourdeau * Bundles/Ogg/Ogg.m ([Ogg +streamTestOpen:fileName]): don't display error when the file tested is just not a vorbis stream. 2004-01-14 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -removeSong:sender]): test if playlist is non-empty before removing any element. * Bundles/dummy/dummy.m ([dummyPlayerThread -playerThread:dict]): don't crash when stopping player. * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): implement a real test on file headers for both little- and big-endian machines. 2004-01-12 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_fileIsAcceptable:fileName]): new method to test whether a file exists, is a regular file or a symlink to a regular file. ([PlaylistController -_addSongsFromArray:songArraywithDir:aDirectory]): accepts an optional directory name to prepend to the filenames. * Bundles/dummy/dummy.m: new output bundle, outputting to no device for debugging purpose. * PlaylistController.m ([PlaylistController -_initButtonImages]): added "playlist-show" and "playlist-hide" as button images. 2004-01-11 Wolfgang Sourdeau * Bundles/MP3/MP3.m: copyright infos updated + portability #ifdef's. * MainController.m: General: portability "#ifdef NeXT_PDO"'s and related code. ([MainController -loadBundlesInLocalDirectory:aFileManager]): simplified local bundle loading for Openstep/Win32. * Bundles/Ogg/Ogg.m ([Ogg +errorText:error]): new class method to replace lastErrorText. Used in streamTestOpen:. General: portability "#ifdef NeXT_PDO"'s and related code. 2004-01-06 Wolfgang Sourdeau * Bundles/Ogg/Ogg.m ([Ogg -streamClose]): it seems ov_clear already calls free(). 2003-12-31 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong]): uses NSFileManager's fileExistsAtPath: method instead of access(). 2003-12-30 Wolfgang Sourdeau * Player.h: togglePause and toggleMuted changed respectively to setPaused/paused and setMuted/muted. 2003-12-29 Wolfgang Sourdeau * CynthiuneInfo.plist: release 0.9. * GNUmakefile (APP_NAME): added VERSION variable and set it to 0.9. * Bundles/Esound/Esound.m ([EsoundPlayerThread -playerThread:dict]): check streamToRelease and close + release if non-nil. ([EsoundPlayerThread -setStream:aStream]): if streamToRelease is already allocated, we wait for the thread loop to release it. * Bundles/OSS/OSS.m: same as above. * PlaylistController.m ([PlaylistController -songCursorChange:sender]): update the timer depending on the chosen position so that the user see an indication of where (s)he is within the song. ([PlaylistController -toggleMute:sender]): initialize the player if it's not running so that we can mute it even when nothing has played yet. ([PlaylistController -songCursorChange:sender]): the time throttle is really active now. ([PlaylistController -updatePlayer]): display info for the actual player song so that we don't show invalid informations since we could be called twice if a stream is invalid. * Playlist.m ([Playlist -insertSong:newSong:aPos]): increase currentSongNumber when aPos <= to it. ([Playlist -moveSongsWithRows:aRowsListto:newPos]): save current song and restore currentSongNumber at the end. * Bundles/Esound/Esound.m ([EsoundPlayerThread -seek:aPos]): same as below. * Bundles/OSS/OSS.m ([OSSPlayerThread -seek:aPos]): new method: seek in the stream and update totalBytes. * Bundles/Ogg/Ogg.m ([Ogg -isSeekable]): we call ov_seekable and return its result. ([Ogg -seek:aPos]): Ogg's are seekable. * Bundles/MP3/MP3.m ([MP -isSeekable]): pseudo method always returning YES. ([MP -seek:aPos]): MP3's are seekable. * Player.h: impose a new "seek:" method to Player classes. * Format.h: impose new "- isSeekable" and "seek:" methods to Format classes. * Song.m ([Song -readInfos]): don't read infos of file that can't be opened. ([Song -isSeekable]): new method to verify that the position in the song can be changed. * MainController.m ([MainController -appWindow]): new method to return the player window. * GeneralPreference.m ([GeneralPreference -playlistFormatChanged:sender]): new method/callback to save the specified playlist format. 2003-12-28 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -updatePlayer]): update the progressSlider only at song change. * TableViewController.m ([TableViewController -_acceptDroppedRows:aRowsListatRow:row]): reselect all previously selected songs, not just the first and last ones. * PlaylistController.m ([PlaylistController -windowDidMove:aNotification]): fixed windows stickyness by testing the condition that applies for each axis. ([PlaylistController -removeSong:sender]): sets the currentSongNumber to the first selected song or, if the player is running, to the song that is being played. ([PlaylistController -playerStopped:aNotification]): don't select the first song when stopped playing. 2003-12-27 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -saveList:sender]): defaults entry for saving playlists is now "DefaultPlaylistDirectory" instead of "NSDefaultSaveDirectory" for exactness. * utils.m (linesOfFile): refactoring: previous method "+_linesFromContentL" from PlaylistFile.m. Added proper copyright notice. * PlaylistFile.m ([PlaylistFile +savePlaylist:anArraytoFile:aFile]): new method to convert and save the array of songs. ([PlaylistFile +_PLSContentWithArray:anArray]) and ([PlaylistFile +_M3UContentWithArray:anArray]): new methods to convert an array of songs, return an NSString with the playlist in the appropriate format. ([PlaylistFile +_linesFromContent:content]): manage DOS-formatted files. * GeneralPreference.m ([GeneralPreference +preferredPlaylistFormat]): new method to determine the user's preferred playlist format to use when saving the playlist. * PlaylistController.m ([PlaylistController -saveList:sender]): new method to save current playlist. ([PlaylistController -init]): new attribute "playlistFilename" set to nil. * Bundles/OSS/OSS.m: aligned code with recent changes in Esound bundle. * Bundles/Esound/Esound.m ([Esound -setSong:aSong]): "seconds" attribute no longer used, computed when getSeconds is called. * PlaylistController.m ([PlaylistController -awakeFromNib]): disable progressSlider by default. ([PlaylistController -updatePlayer]): en-/disable the progressSlider depending on the song "seekability". * Song.m ([Song -isSeekable]): new method to determine whether the cursor can be moved within the song. ([Song -seek:aPos]): new method to change the time cursor. * Bundles/OSS/OSS.m ([OSS -timer]): compute time when called. * Song.m ([Song +songWithFilename:aFilename]): new method to alloc and init a new song at the same time; 2003-12-20 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): if title string is empty, only put the song's filename between brackets. * PlaylistController.m ([PlaylistController -showPlaylistWindow]): use [w orderFront] rather than [w orderBack]; ([PlaylistController -addSong:sender]) and ([PlaylistController -removeSong:sender]): compare to translated label titles. ([PlaylistController -awakeFromNib]): initalize progressSlider. ([PlaylistController -switchToSong:aSongplayerIsRunning:running]), ([PlaylistController -playerPlaying:aNotification]), ([PlaylistController -playerStopped:aNotification]), ([PlaylistController -playerSongEnded:aNotification]): set progressSlider's max value to relevant value depending on the case (new song or song stopped). ([PlaylistController -playerUpdateTimer:aNotification]): update progressSlider's value. * MainController.m ([MainController -openFile:anObject]): new method to add a new song to the playlist from the Document->open menu. * InfoDisplayController.m ([InfoDisplayController -show]): set translated image name (Localizable.strings). ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): really set title from deduced value rather than directly from [aSong title]. 2003-12-19 Wolfgang Sourdeau * TableViewController.m ([TableViewController -addNeededColumns]): added a column for song duration time; * InfoDisplayController.m ([InfoDisplayController -changeTimeDisplay:sender]): activated switching of timer display (forward/backward). * utils.m: helper functions. (timeStringFromSeconds): code previously found in InfoDisplayController. * Format.h: changed typing for readChannels, readRate. Added readDuration method, to return the stream length; 2003-12-18 Wolfgang Sourdeau * Playlist.m ([Playlist +_linesFromContent:content]): new singleton class to read .pls and .m3u playlist files. * Bundles/Esound/Esound.m ([EsoundPlayerThread -flushOutputBuffer:dict]): reinit esdDsp from the dict at each iteration to avoid writing to a closed filedesc. * PlaylistController.m ([PlaylistController -togglePlaylist:sender]): display or hide the new playlist window; * TableViewController.m ([TableViewController -init]): as a child of playlistcontroller, tvc no longer has the playlist outlet and now forwards the TableView clicks to its delegate. * PlaylistController.h: new outlet: TableViewController, for which we act as a delegate. * PlaylistController.m ([PlaylistController -windowDidMove:aNotification]): implemented window magnetism. 2003-12-15 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -playerStopped:sender]): release player when stopped, so that we can choose another one. * Bundles/MP3/MP3.m ([MP -readNextChunk:bufferwithSize:bufferSize]): loop when steam.error == MAD_ERROR_LOSTSYNC. * PlaylistController.m ([PlaylistController -playerPaused:sender]): set button state only from delegate. functions. 2003-12-14 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +acceptedFileExtensions]): accepts .mpa, .mpga, .mpega files + uppercases. 2003-12-13 Wolfgang Sourdeau * OutputPreference.m ([OutputPreference +initializeList]): new preference module and handler for selecting the output bundle to use. * MainController.m ([MainController -loadBundlesForPath:aPathwithFileManager:aFileManager]): bundle conform to the "Player" protocol are registered with the OutputPreference class. * InfoDisplayController.m ([InfoDisplayController -show]): only use on NSImageView now for active and inactive splash images. ([InfoDisplayController -changeTimeDisplay:sender]): new stub action connected to songTimerField; * Bundles/OSS/OSS.m: added OSSPreferences class, copied from Esound. * Bundles/OSS/GNUmakefile: added OSSPreferences.gorm to the RESOURCE_LIST 2003-12-12 Wolfgang Sourdeau * MainController.m ([MainController -loadBundlesForPath:aPathwithFileManager:aFileManager]): scan for bundles. * PreferencesController.[hm]: new controller for Preferences.gorm. * Preference.h: new Preference protocol for classes implementing preference sheet handling. * NEWS: updated with the new nice features we've added recently. * Bundles/Esound/Esound.m: new Esound output class, based on OSS. With the same thread model and a controller class for its preference panel (EsoundPreferences.gorm). * Bundles/OSS/OSS.m: old GNUstepPlayer.[hm]. the OSS class is a childclass of PlayerBase and conforms to the Player and Preference protocol. * Bundles/Ogg/Ogg.[hm]: old OggStream.[hm] * Bundles/MP3/MP3.m ([MP -translateBufferToPCM:bufferwithSize:bufferSize]): compute the difference between buffer returned by libmad and the player buffer, to avoid a buffer overrun. * Bundles/MP3/MP3.[hm]: old MP3Stream.[hm] * InfoDisplayController.m ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): field code simplified by the splitting of the album and artist fields. ([InfoDisplayController -awakeFromNib]): We use boldSystemFont for song name and systemFont for the rest. * InfoDisplayController.[h,m]: album and artist fields are not splitted from each other. We don't use a tabview anymore, just overlapped images. * GNUmakefile.preamble: link to libmcheck (malloc checks) when $(debug) is set to 'yes'. References to format libraries and headers moved out. * GNUmakefile: added new Bundles to the list of SUBPROJECTS. Added Images/eject.tiff to the list of RESOURCE_FILES. * FormatTester.m: is now feeded decoder classes (conform to the Format protocol) and their extensions by new PreferencesController class; * Format.h: Format protocol. For decoder modules. 2003-12-08 Wolfgang Sourdeau * Song.m ([Song -readInfos]): we retain returned NSStrings here now rather than in the formats readers. * GNUstepPlayer.m: GNUstepPlayer is a child class of PlayerBase and responds to "Player" protocol. Common methods moved into Player.m. * Player.m ([PlayerBase -init]): new. Implementation of PlayerBase class. * Player.h: definition of "Player" protocol and PlayerBase class. 2003-12-04 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong]): test if the Song file is still accessible, return nil if not so that we don't crash. * PlaylistController.m ([PlaylistController -TableDoubleAction:sender]): we use switchToSong for coherence. * GNUstepPlayer.m ([PlayerThread -threadDidStart:aDict]): use NSDebugLog() instead of NSLog(). ([PlayerThread -threadWillExit:aDict]): ditto. ([PlayerThread -playerThread:dict]): if the thread exits with (stream == nil), it means the song ended (even if it didn't even start playing). * FormatTester.m ([FormatTester +classForFile:filePath]): fixed sizeof() to return the correct amount of elements in the format list. 2003-12-03 Wolfgang Sourdeau * GNUstepPlayer.m ([PlayerThread -flushOutputBuffer:dspFd]): reenabled this method for clarity. * PlaylistController.m ([PlaylistController -switchToSong:aSongTVCIs:tvcplayerIsRunning:running]): don't stop/restart the player when changing song. Also, we now update the display with the new song's informations. ([PlaylistController -playerSongEnded:sender]): stop playloop if no song is left in the list. This let the thread exit and reset the GUI. 2003-12-02 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -addSong:sender]): play with NSDefaultDirectory to remember last opened directory; 2003-11-28 Wolfgang Sourdeau * MP3Stream.m ([MP -audioLinearDither:samplewithDither:dither]): dithering method copied from madplay. ([MP -translateBufferToPCM:bufferwithSize:bufferSize]): method copied from madplay: audio_pcm_s16le. ([MP -calcInputRemain]): new method to clarify code. ([MP -readStreamMetaData]): read first valid frame and deduce channels and rate from it. ([MP -streamInit]): invoke readStreamMetaData. ([MP -translateBufferToPCM:bufferwithSize:bufferSize]): 'offset' renamed to 'start', 'max' to 'limit'. ([MP -fillPCMBuffer:bufferwithStart:startandLimit:limit]): new method extracted from -translateBufferToPCM:bufferwithSize:bufferSize to clarify code. * MacOSXPlayer.m (inputCallback): ref to OggStream removed. * GNUstepPlayer.m ([Player -handleReadProblem:bytesRead]): manageOggProblem renamed. 2003-11-26 Wolfgang Sourdeau * FormatTester.m ([FormatTester +fileTypeKnown:filePath]): changed to a class method. * PlaylistController.m ([PlaylistController -_addSongsFromOPanel:oPanel]): private method to make addSong lighter. ([PlaylistController -addSong:sender]): accept mp3 as filetype. 2003-01-06 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): ditto. * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): enhanced display for incomplete song metadata. * InfoDisplayController.m ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): do not display a dash whenever one of the album name or artist name is missing. 2003-01-02 Wolfgang Sourdeau * main.m: release 0.4 * MainController.m ([MainController -windowWillClose:aNotification]): using a static BOOL, test wether the close notification has been called to avoid infinite looping and a SIGSEGV (especially on GNUstep). * *.[hm]: updated copyright info with year 2003. * OggStream.m ([OggStream -readChannels]): new function. ([OggStream -readRate]): new function. * GNUstepPlayer.m ([Player -playIteration:sender]): fill the whole buffer first and write it in one shot to avoid too many write()'s. ([Player -setSong:aSong]): added code to make it able to read one channel songs. ([Player -audioInit]): tune the audio dsp. 2002-12-25 Wolfgang Sourdeau * Initial release. Cynthiune-1.0.0/CynthiuneAnimatedImageView.h000644 001751 000024 00000002661 11733546642 021537 0ustar00multixstaff000000 000000 /* CynthiuneAnimatedImageView.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNEANIMATEDIMAGEVIEW_H #define CYNTHIUNEANIMATEDIMAGEVIEW_H #import #import @class NSMutableArray; @class NSTimer; @interface CynthiuneAnimatedImageView : NSImageView { int frameNumber; NSMutableArray *frames; NSTimer *animationTimer; NSTimeInterval interval; } - (id) init; - (void) startAnimation; - (void) stopAnimation; - (void) addFramesFromImagenames: (NSString *) firstImagename, ...; - (void) setInterval: (NSTimeInterval) newInterval; @end #endif /* CYNTHIUNEANIMATEDIMAGEVIEW_H */ Cynthiune-1.0.0/CynthiuneAnimatedImageView.m000644 001751 000024 00000006014 11733564433 021536 0ustar00multixstaff000000 000000 /* CynthiuneAnimatedImageView.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import "CynthiuneAnimatedImageView.h" @implementation CynthiuneAnimatedImageView : NSImageView - (id) init { if ((self = [super init])) { frames = [NSMutableArray new]; frameNumber = -1; animationTimer = nil; interval = .075; } return self; } - (void) dealloc { if (animationTimer) [animationTimer release]; [frames release]; [super dealloc]; } - (void) addFramesFromImagenames: (NSString *) firstImagename, ... { va_list ap; NSString *imagename; NSImage *image; va_start (ap, firstImagename); imagename = firstImagename; while (imagename) { image = [NSImage imageNamed: imagename]; if (image) [frames addObject: image]; else NSLog (@"no such image: '%@'", imagename); imagename = va_arg (ap, NSString *); } va_end (ap); } - (void) setInterval: (NSTimeInterval) newInterval { interval = newInterval; } - (void) _iteration { frameNumber++; if (frameNumber == [frames count]) frameNumber = 0; [self setImage: [frames objectAtIndex: frameNumber]]; } - (void) startAnimation { frameNumber = -1; if ([frames count]) { animationTimer = [NSTimer scheduledTimerWithTimeInterval: interval target: self selector: @selector (_iteration) userInfo: nil repeats: YES]; [animationTimer explode]; } else NSLog (@"No frames in animation. Not starting."); } - (void) stopAnimation { if (animationTimer) { [animationTimer invalidate]; animationTimer = nil; } [self setImage: nil]; } - (void) encodeWithCoder: (NSCoder*) aCoder { [super encodeWithCoder: aCoder]; // [aCoder encodeInt: interval forKey: @"interval"]; // [aCoder encodeObject: frames forKey: @"frames"]; } - (id) initWithCoder: (NSCoder*) aDecoder { self = [self init]; self = [super initWithCoder: aDecoder]; return self; } @end Cynthiune-1.0.0/CynthiuneController.h000644 001751 000024 00000003507 12014507037 020326 0ustar00multixstaff000000 000000 /* CynthiuneController.h - this file is part of Cynthiune * * Copyright (C) 2003, 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CynthiuneController_H #define CynthiuneController_H #import "CynthiuneWindow.h" @class NSApplication; @class NSButton; @class NSNotification; @class NSWindow; @class NSString; @class NSTimer; @class PlaylistController; @protocol Output; @interface CynthiuneController : NSObject { BOOL bundlesLoaded; PlaylistController *playlistController; NSWindow *playerWindow; NSWindow *playlistWindow; NSButton *playlistSwitch; BOOL isStuck; BOOL playlistWindowIsVisible; int WindowsTitleSize; int WindowsBorderSize; float deltaX, deltaY; id bugReportMenuItem; } - (id) init; - (BOOL) application: (NSApplication *) anApp openFile: (NSString *) aFilename; - (void) openFile: (id) anObject; - (void) preferencesWindow: (id) anObject; - (void) togglePlaylistWindow: (id) sender; - (void) setPlaylistWindowVisible: (BOOL) isVisible; - (void) _parseArguments; - (void) _initWindowsPosition; @end #endif /* CynthiuneController_H */ Cynthiune-1.0.0/CynthiuneController.m000644 001751 000024 00000034166 12014507037 020340 0ustar00multixstaff000000 000000 /* CynthiuneController.m - this file is part of Cynthiune * * Copyright (C) 2003-2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #ifdef __MACOSX__ /* NSStandardLibraryPaths */ #import #endif /* __MACOSX__ */ #ifdef GNUSTEP #import #endif #import "BundleManager.h" #import "GeneralPreference.h" #import "CynthiuneController.h" #import "PlaylistController.h" #import "PreferencesController.h" #define LOCALIZED(X) NSLocalizedString (X, nil) #define STICK_DELTA 20.0 static void localizeMenu (NSMenu *menu) { id menuItem; unsigned int count, max; [menu setTitle: LOCALIZED ([menu title])]; max = [menu numberOfItems]; for (count = 0; count < max; count++) { menuItem = [menu itemAtIndex: count]; if (menuItem && ![menuItem isSeparatorItem]) { [menuItem setTitle: LOCALIZED ([menuItem title])]; if ([menuItem hasSubmenu]) localizeMenu ([menuItem submenu]); } } } @implementation CynthiuneController : NSObject + (void) initialize { NSArray *sendTypes; sendTypes = [NSArray arrayWithObject: NSFilenamesPboardType]; [NSApp registerServicesMenuSendTypes: sendTypes returnTypes: nil]; } #ifdef __MACOSX__ - (void) _initPlaylistWindowButtons { NSRect emptyRect; NSButton *button; int buttons[] = {NSWindowToolbarButton, NSWindowCloseButton, NSWindowMiniaturizeButton, NSWindowZoomButton}; int count; emptyRect = NSMakeRect (0, 0, 0, 0); for (count = 0; count < (sizeof (buttons) / sizeof (int)); count++) { button = [playlistWindow standardWindowButton: buttons[count]]; [button setFrame: emptyRect]; } [playlistWindow setViewsNeedDisplay: YES]; } #endif /* __MACOSX__ */ - (void) awakeFromNib { NSToolbar *toolbar; [playerWindow setMiniwindowImage: [NSImage imageNamed: @"Cynthiune"]]; localizeMenu ([NSApp mainMenu]); [self _parseArguments]; [playlistController initializeWidgets]; toolbar = [playlistController playlistToolbar]; [playlistWindow setToolbar: toolbar]; #ifdef __MACOSX__ [self _initPlaylistWindowButtons]; #endif [self _initWindowsPosition]; #if defined (GNUSTEP) if ([GSCurrentServer () handlesWindowDecorations]) { WindowsTitleSize = 22; WindowsBorderSize = 8.0; } #endif /* GNUSTEP */ [playlistWindow setTitle: LOCALIZED (@"Playlist")]; [playlistWindow setExcludedFromWindowsMenu: YES]; [playlistWindow setResizeIncrements: NSMakeSize (1, 16)]; [playlistSwitch setImage: [NSImage imageNamed: @"playlist"]]; [playlistSwitch setAlternateImage: [NSImage imageNamed: @"playlist-pushed"]]; [playlistSwitch setState: playlistWindowIsVisible]; [playerWindow setNextResponder: playlistWindow]; } - (unsigned int) _computeDeltaXOfFrame: (NSRect) mainFrame withFrame: (NSRect) aFrame { unsigned int cond; float a1, a2, x1, x2; x1 = aFrame.origin.x; x2 = aFrame.origin.x + aFrame.size.width; a1 = mainFrame.origin.x; a2 = mainFrame.origin.x + mainFrame.size.width; if (x1 <= (a1 + STICK_DELTA) && x1 >= (a1 - STICK_DELTA)) { cond = 2; deltaX = 0.0; } else if (x2 <= (a2 + STICK_DELTA) && x2 >= (a2 - STICK_DELTA)) { cond = 3; deltaX = x1 - x2 + a2 - a1; } else if (x2 <= (a1 + STICK_DELTA) && x2 >= (a1 - STICK_DELTA)) { cond = 4; deltaX = x1 - x2 - 2.0; } else if (x1 <= (a2 + STICK_DELTA) && x1 >= (a2 - STICK_DELTA)) { cond = 5; deltaX = a2 - a1 + 2.0; } else if ((x1 > a1 && x1 < a2) || (x2 > a1 && x2 < a2) || (x1 < a1 && x2 > a2)) { cond = 1; deltaX = x1 - a1; } else cond = 0; return cond; } - (unsigned int) _computeDeltaYOfFrame: (NSRect) mainFrame withFrame: (NSRect) aFrame { unsigned int cond; float b1, b2, y1, y2; y1 = aFrame.origin.y; y2 = aFrame.origin.y + aFrame.size.height; b1 = mainFrame.origin.y; b2 = mainFrame.origin.y + mainFrame.size.height; if (y1 <= (b1 + STICK_DELTA) && y1 >= (b1 - STICK_DELTA)) { cond = 2; deltaY = 0.0; } else if (y2 <= (b2 + STICK_DELTA) && y2 >= (b2 - STICK_DELTA)) { cond = 3; deltaY = y1 - y2 + b2 - b1; } else if (y2 + WindowsTitleSize <= (b1 + STICK_DELTA) && y2 + WindowsTitleSize >= (b1 - STICK_DELTA)) { cond = 4; deltaY = y1 - y2 - WindowsTitleSize; } else if (y1 <= (b2 + WindowsTitleSize + STICK_DELTA) && y1 >= (b2 + WindowsTitleSize - STICK_DELTA)) { cond = 5; deltaY = b2 - b1 + WindowsTitleSize + WindowsBorderSize; } else if ((y1 > b1 && y1 < b2) || (y2 > b1 && y2 < b2) || (y1 < b1 && y2 > b2)) { cond = 1; deltaY = y1 - b1; } else cond = 0; return cond; } - (void) _recheckIfIsStuck { unsigned int condX, condY; NSRect mainFrame, playlistFrame; mainFrame = [playerWindow frame]; playlistFrame = [playlistWindow frame]; condX = [self _computeDeltaXOfFrame: mainFrame withFrame: playlistFrame]; condY = [self _computeDeltaYOfFrame: mainFrame withFrame: playlistFrame]; isStuck = (condX && condY && (condX > 3 || condY > 3)); } - (void) _initWindowsPosition { GeneralPreference *generalPreference; generalPreference = [GeneralPreference instance]; if ([generalPreference saveWindowsInformation]) { [generalPreference restoreInformation: playerWindow forWindow: @"PlayerWindow"]; [generalPreference restoreInformation: playlistWindow forWindow: @"PlaylistWindow"]; [playerWindow makeKeyAndOrderFront: self]; [playlistWindow makeKeyAndOrderFront: self]; playlistWindowIsVisible = YES; [self _recheckIfIsStuck]; } else { [playerWindow center]; [playerWindow makeKeyAndOrderFront: self]; playlistWindowIsVisible = NO; } } - (void) _ensureDirectory: (NSString *) directory { NSFileManager *fm; NSEnumerator *pathComponents; NSString *currentPathComponent, *directories; BOOL isDir, error; fm = [NSFileManager defaultManager]; error = NO; pathComponents = [[directory pathComponents] objectEnumerator]; directories = [pathComponents nextObject]; currentPathComponent = [pathComponents nextObject]; while (currentPathComponent && !error) { directories = [directories stringByAppendingPathComponent: currentPathComponent]; if (!([fm fileExistsAtPath: directories isDirectory: &isDir] && isDir)) error = ![fm createDirectoryAtPath: directories attributes: nil]; currentPathComponent = [pathComponents nextObject]; } } - (void) _checkUserCynthiuneDirectory { NSArray *paths; NSString *cynthiuneDirectory; paths = NSSearchPathForDirectoriesInDomains (NSLibraryDirectory, NSUserDomainMask, YES); if (paths) { cynthiuneDirectory = [[paths objectAtIndex: 0] stringByAppendingPathComponent: @"Cynthiune"]; [self _ensureDirectory: cynthiuneDirectory]; } } - (id) init { BundleManager *bundleManager; if ((self = [super init])) { WindowsTitleSize = 0.0; WindowsBorderSize = 0.0; [self _checkUserCynthiuneDirectory]; bundleManager = [BundleManager bundleManager]; [bundleManager loadBundles]; // step = 0; } return self; } - (void) _parseArguments { NSArray *arguments; NSString *currArg; unsigned int count, max; arguments = [[NSProcessInfo processInfo] arguments]; max = [arguments count]; for (count = 1; count < max; count++) { currArg = [arguments objectAtIndex: count]; if (![currArg hasPrefix: @"-"]) [playlistController openSongFromNSApp: currArg]; } } /* this seems to crash for the moment... */ // - (void) updateMiniwindowTitle: (NSString *) aTitle // { // [playerWindow setMiniwindowTitle: aTitle]; // } - (void) openFile: (id) anObject { [playlistController addSongFromNSApp: self]; } - (void) preferencesWindow: (id) anObject { [[PreferencesController preferencesController] loadPreferencesWindow]; } /* as delegate */ - (BOOL) application: (NSApplication *) application openFile: (NSString *) filename { [playlistController openSongFromNSApp: filename]; return YES; } - (void) togglePlaylistWindow: (id) sender { [self setPlaylistWindowVisible: [sender state]]; } - (void) setPlaylistWindowVisible: (BOOL) isVisible { if (isVisible) { if (!playlistWindowIsVisible) { [playlistWindow makeKeyAndOrderFront: self]; playlistWindowIsVisible = YES; } } else { if (playlistWindowIsVisible) { [playlistWindow orderOut: self]; playlistWindowIsVisible = NO; } } } /* notifications */ - (void) windowWillClose: (NSNotification *) aNotification { GeneralPreference *generalPreference; static BOOL closing = NO; if (!closing) { closing = YES; generalPreference = [GeneralPreference instance]; if ([generalPreference saveWindowsInformation]) { [generalPreference saveInformation: playerWindow forWindow: @"PlayerWindow"]; [generalPreference saveInformation: playlistWindow forWindow: @"PlaylistWindow"]; } [NSApp terminate: [aNotification object]]; } } - (void) windowDidDeminiaturize: (NSNotification *) aNotification { if (playlistWindowIsVisible) [playlistWindow orderFront: self]; } - (void) windowDidMiniaturize: (NSNotification *) aNotification { if (playlistWindowIsVisible) [playlistWindow orderOut: self]; } - (void) repositionPlaylistWindow { NSPoint newOrigin; NSRect playerFrame, playlistFrame; playerFrame = [playerWindow frame]; playlistFrame = [playlistWindow frame]; newOrigin = playerFrame.origin; newOrigin.x += deltaX; newOrigin.y += deltaY; playlistFrame.origin = newOrigin; [playlistWindow setFrame: playlistFrame display: NO]; } - (void) _playerWindowDidMove { NSRect frame; GeneralPreference *generalPreference; static BOOL _inited = NO; generalPreference = [GeneralPreference instance]; if (!_inited) { _inited = YES; if (![generalPreference saveWindowsInformation]) { frame = [playlistWindow frame]; isStuck = YES; deltaX = 0.0; deltaY = -frame.size.height - 2.0; [self repositionPlaylistWindow]; } } else if ([generalPreference windowsAreSticky] && isStuck) [self repositionPlaylistWindow]; } - (void) _playlistWindowDidMove { GeneralPreference *generalPreference; generalPreference = [GeneralPreference instance]; if ([generalPreference windowsAreSticky]) { [self _recheckIfIsStuck]; if (isStuck) [self repositionPlaylistWindow]; } } - (void) windowDidMove: (NSNotification *) aNotification { id object; object = [aNotification object]; if (object == playerWindow) [self _playerWindowDidMove]; else if (object == playlistWindow) [self _playlistWindowDidMove]; else NSLog (@"%s(%d): unexpected notification object:\n %@", __FILE__, __LINE__, [object description]); } - (void) windowDidResize: (NSNotification *) aNotification { GeneralPreference *generalPreference; generalPreference = [GeneralPreference instance]; if ([aNotification object] == playlistWindow && [generalPreference windowsAreSticky] && isStuck) [self _recheckIfIsStuck]; } // - (void) windowDidBecomeMain: (NSNotification *) aNotification // { // NSWindow *otherWindow; // if (!step) // keyWindow = [aNotification object]; // otherWindow = ((keyWindow == playerWindow) // ? playlistWindow // : playerWindow); // NSLog (@"step %d", step); // NSLog (@"keyWindow: %d; other: %d", [keyWindow isKeyWindow], [otherWindow isKeyWindow]); // switch (step) // { // case 0: // NSLog (@"key: %@", [keyWindow title]); // step++; // [keyWindow orderFront: self]; // [keyWindow resignKeyWindow]; // [otherWindow makeKeyAndOrderFront: self]; // // [otherWindow becomeKeyWindow]; // break; // case 1: // step++; // [keyWindow makeKeyAndOrderFront: self]; // [otherWindow resignKeyWindow]; // // [otherWindow becomeKeyWindow]; // break; // case 2: // if (keyWindow == playlistWindow) // step++; // else // { // keyWindow = nil; // step = 0; // } // break; // default: // keyWindow = nil; // step = 0; // } // } - (void) applicationWillTerminate: (NSNotification *) notification { [playlistController savePlayerState]; } /* Services */ - (id) validRequestorForSendType: (NSString *)sendType returnType: (NSString *)returnType { return [playlistController validRequestorForSendType: sendType returnType: returnType]; } @end Cynthiune-1.0.0/CynthiuneFadingTextField.h000644 001751 000024 00000003563 12112463315 021205 0ustar00multixstaff000000 000000 /* CynthiuneFadingTextField.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNEFADINGTEXTFIELD_H #define CYNTHIUNEFADINGTEXTFIELD_H #import #if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4) #ifndef CGFloat #define CGFloat float #endif #endif @class NSFont; @class NSString; @class NSTimer; @interface CynthiuneFadingTextField : NSTextField { NSTextField *fadeoutClone; NSTimer *fadingTimer; NSTimeInterval interval; unsigned int numberOfIterations; unsigned int iteration; CGFloat red; CGFloat green; CGFloat blue; CGFloat alpha; } - (void) setStringValue: (NSString *) string; - (void) setFont: (NSFont *) font; - (void) setAlignment: (NSTextAlignment) mode; - (void) setTextColor: (NSColor *) color; - (NSColor *) textColor; - (void) setInterval: (NSTimeInterval) timeInterval; - (void) setNumberOfIterations: (unsigned int) integer; - (NSTimeInterval) interval; - (unsigned int) numberOfIterations; - (void) setTextColorWithFactor: (float) factor; @end #endif /* CYNTHIUNEFADINGTEXTFIELD_H */ Cynthiune-1.0.0/CynthiuneFadingTextField.m000644 001751 000024 00000010746 11733546645 021233 0ustar00multixstaff000000 000000 /* CynthiuneFadingTextField.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import "CynthiuneFadingTextField.h" #ifdef __MACOSX__ /* alpha channels don't work correctly on GNUstep */ #define _colorWithFactor(X) \ [NSColor colorWithDeviceRed: red \ green: green \ blue: blue \ alpha: (alpha * X)] #else /* __MACOSX__ */ #define _colorWithFactor(X) \ [NSColor colorWithDeviceRed: (red * X) \ green: (green * X) \ blue: (blue * X) \ alpha: (alpha * X)] #endif /* __MACOSX__ */ @implementation CynthiuneFadingTextField : NSTextField - (void) _setDefaults { NSColor *color; color = [super textColor]; [color getRed: &red green: &green blue: &blue alpha: &alpha]; fadeoutClone = [[NSTextField alloc] initWithFrame: [self frame]]; [fadeoutClone setCell: [[self cell] copy]]; [fadeoutClone setStringValue: [self stringValue]]; [fadeoutClone setBezeled: NO]; [fadeoutClone setBordered: NO]; [fadeoutClone setDrawsBackground: NO]; [fadeoutClone setTextColor: color]; iteration = 0; interval = 0.050; numberOfIterations = 16; } - (void) awakeFromNib { [[self superview] addSubview: fadeoutClone positioned: NSWindowBelow relativeTo: self]; } - (id) initWithFrame: (NSRect) frame { if ((self = [super initWithFrame: frame])) { [self _setDefaults]; } return self; } - (void) dealloc { [fadeoutClone release]; [super dealloc]; } - (void) setTextColorWithFactor: (float) factor { [super setTextColor: _colorWithFactor (factor)]; [fadeoutClone setTextColor: _colorWithFactor (1.0 - factor)]; } - (void) _fadingIteration { float factor; iteration++; factor = (float) iteration / numberOfIterations; [self setTextColorWithFactor: factor]; if (iteration == numberOfIterations) { [fadeoutClone setStringValue: @""]; [fadingTimer invalidate]; fadingTimer = nil; } } - (void) _createFadingTimer { fadingTimer = [NSTimer timerWithTimeInterval: interval target: self selector: @selector (_fadingIteration) userInfo: nil repeats: YES]; [fadingTimer explode]; } - (void) setStringValue: (NSString *) string { NSString *oldString; oldString = [self stringValue]; if (![oldString isEqualToString: string]) { iteration = 0; [self setTextColorWithFactor: 0.0]; [fadeoutClone setStringValue: oldString]; [super setStringValue: string]; if (!fadingTimer) [self _createFadingTimer]; } } - (void) setFont: (NSFont *) font { [fadeoutClone setFont: font]; [super setFont: font]; } - (void) setAlignment: (NSTextAlignment) mode { [fadeoutClone setAlignment: mode]; [super setAlignment: mode]; } - (void) setTextColor: (NSColor *) color { [color getRed: &red green: &green blue: &blue alpha: &alpha]; if (!fadingTimer) [self setTextColorWithFactor: 1.0]; } - (NSColor *) textColor { return _colorWithFactor (1.0); } - (void) setInterval: (NSTimeInterval) timeInterval { interval = timeInterval; } - (NSTimeInterval) interval { return interval; } - (void) setNumberOfIterations: (unsigned int) integer { numberOfIterations = integer; } - (unsigned int) numberOfIterations { return numberOfIterations; } - (id) initWithCoder: (NSCoder*) aDecoder { self = [super initWithCoder: aDecoder]; [super setStringValue: @""]; [self _setDefaults]; return self; } @end Cynthiune-1.0.0/CynthiuneHeaderCell.h000644 001751 000024 00000002262 11733546643 020205 0ustar00multixstaff000000 000000 /* CynthiuneHeaderCell.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNEHEADERCELL_H #define CYNTHIUNEHEADERCELL_H #import #define arrowOffset 4.0 @interface CynthiuneHeaderCell : NSTableHeaderCell { NSComparisonResult comparisonResult; } - (void) setComparisonResult: (NSComparisonResult) result; @end #endif /* CYNTHIUNEHEADERCELL_H */ Cynthiune-1.0.0/CynthiuneHeaderCell.m000644 001751 000024 00000006775 11733546643 020227 0ustar00multixstaff000000 000000 /* CynthiuneHeaderCell.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import "CynthiuneHeaderCell.h" @implementation CynthiuneHeaderCell : NSTableHeaderCell - (id) init { if ((self = [super init])) { comparisonResult = NSOrderedSame; } return self; } static inline NSPoint RelativePoint (NSPoint point, NSPoint refPoint) { return NSMakePoint (refPoint.x + point.x, refPoint.y + point.y); } - (void) _drawArrowOfSize: (NSSize) arrowSize flipped: (BOOL) flipped atReferencePoint: (NSPoint) refPoint { NSBezierPath *bezier; float pointA, pointB; bezier = [NSBezierPath bezierPath]; [bezier setLineWidth: 0.0]; [[self textColor] set]; if ((!flipped && comparisonResult == NSOrderedAscending) || (flipped && comparisonResult == NSOrderedDescending)) { pointA = arrowSize.height; pointB = 0.0; } else { pointA = 0.0; pointB = arrowSize.height; } [bezier moveToPoint: RelativePoint (NSMakePoint(0, pointA), refPoint)]; [bezier lineToPoint: RelativePoint (NSMakePoint(arrowSize.width / 2, pointB), refPoint)]; [bezier lineToPoint: RelativePoint (NSMakePoint(arrowSize.width, pointA), refPoint)]; [bezier lineToPoint: RelativePoint (NSMakePoint(0, pointA), refPoint)]; [bezier closePath]; [bezier fill]; } - (void) drawInteriorWithFrame: (NSRect) cellFrame inView: (NSView *) controlView { NSRect arrowFrame, remainingFrame; NSPoint refPoint; float arrowHeight, arrowWidth; [super drawInteriorWithFrame: cellFrame inView: controlView]; arrowHeight = cellFrame.size.height / 3.0; arrowWidth = ceil (arrowHeight * 1.3); if (comparisonResult != NSOrderedSame) { NSDivideRect (cellFrame, &arrowFrame, &remainingFrame, arrowWidth + arrowOffset, NSMaxXEdge); refPoint = RelativePoint (NSMakePoint (0, (cellFrame.size.height - arrowHeight) / 2), arrowFrame.origin); [self _drawArrowOfSize: NSMakeSize (arrowWidth, arrowHeight) flipped: [controlView isFlipped] atReferencePoint: refPoint]; } } - (void) setComparisonResult: (NSComparisonResult) result { comparisonResult = result; } - (NSSize) cellSize { NSSize size; size = [super cellSize]; size.width += ceil ((size.height * 1.3) / 3.0) + arrowOffset; return size; } - (float) widthOfText: (NSString *) text { NSSize size; size = [self cellSize]; return ([self widthOfText: text] + ceil ((size.height * 1.3) / 3.0) + arrowOffset ); } @end Cynthiune-1.0.0/CynthiuneInfo.plist000644 001751 000024 00000010646 12075005017 020002 0ustar00multixstaff000000 000000 { ApplicationDescription = "A free and romantic music player"; ApplicationName = Cynthiune; ApplicationRelease = 1.0.0; NSIcon = Cynthiune.tiff; URL = "http://gap.nongnu.org/cynthiune/"; Authors = ( "Wolfgang Sourdeau ", "The GNUstep Application Team" ); Copyright = "Copyright \U00a9 2002-2006 by Wolfgang Sourdeau\n 2012-2013 The GNUstep Application Project"; CopyrightDescription = "Released under the GNU General Public License 2.0 or later"; FullVersionID = "1.0.0 (01 2013)"; NSTypes = ( { NSUnixExtensions = ( "format" ); NSHumanReadableName = "Music format plugin for Cynthiune"; }, { NSUnixExtensions = ( "output" ); NSHumanReadableName = "Output plugin for Cynthiune"; }, { NSUnixExtensions = ( "m3u", "pls" ); NSHumanReadableName = "Music playlist file"; NSIcon = "Cynthiune-playlist-48.tiff"; NSRole = "Viewer"; NSMIMETypes = ( "audio/mpegurl", "audio/x-mpegurl", "audio/scpls", "audio/x-scpls" ); }, { NSUnixExtensions = ( "ogg" ); NSHumanReadableName = "Ogg music file"; NSIcon = "Cynthiune-song-48.tiff"; NSRole = Viewer; NSMIMETypes = ( "application/ogg", "application/x-ogg" ); }, { NSUnixExtensions = ( "fla", "flac" ); NSHumanReadableName = "FLAC music file"; NSIcon = "Cynthiune-song-48.tiff"; NSRole = Viewer; NSMIMETypes = ( "audio/flac", "audio/x-flac" ); }, { NSUnixExtensions = ( "mp3", "mp2", "mpa", "mpga", "mpega" ); NSHumanReadableName = "MPEG music file"; NSIcon = "Cynthiune-song-48.tiff"; NSRole = "Viewer"; NSMIMETypes = ( "audio/mpeg", "audio/x-mpeg", "audio/mpeg3", "audio/x-mpeg3", "audio/mpg", "audio/x-mpg", "audio/mp3", "audio/x-mp3" ); }, { NSUnixExtensions = ( "mpc", "mp+" ); NSHumanReadableName = "Musepack music file"; NSIcon = "Cynthiune-song-48.tiff"; NSRole = "Viewer"; NSMIMETypes = ( "audio/musepack", "audio/x-musepack" ); }, { NSUnixExtensions = ( "asf", "wma" ); NSHumanReadableName = "Windows Media file"; NSIcon = "Cynthiune-song-48.tiff"; NSRole = "Viewer"; NSMIMETypes = ( "audio/x-ms-wma" ); }, { NSUnixExtensions = ( "669", "amf", "ams", "dbm", "dmf", "dsm", "far", "it", "j2b", "mdl", "med", "mod", "mt2", "mtm", "okt", "psm", "ptm", "s3m", "stm", "ult", "umx", "mod", "xm" ); NSHumanReadableName = "Tracker music file"; NSIcon = "Cynthiune-song-48.tiff"; NSRole = "Viewer"; NSMIMETypes = ( "audio/669", "audio/amf", "audio/ams", "audio/dbm", "audio/dmf", "audio/dsm", "audio/far", "audio/it", "audio/j2b", "audio/mdl", "audio/med", "audio/mod", "audio/mt2", "audio/mtm", "audio/okt", "audio/psm", "audio/ptm", "audio/s3m", "audio/stm", "audio/ult", "audio/umx", "audio/mod", "audio/xm", "audio/x-669", "audio/x-amf", "audio/x-ams", "audio/x-dbm", "audio/x-dmf", "audio/x-dsm", "audio/x-far", "audio/x-it", "audio/x-j2b", "audio/x-mdl","audio/x-med", "audio/x-mod", "audio/x-mt2", "audio/x-mtm", "audio/x-okt", "audio/x-psm", "audio/x-ptm", "audio/x-s3m", "audio/x-stm", "audio/x-ult", "audio/x-umx", "audio/x-mod", "audio/x-xm" ); }, { NSUnixExtensions = ( "aif", "aifc", "aiff", "au", "avr", "iff", "nist", "snd", "wav" ); NSHumanReadableName = "Sound file"; NSIcon = "Cynthiune-song-48.tiff"; NSRole = "Viewer"; NSMIMETypes = ( "audio/aiff", "audio/x-aiff", "audio/basic", "audio/x-basic", "audio/au", "audio/x-au", "audio/x-ulaw", "audio/avr", "audio/x-avr", "application/iff", "application/x-iff", "audio/nist", "audio/x-nist", "audio/snd", "audio/x-snd", "audio/wav", "audio/x-wav" ); }, ); } Cynthiune-1.0.0/CynthiunePauseButton.h000644 001751 000024 00000002656 12112463315 020457 0ustar00multixstaff000000 000000 /* CynthiunePauseButton.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNEPAUSEBUTTON_H #define CYNTHIUNEPAUSEBUTTON_H #import #if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4) #ifndef NSUInteger #define NSUInteger unsigned #endif #ifndef NSInteger #define NSInteger int #endif #ifndef CGFloat #define CGFloat float #endif #endif @class NSImage; @class NSTimer; @interface CynthiunePauseButton : NSButton { NSImage *primaryImage; NSImage *secondaryImage; NSTimer *animationTimer; BOOL animationStatus; BOOL animate; } @end #endif /* CYNTHIUNEPAUSEBUTTON_H */ Cynthiune-1.0.0/CynthiuneTextCell.h000644 001751 000024 00000002354 11733546643 017743 0ustar00multixstaff000000 000000 /* CynthiuneTextCell.h - this file is part of $PROJECT_NAME_HERE$ * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNETEXTCELL_H #define CYNTHIUNETEXTCELL_H #import @class NSColor; @protocol NSCoding; @protocol NSCopying; @interface CynthiuneTextCell : NSTextFieldCell { NSColor *highlightColor; } - (void) setHighlightColor: (NSColor *) color; - (NSColor *) highlightColor; @end #endif /* CYNTHIUNETEXTCELL_H */ Cynthiune-1.0.0/CynthiunePauseButton.m000644 001751 000024 00000005400 12112243634 020452 0ustar00multixstaff000000 000000 /* CynthiunePauseButton.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import "CynthiunePauseButton.h" @implementation CynthiunePauseButton : NSButton - (id) init { self = [super init]; if (self) { animationTimer = nil; primaryImage = nil; secondaryImage = nil; animate = NO; animationStatus = NO; } return self; } - (void) dealloc { if (primaryImage) [primaryImage release]; if (secondaryImage) [primaryImage release]; [super dealloc]; } - (void) _animate { if (animationStatus) { [super setImage: primaryImage]; animationStatus = NO; } else { [super setImage: secondaryImage]; animationStatus = YES; } } - (void) _startAnimation { [super setImage: secondaryImage]; animationStatus = YES; animationTimer = [NSTimer scheduledTimerWithTimeInterval: 0.65 target: self selector: @selector (_animate) userInfo: nil repeats: YES]; [animationTimer explode]; } - (void) _stopAnimation { [animationTimer invalidate]; animationTimer = nil; [super setImage: primaryImage]; } - (void) setImage: (NSImage *) image { [super setImage: image]; SET (primaryImage, image); } - (void) setAlternateImage: (NSImage *) image { SET (secondaryImage, image); } - (void) setState: (NSInteger) state { if ([self isEnabled]) { if (state) { if (!animate) { [self _startAnimation]; animate = YES; } } else { if (animate) { [self _stopAnimation]; animate = NO; } } } [super setState: state]; } @end Cynthiune-1.0.0/CynthiunePopUpButton.h000644 001751 000024 00000002166 11733546660 020456 0ustar00multixstaff000000 000000 /* CynthiunePopUpButton.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNEPOPUPBUTTON_H #define CYNTHIUNEPOPUPBUTTON_H #import @class NSString; @interface CynthiunePopUpButton : NSPopUpButton { } - (void) addItemWithTitle: (NSString *) aTitle; @end #endif /* CYNTHIUNEPOPUPBUTTON_H */ Cynthiune-1.0.0/CynthiunePopUpButton.m000644 001751 000024 00000002131 11733546644 020455 0ustar00multixstaff000000 000000 /* CynthiunePopUpButton.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import "CynthiunePopUpButton.h" @implementation CynthiunePopUpButton : NSPopUpButton - (void) addItemWithTitle: (NSString *) aTitle { [super addItemWithTitle: aTitle]; [self setEnabled: ([self numberOfItems] > 1)]; } @end Cynthiune-1.0.0/CynthiuneSliderCell.h000644 001751 000024 00000002167 11733546660 020242 0ustar00multixstaff000000 000000 /* CynthiuneSliderCell.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNESLIDERCELL_H #define CYNTHIUNESLIDERCELL_H #import @class NSImage; @interface CynthiuneSliderCell : NSSliderCell { NSCell *knobCell; } - (void) setEnabled: (BOOL) enabled; @end #endif /* CYNTHIUNESLIDERCELL_H */ Cynthiune-1.0.0/CynthiuneSliderCell.m000644 001751 000024 00000004660 11733546651 020247 0ustar00multixstaff000000 000000 /* CynthiuneSliderCell.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import "CynthiuneSliderCell.h" @implementation CynthiuneSliderCell : NSSliderCell - (id) init { if ((self = [super init])) { knobCell = [NSCell new]; } return self; } - (void) setEnabled: (BOOL) enabled { [super setEnabled: enabled]; [knobCell setImage: [NSImage imageNamed: ((enabled) ? @"slider-knob-enabled" : @"slider-knob-disabled")]]; } - (void) drawKnob: (NSRect) rect { [knobCell drawInteriorWithFrame: rect inView: [self controlView]]; } - (void) drawBarInside: (NSRect) cellFrame flipped: (BOOL) flipped; { NSRect rect; rect = cellFrame; [[NSColor controlShadowColor] set]; rect.size.width = 1; rect.size.height = 1; rect.origin.y += (cellFrame.size.height - 4) / 2 + 2; NSRectFill (rect); rect.origin.y += 1; NSRectFill (rect); rect.origin.x += 1; rect.size.width = cellFrame.size.width - 2; rect.origin.y++; NSRectFill (rect); [[NSColor highlightColor] set]; rect.origin.x = NSMaxX (cellFrame) - 1; rect.size.width = 1; rect.origin.y--; NSRectFill (rect); rect.origin.y--; NSRectFill (rect); rect.origin.x = NSMinX (cellFrame) + 1; rect.size.width = NSWidth (cellFrame) - 2; rect.origin.y--; NSRectFill (rect); } - (BOOL) isOpaque { return NO; } - (float) knobThickness { NSSize size; size = [[knobCell image] size]; return size.height; } @end Cynthiune-1.0.0/CynthiuneSongTitleCell.h000644 001751 000024 00000002404 11733546651 020722 0ustar00multixstaff000000 000000 /* CynthiuneSongTitleCell.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNESONGTITLECELL_H #define CYNTHIUNESONGTITLECELL_H @interface CynthiuneSongTitleCell : CynthiuneTextCell { NSImage *songPointer; NSSize imageSize; BOOL imageShown; } - (void) setPointerImage: (NSImage *) pointerImage; - (NSImage *) pointerImage; - (void) setShowImage: (BOOL) showImage; - (BOOL) showImage; @end #endif /* CYNTHIUNESONGTITLECELL_H */ Cynthiune-1.0.0/CynthiuneSongTitleCell.m000644 001751 000024 00000007565 11733564433 020742 0ustar00multixstaff000000 000000 /* CynthiuneSongTitleCell.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import "CynthiuneTextCell.h" #import "CynthiuneSongTitleCell.h" #define imageOffset 2.0 @implementation CynthiuneSongTitleCell : CynthiuneTextCell - (id) init { if ((self = [super init])) { songPointer = nil; imageSize = NSMakeSize (0.0, 0.0); imageShown = NO; } return self; } - (void) dealloc { if (songPointer) [songPointer release]; [super dealloc]; } - (void) setShowImage: (BOOL) showImage { imageShown = showImage; } - (BOOL) showImage { return imageShown; } - (void) setPointerImage: (NSImage *) pointerImage { SET (songPointer, pointerImage); imageSize = ((songPointer) ? [songPointer size] : NSMakeSize (0.0, 0.0)); } - (NSImage *) pointerImage { return songPointer; } - (void) drawWithFrame: (NSRect) cellFrame inView: (NSView *) controlView { NSRect aFrame, imageFrame; NSDivideRect (cellFrame, &aFrame, &cellFrame, 3.0 + imageOffset + imageSize.width, NSMinXEdge); imageFrame = aFrame; imageFrame.size = imageSize; imageFrame.size.width += 3.0 + imageOffset; if ([self drawsBackground]) { [[self backgroundColor] set]; NSRectFill (aFrame); } if ([self isHighlighted]) { [[self highlightColor] set]; NSRectFill (aFrame); } if (imageShown) { aFrame.size = imageSize; aFrame.origin.x += imageOffset; aFrame.origin.y += ((cellFrame.size.height + 1.0 + ([controlView isFlipped] ? aFrame.size.height : -aFrame.size.height)) / 2); [songPointer compositeToPoint: aFrame.origin operation: NSCompositeSourceOver]; } [super drawWithFrame: cellFrame inView: controlView]; } - (NSSize) cellSize { NSSize aSize; aSize = [super cellSize]; aSize.width += imageSize.width + imageOffset + 3.0; return aSize; } - (float) widthOfText: (NSString *) text { return ([super widthOfText: text] + imageSize.width + imageOffset + 3.0); } /* NSCopying protocol */ - (id) copyWithZone: (NSZone *) theZone { CynthiuneSongTitleCell *newTitleCell; newTitleCell = [[CynthiuneSongTitleCell allocWithZone: theZone] init]; [newTitleCell setPointerImage: songPointer]; [newTitleCell setShowImage: imageShown]; return newTitleCell; } /* NSCoding protocol */ - (void) encodeWithCoder: (NSCoder *) encoder { [super encodeWithCoder: encoder]; [encoder encodeBool: imageShown forKey: @"imageShown"]; [encoder encodeObject: songPointer forKey: @"songPointer"]; } - (id) initWithCoder: (NSCoder *) decoder { if ((self = [super initWithCoder: decoder])) { imageShown = [decoder decodeBoolForKey: @"imageShown"]; songPointer = [decoder decodeObjectForKey: @"songPointer"]; if (songPointer) [songPointer retain]; } return self; } @end Cynthiune-1.0.0/CynthiuneTextCell.m000644 001751 000024 00000005640 11733546651 017750 0ustar00multixstaff000000 000000 /* CynthiuneTextCell.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import "CynthiuneTextCell.h" @implementation CynthiuneTextCell : NSTextFieldCell - (id) init { if ((self = [super init])) { highlightColor = nil; } return self; } - (void) dealloc { if (highlightColor) [highlightColor release]; [super dealloc]; } - (void) setHighlightColor: (NSColor *) color { SET (highlightColor, color); } - (NSColor *) highlightColor { return highlightColor; } - (NSColor*) highlightColorWithFrame: (NSRect) cellFrame inView: (NSView *) controlView { return highlightColor; } #ifdef GNUSTEP /* GNUSTEP is buggy so we work around */ - (void) drawWithFrame: (NSRect) cellFrame inView: (NSView *) controlView { BOOL drawsBackground, isHighlighted; drawsBackground = [self drawsBackground]; isHighlighted = [self isHighlighted]; if (isHighlighted) { if (drawsBackground) { [[self backgroundColor] set]; NSRectFill (cellFrame); [self setDrawsBackground: NO]; } [[self highlightColor] set]; NSRectFill (cellFrame); } [super drawWithFrame: cellFrame inView: controlView]; if (drawsBackground && isHighlighted) [self setDrawsBackground: YES]; } #endif /* NSCopying protocol */ - (id) copyWithZone: (NSZone *) theZone { CynthiuneTextCell *newTextCell; newTextCell = [[CynthiuneTextCell allocWithZone: theZone] init]; [newTextCell setHighlightColor: highlightColor]; return newTextCell; } /* NSCoding protocol */ - (void) encodeWithCoder: (NSCoder *) encoder { [super encodeWithCoder: encoder]; [encoder encodeObject: highlightColor forKey: @"highlightColor"]; } - (id) initWithCoder: (NSCoder *) decoder { if ((self = [super initWithCoder: decoder])) { if (highlightColor) [highlightColor release]; highlightColor = [decoder decodeObjectForKey: @"highlightColor"]; if (highlightColor) [highlightColor retain]; } return self; } @end Cynthiune-1.0.0/CynthiuneWindow.h000644 001751 000024 00000002241 11733546655 017464 0ustar00multixstaff000000 000000 /* CynthiuneWindow.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import @interface CynthiuneWindow : NSWindow { } #ifndef GNUSTEP - (id) initWithContentRect: (NSRect) contentRect styleMask: (unsigned int) styleMask backing: (NSBackingStoreType) bufferingType defer: (BOOL) flag; #endif @end Cynthiune-1.0.0/CynthiuneWindow.m000644 001751 000024 00000003044 11733546660 017467 0ustar00multixstaff000000 000000 /* CynthiuneWindow.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import "GeneralPreference.h" #import "CynthiuneWindow.h" @implementation CynthiuneWindow : NSWindow #ifndef GNUSTEP - (id) initWithContentRect: (NSRect) contentRect styleMask: (unsigned int) styleMask backing: (NSBackingStoreType) bufferingType defer: (BOOL) flag { if ([[GeneralPreference instance] windowsAreTextured]) styleMask |= NSTexturedBackgroundWindowMask; else styleMask &= ~NSTexturedBackgroundWindowMask; return [super initWithContentRect: contentRect styleMask: styleMask backing: bufferingType defer: flag]; } #endif @end Cynthiune-1.0.0/DictionaryCoder.h000644 001751 000024 00000003040 11733546646 017406 0ustar00multixstaff000000 000000 /* DictionaryCoder.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef DICTIONARYCODER_H #define DICTIONARYCODER_H #import @class NSMutableDictionary; @class NSString; @interface DictionaryCoder : NSCoder { NSMutableDictionary *dictionary; } - (void) encodeObject: (id) anObject forKey: (NSString *) aKey; - (void) encodeBool: (BOOL) aBool forKey: (NSString *) aKey; - (void) encodeInt: (int) anInteger forKey: (NSString *) aKey; - (void) encodeInt64: (int64_t) anInteger forKey: (NSString *) aKey; - (id) decodeObjectForKey: (NSString *) aKey; - (BOOL) decodeBoolForKey: (NSString *) aKey; - (int) decodeIntForKey: (NSString *) aKey; - (int64_t) decodeInt64ForKey: (NSString *) aKey; @end #endif /* DICTIONARYCODER_H */ Cynthiune-1.0.0/DictionaryCoder.m000644 001751 000024 00000006012 11733546651 017411 0ustar00multixstaff000000 000000 /* DictionaryCoder.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import "DictionaryCoder.h" @implementation DictionaryCoder : NSCoder - (id) init { if ((self = [super init])) { dictionary = [[NSMutableDictionary alloc] init]; } return self; } - (void) dealloc { [dictionary release]; [super dealloc]; } - (void) encodeObject: (id) anObject forKey: (NSString *) aKey { [dictionary setObject: anObject forKey: aKey]; } - (void) encodeBool: (BOOL) aBool forKey: (NSString*) aKey { NSNumber *boolValue; boolValue = [NSNumber numberWithBool: aBool]; [dictionary setObject: boolValue forKey: aKey]; } - (void) encodeInt: (int) anInteger forKey: (NSString*) aKey { NSNumber *intValue; intValue = [NSNumber numberWithInt: anInteger]; [dictionary setObject: intValue forKey: aKey]; } - (void) encodeInt64: (int64_t) anInteger forKey: (NSString*) aKey { NSNumber *int64Value; int64Value = [NSNumber numberWithLongLong: anInteger]; [dictionary setObject: int64Value forKey: aKey]; } - (id) decodeObjectForKey: (NSString *) aKey { id object; if (aKey) object = [dictionary objectForKey: aKey]; else { object = nil; raiseException (@"'nil' key", @"nil 'key' parameter"); } return object; } - (BOOL) decodeBoolForKey: (NSString*) aKey { BOOL boolValue; if (aKey) boolValue = [[dictionary objectForKey: aKey] boolValue]; else { boolValue = NO; raiseException (@"'nil' key", @"nil 'key' parameter"); } return boolValue; } - (int) decodeIntForKey: (NSString*) aKey { int intValue; if (aKey) intValue = [[dictionary objectForKey: aKey] intValue]; else { intValue = -1; raiseException (@"'nil' key", @"nil 'key' parameter"); } return intValue; } - (int64_t) decodeInt64ForKey: (NSString*) aKey { int64_t int64Value; id object; if (aKey) { object = [dictionary objectForKey: aKey]; int64Value = ((object) ? [object longLongValue] : 0LL); } else { int64Value = -1; raiseException (@"'nil' key", @"nil 'key' parameter"); } return int64Value; } @end Cynthiune-1.0.0/FormatTester.h000644 001751 000024 00000003215 11733546645 016746 0ustar00multixstaff000000 000000 /* FormatTester.h - this file is part of Cynthiune * * Copyright (C) 2003, 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef FormatTester_H #define FormatTester_H #import @class NSArray; @class NSMutableArray; @class NSString; @interface FormatTester : NSObject { NSMutableArray *formatList; NSMutableArray *extensionsList; } + (id) formatTester; - (void) registerFormatClass: (Class) aClass; - (NSArray *) acceptedFileExtensions; - (BOOL) formatClass: (Class) format acceptsFileExtension: (NSString *) extension; - (Class) formatClassForFileExtension: (NSString *) extension; - (Class) formatClassAtIndex: (unsigned int) formatNumber; - (int) formatNumberForFile: (NSString *) file; - (Class) formatClassForFile: (NSString *) file; - (BOOL) extensionIsSupported: (NSString *) extension; - (BOOL) fileIsPlaylist: (NSString *) filename; @end #endif /* FormatTester_H */ Cynthiune-1.0.0/FormatTester.m000644 001751 000024 00000011603 11733546646 016754 0ustar00multixstaff000000 000000 /* FormatTester.m - this file is part of Cynthiune * * Copyright (C) 2003, 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import "FormatTester.h" @implementation FormatTester : NSObject + (id) formatTester { static FormatTester *singleton = nil; if (!singleton) singleton = [self new]; return singleton; } - (id) init { if ((self = [super init])) { formatList = [NSMutableArray array]; extensionsList = [NSMutableArray array]; [formatList retain]; [extensionsList retain]; } return self; } - (void) registerFormatClass: (Class) aClass { if ([aClass conformsToProtocol: @protocol(Format)]) { [formatList addObject: aClass]; [extensionsList addObjectsFromArray: [aClass acceptedFileExtensions]]; } else NSLog (@"Class '%@' not conform to 'Format' protocol...\n", NSStringFromClass (aClass)); } - (NSArray *) acceptedFileExtensions { return extensionsList; } - (Class) formatClassAtIndex: (unsigned int) formatNumber { Class formatClass; if (formatNumber < [formatList count]) formatClass = [formatList objectAtIndex: formatNumber]; else formatClass = Nil; return formatClass; } - (BOOL) formatClass: (Class) formatClass acceptsFileExtension: (NSString *) extension { unsigned int count, max; BOOL result; NSArray *extensions; NSString *currentExtension; result = NO; if ([formatList containsObject: formatClass]) { extensions = [formatClass acceptedFileExtensions]; max = [extensions count]; count = 0; while (count < max && !result) { currentExtension = [extensions objectAtIndex: count]; result = ([extension caseInsensitiveCompare: currentExtension] == NSOrderedSame); count++; } } return result; } - (Class) formatClassForFileExtension: (NSString *) extension { unsigned int count, max; Class currentFormatClass, resultClass; count = 0; max = [formatList count]; resultClass = nil; while (count < max && !resultClass) { currentFormatClass = [formatList objectAtIndex: count]; if ([self formatClass: currentFormatClass acceptsFileExtension: extension]) resultClass = currentFormatClass; count++; } return resultClass; } - (int) formatNumberForFile: (NSString *) file { Class testClass; int formatNumber, count; formatNumber = -1; count = 0; while (formatNumber == -1 && count < [formatList count]) { testClass = [formatList objectAtIndex: count]; if (([testClass canTestFileHeaders] && [testClass streamTestOpen: file]) || [self formatClass: testClass acceptsFileExtension: [file pathExtension]]) formatNumber = count; else count++; } return formatNumber; } - (Class) formatClassForFile: (NSString *) file { int formatNumber; Class formatClass; formatNumber = [self formatNumberForFile: file]; if (formatNumber > -1) formatClass = [formatList objectAtIndex: formatNumber]; else formatClass = Nil; return formatClass; } - (BOOL) extensionIsSupported: (NSString *) extension { NSMutableArray *extensions; NSString *currentExtension; BOOL result; unsigned int count, max; result = NO; extensions = [NSMutableArray arrayWithObjects: @"m3u", @"pls", @"cPls", nil]; [extensions addObjectsFromArray: extensionsList]; count = 0; max = [extensions count]; while (!result && count < max) { currentExtension = [extensions objectAtIndex: count]; result = ([currentExtension caseInsensitiveCompare: extension] == NSOrderedSame); count++; } return result; } - (BOOL) fileIsPlaylist: (NSString *) filename { NSString *extension; extension = [filename pathExtension]; return ([extension caseInsensitiveCompare: @"cPls"] == NSOrderedSame || [extension caseInsensitiveCompare: @"m3u"] == NSOrderedSame || [extension caseInsensitiveCompare: @"pls"] == NSOrderedSame); } @end Cynthiune-1.0.0/GNUmakefile000644 001751 000024 00000013551 11754426577 016240 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003-2006 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # include $(GNUSTEP_MAKEFILES)/common.make FRAMEWORKS_DIRS = Frameworks/Cynthiune FRAMEWORKS = Cynthiune # # Subprojects # BUNDLES = ifneq (yes,$(disable-bundles)) ifneq (yes,$(disable-mp3)) BUNDLES += MP3 ifneq (yes,$(disable-id3tag)) BUNDLES += ID3Tag endif endif ifneq (yes,$(disable-ogg)) BUNDLES += Ogg ifneq (yes,$(disable-vorbistags)) BUNDLES += VorbisTags endif endif ifneq (yes,$(disable-audiofile)) BUNDLES += AudioFile endif ifneq (yes,$(disable-flac)) BUNDLES += FLAC ifneq (yes,$(disable-flactags)) BUNDLES += FLACTags endif endif ifneq (yes,$(disable-mod)) BUNDLES += Mod endif ifneq (yes,$(disable-windowsmedia)) BUNDLES += WindowsMedia endif ifneq (yes,$(disable-musepack)) BUNDLES += Musepack endif ifneq (yes,$(disable-timidity)) BUNDLES += Timidity endif ifneq (yes,$(disable-taglib)) BUNDLES += Taglib endif ifneq (yes,$(disable-asftags)) BUNDLES += ASFTags endif ifeq (mingw32,$(GNUSTEP_TARGET_OS)) ifneq (yes,$(disable-waveout)) BUNDLES += WaveOut endif else # GNUSTEP_TARGET_OS is defined to `linux-gnueabi' on armel and # `linux-gnuspe' on powerpcspe. ifneq (,$(findstring linux-gnu,$(GNUSTEP_TARGET_OS))) ifneq (yes,$(disable-alsa)) BUNDLES += ALSA endif endif ifneq (yes,$(disable-oss)) BUNDLES += OSS endif # sndio is OpenBSD only ifeq ($(findstring openbsd, $(GNUSTEP_TARGET_OS)), openbsd) ifneq (yes,$(disable-sndio)) BUNDLES += Sndio endif endif ifneq (yes,$(disable-esound)) BUNDLES += Esound endif ifneq (yes,$(disable-ao)) BUNDLES += AO endif # disable arts by default, rarely used ifeq (yes,$(enable-arts)) BUNDLES += aRts endif endif endif SUBPROJECTS = Frameworks/Cynthiune $(addprefix Bundles/,$(BUNDLES)) # # Main application # PACKAGE_NAME=Cynthiune APP_NAME=Cynthiune VERSION=1.0.0 Cynthiune_APPLICATION_ICON=Cynthiune.tiff Cynthiune_MAIN_MODEL_FILE=Cynthiune.gorm Cynthiune_LANGUAGES= \ Armenian English French German Hungarian Italian \ Slovak Spanish TraditionalChinese Cynthiune_LOCALIZED_RESOURCE_FILES=Localizable.strings # # Additional libraries # ADDITIONAL_GUI_LIBS += # # Resource files # NIB_FILES = \ Cynthiune.gorm \ GeneralPreference.gorm \ Preferences.gorm \ SongInspector.gorm buttons_IMAGE_FILES = \ Images/add.tiff \ Images/cleanup.tiff \ Images/eject.tiff \ Images/eject-pushed.tiff \ Images/next.tiff \ Images/next-pushed.tiff \ Images/pause.tiff \ Images/pause-pushed.tiff \ Images/play.tiff \ Images/play-pushed.tiff \ Images/playlist.tiff \ Images/playlist-pushed.tiff \ Images/previous.tiff \ Images/previous-pushed.tiff \ Images/remove.tiff \ Images/repeat.tiff \ Images/repeat-pushed.tiff \ Images/save-as.tiff \ Images/shuffle.tiff \ Images/shuffle-pushed.tiff \ Images/song-inspector.tiff \ Images/song-inspector-pushed.tiff \ Images/stop.tiff \ Images/stop-pushed.tiff Cynthiune_RESOURCE_FILES= \ Images/Cynthiune.tiff \ Images/Cynthiune-song-48.tiff \ Images/Cynthiune-playlist-48.tiff \ Images/cynthiune-splash.tiff \ Images/cynthiune-splash-faded.tiff \ Images/anim-logo-1.tiff \ Images/anim-logo-2.tiff \ Images/anim-logo-3.tiff \ Images/anim-logo-4.tiff \ Images/anim-logo-5.tiff \ Images/anim-logo-6.tiff \ Images/anim-logo-7.tiff \ Images/anim-logo-8.tiff \ Images/lock.tiff \ Images/lookup-mb-on.tiff \ Images/lookup-mb-off.tiff \ Images/dragged-song.tiff \ Images/dragged-songs.tiff \ Images/slider-knob-disabled.tiff \ Images/slider-knob-enabled.tiff \ Images/song-pointer.tiff \ Images/common_ToolbarSeparatorItem.tiff \ $(buttons_IMAGE_FILES) \ $(NIB_FILES) \ COPYING # # Header files # Cynthiune_HEADERS= \ BundleManager.h \ CynthiuneAnimatedImageView.h \ CynthiuneController.h \ CynthiuneFadingTextField.h \ CynthiuneHeaderCell.h \ CynthiunePauseButton.h \ CynthiunePopUpButton.h \ CynthiuneSliderCell.h \ CynthiuneSongTitleCell.h \ CynthiuneTextCell.h \ CynthiuneWindow.h \ DictionaryCoder.h \ FormatTester.h \ GeneralPreference.h \ InfoDisplayController.h \ M3UArchiver.h \ MBResultsPanel.h \ Player.h \ PlayerController.h \ PlayerPreference.h \ Playlist.h \ PlaylistArchiver.h \ PlaylistController.h \ PlaylistView.h \ PlaylistViewController.h \ PLSArchiver.h \ PreferencesController.h \ Song.h \ SongInspectorController.h # # Class files # Cynthiune_OBJC_FILES= \ main.m \ BundleManager.m \ CynthiuneAnimatedImageView.m \ CynthiuneController.m \ CynthiuneFadingTextField.m \ CynthiuneHeaderCell.m \ CynthiunePauseButton.m \ CynthiunePopUpButton.m \ CynthiuneSliderCell.m \ CynthiuneSongTitleCell.m \ CynthiuneTextCell.m \ CynthiuneWindow.m \ DictionaryCoder.m \ FormatTester.m \ GeneralPreference.m \ InfoDisplayController.m \ M3UArchiver.m \ MBResultsPanel.m \ Player.m \ PlayerController.m \ PlayerPreference.m \ Playlist.m \ PlaylistArchiver.m \ PlaylistController.m \ PlaylistView.m \ PlaylistViewController.m \ PLSArchiver.m \ PreferencesController.m \ Song.m \ SongInspectorController.m ifeq (yes,$(enable-goom)) Cynthiune_OBJC_FILES += GoomView.m endif ADDITIONAL_INCLUDE_DIRS += -IFrameworks include frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/aggregate.make include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble Cynthiune-1.0.0/GeneralPreference.h000644 001751 000024 00000004572 11733546646 017713 0ustar00multixstaff000000 000000 /* GeneralPreference.h - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef OUTPUTPREFERENCE_H #define OUTPUTPREFERENCE_H #import @class NSBox; @class NSMutableArray; @class NSMutableDictionary; @class NSTextField; @class NSWindow; @protocol Preference; @interface GeneralPreference : NSObject { NSMutableDictionary *preference; NSMutableArray *playersList; NSWindow *prefsWindow; id outputBundleSelector; id playlistFormatSelector; id playlistReferenceTypeToggle; id stickyWinToggle; id saveWindowsInformationToggle; #ifdef __MACOSX__ id texturedWindowsToggle; #endif NSBox *windowsBox; NSBox *playlistsBox; NSBox *outputModuleBox; NSTextField *playlistsFormatLabel; } - (GeneralPreference *) init; - (void) registerOutputClass: (Class) aClass; - (Class) preferredOutputClass; - (NSString *) preferredPlaylistFormat; - (BOOL) absolutePlaylistReferences; #ifdef __MACOSX__ - (BOOL) windowsAreTextured; #endif - (BOOL) windowsAreSticky; - (BOOL) saveWindowsInformation; - (void) saveInformation: (NSWindow *) aWindow forWindow: (NSString *) windowName; - (void) restoreInformation: (NSWindow *) aWindow forWindow: (NSString *) windowName; /* as a target */ - (void) outputBundleChanged: (id) sender; - (void) playlistFormatChanged: (id) sender; - (void) playlistReferenceTypeChanged: (id) sender; #ifdef __MACOSX__ - (void) texturedWindowsChanged: (id) sender; #endif - (void) stickyWindowsChanged: (id) sender; - (void) saveWindowsInformationChanged: (id) sender; @end #endif /* OUTPUTPREFERENCE_H */ Cynthiune-1.0.0/GeneralPreference.m000644 001751 000024 00000026314 11751032255 017700 0ustar00multixstaff000000 000000 /* GeneralPreference.m - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * 2012 The Free Software Foundation, Inc * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import "PreferencesController.h" #import "GeneralPreference.h" #define LOCALIZED(X) NSLocalizedString (X, nil) #ifdef __MACOSX__ #define defaultOutputBundle @"MacOSXPlayer" #else #ifdef __linux__ #define defaultOutputBundle @"ALSA" #else #ifdef __OpenBSD__ #define defaultOutputBundle @"Sndio" #else #ifdef __WIN32__ #define defaultOutputBundle @"WaveOut" #else #define defaultOutputBundle @"OSS" #endif #endif #endif #endif #define defaultPlaylistFormat @"m3u" @implementation GeneralPreference : NSObject + (id) instance { static GeneralPreference *singleton = nil; if (!singleton) singleton = [self new]; return singleton; } - (void) _initDefaults { NSString *outputBundle, *playlistFormat; NSNumber *windowsAreSticky, *saveWindowsInformation, *playlistReferenceType; NSMutableDictionary *windowsInformation; static BOOL initted = NO; #ifdef __MACOSX__ NSNumber *windowsAreTextured; #endif if (!initted) { outputBundle = [preference objectForKey: @"OutputBundle"]; if (!outputBundle || !([playersList containsObject: NSClassFromString (outputBundle)])) { outputBundle = defaultOutputBundle; [preference setObject: outputBundle forKey: @"OutputBundle"]; } playlistFormat = [preference objectForKey: @"PlaylistFormat"]; if (!playlistFormat || !([playlistFormat isEqualToString: @"m3u"] || [playlistFormat isEqualToString: @"pls"])) { playlistFormat = defaultPlaylistFormat; [preference setObject: playlistFormat forKey: @"PlaylistFormat"]; } playlistReferenceType = [preference objectForKey: @"AbsolutePlaylistReferences"]; if (!playlistReferenceType) { playlistReferenceType = [NSNumber numberWithBool: NO]; [preference setObject: playlistReferenceType forKey: @"AbsolutePlaylistReferences"]; } #ifdef __MACOSX__ windowsAreTextured = [preference objectForKey: @"TexturedWindows"]; if (!windowsAreTextured) { windowsAreTextured = [NSNumber numberWithBool: NO]; [preference setObject: windowsAreTextured forKey: @"TexturedWindows"]; } #endif windowsAreSticky = [preference objectForKey: @"StickyWindows"]; if (!windowsAreSticky) { windowsAreSticky = [NSNumber numberWithBool: YES]; [preference setObject: windowsAreSticky forKey: @"StickyWindows"]; } saveWindowsInformation = [preference objectForKey: @"SaveWindowsInformation"]; if (!saveWindowsInformation) { saveWindowsInformation = [NSNumber numberWithBool: YES]; [preference setObject: saveWindowsInformation forKey: @"SaveWindowsInformation"]; } windowsInformation = [preference objectForKey: @"WindowsInformation"]; if (!windowsInformation) { windowsInformation = [NSMutableDictionary dictionaryWithCapacity: 1]; } else { /* reading a preference looses the mutable attribute */ windowsInformation = [NSMutableDictionary dictionaryWithDictionary: windowsInformation]; } [preference setObject: windowsInformation forKey: @"WindowsInformation"]; initted = YES; } } - (GeneralPreference *) init { NSDictionary *tmpDict; if ((self = [super init])) { playersList = [NSMutableArray new]; tmpDict = [[NSUserDefaults standardUserDefaults] dictionaryForKey: @"GeneralPreference"]; preference = [NSMutableDictionary dictionaryWithDictionary: tmpDict]; [preference retain]; } return self; } - (void) save { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject: preference forKey: @"GeneralPreference"]; [defaults synchronize]; } - (void) registerOutputClass: (Class) aClass { if ([aClass conformsToProtocol: @protocol(Output)]) { if (![playersList containsObject: aClass]) [playersList addObject: aClass]; } else NSLog (@"Class '%@' not conform to the 'Output' protocol...\n", NSStringFromClass (aClass)); } - (Class) preferredOutputClass { [self _initDefaults]; return NSClassFromString ([preference objectForKey: @"OutputBundle"]); } - (NSString *) preferredPlaylistFormat { [self _initDefaults]; return [preference objectForKey: @"PlaylistFormat"]; } - (BOOL) absolutePlaylistReferences { [self _initDefaults]; return [[preference objectForKey: @"AbsolutePlaylistReferences"] boolValue]; } #ifdef __MACOSX__ - (BOOL) windowsAreTextured { NSNumber *windowsAreTextured; [self _initDefaults]; windowsAreTextured = [preference objectForKey: @"TexturedWindows"]; return [windowsAreTextured boolValue]; } #endif - (BOOL) windowsAreSticky { NSNumber *windowsAreSticky; [self _initDefaults]; windowsAreSticky = [preference objectForKey: @"StickyWindows"]; return [windowsAreSticky boolValue]; } - (BOOL) saveWindowsInformation { NSNumber *saveWindowsInformation; saveWindowsInformation = [preference objectForKey: @"SaveWindowsInformation"]; return [saveWindowsInformation boolValue]; } - (void) saveInformation: (NSWindow *) aWindow forWindow: (NSString *) windowName { NSMutableArray *information; NSMutableDictionary *windowsInformation; NSString *frameString; windowsInformation = [preference objectForKey: @"WindowsInformation"]; information = [NSMutableArray arrayWithCapacity: 3]; frameString = [aWindow stringWithSavedFrame]; [information addObject: frameString]; [windowsInformation setObject: information forKey: windowName]; [self save]; } - (void) restoreInformation: (NSWindow *) aWindow forWindow: (NSString *) windowName { NSMutableDictionary *windowsInformation; NSString *frameString; NSArray *information; windowsInformation = [preference objectForKey: @"WindowsInformation"]; information = [windowsInformation objectForKey: windowName]; if (information) { frameString = [information objectAtIndex: 0]; [aWindow setFrameFromString: frameString]; } } // Preference protocol - (NSString *) preferenceTitle { return LOCALIZED (@"General"); } - (NSView *) preferenceSheet { NSView *aView; [NSBundle loadNibNamed: @"GeneralPreference" owner: self]; aView = [prefsWindow contentView]; [aView retain]; [aView removeFromSuperview]; [prefsWindow release]; [aView autorelease]; return aView; } - (void) _initializeSelector { int count, max; Class currentClass; [outputBundleSelector removeAllItems]; max = [playersList count]; if (max > 0) { for (count = 0; count < max; count++) { currentClass = [playersList objectAtIndex: count]; [outputBundleSelector addItemWithTitle: NSStringFromClass (currentClass)]; } } else [outputBundleSelector addItemWithTitle: LOCALIZED (@"None")]; [outputBundleSelector sizeToFit]; [outputBundleSelector centerViewHorizontally]; } - (void) awakeFromNib { NSString *outputBundle; NSString *playlistFormat; NSNumber *toggleBool; [self _initDefaults]; #ifdef __MACOSX__ [texturedWindowsToggle setTitle: LOCALIZED (@"Textured")]; #endif [stickyWinToggle setTitle: LOCALIZED (@"Sticky")]; [saveWindowsInformationToggle setTitle: LOCALIZED (@"Remember location")]; [windowsBox setTitle: LOCALIZED (@"Windows")]; [playlistsBox setTitle: LOCALIZED (@"Playlists")]; [playlistReferenceTypeToggle setTitle: LOCALIZED (@"Use absolute filenames")]; [outputModuleBox setTitle: LOCALIZED (@"Output module")]; [playlistsFormatLabel setStringValue: LOCALIZED (@"Format")]; [self _initializeSelector]; outputBundle = [preference objectForKey: @"OutputBundle"]; [outputBundleSelector selectItemWithTitle: outputBundle]; playlistFormat = [self preferredPlaylistFormat]; [playlistFormatSelector selectItemWithTitle: [playlistFormat uppercaseString]]; toggleBool = [preference objectForKey: @"AbsolutePlaylistReferences"]; [playlistReferenceTypeToggle setState: [toggleBool boolValue]]; #ifdef __MACOSX__ toggleBool = [preference objectForKey: @"TexturedWindows"]; [texturedWindowsToggle setState: [toggleBool boolValue]]; #endif toggleBool = [preference objectForKey: @"StickyWindows"]; [stickyWinToggle setState: [toggleBool boolValue]]; toggleBool = [preference objectForKey: @"SaveWindowsInformation"]; [saveWindowsInformationToggle setState: [toggleBool boolValue]]; } - (void) dealloc { [playersList release]; [preference release]; [super dealloc]; } /* as a target */ - (void) outputBundleChanged: (id) sender { NSString *newTitle; newTitle = [sender titleOfSelectedItem]; [sender setTitle: newTitle]; [sender synchronizeTitleAndSelectedItem]; [preference setObject: newTitle forKey: @"OutputBundle"]; } - (void) playlistFormatChanged: (id) sender { NSString *newTitle; newTitle = [sender titleOfSelectedItem]; [sender setTitle: newTitle]; [sender synchronizeTitleAndSelectedItem]; [preference setObject: [newTitle lowercaseString] forKey: @"PlaylistFormat"]; } - (void) playlistReferenceTypeChanged: (id) sender { [preference setObject: [NSNumber numberWithBool: [sender state]] forKey: @"AbsolutePlaylistReferences"]; } #ifdef __MACOSX__ - (void) texturedWindowsChanged: (id) sender { [preference setObject: [NSNumber numberWithBool: [sender state]] forKey: @"TexturedWindows"]; } #endif - (void) stickyWindowsChanged: (id) sender { [preference setObject: [NSNumber numberWithBool: [sender state]] forKey: @"StickyWindows"]; } - (void) saveWindowsInformationChanged: (id) sender { [preference setObject: [NSNumber numberWithBool: [sender state]] forKey: @"SaveWindowsInformation"]; } @end Cynthiune-1.0.0/NEWS000644 001751 000024 00000021221 12014507040 014625 0ustar00multixstaff000000 000000 version ?.?.?: - MusicBrainz support is now optional, and updated to libmusicbrainz 5.x (preferable) or 3.x. Support for version 2.x has been removed as it is deprecated and unusable with the current server software. version 0.9.5: - some files were separated into a new Cynthiune framework, so that other developers can now start writing extension bundles and so that bundles do not have to rely on internal symbols either; - added support for WMA and ASF audio formats through the new WindowsMedia bundle; - added support for the MPC audio format through the new Musepack bundle; - added support for midi files through the Timidity bundle, which requires timidity to be installed; - added support for the aRts sound daemon through the new aRts output bundle; - added flags on GNUstep to ignore compilation of all or specific bundles: set disable-bundles or disable-{oss,esound,mod,mp3,ogg,flac,windowsmedia, musepack,timidity} to "yes" to do this; - song filenames can now be dragged from Cynthiune to other applications on MacOS X; - fixed a bug that could make the MP3 bundle hang forever when seeking the beginning of an empty file; - fixed a bug in the MP3 bundle where it would skip the first few frames of a tagged file; - the MP3 bundles returns a more accurate duration of buggy vbr files; - added a "Tools" menu; - added a Song inspector to display and edit song metadata; - added support for resolving song metadata through the MusicBrainz database; - we now use an image to indicate which song is currently playing instead of using the selection mechanism; - fixed a bug that would mess up the selection when the playlist was sorted; - added a playlist status label that displays the number of songs and the total time of the playlist, as well as the time taken by all the selected songs, if any; - fixed a bug that would crash Cynthiune and maybe screw the default playlist when a selection of songs was dragged to a position with a distance to the end of the playlist inferior to the amount of songs being dragged; - the playlist code has been totally rewritten to be modular. Meanwhile, playlists with relative filenames can now be saved and also read; - removed the "mute" button since considered useless; - the state of the player is saved in the preferences; - the playlist menus were replaced with a more convenient and standard toolbar; - added German translation, thanks to Julian Frede; - updated Italian translation; - added Hungarian translation, thanks to Andras; - added Traditional Chinese translation, thanks to Yen-Ju Chen; - added Spanish translation, thanks to Pablo Di Noto; - added Slovak translation, thanks to Saso Kiselkov; - added ability to manipulate the song selection with the keyboard in the playlist, the valid keys are the home, end and arrow keys (with or without shift) to alter the selection, delete and enter to remove songs and activate the selection in the player; - many GUI tweaking and enhancements. version 0.9.4: - made the Services menu and mechanism work again; - made the DnD of song filenames work properly on MacOSX, by complying with Apple's documentation; - added the ability to send a bug report from the Info menu; - activated the application menu; - fixed a bug that was recording the wrong date and size informations for songs in the stored playlist, reducing the speedup brought by the use of an NSKeyedArchive; - fixed a bug that was preventing the player to skip invalid songs; - fixed a bug that was requesting the player to start playing when the column headers were double-clicked on GNUstep; - fixed a bug in the Esound bundle that was preventing the socket to be reinitialized with the correct song rate and channels informations; - add a "Cleanup" entry in the "Remove" dropdown menu that performs the removal of all the songs that either were not recognized with their format or are missing in the filesystem. - fixed a bug that was preventing the OSS output bundle to start correctly when no dsp device was set in the preferences. version 0.9.3a: - this version now builds and runs on MacOS X again; version 0.9.3: - do not interpret command-line arguments starting with "-" as songs; - a bunch of new supported file formats were added: - added the Mod format module relying on libmodplug (thanks to Rob Burns), adding support for 23 types of tracker file formats (mod, s3m, ...); - added the AudioFile format module relying on libaudiofile, adding support for 7 types of uncompressed sound formats (wav, aiff, ...); - added the FLAC format module relying on libflac, adding support for the Free Lossless Audio Codec; - factory methods return autoreleased object by default, to comply with the coding standards; - reworked the player interface; - eradicated the memleaks (thanks to Ludovic Marcotte); - the column headers can now be used to sort the playlist in ascending and descending orders; - UTF16'd language dictionaries; - dropped embryonic support for OpenStep 4.2; - the timer is reversed directly when clicked; - when changing the selection in the playlist, the total time taken by the songs is displayed during one second; - the default playlist is saved in /Cynthiune/Playlist rather than in the defaults database (migration is transparent); - loading the default playlist is made faster by the use of NSKeyedArchiver/NSKeyedUnarchiver. - supported extensions appears case-insensitively in the open dialog; - fixed the display of UTF8-encoded song metadata; - added Italian translation (thanks to Roberto Pariset); - MacOSX users can select whether Cynthiune will display textured or regular windows; - the Esound and OSS drivers are no longer threaded, this makes the playing of songs faster to start since no lock has to be instantiated. - the output bundles and the output mechanism were redesigned and made simpler, cleaner; version 0.9.2: - fixed two buggy behaviours related to the playlist management, both when repeat is on and off; - unified interface files (nib/gorm); - fixed a bug related to the resizing of sticked playlist windows; - the preferences window won't crash the application any longer (thanks to Ludovic Marcotte); - the preference dialogs are now localized too; - the active playlist is synced to the defaults database so that we won't lose it anymore when Cynthiune crashes; - the MP3 bundle now has support for the RIFF encapsulation format as well as for the MPEG 1/2/2.5 Layer 1/2/3 formats; - Cynthiune can now be launched from its source directory without adapting the source code; - GNUstep and MacOSX releases are again on par with each other (thanks to my friend Cynthia for offering me her iMac); - the windows menu is enabled properly; - services that can manage filenames are made available in the "Services" menu, they will be given the list of selected song filenames as parameter; - the playlist can serve as a dragging source for music files to other applications and widget accepting NSFilenamePboardType objects; - major code cleanup (memleaks, coding conventions, refactoring); - the timer field can display the time remaining for the current song by clicking on it; - when the selection of songs is changing, the total time taken by those songs is displayed in the timer field; - dropped usage of that crappy Sodipodi piece of voodooware after losing an important file (see rant about free software in the README); - aesthetical details modified; version 0.9.1: - cosmetic changes (new buttons); - new pause button; - fixed crash in dummy output bundle; - new application icon, thanks to Mivil Deschênes ; version 0.9: - the sound stream is now handled by a different thread than the GUI (Esound/OSS); - French translation; - MP3 format is now supported through libmad; - Cynthiune keeps its playlist saved between sessions; - import/export playlists in .m3u and .pls; - we now accept input and output plugins as Bundles; - a bundle was added to support output to esd; - a basic implementation of a preferences system; - windows stickiness; - repeat and shuffle; - ability to change the current position in the song; - misc. interface enhancements; version 0.4: - bug fix version; version 0.3: - mute button works - "pause" implemented - file metadata (artist, song titles, ...) handled - timer displayed - new logo and better application icon - drag and drop: - list reorganization; - file dropping from workspace; - file dragged on the application's icon are opened; - correct window resizing; - quit when the window is closed; version 0.2: - make everything work as expected: don't crash unexpectedly, don't stop playing for strange reasons; version 0.1: - late Christmas release, very basic, full of bugs Local variables: mode: text End: Cynthiune-1.0.0/GoomView.h000644 001751 000024 00000002254 11733546660 016062 0ustar00multixstaff000000 000000 /* GoomView.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef GOOMVIEW_H #define GOOMVIEW_H #import @class NSTimer; @class NSBitmapImageRep; @interface GoomView : NSView { NSTimer *timer; NSBitmapImageRep *bitmap; unsigned int fps; PluginInfo *goom; } - (void) setFPS: (unsigned int) newFPS; - (PluginInfo *) goom; @end #endif /* GOOMVIEW_H */ Cynthiune-1.0.0/GoomView.m000644 001751 000024 00000005054 11733546646 016074 0ustar00multixstaff000000 000000 /* GoomView.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import "GoomView.h" #define step .01 // #define goomSizeX 320 // #define goomSizeY 200 @implementation GoomView : NSView - (id) initWithFrame: (NSRect) frameRect { static unsigned char *plane[1]; if ((self = [super initWithFrame: frameRect])) { goom = goom_init (frameRect.size.width, frameRect.size.width); plane[0] = goom->outputBuf; bitmap = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: plane pixelsWide: NSWidth (frameRect) pixelsHigh: NSHeight (frameRect) bitsPerSample: 8 samplesPerPixel: 4 hasAlpha: NO isPlanar: NO colorSpaceName: NSDeviceRGBColorSpace bytesPerRow: 0 bitsPerPixel: 32]; } return self; } - (void) _resetTimer { if (timer) [timer invalidate]; timer = [NSTimer scheduledTimerWithTimeInterval: (1.0 / fps) target: self selector: @selector (display) userInfo: nil repeats: YES]; [timer explode]; } - (void) setFPS: (unsigned int) newFPS { fps = newFPS; [self _resetTimer]; } // - (void) awakeFromNib // { // [self setFPS: 10]; // bitmap = nil; // } - (void) drawRect: (NSRect)rect { [bitmap draw]; } - (PluginInfo *) goom { return goom; } @end Cynthiune-1.0.0/InfoDisplayController.h000644 001751 000024 00000003263 11733546645 020617 0ustar00multixstaff000000 000000 /* InfoDisplayController.h - this file is part of Cynthiune * * Copyright (C) 2002, 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef InfoDisplayController_H #define InfoDisplayController_H @class CynthiuneFadingTextField; @class NSImageView; @class NSObject; @class NSTextField; @class NSTimer; @class Song; @interface InfoDisplayController : NSObject { NSImageView *splashImage; CynthiuneFadingTextField *songArtistField; CynthiuneFadingTextField *songAlbumField; CynthiuneFadingTextField *songNumberField; NSTextField *songTimerField; CynthiuneFadingTextField *songTitleField; NSTimer *hideTimer; BOOL reverseTimer; unsigned int totalTime; } - (void) initializeWidgets; - (void) show; - (void) hide; - (void) updateInfoFieldsFromSong: (Song *) aSong; - (void) setReverseTimer: (BOOL) reversed; - (BOOL) timerIsReversed; - (void) setTimerFromSeconds: (unsigned int) seconds; @end #endif /* InfoDisplayController_H */ Cynthiune-1.0.0/InfoDisplayController.m000644 001751 000024 00000010647 11733546650 020624 0ustar00multixstaff000000 000000 /* InfoDisplayController.m - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import "CynthiuneFadingTextField.h" #import "FormatTester.h" #import "InfoDisplayController.h" #import "Song.h" #define LOCALIZED(X) NSLocalizedString (X, nil) @implementation InfoDisplayController : NSObject - (void) initializeWidgets { NSFont *myFont; myFont = [NSFont boldSystemFontOfSize: 12.0]; [songTitleField setFont: myFont]; myFont = [NSFont systemFontOfSize: 12.0]; [songTimerField setFont: myFont]; [songNumberField setFont: myFont]; [songArtistField setFont: myFont]; [songAlbumField setFont: myFont]; [splashImage setImage: [NSImage imageNamed: @"cynthiune-splash"]]; [songTitleField setSelectable: NO]; [songNumberField setSelectable: NO]; [songArtistField setSelectable: NO]; [songAlbumField setSelectable: NO]; [songTitleField setStringValue: @""]; [songTimerField setStringValue: @""]; [songNumberField setStringValue: @""]; [songArtistField setStringValue: @""]; [songAlbumField setStringValue: @""]; } - (id) init { if ((self = [super init])) { hideTimer = nil; reverseTimer = NO; totalTime = 0; } return self; } - (void) show { if (hideTimer) { [hideTimer invalidate]; hideTimer = nil; } else { [splashImage setImage: [NSImage imageNamed: @"cynthiune-splash-faded"]]; [songTitleField setSelectable: YES]; [songNumberField setSelectable: YES]; [songArtistField setSelectable: YES]; [songAlbumField setSelectable: YES]; } } - (void) _reallyHide { [songTimerField setStringValue: @""]; [splashImage setImage: [NSImage imageNamed: @"cynthiune-splash"]]; [songTitleField setSelectable: NO]; [songNumberField setSelectable: NO]; [songArtistField setSelectable: NO]; [songAlbumField setSelectable: NO]; hideTimer = nil; } - (void) hide { float hideInterval; [songTitleField setStringValue: @""]; [songNumberField setStringValue: @""]; [songArtistField setStringValue: @""]; [songAlbumField setStringValue: @""]; if (hideTimer) [hideTimer invalidate]; hideInterval = ([songTitleField interval] * [songTitleField numberOfIterations]); hideTimer = [NSTimer scheduledTimerWithTimeInterval: hideInterval target: self selector: @selector (_reallyHide) userInfo: nil repeats: NO]; [hideTimer explode]; } - (void) updateInfoFieldsFromSong: (Song *) aSong { NSString *title; title = [aSong title]; if ([title isEqualToString: @""]) title = [NSString stringWithFormat: @"[%@]", [aSong filename]]; [songArtistField setStringValue: [aSong artist]]; [songAlbumField setStringValue: [aSong album]]; [songTitleField setStringValue: title]; [songNumberField setStringValue: [aSong trackNumber]]; totalTime = [[aSong duration] unsignedIntValue]; } - (void) setReverseTimer: (BOOL) reversed { reverseTimer = reversed; } - (BOOL) timerIsReversed { return reverseTimer; } - (void) _setTimerFromUnsignedInt: (unsigned int) timer { NSNumber *seconds; seconds = [NSNumber numberWithUnsignedInt: timer]; [songTimerField setStringValue: [seconds timeStringValue]]; } - (void) setTimerFromSeconds: (unsigned int) seconds { [self _setTimerFromUnsignedInt: ((reverseTimer) ? totalTime - seconds : seconds)]; } @end Cynthiune-1.0.0/M3UArchiver.h000644 001751 000024 00000002642 11733546651 016417 0ustar00multixstaff000000 000000 /* M3UArchiver.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef M3UARCHIVER_H #define M3UARCHIVER_H #import "PlaylistArchiver.h" @class NSArray; @class NSString; @interface M3UArchiver : PlaylistArchiver + (NSString *) fileContentFromDictionaries: (NSArray *) dictionaries inReferenceDirectory: (NSString *) directory withAbsoluteFilenameReferences: (BOOL) absolute; @end @interface M3UUnarchiver : PlaylistUnarchiver + (NSArray *) dictionariesFromFileContent: (NSString *) content inReferenceDirectory: (NSString *) directory; @end #endif /* M3UARCHIVER_H */ Cynthiune-1.0.0/M3UArchiver.m000644 001751 000024 00000006263 11733546651 016427 0ustar00multixstaff000000 000000 /* M3UArchiver.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import "DictionaryCoder.h" #import "M3UArchiver.h" @implementation M3UArchiver : PlaylistArchiver + (NSString *) fileContentFromDictionaries: (NSArray *) dictionaries inReferenceDirectory: (NSString *) directory withAbsoluteFilenameReferences: (BOOL) absolute { DictionaryCoder *coder; NSString *filename; NSMutableString *ctString; NSEnumerator *enumerator; ctString = [NSMutableString stringWithString: @"#EXTM3U\r\n"]; enumerator = [dictionaries objectEnumerator]; coder = [enumerator nextObject]; while (coder) { filename = [coder decodeObjectForKey: @"filename"]; if (!absolute) filename = [directory relativePathFromDirectoryToFile: filename]; [ctString appendFormat: @"#EXTINF:%@,%@\r\n%@\r\n", [coder decodeObjectForKey: @"duration"], [coder decodeObjectForKey: @"playlistRepresentation"], filename]; coder = [enumerator nextObject]; } return ctString; } @end @implementation M3UUnarchiver : PlaylistUnarchiver + (NSArray *) _fileListFromLines: (NSArray *) arrayOfLines inReferenceDirectory: (NSString *) directory { NSMutableArray *filelist; NSEnumerator *lines; NSString *currLine, *newString; filelist = [NSMutableArray new]; [filelist autorelease]; lines = [arrayOfLines objectEnumerator]; currLine = [lines nextObject]; while (currLine) { if (![currLine hasPrefix: @"#"] && [currLine length]) { newString = [NSString stringWithString: currLine]; if (![newString isAbsolutePath]) newString = [directory stringByAppendingPathComponent: newString]; newString = [newString stringByStandardizingPath]; [filelist addObject: newString]; } currLine = [lines nextObject]; } return filelist; } + (NSArray *) dictionariesFromFileContent: (NSString *) content inReferenceDirectory: (NSString *) directory { NSArray *files; files = [self _fileListFromLines: [content linesFromFileContent] inReferenceDirectory: directory]; return [self dictionariesFromFilenames: files]; } @end Cynthiune-1.0.0/MBResultsPanel.h000644 001751 000024 00000003464 12112463315 017155 0ustar00multixstaff000000 000000 /* MBResultsPanel.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef MBRESULTSPANEL_H #define MBRESULTSPANEL_H #import #if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4) #ifndef NSUInteger #define NSUInteger unsigned #endif #ifndef NSInteger #define NSInteger int #endif #ifndef CGFloat #define CGFloat float #endif #endif @class NSArray; @class NSScrollView; @class NSTableView; @class NSTextField; @interface MBResultsPanel : NSPanel { NSButton *okButton; NSButton *cancelButton; NSTableView *tableView; NSArray *trackInfos; id target; SEL actionSelector; } + (MBResultsPanel *) resultsPanel; - (void) showPanelForTrackInfos: (NSArray *) allTrackInfos aboveWindow: (NSWindow *) window target: (id) caller selector: (SEL) action; @end @interface NSObject (MBResultsPanelDelegate) - (void) resultsPanelDidEndWithTrackInfos: (NSDictionary *) trackInfo; @end #endif /* MBRESULTSPANEL_H */ Cynthiune-1.0.0/MBResultsPanel.m000644 001751 000024 00000025326 12112243634 017163 0ustar00multixstaff000000 000000 /* MBResultsPanel.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import "CynthiuneTextCell.h" #import "MBResultsPanel.h" #define LOCALIZED(X) NSLocalizedString (X, nil) #define panelContentRect NSMakeRect (100, 100, 420, 205) #define panelContentSize NSMakeSize (420, 185) @implementation MBResultsPanel : NSPanel + (MBResultsPanel *) resultsPanel { static MBResultsPanel *resultsPanel = nil; if (!resultsPanel) resultsPanel = [self new]; return resultsPanel; } - (void) _setDefaults { [tableView deselectAll: self]; [okButton setEnabled: NO]; [self setTitle: LOCALIZED (@"Please select the correct information...")]; [self setHidesOnDeactivate: YES]; [self setInitialFirstResponder: okButton]; [self setContentSize: panelContentSize]; } - (NSTableColumn *) _tableColumnWithIdentifier: (NSString *) identifier andTitle: (NSString *) title { NSTableColumn *column; CynthiuneTextCell *dataCell; dataCell = [CynthiuneTextCell new]; [dataCell autorelease]; column = [[NSTableColumn alloc] initWithIdentifier: identifier]; [column autorelease]; [column setResizable: NO]; [column setEditable: NO]; [[column headerCell] setStringValue: title]; [dataCell setHighlightColor: [NSColor rowsHighlightColor]]; [dataCell setDrawsBackground: YES]; [column setDataCell: dataCell]; return column; } - (void) _createInfoText: (NSView *) contentView { NSTextField *infoText; NSFont *infoFont; #ifdef GNUSTEP infoFont = [NSFont controlContentFontOfSize: [NSFont systemFontSize]]; #else infoFont = [NSFont controlContentFontOfSize: [NSFont smallSystemFontSize]]; #endif infoText = [[NSTextField alloc] initWithFrame: NSMakeRect (10, 155, 400, 40)]; [infoText setFont: infoFont]; [infoText setBezeled: NO]; [infoText setBordered: NO]; [infoText setDrawsBackground: NO]; [infoText setSelectable: NO]; [infoText setEditable: NO]; [infoText setAutoresizingMask: NSViewMinYMargin | NSViewWidthSizable]; [infoText setStringValue: LOCALIZED (@"The request to the MusicBrainz server returned" @" more than one result.\nPlease select the line" @" in the following table that is the most" @" accurate.")]; [[infoText cell] setWraps: YES]; [contentView addSubview: infoText]; } - (void) _createTableView: (NSView *) contentView { NSScrollView *scrollView; NSTableColumn *column; tableView = [NSTableView new]; column = [self _tableColumnWithIdentifier: @"title" andTitle: LOCALIZED (@"Title")]; [tableView addTableColumn: column]; column = [self _tableColumnWithIdentifier: @"album" andTitle: LOCALIZED (@"Album")]; [tableView addTableColumn: column]; column = [self _tableColumnWithIdentifier: @"trackNumber" andTitle: LOCALIZED (@"Track")]; [tableView addTableColumn: column]; column = [self _tableColumnWithIdentifier: @"artist" andTitle: LOCALIZED (@"Artist")]; [tableView addTableColumn: column]; column = [self _tableColumnWithIdentifier: @"year" andTitle: LOCALIZED (@"Year")]; [[column dataCell] setAlignment: NSRightTextAlignment]; [tableView addTableColumn: column]; [tableView setDrawsGrid: NO]; [tableView setDataSource: self]; [tableView setIntercellSpacing: NSMakeSize (0.0, 0.0)]; [tableView setAllowsEmptySelection: YES]; [tableView setAllowsMultipleSelection: NO]; [tableView setAllowsColumnSelection: NO]; [tableView setAutoresizesAllColumnsToFit: NO]; [tableView setAutoresizingMask: NSViewNotSizable]; [tableView setDoubleAction: @selector (_doubleClick:)]; [tableView setTarget: self]; [tableView setDelegate: self]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (10, 45, 400, 100)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasVerticalScroller: YES]; [scrollView setHasHorizontalScroller: YES]; [scrollView setDocumentView: tableView]; [scrollView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [scrollView setAutoresizesSubviews: YES]; [contentView addSubview: scrollView]; } - (void) _createButtons: (NSView *) contentView { NSRect frame; NSFont *labelFont; #ifdef GNUSTEP labelFont = [NSFont controlContentFontOfSize: [NSFont labelFontSize]]; #else labelFont = [NSFont controlContentFontOfSize: [NSFont smallSystemFontSize]]; #endif frame = NSMakeRect (10, 10, 10, 10); okButton = [[NSButton alloc] initWithFrame: frame]; [okButton setTitle: LOCALIZED (@"OK")]; [okButton setFont: labelFont]; #ifdef GNUSTEP [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; #endif [okButton setAutoresizingMask: NSViewMinXMargin]; [okButton setTarget: self]; [okButton setAction: @selector (_ok:)]; [okButton setButtonType: NSMomentaryPushButton]; [okButton setBezelStyle: NSRoundedBezelStyle]; [okButton sizeToFit]; frame = [okButton frame]; frame.origin.x = 420 - 10 - frame.size.width; [okButton setFrame: frame]; cancelButton = [[NSButton alloc] initWithFrame: frame]; [cancelButton setTitle: LOCALIZED (@"Cancel")]; [cancelButton setFont: labelFont]; [cancelButton setAutoresizingMask: NSViewMinXMargin]; [cancelButton setTarget: self]; [cancelButton setAction: @selector (_cancel:)]; [cancelButton setButtonType: NSMomentaryPushButton]; [cancelButton setBezelStyle: NSRoundedBezelStyle]; [cancelButton sizeToFit]; [contentView addSubview: okButton]; [contentView addSubview: cancelButton]; [cancelButton arrangeViewLeftTo: okButton]; [okButton setNextKeyView: cancelButton]; [cancelButton setNextKeyView: okButton]; } - (id) init { NSView *contentView; if ((self = [super initWithContentRect: panelContentRect styleMask: (NSTitledWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO])) { trackInfos = nil; [self setMinSize: [self frame].size]; contentView = [self contentView]; [self _createInfoText: contentView]; [self _createTableView: contentView]; [self _createButtons: contentView]; [self setHidesOnDeactivate: YES]; [self setInitialFirstResponder: okButton]; } return self; } - (void) _updateColumnWidth: (NSTableColumn *) column { float newWidth, strWidth; NSEnumerator *trackEnum; NSDictionary *track; NSString *value; NSCell *cell; cell = [column headerCell]; newWidth = [cell widthOfText: [cell stringValue]] + 20.0; trackEnum = [trackInfos objectEnumerator]; cell = [column dataCell]; track = [trackEnum nextObject]; while (track) { value = [track objectForKey: [column identifier]]; strWidth = [cell widthOfText: value]; if (newWidth < strWidth) newWidth = strWidth; track = [trackEnum nextObject]; } [column setWidth: newWidth]; } - (void) _updateColumnsWidth { NSEnumerator *columns; NSTableColumn *column; columns = [[tableView tableColumns] objectEnumerator]; column = [columns nextObject]; while (column) { [self _updateColumnWidth: column]; column = [columns nextObject]; } } - (void) showPanelForTrackInfos: (NSArray *) allTrackInfos aboveWindow: (NSWindow *) window target: (id) caller selector: (SEL) action { trackInfos = allTrackInfos; [trackInfos retain]; [tableView reloadData]; target = caller; actionSelector = action; [self _updateColumnsWidth]; [self _setDefaults]; [self center]; [self orderWindow: NSWindowAbove relativeTo: [window windowNumber]]; [self makeKeyAndOrderFront: self]; [self setLevel: NSModalPanelWindowLevel]; } - (void) _cancel: (id) sender { [trackInfos release]; trackInfos = nil; [self close]; } - (void) _ok: (id) sender { int selectedRow; selectedRow = [tableView selectedRow]; [target performSelector: actionSelector withObject: [trackInfos objectAtIndex: selectedRow]]; [trackInfos release]; trackInfos = nil; [self close]; } - (void) _doubleClick: (id) sender { if ([tableView clickedRow] > -1) [self _ok: sender]; } /* Datasource protocol */ - (NSInteger) numberOfRowsInTableView: (NSTableView *) tableView { return [trackInfos count]; } - (id) tableView: (NSTableView *) tableView objectValueForTableColumn: (NSTableColumn *) tableColumn row: (NSInteger) rowIndex { NSDictionary *trackInfo; trackInfo = [trackInfos objectAtIndex: rowIndex]; return [trackInfo objectForKey: [tableColumn identifier]]; } /* tableview delegate */ - (void) tableViewSelectionDidChange: (NSNotification *) notification { [okButton setEnabled: ([tableView numberOfSelectedRows] != 0)]; } - (void) tableView: (NSTableView *) tv willDisplayCell: (id) cell forTableColumn: (NSTableColumn *) tableColumn row: (NSInteger) rowIndex { #ifdef GNUSTEP /* GNUSTEP is buggy so we work-around */ [cell setHighlighted: [tv isRowSelected: rowIndex]]; #endif [cell setBackgroundColor: ((rowIndex % 2 == 0) ? [NSColor evenRowsBackgroundColor] : [NSColor oddRowsBackgroundColor])]; } @end Cynthiune-1.0.0/Makefile000644 001751 000024 00000005152 11733546660 015615 0ustar00multixstaff000000 000000 PROJECT = Cynthiune SOURCES := FormatTester.m \ GeneralPreference.m \ InfoDisplayController.m \ MainController.m \ Player.m \ Playlist.m \ PlaylistController.m \ PlaylistFile.m \ PreferencesController.m \ Song.m \ TableViewController.m \ main.m \ utils.m RESOURCES := COPYING \ ChangeLog \ Cynthiune.nib \ Preferences.nib \ GeneralPreference.nib \ Images/Cynthiune.icns \ Images/cynthiune-splash-faded-fr.tiff \ Images/cynthiune-splash-fr.tiff \ Images/cynthiune-splash-faded.tiff \ Images/cynthiune-splash.tiff \ Images/eject-pushed.tiff \ Images/eject.tiff \ Images/nomute.tiff \ Images/mute.tiff \ Images/next-pushed.tiff \ Images/next.tiff \ Images/pause-pushed.tiff \ Images/pause.tiff \ Images/play-pushed.tiff \ Images/play.tiff \ Images/playlist-hide.tiff \ Images/playlist-show.tiff \ Images/previous-pushed.tiff \ Images/previous.tiff \ Images/repeat-off.tiff \ Images/repeat-on.tiff \ Images/shuffle-off.tiff \ Images/shuffle-on.tiff \ Images/stop-pushed.tiff \ Images/stop.tiff OBJECTS := $(SOURCES:.m=.o) VORBIS_LIBS := -lvorbis -lvorbisfile -logg MAD_LIBS := $(shell pkg-config mad --libs) ID3TAG_LIBS := $(shell pkg-config id3tag --libs) LIBS := -framework AppKit # -framework AudioUnit -framework AudioToolbox # \ # $(VORBIS_LIBS) \ # $(MAD_LIBS) \ # $(ID3TAG_LIBS) CC := gcc CFLAGS := -fconstant-string-class=NSConstantString ifeq ($(debug), yes) CFLAGS += -g -O0 endif MACOSXDIRSTRUCT := $(PROJECT).app MACOSXAPPDIRSTRUCT := $(MACOSXDIRSTRUCT)/Contents/MacOS MACOSXRESDIRSTRUCT := $(MACOSXDIRSTRUCT)/Contents/Resources all: $(MACOSXAPPDIRSTRUCT)/$(PROJECT) .m.o: @echo " Compiling $<..." @$(CC) $(CFLAGS) -c $< -o $@ $(MACOSXDIRSTRUCT): $(MACOSXAPPDIRSTRUCT) $(MACOSXRESDIRSTRUCT) $(MACOSXDIRSTRUCT)/Contents/PkgInfo $(MACOSXDIRSTRUCT)/Contents/Info.plist $(MACOSXDIRSTRUCT)/Contents/PkgInfo: PkgInfo @echo "Adding $<..." @cp PkgInfo $(MACOSXDIRSTRUCT)/Contents/ $(MACOSXDIRSTRUCT)/Contents/Info.plist: Info.plist @echo "Adding $<..." @cp Info.plist $(MACOSXDIRSTRUCT)/Contents/ $(MACOSXRESDIRSTRUCT): $(RESOURCES) @echo "Creating $(MACOSXAPPDIRSTRUCT)..." @-rm -rf $(MACOSXRESDIRSTRUCT)/ @mkdir -p $(MACOSXRESDIRSTRUCT)/ @echo "Copying resources..." @cp -R $(RESOURCES) $(MACOSXRESDIRSTRUCT)/ $(MACOSXAPPDIRSTRUCT): @echo "Creating $(MACOSXAPPDIRSTRUCT)..." @mkdir -p $(MACOSXAPPDIRSTRUCT)/ $(MACOSXAPPDIRSTRUCT)/$(PROJECT): $(OBJECTS) $(MACOSXDIRSTRUCT) @echo " Linking $(MACOSXDIRSTRUCT)" @$(CC) -o $(MACOSXAPPDIRSTRUCT)/$(PROJECT) $(OBJECTS) $(LIBS) clean: @echo "Cleaning object files and application directory..." @-rm -rf $(OBJECTS) *~ $(PROJECT).app *~.* Cynthiune-1.0.0/PLSArchiver.h000644 001751 000024 00000002642 11733546643 016452 0ustar00multixstaff000000 000000 /* PLSArchiver.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef PLSARCHIVER_H #define PLSARCHIVER_H #import "PlaylistArchiver.h" @class NSArray; @class NSString; @interface PLSArchiver : PlaylistArchiver + (NSString *) fileContentFromDictionaries: (NSArray *) dictionaries inReferenceDirectory: (NSString *) directory withAbsoluteFilenameReferences: (BOOL) absolute; @end @interface PLSUnarchiver : PlaylistUnarchiver + (NSArray *) dictionariesFromFileContent: (NSString *) content inReferenceDirectory: (NSString *) directory; @end #endif /* PLSARCHIVER_H */ Cynthiune-1.0.0/PLSArchiver.m000644 001751 000024 00000006406 11733546642 016460 0ustar00multixstaff000000 000000 /* PLSArchiver.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import "DictionaryCoder.h" #import "PLSArchiver.h" @implementation PLSArchiver : PlaylistArchiver + (NSString *) fileContentFromDictionaries: (NSArray *) dictionaries inReferenceDirectory: (NSString *) directory withAbsoluteFilenameReferences: (BOOL) absolute { unsigned int count, max; DictionaryCoder *coder; NSString *filename; NSMutableString *ctString; max = [dictionaries count]; ctString = [NSMutableString stringWithFormat: @"%@\r\n%@=%d\r\n", @"[playlist]", @"NumberOfEntries", max]; for (count = 0; count < max; count++) { coder = [dictionaries objectAtIndex: count]; filename = [coder decodeObjectForKey: @"filename"]; if (!absolute) filename = [directory relativePathFromDirectoryToFile: filename]; [ctString appendFormat: @"%@%d=%@\r\n", @"File", count + 1, filename]; } return ctString; } @end @implementation PLSUnarchiver : PlaylistUnarchiver + (NSArray *) _fileListFromLines: (NSArray *) arrayOfLines inReferenceDirectory: (NSString *) directory { NSMutableArray *filelist; NSEnumerator *lines; NSString *currLine, *newString; const char *filePtr, *newStr; filelist = [NSMutableArray new]; [filelist autorelease]; lines = [arrayOfLines objectEnumerator]; currLine = [lines nextObject]; while (currLine) { newStr = [currLine cString]; if (!strncasecmp (newStr, "file", 4)) { filePtr = strchr (newStr, '=') + 1; newString = [NSString stringWithCString: filePtr]; if (![newString isAbsolutePath]) newString = [directory stringByAppendingPathComponent: newString]; newString = [newString stringByStandardizingPath]; [filelist addObject: newString]; } currLine = [lines nextObject]; } return filelist; } + (NSArray *) dictionariesFromFileContent: (NSString *) content inReferenceDirectory: (NSString *) directory { NSArray *files; files = [self _fileListFromLines: [content linesFromFileContent] inReferenceDirectory: directory]; return [self dictionariesFromFilenames: files]; } @end Cynthiune-1.0.0/Player.h000644 001751 000024 00000004527 11755126620 015561 0ustar00multixstaff000000 000000 /* Player.h - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Player_H #define Player_H #import #import @class NSLock; @class NSNotification; @class NSString; @protocol Output; #define GOOM_BUFFER_SIZE 2048 @interface Player : NSObject { id delegate; NSObject *output; BOOL outputIsThreaded; NSLock *streamLock; NSObject *stream; NSMutableArray *streamsToClose; BOOL paused; BOOL playing; BOOL awaitingNewStream; BOOL closingThread; unsigned int channels; unsigned long rate; Endianness endianness; long totalBytes; #ifdef GOOM BOOL feedGoom; PluginInfo *goom; short goomBuffer[2][512]; unsigned int bufferedSize; // char *goomBufferPtr; // NSLock *lock; #endif } - (id) init; - (void) setDelegate: (id) anObject; - (id) delegate; - (void) setStream: (NSObject *) newStream; - (int) timer; - (BOOL) playing; - (void) play; - (void) stop; - (void) setPaused: (BOOL) aBool; - (BOOL) paused; - (void) seek: (unsigned int) aPos; #ifdef GOOM - (void) setGoom: (PluginInfo *) goomPI; #endif @end @interface NSObject (PlayerDelegate) - (void) playerPlaying: (NSNotification*) aNotification; - (void) playerStopped: (NSNotification*) aNotification; - (void) playerPaused: (NSNotification*) aNotification; - (void) playerResumed: (NSNotification*) aNotification; - (void) playerSongEnded: (NSNotification*) aNotification; @end #endif /* Player_H */ Cynthiune-1.0.0/Player.m000644 001751 000024 00000025314 12112243634 015554 0ustar00multixstaff000000 000000 /* Player.m - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #ifdef GOOM #import #endif #import "GeneralPreference.h" #define PLAYER_M 1 #import "Player.h" static NSNotificationCenter *nc = nil; NSString *PlayerPlayingNotification = @"PlayerPlayingNotification"; NSString *PlayerStoppedNotification = @"PlayerStoppedNotification"; NSString *PlayerPausedNotification = @"PlayerPausedNotification"; NSString *PlayerResumedNotification = @"PlayerResumedNotification"; NSString *PlayerSongEndedNotification = @"PlayerSongEndedNotification"; @implementation Player : NSObject + (void) initialize { nc = [NSNotificationCenter defaultCenter]; } - (id) init { if ((self = [super init])) { output = nil; outputIsThreaded = NO; stream = nil; streamLock = [NSLock new]; delegate = nil; paused = NO; playing = NO; awaitingNewStream = NO; closingThread = NO; streamsToClose = [NSMutableArray new]; rate = 0; channels = 0; endianness = LittleEndian; #ifdef GOOM feedGoom = NO; bufferedSize = 0; // goomBufferPtr = goomBuffer; // lock = [NSLock new]; #endif } return self; } - (void) dealloc { if (delegate) [nc removeObserver: delegate name: nil object: self]; [streamsToClose release]; [streamLock release]; [super dealloc]; } - (void) setDelegate: (id) anObject { if (delegate) [nc removeObserver: delegate name: nil object: self]; delegate = anObject; if ([delegate respondsToSelector: @selector (playerPlaying:)]) [nc addObserver: delegate selector: @selector (playerPlaying:) name: PlayerPlayingNotification object: self]; if ([delegate respondsToSelector: @selector (playerStopped:)]) [nc addObserver: delegate selector: @selector (playerStopped:) name: PlayerStoppedNotification object: self]; if ([delegate respondsToSelector: @selector (playerPaused:)]) [nc addObserver: delegate selector: @selector (playerPaused:) name: PlayerPausedNotification object: self]; if ([delegate respondsToSelector: @selector (playerResumed:)]) [nc addObserver: delegate selector: @selector (playerResumed:) name: PlayerResumedNotification object: self]; if ([delegate respondsToSelector: @selector (playerSongEnded:)]) [nc addObserver: delegate selector: @selector (playerSongEnded:) name: PlayerSongEndedNotification object: self]; } - (id) delegate { return delegate; } #ifdef GOOM - (void) goomThread { NSAutoreleasePool *pool; pool = [NSAutoreleasePool new]; while (1) { // while ((unsigned int) goomBufferPtr // < (unsigned int) goomBuffer + 2048) // while (!bufferedSize) // while (!feedGoom) [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 1.0 / 10]]; goom_update (goom, goomBuffer, 0, .0, NULL, NULL); // bufferedSize = 0; // [lock lock]; // memcpy (goomBuffer, goomBuffer + 2048, GOOM_BUFFER_SIZE - 2048); // goomBufferPtr -= 2048; // [lock unlock]; } [pool release]; // NSLog (@"goom thread exiting..."); } - (void) _updateGoomWithBuffer: (char *) buffer andSize: (unsigned int) size { unsigned int feedSize; if ((bufferedSize + size) >= 2048) feedSize = 2048 - bufferedSize; else feedSize = size; memcpy (goomBuffer + bufferedSize, buffer, feedSize); bufferedSize += feedSize; if (bufferedSize == 2048) bufferedSize = 0; } #endif - (void) _playLoopIteration { unsigned char buffer[DEFAULT_BUFFER_SIZE]; int size; NSData *streamChunk; size = [stream readNextChunk: buffer withSize: DEFAULT_BUFFER_SIZE]; if (size > 0) { totalBytes += size; streamChunk = [NSData dataWithBytes: buffer length: size]; [output playChunk: streamChunk]; #ifdef GOOM [self _updateGoomWithBuffer: buffer andSize: size]; #endif } else { awaitingNewStream = YES; [nc postNotificationName: PlayerSongEndedNotification object: self]; } } - (void) _handleEndOfSong { [nc postNotificationName: PlayerSongEndedNotification object: self]; } - (void) _closePendingStreams { static BOOL inProcess = NO; NSEnumerator *streamEnumerator; NSObject *streamToClose; if (!inProcess) { inProcess = YES; streamEnumerator = [streamsToClose reverseObjectEnumerator]; streamToClose = [streamEnumerator nextObject]; while (streamToClose) { [streamToClose streamClose]; [streamToClose release]; [streamsToClose removeObject: streamToClose]; streamToClose = [streamEnumerator nextObject]; } inProcess = NO; } } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int inputSize; while (awaitingNewStream && !closingThread) [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.01]]; if ([streamsToClose count]) { [self performSelectorOnMainThread: @selector (_closePendingStreams) withObject: nil waitUntilDone: NO]; } if (!closingThread) { [streamLock lock]; inputSize = [stream readNextChunk: buffer withSize: bufferSize]; [streamLock unlock]; if (inputSize > 0) { totalBytes += inputSize; #ifdef GOOM /* FIXME: should execute on main thread */ // [self _updateGoomWithBuffer: buffer andSize: size]; #endif } else { awaitingNewStream = YES; inputSize = 0; [self performSelectorOnMainThread: @selector (_handleEndOfSong) withObject: nil waitUntilDone: NO]; } } else inputSize = 0; return inputSize; } - (void) _reInitOutputIfNeeded: (NSObject *) newStream { unsigned int newChannels; unsigned long newRate; Endianness newEndianness; newChannels = [newStream readChannels]; newRate = [newStream readRate]; newEndianness = [newStream endianness]; if (rate != newRate || channels != newChannels || endianness != newEndianness) { if ([output prepareDeviceWithChannels: newChannels andRate: newRate withEndianness: newEndianness]) { rate = newRate; channels = newChannels; endianness = newEndianness; } else NSLog (@"error preparing output for %d channels at a rate of %lu", newChannels, newRate); } } - (void) setStream: (NSObject *) newStream { NSObject *oldStream; totalBytes = 0; oldStream = stream; if (newStream) { [newStream retain]; if (output) [self _reInitOutputIfNeeded: newStream]; stream = newStream; if (awaitingNewStream) { awaitingNewStream = NO; if (!outputIsThreaded) [self _playLoopIteration]; } } else stream = nil; if (oldStream) { if (outputIsThreaded) [streamsToClose addObject: oldStream]; else { [oldStream streamClose]; [oldStream release]; } } } - (int) timer { return ((rate && channels) ? totalBytes / (rate * channels * 2) : 0); } - (BOOL) playing { return playing; } - (void) _ensureOutput { GeneralPreference *generalPreference; Class outputClass; generalPreference = [GeneralPreference instance]; outputClass = [generalPreference preferredOutputClass]; if (output && [output class] != outputClass) { [output release]; output = nil; rate = 0; channels = 0; endianness = LittleEndian; [self _reInitOutputIfNeeded: stream]; } if (!output) { outputIsThreaded = [outputClass isThreaded]; output = [outputClass new]; [output setParentPlayer: self]; [self _reInitOutputIfNeeded: stream]; } } - (void) play { [self _ensureOutput]; if ([output openDevice]) { playing = YES; [nc postNotificationName: PlayerPlayingNotification object: self]; if (outputIsThreaded) { closingThread = NO; [output startThread]; } else [self _playLoopIteration]; } } - (void) stop { if (outputIsThreaded && !paused) { closingThread = YES; [output stopThread]; } [output closeDevice]; [stream streamClose]; [stream release]; stream = nil; playing = NO; if (paused) { paused = NO; [nc postNotificationName: PlayerResumedNotification object: self]; } awaitingNewStream = NO; [nc postNotificationName: PlayerStoppedNotification object: self]; } - (void) setPaused: (BOOL) aBool { if (!paused && aBool) { paused = YES; if (outputIsThreaded) [output stopThread]; [nc postNotificationName: PlayerPausedNotification object: self]; } else if (paused && !aBool) { paused = NO; if (outputIsThreaded) [output startThread]; else [self _playLoopIteration]; [nc postNotificationName: PlayerResumedNotification object: self]; } } - (BOOL) paused { return paused; } - (void) seek: (unsigned int) seconds { [streamLock lock]; [stream seek: seconds]; [streamLock unlock]; totalBytes = seconds * rate * channels * 2; } - (void) chunkFinishedPlaying { if (playing && !paused) [self _playLoopIteration]; } #ifdef GOOM - (void) setGoom: (PluginInfo *) goomPI { BOOL start; start = (!goom); goom = goomPI; if (start) [NSThread detachNewThreadSelector: @selector (goomThread) toTarget: self withObject: nil]; } #endif @end Cynthiune-1.0.0/PlayerController.h000644 001751 000024 00000001717 11733546650 017630 0ustar00multixstaff000000 000000 /* PlayerController.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CynthiuneController_H #define CynthiuneController_H #endif /* CynthiuneController_H */ Cynthiune-1.0.0/PlayerController.m000644 001751 000024 00000001557 11733546660 017640 0ustar00multixstaff000000 000000 /* PlayerController.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ Cynthiune-1.0.0/PlayerPreference.h000644 001751 000024 00000001710 11733546642 017555 0ustar00multixstaff000000 000000 /* PlayerPreference.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef PLAYERPREFERENCE_H #define PLAYERPREFERENCE_H #endif /* PLAYERPREFERENCE_H */ Cynthiune-1.0.0/PlayerPreference.m000644 001751 000024 00000001557 11733546660 017573 0ustar00multixstaff000000 000000 /* PlayerPreference.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ Cynthiune-1.0.0/Playlist.h000644 001751 000024 00000004502 11733546646 016131 0ustar00multixstaff000000 000000 /* Playlist.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Playlist_H #define Playlist_H @class NSNumber; @class NSMutableArray; @class Song; @interface Playlist : NSObject { id delegate; NSMutableArray *list; NSMutableArray *shuffleList; } - (id) init; - (void) setDelegate: (id) object; - (id) delegate; - (void) addSong: (Song *) song; - (void) addSongsInArray: (NSArray *) array; - (void) insertSong: (Song *) song atIndex: (unsigned int) index; - (void) deleteSong: (Song *) song; - (void) deleteAllSongs; - (void) deleteAllSongsQuietly; - (void) deleteSongsInArray: (NSArray *) array; - (NSArray *) arrayOfInvalidSongs; - (void) replaceSongsWithArray: (NSArray *) array; - (Song *) songAtIndex: (unsigned int) index; - (unsigned int) indexOfSong: (Song *) song; - (unsigned int) moveSongsAtIndexes: (NSArray *) indexes toIndex: (unsigned int) index; - (Song *) firstSong; - (Song *) lastSong; - (Song *) firstValidSong; - (Song *) lastValidSong; - (Song *) songAfter: (Song *) song; - (Song *) songBefore: (Song *) song; - (Song *) validSongAfter: (Song *) song; - (Song *) validSongBefore: (Song *) song; - (unsigned int) numberOfSongs; - (NSNumber *) duration; - (void) loadFromFile: (NSString *) file; - (void) saveToFile: (NSString *) file; - (void) sortByPlaylistRepresentation: (BOOL) reverseOrder; - (void) sortByDuration: (BOOL) reverseOrder; - (void) setShuffle: (BOOL) shuffle; - (BOOL) shuffle; - (void) shuffleFromSong: (Song *) shuffle; @end #endif /* Playlist_H */ Cynthiune-1.0.0/Playlist.m000644 001751 000024 00000035144 11755126620 016132 0ustar00multixstaff000000 000000 /* Playlist.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import "M3UArchiver.h" #import "PLSArchiver.h" #import "Playlist.h" #import "Song.h" static NSNotificationCenter *nc = nil; static NSString *PlaylistChangedNotification = @"PlaylistChangedNotification"; @implementation Playlist : NSObject + (void) initialize { if (!nc) nc = [NSNotificationCenter defaultCenter]; } - (id) init { if ((self = [super init])) { list = [NSMutableArray new]; shuffleList = nil; delegate = nil; } return self; } /* untestable method */ - (void) dealloc { [list release]; if (shuffleList) [shuffleList release]; if (delegate) [nc removeObserver: delegate name: nil object: self]; [super dealloc]; } - (void) setDelegate: (id) object { if (delegate) [nc removeObserver: delegate name: nil object: self]; delegate = object; if ([object respondsToSelector: @selector(playlistChanged:)]) { [nc addObserver: object selector: @selector (playlistChanged:) name: PlaylistChangedNotification object: self]; } } - (id) delegate { return delegate; } - (void) postNotificationWithSongAsFirst: (Song *) song { [nc postNotificationName: PlaylistChangedNotification object: self userInfo: [NSDictionary dictionaryWithObject: song forKey: @"firstSong"]]; } - (void) addSong: (Song *) song { if ([list containsObject: song]) NSLog(@"Skipping duplicate song: %@", [song filename]); else { [list addObject: song]; if (shuffleList) [shuffleList addObjectRandomly: song]; [self postNotificationWithSongAsFirst: song]; } } - (void) addSongsInArray: (NSArray *) array { NSEnumerator *songEnumerator; id song; unsigned int max; Song *firstSong; if (array) { firstSong = nil; max = [list count]; songEnumerator = [array objectEnumerator]; song = [songEnumerator nextObject]; while (song) { if ([song isKindOfClass: [Song class]]) { if ([list containsObject: song]) NSLog(@"Skipping duplicate song: %@", [song filename]); else { if (!firstSong) firstSong = song; [list addObject: song]; if (shuffleList) [shuffleList addObjectRandomly: song]; } } else raiseException (@"bad object in array", @"'array' may only contain Song instances"); song = [songEnumerator nextObject]; } if ([list count] > max) [self postNotificationWithSongAsFirst: firstSong]; } else raiseException (@"'nil' array", @"nil 'array' parameter"); } - (void) insertSong: (Song *) song atIndex: (unsigned int) index { if ([list containsObject: song]) NSLog(@"Skipping duplicate song: %@", [song filename]); else { [list insertObject: song atIndex: index]; if (shuffleList) [shuffleList addObjectRandomly: song]; [self postNotificationWithSongAsFirst: song]; } } - (void) deleteSong: (Song *) song { if (song) { if ([list containsObject: song]) { [list removeObject: song]; if (shuffleList) [shuffleList removeObject: song]; [nc postNotificationName: PlaylistChangedNotification object: self]; } else raiseException (@"Song not in list", @"the given song was not found" @" in the list"); } else raiseException (@"'nil' song", @"nil 'song' parameter"); } - (void) deleteAllSongs { if ([list count]) { [list removeAllObjects]; [shuffleList removeAllObjects]; [nc postNotificationName: PlaylistChangedNotification object: self]; } } - (void) deleteAllSongsQuietly { [list removeAllObjects]; [shuffleList removeAllObjects]; } - (void) deleteSongsInArray: (NSArray *) array { NSEnumerator *songEnumerator; id song; unsigned int max; if (array) { max = [list count]; songEnumerator = [array objectEnumerator]; song = [songEnumerator nextObject]; while (song) { if ([song isKindOfClass: [Song class]]) { if ([list containsObject: song]) { [list removeObject: song]; if (shuffleList) [shuffleList removeObject: song]; } else raiseException (@"Song not in list", @"the given song was not found in the list"); } else raiseException (@"bad object in array", @"'array' may only contain Song instances"); song = [songEnumerator nextObject]; } if ([list count] < max) [nc postNotificationName: PlaylistChangedNotification object: self]; } else raiseException (@"'nil' array", @"nil 'array' parameter"); } - (NSArray *) arrayOfInvalidSongs { NSEnumerator *songEnumerator; NSMutableArray *invalidSongs; Song *song; unsigned int max; invalidSongs = [NSMutableArray new]; max = [list count]; if (max) { songEnumerator = [list reverseObjectEnumerator]; song = [songEnumerator nextObject]; while (song) { if ([song status] != SongOK) [invalidSongs addObject: song]; song = [songEnumerator nextObject]; } if ([list count] < max) [nc postNotificationName: PlaylistChangedNotification object: self]; } [invalidSongs autorelease]; return invalidSongs; } - (void) replaceSongsWithArray: (NSArray *) array { NSEnumerator *songEnumerator; id object; BOOL arraysAreEqual; if (array) { arraysAreEqual = [list isEqualToArray: array]; [list removeAllObjects]; if (shuffleList) [shuffleList removeAllObjects]; songEnumerator = [array objectEnumerator]; object = [songEnumerator nextObject]; while (object) { if ([object isKindOfClass: [Song class]]) { [list addObject: object]; if (shuffleList) [shuffleList addObjectRandomly: object]; } else raiseException (@"bad object in array", @"'array' may only contain Song instances"); object = [songEnumerator nextObject]; } if (!arraysAreEqual) [nc postNotificationName: PlaylistChangedNotification object: self]; } else raiseException (@"'nil' array", @"nil 'array' parameter"); } - (Song *) songAtIndex: (unsigned int) index { Song *song; song = nil; if (index < [list count]) song = [list objectAtIndex: index]; else indexOutOfBoundsException (index, [list count]); return song; } - (unsigned int) indexOfSong: (Song *) song { unsigned int index; index = 0; if (song) { if ([list containsObject: song]) index = [list indexOfObject: song]; else raiseException (@"Song not in list", @"the given song was not found" @" in the list"); } else raiseException (@"'nil' song", @"nil 'song' parameter"); return index; } - (unsigned int) moveSongsAtIndexes: (NSArray *) indexes toIndex: (unsigned int) index { unsigned int firstIndex; NSArray *listCopy; listCopy = [list copy]; firstIndex = [list moveObjectsAtIndexes: indexes toIndex: index]; if (![list isEqualToArray: listCopy]) [nc postNotificationName: PlaylistChangedNotification object: self]; return firstIndex; } - (Song *) firstSong { return ([list count] ? [list objectAtIndex: 0] : nil); } - (Song *) lastSong { unsigned int count; count = [list count]; return (count ? [list objectAtIndex: count - 1] : nil); } - (Song *) _nextValidSongInEnumerator: (NSEnumerator *) songEnumerator { Song *song, *result; result = nil; song = [songEnumerator nextObject]; while (!result && song) if ([song status] == SongOK) result = song; else song = [songEnumerator nextObject]; return result; } - (Song *) firstValidSong { NSArray *realList; realList = ((shuffleList) ? shuffleList : list); return [self _nextValidSongInEnumerator: [realList objectEnumerator]]; } - (Song *) lastValidSong { NSArray *realList; realList = ((shuffleList) ? shuffleList : list); return [self _nextValidSongInEnumerator: [realList reverseObjectEnumerator]]; } - (Song *) songAfter: (Song *) song { Song *foundSong; unsigned int songIndex; NSArray *realList; foundSong = nil; if (song) { realList = ((shuffleList) ? shuffleList : list); if ([realList containsObject: song]) { songIndex = [realList indexOfObject: song]; if (songIndex < [realList count] - 1) foundSong = [realList objectAtIndex: (songIndex + 1)]; } else raiseException (@"Song not in list", @"the given song was not found" @" in the list"); } else raiseException (@"'nil' song", @"nil 'song' parameter"); return foundSong; } - (Song *) songBefore: (Song *) song { Song *foundSong; unsigned int songIndex; NSArray *realList; foundSong = nil; if (song) { realList = ((shuffleList) ? shuffleList : list); if ([realList containsObject: song]) { songIndex = [realList indexOfObject: song]; if (songIndex > 0) foundSong = [realList objectAtIndex: (songIndex - 1)]; } else raiseException (@"Song not in list", @"the given song was not found" @" in the list"); } else raiseException (@"'nil' song", @"nil 'song' parameter"); return foundSong; } - (Song *) validSongAfter: (Song *) song { Song *currentSong; currentSong = [self songAfter: song]; while (currentSong && [currentSong status] != SongOK) currentSong = [self songAfter: currentSong]; return currentSong; } - (Song *) validSongBefore: (Song *) song { Song *currentSong; currentSong = [self songBefore: song]; while (currentSong && [currentSong status] != SongOK) currentSong = [self songBefore: currentSong]; return currentSong; } - (unsigned int) numberOfSongs { return [list count]; } - (NSNumber *) duration { unsigned int intDuration; NSEnumerator *songEnumerator; Song *song; intDuration = 0; songEnumerator = [list objectEnumerator]; song = [songEnumerator nextObject]; while (song) { intDuration += [[song duration] intValue]; song = [songEnumerator nextObject]; } return [NSNumber numberWithUnsignedInt: intDuration]; } /* unimplemented methods */ - (void) setShuffle: (BOOL) shuffle { NSEnumerator *songEnumerator; id song; if (shuffle && !shuffleList) { shuffleList = [NSMutableArray new]; songEnumerator = [list objectEnumerator]; song = [songEnumerator nextObject]; while (song) { [shuffleList addObjectRandomly: song]; song = [songEnumerator nextObject]; } } else if (!shuffle && shuffleList) { [shuffleList release]; shuffleList = nil; } } - (BOOL) shuffle { return (shuffleList != nil); } - (void) shuffleFromSong: (Song *) song { if (song) { if ([list containsObject: song]) [shuffleList rotateUpToObject: song]; else raiseException (@"Song not in list", @"the given song was not found" @" in the list"); } else raiseException (@"'nil' song", @"nil 'song' parameter"); } - (void) _sortListUsingSelector: (SEL) comparator { NSArray *newList; newList = [list sortedArrayUsingSelector: comparator]; if (![newList isEqualToArray: list]) { [list setArray: newList]; [nc postNotificationName: PlaylistChangedNotification object: self]; } } - (void) sortByPlaylistRepresentation: (BOOL) reverseOrder { [self _sortListUsingSelector: ((reverseOrder) ? @selector (reverseCompareByPlaylistRepresentation:) : @selector (compareByPlaylistRepresentation:))]; } - (void) sortByDuration: (BOOL) reverseOrder { [self _sortListUsingSelector: ((reverseOrder) ? @selector (reverseCompareByDuration:) : @selector (compareByDuration:))]; } - (void) loadFromFile: (NSString *) file { NSString *extension; NSArray *newList; Class archiver; extension = [file pathExtension]; if ([extension caseInsensitiveCompare: @"cPls"] == NSOrderedSame) archiver = [NSKeyedUnarchiver class]; else if ([extension caseInsensitiveCompare: @"m3u"] == NSOrderedSame) archiver = [M3UUnarchiver class]; else if ([extension caseInsensitiveCompare: @"pls"] == NSOrderedSame) archiver = [PLSUnarchiver class]; else archiver = Nil; if (archiver) { newList = [archiver unarchiveObjectWithFile: file]; if (newList) [self addSongsInArray: newList]; } } - (void) saveToFile: (NSString *) file { NSString *extension; Class archiver; extension = [file pathExtension]; if ([extension caseInsensitiveCompare: @"cPls"] == NSOrderedSame) archiver = [NSKeyedArchiver class]; else if ([extension caseInsensitiveCompare: @"m3u"] == NSOrderedSame) archiver = [M3UArchiver class]; else if ([extension caseInsensitiveCompare: @"pls"] == NSOrderedSame) archiver = [PLSArchiver class]; else archiver = Nil; if (archiver) [archiver archiveRootObject: list toFile: file]; } @end Cynthiune-1.0.0/PlaylistArchiver.h000644 001751 000024 00000003416 11733546643 017615 0ustar00multixstaff000000 000000 /* PlaylistArchiver.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef PLAYLISTARCHIVER_H #define PLAYLISTARCHIVER_H #import @class NSArray; @class NSString; #ifdef __MACOSX__ @interface NSObject (CynthiuneExtension) + (id) subclassResponsibility: (SEL) aSel; @end #endif /* __MACOSX__ */ @interface PlaylistArchiver : NSObject + (BOOL) archiveRootObject: (id) anObject toFile: (NSString *) filename; + (NSString *) fileContentFromDictionaries: (NSArray *) dictionaries inReferenceDirectory: (NSString *) directory withAbsoluteFilenameReferences: (BOOL) absolute; @end @interface PlaylistUnarchiver : NSObject + (id) unarchiveObjectWithFile: (NSString*) filename; + (NSArray *) dictionariesFromFilenames: (NSArray *) filenames; + (NSArray *) dictionariesFromFileContent: (NSString *) content inReferenceDirectory: (NSString *) directory; @end #endif /* PLAYLISTARCHIVER_H */ Cynthiune-1.0.0/README000644 001751 000024 00000010557 11747325252 015037 0ustar00multixstaff000000 000000 Cynthiune (march 2006) ========= What is Cynthiune? ------------------ Cynthiune is a free software and romantic music player for GNUstep and MacOSX. I wrote it originally as a christmas gift to a girl that I liked because she could not listen to music on her Mac with a free program. Since then, I decided to make it public and add even more features to make it a complete and useable media player. For the moment, it looks pretty much like XMMS, Winamp and similar software. Even though it has far less features than those, the essential components of a usable and user-friendly program are there in my opinion. From a programmatic point-of-view, I have decided to write a program that is released only when considered bug-free. The free software community lacks, IMnsHO, a sense of quality that makes its programs nearly useless to lambda users. Not only is it useless, but I think it also gives free software a bad reputation. The principle of freedom in "free software" is fundamental to me, but it has to be reachable not only by some sort of geeky elite. There is no point in telling users that since they have the freedom to enhance those programs, they must fix them if they want to use them. Releasing a program with too many bugs is of no use and is likely not to interest other fellow programmers in the community either. On the other hand, Apple has published an interesting program called "iTunes". Of course, it is not free software but it does implement interesting ideas that I would like to include in Cynthiune. For example: CD burning, complete playlist management, etc... Personally I find its user interface to be not as user-friendly as it could be. My plan is thus to take advantage of my own programming skills and sense of aesthetics (and ergonomy) to try to write something a little bit different, inspired both by XMMS/Winamp and iTunes. Cynthiune is thus currently very basic but its core design is starting to be extensible enough that it will not be too much trouble to enhance it. How to build it... ------------------ 1) on GNUstep: If all your library requirements are fulfilled (see below). Just type "make && make install". If you want to run Cynthiune from the source directory, you would have to type "make local-build=yes". This way, the linker will be forced against to link Cynthiune.app against the copy of the Cynthiune framework that was built under the source directory. Whenever you are missing a library or if a specific file-format does not interest you, you can disable the build of its bundle by typing "make disable-[bundle]=yes" (where [bundle] is the name of the bundle you wish to avoid). For the available values, have a look at the GNUmakefile of the top source directory. 2) on MacOS X: Simply open the Cynthiune.pbproj file and build it. You might want to disable certain bundles if you don't have the required libraries. Anyway a pre-compiled binary for MacOS X 10.2 and up is always available from the Cynthiune website. So you should not bother with that unless you are a programmer. Requirements ------------ The extra libraries needed for Cynthiune are: mp3 support: - libid3tag and libmad 0.15.0b (http://sourceforge.net/project/showfiles.php?group_id=12349) ogg support: - libvorbis 1.0.1 and libogg 1.1.0 (http://www.vorbis.com/download_unix_1.0.1.psp) musepack support: - libmpcdec 1.3, newer API, chosen as the default - libmpcdec 1.2.X (http://www.musepack.net/index.php?pg=src) via setting ADDITIONAL_OBJCFLAGS=-DMUSEPACK_API_126 as make environment, i.e. ADDITIONAL_OBJCFLAGS=-DMUSEPACK_API_126 gmake install mod, xm and all the possible tracker formats out there: - libmodplug 2.04 (http://modplug-xmms.sourceforge.net) wav, au and many uncompressed sound formats: - libaudiofile (http://www.68k.org/~michael/audiofile/) flac support: - libflac (http://flac.sourceforge.net/) wma and asf support: - libavifile (http://avifile.sourceforge.net/) esound output support: - libesd (http://www.tux.org/~ricdude/download.html) taglib support (required for mp3 and musepack): - http://ktown.kde.org/~wheeler/taglib/ MusicBrainz support (required): - libmusicbrainz (http://www.musicbrainz.org) But if you are using Debian GNU/Linux, you are lucky already ;). Stay thiuned! Copyright --------- Cynthiune is copyright (C) 2002-2006 Wolfgang Sourdeau The application icon is copyright (C) 2004 Mivil Deschênes Cynthiune-1.0.0/PlaylistArchiver.m000644 001751 000024 00000012310 11733546645 017615 0ustar00multixstaff000000 000000 /* PlaylistArchiver.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #define _GNU_SOURCE #import #import #import #import #import #import #import #import "DictionaryCoder.h" #import "GeneralPreference.h" #import "Song.h" #import "PlaylistArchiver.h" #ifdef __MACOSX__ @implementation NSObject (CynthiuneExtension) + (id) subclassResponsibility: (SEL) aSel { return nil; } @end #endif /* __MACOSX__ */ @implementation PlaylistArchiver : NSObject + (NSArray *) _encodeMetadataFromArray: (NSArray *) anArray { NSMutableArray *metadata; NSEnumerator *enumerator; DictionaryCoder *currentCoder; Song *currentSong; metadata = [NSMutableArray arrayWithCapacity: [anArray count]]; enumerator = [anArray objectEnumerator]; currentSong = [enumerator nextObject]; while (currentSong) { currentCoder = [DictionaryCoder new]; [currentCoder autorelease]; [currentSong encodeWithCoder: currentCoder]; [metadata addObject: currentCoder]; currentSong = [enumerator nextObject]; } return metadata; } + (BOOL) _saveDictionaries: (NSArray *) dictionaries toFile: (NSString *) filename { NSData *fileContent; NSString *content; NSString *targetDirectory; BOOL result, absoluteReferences; absoluteReferences = [[GeneralPreference instance] absolutePlaylistReferences]; targetDirectory = [[filename stringByDeletingLastPathComponent] stringByStandardizingPath]; content = [self fileContentFromDictionaries: dictionaries inReferenceDirectory: targetDirectory withAbsoluteFilenameReferences: absoluteReferences]; if (content && [content length]) { fileContent = [NSData dataWithBytes: [content cString] length: [content length]]; result = [[NSFileManager defaultManager] createFileAtPath: filename contents: fileContent attributes: nil]; } else result = NO; return result; } + (BOOL) archiveRootObject: (id) anObject toFile: (NSString *) filename { return [self _saveDictionaries: [self _encodeMetadataFromArray: anObject] toFile: filename]; } + (NSString *) fileContentFromDictionaries: (NSArray *) dictionaries inReferenceDirectory: (NSString *) directory withAbsoluteFilenameReferences: (BOOL) absolute { [self subclassResponsibility: _cmd]; return nil; } @end @implementation PlaylistUnarchiver : NSObject + (NSArray *) _decodeArrayFromMetadata: (NSArray *) metadata { NSMutableArray *anArray; NSEnumerator *enumerator; DictionaryCoder *currentCoder; Song *currentSong; anArray = [NSMutableArray arrayWithCapacity: [metadata count]]; enumerator = [metadata objectEnumerator]; currentCoder = [enumerator nextObject]; while (currentCoder) { currentSong = [[Song alloc] initWithCoder: currentCoder]; [currentSong autorelease]; [anArray addObject: currentSong]; currentCoder = [enumerator nextObject]; } return anArray; } + (NSArray *) _loadDictionariesFromFile: (NSString *) filename { return [self dictionariesFromFileContent: [NSString stringWithContentsOfFile: filename] inReferenceDirectory: [filename stringByDeletingLastPathComponent]]; } + (id) unarchiveObjectWithFile: (NSString*) filename { return [self _decodeArrayFromMetadata: [self _loadDictionariesFromFile: filename]]; } + (NSArray *) dictionariesFromFileContent: (NSString *) content inReferenceDirectory: (NSString *) directory { [self subclassResponsibility: _cmd]; return nil; } + (NSArray *) dictionariesFromFilenames: (NSArray *) filenames { NSMutableArray *dictionaries; NSEnumerator *files; NSString *currentFile; DictionaryCoder *currentCoder; dictionaries = [NSMutableArray new]; [dictionaries autorelease]; files = [filenames objectEnumerator]; currentFile = [files nextObject]; while (currentFile) { currentCoder = [DictionaryCoder new]; [currentCoder autorelease]; [currentCoder encodeObject: currentFile forKey: @"filename"]; [dictionaries addObject: currentCoder]; currentFile = [files nextObject]; } return dictionaries; } @end Cynthiune-1.0.0/PlaylistController.h000644 001751 000024 00000006720 12112463315 020160 0ustar00multixstaff000000 000000 /* PlaylistController.h - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * 2013 The Free Software Foundation * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef PlaylistController_H #define PlaylistController_H #if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4) #ifndef NSUInteger #define NSUInteger unsigned #endif #ifndef NSInteger #define NSInteger int #endif #ifndef CGFloat #define CGFloat float #endif #endif @class NSTimer; @class NSToolbar; @class InfoDisplayController; @class CynthiuneController; @class Player; @class Playlist; @class PlaylistViewController; @class Song; @class SongInspectorController; @interface PlaylistController : NSObject { id previousButton; id playButton; id pauseButton; id stopButton; id ejectButton; id nextButton; id addButton; id removeButton; // id removeAllButton; id cleanupButton; // id saveButton; id saveAsButton; id songInspectorButton; id repeatButton; id shuffleButton; id repeatMenuItem; id shuffleMenuItem; id songInspectorMenuItem; id timerButton; id progressSlider; id playlistStatusLabel; // id drawer; /* non-ui */ InfoDisplayController *infoDisplayController; PlaylistViewController *playlistViewController; SongInspectorController *songInspectorController; Player *player; NSTimer *timer; Playlist *playlist; NSString *playlistFilename; Song *currentPlayerSong; Song *notifiedFirstSong; BOOL repeat; } /* player console */ - (void) previousSong: (id) sender; - (void) startPlayer: (id) sender; - (void) pausePlayer: (id) sender; - (void) stopPlayer: (id) sender; - (void) nextSong: (id) sender; - (void) eject: (id) sender; - (void) songCursorChange: (id) sender; - (void) changeTimeDisplay: (id) sender; - (void) toggleRepeat: (id) sender; - (void) toggleShuffle: (id) sender; - (void) toggleSongInspector: (id) sender; /* menu actions */ - (void) addSongs: (id) sender; - (void) addPlaylist: (id) sender; - (void) removeSelectedSongs: (id) sender; - (void) removeAllSongs: (id) sender; - (void) cleanupPlaylist: (id) sender; - (void) saveList: (id) sender; - (void) saveListAs: (id) sender; /* interface for CynthiuneController */ - (void) initializeWidgets; - (NSToolbar *) playlistToolbar; - (void) addSongFromNSApp: (id) sender; - (void) openSongFromNSApp: (NSString *) songFilename; - (id) validRequestorForSendType: (NSString *) sendType returnType: (NSString *) returnType; - (void) savePlayerState; /* interface for PlaylistViewController */ - (void) tableDoubleClick: (int) row; - (void) tableFilenamesDropped: (NSArray *) filenames; - (void) updateStatusLabel; - (void) updateSongInspector; @end #endif /* PlaylistController_H */ Cynthiune-1.0.0/PlaylistController.m000644 001751 000024 00000106052 12112455403 020163 0ustar00multixstaff000000 000000 /* PlaylistController.m - this file is part of Cynthiune * * Copyright (C) 2002-2006 Wolfgang Sourdeau * 2012 The Free Software Foundation, Inc * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #ifdef GOOM #import #import "GoomView.h" #endif /* GOOM */ #import "CynthiuneSliderCell.h" #import "FormatTester.h" #import "GeneralPreference.h" #import "InfoDisplayController.h" #import "Player.h" #import "Playlist.h" #import "PlaylistController.h" #import "PlaylistView.h" #import "Song.h" #import "SongInspectorController.h" #import "PlaylistViewController.h" #define LOCALIZED(X) NSLocalizedString (X, nil) static NSString *DefaultPlaylistName = @"Playlist.cPls"; static NSString *defaultPlaylistFile = nil; static NSString *AddItemIdentifier = @"addButton"; static NSString *RemoveItemIdentifier = @"removeButton"; // static NSString *RemoveAllItemIdentifier = @"removeAllButton"; static NSString *CleanupItemIdentifier = @"cleanupButton"; // static NSString *SaveItemIdentifier = @"saveButton"; static NSString *SaveAsItemIdentifier = @"saveAsButton"; // static NSString *RepeatItemIdentifier = @"repeatButton"; // static NSString *ShuffleItemIdentifier = @"shuffleButton"; static NSString *SongInspectorItemIdentifier = @"songInspectorButton"; @implementation PlaylistController : NSObject + (void) initialize { NSArray *dirs; if (!defaultPlaylistFile) { dirs = NSSearchPathForDirectoriesInDomains (NSLibraryDirectory, NSUserDomainMask, YES); defaultPlaylistFile = [[[dirs objectAtIndex: 0] stringByAppendingPathComponent: @"Cynthiune"] stringByAppendingPathComponent: DefaultPlaylistName]; [defaultPlaylistFile retain]; } } - (id) init { if ((self = [super init])) { playlist = [Playlist new]; [playlist setDelegate: self]; player = [Player new]; [player setDelegate: self]; playlistFilename = nil; timer = nil; repeat = NO; currentPlayerSong = nil; notifiedFirstSong = nil; songInspectorController = [SongInspectorController songInspectorController]; [songInspectorController setDelegate: self]; } return self; } - (void) _initButtonImages { [previousButton setImage: [NSImage imageNamed: @"previous"]]; [previousButton setAlternateImage: [NSImage imageNamed: @"previous-pushed"]]; [previousButton setToolTip: LOCALIZED (@"Previous")]; [playButton setImage: [NSImage imageNamed: @"play"]]; [playButton setAlternateImage: [NSImage imageNamed: @"play-pushed"]]; [playButton setToolTip: LOCALIZED (@"Play")]; [pauseButton setImage: [NSImage imageNamed: @"pause"]]; [pauseButton setAlternateImage: [NSImage imageNamed: @"pause-pushed"]]; [pauseButton setToolTip: LOCALIZED (@"Pause")]; [stopButton setImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setAlternateImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setToolTip: LOCALIZED (@"Stop")]; [nextButton setImage: [NSImage imageNamed: @"next"]]; [nextButton setAlternateImage: [NSImage imageNamed: @"next-pushed"]]; [nextButton setToolTip: LOCALIZED (@"Next")]; [ejectButton setImage: [NSImage imageNamed: @"eject"]]; [ejectButton setAlternateImage: [NSImage imageNamed: @"eject-pushed"]]; [repeatButton setImage: [NSImage imageNamed: @"repeat"]]; [repeatButton setAlternateImage: [NSImage imageNamed: @"repeat-pushed"]]; [repeatButton setToolTip: LOCALIZED (@"Repeat")]; [shuffleButton setImage: [NSImage imageNamed: @"shuffle"]]; [shuffleButton setAlternateImage: [NSImage imageNamed: @"shuffle-pushed"]]; [shuffleButton setToolTip: LOCALIZED (@"Shuffle")]; // [playButton setToolTip: @"Wanna dance?"]; // #define buttonGradient NSGradientConcaveWeak // [[playButton cell] setBezelStyle: NSLargeIconButtonBezelStyle]; // [[previousButton cell] setBezelStyle: NSSmallIconButtonBezelStyle]; // [[previousButton cell] setGradientType: buttonGradient]; // [[playButton cell] setGradientType: NSGradientNone]; // [[stopButton cell] setGradientType: buttonGradient]; // [[nextButton cell] setGradientType: buttonGradient]; // [[pauseButton cell] setGradientType: buttonGradient]; // [[ejectButton cell] setGradientType: buttonGradient]; // [[playlistButton cell] setGradientType: buttonGradient]; } - (NSToolbarItem *) _toolbarButtonWithIdentifier: (NSString *) identifier title: (NSString *) title callbackToSelf: (SEL) selector andImageName: (NSString *) imageName { NSToolbarItem *toolbarButton; NSString *locTitle; toolbarButton = [[NSToolbarItem alloc] initWithItemIdentifier: identifier]; [toolbarButton setImage: [NSImage imageNamed: imageName]]; if (title) { locTitle = LOCALIZED (title); [toolbarButton setLabel: locTitle]; [toolbarButton setPaletteLabel: locTitle]; [toolbarButton setToolTip: locTitle]; } [toolbarButton setTarget: self]; [toolbarButton setAction: selector]; return toolbarButton; } - (void) _initToolbarButtons { addButton = [self _toolbarButtonWithIdentifier: AddItemIdentifier title: @"Add Songs..." callbackToSelf: @selector (addSongs:) andImageName: @"add"]; removeButton = [self _toolbarButtonWithIdentifier: RemoveItemIdentifier title: @"Remove Selection" callbackToSelf: @selector (removeSelectedSongs:) andImageName: @"remove"]; // removeAllButton = [self _toolbarButtonWithIdentifier: RemoveAllItemIdentifier // title: @"Remove All" // callbackToSelf: @selector (removeAllSongs:) // andImageName: @"remove-all"]; cleanupButton = [self _toolbarButtonWithIdentifier: CleanupItemIdentifier title: @"Cleanup" callbackToSelf: @selector (cleanupPlaylist:) andImageName: @"cleanup"]; // saveButton = [self _toolbarButtonWithIdentifier: SaveItemIdentifier // title: @"Save..." // callbackToSelf: @selector (saveList:) // andImageName: @"save"]; saveAsButton = [self _toolbarButtonWithIdentifier: SaveAsItemIdentifier title: @"Save As..." callbackToSelf: @selector (saveListAs:) andImageName: @"save-as"]; // repeatButton = [self _toolbarButtonWithIdentifier: RepeatItemIdentifier // title: @"Repeat" // callbackToSelf: @selector (toggleRepeat:) // andImageName: @"repeat"]; // shuffleButton = [self _toolbarButtonWithIdentifier: ShuffleItemIdentifier // title: @"Shuffle" // callbackToSelf: @selector (toggleShuffle:) // andImageName: @"shuffle"]; songInspectorButton = [self _toolbarButtonWithIdentifier: SongInspectorItemIdentifier title: @"Song Inspector..." callbackToSelf: @selector (toggleSongInspector:) andImageName: @"song-inspector"]; } - (void) updateStatusLabel { NSMutableString *infos; NSArray *selection; infos = [NSMutableString stringWithFormat: LOCALIZED (@"%d songs - total time: %@"), [playlist numberOfSongs], [[playlist duration] timeStringValue]]; selection = [playlistViewController getSelectedSongs]; if ([selection count]) [infos appendFormat: LOCALIZED (@" - selection: %@"), [[playlistViewController durationOfSelection] timeStringValue]]; [playlistStatusLabel setStringValue: infos]; } - (void) _updatePlayerState { NSUserDefaults *defaults; BOOL boolValue; int intValue; defaults = [NSUserDefaults standardUserDefaults]; boolValue = [defaults boolForKey: @"RepeatMode"]; if (boolValue) { [repeatButton setState: NSOnState]; [self toggleRepeat: self]; } boolValue = [defaults boolForKey: @"ShuffleMode"]; if (boolValue) { [shuffleButton setState: NSOnState]; [self toggleShuffle: self]; } intValue = [defaults integerForKey: @"CurrentSongNumber"]; if (intValue < [playlist numberOfSongs]) { currentPlayerSong = [playlist songAtIndex: intValue]; [playlistViewController setCurrentPlayerSong: currentPlayerSong]; } } - (void) savePlayerState { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; [defaults setBool: repeat forKey: @"RepeatMode"]; [defaults setBool: [playlist shuffle] forKey: @"ShuffleMode"]; if (currentPlayerSong) [defaults setInteger: [playlist indexOfSong: currentPlayerSong] forKey: @"CurrentSongNumber"]; } #ifdef GOOM - (void) _createGoom { NSWindow *goomPanel; GoomView *goomView; goomPanel = [[NSPanel alloc] initWithContentRect: NSMakeRect (100, 100, 660, 420) styleMask: NSTitledWindowMask backing: NSBackingStoreRetained defer: NO]; goomView = [[GoomView alloc] initWithFrame: NSMakeRect (10, 10, 640, 400)]; [[goomPanel contentView] addSubview: goomView]; [goomPanel setTitle: @"Goom"]; [goomPanel setLevel: NSFloatingWindowLevel]; [goomPanel orderFront: self]; [goomView setFPS: 10]; [player setGoom: [goomView goom]]; } #endif /* GOOM */ - (void) awakeFromNib { [repeatMenuItem setState: NSOffState]; [shuffleMenuItem setState: NSOffState]; [songInspectorMenuItem setState: NSOffState]; [playlist loadFromFile: defaultPlaylistFile]; [playlistViewController setPlaylistController: self]; [playlistViewController setPlaylist: playlist]; [playlistStatusLabel setTextColor: [NSColor darkGrayColor]]; #ifdef GOOM [self _createGoom]; #endif /* GOOM */ } - (void) _initProgressSlider { #ifdef GNUSTEP NSCell *oldCell, *cell; oldCell = [progressSlider cell]; cell = [CynthiuneSliderCell new]; [cell setBordered: NO]; [cell setBezeled: NO]; [cell setTarget: [oldCell target]]; [cell setAction: [oldCell action]]; [progressSlider setCell: cell]; #endif /* GNUSTEP */ [progressSlider setEnabled: NO]; [progressSlider setMinValue: 0.0]; [progressSlider setIntValue: 0]; } - (void) initializeWidgets { [self _initButtonImages]; [self _initToolbarButtons]; [self _initProgressSlider]; [self updateStatusLabel]; [self _updatePlayerState]; [pauseButton setEnabled: NO]; [stopButton setEnabled: NO]; [infoDisplayController initializeWidgets]; } - (NSToolbar *) playlistToolbar { NSToolbar *toolbar; toolbar = [[NSToolbar alloc] initWithIdentifier: @"PlaylistToolbar"]; [toolbar autorelease]; [toolbar setDisplayMode: NSToolbarDisplayModeIconOnly]; [toolbar setSizeMode: NSToolbarSizeModeSmall]; [toolbar setDelegate: self]; return toolbar; } - (void) toggleRepeat: (id) sender { BOOL repeatState; int widgetState; widgetState = [repeatButton state]; repeatState = ((widgetState == NSOnState) ? YES : NO); if (sender == repeatMenuItem) { repeatState = !repeatState; if (repeatState) [repeatButton setState:NSOnState]; else [repeatButton setState:NSOffState]; } widgetState = [repeatButton state]; [repeatMenuItem setState: widgetState]; repeat = ((widgetState == NSOnState) ? YES : NO); } - (void) toggleShuffle: (id) sender { BOOL shuffleState; int widgetState; Song *shuffleSong; widgetState = [shuffleButton state]; shuffleState = ((widgetState == NSOnState) ? YES : NO); if (sender == shuffleMenuItem) { shuffleState = !shuffleState; if (shuffleState) [shuffleButton setState:NSOnState]; else [shuffleButton setState:NSOffState]; } widgetState = [shuffleButton state]; [shuffleMenuItem setState: widgetState]; [playlist setShuffle: shuffleState]; if (currentPlayerSong) shuffleSong = currentPlayerSong; else shuffleSong = [playlist firstSong]; if (shuffleState && shuffleSong) [playlist shuffleFromSong: shuffleSong]; } - (void) toggleSongInspector: (id) sender { [songInspectorController toggleDisplay]; } - (void) resetProgressSlider { [progressSlider setIntValue: 0]; if (currentPlayerSong) { [progressSlider setMaxValue: [[currentPlayerSong duration] doubleValue]]; [progressSlider setEnabled: [currentPlayerSong isSeekable]]; } else { [progressSlider setMaxValue: 0.0]; [progressSlider setEnabled: NO]; } } - (void) _updatePlayerSong: (Song *) song { NSObject *stream; if (song) { stream = [song openStreamForSong]; if (stream) { currentPlayerSong = song; [playlistViewController setCurrentPlayerSong: song]; [player setStream: stream]; if ([player playing]) { [infoDisplayController updateInfoFieldsFromSong: song]; [self resetProgressSlider]; } } } } - (void) _saveDefaultOpenDirectoryFromOpenPanel: (NSOpenPanel *) oPanel { NSUserDefaults *userDefaults; userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject: [oPanel directory] forKey: @"NSDefaultOpenDirectory"]; [userDefaults synchronize]; } - (NSArray *) _filteredSubtree: (NSString *) filename { NSFileManager *fm; NSMutableArray *result; NSEnumerator *filenames; NSString *currentFilename, *absoluteFilename; BOOL isDir; result = [NSMutableArray new]; [result autorelease]; fm = [NSFileManager defaultManager]; filenames = [[fm subpathsAtPath: filename] objectEnumerator]; currentFilename = [filenames nextObject]; while (currentFilename) { absoluteFilename = [filename stringByAppendingPathComponent: currentFilename]; if (!([fm fileExistsAtPath: absoluteFilename isDirectory: &isDir] && isDir)) [result addObject: absoluteFilename]; currentFilename = [filenames nextObject]; } [result sortUsingSelector: @selector (localizedCaseInsensitiveCompare:)]; return result; } - (void) _feedPlaylistWithTreeOfFilenames: (NSArray *) filenames { NSEnumerator *files; NSString *filename; FormatTester *formatTester; NSMutableArray *songs; songs = [NSMutableArray array]; formatTester = [FormatTester formatTester]; files = [filenames objectEnumerator]; while ((filename = [files nextObject]) != nil) { if (fileIsAReadableDirectory (filename)) { [self _feedPlaylistWithTreeOfFilenames: [self _filteredSubtree: filename]]; } else if (fileIsAcceptable (filename)) { if ([formatTester fileIsPlaylist: filename]) { [playlist loadFromFile: filename]; } else if ([formatTester formatNumberForFile: filename] > -1) { [songs addObject: [Song songWithFilename: filename]]; } } } if ([songs count] > 0) [playlist addSongsInArray: songs]; } - (void) _oPanelDidEnd: (NSOpenPanel *) oPanel returnCode: (int) result contextInfo: (void *) contextInfo { if (result == NSOKButton) { [self _saveDefaultOpenDirectoryFromOpenPanel: oPanel]; notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: [oPanel filenames]]; if (notifiedFirstSong && ![player playing]) { [playlistViewController invalidateSortedColumn]; [self _updatePlayerSong: notifiedFirstSong]; } } } - (void) _startOPanelDidEnd: (NSOpenPanel *) oPanel returnCode: (int) result contextInfo: (void *) contextInfo { if (result == NSOKButton) { [self _saveDefaultOpenDirectoryFromOpenPanel: oPanel]; notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: [oPanel filenames]]; if (notifiedFirstSong) { [playlistViewController invalidateSortedColumn]; [self _updatePlayerSong: notifiedFirstSong]; [player play]; } } } - (void) _ejectOPanelDidEnd: (NSOpenPanel *) oPanel returnCode: (int) result contextInfo: (void *) contextInfo { if (result == NSOKButton) { [self _saveDefaultOpenDirectoryFromOpenPanel: oPanel]; if ([player playing]) [player stop]; currentPlayerSong = nil; [playlistViewController setCurrentPlayerSong: nil]; [playlist deleteAllSongsQuietly]; notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: [oPanel filenames]]; if (notifiedFirstSong) { [playlistViewController invalidateSortedColumn]; [self _updatePlayerSong: notifiedFirstSong]; [player play]; } } } /* load all files */ - (void) _runOpenPanelWithDidEndSelector: (SEL) selector { NSOpenPanel *oPanel; int result; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: YES]; [oPanel setCanChooseDirectories: YES]; [oPanel setTitle: LOCALIZED (@"Add music files...")]; [oPanel setDelegate: self]; result = [oPanel runModalForTypes: nil]; [self _oPanelDidEnd: oPanel returnCode: result contextInfo: nil]; } /* load playlists only */ - (void) _runPlaylistOpenPanelWithDidEndSelector: (SEL) selector { NSOpenPanel *oPanel; int result; NSArray *types; types = [[NSArray arrayWithObjects: @"m3u", @"pls", nil] retain]; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: YES]; [oPanel setCanChooseDirectories: NO]; [oPanel setTitle: LOCALIZED (@"Open Playlist...")]; [oPanel setDelegate: self]; result = [oPanel runModalForTypes: types]; [self _oPanelDidEnd: oPanel returnCode: result contextInfo: nil]; [types release]; } - (void) addSongs: (id) sender { [self _runOpenPanelWithDidEndSelector: @selector(_oPanelDidEnd:returnCode:contextInfo:)]; } - (void) addPlaylist: (id) sender { [self _runPlaylistOpenPanelWithDidEndSelector: @selector(_oPanelDidEnd:returnCode:contextInfo:)]; } - (Song *) _songAfterRemovalOfArray: (NSArray *) array { Song *newSong; newSong = currentPlayerSong; while (newSong && [array containsObject: newSong]) newSong = [playlist validSongAfter: newSong]; if (!newSong) { newSong = currentPlayerSong; while (newSong && [array containsObject: newSong]) newSong = [playlist validSongBefore: newSong]; } return newSong; } - (void) _removeArrayOfSongs: (NSArray *) array { Song *newSong; if ([array containsObject: currentPlayerSong]) { newSong = [self _songAfterRemovalOfArray: array]; if (newSong) { if (newSong != currentPlayerSong) [self _updatePlayerSong: newSong]; } else { if (currentPlayerSong) { currentPlayerSong = nil; [playlistViewController setCurrentPlayerSong: nil]; [self resetProgressSlider]; } [player stop]; } } if ([array count]) [playlistViewController invalidateSortedColumn]; [playlist deleteSongsInArray: array]; } - (void) removeSelectedSongs: (id) sender { [songInspectorController setSong: nil]; [self _removeArrayOfSongs: [playlistViewController getSelectedSongs]]; [playlistViewController deselectAll]; } - (void) removeAllSongs: (id) sender { if ([playlist numberOfSongs] > 0) [playlistViewController invalidateSortedColumn]; if ([player playing]) [player stop]; if (currentPlayerSong) { currentPlayerSong = nil; [playlistViewController setCurrentPlayerSong: nil]; [self resetProgressSlider]; } [songInspectorController setSong: nil]; [playlist deleteAllSongs]; } - (void) cleanupPlaylist: (id) sender { NSMutableArray *selectedSongs; NSArray *invalidSongs; invalidSongs = [playlist arrayOfInvalidSongs]; if ([invalidSongs count]) { if ([invalidSongs containsObject: [songInspectorController song]]) [songInspectorController setSong: nil]; selectedSongs = [NSMutableArray new]; [selectedSongs addObjectsFromArray: [playlistViewController getSelectedSongs]]; [selectedSongs removeObjectsInArray: invalidSongs]; [self _removeArrayOfSongs: invalidSongs]; [playlistViewController deselectAll]; [playlistViewController selectSongsInArray: selectedSongs]; [selectedSongs release]; } } /* FIXME: when the user specifies an extension, don't use default format */ - (void) _sPanelDidEnd: (NSSavePanel *) sPanel returnCode: (int) result contextInfo: (NSString *) extension { NSString *saveDir; if (result == NSOKButton) { saveDir = [sPanel directory]; [[NSUserDefaults standardUserDefaults] setObject: saveDir forKey: @"NSDefaultSaveDirectory"]; SET (playlistFilename, [sPanel filename]); [playlist saveToFile: playlistFilename]; } } - (void) _runSaveListPanelWithExtension: (NSString *) extension andSaveDir: (NSString *) saveDir { NSSavePanel *sPanel; sPanel = [NSSavePanel savePanel]; [sPanel setTitle: LOCALIZED (@"Save playlist as...")]; [sPanel setRequiredFileType: extension]; [sPanel setExtensionHidden: YES]; [sPanel beginSheetForDirectory: saveDir file: playlistFilename modalForWindow: [NSApp mainWindow] modalDelegate: self didEndSelector: @selector (_sPanelDidEnd:returnCode:contextInfo:) contextInfo: extension]; } - (void) saveList: (id) sender { NSString *extension, *filename, *saveDir; NSUserDefaults *userDefaults; if (!playlistFilename) [self saveListAs: sender]; else { extension = [[GeneralPreference instance] preferredPlaylistFormat]; userDefaults = [NSUserDefaults standardUserDefaults]; saveDir = [userDefaults stringForKey: @"NSDefaultSaveDirectory"]; if (!saveDir || [saveDir isEqualToString: @""]) saveDir = [userDefaults stringForKey: @"NSDefaultOpenDirectory"]; filename = [playlistFilename stringByAppendingPathExtension: extension]; [playlist saveToFile: [saveDir stringByAppendingPathComponent: filename]]; } } - (void) saveListAs: (id) sender { NSString *extension, *saveDir; NSUserDefaults *userDefaults; extension = [[GeneralPreference instance] preferredPlaylistFormat]; userDefaults = [NSUserDefaults standardUserDefaults]; saveDir = [userDefaults stringForKey: @"NSDefaultSaveDirectory"]; if (!saveDir || [saveDir isEqualToString: @""]) saveDir = [userDefaults stringForKey: @"NSDefaultOpenDirectory"]; [self _runSaveListPanelWithExtension: extension andSaveDir: saveDir]; } /* helper methods for CynthiuneController */ - (void) addSongFromNSApp: (id) sender { [self _runOpenPanelWithDidEndSelector: @selector(_oPanelDidEnd:returnCode:contextInfo:)]; } - (void) openSongFromNSApp: (NSString *) filename { notifiedFirstSong = nil; [playlistViewController invalidateSortedColumn]; [self _feedPlaylistWithTreeOfFilenames: [NSArray arrayWithObject: filename]]; if (notifiedFirstSong && ![player playing]) [self _updatePlayerSong: notifiedFirstSong]; } /* player buttons */ - (void) startPlayer: (id) sender { Song *song; if ([playlist numberOfSongs]) { if (!currentPlayerSong || [currentPlayerSong status] != SongOK) song = [playlist firstValidSong]; else song = currentPlayerSong; if (song) { [self _updatePlayerSong: song]; if (![player playing]) [player play]; } else [self _runOpenPanelWithDidEndSelector: @selector(_startOPanelDidEnd:returnCode:contextInfo:)]; } else [self _runOpenPanelWithDidEndSelector: @selector(_startOPanelDidEnd:returnCode:contextInfo:)]; } - (void) pausePlayer: (id) sender { if ([player playing]) [player setPaused: ![player paused]]; } - (void) previousSong: (id) sender { Song *newSong; if (currentPlayerSong) { newSong = [playlist validSongBefore: currentPlayerSong]; if (!newSong && repeat) newSong = [playlist lastValidSong]; } else newSong = nil; [self _updatePlayerSong: newSong]; } - (void) nextSong: (id) sender { Song *newSong; if (currentPlayerSong) { newSong = [playlist validSongAfter: currentPlayerSong]; if (!newSong && repeat) newSong = [playlist firstValidSong]; } else newSong = [playlist firstValidSong]; [self _updatePlayerSong: newSong]; } - (void) stopPlayer: (id) sender { [player stop]; } - (void) eject: (id) sender { [self _runOpenPanelWithDidEndSelector: @selector(_ejectOPanelDidEnd:returnCode:contextInfo:)]; } /* playlistview delegate */ - (void) playlistViewActivateSelection: (PlaylistView *) view { NSArray *selection; Song *song; selection = [playlistViewController getSelectedSongs]; if ([selection count] > 0) { song = [selection objectAtIndex: 0]; while ([song status] != SongOK || ![selection containsObject: song]) song = [playlist validSongAfter: song]; if (song) { [self _updatePlayerSong: song]; if (![player playing]) [player play]; } } } - (void) tableDoubleClick: (int) row { Song *song; song = [playlist songAtIndex: row]; if ([playlist shuffle]) [playlist shuffleFromSong: song]; if ([song status] != SongOK) song = [playlist validSongAfter: song]; [self _updatePlayerSong: song]; if (currentPlayerSong) { if (![player playing]) [player play]; else if ([player paused]) [player setPaused: NO]; } } - (void) updateSongInspector { NSArray *songs; songs = [playlistViewController getSelectedSongs]; [songInspectorController setSong: (([songs count] == 1) ? [songs objectAtIndex: 0] : nil)]; } - (void) tableFilenamesDropped: (NSArray *) filenames { notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: filenames]; if (notifiedFirstSong && ![player playing]) [self _updatePlayerSong: notifiedFirstSong]; } - (void) songCursorChange: (id) sender { unsigned int time; time = [sender intValue]; [infoDisplayController setTimerFromSeconds: time]; [player seek: time]; } - (void) changeTimeDisplay: (id) sender { unsigned int time; if ([player playing]) { time = [player timer]; [infoDisplayController setReverseTimer: ![infoDisplayController timerIsReversed]]; [infoDisplayController setTimerFromSeconds: time]; } } - (void) _updateTimeDisplay { unsigned int time; time = [player timer]; [infoDisplayController setTimerFromSeconds: time]; [progressSlider setIntValue: time]; } - (void) _startTimeTimer { if (timer) [timer invalidate]; [self _updateTimeDisplay]; timer = [NSTimer timerWithTimeInterval: 1 target: self selector: @selector (_updateTimeDisplay) userInfo: nil repeats: YES]; [timer explode]; } - (void) _stopTimeTimer { [timer invalidate]; timer = nil; } /* as a player delegate... */ - (void) playerPlaying: (NSNotification*) aNotification { double duration; [infoDisplayController updateInfoFieldsFromSong: currentPlayerSong]; [infoDisplayController show]; [self _startTimeTimer]; duration = [[currentPlayerSong duration] doubleValue]; [progressSlider setMaxValue: duration]; [playButton setImage: [NSImage imageNamed: @"play-pushed"]]; [playButton setEnabled: NO]; [pauseButton setEnabled: YES]; [stopButton setImage: [NSImage imageNamed: @"stop"]]; [stopButton setAlternateImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setEnabled: YES]; [playlistViewController setCurrentPlayerSong: currentPlayerSong]; [self resetProgressSlider]; } - (void) playerPaused: (NSNotification*) aNotification { [self _stopTimeTimer]; [pauseButton setState: YES]; } - (void) playerResumed: (NSNotification*) aNotification { [self _startTimeTimer]; [pauseButton setState: NO]; } - (void) playerStopped: (NSNotification*) aNotification { [infoDisplayController hide]; [self _stopTimeTimer]; [playButton setImage: [NSImage imageNamed: @"play"]]; [playButton setAlternateImage: [NSImage imageNamed: @"play-pushed"]]; [playButton setEnabled: YES]; [pauseButton setEnabled: NO]; [stopButton setImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setEnabled: NO]; [progressSlider setEnabled: NO]; [progressSlider setMaxValue: 0]; } - (void) playerSongEnded: (NSNotification*) aNotification { Song *newSong; if (currentPlayerSong) { newSong = [playlist validSongAfter: currentPlayerSong]; if (newSong) [self _updatePlayerSong: newSong]; else { if (!repeat) [player stop]; [self _updatePlayerSong: [playlist firstValidSong]]; } } else { [player stop]; [self _updatePlayerSong: [playlist firstValidSong]]; } } /* Playlist delegate */ - (void) playlistChanged: (NSNotification *) aNotification { NSDictionary *userInfo; [playlist saveToFile: defaultPlaylistFile]; [playlistViewController updateView]; [self updateStatusLabel]; userInfo = [aNotification userInfo]; if (!notifiedFirstSong) notifiedFirstSong = [userInfo objectForKey: @"firstSong"]; } /* NSOpenPanel delegate */ - (BOOL) panel: (id) sender shouldShowFilename: (NSString *) fileName { NSFileManager *fileManager; FormatTester *formatTester; BOOL isDir, answer; fileManager = [NSFileManager defaultManager]; formatTester = [FormatTester formatTester]; answer = (([fileManager fileExistsAtPath: fileName isDirectory: &isDir] && isDir) || [formatTester extensionIsSupported: [fileName pathExtension]]); return answer; } /* Song inspector delegate */ - (void) songInspectorWasShown: (NSNotification *) aNotification { [songInspectorMenuItem setState: NSOnState]; [songInspectorButton setImage: [NSImage imageNamed: @"song-inspector-pushed"]]; } - (void) songInspectorWasHidden: (NSNotification *) aNotification { [songInspectorMenuItem setState: NSOffState]; [songInspectorButton setImage: [NSImage imageNamed: @"song-inspector"]]; } - (void) songInspectorDidUpdateSong: (NSNotification *) aNotification { if ([player playing] && currentPlayerSong == [[aNotification userInfo] objectForKey: @"song"]) [infoDisplayController updateInfoFieldsFromSong: currentPlayerSong]; [playlist saveToFile: defaultPlaylistFile]; [playlistViewController updateView]; } /* NSToolbar delegate */ - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag { NSToolbarItem *item; if ([itemIdentifier isEqualToString: AddItemIdentifier]) item = addButton; else if ([itemIdentifier isEqualToString: RemoveItemIdentifier]) item = removeButton; // else if ([itemIdentifier isEqualToString: RemoveAllItemIdentifier]) // item = removeAllButton; else if ([itemIdentifier isEqualToString: CleanupItemIdentifier]) item = cleanupButton; // else if ([itemIdentifier isEqualToString: SaveItemIdentifier]) // item = saveButton; else if ([itemIdentifier isEqualToString: SaveAsItemIdentifier]) item = saveAsButton; // else if ([itemIdentifier isEqualToString: RepeatItemIdentifier]) // item = repeatButton; // else if ([itemIdentifier isEqualToString: ShuffleItemIdentifier]) // item = shuffleButton; else if ([itemIdentifier isEqualToString: SongInspectorItemIdentifier]) item = songInspectorButton; else item = nil; return item; } - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar { return [NSArray arrayWithObjects: AddItemIdentifier, CleanupItemIdentifier, RemoveItemIdentifier, // RemoveAllItemIdentifier, // RepeatItemIdentifier, // SaveItemIdentifier, SaveAsItemIdentifier, // ShuffleItemIdentifier, SongInspectorItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, NSToolbarSeparatorItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar { return [NSArray arrayWithObjects: AddItemIdentifier, SaveAsItemIdentifier, NSToolbarSeparatorItemIdentifier, RemoveItemIdentifier, CleanupItemIdentifier, NSToolbarSeparatorItemIdentifier, // RepeatItemIdentifier, // ShuffleItemIdentifier, // NSToolbarSeparatorItemIdentifier, SongInspectorItemIdentifier, nil]; } /* Services */ - (id) validRequestorForSendType: (NSString *)sendType returnType: (NSString *)returnType { return ((sendType && [sendType isEqualToString: NSFilenamesPboardType] && ([playlistViewController getFirstSelectedRow] > -1)) ? self : nil); } - (BOOL) writeSelectionToPasteboard: (NSPasteboard*) pboard types: (NSArray*) types { NSArray *declaredTypes, *filenames; BOOL answer; if ([types containsObject: NSFilenamesPboardType]) { declaredTypes = [NSArray arrayWithObject: NSFilenamesPboardType]; [pboard declareTypes: declaredTypes owner: self]; filenames = [playlistViewController getSelectedSongsAsFilenames]; answer = [pboard setPropertyList: filenames forType: NSFilenamesPboardType]; } else answer = NO; return answer; } @end Cynthiune-1.0.0/PlaylistView.h000644 001751 000024 00000002412 11733546660 016756 0ustar00multixstaff000000 000000 /* PlaylistView.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef PLAYLISTTABLEVIEW_H #define PLAYLISTTABLEVIEW_H #import #define CynthiuneEnterKey 0x000d @interface PlaylistView : NSTableView { NSComparisonResult selectionDir; } @end @interface NSObject (PlaylistViewDelegate) - (void) playlistViewActivateSelection: (PlaylistView *) view; - (void) playlistViewDeleteSelection: (PlaylistView *) view; @end #endif /* PLAYLISTTABLEVIEW_H */ Cynthiune-1.0.0/PlaylistView.m000644 001751 000024 00000015077 11733546660 016776 0ustar00multixstaff000000 000000 /* PlaylistView.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import "PlaylistView.h" @implementation PlaylistView : NSTableView - (id) init { if ((self = [super init])) { selectionDir = NSOrderedSame; } return self; } - (id) initWithCoder: (NSCoder *) coder { if ((self = [super initWithCoder: coder])) { selectionDir = NSOrderedSame; } return self; } - (NSImage*) dragImageForRows: (NSArray*) dragRows event: (NSEvent*) dragEvent dragImageOffset: (NSPoint*) dragImageOffset { NSImage *dragImage; if ([dragRows count] > 1) { dragImage = [NSImage imageNamed: @"dragged-songs"]; dragImageOffset->x = -10.0; } else { dragImage = [NSImage imageNamed: @"dragged-song"]; dragImageOffset->x = -5.0; } dragImageOffset->y = 10.0; return dragImage; } - (unsigned int) draggingSourceOperationMaskForLocal: (BOOL) isLocal { return ((isLocal) ? (NSDragOperationMove | NSDragOperationGeneric) : NSDragOperationCopy); } - (int) _findFirstSelected { int row, count; row = -1; count = 0; while (row == -1 && count < [self numberOfRows]) if ([self isRowSelected: count]) row = count; else count++; return row; } - (int) _findLastSelected { int row, count; row = -1; count = [self numberOfRows] - 1; while (row == -1 && count > -1) if ([self isRowSelected: count]) row = count; else count--; return row; } - (void) _selectionUpByExtendingIt: (BOOL) keep { int max, row; BOOL selectSingleRow; max = [self numberOfRows]; if (max > 0) { selectSingleRow = NO; if (selectionDir == NSOrderedDescending) { row = [self _findLastSelected]; if (keep) [self deselectRow: row]; else selectSingleRow = YES; } else { if (selectionDir == NSOrderedSame) selectionDir = NSOrderedAscending; row = [self _findFirstSelected]; selectSingleRow = YES; } if (selectSingleRow && row > 0) { row--; [self selectRow: row byExtendingSelection: keep]; } [self scrollRowToVisible: row]; [self setNeedsDisplay: YES]; } } - (void) _selectionDownByExtendingIt: (BOOL) keep { int max, row; BOOL selectSingleRow; max = [self numberOfRows]; if (max > 0) { selectSingleRow = NO; if (selectionDir == NSOrderedAscending) { row = [self _findFirstSelected]; if (keep) [self deselectRow: row]; else selectSingleRow = YES; } else { if (selectionDir == NSOrderedSame) selectionDir = NSOrderedDescending; row = [self _findLastSelected]; selectSingleRow = YES; } if (selectSingleRow && row < (max - 1)) { row++; [self selectRow: row byExtendingSelection: keep]; } [self scrollRowToVisible: row]; [self setNeedsDisplay: YES]; } } - (void) _selectionTopByExtendingIt: (BOOL) keep { int row, count, max; max = [self numberOfRows]; if (max > 0) { if (keep) { if (selectionDir == NSOrderedDescending) row = [self _findFirstSelected] + 1; else row = [self _findLastSelected] + 1; [self deselectAll: self]; for (count = 0; count < row; count++) [self selectRow: count byExtendingSelection: YES]; } else [self selectRow: 0 byExtendingSelection: NO]; selectionDir = NSOrderedAscending; [self scrollRowToVisible: 0]; [self setNeedsDisplay: YES]; } } - (void) _selectionBottomByExtendingIt: (BOOL) keep { int row, count, max; max = [self numberOfRows]; if (max > 0) { if (keep) { if (selectionDir == NSOrderedAscending) row = [self _findLastSelected]; else row = [self _findFirstSelected]; [self deselectAll: self]; for (count = row; count < max; count++) [self selectRow: count byExtendingSelection: YES]; } else [self selectRow: (max - 1) byExtendingSelection: NO]; selectionDir = NSOrderedDescending; [self scrollRowToVisible: (max - 1)]; [self setNeedsDisplay: YES]; } } - (BOOL) performKeyEquivalent: (NSEvent *) event { BOOL shiftPressed, result; unichar character; id delegate; result = YES; shiftPressed = ([event modifierFlags] & (NSAlphaShiftKeyMask | NSShiftKeyMask)); character = [[event characters] characterAtIndex: 0]; switch (character) { case NSUpArrowFunctionKey: [self _selectionUpByExtendingIt: shiftPressed]; break; case NSDownArrowFunctionKey: [self _selectionDownByExtendingIt: shiftPressed]; break; case NSHomeFunctionKey: [self _selectionTopByExtendingIt: shiftPressed]; break; case NSEndFunctionKey: [self _selectionBottomByExtendingIt: shiftPressed]; break; case CynthiuneEnterKey: delegate = [self delegate]; if (delegate && [delegate respondsToSelector: @selector (playlistViewActivateSelection:)]) [delegate playlistViewActivateSelection: self]; break; case NSDeleteFunctionKey: delegate = [self delegate]; if (delegate && [delegate respondsToSelector: @selector (playlistViewDeleteSelection:)]) [delegate playlistViewDeleteSelection: self]; break; default: result = [super performKeyEquivalent: event]; } if ([self numberOfSelectedRows] < 2) selectionDir = NSOrderedSame; return result; } @end Cynthiune-1.0.0/PlaylistViewController.h000644 001751 000024 00000003611 11733546651 021024 0ustar00multixstaff000000 000000 /* PlaylistViewController.h - this file is part of Cynthiune * * Copyright (C) 2002-2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef PlaylistViewController_H #define PlaylistViewController_H @class NSArray; @class NSNumber; @class NSObject; @class NSString; @class NSNotificationCenter; @class Playlist; @class PlaylistController; @class Song; @interface PlaylistViewController : NSObject { Playlist *playlist; PlaylistController *playlistController; id playlistView; // table view /* sorting */ NSString *sortColumn; NSComparisonResult sortDirection; /* current song pointer */ Song *currentPlayerSong; } - (id) init; - (void) setPlaylistController: (PlaylistController *) controller; - (int) getFirstSelectedRow; - (Song *) getFirstSelectedSong; - (NSArray *) getSelectedSongs; - (NSArray *) getSelectedSongsAsFilenames; - (NSNumber *) durationOfSelection; - (void) selectSongsInArray: (NSArray *) array; - (void) invalidateSortedColumn; - (void) updateView; - (void) setPlaylist: (Playlist *) aPlaylist; - (void) setCurrentPlayerSong: (Song *) newSong; - (void) deselectAll; @end #endif /* PlaylistViewController_H */ Cynthiune-1.0.0/PlaylistViewController.m000644 001751 000024 00000044745 12117456145 021041 0ustar00multixstaff000000 000000 /* PlaylistViewController.m - this file is part of Cynthiune * * Copyright (C) 2002-2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import "CynthiuneHeaderCell.h" #import "CynthiuneTextCell.h" #import "CynthiuneSongTitleCell.h" #import "Playlist.h" #import "PlaylistController.h" #import "PlaylistViewController.h" #import "PlaylistView.h" #import "Song.h" #import "FormatTester.h" #define LOCALIZED(X) NSLocalizedString (X, nil) static NSString *CynthiunePlaylistDragType = @"CynthiunePlaylistDragType"; @implementation PlaylistViewController : NSObject - (id) init { if ((self = [super init])) { currentPlayerSong = nil; sortColumn = @""; sortDirection = NSOrderedSame; } return self; } - (void) setCurrentPlayerSong: (Song *) newSong { currentPlayerSong = newSong; [self updateView]; } /* nib and gui init stuff... */ - (float) _timeColumnWidth { NSTableColumn *column; float labelWidth, zeroesWidth; column = [playlistView tableColumnWithIdentifier: @"time"]; labelWidth = [[column headerCell] widthOfText: LOCALIZED (@"Time")]; zeroesWidth = [[column dataCell] widthOfText: @"00:00"]; return ((labelWidth > zeroesWidth) ? labelWidth : zeroesWidth); } - (void) _deleteAllColumns { NSArray *columns; int count, max; columns = [playlistView tableColumns]; max = [playlistView numberOfColumns]; for (count = 0; count < max; count++) { #ifdef __MACOSX__ [playlistView removeTableColumn: [columns objectAtIndex: 0]]; #else [playlistView removeTableColumn: [columns objectAtIndex: count]]; #endif /* __MACOSX__ */ } } - (NSTableColumn *) _tableColumnWithIdentifier: (NSString *) identifier andTitle: (NSString *) title titleAlignment: (NSTextAlignment) alignment resizable: (BOOL) resizable { NSTableColumn *column; CynthiuneHeaderCell *headerCell; column = [[NSTableColumn alloc] initWithIdentifier: identifier]; [column retain]; headerCell = [CynthiuneHeaderCell new]; [column setHeaderCell: headerCell]; [column setEditable: NO]; [column setResizable: resizable]; [headerCell setStringValue: title]; [headerCell setAlignment: alignment]; if ([sortColumn isEqualToString: identifier]) [headerCell setComparisonResult: sortDirection]; [column sizeToFit]; return column; } - (void) _addNeededColumns { NSTableColumn *column; CynthiuneTextCell *songTimeCell; CynthiuneSongTitleCell *songTitleCell; NSColor *highlightColor; highlightColor = [NSColor rowsHighlightColor]; songTitleCell = [CynthiuneSongTitleCell new]; [songTitleCell setDrawsBackground: YES]; [songTitleCell setHighlightColor: highlightColor]; [songTitleCell setPointerImage: [NSImage imageNamed: @"song-pointer"]]; songTimeCell = [CynthiuneTextCell new]; [songTimeCell setDrawsBackground: YES]; [songTimeCell setHighlightColor: highlightColor]; [songTimeCell setAlignment: NSRightTextAlignment]; column = [self _tableColumnWithIdentifier: @"song" andTitle: LOCALIZED (@"Song") titleAlignment: NSCenterTextAlignment resizable: YES]; [column setDataCell: songTitleCell]; [playlistView addTableColumn: column]; column = [self _tableColumnWithIdentifier: @"time" andTitle: LOCALIZED (@"Time") titleAlignment: NSLeftTextAlignment resizable: NO]; [column setDataCell: songTimeCell]; [playlistView addTableColumn: column]; } - (void) _updateColumnHeaders { NSTableColumn *column; NSEnumerator *columnEnumerator; id headerCell; columnEnumerator = [[playlistView tableColumns] objectEnumerator]; column = [columnEnumerator nextObject]; while (column) { headerCell = [column headerCell]; if ([[column identifier] isEqualToString: sortColumn]) [headerCell setComparisonResult: sortDirection]; else [headerCell setComparisonResult: NSOrderedSame]; column = [columnEnumerator nextObject]; } [[playlistView headerView] setNeedsDisplay: YES]; } - (void) _restoreSortOrder { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; sortColumn = [defaults stringForKey: @"PlaylistSortColumn"]; [sortColumn retain]; sortDirection = [defaults integerForKey: @"PlaylistSortDirection"] - 1; } - (void) _saveSortOrder { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject: sortColumn forKey: @"PlaylistSortColumn"]; [defaults setInteger: (sortDirection + 1) forKey: @"PlaylistSortDirection"]; } - (void) invalidateSortedColumn { SET (sortColumn, @""); [self _saveSortOrder]; [self _updateColumnHeaders]; } - (void) awakeFromNib { [self _restoreSortOrder]; [self _deleteAllColumns]; [self _addNeededColumns]; [[playlistView window] setInitialFirstResponder: playlistView]; [playlistView setIntercellSpacing: NSMakeSize (0.0, 0.0)]; [playlistView setAllowsColumnResizing: NO]; [playlistView setAutoresizesAllColumnsToFit: NO]; [playlistView setAllowsEmptySelection: YES]; [playlistView setAllowsMultipleSelection: YES]; [playlistView setAllowsColumnSelection: NO]; [playlistView setVerticalMotionCanBeginDrag: YES]; [playlistView registerForDraggedTypes: [NSArray arrayWithObjects: NSFilenamesPboardType, CynthiunePlaylistDragType, nil]]; [playlistView setDataSource: self]; [playlistView setTarget: self]; [playlistView setDelegate: self]; [playlistView setDoubleAction: @selector(doubleClick:)]; [playlistView sizeToFit]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(scrollViewDidResize:) name: NSViewFrameDidChangeNotification object: [[playlistView superview] superview]]; } - (void) setPlaylistController: (PlaylistController *) controller { playlistController = controller; } - (void) doubleClick: (id) sender { int clickedRow; clickedRow = [playlistView clickedRow]; if (clickedRow > -1) [playlistController tableDoubleClick: clickedRow]; } /* FIXME: this method should be removed and the logic behind it rearranged so that we deal directly with the selection in the PlaylistView class */ - (void) selectSongsInArray: (NSArray *) array { unsigned int count, max; Song *currentSong; max = [array count]; for (count = 0; count < max; count++) { currentSong = [array objectAtIndex: count]; [playlistView selectRow: [playlist indexOfSong: currentSong] byExtendingSelection: YES]; } } - (void) _sortPlaylist { NSArray *selectedSongs; selectedSongs = [self getSelectedSongs]; [playlistView deselectAll: self]; if ([sortColumn isEqualToString: @"song"]) [playlist sortByPlaylistRepresentation: (sortDirection == NSOrderedDescending)]; else if ([sortColumn isEqualToString: @"time"]) [playlist sortByDuration: (sortDirection == NSOrderedDescending)]; [self selectSongsInArray: selectedSongs]; [self _saveSortOrder]; [self _updateColumnHeaders]; } - (void) tableView: (NSTableView *) tableView mouseDownInHeaderOfTableColumn: (NSTableColumn *) tableColumn; { NSString *colId; if ([playlist numberOfSongs] > 1) { colId = [tableColumn identifier]; if ([colId isEqualToString: sortColumn]) { if (sortDirection == NSOrderedAscending) sortDirection = NSOrderedDescending; else sortDirection = NSOrderedAscending; } else { SET (sortColumn, colId); sortDirection = NSOrderedAscending; } [self _sortPlaylist]; } } - (void) playlistViewActivateSelection: (PlaylistView *) view { [playlistController playlistViewActivateSelection: view]; } - (void) playlistViewDeleteSelection: (PlaylistView *) view { [playlistController removeSelectedSongs: view]; } /* datasource protocol */ - (NSInteger) numberOfRowsInTableView: (NSTableView *) tableView { return [playlist numberOfSongs]; } - (NSString *) _bestFit: (NSString *) string forColumn: (NSTableColumn *) column { NSMutableString *newString; NSCell *dataCell; CGFloat stringWidth, width; NSUInteger length; newString = [NSMutableString stringWithString: string]; dataCell = [column dataCell]; width = [column width]; stringWidth = [dataCell widthOfText: newString]; length = [newString length]; while (length > 3 && (stringWidth > width || [newString hasSuffix: @" ..."])) { [newString replaceCharactersInRange: NSMakeRange (length - 4, 4) withString: @"..."]; stringWidth = [dataCell widthOfText: newString]; length = [newString length]; } return newString; } - (id) tableView: (NSTableView *) tableView objectValueForTableColumn: (NSTableColumn *) tableColumn row: (NSInteger) rowIndex { NSString *cellContent, *colId; Song *song; cellContent = @""; colId = [tableColumn identifier]; if (colId) { song = [playlist songAtIndex: rowIndex]; if (!song) NSLog (@"no song at index %ld", rowIndex); if ([colId isEqualToString: @"song"]) cellContent = [self _bestFit: [song playlistRepresentation] forColumn: tableColumn]; else if ([colId isEqualToString: @"time"]) cellContent = [[song duration] timeStringValue]; else NSLog (@"unexpected column id: %@", colId); } return cellContent; } - (void) tableView: (NSTableView *) tableView willDisplayCell: (id) cell forTableColumn: (NSTableColumn *) tableColumn row: (NSInteger) rowIndex { Song *rowSong; rowSong = [playlist songAtIndex: rowIndex]; #ifdef GNUSTEP /* GNUSTEP is buggy so we work-around */ [cell setHighlighted: [tableView isRowSelected: rowIndex]]; #endif [cell setBackgroundColor: ((rowIndex % 2 == 0) ? [NSColor evenRowsBackgroundColor] : [NSColor oddRowsBackgroundColor])]; [cell setTextColor: (([rowSong status] == SongOK) ? [NSColor controlTextColor] : [NSColor disabledControlTextColor])]; if ([[tableColumn identifier] isEqualToString: @"song"]) [cell setShowImage: (currentPlayerSong && currentPlayerSong == rowSong)]; } - (BOOL) tableView: (NSTableView *) tableView writeRows: (NSArray *) rows toPasteboard: (NSPasteboard*) pboard { NSArray *types; BOOL accept; unsigned int count; count = [rows count]; if (count > 0) { accept = YES; types = [NSArray arrayWithObjects: CynthiunePlaylistDragType, NSFilenamesPboardType, nil]; [pboard declareTypes: types owner: self]; [pboard setPropertyList: rows forType: CynthiunePlaylistDragType]; } else accept = NO; return accept; } - (void) pasteboard: (NSPasteboard *) pboard provideDataForType: (NSString *) type { if ([type isEqualToString: NSFilenamesPboardType]) [pboard setPropertyList: [self getSelectedSongsAsFilenames] forType: NSFilenamesPboardType]; else NSLog (@"unexpected type: %@", type); } /* drag and drop */ - (BOOL) _acceptFilesInPasteboard: (NSPasteboard *) pboard { NSArray *filesList; NSString *filename; FormatTester *formatTester; BOOL accept; unsigned int count, max; filesList = [pboard propertyListForType: NSFilenamesPboardType]; accept = NO; count = 0; max = [filesList count]; formatTester = [FormatTester formatTester]; while (count < max && !accept) { filename = [filesList objectAtIndex: count]; accept = (!fileIsAReadableDirectory (filename) && [formatTester formatNumberForFile: filename] > -1); count++; } return accept; } - (NSDragOperation) tableView: (NSTableView *) tableView validateDrop: (id ) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) dropOperation { NSString *availableType, *requiredType; NSPasteboard *pboard; NSDragOperation dragOperation; NSUInteger mask; pboard = [info draggingPasteboard]; if ([info draggingSource] == playlistView) { requiredType = CynthiunePlaylistDragType; mask = [info draggingSourceOperationMask]; if ((mask & NSDragOperationMove) == NSDragOperationMove) dragOperation = NSDragOperationMove; else if ((mask & NSDragOperationGeneric) == NSDragOperationGeneric) dragOperation = NSDragOperationGeneric; else dragOperation = NSDragOperationNone; } else { requiredType = NSFilenamesPboardType; dragOperation = NSDragOperationCopy; } availableType = [pboard availableTypeFromArray: [NSArray arrayWithObject: requiredType]]; if (availableType && [availableType isEqualToString: requiredType]) [tableView setDropRow: row dropOperation: NSTableViewDropAbove]; else dragOperation = NSDragOperationNone; return dragOperation; } - (void) _acceptDroppedFiles: (NSArray *) filenames atRow: (int) row { [playlistController tableFilenamesDropped: filenames]; } - (void) _acceptDroppedRows: (NSArray *) aRowsList atRow: (int) row withMask: (unsigned int) mask { unsigned int firstRow, max, count; if (mask & NSDragOperationMove) { firstRow = [playlist moveSongsAtIndexes: aRowsList toIndex: row]; [playlistView selectRow: firstRow byExtendingSelection: NO]; max = [aRowsList count]; for (count = 1; count < max; count++) [playlistView selectRow: (firstRow + count) byExtendingSelection: YES]; } else if (mask & NSDragOperationGeneric) NSLog (@"operation %d not currently supported", mask); else NSLog (@"invalid operation '%d'!!", mask); } - (BOOL) tableView: (NSTableView *) tableView acceptDrop: (id ) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation) op { NSPasteboard *pboard; NSArray *objectsList, *typeArray; NSString *availableType; BOOL accept; pboard = [info draggingPasteboard]; typeArray = ([info draggingSource] == playlistView) ? [NSArray arrayWithObject: CynthiunePlaylistDragType] : [NSArray arrayWithObject: NSFilenamesPboardType]; availableType = [pboard availableTypeFromArray: typeArray]; objectsList = [pboard propertyListForType: availableType]; if ([objectsList count]) { if ([availableType isEqualToString: CynthiunePlaylistDragType]) [self _acceptDroppedRows: objectsList atRow: row withMask: [info draggingSourceOperationMask]]; else [self _acceptDroppedFiles: objectsList atRow: row]; [self invalidateSortedColumn]; [playlistView reloadData]; accept = YES; } else accept = NO; return accept; } /* delegate */ - (void) tableViewSelectionIsChanging: (NSNotification *) notification { [playlistController updateStatusLabel]; } - (void) tableViewSelectionDidChange: (NSNotification *) notification { [playlistController updateSongInspector]; [playlistController updateStatusLabel]; } /* scrollView delegate */ - (void) scrollViewDidResize: (NSNotification *) notification { [playlistView sizeToFit]; } /* real methods */ - (int) getFirstSelectedRow { return ([playlist numberOfSongs] ? [playlistView selectedRow] : -1); } - (Song *) getFirstSelectedSong { int nbr; nbr = [self getFirstSelectedRow]; return ((nbr > -1) ? [playlist songAtIndex: nbr] : nil); } - (NSArray *) getSelectedSongs { NSMutableArray *selection; int count, max; selection = [NSMutableArray new]; [selection autorelease]; max = [playlistView numberOfRows]; for (count = 0; count < max; count++) if ([playlistView isRowSelected: count]) [selection addObject: [playlist songAtIndex: count]]; return selection; } - (NSArray *) getSelectedSongsAsFilenames { NSMutableArray *selection; Song *song; int count, max; if ([playlist numberOfSongs]) { max = [playlistView numberOfRows]; selection = [NSMutableArray arrayWithCapacity: max]; for (count = 0; count < max; count++) if ([playlistView isRowSelected: count]) { song = [playlist songAtIndex: count]; [selection addObject: [song filename]]; } } else selection = [NSMutableArray arrayWithObject: nil]; return selection; } - (NSNumber *) durationOfSelection { unsigned int count, max, intDuration; NSArray *selection; Song *currentSong; intDuration = 0; selection = [self getSelectedSongs]; max = [selection count]; for (count = 0; count < max; count++) { currentSong = [selection objectAtIndex: count]; intDuration += [[currentSong duration] unsignedIntValue]; } return [NSNumber numberWithUnsignedInt: intDuration]; } - (void) updateView { int currentSongNumber; if (currentPlayerSong) { currentSongNumber = [playlist indexOfSong: currentPlayerSong]; [playlistView scrollRowToVisible: currentSongNumber]; } [playlistView reloadData]; } - (void) setPlaylist: (Playlist *) aPlaylist { SET (playlist, aPlaylist); [self updateView]; } - (void) deselectAll { [playlistView deselectAll: self]; } @end Cynthiune-1.0.0/PreferencesController.h000644 001751 000024 00000003242 11733546661 020632 0ustar00multixstaff000000 000000 /* PreferencesController.h - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef PreferencesController_H #define PreferencesController_H @class NSBox; @class NSMutableDictionary; @class NSWindow; @class CynthiunePopUpButton; @interface PreferencesController : NSObject { BOOL windowIsVisible; NSMutableArray *preferenceList; Class currentBundleClass; NSWindow *prefsWindow; CynthiunePopUpButton *bundleSelector; NSBox *bundleViewBox; NSView *currentView; } + (PreferencesController *) preferencesController; - (PreferencesController *) init; - (void) registerPreferenceClass: (Class) aClass; - (void) loadPreferencesWindow; - (void) loadPreferencesWindowAndSelectMenuEntry: (NSString *) entry; - (void) setBundleView: (id) bundlePrefsView; - (void) setBundleClass: (Class) aClass; - (void) bundleChanged: (id)sender; @end #endif /* PreferencesController_H */ Cynthiune-1.0.0/PreferencesController.m000644 001751 000024 00000012026 11763436012 020626 0ustar00multixstaff000000 000000 /* PreferencesController.m - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import "CynthiunePopUpButton.h" #import "GeneralPreference.h" #import "PreferencesController.h" #define LOCALIZED(X) NSLocalizedString (X, nil) @implementation PreferencesController : NSObject + (PreferencesController *) preferencesController { static PreferencesController *singleton = nil; if (!singleton) singleton = [self new]; return singleton; } - (PreferencesController *) init { if ((self = [super init])) { currentView = nil; windowIsVisible = NO; preferenceList = [NSMutableArray new]; [preferenceList addObject: [GeneralPreference class]]; } return self; } - (void) registerPreferenceClass: (Class) aClass { if ([aClass conformsToProtocol: @protocol(Preference)] && ![preferenceList containsObject: aClass]) [preferenceList addObject: aClass]; } - (void) _setupMenuEntries { Class currentClass; id instance; int count, max; [bundleSelector removeAllItems]; max = [preferenceList count]; if (max) for (count = 0; count < max; count++) { currentClass = [preferenceList objectAtIndex: count]; instance = [currentClass instance]; [bundleSelector addItemWithTitle: [instance preferenceTitle]]; } else [bundleSelector addItemWithTitle: LOCALIZED (@"None")]; } - (void) loadPreferencesWindow { Class bundleClass; if (!windowIsVisible) { [NSBundle loadNibNamed: @"Preferences" owner: self]; [self _setupMenuEntries]; bundleClass = [preferenceList objectAtIndex: 0]; [self setBundleClass: bundleClass]; [bundleSelector sizeToFit]; [bundleSelector centerViewHorizontally]; [prefsWindow setLevel: NSModalPanelWindowLevel]; [prefsWindow setTitle: LOCALIZED (@"Preferences")]; [prefsWindow center]; [prefsWindow orderWindow: NSWindowAbove relativeTo: [[NSApp mainWindow] windowNumber]]; [prefsWindow makeKeyAndOrderFront: self]; [prefsWindow setDelegate: self]; windowIsVisible = YES; } } - (void) loadPreferencesWindowAndSelectMenuEntry: (NSString *) entry { [self loadPreferencesWindow]; [bundleSelector selectItemWithTitle: entry]; } - (void) windowWillClose: (NSNotification *) aNotif { id instance; windowIsVisible = NO; instance = [currentBundleClass instance]; [instance save]; } - (void) setBundleClass: (Class) aClass { NSView *prefsView; id instance; instance = [aClass instance]; prefsView = [instance preferenceSheet]; [self setBundleView: prefsView]; currentBundleClass = aClass; } - (void) bundleChanged: (id)sender { NSString *newTitle; Class bundleClass; id instance; newTitle = [sender titleOfSelectedItem]; [sender setTitle: newTitle]; [sender synchronizeTitleAndSelectedItem]; bundleClass = [preferenceList objectAtIndex: [sender indexOfSelectedItem]]; if (bundleClass != currentBundleClass) { instance = [currentBundleClass instance]; [instance save]; [self setBundleClass: bundleClass]; } } - (void) setBundleView: (id) bundlePrefsView { NSRect boxViewFrame, viewFrame; NSArray *subviews; NSView *contentView; contentView = [bundleViewBox contentView]; subviews = [contentView subviews]; if ([subviews count]) [[subviews objectAtIndex: 0] removeFromSuperview]; if (bundlePrefsView) { boxViewFrame = [contentView bounds]; viewFrame = [bundlePrefsView frame]; viewFrame.origin.x = (boxViewFrame.size.width - viewFrame.size.width) / 2; viewFrame.origin.y = (boxViewFrame.size.height - viewFrame.size.height) / 2; viewFrame = [contentView centerScanRect: viewFrame]; [bundlePrefsView setFrame: viewFrame]; [contentView addSubview: bundlePrefsView]; } [bundleViewBox setNeedsDisplay: YES]; } @end Cynthiune-1.0.0/Song.h000644 001751 000024 00000004736 11733546643 015244 0ustar00multixstaff000000 000000 /* Song.h - this file is part of Cynthiune * * Copyright (C) 2002, 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Song_H #define Song_H @class NSDate; @class NSNumber; @class NSString; @protocol Format; typedef enum _SongStatus { SongOK = 0, SongFileNotFound = 1, SongFormatNotRecognized = 2, SongStreamError = 3, } SongStatus; @interface Song : NSObject { NSString *filename; BOOL isSeekable; NSString *title; NSString *artist; NSString *album; NSString *genre; NSString *year; NSString *trackNumber; NSNumber *duration; NSDate *date; unsigned long long size; SongStatus status; Class formatClass; } + (Song *) songWithFilename: (NSString *) filename; - (id) init; - (id) initWithFilename: (NSString *) filename; - (NSObject *) openStreamForSong; - (void) setFilename: (NSString *) newfilename; - (NSString *) filename; - (NSString *) shortFilename; - (SongStatus) status; - (BOOL) isSeekable; - (BOOL) songInfosCanBeModified; - (NSString *) title; - (NSString *) artist; - (NSString *) album; - (NSString *) genre; - (NSString *) trackNumber; - (NSString *) year; - (void) setTitle: (NSString *) newTitle artist: (NSString *) newArtist album: (NSString *) newAlbum genre: (NSString *) newGenre trackNumber: (NSString *) newTrackNumber year: (NSString *) newYear; - (NSNumber *) duration; - (NSString *) playlistRepresentation; - (NSComparisonResult) compareByPlaylistRepresentation: (Song *) aSong; - (NSComparisonResult) reverseCompareByPlaylistRepresentation: (Song *) aSong; - (NSComparisonResult) compareByDuration: (Song *) aSong; - (NSComparisonResult) reverseCompareByDuration: (Song *) aSong; @end #endif /* Song_H */ Cynthiune-1.0.0/Song.m000644 001751 000024 00000032124 11754426577 015247 0ustar00multixstaff000000 000000 /* Song.m - this file is part of Cynthiune * * Copyright (C) 2002, 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import "FormatTester.h" #import "Song.h" #define LOCALIZED(X) NSLocalizedString (X, nil) @implementation Song : NSObject + (Song *) songWithFilename: (NSString *) aFilename { Song *newSong; newSong = [[self alloc] initWithFilename: aFilename]; [newSong autorelease]; return newSong; } - (id) init { if ((self = [super init])) { filename = nil; status = SongFileNotFound; isSeekable = NO; title = nil; artist = nil; album = nil; genre = nil; trackNumber = nil; year = nil; formatClass = Nil; duration = nil; size = 0; date = nil; } return self; } - (BOOL)isEqual:(id)object { if (object == self) return YES; if ([object class] != [self class]) return NO; return [filename isEqualToString:[object filename]]; } - (id) initWithFilename: (NSString *) aFilename { self = [self init]; [self setFilename: aFilename]; return self; } - (void) _detectFormatClass { FormatTester *formatTester; formatTester = [FormatTester formatTester]; formatClass = [formatTester formatClassForFileExtension: [filename pathExtension]]; if (!formatClass) formatClass = [formatTester formatClassForFile: filename]; if (!formatClass) status = SongFormatNotRecognized; } - (NSObject *) openStreamForSong { NSObject *stream; stream = nil; if (filename && [[NSFileManager defaultManager] fileExistsAtPath: filename]) { if (!formatClass) [self _detectFormatClass]; if (formatClass) { stream = [formatClass new]; if ([stream streamOpen: filename]) { [stream autorelease]; status = SongOK; } else { [stream release]; stream = nil; status = SongStreamError; } } } else status = SongFileNotFound; return stream; } - (BOOL) _fileWasModified { NSFileManager *fileManager; NSDictionary *attributes; NSDate *newDate; unsigned long long newSize; BOOL modified; modified = NO; fileManager = [NSFileManager defaultManager]; attributes = [fileManager fileAttributesAtPath: filename traverseLink: YES]; if (attributes) { newDate = [attributes fileModificationDate]; newSize = [attributes fileSize]; if (!(date && [date isEqualToDate: newDate])) { modified = YES; SET (date, newDate); } if (size != newSize) { modified = YES; size = newSize; } } else { status = SongFileNotFound; modified = YES; } return modified; } - (NSEnumerator *) _tagsClassesForProtocol: (Protocol *) protocol { NSString *className; NSMutableArray *classes; NSEnumerator *classEnumerator; Class class; classes = [NSMutableArray new]; [classes autorelease]; if (!formatClass) [self _detectFormatClass]; if (formatClass) { classEnumerator = [[formatClass compatibleTagBundles] objectEnumerator]; className = [classEnumerator nextObject]; while (className) { class = NSClassFromString (className); if (class && [class conformsToProtocol: protocol]) [classes addObject: className]; className = [classEnumerator nextObject]; } } return [classes objectEnumerator]; } - (void) _refreshSongInfos { id stream; NSEnumerator *readingClasses; NSString *readingClass; readingClasses = [self _tagsClassesForProtocol: @protocol (TagsReading)]; readingClass = [readingClasses nextObject]; while (readingClass && ![NSClassFromString (readingClass) readTitle: &title artist: &artist album: &album trackNumber: &trackNumber genre: &genre year: &year ofFilename: filename]) readingClass = [readingClasses nextObject]; if ([title length] == 0) { title = [NSString stringWithFormat: @"[%@]", makeTitleFromFilename (filename)]; [title retain]; } stream = [self openStreamForSong]; if (stream) { isSeekable = [stream isSeekable]; SET (duration, [NSNumber numberWithUnsignedInt: [stream readDuration]]); [stream streamClose]; } } - (void) _readInfos { if (fileIsAcceptable (filename)) { if ([self _fileWasModified]) [self _refreshSongInfos]; } else status = SongFileNotFound; if (status != SongOK) { if (date) { [date release]; date = nil; } size = 0; SET (duration, [NSNumber numberWithUnsignedInt: 0]); } } - (void) setFilename: (NSString *) aFilename { SET (filename, [aFilename stringByStandardizingPath]); if (!fileIsAcceptable (filename)) status = SongFileNotFound; else status = SongOK; } - (NSString *) filename { RETURNSTRING (filename); } - (NSString *) shortFilename { return ((filename) ? [NSString stringWithString: [filename lastPathComponent]] : @""); } - (NSNumber *) duration { [self _readInfos]; return duration; } - (BOOL) songInfosCanBeModified { NSEnumerator *writingClasses; NSFileManager *fm; NSString *writingClass; writingClasses = [self _tagsClassesForProtocol: @protocol (TagsWriting)]; writingClass = [writingClasses nextObject]; fm = [NSFileManager defaultManager]; return (writingClass && [fm isWritableFileAtPath: filename]); } - (NSString *) title { [self _readInfos]; RETURNSTRING (title); } - (NSString *) artist { [self _readInfos]; RETURNSTRING (artist); } - (NSString *) album { [self _readInfos]; RETURNSTRING (album); } - (NSString *) genre { [self _readInfos]; RETURNSTRING (genre); } - (NSString *) trackNumber { [self _readInfos]; RETURNSTRING (trackNumber); } - (NSString *) year { [self _readInfos]; RETURNSTRING (year); } - (void) setTitle: (NSString *) newTitle artist: (NSString *) newArtist album: (NSString *) newAlbum genre: (NSString *) newGenre trackNumber: (NSString *) newTrackNumber year: (NSString *) newYear { NSString *savedTitle, *savedArtist, *savedAlbum, *savedGenre, *savedTrackNumber, *savedYear; NSString *writingClass; NSEnumerator *writingClasses; savedTitle = ([title isEqualToString: newTitle]) ? nil : newTitle; savedArtist = ([artist isEqualToString: newArtist]) ? nil : newArtist; savedAlbum = ([album isEqualToString: newAlbum]) ? nil : newAlbum; savedGenre = ([genre isEqualToString: newGenre]) ? nil : newGenre; savedTrackNumber = (([trackNumber isEqualToString: newTrackNumber]) ? nil : newTrackNumber); savedYear = ([year isEqualToString: newYear]) ? nil : newYear; writingClasses = [self _tagsClassesForProtocol: @protocol (TagsWriting)]; writingClass = [writingClasses nextObject]; while (writingClass && ![NSClassFromString (writingClass) setTitle: savedTitle artist: savedArtist album: savedAlbum trackNumber: savedTrackNumber genre: savedGenre year: savedYear ofFilename: filename]) writingClass = [writingClasses nextObject]; } - (NSString *) playlistRepresentation { NSMutableString *string; [self _readInfos]; string = [NSMutableString string]; switch (status) { case SongOK: if ([trackNumber length]) [string appendFormat: @"%@. ", trackNumber]; if ([title length]) { [string appendString: title]; if ([artist length]) [string appendFormat: @" - %@", artist]; } else { if ([artist length]) [string appendString: artist]; } if ([album length]) { if ([title length] || [artist length]) [string appendString: @" "]; [string appendFormat: @"(%@)", album]; } break; case SongFileNotFound: [string appendFormat: LOCALIZED (@"[not found: %@]"), filename]; break; case SongFormatNotRecognized: [string appendFormat: LOCALIZED (@"[unknown format: %@]"), filename]; break; case SongStreamError: [string appendFormat: LOCALIZED (@"[format error: %@]"), filename]; break; } return string; } - (SongStatus) status { [self _readInfos]; return status; } - (BOOL) isSeekable { return isSeekable; } - (NSComparisonResult) compareByPlaylistRepresentation: (Song *) aSong { NSComparisonResult result; NSString *selfDirectory, *songDirectory; selfDirectory = [filename stringByDeletingLastPathComponent]; songDirectory = [[aSong filename] stringByDeletingLastPathComponent]; result = [selfDirectory caseInsensitiveCompare: songDirectory]; if (result == NSOrderedSame) { result = [album caseInsensitiveCompare: [aSong album]]; if (result == NSOrderedSame) { result = [trackNumber numericallyCompare: [aSong trackNumber]]; if (result == NSOrderedSame) { result = [artist caseInsensitiveCompare: [aSong artist]]; if (result == NSOrderedSame) result = [title caseInsensitiveCompare: [aSong title]]; } } } return result; } - (NSComparisonResult) reverseCompareByPlaylistRepresentation: (Song *) aSong { return reverseComparisonResult ([self compareByPlaylistRepresentation: aSong]); } - (NSComparisonResult) compareByDuration: (Song *) aSong { return [duration compare: [aSong duration]]; } - (NSComparisonResult) reverseCompareByDuration: (Song *) aSong { return reverseComparisonResult ([duration compare: [aSong duration]]); } - (void) dealloc { RELEASEIFSET (filename); RELEASEIFSET (title); RELEASEIFSET (artist); RELEASEIFSET (album); RELEASEIFSET (genre); RELEASEIFSET (trackNumber); RELEASEIFSET (duration); RELEASEIFSET (date); [super dealloc]; } /* NSCoding protocol */ - (void) encodeWithCoder: (NSCoder *) encoder { [self _readInfos]; [encoder encodeObject: filename forKey: @"filename"]; if (title) [encoder encodeObject: title forKey: @"title"]; if (artist) [encoder encodeObject: artist forKey: @"artist"]; if (album) [encoder encodeObject: album forKey: @"album"]; if (trackNumber) [encoder encodeObject: trackNumber forKey: @"trackNumber"]; if (genre) [encoder encodeObject: genre forKey: @"genre"]; if (year) [encoder encodeObject: year forKey: @"year"]; [encoder encodeObject: duration forKey: @"duration"]; if (date) [encoder encodeObject: date forKey: @"date"]; [encoder encodeBool: isSeekable forKey: @"isSeekable"]; [encoder encodeInt: status forKey: @"status"]; [encoder encodeInt64: size forKey: @"size"]; [encoder encodeObject: [self playlistRepresentation] forKey: @"playlistRepresentation"]; } - (id) initWithCoder: (NSCoder *) decoder { if ((self = [self init])) { SET (filename, [decoder decodeObjectForKey: @"filename"]); SET (title, [decoder decodeObjectForKey: @"title"]); SET (artist, [decoder decodeObjectForKey: @"artist"]); SET (album, [decoder decodeObjectForKey: @"album"]); SET (trackNumber, [decoder decodeObjectForKey: @"trackNumber"]); SET (genre, [decoder decodeObjectForKey: @"genre"]); SET (year, [decoder decodeObjectForKey: @"year"]); SET (duration, [decoder decodeObjectForKey: @"duration"]); SET (date, [decoder decodeObjectForKey: @"date"]); isSeekable = [decoder decodeBoolForKey: @"isSeekable"]; status = [decoder decodeIntForKey: @"status"]; size = [decoder decodeIntForKey: @"size"]; } return self; } @end Cynthiune-1.0.0/SongInspectorController.h000644 001751 000024 00000004143 11733546642 021166 0ustar00multixstaff000000 000000 /* SongInspectorController.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef SongInspectorController_H #define SongInspectorController_H @class NSPanel; @class Song; @interface SongInspectorController : NSObject { id filenameField; id titleField; id albumField; id trackField; id artistField; id genreField; id yearField; id albumLabel; id artistLabel; id genreLabel; id titleLabel; id trackLabel; id yearLabel; id pageSelector; id resetButton; id saveButton; id lookupButton; id lookupStatusLabel; id lookupAnimation; NSPanel *inspectorPanel; Song *song; BOOL visible; BOOL threadRunning; BOOL threadShouldDie; // pthread_t lookupThreadId; id delegate; } + (SongInspectorController *) songInspectorController; - (void) setDelegate: (id) delegate; - (id) delegate; #ifndef __WIN32__ - (void) mbLookup: (id)sender; #endif - (void) reset: (id)sender; - (void) save: (id)sender; - (void) setSong: (Song *) song; - (Song *) song; - (void) toggleDisplay; @end @interface NSObject (SongInspectorControllerDelegate) - (void) songInspectorWasShown: (NSNotification *) notification; - (void) songInspectorWasHidden: (NSNotification *) notification; - (void) songInspectorDidUpdateSong: (NSNotification *) notification; @end #endif /* SongInspectorController_H */ Cynthiune-1.0.0/SongInspectorController.m000644 001751 000024 00000041242 12014507040 021152 0ustar00multixstaff000000 000000 /* SongInspectorController.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #ifdef HAVE_MUSICBRAINZ #ifdef MUSICBRAINZ_5 #include #else #include #endif #endif #import #import #import #import "CynthiuneAnimatedImageView.h" #import "MBResultsPanel.h" #import "Song.h" #import "SongInspectorController.h" #define LOCALIZED(X) NSLocalizedString (X, nil) #define busyTrmId "c457a4a8-b342-4ec9-8f13-b6bd26c0e400" static NSNotificationCenter *nc = nil; NSString *SongInspectorWasShownNotification = @"SongInspectorWasShownNotification"; NSString *SongInspectorWasHiddenNotification = @"SongInspectorWasHiddenNotification"; NSString *SongInspectorDidUpdateSongNotification = @"SongInspectorDidUpdateSongNotification"; @implementation SongInspectorController : NSObject + (void) initialize { nc = [NSNotificationCenter defaultCenter]; } + (SongInspectorController *) songInspectorController { static SongInspectorController *singleton = nil; if (!singleton) singleton = [self new]; return singleton; } - (id) init { self = [super init]; if (self) { song = nil; [NSBundle loadNibNamed: @"SongInspector" owner: self]; [titleField setDelegate: self]; [albumField setDelegate: self]; [trackField setDelegate: self]; [artistField setDelegate: self]; [genreField setDelegate: self]; [yearField setDelegate: self]; [lookupAnimation addFramesFromImagenames: @"anim-logo-1", @"anim-logo-2", @"anim-logo-3", @"anim-logo-4", @"anim-logo-5", @"anim-logo-6", @"anim-logo-7", @"anim-logo-8", nil]; [lookupAnimation setInterval: .05]; threadRunning = NO; threadShouldDie = NO; } return self; } /* untestable method */ - (void) dealloc { if (delegate) [nc removeObserver: delegate name: nil object: self]; [super dealloc]; } - (void) _enableWindowButtons { [resetButton setEnabled: YES]; [saveButton setEnabled: YES]; } - (void) _disableWindowButtons { [resetButton setEnabled: NO]; [saveButton setEnabled: NO]; } - (void) _setFieldsEditable: (BOOL) editable { [titleField setEditable: editable]; [albumField setEditable: editable]; [trackField setEditable: editable]; [artistField setEditable: editable]; [genreField setEditable: editable]; [yearField setEditable: editable]; if (editable) { if (!threadRunning) { #ifdef HAVE_MUSICBRAINZ [lookupButton setEnabled: YES]; [lookupButton setImage: [NSImage imageNamed: @"lookup-mb-on"]]; [lookupStatusLabel setStringValue: @""]; #else [lookupButton setEnabled: NO]; [lookupButton setImage: [NSImage imageNamed: @"lookup-mb-off"]]; [lookupStatusLabel setStringValue: LOCALIZED (@"MB lookup disabled")]; #endif [lookupAnimation setImage: nil]; } } else { [lookupButton setEnabled: NO]; [lookupButton setImage: [NSImage imageNamed: @"lookup-mb-off"]]; [lookupAnimation setImage: [NSImage imageNamed: @"lock"]]; [lookupStatusLabel setStringValue: @""]; } } - (void) _updateFields { [self _disableWindowButtons]; if (song) { [filenameField setStringValue: [song filename]]; [titleField setStringValue: [song title]]; [albumField setStringValue: [song album]]; [trackField setStringValue: [song trackNumber]]; [artistField setStringValue: [song artist]]; [genreField setStringValue: [song genre]]; [yearField setStringValue: [song year]]; [self _setFieldsEditable: [song songInfosCanBeModified]]; } else { [filenameField setStringValue: LOCALIZED (@"No song selected")]; [titleField setStringValue: @""]; [albumField setStringValue: @""]; [trackField setStringValue: @""]; [artistField setStringValue: @""]; [genreField setStringValue: @""]; [yearField setStringValue: @""]; [self _setFieldsEditable: NO]; } } - (void) _updateSelector { id menuItem; int count, max; max = [pageSelector numberOfItems]; for (count = 0; count < max; count++) { menuItem = [pageSelector itemAtIndex: count]; [menuItem setTitle: LOCALIZED ([menuItem title])]; } [pageSelector sizeToFit]; [pageSelector centerViewHorizontally]; } - (void) _updateWidgets { [titleLabel setStringValue: LOCALIZED (@"Title")]; [albumLabel setStringValue: LOCALIZED (@"Album")]; [trackLabel setStringValue: LOCALIZED (@"Track")]; [artistLabel setStringValue: LOCALIZED (@"Artist")]; [genreLabel setStringValue: LOCALIZED (@"Genre")]; [yearLabel setStringValue: LOCALIZED (@"Year")]; [resetButton setTitle: LOCALIZED (@"Reset")]; [saveButton setTitle: LOCALIZED (@"Save")]; [resetButton sizeToFit]; [saveButton sizeToFit]; [resetButton arrangeViewLeftTo: saveButton]; [lookupButton setToolTip: LOCALIZED (@"Lookup through MusicBrainz...")]; [lookupButton setImage: [NSImage imageNamed: @"lookup-mb-off"]]; // [lookupButton sizeToFit]; // [lookupButton centerViewHorizontally]; [inspectorPanel setTitle: LOCALIZED (@"Song Inspector")]; [inspectorPanel setDelegate: self]; } - (void) awakeFromNib { [self _updateSelector]; [self _updateWidgets]; [self _updateFields]; } - (void) setDelegate: (id) anObject { if (delegate) [nc removeObserver: delegate name: nil object: self]; delegate = anObject; if ([delegate respondsToSelector: @selector(songInspectorWasShown:)]) [nc addObserver: delegate selector: @selector (songInspectorWasShown:) name: SongInspectorWasShownNotification object: self]; if ([delegate respondsToSelector: @selector(songInspectorWasHidden:)]) [nc addObserver: delegate selector: @selector (songInspectorWasHidden:) name: SongInspectorWasHiddenNotification object: self]; if ([delegate respondsToSelector: @selector(songInspectorDidUpdateSong:)]) [nc addObserver: delegate selector: @selector (songInspectorDidUpdateSong:) name: SongInspectorDidUpdateSongNotification object: self]; } - (id) delegate { return delegate; } - (void) setSong: (Song *) newSong { if (song != newSong) { if (threadRunning) threadShouldDie = YES; SET (song, newSong); [self _updateFields]; } } - (Song *) song { return song; } /* button actions */ - (void) reset: (id) sender { [self _updateFields]; } - (void) save: (id) sender { [self _disableWindowButtons]; [song setTitle: [titleField stringValue] artist: [artistField stringValue] album: [albumField stringValue] genre: [genreField stringValue] trackNumber: [trackField stringValue] year: [yearField stringValue]]; [nc postNotificationName: SongInspectorDidUpdateSongNotification object: self userInfo: [NSDictionary dictionaryWithObject: song forKey: @"song"]]; } - (void) updateField: (NSTextField *) field withString: (NSString *) string { if (!threadShouldDie) [field performSelectorOnMainThread: @selector (setStringValue:) withObject: string waitUntilDone: NO]; } - (BOOL) _updateInfoField: (NSTextField *) field withString: (NSString *) string { BOOL result; if (!string) string = @""; if (![[field stringValue] isEqualToString: string]) { [field setStringValue: string]; result = YES; } else result = NO; return result; } - (void) _updateFieldsWithTrackInfos: (NSDictionary *) trackInfos { BOOL changes; changes = [self _updateInfoField: titleField withString: [trackInfos objectForKey: @"title"]]; changes |= [self _updateInfoField: albumField withString: [trackInfos objectForKey: @"album"]]; changes |= [self _updateInfoField: trackField withString: [trackInfos objectForKey: @"trackNumber"]]; changes |= [self _updateInfoField: artistField withString: [trackInfos objectForKey: @"artist"]]; changes |= [self _updateInfoField: yearField withString: [trackInfos objectForKey: @"year"]]; if (changes) [self _enableWindowButtons]; } - (void) _updateSongFields: (NSArray *) allTrackInfos { unsigned int numberOfTracks; numberOfTracks = [allTrackInfos count]; [lookupStatusLabel setStringValue: [NSString stringWithFormat: LOCALIZED (@"Received %d result(s)"), numberOfTracks]]; if (numberOfTracks == 1) [self _updateFieldsWithTrackInfos: [allTrackInfos objectAtIndex: 0]]; else if (numberOfTracks > 1) [[MBResultsPanel resultsPanel] showPanelForTrackInfos: allTrackInfos aboveWindow: inspectorPanel target: self selector: @selector (_updateFieldsWithTrackInfos:)]; } #ifdef HAVE_MUSICBRAINZ #ifdef MUSICBRAINZ_5 - (NSDictionary *) readMB: (Mb5RecordingList) mb #else - (NSDictionary *) readMB: (MbResultList) mb #endif track: (int) track { NSMutableDictionary *trackInfos; NSString *string; char cString[256]; #ifdef MUSICBRAINZ_5 Mb5Recording rec; Mb5ReleaseList albums; Mb5Artist artist; Mb5Release rel; Mb5ArtistCredit credit; Mb5NameCreditList clist; Mb5NameCredit name_credit; #else MbTrack rec; MbRelease rel; MbArtist artist; #endif trackInfos = [NSMutableDictionary new]; [trackInfos autorelease]; #ifdef MUSICBRAINZ_5 rec = mb5_recording_list_item (mb, track); #else rec = mb_result_list_get_track (mb, track); #endif if (rec) { #ifdef MUSICBRAINZ_5 mb5_recording_get_title (rec, cString, sizeof (cString)); #else mb_track_get_title (rec, cString, sizeof (cString)); #endif string = [NSString stringWithUTF8String: cString]; [trackInfos setObject: string forKey: @"title"]; #ifdef MUSICBRAINZ_5 albums = mb5_recording_get_releaselist (rec); rel = mb5_release_list_item (albums, 0); mb5_release_get_title (rel, cString, sizeof (cString)); #else /* FIXME: It appears that `rel' is not the release/album but the track; subsequently `mb_release_get_title' returns the song title and not the release title. */ rel = mb_result_list_get_release (mb, track); mb_release_get_title (rel, cString, sizeof (cString)); #endif string = [NSString stringWithUTF8String: cString]; [trackInfos setObject: string forKey: @"album"]; #ifdef MUSICBRAINZ_5 /* FIXME: Figure out how to extract the release date with libmusicbrainz3. */ mb5_release_get_date (rel, cString, sizeof (cString)); *(cString + 4) = 0; string = [NSString stringWithUTF8String: cString]; [trackInfos setObject: string forKey: @"year"]; /* Obtain the artist name. Slightly convoluted, but it looks like there's no other way. */ credit = mb5_recording_get_artistcredit (rec); clist = mb5_artistcredit_get_namecreditlist (credit); name_credit = mb5_namecredit_list_item (clist, 0); artist = mb5_namecredit_get_artist (name_credit); mb5_artist_get_name (artist, cString, sizeof (cString)); #else artist = mb_track_get_artist (rec); mb_artist_get_name (artist, cString, 256); #endif string = [NSString stringWithUTF8String: cString]; [trackInfos setObject: string forKey: @"artist"]; } return trackInfos; } #ifdef MUSICBRAINZ_5 - (void) _parseMB: (Mb5RecordingList) mb #else - (void) _parseMB: (MbResultList) mb #endif { int count, results; NSMutableArray *allTrackInfos; #ifdef MUSICBRAINZ_5 results = mb5_recording_list_size (mb); #else results = mb_result_list_get_size (mb); #endif allTrackInfos = [[NSMutableArray alloc] initWithCapacity: results]; [allTrackInfos autorelease]; for (count = 0; count < results; count++) [allTrackInfos addObject: [self readMB: mb track: count]]; [self performSelectorOnMainThread: @selector (_updateSongFields:) withObject: allTrackInfos waitUntilDone: YES]; } - (void) lookupThread { NSAutoreleasePool *pool; #ifdef MUSICBRAINZ_5 Mb5Query query; Mb5Metadata metadata; Mb5RecordingList mb; char **p_names, **p_values; char error[256]; #else MbQuery query; MbTrackFilter filter; MbResultList mb; #endif pool = [NSAutoreleasePool new]; [self updateField: lookupStatusLabel withString: LOCALIZED (@"Querying the MusicBrainz server...")]; #ifdef MUSICBRAINZ_5 query = mb5_query_new ("Cynthiune", NULL, 0); #else query = mb_query_new (NULL, "Cynthiune"); #endif if (query) { #ifdef MUSICBRAINZ_5 p_names = malloc (2 * sizeof (char *)); p_values = malloc (2 * sizeof (char *)); p_names[0] = malloc (10); p_values[0] = malloc (256); strcpy (p_names[0], "query"); strcpy (p_values[0], [[song title] UTF8String]); if (strlen (p_values[0]) > 0) { metadata = mb5_query_query (query, "recording", "", "", 1, p_names, p_values); mb5_query_get_lasterrormessage (query, error, sizeof (error)); if (metadata) { mb = mb5_metadata_get_recordinglist (metadata); [self _parseMB: mb]; mb5_metadata_delete (metadata); } #else if ([[song title] UTF8String] != NULL) { filter = mb_track_filter_new (); mb_track_filter_title (filter, [[song title] UTF8String]); if ([[song artist] UTF8String] != NULL) mb_track_filter_artist_name (filter, [[song artist] UTF8String]); mb = mb_query_get_tracks (query, filter); [self _parseMB: mb]; mb_track_filter_free (filter); } #endif #ifdef MUSICBRAINZ_5 else [self updateField: lookupStatusLabel withString: [NSString stringWithFormat: LOCALIZED (@"Error while querying the\n" @"Musicbrainz server: %s"), error]]; } free (p_names[0]); free (p_values[0]); free (p_names); free (p_values); #endif } #ifdef MUSICBRAINZ_5 mb5_query_delete (query); #else mb_query_free (query); #endif [self performSelectorOnMainThread: @selector (lookupThreadEnded) withObject: nil waitUntilDone: NO]; [pool release]; } #endif - (void) mbLookup: (id)sender { if (song) { if (!threadRunning) { threadRunning = YES; [lookupAnimation startAnimation]; [lookupButton setEnabled: NO]; [lookupButton setImage: [NSImage imageNamed: @"lookup-mb-off"]]; [NSThread detachNewThreadSelector: @selector (lookupThread) toTarget: self withObject: nil]; } } else NSLog (@"how could that method be called?"); } - (void) lookupThreadEnded { threadRunning = NO; threadShouldDie = NO; [lookupAnimation stopAnimation]; if (song && [song songInfosCanBeModified]) { [lookupButton setEnabled: YES]; [lookupButton setImage: [NSImage imageNamed: @"lookup-mb-on"]]; } } - (void) toggleDisplay { if ([inspectorPanel isVisible]) [inspectorPanel close]; else [inspectorPanel makeKeyAndOrderFront: self]; } /* inspector delegate */ - (void) windowDidBecomeKey: (NSNotification*) aNotif { if ([aNotif object] == inspectorPanel) [nc postNotificationName: SongInspectorWasShownNotification object: self]; } - (void) windowWillClose: (NSNotification *) aNotif { if ([aNotif object] == inspectorPanel) [nc postNotificationName: SongInspectorWasHiddenNotification object: self]; } /* textfields delegate */ - (void) controlTextDidChange:(NSNotification *)aNotification { [self _enableWindowButtons]; } @end Cynthiune-1.0.0/TODO000644 001751 000024 00000004110 11733546645 014641 0ustar00multixstaff000000 000000 * frontend: - make Cynthiune playlist-oriented (document interface?); - make Cynthiune themeable, if possible by supporting Winamp/XMMS skins; - the info menu should include a "Check for update..." option; - add the ability to remove duplicate songs; - having a dock-icon compatible with the systray freedesktop.org standard; - support for multimedia keyboards; - having the appicon show the title of the current song + remaining time or progression of the song, depending on how the player displays the time in the player window; - having a jukebox-style song selection and manipulation system; - update the preferences with options to tune all that can be tuned; * formats: - AAC/MP4 bundle - A52 (AC3) bundle - ability to play HTTP streams; - compatibility layer with XMMS plugins; - add exporter bundles, to convert streams into .wav and .ogg files; - format-specifiec metadata in the song inspector; * players: - CD writing output bundle; - implement CD reading, modify the open dialog so that it can read CD tracks; * playlist: - thread operations which are resource consuming such as adding Songs, to avoid the player from being interrupted. - write a full-featured playlist manager; - the sort order should be defined through a defined chain of parameters to compare with each other, configurable from the preference panel; * translations: - write translations; * documentation: - write a user manual; - a dev. manual (plugins) ?; * maybe: - scripting and/or remote control interface? * API: - rename the new classes of the Cynthiune framework to comply with the GNUstep/Cocoa naming convention * BUGS: - leaks?; - drag & dropping mechanism put files at the end of the list, notwithstanding the positiong they were dragged to, things need to be cleaned up and rearranged between PlaylistController and TableViewController; - the logic behind the management of the current song needs to be separated and put in a PlayerController only, not the PlaylistController; - playing too fast on certain arches; - take care of the FIXME's; ( $Id: TODO,v 1.1.1.1 2012/03/25 07:47:49 buzzdee Exp $ ) Cynthiune-1.0.0/dependencies.make000644 001751 000024 00000000246 11733546643 017442 0ustar00multixstaff000000 000000 all:: -@$(foreach eddir,$(foreach ddir,$(DEPENDENCIES_DIRS),$(wildcard $(ddir))),echo "Making $@ in dependency directory '$(eddir)'..."; ( cd $(eddir) && make $@);) Cynthiune-1.0.0/frameworks.make000644 001751 000024 00000001537 11751032255 017165 0ustar00multixstaff000000 000000 # -*-makefile-*- ADDITIONAL_INCLUDE_DIRS += $(foreach fdir,$(foreach fdir,$(FRAMEWORKS_DIRS),$(foreach framework,$(FRAMEWORKS),$(wildcard $(fdir)/$(framework).framework))),-I$(fdir)/Headers) ifeq (yes, $(local-build)) _ldflags = $(foreach framework,$(FRAMEWORKS),$(foreach efdir,$(foreach fdir,$(FRAMEWORKS_DIRS),$(wildcard $(fdir)/$(framework).framework)), -Wl,-rpath,$(if $(wildcard $(shell pwd)/$(efdir)),$(shell pwd)/$(efdir),$(efdir))/Versions/Current -L$(efdir)/Versions/Current) -l$(framework)) else _ldflags = $(foreach framework,$(FRAMEWORKS),$(foreach efdir,$(foreach fdir,$(FRAMEWORKS_DIRS),$(wildcard $(fdir)/$(framework).framework)), -L$(efdir)/Versions/Current) -l$(framework)) endif ifeq (mingw32, $(GNUSTEP_TARGET_OS)) ADDITIONAL_GUI_LIBS += -L$(FRAMEWORKS_DIRS)/../../Cynthiune.app $(_ldflags) else ADDITIONAL_GUI_LIBS += $(_ldflags) endif Cynthiune-1.0.0/main.m000644 001751 000024 00000001741 11733546650 015256 0ustar00multixstaff000000 000000 /* main.m - this file is part of Cynthiune * * Copyright (C) 2002, 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import int main (int argc, const char *argv[]) { return NSApplicationMain (argc, argv); } Cynthiune-1.0.0/unittest.make000644 001751 000024 00000001603 11733546660 016670 0ustar00multixstaff000000 000000 OTEST = otest UNITTEST_API_HEADER_FILES = $($(FRAMEWORK_NAME)_API_HEADER_FILES) UNITTEST_API_OBJC_FILES = $($(FRAMEWORK_NAME)_API_OBJC_FILES) UNITTEST_API_DIRECTORY = $($(FRAMEWORK_NAME)_API_DIRECTORY) $(FRAMEWORK_NAME)_HEADER_FILES += $(UNITTEST_API_HEADERS_FILES) $(FRAMEWORK_NAME)_OBJC_FILES += $(UNITTEST_API_OBJC_FILES) $(FRAMEWORK_NAME)_CFLAGS += -I$(UNITTEST_API_DIRECTORY)/.. -I$(UNITTEST_API_DIRECTORY) $(FRAMEWORK_NAME)_LDFLAGS += -lSenTestingKit -lgnustep-base -lgnustep-gui all:: before-all:: $(UNITTEST_API_HEADER_FILES) $(UNITTEST_API_OBJC_FILES) $(UNITTEST_API_HEADER_FILES) $(UNITTEST_API_OBJC_FILES): @echo Linking API file '$@'... @rm -f $@ @ln -s $(UNITTEST_API_DIRECTORY)/$@ ./ after-distclean after-clean:: @echo Cleaning API symlinks... @rm -f $(UNITTEST_API_HEADER_FILES) $(UNITTEST_API_OBJC_FILES) test:: all @$(OTEST) -SenTest All $(FRAMEWORK_NAME).framework Cynthiune-1.0.0/Bundles/000755 001751 000024 00000000000 11751032255 015534 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Cynthiune.gorm/000755 001751 000024 00000000000 12112243636 017050 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Cynthiune.nib/000755 001751 000024 00000000000 12014507041 016646 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Cynthiune.pbproj/000755 001751 000024 00000000000 11750067412 017403 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/English.lproj/000755 001751 000024 00000000000 11773143065 016664 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Frameworks/000755 001751 000024 00000000000 11742131624 016260 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/French.lproj/000755 001751 000024 00000000000 11742131624 016472 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/GeneralPreference.gorm/000755 001751 000024 00000000000 11742131624 020457 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/GeneralPreference.nib/000755 001751 000024 00000000000 12014507041 020254 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/German.lproj/000755 001751 000024 00000000000 11742131624 016476 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Hungarian.lproj/000755 001751 000024 00000000000 11742131624 017201 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Images/000755 001751 000024 00000000000 11742131625 015346 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Italian.lproj/000755 001751 000024 00000000000 11742131625 016647 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Preferences.gorm/000755 001751 000024 00000000000 11742131625 017345 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Preferences.nib/000755 001751 000024 00000000000 12014507042 017142 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Slovak.lproj/000755 001751 000024 00000000000 11742131625 016525 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/SongInspector.gorm/000755 001751 000024 00000000000 11742131625 017701 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/SongInspector.nib/000755 001751 000024 00000000000 11742131625 017505 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Spanish.lproj/000755 001751 000024 00000000000 11742131625 016673 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/TraditionalChinese.lproj/000755 001751 000024 00000000000 11742131625 021037 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Cynthiune.xcode/000755 001751 000024 00000000000 12014507041 017200 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/GNUmakefile.preamble000644 001751 000024 00000003461 12014507040 017774 0ustar00multixstaff000000 000000 # -*-makefile-gmake-*- # GNUmakefile.preamble - this file is part of Cynthiune # # Copyright (C) 2004 Wolfgang Sourdeau # Copyright (C) 2012 Free Software Foundation, Inc. # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_OBJCFLAGS += -Wall -Wno-import ifeq ($(local-build), yes) ADDITIONAL_CPPFLAGS += -DLOCALBUILD=1 endif ifneq (yes,$(disable-musicbrainz)) _have_musicbrainz5 := $(shell pkg-config --exists libmusicbrainz5 && echo yes) _have_musicbrainz3 := $(shell pkg-config --exists libmusicbrainz3 && echo yes) ifeq ($(_have_musicbrainz5), yes) ADDITIONAL_CPPFLAGS += -DHAVE_MUSICBRAINZ -DMUSICBRAINZ_5 ADDITIONAL_GUI_LIBS += -lmusicbrainz5 else ifeq ($(_have_musicbrainz3), yes) ADDITIONAL_CPPFLAGS += -DHAVE_MUSICBRAINZ ADDITIONAL_GUI_LIBS += -lmusicbrainz3 endif endif ifeq (mingw32, $(GNUSTEP_TARGET_OS)) #ADDITIONAL_GUI_LIBS += -L/MingW/bin -lmusicbrainz3 #ADDITIONAL_GUI_LIBS += -L/MingW/bin -lmusicbrainz3 ADDITIONAL_GUI_LIBS += -L/MingW/bin -L./Frameworks/Cynthiune/obj endif ifeq ($(enable-goom), yes) ADDITIONAL_CPPFLAGS += -DGOOM=1 ADDITIONAL_GUI_LIBS += $(shell pkg-config --libs libgoom2) endif Cynthiune-1.0.0/ChangeLog.orig000644 001751 000024 00000470016 11755214707 016671 0ustar00multixstaff000000 000000 2012-05-17 Riccardo Mottola * PlaylistController.m Fix repeat and shuffle menu items. * Frameworks/Cynthiune/utils.h Map macros to GNUstep macros and provide Mac replacements. 2012-05-16 Philippe Roussel * Player.m * Player.h Fix crashes when seeking through a file when using a threaded backend. In this case the input stream is accessed from at least two threads and so must be protected by a lock. 2012-05-15 Sebastian Reitenbach * Playlist.m just skip duplicate songs when loading playlists or trying to add a song already in the playlist instead of throwing an exception and aborting 2012-05-14 Philippe Roussel * Bundles/Timidity/Timidity.m do not crash when loading a .mid file without having timidity installed 2012-05-14 Philippe Roussel * Song.m Proper isEqual compare. * PlaylistController.m Fix playlist and bundle loading. 2012-05-13 Philippe Roussel * Playlist.m * Song.m * Bundles/Esound/EsoundPreference.m * Bundles/OSS/OSS.h * Bundles/WindowsMedia/CWMFile.cpp Fix * Bundles/Esound/Esound.m Conform to new protocol * Bundles/Ogg/Ogg.m Endianness to native. 2012-05-13 Sebastian Reitenbach * Bundles/Sndio/Sndio.[h|m] handle media-endianness given in the media bundles. 2012-05-13 Sebastian Reitenbach * Bundles/Timidity/Timidity.m Default eniannessd needs to be native, otherwise macppc play garbage Use relative name to find timidity binary Switch buffer size from 65536 to DEFAULT_BUFFER_SIZE defined in Output.h 2012-05-13 Riccardo Mottola * Bundles/FLAC/FLAC.m * Bundles/Mod/Mod.m * Bundles/Musepack/Musepack.m Set default endianness to native. 2012-05-13 Riccardo Mottola * Bundles/WindowsMedia/WindowsMedia.m Set endianness to native. 2012-05-13 Riccardo Mottola * Player.h * Player.m * Bundles/ALSA/ALSA.h * Bundles/ALSA/ALSA.m * Bundles/AO/ao.m * Bundles/AudioFile/AudioFile.m * Bundles/MP3/MP3.m * Bundles/OSS/OSS.h * Bundles/OSS/OSS.m * Bundles/WindowsMedia/WindowsMedia.m * Frameworks/Cynthiune/Format.h * Frameworks/Cynthiune/Output.h Set media-endianness in media and output bundle. 2012-05-09 Sebastian Reitenbach * GNUmakefile fix detection of OpenBSD in order to build the Sndio bundle 2012-05-09 Riccardo Mottola * PlaylistController.m Remove hacks and use runModalForTypes. 2012-05-09 Riccardo Mottola * PlaylistController.h * PlaylistController.m * Cynthiune.gorm * English.lproj/Localizable.strings Implement open playlist 2012-05-08 Sebastian Reitenbach * Bundles/AO/ao.m fix crasher when jumping automatically from one song to the next which have different bit rates patch from Philippe Roussel 2012-05-05 Sebastian Reitenbach * Bundles/Sndio/Sndio.m Force to use little endian format, to make it work on Big Endian architectures 2012-05-05 Sebastian Reitenbach * Bundles/AO/ao.m fix resetting of audio parameters when automatically jumping to next song with different bit rate. Further, use AO_FMT_LITTLE, to fix output on big endian systems, i.e. PowerPC. From Philippe Roussel, Thanks! 2012-05-04 Riccardo Mottola * GeneralPreference.m When reading preferences, transform in a mutable dictionary since that is what we expect. * SongInspectorController.m Don't set the inspector to status level: it is ugly and doesn't work on Unity and other WMs anyway. 2012-05-04 Riccardo Mottola * Bundles/ID3Tag/ID3Tag.m Compare strings with strcmp and not == 2012-05-03 Philippe Roussel * Bundles/AO/* New output bundle base on libao. * GNUmakefile Add AO bundle to the build, unless disable-ao=yes if used. 2012-05-03 Riccardo Mottola for Yavor Doganov * GNUmakefile * GeneralPreference.m * Bundles/ALSA/ALSA.h * Bundles/ALSA/ALSA.m * Bundles/ALSA/GNUmakefile * Bundles/ALSA/GNUmakefile.preamble ALSA backend fron Yavor with slight modifications 2012-05-02 Riccardo Mottola * GNUmakefile.preamble * Bundles/ASFTags/GNUmakefile * Bundles/ASFTags/GNUmakefile.preamble * Bundles/FLAC/GNUmakefile * Bundles/FLAC/GNUmakefile.preamble * Bundles/FLACTags/GNUmakefile * Bundles/FLACTags/GNUmakefile.preamble * Bundles/ID3Tag/GNUmakefile * Bundles/ID3Tag/GNUmakefile.preamble * Bundles/MP3/GNUmakefile.preamble * Bundles/OSS/GNUmakefile * Bundles/OSS/GNUmakefile.preamble * Bundles/Taglib/GNUmakefile * Bundles/Taglib/GNUmakefile.preamble * Bundles/Timidity/GNUmakefile * Bundles/Timidity/GNUmakefile.preamble * Bundles/VorbisTags/GNUmakefile * Bundles/VorbisTags/GNUmakefile.preamble * Bundles/WaveOut/GNUmakefile.preamble * Bundles/WindowsMedia/GNUmakefile * Bundles/WindowsMedia/GNUmakefile.preamble: Fix linking flags for Windows 2012-05-02 Yavor Doganov (originally 2009-04-09) * Frameworks/Cynthiune/GNUmakefile (Cynthiune_LIBRARIES_DEPEND_UPON): Add $(OBJC_LIBS). * Bundles/ID3Tag/GNUmakefile.preamble (ADDITIONAL_LDFLAGS): Rename as... (BUNDLE_LIBS): ...which is the proper variable. * Bundles/AudioFile/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/FLACTags/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/FLAC/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/Musepack/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/Esound/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/aRts/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/WindowsMedia/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. * Bundles/MP3/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (TAGLIB_CFLAGS, TAGLIB_LIBS): Do not define. * Bundles/Mod/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. Don't link against libstdc++. * Bundles/VorbisTags/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (VORBIS_LIBS): Don't link against libvorbisenc. * Bundles/Ogg/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (VORBIS_LIBS): Likewise. * Bundles/Taglib/GNUmakefile.preamble (ADDITIONAL_LDFLAGS) (BUNDLE_LIBS): Likewise. (TAGLIB_LIBS): Link only against libtaglib_c. * frameworks.make (ADDITIONAL_LDFLAGS): Rename as... (ADDITIONAL_GUI_LIBS): ...this. 2012-04-30 Sebastian Reitenbach * Bundles/Sndio/Sndio.h * Bundles/Sndio/Sndio.m try make it work more reliable, still not perfect yet 2012-04-30 Riccardo Mottola * SongInspectorController.m: * CynthiunePauseButton.m: Fix warning in initialization. * Frameworks/Cynthiune/utils.h Use new runtime function name sel_getName() 2012-04-30 Riccardo Mottola * Bundles/MP3/MP3.h * Bundles/MP3/MP3.m Do not use @def() and expose ivars public to enable compiling with non-fragile ABI. 2012-04-30: Sebastian Reitenbach * SongInspectorController.m do not include musicbrainz header for now. From Philippe Roussel 2012-04-29 Sebastian Reitenbach * README, point out how to build with old musepack API * Bundles/Musepack/CNSFileHandle.h * Bundles/Musepack/CNSFileHandle.m * Bundles/Musepack/Musepack.h * Bundles/Musepack/Musepack.m Build against new Musepack API by default, based on patches from Debian from Yavor Doganov, forwarded by Philippe Roussel Build against old API using ADDITIONAL_OBJCFLAGS=-DMUSEPACK_API_126 in the make environment while building Cynthiune 2012-04-29 Sebastian Reitenbach * GNUmakefile remove old GNUSTEP_INSTALLATION_DIR 2012-04-29 Sebastian Reitenbach Take patches from Debian, from Yavor Doganov Forwarded from Philippe Roussel, to fixFTBFS and adopt to the slightly changed avifile API. * Bundles/WindowsMedia.CWMFile.h (WMStreamReadFrames): Typo fix. * Bundles/WindowsMedia/CWMFile.cpp: Include . (WMFileAudioStreamCount, WMStreamGetFrameSize): Cast the result to unsigned int. (WMStreamReadFrames) <_samplesRead, _bytesRead>: Declare of type size_t. Amend the call to readStream->ReadFrames accordingly. 2012-04-26 Sebastian Reitenbach * Bundles/OSS/GNUmakefile.preamble only link against libossaudio on OpenBSD 2012-03-25 Sebastian Reitenbach * GNUmakefile.preamble use pkg-config to find the goom libraries 2012-03-25 Sebastian Reitenbach * Add the Sndio Output Bundle, still work in progress 2012-03-25 Sebastian Reitenbach * Bundles/Esound/EsoundPreference.m include NSDictionary.h * CynthiuneController.m do not include nonexisting header * CynthiuneAnimatedImageView.m, CynthiunePauseButton.m, CynthiuneSongTitleCell.m add [super dealloc] 2012-03-25 Sebastian Reitenbach * Frameworks/Cynthiune/GNUmakefile.preamble diable mcheck * Frameworks/Cynthiune/NSCellExtensions.m include NSFoundation.h 2012-03-25 Sebastian Reitenbach * SongInspectorController.m disable LibMusicBrainz for now * GNUmakefile, GNUmakefile.preamble disable mcheck, and libmusicbrainz, and add Sndio bundle if statement 2012-03-25 Sebastian Reitenbach * PlaylistController.m fix opening open Panel 2012-03-25 Sebastian Reitenbach * GeneralPreference.m make Sndio backend the default on OpenBSD 2012-03-25 Sebastian Reitenbach * Bundles/FLAC/FLAC.* update to newer FLAC API * Bundles/FLAC/FLACTags.m update to newer FLAC API 2012-03-25 Sebastian Reitenbach * BundleManager.m make it find Cynthiunes bundles, and simplify some while loops * Bundles/*/GNUmakefile install bundles in right location * Bundles/*/GNUmakefile.preamble do not link against mcheck when debug flag is set 2012-03-25 Sebastian Reitenbach * Initial Import to GAP CVS 2006-03-31 Wolfgang Sourdeau * GNUmakefile: release 0.9.5. * Player.m ([Player -readNextChunk:bufferwithSize:bufferSize]): return 0 if the code returned was 0 or less. 2006-03-28 Wolfgang Sourdeau * PlaylistView.m ([PlaylistView -_selectionTopByExtendingIt:keep]) ([PlaylistView -_selectionBottomByExtendingIt:keep]): take selectionDir into account. * PlaylistController.m ([PlaylistController -updateStatusLabel]): made public. ([PlaylistController -toggleShuffle:sender]): shuffle also if currentPlayerSong is not set. Adapted to new (closer) relationship with PlaylistViewController. * PlaylistViewController.m: removed setDelegate:, replaced it with the more appropriate "setPlaylistController" since we know for sure there will be one. Removed all the custom notifications from this class and invoke directly some new methods from the playlistController. * CynthiuneController.m ([CynthiuneController -awakeFromNib]): set the playlistWindow as the next responder for the playerWindow. * PlaylistView.m ([PlaylistView -performKeyEquivalent:event]): overload this method instead of keyDown: which is "lower-level" and is not invoked when the key event occurs when the focus is on another widget. ([PlaylistView -_selectionUpByExtendingIt:keep]) ([PlaylistView -_selectionDownByExtendingIt:keep]) ([PlaylistView -_selectionTopByExtendingIt:keep]) ([PlaylistView -_selectionBottomByExtendingIt:keep]): invoke scrollRowToVisible: with the appropriate argument. * PlaylistController.m ([PlaylistController -playlistViewActivateSelection:view]): new method bound to the return key. ([PlaylistController -playlistViewDeleteSelection:view]): new method bound to the delete key. * PlaylistViewController.m ([PlaylistViewController -playlistViewActivateSelection:view]) ([PlaylistViewController -playlistViewDeleteSelection:view]): added proxy methods transferring the call to PlaylistController. * PlaylistView.m ([PlaylistView -keyDown:event]): moved the keyboard handling here, replacing the one previously in CynthiuneController. * PlaylistViewController.m ([PlaylistViewController -selectSongsInArray:array]): removed the "extend" parameter. 2006-03-24 Wolfgang Sourdeau * CynthiuneController.m ([CynthiuneController -keyPressed:event]): new method to fulfill the CynthiuneWindowDelegate protocol that handles known keypresses (the arrow keys + return + delete) before the responder API does it. * PlaylistController.m ([PlaylistController -selectPreviousSong:senderbyKeepingSelection:keep]) ([PlaylistController -selectNextSong:senderbyKeepingSelection:keep]): new method to manipulate the song selection in the playlist view externally. * PlaylistViewController.m ([PlaylistViewController -selectSongsInArray:arraybyExtendingSelection:extend]): added an "extend" parameter to this method to control whether the selection should be extended rather than implicitly doing it. * CynthiuneWindow.m ([CynthiuneWindow -keyDown:]): new subclass method to intercept keypresses before the API does. * SongInspectorController.m ([SongInspectorController -song]): new accessor method. * Song.m ([Song -_tagsClassesForProtocol:protocol]): method derived from its previous "_tagsClassForProtocol:" version. Now returning all the classes found as strings in an enumerator. ([Song -_refreshSongInfos]): walk all the classes returned by _tagsClassesForProtocol: until one is found and does not return NO on the reading operation. ([Song -setTitle:newTitleartist:newArtistalbum:newAlbumgenre:newGenretrackNumber:newTrackNumberyear:newYear]): same as above but for writing. * PlaylistController.m ([PlaylistController -cleanupPlaylist:sender]): if the song viewed in the song inspector is one of the invalid songs, stop viewing it. The repeat and shuffle buttons were removed from the toolbar and put on the player window instead, since those features really have to do with the player rather than with the playlist per se. 2006-03-22 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -lookupThread]): set the mb label to an empty string whenever an error occurs so the user doesn't keep waiting. * MBResultsPanel.m ([MBResultsPanel -_createTableView:contentView]): added a column for the track number. * SongInspectorController.m ([SongInspectorController -lookupThread]): add song metadata to the parameters of the mb query so that their server can maybe return a more accurate result. Also, ask mb to use UTF8. 2006-03-21 Wolfgang Sourdeau * Bundles/ID3Tag/ID3Tag.m: bundle now conform to the TagsWriting protocol. * Bundles/Musepack/CNSFileHandle.m (CNSFileHandleCanSeek) (CNSFileHandleSeek): those functions really should return an mpc_bool_t rather than a BOOL. * Bundles/Mod/Mod.m ([Mod -readNextChunk:bufferwithSize:bufferSize]): test the architecture endianness with cpp rather than at runtime. * Bundles/Musepack/Musepack.m ([Musepack -readNextChunk:bufferwithSize:bufferSize]): invoke invertBytesInBuffer on big endian architectures. * PlaylistView.[hm]: renamed module from PlaylistTableView. * Bundles/FLACTags/FLACTags.[hm]: new tags bundle for reading tags metadata from FLAC files. * Bundles/FLAC/FLAC.m: purge code that was there for tags reading, moved to FLACTags and modified. * PlaylistViewController.m ([PlaylistViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): don't do anything with the sort order if the number of songs in the list is < 1. * CynthiuneHeaderCell.m ([CynthiuneHeaderCell -widthOfText:text]): add the size of the arrow + its offset when computing this value. * CynthiuneSongTitleCell.m ([CynthiuneSongTitleCell -widthOfText:text]): add the size of the arrow + its offset when computing this value. * PlaylistViewController.[hm]: renamed module from TableViewController. 2006-03-20 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): changed algorithm so that we would use the column identifier and the sort order rather than the previous "sortedInPlaylist" and "sortedInDuration" bools. * CynthiuneHeaderCell.m ([CynthiuneHeaderCell -cellSize]): added the size of the arrow to the regular cell size so that sizeToFit has a better reference on how much size to prepare. * Playlist.m ([-sortByPlaylistRepresentation:reverseOrder]) ([Playlist -sortByDuration:reverseOrder]): use the "reverseOrder" parameter... in correct order. 2006-03-19 Wolfgang Sourdeau * Frameworks/Cynthiune/NSStringExtensions.m ([-caseInsensitiveCompareContainingDirectory:aString]): removed method. Foundation's stringByDeletingLastPathComponent does the job for us. 2006-03-18 Wolfgang Sourdeau * Song.m ([Song -compareByPlaylistRepresentation:aSong]): modified the sort ordered so that two songs are first compared base on their parent directories. * Frameworks/Cynthiune/NSStringExtensions.m ([NSString -caseInsensitiveCompareContainingDirectory:aString]): new method to case-insensitively compare the dirname of two filenames. 2006-03-17 Wolfgang Sourdeau * Song.m ([Song -compareByPlaylistRepresentation:aSong]): modified the sort order so that the songs from the same album but from a different artist are still ordered by song number. * Bundles/aRts/aRts.m ([aRts -_launchServer]): new method to launch the artsd daemon if it's not running. * Bundles/OSS/OSSPreference.m ([OSSPreference -controlTextDidEndEditing:notification]): same as below. * Bundles/Esound/EsoundPreference.m ([EsoundPreference -controlTextDidEndEditing:notification]): this new delegate method replaces the old hostAction: and portAction: methods by modifying the value from the field that ended being modified. This replacement permits the user to no longer have to press return to validate its changes. * Bundles/Esound/Esound.m ([Esound -openDevice]): try five times to open the esound socket at 2/10th of seconds of interval to ensure the daemon is either started correctly or that it really failed. 2006-03-14 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_oPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_startOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_ejectOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_removeArrayOfSongs:array]) ([PlaylistController -removeAllSongs:sender]) ([PlaylistController -openSongFromNSApp:filename]): invoke invalidateSortedColumn on tableViewController. ([PlaylistController -cleanupPlaylist:sender]): do something only if the amount of invalid songs reported is > 0. * CynthiuneHeaderCell.m ([-drawInteriorWithFrame:cellFrameinView:controlView]): no longer use images to draw sort-order arrows, invoke the new _drawArrowOfSize:... (see below) instead. ([CynthiuneHeaderCell -_drawArrowOfSize:arrowSizeatReferencePoint:refPoint]): draws an arrow using NSBezierPath. * TableViewController.m ([TableViewController -invalidateSortedColumn]): made method public. Invoke "setNeedsDisplay:" on the [playlistView headerView] to make sure we don't see any sorting indicator while the list is unsorted. 2006-03-12 Wolfgang Sourdeau * TableViewController.m ([TableViewController -_saveSortOrderColumn:sortColumninDirection:sortDirection]) ([TableViewController -_restoreSortOrder]): added those two new methods to save the state of the sort order in the playlist and to restore it at launch time. ([TableViewController -awakeFromNib]): removed the "scrollView" ivar which was only used here anyway. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): slightly optimized methods by reducing message calls and generalizing the variables. ([TableViewController -tableView:tableViewacceptDrop:inforow:rowdropOperation:op]): call _invalidateSortedColumn after a drop. ([TableViewController -_invalidateSortedColumn]): invalidate the ivars related to sorting as well as the header appearance and the state saved to the user defaults. 2006-03-11 Wolfgang Sourdeau * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +evenRowsBackgroundColor]), ([NSColor +evenRowsBackgroundColor]): inverted the values returned by those methods to permit our tableview to display the stripes by taking into account the ones displayed by the Nesedah Camaelon theme. * Bundles/VorbisTags/VorbisTags.m: updated copyright. ([VorbisTags +setTitle:titleartist:artistalbum:albumtrackNumber:trackNumbergenre:genreyear:yearofFilename:filename]): enabled writing to vorbis file through the code taken from Poe.app. 2006-03-02 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -streamOpen:fileName]): call _resetIvars from here instead of init. ([-streamClose]): don't call _resetIvars from here. * PlaylistController.m ([PlaylistController -_initButtonImages]): added tooltips to the playlist toolbar buttons. * Player.m ([Player -setStream:newStream]): changed method definition to accept the stream to analyze as parameter instead of using the "stream" ivar. ([Player -setStream:newStream]): set the "stream" ivar to newStream only after the channels and and sample rate were defined for it. This to avoid a crash when using a threaded output plugin ([Player -stop]): if the output is threaded, send a stopThread message to the output plugin only if not paused, since this was putting us in an infinite loop (thread already stopped). * CynthiuneHeaderCell.[hm]: new class that displays an indicator of the state of the list sorting in the playlist table. 2006-02-28 Wolfgang Sourdeau * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +alternateSelectedControlTextColor]): the default selected text color modified to be visible under OSX with the orange/yellow background color we use in our NSTableView... 2006-02-25 Wolfgang Sourdeau * CynthiuneController.m ([CynthiuneController -awakeFromNib]): apply resize increment of (1, 16) to playlistWindow. 2006-02-21 Wolfgang Sourdeau * Bundles/aRts/aRts.m ([aRts -threadLoop]): adapted to the new definition of the Output protocol. * Player.m ([Player -init]): new "closingThread" ivar, indicating whether the Output thread is closing. ([Player -init]): new "streamsToClose" mutable array, containing streams to be closed when the Output thread is done using them. ([Player -_closePendingStreams]): new method to be commanded from the Output thread through the main thread to clean up the streamsToClose array. ([Player -readNextChunk:bufferwithSize:bufferSize]): if closingThread is set, stop waiting for "awaitingNewStream" to be set and do nothing else. 2006-02-19 Wolfgang Sourdeau * Bundles/WaveOut/WaveOut.m ([WaveOut -_loopIteration]): modified method to take the changes to the ParentPlayer informal protocol into account. Also, free the sound blocks with the new FreeBlock functions so as to also free the data chunk that was allocated with malloc. (FreeBlock): new method to correctly free the memory used by a WAVEHDR structure. 2006-02-17 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -init]): new "notifiedFirstSong" ivar designed to remember the first song given by the PlaylistChangedNotification. ([PlaylistController -playlistChanged:aNotification]): receive the first song given by the notification. If notifiedFirstSong is set, which means the process of feeding the playlist has not yet ceased, do nothing. Otherwise set it to the received song. ([PlaylistController -tableFilenamesDropped:aNotification]): receive the TableFilenamesDroppedNotification from the TableViewController. Feed the playlist with the songs passed through the userInfo dict. ([PlaylistController -_oPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_startOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -_ejectOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]) ([PlaylistController -openSongFromNSApp:filename]): handle song filenames to _feedPlaylistWithTreeOfFilenames: and take notifiedFirstSong ivar into account if the Player is not running. * TableViewController.m ([TableViewController -setDelegate:anObject]): declare new TableFilenamesDroppedNotification notification. ([TableViewController -_bestFit:stringforColumn:column]): reduce the size of the string by 1 char if the string ends with a space. ([TableViewController -_acceptDroppedFiles:aFilesListatRow:row]): no longer handles the song insertion into the playlist anymore, instead post a notification with the array of filenames to the observer. * Song.m ([Song -encodeWithCoder:encoder]): encode date only if not nil. * CynthiuneController.m ([CynthiuneController -_initPlaylistWindowButtons]): new method to hide the buttons from the Playlist window title bar. ([CynthiuneController -_parseArguments]) ([CynthiuneController -application:applicationopenFile:filename]): pass the song filename as argument instead of a Song instance to PlaylistController's openSongFromNSApp: method. * GeneralPreference.m ([GeneralPreference -_initDefaults]): NSWindows are no longer textured by default. * CynthiuneSongTitleCell.m ([CynthiuneSongTitleCell -cellSize]): take the margins left and right to the image into account. ([CynthiuneSongTitleCell -drawWithFrame:cellFrameinView:controlView]): use aFrame instead of imageFrame as argument to NSRectFill(). * CynthiuneFadingTextField.m ([CynthiuneFadingTextField -awakeFromNib]): new method to add the fadeoutClone field to the parent view instead of in viewDidMoveToSuperview. ([-viewDidMoveToSuperview]): removed method. * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +evenRowsBackgroundColor]) ([NSColor +oddRowsBackgroundColor]): balance the values for red and green to obtain a pure shade of blue. ([NSColor +rowsHighlightColor]): use a softer orangish color. ([NSColor +alternateSelectedControlColor]): work-around a bug in MacOSX where the rows are highlighted with a different color than specified for a fraction of a second. * Playlist.m ([Playlist -postNotificationWithSongAsFirst:song]): new method that post the PlaylistChangedNotification notification withs the song given as argument in the userInfo dictionary. So that the PlaylistController can now which song to point to when a new batch of songs is added. ([Playlist -addSong:song], [Playlist -addSongsInArray:array]) ([Playlist -insertSong:songatIndex:index]): modified those methods to use the new method above. * Bundles/MacOSX/MacOSXPlayer.m (inputCallback): modified function to reflect to take the changes to the ParentPlayer informal protocol into account. * Frameworks/Cynthiune/Output.h: modified the ParentPlayer protocol to take account of the change below. * Player.m ([Player -readNextChunk:bufferwithSize:bufferSize]): new method derived from the obsolete readNextChunk that feeds the threaded player calling it with song data. 2006-02-16 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -hide]): compute "hideInterval" from the interval and numberOfIterations method of the title text field. 2005-12-29 Wolfgang Sourdeau * PlaylistArchiver.m ([PlaylistArchiver +_saveDictionaries:dictionariestoFile:filename]): standardize target directory name. * M3UArchiver.m ([M +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): use the playlist representation as metadata. * Song.m ([Song -setFilename:aFilename]): standardize path of filename given so that we are sure "filename" always point directly to the final file. ([Song -initWithCoder:decoder]): same as above. ([Song -encodeWithCoder:encoder]): encode the playlist representation for playlist file handlers which might make use of it. 2005-12-28 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -_resetIVars]): new "lostSyncs" ivar, defaulting to 0, meant to count the number of successive losses of frame syncs. (decodeInputBuffer): when a MAD_ERROR_LOSTSYNC occurs, compute the size mad has to skip and increase the lostSyncs ivar. * PlaylistController.m ([PlaylistController -_filteredSubtree:filename]): sort the resulting array before returning it. 2005-12-18 Wolfgang Sourdeau * Song.m ([Song -songInfosCanBeModified]): test whether the song file is writable. * SongInspectorController.m ([SongInspectorController -_setFieldsEditable:editable]): show or hide "lock.tiff" depending on whether the song metadata can or cannot be changed. 2005-12-14 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong]): set status to SongOK whenever the stream could be opened. 2005-12-07 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -lookupThread]): added code to check whether the TrmID is a the special "busy" one and if an error occured. 2005-11-30 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_initProgressSlider]): the new cell should recover the action and target from the old cell since the nib handler has set them beforehand. 2005-11-18 Wolfgang Sourdeau * CynthiuneSliderCell.m ([CynthiuneSliderCell -init]): replaced knobImage with knobCell so that the drawing code is done within NSCell (more portable and easier way of doing things). ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): no longer draw the control background since the cell is declared as non-opaque. ([CynthiuneSliderCell -isOpaque]): declare the cell as non-opaque. * TableViewController.m ([TableViewController -tableView:tableViewobjectValueForTableColumn:tableColumnrow:rowIndex]): manage columns which have a non-nil identifier. * CynthiuneSlider.[hm]: removed module after it was found unnecessary to subclass NSSlider to obtain a custom look for the song slider. * CynthiuneController.m ([CynthiuneController -awakeFromNib]): request the PlaylistController instance to create an NSToolbar instance with itself as delegate. Also, made code related to window position clearer. * PlaylistController.m ([PlaylistController -toolbar:toolbaritemForItemIdentifier:itemIdentifierwillBeInsertedIntoToolbar:flag]) ([PlaylistController -toolbarAllowedItemIdentifiers:toolbar]) ([PlaylistController -toolbarDefaultItemIdentifiers:toolbar]): new NSToolbar delegate callback methods. ([PlaylistController -_initToolbarButtons]): new method to instantiate our NSToolbarItem's. ([PlaylistController -_toolbarButtonWithIdentifier:identifiercallbackToSelf:selectorandImageName:imageName]): new method containing common code for NSToolbarItem instantiation. ([PlaylistController -playlistToolbar]): new public method that returns the NSToolbar instance which CynthiuneController should put on the playlist window. This toolbar totally replaces the previous dropdown menu system. 2005-11-02 Wolfgang Sourdeau * CynthiuneSliderCell.m ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): use windowBackgroundColor instead of controlBackgroundColor to draw the background of the cell. This fixes a bug that would appear whenever the user colors were different than the regular system colors (at least on GNUstep). 2005-10-31 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -_setFieldsEditable:editable]): also controls the aspect of lookupButton, also depending whether threadRunning is set or not. * PlaylistController.m ([PlaylistController -playerSongEnded:aNotification]): udpate the info display only after the player has stopped to avoid displaying the first song. * Bundles/Taglib/Taglib.[hm]: made this class conform to the TagsWriting protocol too. * Song.m ([Song -init]): replaced tagsClass with readingTagsClass and writingTagsClass. ([Song -_tagsClassForProtocol:protocol]): renamed from _detectTagsClass. Modified to return a tags class conform to a specified protocol. ([Song -setTitle:newTitleartist:newArtistalbum:newAlbumgenre:newGenretrackNumber:newTrackNumberyear:newYear]): new method replacing the individual set{artist, album, ...} methods and invoking the "setTitle..." method of the writingTagsClass with the values that were modified. 2005-10-25 Wolfgang Sourdeau * Bundles/VorbisTags/VorbisTags.m ([VorbisTags +_setString:stringtoComment:commentfromOvFile:ovFile]): fixed a segfault occuring when parsing an invalid vorbis file. 2005-10-24 Wolfgang Sourdeau * Song.m ([Song -songInfosCanBeModified]): returns "YES" if the tags class is not 'nil' and conforms to the new "TagsReading" protocol. * Frameworks/Cynthiune/Tags.h: splitted the "Tags" protocol in 2 separate protocols: "TagsReading" and "TagsWriting". 2005-10-04 Wolfgang Sourdeau * Song.m ([Song -songInfosCanBeModified]): new dummy method always returning 'NO' (for the moment). * SongInspectorController.m ([SongInspectorController -_updateFields]): set fields editable and make the MB lookup button accessible only if [song songInfosCanBeModified] returns 'YES'. * CynthiuneController.m ([CynthiuneController -applicationWillTerminate:notification]): invoke savePlayerState on the playlist controller. * PlaylistController.m ([PlaylistController -savePlayerState]): new method that saves the status of the repeat and shuffle modes as well as the number of the current song. ([PlaylistController -awakeFromNib]): recover the state save in the preferences. * CynthiuneController.m ([CynthiuneController -init]): ensure the user's Cynthiune directory does exist so that the default playlist can be created and read. 2005-10-03 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -addObjectRandomly:object]): modified to use srand() and rand() instead of srandom() and random(). 2005-09-30 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -addObjectRandomly:object]): raise an exception when 'object' parameter is nil. ([NSMutableArray -rotateUpToObject:object]): method that rotates the array left until the object passed as parameter reaches the first position. * PlaylistController.m ([PlaylistController -tableDoubleClick:aNotification]): invoke "shuffleFromSong:" on playlist so that we make sure the shuffle list is rotated. ([PlaylistController -toggleShuffle:sender]): if 'currentPlayerSong' is set, place it at the first position in the shuffle list. * Playlist.m ([Playlist -shuffleFromSong:song]): new method called from PlaylistController when a song is double-clicked while the list is shuffled. ([-reShuffle]): removed obsolete method. 2005-09-29 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -addObjectRandomly:object]): new method that adds given object in a random position in the array. 2005-09-26 Wolfgang Sourdeau * Bundles/ASFTags/ASFTags.[hm]: new tags module for reading tags in ASF files. * Song.m ([Song -encodeWithCoder:encoder]): encode only fields which we are sure are non-nil. ([Song -playlistRepresentation]): solved the case were the artist name could be nil and displayed as "(nil)". 2005-09-25 Wolfgang Sourdeau * Bundles/ID3Tag/ID3Tag.[hm]: new tags module for the id3tag tags library. * Frameworks/Cynthiune/Tags.h: new Tags protocol for tags module. * Bundles/Taglib/Taglib.[hm]: new tags module for the taglib tags library. * PlaylistController.m ([-toggleMute:sender]): removed method. ([PlaylistController -_initButtonImages]): removed messages on the muteButton and muteMenuItem ivars (removed). * Player.m ([Player -init]): removed "muted" ivar. ([Player -_playLoopIteration], [Player -readNextChunk]): no longer take the "muted" ivar into account since we removed the mute button. ([-setMuted:aBool]): removed method. ([-muted]): removed method. 2005-09-24 Wolfgang Sourdeau * Playlist.m ([Playlist -sortByDuration:reverseOrder]): reenabled method. ([Playlist -sortByPlaylistRepresentation:reverseOrder]): reenabled method. * Frameworks/Cynthiune/NSStringExtensions.m ([NSString -linesFromFileContent]): new method that returns an array of strings representing the lines of the file represented by the receiver. * Frameworks/Cynthiune/utils.m (linesOfFile): removed function, replaced with "linesFromFileContent" method in class NSStringExtensions. * PlaylistArchiver.m ([PlaylistUnarchiver +dictionariesFromFilenames:filenames]): common method for playlist unarchivers which build list of dictionarycoders only from an array of filenames. 2005-09-23 Wolfgang Sourdeau * M3UArchiver.m ([M +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): encode the filenames relatively if withAbsoluteFilenameReference: is set. ([M +dictionariesFromFileContent:contentinReferenceDirectory:directory]): implemented decoding method. * PLSArchiver.m ([PLSArchiver +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): encode the filenames relatively if withAbsoluteFilenameReference: is set. ([PLSUnarchiver +dictionariesFromFileContent:contentinReferenceDirectory:directory]): implemented decoding method. * PlaylistArchiver.m ([PlaylistArchiver +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): changed method signature to accept the additional "withAbsoluteFilenameReference:" boolean parameter. ([PlaylistArchiver +fileContentFromDictionaries:dictionariesinReferenceDirectory:directorywithAbsoluteFilenameReferences:absolute]): new temporary method that separates a string in different substrings representing the lines of a file. * GeneralPreference.m ([GeneralPreference -absolutePlaylistReferences]): added method that returns YES if the filenames should be absolute in the playlist files. * PlaylistFile.[hm]: removed module. Made obsolete by the new playlist archiving mechanism. 2005-09-22 Wolfgang Sourdeau * Frameworks/Cynthiune/NSStringExtensions.[hm] ([NSString -relativePathFromDirectoryToFile:filename]): new method that returns the relative path to file with the current string as a directory reference. 2005-09-19 Wolfgang Sourdeau * PlaylistArchiver.m ([PlaylistArchiver +fileContentFromDictionaries: inReferenceDirectory:]): changed method signature by adding a "directory" parameter which can serve as a reference for relative paths declared in playlist files. ([PlaylistUnarchiver +dictionariesFromFileContent: inReferenceDirectory:]): changed method signature by adding a "directory" parameter which can serve as a reference for relative paths declared in playlist files. 2005-09-17 Wolfgang Sourdeau * PlaylistArchiver.m: added a new class "PlaylistUnarchiver", implementing a subset of the NSKeyedUnarchiver API, requiring the method "dictionariesFromFileContent:" from subclasses. * PlaylistController.m ([-addSongsFolders:sender]): removed method. ([PlaylistController -addSong:sender]): removed "+ dir" entry in the playlist submenu. ([PlaylistController -_feedPlaylistWithTreeOfFilenames:filenames]): new method taking an array of filenames as parameter and which populate the playlist with song files, the content of subdirectories and the content of playlist files. * FormatTester.m ([FormatTester -extensionIsSupported:extension]): added "cPls" to the list of known extensions. ([FormatTester -fileIsPlaylist:filename]): new method returning YES if the filename passed as parameter a playlist in a known format. * Playlist.m ([Playlist -deleteAllSongsQuietly]): new method designed to remove all songs from the playlist without raising a notification. 2005-09-11 Wolfgang Sourdeau * Song.m ([Song -_readInfos]): set duration to 0 seconds when status is not SongOK. * PlaylistController.m ([PlaylistController +initialize]): new method, computing the value for the default playlist filename. ([PlaylistController -awakeFromNib]): invoke loadFromFile on the playlist with the default playlist filename given as parameter, in place of the obsolete loadFromDefaults method. ([PlaylistController -playlistChanged:aNotification]): save the list to the default playlist file. ([PlaylistController -songInspectorDidUpdateSong:aNotification]): save the list to the default playlist file. * Playlist.m ([Playlist -saveToFile:file]): compare file extension case-insensitively. ([Playlist -loadFromFile:file]): first implementation currently supporting NSKeyedUnarchiver only. This allows us to save and load default playlists again. 2005-09-09 Wolfgang Sourdeau * M3UArchiver.m ([M3UArchiver +fileContentFromDictionaries:dictionaries]): new method mostly taken from the old PlaylistFile's _M3UContent method. * PLSArchiver.m ([PLSArchiver +fileContentFromDictionaries:dictionaries]): new method mostly taken from the old PlaylistFile's _PLSContent method. * PlaylistArchiver.m: new class module implementing a subset of the NSKeyedArchiver API and most of the common code needed for its concrete subclasses. Currently, only the method "fileContentFromDictionaries:" is required. * M3UArchiver.m, PLSArchiver.m: subclassed from PlaylistArchiver because of common code. 2005-09-06 Wolfgang Sourdeau * DictionaryCoder.m ([DictionaryCoder -encodeObject:anObject:aKey]) ([DictionaryCoder -encodeBool:aBool:aKey]) ([DictionaryCoder -encodeInt:anInteger:aKey]) ([DictionaryCoder -encodeInt64:anInteger:aKey]): added encoding methods needed to save playlist state. ([DictionaryCoder -decodeObjectForKey:aKey]) ([DictionaryCoder -decodeBoolForKey:aKey]) ([DictionaryCoder -decodeIntForKey:aKey]): ([DictionaryCoder -decodeInt64ForKey:aKey]): added decoding methods needed to save playlist state. 2005-09-05 Wolfgang Sourdeau * DictionaryCoder.[hm]: new module that implements a minimal subclass of NSCoder to store song data in a dictionary. This, in order to use the NSCoding protocol of the Song class. 2005-09-04 Wolfgang Sourdeau * M3UArchiver.[hm]: new module to implement a subset of the NSKeyedArchiver API that ouputs the relevant object data into a M3U-formatted playlist file. * PLSArchiver.[hm]: new module to implement a subset of the NSKeyedArchiver API that ouputs the relevant object data into a PLS-formatted playlist file. * Playlist.m ([-saveToDefaults]): removed obsolete method. ([-loadFromDefaults]): removed obsolete method. ([Playlist -saveToFile:file]): reimplemented method by choosing an archiver Class depending on the file extension given as parameter. 2005-08-19 Wolfgang Sourdeau * Player.m ([Player -timer]): make sure rate and channels are not 0 before using them in the quotient. 2005-07-06 Wolfgang Sourdeau * Bundles/WaveOut/WaveOut.m ([WaveOut -_freeBlocks]): stop the loop when no blocks are left allocated. * Bundles/MP3/MP3.m ([MP -streamOpen:fileName]) ([MP +streamTestOpen:fileName]): open the file with "b" mode flag set so that we make sure Windows opens it in binary-mode. * Bundles/WaveOut/WaveOut.[hm]: new threaded output bundle for the standard Windows sound api. * Bundles/MP3/MP3.m (testMP3Header): u_int16_t type changed to unsigned short for portability. 2005-06-26 Wolfgang Sourdeau * Player.m ([Player -setStream:newStream]): release the previous stream after the new one is made current, so that player threads can't crash the application when reading a potentially closed stream. * CynthiuneSliderCell.m ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): use "controlShadowColor" instead of "shadowColor". 2005-06-24 Wolfgang Sourdeau * Player.m ([Player -init]): new outputIsThreaded ivar to modify our behaviour depending on whether the output bundle is declared as threaded or not. Removed the "requests" ivar, considered useless. ([Player -_handleEndOfSong]): new method that post a song-ended notification in the main thread from the new "readNextChunk" method. ([Player -readNextChunk]): new method designed to feed threaded output bundles with data on request. Manage the end of songs. ([Player -setPaused:aBool]): start or stop the thread of the threaded output bundles. * Bundles/aRts/aRts.[hm]: new threaded output bundle for the aRts sound daemon. 2005-06-21 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -seek:aPos]): compute a float to use as the multiplaction factor to find the correct position in the file. This solves a problem occuring due to the lack of precision with integer divisions. 2005-06-19 Wolfgang Sourdeau * CynthiuneSliderCell.m ([CynthiuneSliderCell -init]): the new default image for the slider knob is named "slider-knob-disabled". ([CynthiuneSliderCell -setEnabled:enabled]): if enabled, set the image to "slider-knob-enabled". ([CynthiuneSliderCell -drawBarInside:cellFrameflipped:flipped]): slider trail is one line wider. * Frameworks/Cynthiune/NSTimerExtensions.[hm]: new extension module to the NSTimer class, providing a new method "explode", which registers the current timer in the current runloop both for the NSEventTrackingRunLoopMode and the NSDefaultRunLoopMode. * PlaylistController.m ([PlaylistController -_startTimeTimer]): execute first iteration of _updateTimeDisplay. Don't retain the timer. ([PlaylistController -_stopTimeTimer]): don't release the timer since it's no longer retained. ([PlaylistController -startPlayer:sender]): check if song != nil instead of currentPlayerSong prior to start the player. * InfoDisplayController.m ([InfoDisplayController -_reallyHide]): hide the timer when the splash is hidden. * GoomView.[hm]: new subclass of NSView with support for the goom animation library. 2005-06-15 Wolfgang Sourdeau * TableViewController.m ([TableViewController -_bestFit:stringforColumn:column]): check that the length of the string is not >3, otherwise the call to NSMakeRange will generate an exception. Besides, also computes the width of the string by invoking the new [NSCell -widthOfText:] method. * MBResultsPanel.m ([MBResultsPanel -_sizeOfText:inCell:]): moved into the NSCellExtensions module. ([MBResultsPanel -_updateColumnWidth:key]): updated following the above change. * Frameworks/Cynthiune/NSCellExtensions.m ([NSCell -widthOfText:text]): new method that returns the size the text passed as parameter would take in that NSCell. * Frameworks/Cynthiune/NSCellExtensions.[hm]: new extension module to the NSCell class. 2005-06-13 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -setDelegate:anObject]): declare the new SongInspectorDidUpdateSongNotification to the notification center. ([SongInspectorController -save:sender]): notifies the observer that the song metadata was modified. ([SongInspectorController -_updateInfoField:fieldwithString:string]): new method that returns true if the new string value of a text field has changed, or false otherwise. ([SongInspectorController -_updateFieldsWithTrackInfos:trackInfos]): new method that modifies the info fields with the data contained in the dictionary passed as parameter. ([SongInspectorController -_updateSongFields:allTrackInfos]): new method that updates the fields when one song track was returned or pops up a MBResultsPanel when it was more than one. ([SongInspectorController -readMB:mbtrack:track]): new method that transforms the data received from MusicBrainz into an NSDictionary. ([SongInspectorController -_parseMB:mb]): method redesigned to call the above. ([SongInspectorController -resultsPanelDidEndWithTrackInfos:trackInfo]): new delegate method for the MBResultsPanel that updates the info fields with the data from the song track that was selected. * PlaylistController.m ([PlaylistController -songInspectorDidUpdateSong:aNotification]): new delegate method to update the table view whenever the song inspector notifies us of a change in the song metadata. Optionnally update the infodisplay if the player is currently playing the song that was just modified. * TableViewController.m ([TableViewController -tableView:tableViewwillDisplayCell:cellforTableColumn:tableColumnrow:rowIndex]) ([TableViewController -_addNeededColumns]): use the standard colors defined in our new NSColorExtensions extension module. * Frameworks/Cynthiune/NSColorExtensions.m ([NSColor +evenRowsBackgroundColor]): new extension module for NSColor designed to provide methods for standard colors of rows in our NSTableViews. * Bundles/WindowsMedia/WindowsMedia.m (extractValueFromDescriptor): treat data of type "BYTE_ARRAY" as a cString rather than a unicode string. * MBResultsPanel.[hm]: new subclass of NSPanel, designed to be called by the SongInspectorController when MusicBrainz returns more than one result. Displays a list of all the song data that were returned, permitted the user to select the one that fits best with the one of which he's modifying the info. 2005-06-11 Wolfgang Sourdeau * Tests/Cynthiune_framework/TestNSNumberExtensions.m ([TestNSNumberExtensions -testTimeStringValue]): added test for the timeStringValue extension method to NSNumber. * InfoDisplayController.m ([-resetTimerField]) ([-setTimerFromTotalSeconds:totalSeconds]): removed those methods made useless by the new mechanism used to display the total time of the playlist in its own window. * TableViewController.m ([TableViewController -deselectAll]): new proxy method that calls "deselectAll:" on playlistView. ([TableViewController -durationOfSelection]): new method that returns the total duration of the selected songs as an NSNumber. ([TableViewController -selectSongsInArray:array]): new method to select the songs passed as parameters in the array. ([TableViewController -setCurrentPlayerSong:newSong]): new method to declare the song that is currently playing so that the song pointer can be positioned. ([TableViewController -init]): initializes evenRowsBgColor and oddRowsBgColor so that the rows are differenciated more easily. * Frameworks/CynthiuneTest/SuperMetaClass.[hm]: new super class for all meta objects used in the unit tests. This class implements neutral "meta" accessors for classes which wouldn't provide them or which would provide non-neutral accessors (i.e. accessors that perform actions different than just setting the related ivar). * BundleManager.m ([BundleManager _registerArrayOfClasses]): removed method. ([BundleManager -loadBundlesForPath:pathwithFileManager:fileManager]): replaced the mechanism that was invoking "bundleClasses" on the main bundle classes with one that loads the bundle after "self" is passed as observer for the "NSBundleDidLoadNotification", hence invoking the new "bundleDidLoad:" method. ([BundleManager -bundleDidLoad:notification]): new method that register the bundle classes by examining the "NSLoadedClasses" key of the userInfo dictionary of the notification, removing the need for a "bundleClasses" method in the "CynthiuneBundle" protocol. * Tests/Cynthiune_app/TestBundleManager.m ([TestBundleManager -testRegisterBundle]): removed test. ([TestBundleManager -testBundleManager]): removed test. * Frameworks/Cynthiune/NSArrayExtensions.m ([NSArray -numberOfValuesBelowValue:value]): new method that returns the amount of values contained in self (considered as an array of numbers) that are inferior to the value passed as parameter. * Tests/Cynthiune_framework/TestNSArrayExtensions.m ([TestNSArrayExtensions -testNumberOfValuesBelowValue]): test for the new "numberOfValuesBelowValue:" method. * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -moveObjectsAtIndexes:indexestoIndex:index]): renamed from "moveObjectsAtIndices:toIndex:". * Frameworks/Cynthiune/NSIndexSetExtensions.[hm]: removed extension module since only MacOSX 10.3 and above provide NSIndexSet. 2005-06-05 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -streamOpen:fileName]): rewind the file handle after reading the metadata, so that the beginning is the sound won't be clipped. ([MP +bundleClasses], [MP +bundleDescription]) ([MP +bundleCopyrightStrings]): changes to the CynthiuneBundle protocol. * German.lproj/: added German translation, thanks to Julian Frede. * Frameworks/Cynthiune/CynthiuneBundle.h: removed the "bundleClasses" method, added bundleDescription and bundleCopyrightStrings. 2005-05-31 Wolfgang Sourdeau * BundleManager.[hm]: new class that will handle bundle loading, registration and general management. * Tests/Cynthiune_app/TestBundleManager.m ([TestBundleManager -testNew]): unit test for the new BundleManager class. 2005-05-22 Wolfgang Sourdeau * PlaylistTableView.m ([-draggingSourceOperationMaskForLocal:isLocal]): returns NSDragOperationMove | NSDragOperationGeneric explicitly when isLocal is YES. * Player.m ([Player -setStream:newStream]): no longer care for the validity of the stream given as parameter since the PlayerController should take care of that. * GeneralPreference.m ([GeneralPreference -_initializeSelector]): invoke "sizeToFit" and "centerViewHorizontally" on the bundle selector. * Playlist.m ([Playlist -arrayOfInvalidSongs]): new method that replaces delteInvalidSongs by letting the caller invoke deleteSongsInArray: with the resulting array. * Tests/Cynthiune_framework/TestNSStringExtensions.m ([TestNSStringExtensions -_createroDir]): new unit tests for our NSString extensions. * Bundles/WindowsMedia/WindowsMedia.m ([WindowsMedia -readYear]): new method required by the Format protocol. ([NSString +stringWithASFText:textlength:length]): new extension method to NSString that parses an UTF-16 field from the ASF headers. (convertGUID): convert a binary-stoded GUID to its ASCII representation. (objectIsOfType): test whether an ASF object matches a specific GUID. (asfstrndup): strndup for UTF-16 strings. (readMetaData): new function to parse ASF header for song metadata. * Bundles/Timidity/Timidity.m ([Timidity -readTrackNumber]): new method required by the Format protocol. * Bundles/Ogg/Ogg.m ([Ogg -readYear]): new method required by the Format protocol. * Bundles/Musepack/Musepack.m ([Musepack -readYear]): new method required by the Format protocol. [generic] modified to use the new libmpcdec API (rather than libmusepack 1.1, which was C++ only). * Bundles/Mod/Mod.m ([Mod -readYear]): new method required by the Format protocol. * Bundles/MP3/MP3.m ([MP -readYear]): new method required by the Format protocol. ([MP -_readStreamMetaData]): modified to take info from the Xing header if present and to compute the length of possible non-xing vbr files by doing an average for 10 frames. * Bundles/FLAC/FLAC.m ([FLAC -readYear]): new method required by the Format protocol. * Bundles/AudioFile/AudioFile.m ([AudioFile -readYear]): new method required by the Format protocol. * CynthiuneFadingTextField.[hm]: new subclass of NSTestField that gives a fading effect when the text value changes. * CynthiuneAnimatedImageView.[hm]: new subclass of NSImageView to display a small animation. * Frameworks/Cynthiune/utils.m (logRect): modified to use NSStringFromRect. (fileIsAcceptable): enhanced (fixed) to handle relative symlinks. * Frameworks/Cynthiune/Format.h: modified the Format protocol so that is requires a readYear method. * Frameworks/Cynthiune/NSViewExtensions.m ([NSView -arrangeViewRightTo:view]): new extension methods for the NSView class: arrangeViewRightTo:, arrangeViewLeftTo: and centerViewHorizontally. * Song.m ([Song -setTitle:string], [Song -setArtist:string]) ([Song -setAlbum:string], [Song -setGenre:string]) ([Song -setTrackNumber:string], [Song -setYear:string]): new setter methods for use by the new SongInspectorController. ([Song -_refreshSongInfosFromStream:stream]): when a song doesn't have a title, generate it from the new makeTitleFromFilename utility function. * Song.h: new year ivar that will contain the year of publication for the song. 2005-05-06 Wolfgang Sourdeau * Playlist.m ([Playlist -addSongsInArray:array]) ([Playlist -deleteSongsInArray:array]) ([Playlist -deleteInvalidSongs], [-lastValidSong]) ([-firstValidSong], [-duration]): replaced the method for accessing the songs in the list array with an enumerator. ([Playlist -_nextValidSongInEnumerator:songEnumerator]): new method with common code from firstValidSong and lastValidSong, taking an NSEnumerator as parameter, previously computed from their calling method as appropriate. 2005-05-05 Wolfgang Sourdeau * Playlist.m ([Playlist -replaceSongsWithArray:array]): new method that replaces the content of the playlist with the songs contained in the array passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testReplaceSongsWithArray]): added unit test for the new replaceSongsWithArray: method. 2005-04-17 Wolfgang Sourdeau * Playlist.m ([Playlist -firstValidSong]): new method that returns the first song marked as valid in the playlist. ([Playlist -lastValidSong]): new method that returns the last song marked as valid in the playlist. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testFirstValidSong]): added unit test for the new firstValidSong method. ([TestPlaylist -testLastValidSong]): added unit test for the new lastValidSong method. * Playlist.m ([Playlist -addSongsInArray:array]): new method that adds the songs contained in the NSArray passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testAddSongsInArray]) added unit test for the new addSongsInArray: method. 2005-04-05 Wolfgang Sourdeau * Tests/Cynthiune_app/Meta*.[hm]: generated meta objects automatically from a perl script. Those meta objects have the abilitity to query their ivars through "metaXX" methods which guarantee no influence on them. All of those classes are subclasses of SuperMetaClass. 2005-03-28 Wolfgang Sourdeau * Playlist.m ([Playlist -moveSongsAtIndices:indicestoIndex:index]): moved the core of the method to Frameworks/Cynthiune/NSArrayExtensions.m:moveObjectsAtIndices:toIndex:. We now call that method instead and only check whether the list has changed and if we should raise a notification. * Frameworks/Cynthiune/NSArrayExtensions.m ([NSMutableArray -moveObjectsAtIndices:indicestoIndex:index]): new method, moved from ../../Playlist.m:moveSongsAtIndices:toIndex:, that move objects indicated in the specified array indexes to the new index. * Tests/Cynthiune_framework/TestNSArrayExtensions.m ([TestNSMutableArrayExtensions -testMoveObjectsAtIndicesToIndex]): added unit test for the new moveObjectsAtIndices:toIndex: method. * Frameworks/Cynthiune/NSIndexSetExtensions.m ([NSIndexSet -adjustedIndexAfterMove:index]): new method, moved from ../../Playlist.m:_adjustedIndexAfterMove, that returns the offset an index should be shifted after the move of the specified indexes occurs. * Tests/Cynthiune_framework/TestNSIndexSetExtensions.m ([TestNSIndexSetExtensions -testAdjustedIndexAfterMove]): added unit test for the new adjustedIndexAfterMove: method. * Playlist.m ([Playlist -validSongBefore:song]): new method, similar to songBefore: but that will only return the first valid song that is found. ([Playlist -validSongAfter:song]): new method, similar to songAfter: but that will only return the first valid song that is found. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testValidSongAfter]): added unit test for the validSongAfter: method. ([TestPlaylist -testValidSongBefore]): added unit test for the validSongBefore: method. 2005-02-17 Wolfgang Sourdeau * Playlist.m ([Playlist -moveSongsAtIndices:indicestoIndex:index]): new method that moves a set of songs (contiguous or not) to the index passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testMoveSongsAtIndicesToIndex]): added unit test for the moveSongsAtIndices:toIndex: method. 2005-02-16 Wolfgang Sourdeau * Frameworks/Cynthiune/NSArrayExtensions.m ([NSArray -subarrayWithObjectsAtIndexes:indexSet]): new method that creates a subarray of the current array with the elements indexed in the indexset passed as parameter. * Tests/Cynthiune_framework/TestNSArrayExtensions.m ([TestNSArrayExtensions -testSubarrayWithObjectsAtIndexes]): added unit test for the subarrayWithObjectsAtIndexes method. * Tests/Cynthiune_framework/TestNSArrayExtensions.[hm]: new TestCase module for the NSArrayExtensions module in the Cynthiune framework. * Frameworks/Cynthiune/NSIndexSetExtensions.m ([NSMutableIndexSet -addIndexesInArray:array]): new method that add the indexes found in the NSNumber objects contained in the array passed as parameter. * Frameworks/Cynthiune/NSIndexSetExtensions.[hm]: new module containing extension methods to the NSIndexSet and NSMutableIndexSet classes. * Tests/Cynthiune_framework/TestNSIndexSetExtensions.m ([TestNSIndexSetExtensions -testAddIndexesInArray]): added unit test for the addIndexesInArray method. * Tests/Cynthiune_framework/TestNSIndexSetExtensions.[hm]: new TestCase module for the new NSIndexSetExtensions module in the Cynthiune framework. * SongInspectorController.m ([SongInspectorController -dealloc]): added this method to remove the observer from the NSNotificationCenter whenever the SongInspectorController instance is freed. Otherwise, the playlistChanged: notification can still be posted across different instances. * Player.m ([Player -dealloc]): added this method to remove the observer from the NSNotificationCenter whenever the Player instance is freed. Otherwise, the playlistChanged: notification can still be posted across different instances. * Playlist.m ([Playlist -dealloc]): added this method to remove the observer from the NSNotificationCenter whenever the Playlist instance is freed. Otherwise, the playlistChanged: notification can still be posted across different instances. ([Playlist -addSong:song]) ([Playlist -insertSong:songatIndex:index]) ([Playlist -deleteSong:song], [Playlist -deleteAllSongs]) ([Playlist -deleteSongsInArray:array]) ([Playlist -deleteInvalidSongs]): added code to post the playlistChanged: notification when the list has at least one song added or removed. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testAddSong]) ([TestPlaylist -testInsertSongAtIndex]) ([TestPlaylist -testDeleteSong]) ([TestPlaylist -testDeleteAllSongs]) ([TestPlaylist -testDeleteInvalidSongs]) ([TestPlaylist -testDeleteSongsInArray]): ensure the corresponding methods post a playlistChanged: notification when something has changed in the list. * Playlist.m ([Playlist -setDelegate:object]): new method to remember the object that will receive the playlistChanged: notification message. ([Playlist -insertSong:songatIndex:index]): new wrapper method around the insertObject:atIndex: method from NSMutableArray. ([Playlist -indexOfSong:song]): new wrapper method around the indexOfObject: method from NSArray. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testSetDelegate]): added unit test for the setDelegate method. ([TestPlaylist -testInsertSongAtIndex]): added unit test for the insertSongAtIndex method. ([TestPlaylist -testIndexOfSong]): added unit test for the indexOfSong method. 2005-02-15 Wolfgang Sourdeau * Playlist.m ([Playlist -deleteSongsInArray:array]): new method deleting the songs contained in an array passed as parameter. ([Playlist -deleteInvalidSongs]): new method that checks that all songs in the playlist have a status equal to "SongOK" and removes them otherwise. ([Playlist -songAtIndex:index]): returns the Song specified by the index passed as parameter. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testDeleteInvalidSongs]): added unit test for the deleteInvalidSongs method. ([TestPlaylist -testDeleteSongsInArray]): added unit test for the deleteSongsInArray: method. ([TestPlaylist -testSongAtIndex]): added unit test for the songAtIndex: method. 2005-02-14 Wolfgang Sourdeau * Tests/Cynthiune_app/MockSong.[hm]: new module containing a subclass of Song, designed to give access to ivars. * Tests/Cynthiune_app/MockPlaylist.[hm]: new module containing a subclass of Playlistm designed to give access to ivars. * Playlist.m ([Playlist -deleteAllSongs]): new method to remove all the songs from the array. ([Playlist -songAfter:song]): new method returning the song after the one passed as parameter. ([Playlist -songBefore:song]): new method returning the song before the one passed as parameter. ([Playlist -numberOfSongs]): returns the number of songs in the playlist. ([Playlist -duration]): return an NSNumber with the total duration of the playlist in seconds. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -setUp]): initialize 3 mock songs that can be used during the tests. ([TestPlaylist -testDeleteAllSongs]): added unit test for the deleteAllSongs method. ([TestPlaylist -testSongBefore]): added unit test for the songBefore: method. ([TestPlaylist -testSongAfter]): added unit test for the songAfter: method. ([TestPlaylist -testnumberOfSongs]): added unit test for the numberOfSongs method. ([TestPlaylist -testduration]): added unit test for the duration method. * Playlist.m ([Playlist -firstSong]): new firstSong method. ([Playlist -lastSong]): new lastSong method. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testFirstSong]): added unit test for the firstSong method. ([TestPlaylist -testLastSong]): added unit test for the lastSong method. * Playlist.m ([Playlist -addSong:song]): new addSong: method. ([Playlist -deleteSong:song]): new deleteSong: method. * Tests/Cynthiune_app/TestPlaylist.m ([TestPlaylist -testAddSong]): new unit test for the addSong method. ([TestPlaylist -testDeleteSong]): new unit test for the deleteSong method. * Tests/Cynthiune_app/TestPlaylist.[hm]: new unit testsuite for the Playlist object. * Tests/Cynthiune_app: new unit testsuite for the Cynthiune application files. 2005-02-12 Wolfgang Sourdeau * Tests/Cynthiune_framework/Testutils.m ([Testutils -init]): new init method, initializing the elements of the test that have only to be initialized once during the run of the testsuite. ([Testutils -dealloc]): new dealloc methods cleaning up the elements initialized in init. ([Testutils -testlogRect]): added unit test for the logRect function. ([Testutils -testinvertBytesInBuffer]): improved the test by checking the error messages output by NSLog during a wrong invocation of invertBytesInBuffer. ([Testutils -testconvert8to16]): added unit test for the convert8to16 function. ([Testutils -testmakeTitleFromFilename]): added unit test for the makeTitleFromFilename function. 2005-02-11 Wolfgang Sourdeau * CynthiuneController.h: the appWindow ivar was renamed to playerWindow. * CynthiuneController.m (initWMWindowTitleSize): new hacking function to determine the height of the title bar on X11. ([CynthiuneController -awakeFromNib]): set WindowsTitleSize and WindowsBorderSize here, depending on the value returned by GSHandlesWindowDecorations(). All of the above happens only on GNUstep. * SongInspectorController.m ([-awakeFromNib]): the level of the inspectorPanel is now set to "NSFloatingWindowLevel" instead of "NSModalPanelWindowLevel", since it looks more appropriate; * Frameworks/Cynthiune/utils.m (reverseComparisonResult): return NSOrderedSame if result == NSOrderedSame; * Tests/Cynthiune_framework/Testutils.m ([Testutils -testfileIsAReadableDirectory]): added unit test for the fileIsAReadableDirectory function. ([Testutils -testinvertBytesInBuffer]): added unit test for the invertBytesInBuffer function. ([Testutils -testreverseComparisonResult]): added unit test for the reverseComparisonResult function. 2005-02-10 Wolfgang Sourdeau * CynthiuneSongTitleCell.m: made subclass of CynthiuneTextCell. ([CynthiuneSongTitleCell -setPointerImage:pointerImage]): new accessor method to specify the pointer image. ([CynthiuneSongTitleCell -copyWithZone:theZone]): made conform to the NSCopying protocol. * Tests/Cynthiune_framework/Testutils.m: initial unit test module for the utils.m in the Cynthiune framework. * Frameworks/Cynthiune/NSArrayExtensions.[hm]: new module containing extension methods to the NSArray and NSMutableArray classes. * Frameworks/Cynthiune/utils.m (makeTitleFromFilename): new function to the determine the title of a song from its filename. * Bundles/Timidity/Timidity.m: new Timidity format bundle that accepts midi files and reads them through a piped timidity process. * CynthiuneTextCell.[hm]: new subclass of NSTextFieldCell that accepts a specific highlight color parameter. * PlaylistController.m ([PlaylistController -_updateStatusLabel]): new method that displays the amount of songs in the playlist, the total time of the playlist and the time of the selection if songs are selected. ([PlaylistController -_addSongsFromArray:songArraywithDir:aDirectory]) ([PlaylistController -removeSelectedSongs:sender]) ([PlaylistController -removeAllSongs:sender]) ([PlaylistController -cleanupPlaylist:sender]) ([PlaylistController -openSongFromNSApp:aSong]) ([PlaylistController -tableSelectionIsChanging:aNotification]): invoke [self _updateStatusLabel] whenever something has changed in the playlist. ([-_resetTimeDisplay:aTimer], [-_updateDisplayResetTimer]) ([-_updateSelectionTimeDisplay]): removed the methods which were part of the previous mechanism to display the time of the selection in the timerField. * PlaylistController.h: the "Player" protocol no longer exists. Removed references to it. Added a new "playlistStatusLabel" ivar. 2005-01-12 Wolfgang Sourdeau * CynthiunePauseButton.m ([-sendAction:action:object]): removed overriden method since the animation has to be started when the button state changes. * PlaylistController.h: removed the pauseAnimationTimer and animationStatus ivars. * PlaylistController.m ([-_animatePauseButton]) ([-_startPauseAnimation], [-_stopPauseAnimation]): removed methods since they were moved into the new CynthiunePauseButton class. ([PlaylistController -playerPlaying:aNotification]): no longer invoke "setImage:" on pauseButton. ([-playerPaused:aNotification]): no longer invoke _startPauseAnimation and set the state of pauseButton to YES. ([PlaylistController -playerResumed:aNotification]): no longer invoke _stopPauseAnimation and set the state of pauseButton to NO. ([PlaylistController -playerStopped:aNotification]): no longer invoke "setImage:" on pauseButton. * CynthiunePauseButton.[hm]: new subclass of NSButton that is acting like a toggle button but alternates between its image and alternateImage with a timer when activated. This gives a blinking effect to the active button. * CynthiuneSongTitleCell.[hm]: new class replacing CynthiuneSongPointerCell and with a different meaning in that it is a subclass of NSTextField. Large portions of this code taken or inspired from GNUMail by Ludovic Marcotte . * TableViewController.m ([TableViewController -init]): allocate and initialize the 4 NSColor * ivars. ([TableViewController -dealloc]): release them here. ([TableViewController -_addNeededColumns]): removed the previous CynthiuneSongPointerCell and replace the cell used for the song title with an instance of the new CynthiuneSongTitleCell class. ([TableViewController -_addNeededColumns]): changed the "playlist" and "duration" identifiers to "song" and "time" for consistency. ([TableViewController -awakeFromNib]): set the cell spacing to 0.0. ([-_postTableDoubleClickNotification]) ([-_postTableSelectionDidChangeNotification]) ([-_postTableSelectionIsChangingNotification]): removed those methods so avoid a useless method call. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): use the column identifiers rather than their number to identify them. ([TableViewController -tableView:tableViewwillDisplayCell:cellforTableColumn:tableColumnrow:rowIndex]): take the class change into account with regard to the "song" column and choose an appropriate background color depending on the row number and its selection status. * TableViewController.h: added 4 new NSColor * ivars that will be used to draw the background color of the data cells: evenRowsBgColor, oddRowsBgColor, evenSelectedRowsBgColor, oddSelectedRowsBgColor. 2005-01-11 Wolfgang Sourdeau * SongInspectorController.m ([SongInspectorController -init]): load the SongInspector nib from here. * PreferencesController.m ([PreferencesController -setBundleView:bundlePrefsView]): tells bundleViewBox to refresh itself. * PlaylistController.m ([PlaylistController -_startTimeTimer]): release the timer after it's invalidated. ([PlaylistController -_startPauseAnimation]): new method that creates an animation timer and sets it to call _animatePauseButton. ([PlaylistController -_stopPauseAnimation]): new method that invalidates and releases the animation timer for the pause button. ([PlaylistController -_animatePauseButton]): new method to animate the pause button by changing its image alternatively. ([PlaylistController -playerPlaying:aNotification]): no longer calls setActiveSong on tableViewController but tells it to show the song pointer. ([PlaylistController -playerStopped:aNotification]): tells tableViewController to hide the song pointer. * PlaylistController.h: new pauseAnimationTimer and animationStatus ivars. * PlaylistController.m ([PlaylistController -awakeFromNib]): no longer load the SongInspector nib from here. * TableViewController.m ([-setActiveSong:song]): removed method. ([-songIsActive:aSong]): removed method. ([TableViewController -setShowSongPointer:show]): new setter method for the new displaySongPointer ivar. ([TableViewController -_addNeededColumns]): prepend a new column identified as "pointer", having a CynthiuneSongPointerCell as its data cell. ([TableViewController -tableView:aTableViewwillDisplayCell:cellforTableColumn:aTableColumnrow:rowIndex]): new delegate method that tells the pointer cell in the pointer column to display the image if the row parameter is equal to the number of the song being played and if the player is active. * TableViewController.h: new displaySongPointer BOOL ivar. * TableViewController.m ([TableViewController -setShowSongPointer:show]): setter for the new songPointer ivar. * TableViewController.h: added songPointer BOOL ivar. * CynthiuneInfo.plist: added file types handled by the WindowMedia and the Musepack format bundles. * CynthiuneController.m (GSHandlesWindowDecorations): new function which indicates, under GNUstep, whether GNUstep or the window manager handles the window decoration. This is needed to determine the correct position of the windows. ([CynthiuneController -init]): initialize WindowsTitleSize and WindowsBorderSize depending on the value returned by GSHandlesWindowDecorations. The values are valid for WindowMaker. ([CynthiuneController -_computeDeltaYOfFrame:mainFramewithFrame:aFrame]): compute the values by taking the WindowsTitleSize and WindowsBorderSize into account. ([CynthiuneController -windowWillClose:aNotification]) ([CynthiuneController -_initWindowsPosition]): the windows identifiers are changed to "PlayerWindow" and "PlaylistWindow" in the preferences. * Frameworks/Cynthiune/utils.m (logRect): print a label associated with the corresponding value. * Player.m ([Player -stop]): send a PlayerResumedNotification when paused to tell the observer we are no longer paused. * CynthiuneSongPointerCell.[mh]: new NSCell subclass to indicate the song being played. 2005-01-04 Wolfgang Sourdeau * PlaylistController.m ([-toggleSongInspector:sender]): new method replacing [-showSongInspector:]. ([PlaylistController -songInspectorWasShown:aNotification]): set state of songInspectorMenuItem to off. * SongInspectorController.m ([SongInspectorController -setDelegate:anObject]): added SongInspectorWasShownNotification and replaced SongInspectorWasClosedNotification with SongInspectorWasHiddenNotification. ([SongInspectorController -toggleDisplay]): new method replacing hide and show. ([SongInspectorController -_updateFields]): update filenameField with the full filename of the song being inspected. * SongInspectorController.h: added filenameField ivar. * Song.m ([Song -year]): new stub method that shall return the year of the song in the future. * SongInspectorController.m ([SongInspectorController -awakeFromNib]): set self as delegate for inspectorPanel. ([SongInspectorController -setDelegate:anObject]): new method. ([SongInspectorController -delegate]): new method. ([SongInspectorController -setSong:newSong]): update the song ivar and the inspector fields only if newSong != song. ([SongInspectorController -show]): new method to show the inspector panel. ([SongInspectorController -hide]): new method to hide the inspector panel. ([SongInspectorController -windowWillClose:aNotif]): delegate method that sends a notification to our delegate when the panel is closing. * PlaylistController.h: added songInspectorMenuItem ivar. * PlaylistController.m ([PlaylistController -init]): set self as delegate for songInspectorController. ([PlaylistController -awakeFromNib]): set state of songInspectorMenuItem to off. ([PlaylistController -showSongInspector:sender]): new action method requesting the songInspectorController to show the inspector window and where the state of songInspectorMenuItem is set to on. ([PlaylistController -songInspectorWasClosed:aNotification]): new delegate method received when the song inspector is closing, where we set the state of songInspectorMenuItem back to off. * SongInspectorController.[h,m]: new class implementing the controller API for the new Song inspector. It currently take cares of updating the different fields but: - it only supports one song at a time; - it can't save modifications yet. * Frameworks/Cynthiune/utils.m (findStringStart, findStringEnd) (trimmedString): removed functions since the NSString API has the stringByTrimmingSpaces method. * Frameworks/Cynthiune/Output.h: removed the outputBytes method from the Output protocol. * Bundles/Esound/OSS.h: removed the bytes ivar. * Bundles/Esound/OSS.m ([-outputBytes]): removed method since it's no longer required in the Output protocol. * Bundles/Esound/Esound.h: removed the bytes ivar. * Bundles/Esound/Esound.m ([-outputBytes]): removed method since it's no longer required in the Output protocol. 2005-01-01 Wolfgang Sourdeau * Bundles/OutputSkeleton/: new bundle directory containing the skeleton for an output bundle. 2004-12-31 Wolfgang Sourdeau * Song.m ([Song -compareByPlaylistRepresentation:aSong]): invokes numericallyCompare: on the trackNumber NSString rather than calling compareStringsNumerically(). * Frameworks/Cynthiune/NSStringExtensions.m ([NSString -numericallyCompare:aString]): new category method replacing compareStringsNumerically() in utils.m. ([NSString]): new class module containing extensions to NSString. * Frameworks/Cynthiune/utils.m (findStringEnd): end may not be less than the beginning of the string. (trimmedString): end being < start means the trimmed string will be of length 0. This solves a bug that was causing the new allocation to fail because of an excessive request of memory and hence a segfault during strncpy. (compareStringsNumerically): removed function. 2004-12-30 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -playerPlaying:aNotification]): invokes setActiveSong: instead of selectRow: on tableViewController. This initiates our change in the way we mark the song that is currently playing. * TableViewController.m ([TableViewController -setActiveSong:song]): new method replacing selectRow:, instead of an integer, it takes a Song argument. This name change refocusses on the correct purpose of this method, which is to mark the current song as being played in the playlist view. ([TableViewController -songIsActive:aSong]): new name for songIsSelected:. Renamed for the reason mentionned above. ([TableViewController -updateView]): invokes setActiveSong: instead of selectRow:. * Playlist.m ([Playlist -selectSong:aSong]): new method similar to selectSongNumber but with a Song parameter. ([Playlist -currentSong]): revived method. * Bundles/Mod/Mod.m ([Mod +initialize]): added MODPLUG_ENABLE_OVERSAMPLING to the modplug flags. 2004-12-28 Wolfgang Sourdeau * Bundles/MP3/MP3.m (returnTag): new macro that invokes the relevant taglib function. * utils.m (trimmedString): new utility function that returns a new string equal to the one passed as parameter but where we make sure any starting and ending spaces are removed. * Player.m ([Player -play]): invoke _playLoopIteration after sending the PlayerPlayingNotification so that we make sure the player is in a consistent state whenever something bad happens and triggers another notification. 2004-12-15 Wolfgang Sourdeau * Bundles/WindowsMedia/WindowsMedia.m ([WindowsMedia +canTestFileHeaders]): we now declare that we are able to test our file headers and content correctly. ([WindowsMedia +streamTestOpen:fileName]): invoke the functions in our avifile bindings to test the validity of the file passed as parameter. * Bundles/WindowsMedia/CWMFile.cpp (_testASFHeaders): new function to test if a file has a Microsoft ASF header. (WMFileOpen): now invoke _testASFHeaders and test its result before opening the file. (WMFileClose): now invoke delete on the passed WMFile parameter. (WMFileAudioStreamCount): new wrapper function around IReadFile::AudioStreamCount(). 2004-12-14 Wolfgang Sourdeau * Bundles/Musepack/Musepack.m (ShiftSigned): made inline. (CopyBuffer): idem. ([-readNextChunk:bufferwithSize:bufferSize]): copied code from the WindowsMedia format bundle to make sure the output buffer will never be overflood, through the use of an internal intermediary buffer. * Bundles/MP3/MP3.h: removed "opened" ivar. * Bundles/MP3/MP3.m ([MP -_resetIVars]): initialize all ivars here so that the same code is shared in init and streamClose. General: replaced dependency on libid3tag with one on taglib, which is much better and simpler. * Player.m ([Player -chunkFinishedPlaying]): invoke _playLoopIteration only when all requests are completed. * Bundles/Musepack/*.cpp: C++ binding code for the libmusepack library. * Bundles/Musepack/Musepack.[mh]: new format class bringing the ability for Cynthiune to read Musepack (MPC) files. 2004-12-13 Wolfgang Sourdeau * Bundles/WindowsMedia/CWMFile.[h,cpp]: new binding modules provided to glue the C++ AviFile API and the WindowsMedia ObjC code. * Bundles/WindowsMedia/WindowsMedia.[h,m]: new format class bringing the ability for Cynthiune to read ASF and WMA files. 2004-12-12 Wolfgang Sourdeau * Bundles/FormatSkeleton/: new bundle directory containing the skeleton for a format bundle. 2004-12-11 Wolfgang Sourdeau * Player.m ([Player -_playLoopIteration]): increment requests when a chunk is sent to the output bundle. ([Player -_playLoopIteration]): post a songended notification only when the amound of requests is 0. ([Player -chunkFinishedPlaying]): decrement the amount of requests. * Player.h: added a new "requests" ivar. * Bundles/Esound/Esound.h: removed unused "currentChunk" ivar. * Bundles/MP3/MP3.m (seekOffset): returns -1 if the end of file is found before any non-zero character could be found. ([MP +streamTestOpen:fileName]): returns NO if the result of seekOffset is -1. 2004-11-29 Wolfgang Sourdeau * PlaylistTableView.m ([PlaylistTableView -draggingSourceOperationMaskForLocal:isLocal]): new overriden method to permit DnD activity between Cynthiune and other applications. 2004-11-19 Wolfgang Sourdeau * GNUmakefile: release 0.9.4. * Song.m ([Song -_fileWasModified]): set status to SongFileNotFound if attributes is nil. * MailService.m ([MailService -composeBugReport]): instead of using the DO mechanism of OpenStep, use the NSURL API and the "mailto:" protocol. 2004-11-17 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -pausePlayer:sender]) ([PlaylistController -previousSong:sender], currentSongNumber) ([PlaylistController -changeTimeDisplay:sender]): player is always instantiated now and no longer can be "nil". * MailService.m ([MailService +instance]): mailService declared as static. Don't recreate if already exists. * MailService.[hm]: new class to deal with the local OS's mail application in order to compose a bug report about Cynthiune. * PlaylistController.m ([PlaylistController -init]): set self as a delegate of the playlist. ([PlaylistController -toggleMute:sender]): the state change is reflected on both the Player/Mode/Mute menu item as well as the mute toggle button. ([PlaylistController -toggleShuffle:sender]): the state change is reflected on both the Player/Mode/Shuffle menu item as well as the shuffle toggle button. ([PlaylistController -toggleRepeat:sender]): the state change is reflected on both the Player/Mode/Repeat menu item as well as the repeat toggle button. ([PlaylistController -addSongs:sender], [PlaylistController -addSongsFolders:sender]): new action methods, triggered by the application menu. ([PlaylistController -addSong:sender]): modified to call the above action methods. ([PlaylistController -removeSelectedSongs:sender], [PlaylistController -removeAllSongs:sender], [PlaylistController -cleanupPlaylist:sender]): new action methods, triggered by the application menu. ([PlaylistController -removeSong:sender]): modified to call the above action methods. ([PlaylistController -saveList:sender]) ([PlaylistController -saveListAs:sender]): new action methods, triggered by the application menu. ([PlaylistController -saveListFromPopupMenu:sender]): new method derived of the old "saveList" method, modified to call the above action methods. ([PlaylistController -playlistChanged:aNotification]): new delegate method that saves the playlist states and update the Player. * Playlist.m: added a new notification: "PlaylistChangedNotification". ([Playlist -setDelegate:anObject], [Playlist -delegate]): new methods. 2004-11-16 Wolfgang Sourdeau * PlayerPreference.[hm]: new "PlayerPreference" class, designed to handle preferences for the Player. * PlayerController.[hm]: new "PlayerController" class, designed to hold the controlling code specific to the Player initially put in PlaylistController. * CynthiuneController.m (localizeMenu): new static function implementing a new mechanism for translation menu labels. Instead of replacing them with static entries, they are scanned and replaced with their translation. This makes the code lighter and removes the constraint of keeping up with the different where to change the localized strings whenever it happens. ([-_initMenuLabels]), ([-_setStrings:stringsforSubmenu:menuwithOffset:offset]), ([-_setStrings:stringsforSubmenu:menu]), ([-_setStrings:stringsforMenu:menu]: removed methods. 2004-11-15 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:tvwriteRows:rowstoPasteboard:pboard]): removed #ifdef and only declare elements of type CynthiunePlaylistDragType to the pasteboard. The rest will be provided through pasteboard:ProvideDataForType:. ([TableViewController -pasteboard:pboardprovideDataForType:type]): implemented this delegate method from the NSPasteBoard API to provide elements of type NSFilenamesPboardType when requested. ([TableViewController -tableView:tvvalidateDrop:infoproposedRow:rowproposedDropOperation:dropOperation]): check the dragging source before requesting elements of a specific type to the pasteboard. This way, we make sure we control the right type of letting the underneath API to decide for us. This is the right way to do things and solves a couple of problems with our previous implementation. 2004-11-05 Wolfgang Sourdeau * Bundles/OSS/OSSPreference.m ([OSSPreference -_initDefaults]): use a BOOL "defaultsInitted" to check whether this method was executed. ([OSSPreference -_init]): the defaultsInited ivar was removed. ([OSSPreference -awakeFromNib]), ([OSSPreference -dspDevice]): call _initDefaults. * Bundles/Esound/EsoundPreference.m ([EsoundPreference -_initDefaults]): use a BOOL "defaultsInitted" to check whether this method was executed. ([EsoundPreference -_init]): the defaultsInited ivar was removed. ([EsoundPreference -awakeFromNib]), ([EsoundPreference -socketIsTCP]), ([EsoundPreference -tcpHostConnectString]): call _initDefaults. * Player.m ([Player -_ensureOutput]): when the output bundle has changed, we need to set rate an channels to 0 and call _reInitOutputIfNeeded so that we make sure the new output is initialized correctly. 2004-10-01 Wolfgang Sourdeau * Song.m ([Song -status]): call _readInfos, so that whenever this method is called, we make sure file operations occur that initialize the status correctly. * GeneralPreference.m ([GeneralPreference -init]): call _initDefaults to initialize the managed values with correct defaults so that they are accessible all the time. 2004-09-27 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_initPlaylistPopups]): new "Cleanup" entry in the "Remove" menu. ([PlaylistController -removeSong:sender]): if the selected menu is "Cleanup", send "removeBadEntries" to the playlist. * Playlist.m ([Playlist -removeArrayOfSongs:anArray]): cast [_regularList count] to signed int so that currentSongNumber can be -1 and let the condition be computed correctly. ([Playlist -removeBadEntries]): new method to discover and remove songs from which the "status" message does not return SongOK. 2004-09-22 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -validRequestorForSendType:returnType:]): don't check the returnType. ([PlaylistController -writeSelectionToPasteboard:pboardtypes:types]): don't check that tableViewController has any selection since it's done within validRequestorForSendType:returnType:. ([-_extensionIsAcceptable:fileExtension]): removed method (see below). ([PlaylistController -panel:sendershouldShowFilename:fileName]): reduce the use of variables. ([PlaylistController -_oPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. ([PlaylistController -_dirOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. ([PlaylistController -_startOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. ([PlaylistController -_ejectOPanelDidEnd:oPanelreturnCode:resultcontextInfo:contextInfo]): synchronize the defaults as soon as the key is set. * FormatTester.m ([FormatTester -extensionIsSupported:extension]): new method derived from PlaylistController:-[_extensionIsAcceptable:] and designed to replace it. * CynthiuneController.m ([-_initServices]): removed method. ([CynthiuneController +initialize]): register NSFilenamesPboardType as a service menu sendtype. ([-validRequestorForSendType:sendTypereturnType:returnType]): forward the invocation to playlistController. * TableViewController.m ([TableViewController -getFirstSelectedRow]): new name for "getSelectedRow". Now returns an int instead of an unsigned int so that -1 can be given when no song is selected. Check that the playlist actually contain any song since -[NSTableView selectedRow] does not void its selection when the list is emptied... ([TableViewController -getFirstSelectedSong]): new name for "selectedSong". ([TableViewController -getSelectedSongs]): new name for "getSelection". Ensure that the playlist is populated, otherwise returns an empty array. ([TableViewController -getSelectedSongsAsFilenames]): new name for "getSelectionAsFilenames". Ensure that the playlist is populated, otherwise returns an empty array. ([TableViewController -songIsSelected:aSong]): new name for "isSongInSelection:". 2004-09-21 Wolfgang Sourdeau * Player.m ([Player -setStream:newStream]): when a new nil stream is set post the "PlayerSongEndedNotification" so that the PlaylistController knows the song will not be read. This is not very clean and needs to be rectified lated. * Song.m ([Song -encodeWithCoder:encoder]): call _readInfos to make sure we save initialized data. 2004-09-20 Wolfgang Sourdeau * Bundles/MP3/MP3.m (decodeInputBuffer): function semantics changed to manage only buffer decoding and returning a status code about the decoded stream chunk. (calcInputRemain): the third argument was a pointer to an int we had to modify from inside this function. Now we return that value instead. ([MP -_readStreamMetaData]): completed method to use decodeInputBuffer, the same way readNextChunk:withSize: does so that we can have a correct file parsing for metadata. 2004-09-16 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([Esound -prepareDeviceWithChannels:numberOfChannelsandRate:sampleRate]): reinitialize the output socket if open. That is the only way to modify the stream settings with ESD... * TableViewController.m ([TableViewController -doubleClick:sender]): take the double-click into account only if a real row (> -1) was clicked, otherwise it might just be the column header and we don't want the player to start in that case. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): take the column number into account instead of its identifier since, on OS X, this method is called before the id's are available and it generates a warning. ([TableViewController -awakeFromNib]): disallow column selection, hoping the GNUstep team will fix NSTableView one day... * Player.m ([Player -_reInitOutputIfNeeded]): if [ prepareDeviceWithChannels:andRate:] returns 'NO', the new values are not retained. 2004-09-15 Wolfgang Sourdeau * GNUmakefile: release 0.9.3a. * Bundles/MacOSX/MacOSXPlayer.m, Bundles/MacOSX/MacOSXPlayer.h: converted to the new Output protocol. This version is far cleaner than what used to be. * Player.m ([Player -stop]): when stopped, awaitingNewStream should be set to NO. 2004-09-13 Wolfgang Sourdeau * Bundles/OSS/OSS.m ([OSS -prepareDeviceWithChannels:numberOfChannelsandRate:sampleRate]): directly update the device if open. ([OSS -closeDevice]): set the "dsp" ivar to nil when released, so that we can know whether it is open or not. * Player.m ([Player -_ensureOutput]): set rate and channels to 0 when another Output bundle is instantiated to that we make sure its device gets correctly initialized. ([Player -play]): start the play loop only if calling "openDevice" on the output instance returns "YES", otherwise ignore the request. Something else should be done, like displaying an error message or something like that but we're not there yet. * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): typo. * Bundles/OSS/OSS.m: updated to conform the new Output protocol by mixing code from the ancien OSS and the new Esound bundle. 2004-09-11 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -playerStopped:aNotification]): set currentPlayerSong to nil. * Player.m ([Player -chunkFinishedPlaying]): call _playLoopIteration if not paused AND if not stopped. * PlaylistController.m ([PlaylistController -_updatePlayer:force]): send a "setStream" message instead of "setSong" to the Player object, by previously calling "openStreamForSong" on the relevant Song. Besides, since the "song" message is no longer available, we use the new "currentPlayerSong" variable to keep track of what is currently playing. * Song.m ([Song -_refreshSongInfosFromStream:stream]): channels and rate are no longer read from the streams. ([-channels]): removed method. ([-rate]): removed method. ([Song -initWithCoder:decoder]): "channels" and "rate" keys are no longer decoded from the NSKeyedArchive. * Player.m ([Player -_playLoopIteration]): new name for "_sendChunkToOutput". ([Player -play]): simplified a lot since we no longer play "Song" objects but objects conforming to the "Format" protocol (streams). ([Player -setStream:newStream]): simplified a lot the the same reason as mentionned above. Besides, restart the play loop if the new ivar "awaitingNewStream" is set. ([Player -_playLoopIteration]): set "awaitingNewStream" to yes when the song is finished playing so that setStream can restart the loop when a "SongFinishedPlayingNotification" was sent to the Player controller. * Bundles/Esound/Esound.m ([-_writeCompleteNotification:aNotification]): no longer emit a notification but directly sends the "chunkFinishedPlaying" message to the parent player (following the recent change in the "Output" protocol). * Output.h: "setDelegate:" and "delegate" removed. Added "setParentPlayer:" instead. Also, modified the OutputDelegate informal protocol to remove the NSNotification argument to the "chunkFinishedPlaying" method. * Bundles/XMMSInput/XMMSInput.m ([XMMSInput -readDuration]): return an unsigned int instead of a NSNumber. * Player.m ([Player -_ensureOutput]): separate the conditions in two level-1 blocks. Drop output if it's class is different than the one selected in the preferences and set it to nil. Afterward, output is tested against nil and generated if needed. Besides, the output bundle is initialized with the rate and channels if needed. ([Player -setSong:aSong]): send the "prepareDeviceWithChannels:andRate:" message only if output is non-nil and the current song's channels and rate values are not those accounted for output. 2004-09-10 Wolfgang Sourdeau * Player.m ([Player -setSong:aSong]): simplified a lot by removing the code used when playing the song since it's the role of the output bundles to determine whether the device has to be reopened or not. ([Player -play]): the "prepareDeviceWithChannels:andRate:" message is called from the "setSong:" method so we don't need to call it from here anymore. ([Player -_ensureOutput]): * PlaylistController.m ([PlaylistController -_setPlayerSong:]): removed method. ([PlaylistController -_updatePlayer:force]): instead of calling "_setPlayerSong", set the Song directly. If the player is paused, "unpause" it. Reinit the progress slider through the new "_initProgressSliderFromSong:" method. ([PlaylistController -_initProgressSliderFromSong:aSong]): new method to initialize the ProgressSlider depending on the Song length and "seekability". * FormatTester.m ([FormatTester +formatTester]), GeneralPreference.m ([GeneralPreference +instance]), PreferencesController.m ([PreferencesController +preferencesController]): initialize the singleton with the "new" message instead of "alloc" and "init". 2004-09-09 Wolfgang Sourdeau * Output.h: new interface describing the Output protocol, which must now be implemented by the Output bundles in place of the old Player protocol. * Bundles/Esound/Esound.m, Bundles/Esound/Esound.h: made conform the the "Output" protocol, described in Output.h. * Player.h: the "isRunning" method was renamed to "playing". * PlaylistController.m ([PlaylistController -init]): player is now instantiated here, since it is no longer a variable object. ([-_initializePlayer]): this method was removed. * Player.m, Player.h: Player is now a real object with a centralized handling of the streams and the output of their content through the output bundles. This refactoring cleans up the code and reduces the amount of code needed to write an output bundle, which now must conform to the "Output" protocol, instead of "Player". * Format.h: the argument to seek: is called "seconds" now. * Playlist.m ([Playlist -saveToDefaults]): use NSKeyedArchiver to save the playlist. ([Playlist -loadFromDefaults]): use NSKeyedUnarchiver to load the default playlist. This way their metadata no longer need to be read through the song format bundles. This speeds up the loading of Cynthiune for large playlists. * Song.m ([Song -encodeWithCoder:encoder]) ([Song -initWithCoder:decoder]): implementation of the NSCoding protocol for archiving song data. 2004-08-31 Wolfgang Sourdeau * GeneralPreference.m ([GeneralPreference -_initDefaults]): the playlistFormat variable was querying the OutputBundle preference value instead of PlaylistFormat. ([GeneralPreference -preferredOutputClass]): new name for preferredPlayerClass. 2004-08-19 Wolfgang Sourdeau * Song.m ([Song -_refreshSongInfosFromStream:stream]): the Format protocol was changed back. readDuration returns an unsigned int again instead of an NSNumber, so we convert the unsigned int explicitly here now. 2004-08-16 Wolfgang Sourdeau * Bundles/XMMSInput/XMMSInput.m: first attempt at providing an XMMS plugin wrapper bundle. 2004-08-14 Wolfgang Sourdeau * Bundles/FLAC/FLAC.m (writeCallback): moved code of _refillBufferWithData:withSize: here to avoid a useless method call. * Song.m ([Song -_fileWasModified]): test whether a file was modified between two invocations of this method, by checking its date and filesize. ([Song -_readInfos]): use the private method _fileWasModified instead of _infosRead to detect whether to update a Song's metainfos. ([Song -init]): initialize status ivar to SongFileNotFound. ([Song -status]): new accessor. ([Song -_refreshSongInfosFromStream:stream]): new method called when everything else is fine within _readInfos. ([-_readInfos]): only refreshed the Song's status. No error message is passed here. ([-setFilename:aFilename]): don't test the Song format here. ([Song -playlistRepresentation]): compose a correct playlist representation title, depending on the status. 2004-08-12 Wolfgang Sourdeau * Bundles/FLAC/FLAC.m: new output bundle for decoding Free Lossless Audio Codec encoded sound files. 2004-07-27 Wolfgang Sourdeau * CynthiuneController.[mh]: MainController class renamed to CynthiuneController. * CynthiunePopUpButton.m ([CynthiunePopUpButton -addItemWithTitle:aTitle]): removed _updateEnabled method to avoid useless code and a useless method call. * Bundles/Esound/Esound.h: BUF_SIZE set to 176400. * Bundles/OSS/OSS.h: BUF_SIZE set to 176400 (1 second @ 44kHz/16 b/stereo). * PlaylistFile.m ([PlaylistFile _M3UContentWithArray:]): the format string should contain "%@" instead of "%d" for the song durations since they are now NSNumber's. 2004-07-14 Wolfgang Sourdeau * Song.m ([Song -playlistRepresentation]): removed useless "format" variable. 2004-07-13 Wolfgang Sourdeau * Song.m ([Song -duration]): invoke _readInfos before returning the value. ([Song -openStreamForSong]): make stream autoreleased only if it opens correctly, otherwise release it directly. * Bundles/Ogg/Ogg.m ([Ogg +streamTestOpen:fileName]): don't report when the returned NSFileHandle is nil since it could happen with any missing file. * utils.m (strndup): made non-static (for MacOS X only). * Player.m ([-initWithSong:aSong]): removed useless method. ([+playerWithSong:aSong]): removed useless method. 2004-07-07 Wolfgang Sourdeau * utils.m (compareStringsNumerically): new function to compare numerical strings waiting for the GNUstep implementation of the NSNumericSearch option in NSString. * TableViewController.m ([TableViewController +initialize]): nc is now a static global variable instead of an ivar. It is initialized here. * Song.m ([Song -compareByPlaylistRepresentation:aSong]): trackNumber is an NSString, so we cannot really use compare: on it. Instead we use our new utils function "compareStringsNumerically". ([Song -reverseCompareByDuration:aSong]): directly calls the target method instead of passing through our ascending comparison method. * PlaylistController.m ([-stopPlayer:sender]): the player ivar is released in the playerStopped: notification method, which is invoked after "stop" was sent to the player, so there is no need to do it here. ([PlaylistController -playerSongEnded:aNotification]): same thing here. * Player.m ([Player +playerWithSong:aSong]): the "song" variable really should be named "player"... * Bundles/Esound/EsoundPreference.m: class EsoundPreference split from Esound.m. 2004-07-06 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): we call the NSNumber method timeStringValue on duration instead of the old utility timeStringFromSeconds(). * Playlistcontroller.m ([PlaylistController -_updateSelectionTimeDisplay]), ([PlaylistController -playerPlaying:aNotification]): duration is now an NSNumber *, code modified accordingly. * Song.m ([Song -init]): the duration ivar is now a NSNumber. ([Song -compareByPlaylistRepresentation:aSong]): the tracknumber are compared directly using the compare: method provided by the NSNumber class. ([Song -reverseCompareByPlaylistRepresentation:aSong]) ([-reverseCompareByDuration:aSong]): we now use the new reverseComparisonResult() function from utils.h instead of providing our code. * InfoDisplayController.m ([-hideTextFields], [-hideTextFields]): code from this methods removed and directly included within the hide and show methods. ([InfoDisplayController -_setTimerFromUnsignedInt:timer]): new private method to update the timer field with the integer passed as parameter. * CynthiuneFileHandle.m: new child class of NSFileHandle for handling asynchronous I/O on file descriptors. * NSNumberExtensions.m: new module containing extension method to the NSNumber class. ([NSNumber -timeStringValue]): new implementation of old utils.m's timeStringFromSeconds. Removed test on (seconds != 0) since the result will be valid anyway. * utils.m (timeStringFromSeconds): moved to new NSNumberExtensions.m module. (reverseComparisonResult): new function for sorting methods. * Bundles/AudioFile/AudioFile.m ([AudioFile -readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Bundles/Ogg/Ogg.m ([Ogg -readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Bundles/Mod/Mod.m ([-readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Bundles/MP3/MP3.m (seekOffset, testRiffHeader, testMP3Header) (calcInputRemain): changed methods with those names to static inline functions. iRemain passed as pointer so that we can modify it directly. (fillPCMBuffer): removed intermediary variables to make code shorter. ([-readDuration]): returns an NSNumber * as expected by the modified Format protocol. * Format.h: readDuration now returns an NSNumber *. 2004-07-04 Wolfgang Sourdeau * Bundles/MP3/MP3.m (_decodeInputBuffer): new function split from readNextChunk:withSize: to make code cleaner and shorter. Its exact purpose is to decode the data fed to it as parameter and return an the size of the decoded data or an appropriate return code if needed. 2004-06-29 Wolfgang Sourdeau * Bundles/MP3/MP3.m (_translateBufferToPCM, _fillPCMBuffer) (_audioLinearDither): new static functions that replace the methods with the same name, this makes the bundle use a bit less of CPU time since no message resolution is done. * Song.m ([Song -filename]): original purpose put in new method "shortFilename", now replaces "fullFilename". 2004-06-28 Wolfgang Sourdeau * Playlist.m ([Playlist -sortByPlaylistRepresentation:descending]): changed the signature of this method to accept a BOOL parameter indicating whether we want the resulting order to be descending or not. It selects the appropriate comparison method selector accordingly. ([Playlist -sortByDuration:descending]): same thing here. * Song.m ([Song -reverseCompareByPlaylistRepresentation:aSong]): new method that calls compareByPlaylistRepresentation: and reverse the result. ([Song -reverseCompareByDuration:aSong]): same thing here for compareByDuration:. * TableViewController.m ([TableViewController -init]): added two ivars, sortedInPlaylist and sortedInDuration so that we know when to sort the playlist in ascending or descending order. ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): take sortedInPlaylist and sortedInDuration into account when sorting. One should be reversed and the other should be set to NO. ([TableViewController -_acceptDroppedFiles:aFilesListatRow:row]): set both to NO when a song file was dropped. ([TableViewController -_acceptDroppedRows:aRowsListatRow:row]): set both to NO when a song was dragged from within the list and dropped. * Bundles/OSS/OSSPreference.m: class OSSPreference split from OSS.m. 2004-06-22 Wolfgang Sourdeau * Bundles/OSS/OSS.m: entirely rewritten (except for OSSPreferences) to use the asynchronous interface of NSFileHandle instead of threads. * PlaylistController.m ([PlaylistController -_startTimeTimer]): the timer should run in the NSEventTrackingRunLoop too. * Player.h: renamed "startPlayLoop" and "StopPlayLoop" to "play" and "stop" respectively. Made the Player protocol slightly lighter by removing the initWithSong: and audioInit: method prototypes. * Player.m ([Player +load]): initialize the global variable nc here. ([Player -initWithSong:aSong]): new initializer. ([Player +playerWithSong:aSong]): new constructor based on the above. * Bundles/MP3/MP3.m ([MP -readNextChunk:bufferwithSize:bufferSize]): returns -1 when an error occurs. * CynthiuneWindow.m: new subclass of NSWindow designed to let the user whether he wants textured windows or not on MacOS X. * FormatTester.m ([FormatTester -formatClassForFile:file]): Class values can't be "nil" but "NULL". ([FormatTester -formatClassAtIndex:formatNumber]): same thing. * GeneralPreference.m ([GeneralPreference -windowsAreTextured]): new method to test whether windows should be displayed as regular or textured windows. ([GeneralPreference -_initDefaults]): initialized the new toggle related to the textured windows. ([GeneralPreference -texturedWindowsChanged:sender]): new callback method. 2004-06-18 Wolfgang Sourdeau * GeneralPreference.m ([GeneralPreference -_noDefaultOutputModuleAlert]): new method to display an alert panel when no output module is configured. ([GeneralPreference -preferredPlayerClass]): calls the above when playerClass == nil. * PreferencesController.m ([PreferencesController -loadPreferencesWindowAndSelectMenuEntry:entry]): new method. * CynthiunePopUpButton.m ([CynthiunePopUpButton -_updateEnabled]): new class derived from NSPopUpButton, that just test whether there is more than one item in the menu to enable its popup button. 2004-06-17 Wolfgang Sourdeau * Song.m ([Song -isSeekable]): cache the result in an ivar by calling _readInfos. ([Song -_readInfos]): (new name for -readInfos), test if a stream is seekable to avoid multiple openings. ([Song -setFilename:aFilename]): cache the Format class from here to avoid multiple openings and testings, this slightly improves the opening of long playlists. * Player.m: class PlayerBase renamed to Player. * FormatTester.m: -fileType renamed to -formatNumberForFile, -classForFile: renamed to formatClassForFile:, and -classForFileType: renamed to formatClassAtIndex. ([FormatTester -formatClass:formatClassacceptsFileExtension:extension]): new method. ([FormatTester -formatClassForFileExtension:extension]): new method. * Format.h: added a new protocol method "canTestFileHeaders" returning YES if the format bundle has a way of testing the file type by checking its headers. Otherwise FormatTester determines the right bundle to use by looking at its extension. * Bundles/Mod/Mod.m ([Mod +streamTestOpen:fileName]): don't test file loading since the only way we can do this is by loading entire files in memory and by relying on the result returned by ModPlug_Load, which seems to not be always accurate. * Bundles/Mod/Mod.m ([Mod -init]): removed. ([Mod +load]): initialize the library settings just after the Mod bundle is loaded in memory. The "settings" ivar is replaced with a local variable. 2004-06-15 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -initializeWidgets]): new method that take cares of initializing the widgets before they get displayed; 2004-06-11 Wolfgang Sourdeau * Bundles/AudioFile/AudioFile.m ([AudioFile -_getAudioFileIDOfType:idTypewithMax:max]): new private method to retrieve meta data tags from the input file. ([-readTitle]): returns the title of the song if found. ([AudioFile -readArtist]): returns the name of the artist of the song if found. * PreferencesController.m ([PreferencesController -loadPreferencesWindow]): test whether the prefs window is visible before displaying it so that many invocations of loadPreferencesWindow will only display the window once. * utils.m (strndup): the algorithm was wrong since it was copying one more char than requested when len was < the length of the string. 2004-06-09 Wolfgang Sourdeau * Song.m ([Song -readInfos]): determine the title from the filename if not present. 2004-06-08 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -panel:sendershouldShowFilename:fileName]): new delegate method to test the filenames case-insensitively; * Song.m ([Song -playlistRepresentation]): use a NSMutableString instead of an NSString. 2004-06-07 Wolfgang Sourdeau * *.m Bundles/*/*.m: renamed _L macro to LOCALIZED since MacOS X already defines such a name in its system libraries. * utils.m (strndup): added our own version of strndup for MacOS X which seems to be lacking it. (NSStandardLibraryPaths): idem. 2004-06-06 Wolfgang Sourdeau * Bundles/AudioFile/AudioFile.m: new module to read uncompressed sound files. ([AudioFile +load]): disable error string output by setting the AF error handler to NULL. * utils.m (convert8to16): new function designed to convert 8 bit sample frames to 16 bit ones. 2004-06-01 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -startPlayer:sender]): startPlaying renamed. ([PlaylistController -stopPlayer:sender]): stopPlaying renamed. * TableViewController.m ([TableViewController -_acceptFilesInPasteboard:pboard]): test whether a dragged filename is a directory before accepting it. * utils.m (fileIsAcceptable): new function, taken from a method with the same name in PlaylistController.m; (fileIsAReadableDirectory): new function to test whether a filename is both readable and a directory; * Bundles/Ogg/Ogg.m ([Ogg -streamOpen:fileName]): if no error is caught, the NSFileHandle should be retained to avoid a crash in the close callback. 2004-05-13 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([Esound -threadWillExit]): release lock only when no thread is active. * Bundles/OSS/OSS.m ([OSS -stopPlayLoop]): release the fileHandle to avoid leaks. ([OSS -threadWillExit]): release lock only when no thread is active. 2004-05-08 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([Esound -threadWillExit]): * Bundles/OSS/OSS.m ([OSS -threadWillExit]): release the lock to avoid a leak. 2004-05-01 Wolfgang Sourdeau * MainController.m ([MainController -validRequestorForSendType:sendTypereturnType:returnType]): on GNUstep, execute the same method on the playlistController to make sure it declares as a valid requestor. MacOSX doesn't need this. * PlaylistController.m ([PlaylistController -writeSelectionToPasteboard:pboardtypes:types]): write selection to pasteboard only when the selection is not empty. ([PlaylistController -validRequestorForSendType:returnType:]): declare as valid requestor only when the selection is not empty. * TableViewController.m ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): invoke saveToDefaults on the playlist when sorted. * Bundles/MP3/MP3.m ([MP -readComment:comString]): when the string id is not found, return @"". * Song.m ([Song -compareByPlaylistRepresentation:aSong]): new comparison method for sorting by artist, album, track number, title and finally by filename. ([Song -compareByDuration:aSong]): new comparison method for sorting by duration. * Playlist.m ([Playlist -sortByDuration]) ([Playlist -sortByPlaylistRepresentation]): new method to sort the playlist. * TableViewController.m ([TableViewController -tableView:tableViewmouseDownInHeaderOfTableColumn:tableColumn]): new method to trigger the sorting of the playlist depending on the column header that was clicked. ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): the "time" column in now identified with "duration", for consistency. 2004-04-30 Wolfgang Sourdeau * Playlist.m ([-loadFromDefaults]): new method to migrate the default playlist in the NSUserDefaults database to the default in the user's Library/Cynthiune. ([-saveToDefaults]): save the playlist in the user's Library/Cynthiune/DefaultPlaylist.pls. * utils.m (invertBytesInBuffer): new function taken from Esound.m to swap bytes in an even-size buffer. (_linesFromContent): work on a copy of the line where the ending character (\n or \r) is replaced with a 0. * Bundles/Mod/Mod.m ([Mod -readNextChunk:bufferwithSize:bufferSize]): invert bytes in buffer on big-endian architectures. * PlaylistFile.m ([PlaylistFile -load]): check that fileLines is not nil, otherwise do not fill the playlist at all. * MainController.m ([MainController -loadBundlesInSystemDirectories:aFileManager]): use NSStandardLibraryPaths(). * utils.m (linesOfFile): return nil if the file could not be opened. * Bundles/Mod/Mod.m ([Mod +bundleClasses]): new libmodplug-based plugin bundle to read MODs, XMs, and many many more ..... 2004-04-29 Wolfgang Sourdeau * PlaylistFile.m ([PlaylistFile -_fillPlaylistWithArray:anArray]): don't release the returned song since it's autoreleased. * Bundles/Ogg/Ogg.m (oggReadFunc,oggSeekFunc, oggCloseFunc, oggTellFunc): new callback function for ov_read_callbacks(). ([Ogg -streamOpen:fileName]): use an NSFileHandle object instead of a FILE pointer, pass it as the datasource argument to ov_read_callbacks(). * Bundles/OSS/OSS.m ([OSSPlayerThread -playerThread:dict]): release the stream when the thread is ending. Same changes as in Esound bundle (see below). * PreferencesController.m ([PreferencesController -setBundleView:bundlePrefsView]): don't release the returned view since it's now autoreleased. * Bundles/Esound/Esound.m ([-dealloc]): host is never used. Release the lock. ([EsoundPlayerThread -setStream:aStream]): retain the stream if non-nil. ([EsoundPlayerThread -flushOutputBuffer:dict]): display an error message related to the esd socket only if it failed three times to reconnect. * Playlist.m ([Playlist -loadFromDefaults]): don't release the returned song since it's now autoreleased. * GeneralPreference.m ([GeneralPreference -preferenceSheet]): autorelease the returned view. * Bundles/MP3/MP3.m ([MP -readComment:comString]): return an UTF8 encoded strings. * Song.m ([Song -displayRepresentation]): renamed to playlistRepresentation. Uses our NSString ivars directly instead of their UTF8 or C representation. ([Song +songWithFilename:aFilename]): return an autoreleased object. ([Song -openStreamForSong]): stream should be autoreleased. * Bundles/OSS/OSS.m ([OSSPlayerThread -dealloc]): new method to make sure the stream is closed and released when the thread is deallocated. * Song.m ([Song -filename]): simplified method by using short conditions rather than an intermediary variable. ([-fullFilename]): idem. ([Song -displayRepresentation]): use UTF8String rather than cString on the string components. * Bundles/*/*.m (general): we define the NSLocalLocalizedString macro for the bundle so that the localized string can be found in the plugin directory structure rather than by finding it in the main bundle. * *.m */*/*.m (general): we now use _L as the localization macro all across the project. This macro calls UTF8String on GNUstep, as well as NSLocalizedString in the main bundle and NSLocalLocalizedString (see above) for the plugin bundles. * utils.m (UTF8String): new method to obtain string declared as UTF-8 for localized strings. This permit us to use UTF8 encoded Localizable.strings files when running in a non-utf8 environment. 2004-04-26 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -setReverseTimer:reversed]): accessor to reverseTimer. * PlaylistController.m ([PlaylistController -changeTimeDisplay:sender]): new method to reverse the time display when the timer field is clicked. Originally in InfoDisplayController.m. * MainController.m ([MainController -_parseArguments]): check that no argument beginning with "-" is taken into account. * GeneralPreference.m ([GeneralPreference -_initDefaults]): set the default output plugin to a reasonable default depending on the platform. * PlaylistController.m ([PlaylistController -_removeSelectedSongs]): new method extracted from removeSong: to make code cleaner. 2004-04-25 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:tvwriteRows:rowstoPasteboard:pboard]): MacOSX seems to only accept one type of dragged elements at a time... * Song.m (general): accessors return a copy of the attributes instead of their direct reference. * PlaylistController.m ([PlaylistController -removeSong:sender]): do not release the selection since it is autoreleased. ([PlaylistController -_updatePlayer:force]): do not initialized the player automatically, display a warning if it's equal to nil. 2004-04-24 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([EsoundPlayerThread -_invertBufferBytes]): new method for big endian machines about which libesd does not give a damn. * InfoDisplayController.m ([InfoDisplayController -setTimerFromTotalSeconds:seconds]): new method to display the total given as parameter in the timer field in bold. ([InfoDisplayController -resetTimerField]): empties the timer field and reset its font back to normal. ([InfoDisplayController -timerIsReversed]): return the value of reverseTimer. * PlaylistController.m ([PlaylistController -_resetTimeDisplay:aTimer]), ([PlaylistController -_updateDisplayResetTimer]), ([PlaylistController -_updateSelectionTimeDisplay]): new methods meant to be used when the tableSelectionIsChanging notification is triggered so as to show the total time for the selected songs and to reset the timer field if needed (when the player is not running). * MainController.m ([MainController -_registerArrayOfClasses:classes]): takes the array of classes for each bundle as argument and test all of them with the different protocol managers. * CynthiuneBundle.h: Cynthiune bundle should now include this file to permit the MainController to know all of their classes. Ogg, MP3, Esound, OSS, MacOSXPlayer bundles updated. 2004-04-23 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong], [Song -readInfos]): use "release" instead of "autorelease" to free the stream from memory. * PlaylistFile.m (general): redone the interface to act as a regular class rather than a method provider. * PlaylistController.m (general): removed loadDefaultList and saveDefaultList methods. ([PlaylistController -saveList:sender]): the callback data passed to the sheet is a struct containing the integer for the return code but also a saveDir NSString, so that we can directly save the result to the correct directory. * Playlist.m ([Playlist -dealloc]): new method. ([Playlist -getSongsAsFilenames]): new method to obtain the filenames of the songs listed in the playlist. ([Playlist -loadFromFile:aFilename]): new method that instantiates a PlaylistFile object to load itself from. ([Playlist -saveToFile:aFilename]): new method that instantiates a PlaylistFile object to save itself it. 2004-04-22 Wolfgang Sourdeau * MainController.m ([MainController -_appWindowDidMove]) ([MainController -_playlistWindowDidMove]): new methods extracted from windowDidMove: to make code cleaner. * InfoDisplayController.m ([InfoDisplayController -init]): new method to initialize the class attributes rather than in awakeFromNib. * MainController.m ([MainController -_initWindowsPosition]): new method extracted from awakeFromNib to make code cleaner. 2004-04-20 Wolfgang Sourdeau * TableViewController.h (NSObject): "songlist" attribute renamed to "playlist". * TableViewController.m ([TableViewController -doubleClick:sender]): the song selected in the playlist is set from here rather than in the notification signal in PlaylistController. * MainController.m ([MainController -setPlaylistWindowVisible:isVisible]): new method to replace showPlaylistWindow and hidePlaylistWindow for consistency with the standard *step APIs. * PlaylistController.m (general): references to the playlistWindow and the playlistSwitch moved to the MainController class as well as all associated method (WindowDidMove, WindowDidResize, togglePlaylist, showPlaylistWindow, hidePlaylistWindow, repositionWindow, mainHasNewFrame...). ([PlaylistController -playerSongEnded:aNotification]): we release the player whenever we get at the end of the playlist. ([PlaylistController -stopPlaying:sender]): we release the player when stop is pressed. ([PlaylistController -loadDefaultList]): we don't update the tableview anymore since this method is called only once and before the tableview is initialized. ([PlaylistController -_updatePlayer:force]): we are now the only method to initialize "player" when it does not exist. * Bundles/Esound/Esound.m ([EsoundPlayerThread -dealloc]): close the stream before releasing it. 2004-04-19 Wolfgang Sourdeau * FormatTester.m ([FormatTester +formatTester]): major cleanup, all class methods converted to instance methods. This new method returns a singleton. * TableViewController.m ([TableViewController -_songsInRows:rows]): returns an array of songs associated to the rows contained in the array passed as argument. ([TableViewController -tableView:tvwriteRows:rowstoPasteboard:pboard]): fille the pasteboard with NSFilenamesPboardType elements. ([TableViewController -_acceptFilesInPasteboard:pboard]): new method splitted from -tableView:validateDrop:proposedRow: to test whether the list of files that's being dragged are of a readable format. ([TableViewController -tableView:tvacceptDrop:inforow:rowdropOperation:op]): if the draggingSource is our table view, query the CynthiuneSongListDragType elements from the pasteboard, otherwise query the NSFilenamesPboardType. ([TableViewController -setPlaylist:aPlaylist]): retain and release the received playlist. * Playlist.m ([Playlist -songAtNSIndex:anIndex]): return the song associated to the specified index (passed as NSNumber). * GeneralPreference.m ([GeneralPreference -awakeFromNib]): * Bundles/Esound/Esound.m ([EsoundPreferences -awakeFromNib]): * Bundles/OSS/OSS.m ([OSSPreferences -awakeFromNib]): new method. Translate labelled widgets. * Bundles/MP3/MP3.m ([MP -readStreamMetaData]): test for XING VBR header and compute duration subsequently. 2004-04-18 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP -init]): added init method. 2004-04-16 Wolfgang Sourdeau * MainController.m ([MainController -_initMenuLabels]): the services menu is defined in Gorm. ([MainController -_setStrings:stringsforSubmenu:menuwithOffset:offset]): new method to translate the Windows menu properly at the correct offset after the windows list. * GeneralPreference.m ([GeneralPreference +windowsInformationAreSaved]): new method that returns whether windows location saving is set in the preferences. ([GeneralPreference +saveInformation:aWindowforWindow:windowName]): new method to store the window state in the NSUserDefaults database. ([GeneralPreference +restoreInformation:aWindowforWindow:windowName]): new method as above but to restore and apply that information. ([GeneralPreference -saveWindowsInformationChanged:sender]): new delegate method to set or unset the parameter deciding of the windows location saving mechanism. * PlaylistController.m ([PlaylistController -mainHasNewFrame:aFrame]): initialize the playlist window position from the preferences if required. ([PlaylistController -windowWillClose:aNotification]): save the playlist window position from the preferences if required. ([PlaylistController -_recheckIfIsStuck:aWindow]): new method to make windowDidMove: and windowDidResize: smaller. ([PlaylistController -writeSelectionToPasteboard:pboardtypes:types]): new delegate method to fill the pasteboard buffers with the selected song filenames when a service is invoked. * MainController.m ([MainController -_setStrings:stringsforMenu:menu]): ([MainController -_setStrings:stringsforSubmenu:menu]): new methods splitted from _initMenuLabels; ([MainController -_initServices]): new method to list the services which accept filenames as parameters. ([MainController -awakeFromNib]): restore the main window saved state if required in the preferences. ([MainController -windowWillClose:aNotification]): save the main window position, size and state if required in the preferences. ([MainController -validRequestorForSendType:returnType:]): delegate method to let NSApplication dispatch the services communication messages to the correct object. * TableViewController.m ([TableViewController -getSelectionAsFilenames]): new method to return the filename of the songs that are selected. * PlaylistTableView.m ([PlaylistTableView -dragImageForRows:dragRowsevent:dragEventdragImageOffset:dragImageOffset]): new subclass of NSTableView for providing the correct icon when one or more songs are being dragged... 2004-04-13 Wolfgang Sourdeau * TableViewController.m ([TableViewController -_timeColumnWidth]): new method to size the time column progammatically depending on the translation for "Time". ([TableViewController -addNeededColumns]): removed useless "aFrame" var. * PlaylistController.m ([PlaylistController -_initPlaylistPopups]): the NSPopupButton's are repositioned after their resizing. 2004-04-12 Wolfgang Sourdeau * MainController.m ([MainController -awakeFromNib]): the main window is now centered before being displayed. * GeneralPreference.m ([GeneralPreference -contentView]): * Bundles/Esound/Esound.m ([EsoundPreferences -contentView]): * Bundles/OSS/OSS.m ([OSSPreferences -contentView]): closing the bundle window is useless. * PreferencesController.m ([PreferencesController +loadPreferencesWindow]): make prefs a global variable so that we can control whether the prefs window is already displayed. 2004-04-11 Wolfgang Sourdeau * Bundles/MacOSX/MacOSXPlayer.m (manage_oggproblem): removed obsoleted method. ([MacOSXPlayer -init]): initialize timer, totalBytes and bytesPerSec(new) to 0. ([-streamRaiseOpenErrorException:errMsg]): removed obsoleted method. ([MacOSXPlayer -timer]): lastTickSeconds attribute renamed to "timer". * PlaylistController.m ([PlaylistController -_initPlaylistPopups]): call sizeToFit on our popups so that we make sure their widths is correct after localization. ([PlaylistController -_runDirOpenPanel:oPanel]), ([PlaylistController -_runOpenPanel:oPanel]): use beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo: on GNUstep and MacOSX. * MainController.m ([MainController -registerBundleClass:aBundle]): new method split from loadBundlesForPath:withFileManager: 2004-04-10 Wolfgang Sourdeau * PreferencesController.m ([-writeDictionaryForClass:aClass]): removed method. * Bundles/Ogg/Ogg.m ([Ogg -streamOpen:fileName]): replaced #include's with #import's. Import external files before Ogg.h. * Bundles/Ogg/Ogg.h: removed imports from file header. * PlaylistFile.m ([PlaylistFile +_parsePLSFile:fileLines]): use the C api to determine the beginning of the line instead of NSString's. * Bundles/MacOSX/MacOSXPlayer.m: updated to the NEW bundle and player protocols. * Bundles/MP3/MP3.m ([MP +_testMP3Header:buffer]): use BYTE_ORDER instead of __BYTE_ORDER. * GeneralPreference.m ([GeneralPreference -contentView]): * Bundles/OSS/OSS.m ([OSSPreferences -contentView]): * Bundles/Esound/Esound.m ([EsoundPreferences -contentView]): use "release" instead of "dealloc" to avoid crashing. * TableViewController.m ([NSTableView -dragImageForRows:event:dragImageOffset:]): override this method to display the "note(s)" drag icon. ([TableViewController -awakeFromNib]): add self as an observer for the NSViewDidFrameNotification of our parent's parent's, the scrollView. ([TableViewController -scrollViewDidResize:aNotif]): new method to resize our columns when needed. ([TableViewController -addNeededColumns]): add a title to identify our columns. 2004-04-05 Wolfgang Sourdeau * PreferencesController.m ([PreferencesController -setBundleView:bundlePrefsView]): different but better algorithm for displaying the prefs page. * GeneralPreference.m ([GeneralPreference -initializeSelector]): when no output bundle was found, display "None" and disable the widget. ([GeneralPreference -initializeWithDict:aDict]): initialize the defaults output bundle from the selector only *if* the bundle list is not empty. * MainController.m ([MainController -_initMenuLabels]): menus on MacOSX and GNUstep are different so we have to write a double-method. 2004-03-29 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): if the file can't be opened, returns 'NO'. * MainController.m ([MainController -loadBundlesInLocalDirectory:aFileManager]): computes the Bundle directory for the Application directory instead of hard-coding it. * Bundles/MP3/MP3.m ([MP +_testMP3Header:buffer]): added support for MPEG 2.5 files. 2004-03-28 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +_seekOffset:_f]): new method to return the first-non zero character of a stream. ([MP +_testRIFFHeader:bufferinFile:_fwithOffset:offset]): new method that tests whether a RIFF file contains an MP3 stream. ([MP +_testMP3Header:buffer) new method split from +streamTestOpen: to test a basic MPEG audio header. 2004-03-22 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): we do now provide support for MP2 and MPEG 2 Layer 2/3 streams. "So many standards to choose from...". 2004-02-27 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): we do now provide support for RIFF-encapsulated MPEG and MPEG Layer 3 streams. 2004-02-18 Wolfgang Sourdeau * Bundles/Esound/Esound.m ([EsoundPreferences -selectTcpBtn:sender]): set the text fields visibily enabled. ([EsoundPreferences -selectUnixBtn:sender]): set the text fields visibily disabled. 2004-02-15 Wolfgang Sourdeau * MainController.m ([MainController -_initMenuLabels]): set submenu titles too. 2004-02-14 Wolfgang Sourdeau * utils.m (logRect): new function to display an NSRect's coordinates. * PlaylistController.m ([PlaylistController -saveDefaultList]): synchronize defaults when saving playlist. ([PlaylistController -_addSongsFromOPanel:oPanel]): update default playlist when new files are added. ([PlaylistController -_addDirSongsFromOPanel:oPanel]): idem. ([PlaylistController -removeSong:sender]): idem, when removing songs. * PreferencesController.m ([PreferencesController +loadPreferencesWindow]): initialize prefs window title for I18N; ([PreferencesController -setBundleView:bundlePrefsView]): new way of positioning preference subviews. * GeneralPreference.m ([GeneralPreference +registerPlayerClass:aClass]): display the warning regarding bundles only when it's real. * MainController.m ([MainController -_initMenuLabels]): new method to initalize i18nized menu labels. 2004-02-13 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -windowDidResize:aNotification]): new method to avoid positioning window disgracefully after it's resized (with isStuck is YES). 2004-02-05 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_updatePlayer:force]): updatePlayer now takes a BOOL argument 'force'. Also, was renamed to "_updatePlayer:". ([PlaylistController -tableDoubleClick:aNotification]): force updatePlayer to restart the current song when double-clicked. ([PlaylistController -playerSongEnded:aNotification]): when repeat is on, do repeat the song even if it's the only one. Otherwise, reinitialize the playlist position and stop. 2004-01-20 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -removeSong:sender]): don't go to the next song when the song being played is not selected. ([PlaylistController -_initButtonImages]): new shuffle button; 2004-01-19 Wolfgang Sourdeau * MainController.m ([MainController -parseArguments]): new method to add song filenames given as command-line parameters to the playlist; * PlaylistController.m ([PlaylistController -removeSong:sender]): fixed a subtle bug that was preventing the shuffle mode from working properly. When deleting a song, the next song in the real list, rather than in the shuffle list, was selected. ([PlaylistController -_initButtonImages]): new repeatButton taken into ccount. 2004-01-16 Wolfgang Sourdeau * Bundles/Ogg/Ogg.m ([Ogg +streamTestOpen:fileName]): don't display error when the file tested is just not a vorbis stream. 2004-01-14 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -removeSong:sender]): test if playlist is non-empty before removing any element. * Bundles/dummy/dummy.m ([dummyPlayerThread -playerThread:dict]): don't crash when stopping player. * Bundles/MP3/MP3.m ([MP +streamTestOpen:fileName]): implement a real test on file headers for both little- and big-endian machines. 2004-01-12 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -_fileIsAcceptable:fileName]): new method to test whether a file exists, is a regular file or a symlink to a regular file. ([PlaylistController -_addSongsFromArray:songArraywithDir:aDirectory]): accepts an optional directory name to prepend to the filenames. * Bundles/dummy/dummy.m: new output bundle, outputting to no device for debugging purpose. * PlaylistController.m ([PlaylistController -_initButtonImages]): added "playlist-show" and "playlist-hide" as button images. 2004-01-11 Wolfgang Sourdeau * Bundles/MP3/MP3.m: copyright infos updated + portability #ifdef's. * MainController.m: General: portability "#ifdef NeXT_PDO"'s and related code. ([MainController -loadBundlesInLocalDirectory:aFileManager]): simplified local bundle loading for Openstep/Win32. * Bundles/Ogg/Ogg.m ([Ogg +errorText:error]): new class method to replace lastErrorText. Used in streamTestOpen:. General: portability "#ifdef NeXT_PDO"'s and related code. 2004-01-06 Wolfgang Sourdeau * Bundles/Ogg/Ogg.m ([Ogg -streamClose]): it seems ov_clear already calls free(). 2003-12-31 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong]): uses NSFileManager's fileExistsAtPath: method instead of access(). 2003-12-30 Wolfgang Sourdeau * Player.h: togglePause and toggleMuted changed respectively to setPaused/paused and setMuted/muted. 2003-12-29 Wolfgang Sourdeau * CynthiuneInfo.plist: release 0.9. * GNUmakefile (APP_NAME): added VERSION variable and set it to 0.9. * Bundles/Esound/Esound.m ([EsoundPlayerThread -playerThread:dict]): check streamToRelease and close + release if non-nil. ([EsoundPlayerThread -setStream:aStream]): if streamToRelease is already allocated, we wait for the thread loop to release it. * Bundles/OSS/OSS.m: same as above. * PlaylistController.m ([PlaylistController -songCursorChange:sender]): update the timer depending on the chosen position so that the user see an indication of where (s)he is within the song. ([PlaylistController -toggleMute:sender]): initialize the player if it's not running so that we can mute it even when nothing has played yet. ([PlaylistController -songCursorChange:sender]): the time throttle is really active now. ([PlaylistController -updatePlayer]): display info for the actual player song so that we don't show invalid informations since we could be called twice if a stream is invalid. * Playlist.m ([Playlist -insertSong:newSong:aPos]): increase currentSongNumber when aPos <= to it. ([Playlist -moveSongsWithRows:aRowsListto:newPos]): save current song and restore currentSongNumber at the end. * Bundles/Esound/Esound.m ([EsoundPlayerThread -seek:aPos]): same as below. * Bundles/OSS/OSS.m ([OSSPlayerThread -seek:aPos]): new method: seek in the stream and update totalBytes. * Bundles/Ogg/Ogg.m ([Ogg -isSeekable]): we call ov_seekable and return its result. ([Ogg -seek:aPos]): Ogg's are seekable. * Bundles/MP3/MP3.m ([MP -isSeekable]): pseudo method always returning YES. ([MP -seek:aPos]): MP3's are seekable. * Player.h: impose a new "seek:" method to Player classes. * Format.h: impose new "- isSeekable" and "seek:" methods to Format classes. * Song.m ([Song -readInfos]): don't read infos of file that can't be opened. ([Song -isSeekable]): new method to verify that the position in the song can be changed. * MainController.m ([MainController -appWindow]): new method to return the player window. * GeneralPreference.m ([GeneralPreference -playlistFormatChanged:sender]): new method/callback to save the specified playlist format. 2003-12-28 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -updatePlayer]): update the progressSlider only at song change. * TableViewController.m ([TableViewController -_acceptDroppedRows:aRowsListatRow:row]): reselect all previously selected songs, not just the first and last ones. * PlaylistController.m ([PlaylistController -windowDidMove:aNotification]): fixed windows stickyness by testing the condition that applies for each axis. ([PlaylistController -removeSong:sender]): sets the currentSongNumber to the first selected song or, if the player is running, to the song that is being played. ([PlaylistController -playerStopped:aNotification]): don't select the first song when stopped playing. 2003-12-27 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -saveList:sender]): defaults entry for saving playlists is now "DefaultPlaylistDirectory" instead of "NSDefaultSaveDirectory" for exactness. * utils.m (linesOfFile): refactoring: previous method "+_linesFromContentL" from PlaylistFile.m. Added proper copyright notice. * PlaylistFile.m ([PlaylistFile +savePlaylist:anArraytoFile:aFile]): new method to convert and save the array of songs. ([PlaylistFile +_PLSContentWithArray:anArray]) and ([PlaylistFile +_M3UContentWithArray:anArray]): new methods to convert an array of songs, return an NSString with the playlist in the appropriate format. ([PlaylistFile +_linesFromContent:content]): manage DOS-formatted files. * GeneralPreference.m ([GeneralPreference +preferredPlaylistFormat]): new method to determine the user's preferred playlist format to use when saving the playlist. * PlaylistController.m ([PlaylistController -saveList:sender]): new method to save current playlist. ([PlaylistController -init]): new attribute "playlistFilename" set to nil. * Bundles/OSS/OSS.m: aligned code with recent changes in Esound bundle. * Bundles/Esound/Esound.m ([Esound -setSong:aSong]): "seconds" attribute no longer used, computed when getSeconds is called. * PlaylistController.m ([PlaylistController -awakeFromNib]): disable progressSlider by default. ([PlaylistController -updatePlayer]): en-/disable the progressSlider depending on the song "seekability". * Song.m ([Song -isSeekable]): new method to determine whether the cursor can be moved within the song. ([Song -seek:aPos]): new method to change the time cursor. * Bundles/OSS/OSS.m ([OSS -timer]): compute time when called. * Song.m ([Song +songWithFilename:aFilename]): new method to alloc and init a new song at the same time; 2003-12-20 Wolfgang Sourdeau * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): if title string is empty, only put the song's filename between brackets. * PlaylistController.m ([PlaylistController -showPlaylistWindow]): use [w orderFront] rather than [w orderBack]; ([PlaylistController -addSong:sender]) and ([PlaylistController -removeSong:sender]): compare to translated label titles. ([PlaylistController -awakeFromNib]): initalize progressSlider. ([PlaylistController -switchToSong:aSongplayerIsRunning:running]), ([PlaylistController -playerPlaying:aNotification]), ([PlaylistController -playerStopped:aNotification]), ([PlaylistController -playerSongEnded:aNotification]): set progressSlider's max value to relevant value depending on the case (new song or song stopped). ([PlaylistController -playerUpdateTimer:aNotification]): update progressSlider's value. * MainController.m ([MainController -openFile:anObject]): new method to add a new song to the playlist from the Document->open menu. * InfoDisplayController.m ([InfoDisplayController -show]): set translated image name (Localizable.strings). ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): really set title from deduced value rather than directly from [aSong title]. 2003-12-19 Wolfgang Sourdeau * TableViewController.m ([TableViewController -addNeededColumns]): added a column for song duration time; * InfoDisplayController.m ([InfoDisplayController -changeTimeDisplay:sender]): activated switching of timer display (forward/backward). * utils.m: helper functions. (timeStringFromSeconds): code previously found in InfoDisplayController. * Format.h: changed typing for readChannels, readRate. Added readDuration method, to return the stream length; 2003-12-18 Wolfgang Sourdeau * Playlist.m ([Playlist +_linesFromContent:content]): new singleton class to read .pls and .m3u playlist files. * Bundles/Esound/Esound.m ([EsoundPlayerThread -flushOutputBuffer:dict]): reinit esdDsp from the dict at each iteration to avoid writing to a closed filedesc. * PlaylistController.m ([PlaylistController -togglePlaylist:sender]): display or hide the new playlist window; * TableViewController.m ([TableViewController -init]): as a child of playlistcontroller, tvc no longer has the playlist outlet and now forwards the TableView clicks to its delegate. * PlaylistController.h: new outlet: TableViewController, for which we act as a delegate. * PlaylistController.m ([PlaylistController -windowDidMove:aNotification]): implemented window magnetism. 2003-12-15 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -playerStopped:sender]): release player when stopped, so that we can choose another one. * Bundles/MP3/MP3.m ([MP -readNextChunk:bufferwithSize:bufferSize]): loop when steam.error == MAD_ERROR_LOSTSYNC. * PlaylistController.m ([PlaylistController -playerPaused:sender]): set button state only from delegate. functions. 2003-12-14 Wolfgang Sourdeau * Bundles/MP3/MP3.m ([MP +acceptedFileExtensions]): accepts .mpa, .mpga, .mpega files + uppercases. 2003-12-13 Wolfgang Sourdeau * OutputPreference.m ([OutputPreference +initializeList]): new preference module and handler for selecting the output bundle to use. * MainController.m ([MainController -loadBundlesForPath:aPathwithFileManager:aFileManager]): bundle conform to the "Player" protocol are registered with the OutputPreference class. * InfoDisplayController.m ([InfoDisplayController -show]): only use on NSImageView now for active and inactive splash images. ([InfoDisplayController -changeTimeDisplay:sender]): new stub action connected to songTimerField; * Bundles/OSS/OSS.m: added OSSPreferences class, copied from Esound. * Bundles/OSS/GNUmakefile: added OSSPreferences.gorm to the RESOURCE_LIST 2003-12-12 Wolfgang Sourdeau * MainController.m ([MainController -loadBundlesForPath:aPathwithFileManager:aFileManager]): scan for bundles. * PreferencesController.[hm]: new controller for Preferences.gorm. * Preference.h: new Preference protocol for classes implementing preference sheet handling. * NEWS: updated with the new nice features we've added recently. * Bundles/Esound/Esound.m: new Esound output class, based on OSS. With the same thread model and a controller class for its preference panel (EsoundPreferences.gorm). * Bundles/OSS/OSS.m: old GNUstepPlayer.[hm]. the OSS class is a childclass of PlayerBase and conforms to the Player and Preference protocol. * Bundles/Ogg/Ogg.[hm]: old OggStream.[hm] * Bundles/MP3/MP3.m ([MP -translateBufferToPCM:bufferwithSize:bufferSize]): compute the difference between buffer returned by libmad and the player buffer, to avoid a buffer overrun. * Bundles/MP3/MP3.[hm]: old MP3Stream.[hm] * InfoDisplayController.m ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): field code simplified by the splitting of the album and artist fields. ([InfoDisplayController -awakeFromNib]): We use boldSystemFont for song name and systemFont for the rest. * InfoDisplayController.[h,m]: album and artist fields are not splitted from each other. We don't use a tabview anymore, just overlapped images. * GNUmakefile.preamble: link to libmcheck (malloc checks) when $(debug) is set to 'yes'. References to format libraries and headers moved out. * GNUmakefile: added new Bundles to the list of SUBPROJECTS. Added Images/eject.tiff to the list of RESOURCE_FILES. * FormatTester.m: is now feeded decoder classes (conform to the Format protocol) and their extensions by new PreferencesController class; * Format.h: Format protocol. For decoder modules. 2003-12-08 Wolfgang Sourdeau * Song.m ([Song -readInfos]): we retain returned NSStrings here now rather than in the formats readers. * GNUstepPlayer.m: GNUstepPlayer is a child class of PlayerBase and responds to "Player" protocol. Common methods moved into Player.m. * Player.m ([PlayerBase -init]): new. Implementation of PlayerBase class. * Player.h: definition of "Player" protocol and PlayerBase class. 2003-12-04 Wolfgang Sourdeau * Song.m ([Song -openStreamForSong]): test if the Song file is still accessible, return nil if not so that we don't crash. * PlaylistController.m ([PlaylistController -TableDoubleAction:sender]): we use switchToSong for coherence. * GNUstepPlayer.m ([PlayerThread -threadDidStart:aDict]): use NSDebugLog() instead of NSLog(). ([PlayerThread -threadWillExit:aDict]): ditto. ([PlayerThread -playerThread:dict]): if the thread exits with (stream == nil), it means the song ended (even if it didn't even start playing). * FormatTester.m ([FormatTester +classForFile:filePath]): fixed sizeof() to return the correct amount of elements in the format list. 2003-12-03 Wolfgang Sourdeau * GNUstepPlayer.m ([PlayerThread -flushOutputBuffer:dspFd]): reenabled this method for clarity. * PlaylistController.m ([PlaylistController -switchToSong:aSongTVCIs:tvcplayerIsRunning:running]): don't stop/restart the player when changing song. Also, we now update the display with the new song's informations. ([PlaylistController -playerSongEnded:sender]): stop playloop if no song is left in the list. This let the thread exit and reset the GUI. 2003-12-02 Wolfgang Sourdeau * PlaylistController.m ([PlaylistController -addSong:sender]): play with NSDefaultDirectory to remember last opened directory; 2003-11-28 Wolfgang Sourdeau * MP3Stream.m ([MP -audioLinearDither:samplewithDither:dither]): dithering method copied from madplay. ([MP -translateBufferToPCM:bufferwithSize:bufferSize]): method copied from madplay: audio_pcm_s16le. ([MP -calcInputRemain]): new method to clarify code. ([MP -readStreamMetaData]): read first valid frame and deduce channels and rate from it. ([MP -streamInit]): invoke readStreamMetaData. ([MP -translateBufferToPCM:bufferwithSize:bufferSize]): 'offset' renamed to 'start', 'max' to 'limit'. ([MP -fillPCMBuffer:bufferwithStart:startandLimit:limit]): new method extracted from -translateBufferToPCM:bufferwithSize:bufferSize to clarify code. * MacOSXPlayer.m (inputCallback): ref to OggStream removed. * GNUstepPlayer.m ([Player -handleReadProblem:bytesRead]): manageOggProblem renamed. 2003-11-26 Wolfgang Sourdeau * FormatTester.m ([FormatTester +fileTypeKnown:filePath]): changed to a class method. * PlaylistController.m ([PlaylistController -_addSongsFromOPanel:oPanel]): private method to make addSong lighter. ([PlaylistController -addSong:sender]): accept mp3 as filetype. 2003-01-06 Wolfgang Sourdeau * InfoDisplayController.m ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): ditto. * TableViewController.m ([TableViewController -tableView:aTableViewobjectValueForTableColumn:aTableColumnrow:rowIndex]): enhanced display for incomplete song metadata. * InfoDisplayController.m ([InfoDisplayController -updateInfoFieldsFromSong:aSong]): do not display a dash whenever one of the album name or artist name is missing. 2003-01-02 Wolfgang Sourdeau * main.m: release 0.4 * MainController.m ([MainController -windowWillClose:aNotification]): using a static BOOL, test wether the close notification has been called to avoid infinite looping and a SIGSEGV (especially on GNUstep). * *.[hm]: updated copyright info with year 2003. * OggStream.m ([OggStream -readChannels]): new function. ([OggStream -readRate]): new function. * GNUstepPlayer.m ([Player -playIteration:sender]): fill the whole buffer first and write it in one shot to avoid too many write()'s. ([Player -setSong:aSong]): added code to make it able to read one channel songs. ([Player -audioInit]): tune the audio dsp. 2002-12-25 Wolfgang Sourdeau * Initial release. Cynthiune-1.0.0/PlaylistController.m.orig000644 001751 000024 00000105667 11755126620 021145 0ustar00multixstaff000000 000000 /* PlaylistController.m - this file is part of Cynthiune * * Copyright (C) 2002-2006 Wolfgang Sourdeau * 2012 The Free Software Foundation, Inc * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #ifdef GOOM #import #import "GoomView.h" #endif /* GOOM */ #import "CynthiuneSliderCell.h" #import "FormatTester.h" #import "GeneralPreference.h" #import "InfoDisplayController.h" #import "Player.h" #import "Playlist.h" #import "PlaylistController.h" #import "PlaylistView.h" #import "Song.h" #import "SongInspectorController.h" #import "PlaylistViewController.h" #define LOCALIZED(X) NSLocalizedString (X, nil) static NSString *DefaultPlaylistName = @"Playlist.cPls"; static NSString *defaultPlaylistFile = nil; static NSString *AddItemIdentifier = @"addButton"; static NSString *RemoveItemIdentifier = @"removeButton"; // static NSString *RemoveAllItemIdentifier = @"removeAllButton"; static NSString *CleanupItemIdentifier = @"cleanupButton"; // static NSString *SaveItemIdentifier = @"saveButton"; static NSString *SaveAsItemIdentifier = @"saveAsButton"; // static NSString *RepeatItemIdentifier = @"repeatButton"; // static NSString *ShuffleItemIdentifier = @"shuffleButton"; static NSString *SongInspectorItemIdentifier = @"songInspectorButton"; @implementation PlaylistController : NSObject + (void) initialize { NSArray *dirs; if (!defaultPlaylistFile) { dirs = NSSearchPathForDirectoriesInDomains (NSLibraryDirectory, NSUserDomainMask, YES); defaultPlaylistFile = [[[dirs objectAtIndex: 0] stringByAppendingPathComponent: @"Cynthiune"] stringByAppendingPathComponent: DefaultPlaylistName]; [defaultPlaylistFile retain]; } } - (id) init { if ((self = [super init])) { playlist = [Playlist new]; [playlist setDelegate: self]; player = [Player new]; [player setDelegate: self]; playlistFilename = nil; timer = nil; repeat = NO; currentPlayerSong = nil; notifiedFirstSong = nil; songInspectorController = [SongInspectorController songInspectorController]; [songInspectorController setDelegate: self]; } return self; } - (void) _initButtonImages { [previousButton setImage: [NSImage imageNamed: @"previous"]]; [previousButton setAlternateImage: [NSImage imageNamed: @"previous-pushed"]]; [previousButton setToolTip: LOCALIZED (@"Previous")]; [playButton setImage: [NSImage imageNamed: @"play"]]; [playButton setAlternateImage: [NSImage imageNamed: @"play-pushed"]]; [playButton setToolTip: LOCALIZED (@"Play")]; [pauseButton setImage: [NSImage imageNamed: @"pause"]]; [pauseButton setAlternateImage: [NSImage imageNamed: @"pause-pushed"]]; [pauseButton setToolTip: LOCALIZED (@"Pause")]; [stopButton setImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setAlternateImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setToolTip: LOCALIZED (@"Stop")]; [nextButton setImage: [NSImage imageNamed: @"next"]]; [nextButton setAlternateImage: [NSImage imageNamed: @"next-pushed"]]; [nextButton setToolTip: LOCALIZED (@"Next")]; [ejectButton setImage: [NSImage imageNamed: @"eject"]]; [ejectButton setAlternateImage: [NSImage imageNamed: @"eject-pushed"]]; [repeatButton setImage: [NSImage imageNamed: @"repeat"]]; [repeatButton setAlternateImage: [NSImage imageNamed: @"repeat-pushed"]]; [repeatButton setToolTip: LOCALIZED (@"Repeat")]; [shuffleButton setImage: [NSImage imageNamed: @"shuffle"]]; [shuffleButton setAlternateImage: [NSImage imageNamed: @"shuffle-pushed"]]; [shuffleButton setToolTip: LOCALIZED (@"Shuffle")]; // [playButton setToolTip: @"Wanna dance?"]; // #define buttonGradient NSGradientConcaveWeak // [[playButton cell] setBezelStyle: NSLargeIconButtonBezelStyle]; // [[previousButton cell] setBezelStyle: NSSmallIconButtonBezelStyle]; // [[previousButton cell] setGradientType: buttonGradient]; // [[playButton cell] setGradientType: NSGradientNone]; // [[stopButton cell] setGradientType: buttonGradient]; // [[nextButton cell] setGradientType: buttonGradient]; // [[pauseButton cell] setGradientType: buttonGradient]; // [[ejectButton cell] setGradientType: buttonGradient]; // [[playlistButton cell] setGradientType: buttonGradient]; } - (NSToolbarItem *) _toolbarButtonWithIdentifier: (NSString *) identifier title: (NSString *) title callbackToSelf: (SEL) selector andImageName: (NSString *) imageName { NSToolbarItem *toolbarButton; NSString *locTitle; toolbarButton = [[NSToolbarItem alloc] initWithItemIdentifier: identifier]; [toolbarButton setImage: [NSImage imageNamed: imageName]]; if (title) { locTitle = LOCALIZED (title); [toolbarButton setLabel: locTitle]; [toolbarButton setPaletteLabel: locTitle]; [toolbarButton setToolTip: locTitle]; } [toolbarButton setTarget: self]; [toolbarButton setAction: selector]; return toolbarButton; } - (void) _initToolbarButtons { addButton = [self _toolbarButtonWithIdentifier: AddItemIdentifier title: @"Add Songs..." callbackToSelf: @selector (addSongs:) andImageName: @"add"]; removeButton = [self _toolbarButtonWithIdentifier: RemoveItemIdentifier title: @"Remove Selection" callbackToSelf: @selector (removeSelectedSongs:) andImageName: @"remove"]; // removeAllButton = [self _toolbarButtonWithIdentifier: RemoveAllItemIdentifier // title: @"Remove All" // callbackToSelf: @selector (removeAllSongs:) // andImageName: @"remove-all"]; cleanupButton = [self _toolbarButtonWithIdentifier: CleanupItemIdentifier title: @"Cleanup" callbackToSelf: @selector (cleanupPlaylist:) andImageName: @"cleanup"]; // saveButton = [self _toolbarButtonWithIdentifier: SaveItemIdentifier // title: @"Save..." // callbackToSelf: @selector (saveList:) // andImageName: @"save"]; saveAsButton = [self _toolbarButtonWithIdentifier: SaveAsItemIdentifier title: @"Save As..." callbackToSelf: @selector (saveListAs:) andImageName: @"save-as"]; // repeatButton = [self _toolbarButtonWithIdentifier: RepeatItemIdentifier // title: @"Repeat" // callbackToSelf: @selector (toggleRepeat:) // andImageName: @"repeat"]; // shuffleButton = [self _toolbarButtonWithIdentifier: ShuffleItemIdentifier // title: @"Shuffle" // callbackToSelf: @selector (toggleShuffle:) // andImageName: @"shuffle"]; songInspectorButton = [self _toolbarButtonWithIdentifier: SongInspectorItemIdentifier title: @"Song Inspector..." callbackToSelf: @selector (toggleSongInspector:) andImageName: @"song-inspector"]; } - (void) updateStatusLabel { NSMutableString *infos; NSArray *selection; infos = [NSMutableString stringWithFormat: LOCALIZED (@"%d songs - total time: %@"), [playlist numberOfSongs], [[playlist duration] timeStringValue]]; selection = [playlistViewController getSelectedSongs]; if ([selection count]) [infos appendFormat: LOCALIZED (@" - selection: %@"), [[playlistViewController durationOfSelection] timeStringValue]]; [playlistStatusLabel setStringValue: infos]; } - (void) _updatePlayerState { NSUserDefaults *defaults; BOOL boolValue; int intValue; defaults = [NSUserDefaults standardUserDefaults]; boolValue = [defaults boolForKey: @"RepeatMode"]; if (boolValue) { [repeatButton setState: NSOnState]; [self toggleRepeat: self]; } boolValue = [defaults boolForKey: @"ShuffleMode"]; if (boolValue) { [shuffleButton setState: NSOnState]; [self toggleShuffle: self]; } intValue = [defaults integerForKey: @"CurrentSongNumber"]; if (intValue < [playlist numberOfSongs]) { currentPlayerSong = [playlist songAtIndex: intValue]; [playlistViewController setCurrentPlayerSong: currentPlayerSong]; } } - (void) savePlayerState { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; [defaults setBool: repeat forKey: @"RepeatMode"]; [defaults setBool: [playlist shuffle] forKey: @"ShuffleMode"]; if (currentPlayerSong) [defaults setInteger: [playlist indexOfSong: currentPlayerSong] forKey: @"CurrentSongNumber"]; } #ifdef GOOM - (void) _createGoom { NSWindow *goomPanel; GoomView *goomView; goomPanel = [[NSPanel alloc] initWithContentRect: NSMakeRect (100, 100, 660, 420) styleMask: NSTitledWindowMask backing: NSBackingStoreRetained defer: NO]; goomView = [[GoomView alloc] initWithFrame: NSMakeRect (10, 10, 640, 400)]; [[goomPanel contentView] addSubview: goomView]; [goomPanel setTitle: @"Goom"]; [goomPanel setLevel: NSFloatingWindowLevel]; [goomPanel orderFront: self]; [goomView setFPS: 10]; [player setGoom: [goomView goom]]; } #endif /* GOOM */ - (void) awakeFromNib { [repeatMenuItem setState: NSOffState]; [shuffleMenuItem setState: NSOffState]; [songInspectorMenuItem setState: NSOffState]; [playlist loadFromFile: defaultPlaylistFile]; [playlistViewController setPlaylistController: self]; [playlistViewController setPlaylist: playlist]; [playlistStatusLabel setTextColor: [NSColor darkGrayColor]]; #ifdef GOOM [self _createGoom]; #endif /* GOOM */ } - (void) _initProgressSlider { #ifdef GNUSTEP NSCell *oldCell, *cell; oldCell = [progressSlider cell]; cell = [CynthiuneSliderCell new]; [cell setBordered: NO]; [cell setBezeled: NO]; [cell setTarget: [oldCell target]]; [cell setAction: [oldCell action]]; [progressSlider setCell: cell]; #endif /* GNUSTEP */ [progressSlider setEnabled: NO]; [progressSlider setMinValue: 0.0]; [progressSlider setIntValue: 0]; } - (void) initializeWidgets { [self _initButtonImages]; [self _initToolbarButtons]; [self _initProgressSlider]; [self updateStatusLabel]; [self _updatePlayerState]; [pauseButton setEnabled: NO]; [stopButton setEnabled: NO]; [infoDisplayController initializeWidgets]; } - (NSToolbar *) playlistToolbar { NSToolbar *toolbar; toolbar = [[NSToolbar alloc] initWithIdentifier: @"PlaylistToolbar"]; [toolbar autorelease]; [toolbar setDisplayMode: NSToolbarDisplayModeIconOnly]; [toolbar setSizeMode: NSToolbarSizeModeSmall]; [toolbar setDelegate: self]; return toolbar; } - (void) toggleRepeat: (id) sender { BOOL repeatState; int widgetState; widgetState = [repeatButton state]; repeatState = ((widgetState == NSOnState) ? YES : NO); if (sender == repeatMenuItem) { repeatState = !repeatState; if (repeatState) [repeatButton setState:NSOnState]; else [repeatButton setState:NSOffState]; } widgetState = [repeatButton state]; [repeatMenuItem setState: widgetState]; repeat = ((widgetState == NSOnState) ? YES : NO); } - (void) toggleShuffle: (id) sender { BOOL shuffleState; int widgetState; Song *shuffleSong; widgetState = [shuffleButton state]; shuffleState = ((widgetState == NSOnState) ? YES : NO); if (sender == shuffleMenuItem) { shuffleState = !shuffleState; if (shuffleState) [shuffleButton setState:NSOnState]; else [shuffleButton setState:NSOffState]; } widgetState = [shuffleButton state]; [shuffleMenuItem setState: widgetState]; [playlist setShuffle: shuffleState]; if (currentPlayerSong) shuffleSong = currentPlayerSong; else shuffleSong = [playlist firstSong]; if (shuffleState && shuffleSong) [playlist shuffleFromSong: shuffleSong]; } - (void) toggleSongInspector: (id) sender { [songInspectorController toggleDisplay]; } - (void) resetProgressSlider { [progressSlider setIntValue: 0]; if (currentPlayerSong) { [progressSlider setMaxValue: [[currentPlayerSong duration] doubleValue]]; [progressSlider setEnabled: [currentPlayerSong isSeekable]]; } else { [progressSlider setMaxValue: 0.0]; [progressSlider setEnabled: NO]; } } - (void) _updatePlayerSong: (Song *) song { NSObject *stream; if (song) { stream = [song openStreamForSong]; if (stream) { currentPlayerSong = song; [playlistViewController setCurrentPlayerSong: song]; [player setStream: stream]; if ([player playing]) { [infoDisplayController updateInfoFieldsFromSong: song]; [self resetProgressSlider]; } } } } - (void) _saveDefaultOpenDirectoryFromOpenPanel: (NSOpenPanel *) oPanel { NSUserDefaults *userDefaults; userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject: [oPanel directory] forKey: @"NSDefaultOpenDirectory"]; [userDefaults synchronize]; } - (NSArray *) _filteredSubtree: (NSString *) filename { NSFileManager *fm; NSMutableArray *result; NSEnumerator *filenames; NSString *currentFilename, *absoluteFilename; BOOL isDir; result = [NSMutableArray new]; [result autorelease]; fm = [NSFileManager defaultManager]; filenames = [[fm subpathsAtPath: filename] objectEnumerator]; currentFilename = [filenames nextObject]; while (currentFilename) { absoluteFilename = [filename stringByAppendingPathComponent: currentFilename]; if (!([fm fileExistsAtPath: absoluteFilename isDirectory: &isDir] && isDir)) [result addObject: absoluteFilename]; currentFilename = [filenames nextObject]; } [result sortUsingSelector: @selector (localizedCaseInsensitiveCompare:)]; return result; } - (void) _feedPlaylistWithTreeOfFilenames: (NSArray *) filenames { NSEnumerator *files; NSString *filename; FormatTester *formatTester; formatTester = [FormatTester formatTester]; files = [filenames objectEnumerator]; while ((filename = [files nextObject]) != nil) { if (fileIsAReadableDirectory (filename)) { [self _feedPlaylistWithTreeOfFilenames: [self _filteredSubtree: filename]]; } else if (fileIsAcceptable (filename)) { if ([formatTester fileIsPlaylist: filename]) { [playlist loadFromFile: filename]; } else if ([formatTester formatNumberForFile: filename] > -1) { [playlist addSong: [Song songWithFilename: filename]]; } } } } - (void) _oPanelDidEnd: (NSOpenPanel *) oPanel returnCode: (int) result contextInfo: (void *) contextInfo { if (result == NSOKButton) { [self _saveDefaultOpenDirectoryFromOpenPanel: oPanel]; notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: [oPanel filenames]]; if (notifiedFirstSong && ![player playing]) { [playlistViewController invalidateSortedColumn]; [self _updatePlayerSong: notifiedFirstSong]; } } } - (void) _startOPanelDidEnd: (NSOpenPanel *) oPanel returnCode: (int) result contextInfo: (void *) contextInfo { if (result == NSOKButton) { [self _saveDefaultOpenDirectoryFromOpenPanel: oPanel]; notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: [oPanel filenames]]; if (notifiedFirstSong) { [playlistViewController invalidateSortedColumn]; [self _updatePlayerSong: notifiedFirstSong]; [player play]; } } } - (void) _ejectOPanelDidEnd: (NSOpenPanel *) oPanel returnCode: (int) result contextInfo: (void *) contextInfo { if (result == NSOKButton) { [self _saveDefaultOpenDirectoryFromOpenPanel: oPanel]; if ([player playing]) [player stop]; currentPlayerSong = nil; [playlistViewController setCurrentPlayerSong: nil]; [playlist deleteAllSongsQuietly]; notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: [oPanel filenames]]; if (notifiedFirstSong) { [playlistViewController invalidateSortedColumn]; [self _updatePlayerSong: notifiedFirstSong]; [player play]; } } } /* load all files */ - (void) _runOpenPanelWithDidEndSelector: (SEL) selector { NSOpenPanel *oPanel; int result; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: YES]; [oPanel setCanChooseDirectories: YES]; [oPanel setTitle: LOCALIZED (@"Add music files...")]; [oPanel setDelegate: self]; result = [oPanel runModalForTypes: nil]; [self _oPanelDidEnd: oPanel returnCode: result contextInfo: nil]; } /* load playlists only */ - (void) _runPlaylistOpenPanelWithDidEndSelector: (SEL) selector { NSOpenPanel *oPanel; int result; NSArray *types; types = [[NSArray arrayWithObjects: @"m3u", @"pls", nil] retain]; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: YES]; [oPanel setCanChooseDirectories: NO]; [oPanel setTitle: LOCALIZED (@"Open Playlist...")]; [oPanel setDelegate: self]; result = [oPanel runModalForTypes: types]; [self _oPanelDidEnd: oPanel returnCode: result contextInfo: nil]; [types release]; } - (void) addSongs: (id) sender { [self _runOpenPanelWithDidEndSelector: @selector(_oPanelDidEnd:returnCode:contextInfo:)]; } - (void) addPlaylist: (id) sender { [self _runPlaylistOpenPanelWithDidEndSelector: @selector(_oPanelDidEnd:returnCode:contextInfo:)]; } - (Song *) _songAfterRemovalOfArray: (NSArray *) array { Song *newSong; newSong = currentPlayerSong; while (newSong && [array containsObject: newSong]) newSong = [playlist validSongAfter: newSong]; if (!newSong) { newSong = currentPlayerSong; while (newSong && [array containsObject: newSong]) newSong = [playlist validSongBefore: newSong]; } return newSong; } - (void) _removeArrayOfSongs: (NSArray *) array { Song *newSong; if ([array containsObject: currentPlayerSong]) { newSong = [self _songAfterRemovalOfArray: array]; if (newSong) { if (newSong != currentPlayerSong) [self _updatePlayerSong: newSong]; } else { if (currentPlayerSong) { currentPlayerSong = nil; [playlistViewController setCurrentPlayerSong: nil]; [self resetProgressSlider]; } [player stop]; } } if ([array count]) [playlistViewController invalidateSortedColumn]; [playlist deleteSongsInArray: array]; } - (void) removeSelectedSongs: (id) sender { [songInspectorController setSong: nil]; [self _removeArrayOfSongs: [playlistViewController getSelectedSongs]]; [playlistViewController deselectAll]; } - (void) removeAllSongs: (id) sender { if ([playlist numberOfSongs] > 0) [playlistViewController invalidateSortedColumn]; if ([player playing]) [player stop]; if (currentPlayerSong) { currentPlayerSong = nil; [playlistViewController setCurrentPlayerSong: nil]; [self resetProgressSlider]; } [songInspectorController setSong: nil]; [playlist deleteAllSongs]; } - (void) cleanupPlaylist: (id) sender { NSMutableArray *selectedSongs; NSArray *invalidSongs; invalidSongs = [playlist arrayOfInvalidSongs]; if ([invalidSongs count]) { if ([invalidSongs containsObject: [songInspectorController song]]) [songInspectorController setSong: nil]; selectedSongs = [NSMutableArray new]; [selectedSongs addObjectsFromArray: [playlistViewController getSelectedSongs]]; [selectedSongs removeObjectsInArray: invalidSongs]; [self _removeArrayOfSongs: invalidSongs]; [playlistViewController deselectAll]; [playlistViewController selectSongsInArray: selectedSongs]; [selectedSongs release]; } } /* FIXME: when the user specifies an extension, don't use default format */ - (void) _sPanelDidEnd: (NSSavePanel *) sPanel returnCode: (int) result contextInfo: (NSString *) extension { NSString *saveDir; if (result == NSOKButton) { saveDir = [sPanel directory]; [[NSUserDefaults standardUserDefaults] setObject: saveDir forKey: @"NSDefaultSaveDirectory"]; SET (playlistFilename, [sPanel filename]); [playlist saveToFile: playlistFilename]; } } - (void) _runSaveListPanelWithExtension: (NSString *) extension andSaveDir: (NSString *) saveDir { NSSavePanel *sPanel; sPanel = [NSSavePanel savePanel]; [sPanel setTitle: LOCALIZED (@"Save playlist as...")]; [sPanel setRequiredFileType: extension]; [sPanel setExtensionHidden: YES]; [sPanel beginSheetForDirectory: saveDir file: playlistFilename modalForWindow: [NSApp mainWindow] modalDelegate: self didEndSelector: @selector (_sPanelDidEnd:returnCode:contextInfo:) contextInfo: extension]; } - (void) saveList: (id) sender { NSString *extension, *filename, *saveDir; NSUserDefaults *userDefaults; if (!playlistFilename) [self saveListAs: sender]; else { extension = [[GeneralPreference instance] preferredPlaylistFormat]; userDefaults = [NSUserDefaults standardUserDefaults]; saveDir = [userDefaults stringForKey: @"NSDefaultSaveDirectory"]; if (!saveDir || [saveDir isEqualToString: @""]) saveDir = [userDefaults stringForKey: @"NSDefaultOpenDirectory"]; filename = [playlistFilename stringByAppendingPathExtension: extension]; [playlist saveToFile: [saveDir stringByAppendingPathComponent: filename]]; } } - (void) saveListAs: (id) sender { NSString *extension, *saveDir; NSUserDefaults *userDefaults; extension = [[GeneralPreference instance] preferredPlaylistFormat]; userDefaults = [NSUserDefaults standardUserDefaults]; saveDir = [userDefaults stringForKey: @"NSDefaultSaveDirectory"]; if (!saveDir || [saveDir isEqualToString: @""]) saveDir = [userDefaults stringForKey: @"NSDefaultOpenDirectory"]; [self _runSaveListPanelWithExtension: extension andSaveDir: saveDir]; } /* helper methods for CynthiuneController */ - (void) addSongFromNSApp: (id) sender { [self _runOpenPanelWithDidEndSelector: @selector(_oPanelDidEnd:returnCode:contextInfo:)]; } - (void) openSongFromNSApp: (NSString *) filename { notifiedFirstSong = nil; [playlistViewController invalidateSortedColumn]; [self _feedPlaylistWithTreeOfFilenames: [NSArray arrayWithObject: filename]]; if (notifiedFirstSong && ![player playing]) [self _updatePlayerSong: notifiedFirstSong]; } /* player buttons */ - (void) startPlayer: (id) sender { Song *song; if ([playlist numberOfSongs]) { if (!currentPlayerSong || [currentPlayerSong status] != SongOK) song = [playlist firstValidSong]; else song = currentPlayerSong; if (song) { [self _updatePlayerSong: song]; if (![player playing]) [player play]; } else [self _runOpenPanelWithDidEndSelector: @selector(_startOPanelDidEnd:returnCode:contextInfo:)]; } else [self _runOpenPanelWithDidEndSelector: @selector(_startOPanelDidEnd:returnCode:contextInfo:)]; } - (void) pausePlayer: (id) sender { if ([player playing]) [player setPaused: ![player paused]]; } - (void) previousSong: (id) sender { Song *newSong; if (currentPlayerSong) { newSong = [playlist validSongBefore: currentPlayerSong]; if (!newSong && repeat) newSong = [playlist lastValidSong]; } else newSong = nil; [self _updatePlayerSong: newSong]; } - (void) nextSong: (id) sender { Song *newSong; if (currentPlayerSong) { newSong = [playlist validSongAfter: currentPlayerSong]; if (!newSong && repeat) newSong = [playlist firstValidSong]; } else newSong = [playlist firstValidSong]; [self _updatePlayerSong: newSong]; } - (void) stopPlayer: (id) sender { [player stop]; } - (void) eject: (id) sender { [self _runOpenPanelWithDidEndSelector: @selector(_ejectOPanelDidEnd:returnCode:contextInfo:)]; } /* playlistview delegate */ - (void) playlistViewActivateSelection: (PlaylistView *) view { NSArray *selection; Song *song; selection = [playlistViewController getSelectedSongs]; if ([selection count] > 0) { song = [selection objectAtIndex: 0]; while ([song status] != SongOK || ![selection containsObject: song]) song = [playlist validSongAfter: song]; if (song) { [self _updatePlayerSong: song]; if (![player playing]) [player play]; } } } - (void) tableDoubleClick: (int) row { Song *song; song = [playlist songAtIndex: row]; if ([playlist shuffle]) [playlist shuffleFromSong: song]; if ([song status] != SongOK) song = [playlist validSongAfter: song]; [self _updatePlayerSong: song]; if (currentPlayerSong) { if (![player playing]) [player play]; else if ([player paused]) [player setPaused: NO]; } } - (void) updateSongInspector { NSArray *songs; songs = [playlistViewController getSelectedSongs]; [songInspectorController setSong: (([songs count] == 1) ? [songs objectAtIndex: 0] : nil)]; } - (void) tableFilenamesDropped: (NSArray *) filenames { notifiedFirstSong = nil; [self _feedPlaylistWithTreeOfFilenames: filenames]; if (notifiedFirstSong && ![player playing]) [self _updatePlayerSong: notifiedFirstSong]; } - (void) songCursorChange: (id) sender { unsigned int time; time = [sender intValue]; [infoDisplayController setTimerFromSeconds: time]; [player seek: time]; } - (void) changeTimeDisplay: (id) sender { unsigned int time; if ([player playing]) { time = [player timer]; [infoDisplayController setReverseTimer: ![infoDisplayController timerIsReversed]]; [infoDisplayController setTimerFromSeconds: time]; } } - (void) _updateTimeDisplay { unsigned int time; time = [player timer]; [infoDisplayController setTimerFromSeconds: time]; [progressSlider setIntValue: time]; } - (void) _startTimeTimer { if (timer) [timer invalidate]; [self _updateTimeDisplay]; timer = [NSTimer timerWithTimeInterval: 1 target: self selector: @selector (_updateTimeDisplay) userInfo: nil repeats: YES]; [timer explode]; } - (void) _stopTimeTimer { [timer invalidate]; timer = nil; } /* as a player delegate... */ - (void) playerPlaying: (NSNotification*) aNotification { double duration; [infoDisplayController updateInfoFieldsFromSong: currentPlayerSong]; [infoDisplayController show]; [self _startTimeTimer]; duration = [[currentPlayerSong duration] doubleValue]; [progressSlider setMaxValue: duration]; [playButton setImage: [NSImage imageNamed: @"play-pushed"]]; [playButton setEnabled: NO]; [pauseButton setEnabled: YES]; [stopButton setImage: [NSImage imageNamed: @"stop"]]; [stopButton setAlternateImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setEnabled: YES]; [playlistViewController setCurrentPlayerSong: currentPlayerSong]; [self resetProgressSlider]; } - (void) playerPaused: (NSNotification*) aNotification { [self _stopTimeTimer]; [pauseButton setState: YES]; } - (void) playerResumed: (NSNotification*) aNotification { [self _startTimeTimer]; [pauseButton setState: NO]; } - (void) playerStopped: (NSNotification*) aNotification { [infoDisplayController hide]; [self _stopTimeTimer]; [playButton setImage: [NSImage imageNamed: @"play"]]; [playButton setAlternateImage: [NSImage imageNamed: @"play-pushed"]]; [playButton setEnabled: YES]; [pauseButton setEnabled: NO]; [stopButton setImage: [NSImage imageNamed: @"stop-pushed"]]; [stopButton setEnabled: NO]; [progressSlider setEnabled: NO]; [progressSlider setMaxValue: 0]; } - (void) playerSongEnded: (NSNotification*) aNotification { Song *newSong; if (currentPlayerSong) { newSong = [playlist validSongAfter: currentPlayerSong]; if (newSong) [self _updatePlayerSong: newSong]; else { if (!repeat) [player stop]; [self _updatePlayerSong: [playlist firstValidSong]]; } } else { [player stop]; [self _updatePlayerSong: [playlist firstValidSong]]; } } /* Playlist delegate */ - (void) playlistChanged: (NSNotification *) aNotification { NSDictionary *userInfo; [playlist saveToFile: defaultPlaylistFile]; [playlistViewController updateView]; [self updateStatusLabel]; userInfo = [aNotification userInfo]; if (!notifiedFirstSong) notifiedFirstSong = [userInfo objectForKey: @"firstSong"]; } /* NSOpenPanel delegate */ - (BOOL) panel: (id) sender shouldShowFilename: (NSString *) fileName { NSFileManager *fileManager; FormatTester *formatTester; BOOL isDir, answer; fileManager = [NSFileManager defaultManager]; formatTester = [FormatTester formatTester]; answer = (([fileManager fileExistsAtPath: fileName isDirectory: &isDir] && isDir) || [formatTester extensionIsSupported: [fileName pathExtension]]); return answer; } /* Song inspector delegate */ - (void) songInspectorWasShown: (NSNotification *) aNotification { [songInspectorMenuItem setState: NSOnState]; [songInspectorButton setImage: [NSImage imageNamed: @"song-inspector-pushed"]]; } - (void) songInspectorWasHidden: (NSNotification *) aNotification { [songInspectorMenuItem setState: NSOffState]; [songInspectorButton setImage: [NSImage imageNamed: @"song-inspector"]]; } - (void) songInspectorDidUpdateSong: (NSNotification *) aNotification { if ([player playing] && currentPlayerSong == [[aNotification userInfo] objectForKey: @"song"]) [infoDisplayController updateInfoFieldsFromSong: currentPlayerSong]; [playlist saveToFile: defaultPlaylistFile]; [playlistViewController updateView]; } /* NSToolbar delegate */ - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag { NSToolbarItem *item; if ([itemIdentifier isEqualToString: AddItemIdentifier]) item = addButton; else if ([itemIdentifier isEqualToString: RemoveItemIdentifier]) item = removeButton; // else if ([itemIdentifier isEqualToString: RemoveAllItemIdentifier]) // item = removeAllButton; else if ([itemIdentifier isEqualToString: CleanupItemIdentifier]) item = cleanupButton; // else if ([itemIdentifier isEqualToString: SaveItemIdentifier]) // item = saveButton; else if ([itemIdentifier isEqualToString: SaveAsItemIdentifier]) item = saveAsButton; // else if ([itemIdentifier isEqualToString: RepeatItemIdentifier]) // item = repeatButton; // else if ([itemIdentifier isEqualToString: ShuffleItemIdentifier]) // item = shuffleButton; else if ([itemIdentifier isEqualToString: SongInspectorItemIdentifier]) item = songInspectorButton; else item = nil; return item; } - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar { return [NSArray arrayWithObjects: AddItemIdentifier, CleanupItemIdentifier, RemoveItemIdentifier, // RemoveAllItemIdentifier, // RepeatItemIdentifier, // SaveItemIdentifier, SaveAsItemIdentifier, // ShuffleItemIdentifier, SongInspectorItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, NSToolbarSeparatorItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil]; } - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar { return [NSArray arrayWithObjects: AddItemIdentifier, SaveAsItemIdentifier, NSToolbarSeparatorItemIdentifier, RemoveItemIdentifier, CleanupItemIdentifier, NSToolbarSeparatorItemIdentifier, // RepeatItemIdentifier, // ShuffleItemIdentifier, // NSToolbarSeparatorItemIdentifier, SongInspectorItemIdentifier, nil]; } /* Services */ - (id) validRequestorForSendType: (NSString *)sendType returnType: (NSString *)returnType { return ((sendType && [sendType isEqualToString: NSFilenamesPboardType] && ([playlistViewController getFirstSelectedRow] > -1)) ? self : nil); } - (BOOL) writeSelectionToPasteboard: (NSPasteboard*) pboard types: (NSArray*) types { NSArray *declaredTypes, *filenames; BOOL answer; if ([types containsObject: NSFilenamesPboardType]) { declaredTypes = [NSArray arrayWithObject: NSFilenamesPboardType]; [pboard declareTypes: declaredTypes owner: self]; filenames = [playlistViewController getSelectedSongsAsFilenames]; answer = [pboard setPropertyList: filenames forType: NSFilenamesPboardType]; } else answer = NO; return answer; } @end Cynthiune-1.0.0/Info-AudioFile.plist000644 001751 000024 00000001530 11756503315 017753 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable AudioFile CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass AudioFile Cynthiune-1.0.0/Info-Cynthiune.plist000644 001751 000024 00000015564 12075005676 020076 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleDocumentTypes CFBundleTypeExtensions ogg CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes application/ogg application/x-ogg CFBundleTypeName Ogg music file CFBundleTypeRole Viewer CFBundleTypeExtensions mp3 mp2 mpa mpga mpega CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/mpeg audio/x-mpeg audio/mpeg3 audio/x-mpeg3 audio/mpg audio/x-mpg audio/mp3 audio/x-mp3 CFBundleTypeName MPEG music file CFBundleTypeRole Viewer CFBundleTypeExtensions mpc mp+ CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/musepack audio/x-musepack CFBundleTypeName Musepack music file CFBundleTypeRole Viewer CFBundleTypeExtensions fla flac CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/flac audio/x-flac CFBundleTypeName FLAC music file CFBundleTypeRole Viewer CFBundleTypeExtensions aif aifc aiff au avr iff nist snd wav CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/aiff audio/x-aiff audio/basic audio/x-basic audio/au audio/x-au audio/x-ulaw audio/avr audio/x-avr application/iff application/x-iff audio/nist audio/x-nist audio/snd audio/x-snd audio/wav audio/x-wav CFBundleTypeName Sound file CFBundleTypeRole Viewer CFBundleTypeExtensions mod it xm 669 amf ams dbm dmf dsm far it j2b mdl med mod mt2 mtm okt psm ptm s3m stm ult umx mod xm CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/669 audio/amf audio/ams audio/dbm audio/dmf audio/dsm audio/far audio/it audio/j2b audio/mdl audio/med audio/mod audio/mt2 audio/mtm audio/okt audio/psm audio/ptm audio/s3m audio/stm audio/ult audio/umx audio/mod audio/xm audio/x-669 audio/x-amf audio/x-ams audio/x-dbm audio/x-dmf audio/x-dsm audio/x-far audio/x-it audio/x-j2b audio/x-mdl audio/x-med audio/x-mod audio/x-mt2 audio/x-mtm audio/x-okt audio/x-psm audio/x-ptm audio/x-s3m audio/x-stm audio/x-ult audio/x-umx audio/x-mod audio/x-xm CFBundleTypeName Tracker music file CFBundleTypeRole Viewer CFBundleTypeExtensions pls m3u CFBundleTypeIconFile Cynthiune-playlist CFBundleTypeName Playlist file CFBundleTypeRole Viewer CFBundleExecutable Cynthiune CFBundleGetInfoString A free software and romantic music player CFBundleIconFile Cynthiune.icns CFBundleIdentifier org.nongnu.gap.Cynthiune CFBundleInfoDictionaryVersion 6.0 CFBundleName Cynthiune CFBundlePackageType APPL CFBundleShortVersionString Version 1.0.0 CFBundleSignature WOSO CFBundleVersion 1.0.0 NSMainNibFile Cynthiune NSPrincipalClass NSApplication Cynthiune-1.0.0/Info-Cynthiune_framework.plist000644 001751 000024 00000001437 11756503315 022143 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable Cynthiune CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType FMWK CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 Cynthiune-1.0.0/Info-Esound.plist000644 001751 000024 00000001522 11756503315 017350 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable Esound CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass Esound Cynthiune-1.0.0/Cynthiune.xcodeproj/000755 001751 000024 00000000000 12014507041 020073 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Info-FLAC.plist000644 001751 000024 00000001516 11756503315 016623 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable FLAC CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass FLAC Cynthiune-1.0.0/Info-FLACTags.plist000644 001751 000024 00000001526 11756503316 017444 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable FLACTags CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass FLACTags Cynthiune-1.0.0/Info-ID3Tag.plist000644 001751 000024 00000001522 11756503316 017127 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable ID3Tag CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass ID3Tag Cynthiune-1.0.0/Info-MP3.plist000644 001751 000024 00000001514 11756503316 016514 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable MP3 CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass MP3 Cynthiune-1.0.0/Info-MacOSXPlayer.plist000644 001751 000024 00000001536 11756503316 020370 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable MacOSXPlayer CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass MacOSXPlayer Cynthiune-1.0.0/Info-Mod.plist000644 001751 000024 00000001514 11756503316 016634 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable Mod CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass Mod Cynthiune-1.0.0/Info-Musepack.plist000644 001751 000024 00000001436 11756503316 017670 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable Musepack CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 Cynthiune-1.0.0/Info-Ogg.plist000644 001751 000024 00000001514 11756503316 016631 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable Ogg CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass Ogg Cynthiune-1.0.0/Info-VorbisTags.plist000644 001751 000024 00000001532 11756503316 020200 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable VorbisTags CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass VorbisTags Cynthiune-1.0.0/Info-WindowsMedia.plist000644 001751 000024 00000001442 11756503316 020507 0ustar00multixstaff000000 000000 CFBundleDevelopmentRegion English CFBundleExecutable WindowsMedia CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 Cynthiune-1.0.0/Cynthiune.xcodeproj/project.pbxproj000644 001751 000024 00000557423 12014507041 023167 0ustar00multixstaff000000 000000 // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 42; objects = { /* Begin PBXBuildFile section */ 85A623271567FC1B00C86122 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF881915669BDB00DD5F41 /* CynthiuneController.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8795DF06F66AA403809032 /* CynthiuneController.h */; }; 85EF881A15669BDB00DD5F41 /* FormatTester.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BEB061FC27301C0FE28 /* FormatTester.h */; }; 85EF881B15669BDB00DD5F41 /* GeneralPreference.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BED061FC27301C0FE28 /* GeneralPreference.h */; }; 85EF881C15669BDB00DD5F41 /* InfoDisplayController.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BEF061FC27301C0FE28 /* InfoDisplayController.h */; }; 85EF881D15669BDB00DD5F41 /* Player.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BF3061FC27301C0FE28 /* Player.h */; }; 85EF881E15669BDB00DD5F41 /* Playlist.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BF5061FC27301C0FE28 /* Playlist.h */; }; 85EF881F15669BDB00DD5F41 /* PlaylistController.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BF7061FC27301C0FE28 /* PlaylistController.h */; }; 85EF882015669BDB00DD5F41 /* PlaylistView.h in Headers */ = {isa = PBXBuildFile; fileRef = EA7EE76B063AE6B6039F4895 /* PlaylistView.h */; }; 85EF882115669BDB00DD5F41 /* PreferencesController.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BFC061FC27301C0FE28 /* PreferencesController.h */; }; 85EF882215669BDB00DD5F41 /* Song.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BFE061FC27301C0FE28 /* Song.h */; }; 85EF882315669BDB00DD5F41 /* PlaylistViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858C00061FC27301C0FE28 /* PlaylistViewController.h */; }; 85EF882415669BDB00DD5F41 /* PlayerController.h in Headers */ = {isa = PBXBuildFile; fileRef = EA73D4B4074C81F203F60D55 /* PlayerController.h */; }; 85EF882515669BDB00DD5F41 /* PlayerPreference.h in Headers */ = {isa = PBXBuildFile; fileRef = EA73D4B6074C81F203F60D55 /* PlayerPreference.h */; }; 85EF882615669BDB00DD5F41 /* SongInspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = EA95850F078BA57703566F1F /* SongInspectorController.h */; }; 85EF882715669BDB00DD5F41 /* CynthiuneFadingTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE4C086E54DA039AFE6D /* CynthiuneFadingTextField.h */; }; 85EF882815669BDB00DD5F41 /* CynthiunePauseButton.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE4F086E54DA039AFE6D /* CynthiunePauseButton.h */; }; 85EF882915669BDB00DD5F41 /* CynthiuneSongTitleCell.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE55086E54DA039AFE6D /* CynthiuneSongTitleCell.h */; }; 85EF882A15669BDB00DD5F41 /* CynthiuneTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE57086E54DA039AFE6D /* CynthiuneTextCell.h */; }; 85EF882B15669BDB00DD5F41 /* CynthiunePopUpButton.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8BBBF90682D60703C2B047 /* CynthiunePopUpButton.h */; }; 85EF882C15669BDB00DD5F41 /* CynthiuneWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8A19170688EE2B03C0F62E /* CynthiuneWindow.h */; }; 85EF882D15669BDB00DD5F41 /* BundleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE81086E61A7039AFE6D /* BundleManager.h */; }; 85EF882E15669BDB00DD5F41 /* MBResultsPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE85086E61D7039AFE6D /* MBResultsPanel.h */; }; 85EF882F15669BDB00DD5F41 /* DictionaryCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC9033708F2ED0603D0D62A /* DictionaryCoder.h */; }; 85EF883015669BDB00DD5F41 /* M3UArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC9033B08F2ED3103D0D62A /* M3UArchiver.h */; }; 85EF883115669BDB00DD5F41 /* PlaylistArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC9033F08F2ED4903D0D62A /* PlaylistArchiver.h */; }; 85EF883215669BDB00DD5F41 /* PLSArchiver.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC9034108F2ED4903D0D62A /* PLSArchiver.h */; }; 85EF883315669BDB00DD5F41 /* CynthiuneAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = EAAF6D4D092BC55703000102 /* CynthiuneAnimatedImageView.h */; }; 85EF883415669BDB00DD5F41 /* CynthiuneHeaderCell.h in Headers */ = {isa = PBXBuildFile; fileRef = EA778ACC09B5778A032657EF /* CynthiuneHeaderCell.h */; }; 85EF883615669BDB00DD5F41 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 85EF883715669BDB00DD5F41 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = EA7EE7DD063B035E039F4895 /* Localizable.strings */; }; 85EF883815669BDB00DD5F41 /* ChangeLog in Resources */ = {isa = PBXBuildFile; fileRef = F51A012C03BA9CE401000004 /* ChangeLog */; }; 85EF883915669BDB00DD5F41 /* COPYING in Resources */ = {isa = PBXBuildFile; fileRef = F51A012D03BA9CE401000004 /* COPYING */; }; 85EF883A15669BDB00DD5F41 /* NEWS in Resources */ = {isa = PBXBuildFile; fileRef = F59C8F7903C01A7601C14AF2 /* NEWS */; }; 85EF883B15669BDB00DD5F41 /* README in Resources */ = {isa = PBXBuildFile; fileRef = EA7EE7E1063B04D0039F4895 /* README */; }; 85EF883C15669BDB00DD5F41 /* TODO in Resources */ = {isa = PBXBuildFile; fileRef = EA7EE7E2063B04D0039F4895 /* TODO */; }; 85EF883D15669BDB00DD5F41 /* Cynthiune.nib in Resources */ = {isa = PBXBuildFile; fileRef = F559092103B834CA01000004 /* Cynthiune.nib */; }; 85EF883E15669BDB00DD5F41 /* Preferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = F7BED96F0621E9B5010E156D /* Preferences.nib */; }; 85EF883F15669BDB00DD5F41 /* GeneralPreference.nib in Resources */ = {isa = PBXBuildFile; fileRef = F7BED9710621E9CF010E156D /* GeneralPreference.nib */; }; 85EF884015669BDB00DD5F41 /* Cynthiune.icns in Resources */ = {isa = PBXBuildFile; fileRef = F59C8F6B03C0155B01C14AF2 /* Cynthiune.icns */; }; 85EF884115669BDB00DD5F41 /* cynthiune-splash-faded.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C1F061FC31401C0FE28 /* cynthiune-splash-faded.tiff */; }; 85EF884215669BDB00DD5F41 /* cynthiune-splash.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C21061FC31401C0FE28 /* cynthiune-splash.tiff */; }; 85EF884315669BDB00DD5F41 /* Cynthiune.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C22061FC31401C0FE28 /* Cynthiune.tiff */; }; 85EF884415669BDB00DD5F41 /* eject.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C24061FC31401C0FE28 /* eject.tiff */; }; 85EF884515669BDB00DD5F41 /* eject-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C23061FC31401C0FE28 /* eject-pushed.tiff */; }; 85EF884615669BDB00DD5F41 /* next.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F59C8F6C03C0155B01C14AF2 /* next.tiff */; }; 85EF884715669BDB00DD5F41 /* next-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C28061FC31401C0FE28 /* next-pushed.tiff */; }; 85EF884815669BDB00DD5F41 /* pause.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F59C8F6D03C0155B01C14AF2 /* pause.tiff */; }; 85EF884915669BDB00DD5F41 /* pause-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C2A061FC31401C0FE28 /* pause-pushed.tiff */; }; 85EF884A15669BDB00DD5F41 /* play.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F59C8F6E03C0155B01C14AF2 /* play.tiff */; }; 85EF884B15669BDB00DD5F41 /* play-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C2B061FC31401C0FE28 /* play-pushed.tiff */; }; 85EF884C15669BDB00DD5F41 /* previous.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F59C8F6F03C0155B01C14AF2 /* previous.tiff */; }; 85EF884D15669BDB00DD5F41 /* previous-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C2E061FC31401C0FE28 /* previous-pushed.tiff */; }; 85EF884E15669BDB00DD5F41 /* stop.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F59C8F7003C0155B01C14AF2 /* stop.tiff */; }; 85EF884F15669BDB00DD5F41 /* stop-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F7858C33061FC31401C0FE28 /* stop-pushed.tiff */; }; 85EF885015669BDB00DD5F41 /* playlist.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EA8A20D00675A80A03A8D3C1 /* playlist.tiff */; }; 85EF885115669BDB00DD5F41 /* playlist-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EA8A20CF0675A80A03A8D3C1 /* playlist-pushed.tiff */; }; 85EF885215669BDB00DD5F41 /* repeat.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EA8A20D20675A80A03A8D3C1 /* repeat.tiff */; }; 85EF885315669BDB00DD5F41 /* repeat-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EA8A20D10675A80A03A8D3C1 /* repeat-pushed.tiff */; }; 85EF885415669BDB00DD5F41 /* shuffle.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EA8A20D40675A80A03A8D3C1 /* shuffle.tiff */; }; 85EF885515669BDB00DD5F41 /* shuffle-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EA8A20D30675A80A03A8D3C1 /* shuffle-pushed.tiff */; }; 85EF885615669BDB00DD5F41 /* SongInspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = EA958513078BAB6B03566F1F /* SongInspector.nib */; }; 85EF885715669BDB00DD5F41 /* anim-logo-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991A3086E52A60334F83B /* anim-logo-1.tiff */; }; 85EF885815669BDB00DD5F41 /* anim-logo-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991A4086E52A60334F83B /* anim-logo-2.tiff */; }; 85EF885915669BDB00DD5F41 /* anim-logo-3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991A5086E52A60334F83B /* anim-logo-3.tiff */; }; 85EF885A15669BDB00DD5F41 /* anim-logo-4.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991A6086E52A60334F83B /* anim-logo-4.tiff */; }; 85EF885B15669BDB00DD5F41 /* anim-logo-5.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991A7086E52A60334F83B /* anim-logo-5.tiff */; }; 85EF885C15669BDB00DD5F41 /* anim-logo-6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991A8086E52A60334F83B /* anim-logo-6.tiff */; }; 85EF885D15669BDB00DD5F41 /* anim-logo-7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991A9086E52A60334F83B /* anim-logo-7.tiff */; }; 85EF885E15669BDB00DD5F41 /* anim-logo-8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAB991AA086E52A60334F83B /* anim-logo-8.tiff */; }; 85EF885F15669BDB00DD5F41 /* lookup-mb-off.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAFFEE89086E688A039AFE6D /* lookup-mb-off.tiff */; }; 85EF886015669BDB00DD5F41 /* lookup-mb-on.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAFFEE8A086E688A039AFE6D /* lookup-mb-on.tiff */; }; 85EF886115669BDB00DD5F41 /* song-pointer.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAFFEE8D086E688A039AFE6D /* song-pointer.tiff */; }; 85EF886215669BDB00DD5F41 /* add.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAAF6D39092BC4F303000102 /* add.tiff */; }; 85EF886315669BDB00DD5F41 /* cleanup.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAAF6D3A092BC4F303000102 /* cleanup.tiff */; }; 85EF886415669BDB00DD5F41 /* remove.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAAF6D3E092BC51E03000102 /* remove.tiff */; }; 85EF886515669BDB00DD5F41 /* save-as.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAAF6D3F092BC51E03000102 /* save-as.tiff */; }; 85EF886615669BDB00DD5F41 /* song-inspector-pushed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAAF6D43092BC51E03000102 /* song-inspector-pushed.tiff */; }; 85EF886715669BDB00DD5F41 /* song-inspector.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAAF6D44092BC51E03000102 /* song-inspector.tiff */; }; 85EF886815669BDB00DD5F41 /* lock.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EA4FAC5009A456860310F3BF /* lock.tiff */; }; 85EF886915669BDB00DD5F41 /* Cynthiune-playlist.icns in Resources */ = {isa = PBXBuildFile; fileRef = EA5AA10B09A51CA303396ECD /* Cynthiune-playlist.icns */; }; 85EF886A15669BDB00DD5F41 /* Cynthiune-song.icns in Resources */ = {isa = PBXBuildFile; fileRef = EA5AA10D09A5220203396ECD /* Cynthiune-song.icns */; }; 85EF886B15669BDB00DD5F41 /* dragged-song.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAA6DF9109A663DE034E8D88 /* dragged-song.tiff */; }; 85EF886C15669BDB00DD5F41 /* dragged-songs.tiff in Resources */ = {isa = PBXBuildFile; fileRef = EAA6DF9209A663DE034E8D88 /* dragged-songs.tiff */; }; 85EF887015669BDB00DD5F41 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 85EF887115669BDB00DD5F41 /* CynthiuneController.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8795E006F66AA403809032 /* CynthiuneController.m */; }; 85EF887215669BDB00DD5F41 /* FormatTester.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BEC061FC27301C0FE28 /* FormatTester.m */; }; 85EF887315669BDB00DD5F41 /* GeneralPreference.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BEE061FC27301C0FE28 /* GeneralPreference.m */; }; 85EF887415669BDB00DD5F41 /* InfoDisplayController.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BF0061FC27301C0FE28 /* InfoDisplayController.m */; }; 85EF887515669BDB00DD5F41 /* Player.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BF4061FC27301C0FE28 /* Player.m */; }; 85EF887615669BDB00DD5F41 /* Playlist.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BF6061FC27301C0FE28 /* Playlist.m */; }; 85EF887715669BDB00DD5F41 /* PlaylistController.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BF8061FC27301C0FE28 /* PlaylistController.m */; }; 85EF887815669BDB00DD5F41 /* PlaylistView.m in Sources */ = {isa = PBXBuildFile; fileRef = EA7EE76C063AE6B6039F4895 /* PlaylistView.m */; }; 85EF887915669BDB00DD5F41 /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BFD061FC27301C0FE28 /* PreferencesController.m */; }; 85EF887A15669BDB00DD5F41 /* Song.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858BFF061FC27301C0FE28 /* Song.m */; }; 85EF887B15669BDB00DD5F41 /* PlaylistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858C01061FC27301C0FE28 /* PlaylistViewController.m */; }; 85EF887C15669BDB00DD5F41 /* CynthiuneWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8A19180688EE2B03C0F62E /* CynthiuneWindow.m */; }; 85EF887D15669BDB00DD5F41 /* CynthiunePopUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8BBBFA0682D60703C2B047 /* CynthiunePopUpButton.m */; }; 85EF887E15669BDB00DD5F41 /* PlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = EA73D4B5074C81F203F60D55 /* PlayerController.m */; }; 85EF887F15669BDB00DD5F41 /* PlayerPreference.m in Sources */ = {isa = PBXBuildFile; fileRef = EA73D4B7074C81F203F60D55 /* PlayerPreference.m */; }; 85EF888015669BDB00DD5F41 /* SongInspectorController.m in Sources */ = {isa = PBXBuildFile; fileRef = EA958510078BA57703566F1F /* SongInspectorController.m */; }; 85EF888115669BDB00DD5F41 /* CynthiuneAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE4B086E54DA039AFE6D /* CynthiuneAnimatedImageView.m */; }; 85EF888215669BDB00DD5F41 /* CynthiuneFadingTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE4D086E54DA039AFE6D /* CynthiuneFadingTextField.m */; }; 85EF888315669BDB00DD5F41 /* CynthiunePauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE50086E54DA039AFE6D /* CynthiunePauseButton.m */; }; 85EF888415669BDB00DD5F41 /* CynthiuneSongTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE56086E54DA039AFE6D /* CynthiuneSongTitleCell.m */; }; 85EF888515669BDB00DD5F41 /* CynthiuneTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE58086E54DA039AFE6D /* CynthiuneTextCell.m */; }; 85EF888615669BDB00DD5F41 /* BundleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE82086E61A7039AFE6D /* BundleManager.m */; }; 85EF888715669BDB00DD5F41 /* MBResultsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE86086E61D7039AFE6D /* MBResultsPanel.m */; }; 85EF888815669BDB00DD5F41 /* DictionaryCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EAC9033808F2ED0603D0D62A /* DictionaryCoder.m */; }; 85EF888915669BDB00DD5F41 /* M3UArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = EAC9033C08F2ED3103D0D62A /* M3UArchiver.m */; }; 85EF888A15669BDB00DD5F41 /* PlaylistArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = EAC9034008F2ED4903D0D62A /* PlaylistArchiver.m */; }; 85EF888B15669BDB00DD5F41 /* PLSArchiver.m in Sources */ = {isa = PBXBuildFile; fileRef = EAC9034208F2ED4903D0D62A /* PLSArchiver.m */; }; 85EF888C15669BDB00DD5F41 /* CynthiuneHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EA778ACD09B5778A032657EF /* CynthiuneHeaderCell.m */; }; 85EF888E15669BDB00DD5F41 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97324FDCFA39411CA2CEA /* AppKit.framework */; }; 85EF88A615669BDC00DD5F41 /* Preference.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BFB061FC27301C0FE28 /* Preference.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88A715669BDC00DD5F41 /* Output.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8795E506F66AA403809032 /* Output.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88A815669BDC00DD5F41 /* Format.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858BEA061FC27301C0FE28 /* Format.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88A915669BDC00DD5F41 /* Tags.h in Headers */ = {isa = PBXBuildFile; fileRef = EAC9033508F2EB2003D0D62A /* Tags.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88AA15669BDC00DD5F41 /* CynthiuneBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = EA7EE734063AE6B6039F4895 /* CynthiuneBundle.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88AB15669BDC00DD5F41 /* NSNumberExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8795E306F66AA403809032 /* NSNumberExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88AC15669BDC00DD5F41 /* NSStringExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = EA547B68078A36000358AD96 /* NSStringExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88AE15669BDC00DD5F41 /* NSArrayExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE6C086E5601039AFE6D /* NSArrayExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88AF15669BDC00DD5F41 /* NSCellExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE6E086E5601039AFE6D /* NSCellExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88B015669BDC00DD5F41 /* NSColorExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE70086E5601039AFE6D /* NSColorExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88B115669BDC00DD5F41 /* NSTimerExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE72086E5601039AFE6D /* NSTimerExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88B215669BDC00DD5F41 /* NSViewExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = EAFFEE74086E5601039AFE6D /* NSViewExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88B315669BDC00DD5F41 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = F7858C1C061FC2A801C0FE28 /* utils.h */; settings = {ATTRIBUTES = (Public, ); }; }; 85EF88B615669BDC00DD5F41 /* utils.m in Sources */ = {isa = PBXBuildFile; fileRef = F7858C02061FC27301C0FE28 /* utils.m */; }; 85EF88B715669BDC00DD5F41 /* NSNumberExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8795E406F66AA403809032 /* NSNumberExtensions.m */; }; 85EF88B815669BDC00DD5F41 /* NSStringExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = EA547B69078A36000358AD96 /* NSStringExtensions.m */; }; 85EF88B915669BDC00DD5F41 /* NSArrayExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE6D086E5601039AFE6D /* NSArrayExtensions.m */; }; 85EF88BA15669BDC00DD5F41 /* NSCellExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE6F086E5601039AFE6D /* NSCellExtensions.m */; }; 85EF88BB15669BDC00DD5F41 /* NSColorExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE71086E5601039AFE6D /* NSColorExtensions.m */; }; 85EF88BC15669BDC00DD5F41 /* NSTimerExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE73086E5601039AFE6D /* NSTimerExtensions.m */; }; 85EF88BD15669BDC00DD5F41 /* NSViewExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFFEE75086E5601039AFE6D /* NSViewExtensions.m */; }; 85EF88C015669BDC00DD5F41 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97324FDCFA39411CA2CEA /* AppKit.framework */; }; 85EF88CC15669BDC00DD5F41 /* AudioFileBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8A20BF0675A4EB03A8D3C1 /* AudioFileBundle.h */; }; 85EF88CF15669BDC00DD5F41 /* AudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8A20BD0675A4D003A8D3C1 /* AudioFile.m */; }; 85EF88D115669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF88DC15669BDC00DD5F41 /* FLAC.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8F75AD06F89D9103F15592 /* FLAC.h */; }; 85EF88DF15669BDC00DD5F41 /* FLAC.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8F75AE06F89D9103F15592 /* FLAC.m */; }; 85EF88E215669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF88ED15669BDC00DD5F41 /* MP3.h in Headers */ = {isa = PBXBuildFile; fileRef = EA85A0EF0627755D0303B004 /* MP3.h */; }; 85EF88EE15669BDC00DD5F41 /* xing.h in Headers */ = {isa = PBXBuildFile; fileRef = EA7EE79F063AEA0B039F4895 /* xing.h */; }; 85EF88F115669BDC00DD5F41 /* MP3.m in Sources */ = {isa = PBXBuildFile; fileRef = EA85A0ED062775460303B004 /* MP3.m */; }; 85EF88F215669BDC00DD5F41 /* xing.c in Sources */ = {isa = PBXBuildFile; fileRef = EA7EE7A3063AEA4F039F4895 /* xing.c */; }; 85EF88F515669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF890015669BDC00DD5F41 /* Mod.h in Headers */ = {isa = PBXBuildFile; fileRef = EA9ADB0206823B7A03000102 /* Mod.h */; }; 85EF890315669BDC00DD5F41 /* Mod.m in Sources */ = {isa = PBXBuildFile; fileRef = EA9ADB0006823B6103000102 /* Mod.m */; }; 85EF890615669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF891115669BDC00DD5F41 /* Ogg.h in Headers */ = {isa = PBXBuildFile; fileRef = EA1D795906263FB803CFD9F6 /* Ogg.h */; }; 85EF891415669BDC00DD5F41 /* Ogg.m in Sources */ = {isa = PBXBuildFile; fileRef = EA1D795606263FB803CFD9F6 /* Ogg.m */; }; 85EF891715669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF892215669BDC00DD5F41 /* MacOSXPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = EA675448062726F10396FC5D /* MacOSXPlayer.h */; }; 85EF892515669BDC00DD5F41 /* MacOSXPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = EA675446062726D80396FC5D /* MacOSXPlayer.m */; }; 85EF892815669BDC00DD5F41 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F502406503B83D9A01000004 /* AudioUnit.framework */; }; 85EF892915669BDC00DD5F41 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F502404803B83C9E01000004 /* CoreAudio.framework */; }; 85EF892A15669BDC00DD5F41 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F502405C03B83D6601000004 /* AudioToolbox.framework */; }; 85EF892B15669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF892C15669BDC00DD5F41 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F531F10803BB93F301000004 /* CoreServices.framework */; }; 85EF893715669BDC00DD5F41 /* Esound.h in Headers */ = {isa = PBXBuildFile; fileRef = EA80097D0629F354036EED6D /* Esound.h */; }; 85EF893915669BDC00DD5F41 /* EsoundPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = EA2D90580629F93F03D508AF /* EsoundPreferences.nib */; }; 85EF893B15669BDC00DD5F41 /* Esound.m in Sources */ = {isa = PBXBuildFile; fileRef = EA80097B0629F33B036EED6D /* Esound.m */; }; 85EF893D15669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF893E15669BDC00DD5F41 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97324FDCFA39411CA2CEA /* AppKit.framework */; }; 85EF894915669BDC00DD5F41 /* dummy.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8D0C0306268E4303000102 /* dummy.h */; }; 85EF894C15669BDC00DD5F41 /* dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8D0C0106268E3003000102 /* dummy.m */; }; 85EF894F15669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF895815669BDC00DD5F41 /* CWMFile.h in Headers */ = {isa = PBXBuildFile; fileRef = EA9316560770FCEB03000102 /* CWMFile.h */; }; 85EF895915669BDC00DD5F41 /* WindowsMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = EA9316580770FD0903000102 /* WindowsMedia.h */; }; 85EF895C15669BDC00DD5F41 /* CWMFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EA9316530770FC6503000102 /* CWMFile.cpp */; }; 85EF895D15669BDC00DD5F41 /* WindowsMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = EA93165A0770FD3003000102 /* WindowsMedia.m */; }; 85EF896915669BDC00DD5F41 /* CNSFileHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = EA03BA5409D0F84A036B92BF /* CNSFileHandle.h */; }; 85EF896A15669BDC00DD5F41 /* Musepack.h in Headers */ = {isa = PBXBuildFile; fileRef = EA03BA5809D0F862036B92BF /* Musepack.h */; }; 85EF896D15669BDC00DD5F41 /* CNSFileHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = EA03BA5509D0F84A036B92BF /* CNSFileHandle.m */; }; 85EF896E15669BDC00DD5F41 /* Musepack.m in Sources */ = {isa = PBXBuildFile; fileRef = EA03BA5909D0F862036B92BF /* Musepack.m */; }; 85EF897115669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF897C15669BDC00DD5F41 /* ID3Tag.h in Headers */ = {isa = PBXBuildFile; fileRef = EADC4D6709476C5903B0DF6D /* ID3Tag.h */; }; 85EF897F15669BDC00DD5F41 /* ID3Tag.m in Sources */ = {isa = PBXBuildFile; fileRef = EADC4D6809476C5903B0DF6D /* ID3Tag.m */; }; 85EF898115669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF898C15669BDC00DD5F41 /* VorbisTags.h in Headers */ = {isa = PBXBuildFile; fileRef = EAA6DFA009A66D8D034E8D88 /* VorbisTags.h */; }; 85EF898F15669BDC00DD5F41 /* VorbisTags.m in Sources */ = {isa = PBXBuildFile; fileRef = EAA6DFA209A66DA3034E8D88 /* VorbisTags.m */; }; 85EF899015669BDC00DD5F41 /* vcedit.c in Sources */ = {isa = PBXBuildFile; fileRef = EAACCAF309C7ACDF03B7D5E1 /* vcedit.c */; }; 85EF899215669BDC00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF899E15669BDD00DD5F41 /* FLACTags.h in Headers */ = {isa = PBXBuildFile; fileRef = EAF9B4E109D0EEED037E42D6 /* FLACTags.h */; }; 85EF89A115669BDD00DD5F41 /* FLACTags.m in Sources */ = {isa = PBXBuildFile; fileRef = EAF9B4E209D0EEED037E42D6 /* FLACTags.m */; }; 85EF89A315669BDD00DD5F41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97325FDCFA39411CA2CEA /* Foundation.framework */; }; 85EF89BD15669BDD00DD5F41 /* MacOSXPlayer.output in CopyFiles */ = {isa = PBXBuildFile; fileRef = 85EF893415669BDC00DD5F41 /* MacOSXPlayer.output */; }; 85EF89BF15669BDD00DD5F41 /* MP3.format in CopyFiles */ = {isa = PBXBuildFile; fileRef = 85EF88FD15669BDC00DD5F41 /* MP3.format */; }; 85EF89C015669BDD00DD5F41 /* Cynthiune.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89C115669BDD00DD5F41 /* ID3Tag.tags in CopyFiles */ = {isa = PBXBuildFile; fileRef = 85EF898915669BDC00DD5F41 /* ID3Tag.tags */; }; 85EF89C315669BDD00DD5F41 /* AudioFile.format in CopyFiles */ = {isa = PBXBuildFile; fileRef = 85EF88D915669BDC00DD5F41 /* AudioFile.format */; }; 85EF89C615669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89C715669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89C815669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89C915669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89CA15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89CB15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89CC15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89CD15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89CE15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF89CF15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF8BEE1566A08700DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF8CB41566A2A700DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; 85EF8CCB1566A2C100DD5F41 /* Cynthiune.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; }; /* End PBXBuildFile section */ /* Begin PBXBundleTarget section */ 85EF894715669BDC00DD5F41 /* dummy */ = { isa = PBXBundleTarget; buildConfigurationList = 85EF895115669BDC00DD5F41 /* Build configuration list for PBXBundleTarget "dummy" */; buildPhases = ( 85EF894815669BDC00DD5F41 /* Headers */, 85EF894A15669BDC00DD5F41 /* Resources */, 85EF894B15669BDC00DD5F41 /* Sources */, 85EF894D15669BDC00DD5F41 /* Frameworks */, 85EF895015669BDC00DD5F41 /* Rez */, ); dependencies = ( ); name = dummy; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = dummy; productReference = 85EF895515669BDC00DD5F41 /* dummy.output */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable dummy CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass dummy "; }; /* End PBXBundleTarget section */ /* Begin PBXContainerItemProxy section */ 85407AF81594E4270015B7F7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 85EF897A15669BDC00DD5F41; remoteInfo = ID3Tag; }; 85D98A701594F60F00E9C5F9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 85EF890F15669BDC00DD5F41; remoteInfo = Ogg; }; 85EF89AD15669BDD00DD5F41 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 85EF88A415669BDC00DD5F41; remoteInfo = "Cynthiune framework (Upgraded)"; }; 85EF89AF15669BDD00DD5F41 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 85EF88C815669BDC00DD5F41; remoteInfo = "AudioFile (Upgraded)"; }; 85EF89B115669BDD00DD5F41 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 85EF88EB15669BDC00DD5F41; remoteInfo = "MP3 (Upgraded)"; }; 85EF89B515669BDD00DD5F41 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 85EF892015669BDC00DD5F41; remoteInfo = "MacOSXPlayer (Upgraded)"; }; 85EF8B0215669EB800DD5F41 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 85EF88A415669BDC00DD5F41; remoteInfo = "Cynthiune framework"; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ 85EF889015669BDB00DD5F41 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( 85EF89C015669BDD00DD5F41 /* Cynthiune.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF889215669BDB00DD5F41 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = ( 85EF89C315669BDD00DD5F41 /* AudioFile.format in CopyFiles */, 85EF89BF15669BDD00DD5F41 /* MP3.format in CopyFiles */, 85EF89BD15669BDD00DD5F41 /* MacOSXPlayer.output in CopyFiles */, 85EF89C115669BDD00DD5F41 /* ID3Tag.tags in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 85EF88A115669BDC00DD5F41 /* Info-Cynthiune.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Cynthiune.plist"; sourceTree = ""; }; 85EF88A215669BDC00DD5F41 /* Cynthiune.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cynthiune.app; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF88C615669BDC00DD5F41 /* Info-Cynthiune_framework.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Cynthiune_framework.plist"; sourceTree = ""; }; 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Cynthiune.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF88D815669BDC00DD5F41 /* Info-AudioFile.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-AudioFile.plist"; sourceTree = ""; }; 85EF88D915669BDC00DD5F41 /* AudioFile.format */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AudioFile.format; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF88E915669BDC00DD5F41 /* Info-FLAC.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-FLAC.plist"; sourceTree = ""; }; 85EF88EA15669BDC00DD5F41 /* FLAC.format */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FLAC.format; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF88FC15669BDC00DD5F41 /* Info-MP3.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-MP3.plist"; sourceTree = ""; }; 85EF88FD15669BDC00DD5F41 /* MP3.format */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MP3.format; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF890D15669BDC00DD5F41 /* Info-Mod.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Mod.plist"; sourceTree = ""; }; 85EF890E15669BDC00DD5F41 /* Mod.format */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Mod.format; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF891E15669BDC00DD5F41 /* Info-Ogg.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Ogg.plist"; sourceTree = ""; }; 85EF891F15669BDC00DD5F41 /* Ogg.format */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Ogg.format; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF893315669BDC00DD5F41 /* Info-MacOSXPlayer.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-MacOSXPlayer.plist"; sourceTree = ""; }; 85EF893415669BDC00DD5F41 /* MacOSXPlayer.output */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MacOSXPlayer.output; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF894515669BDC00DD5F41 /* Info-Esound.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Esound.plist"; sourceTree = ""; }; 85EF894615669BDC00DD5F41 /* Esound.output */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Esound.output; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF895515669BDC00DD5F41 /* dummy.output */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = dummy.output; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF896515669BDC00DD5F41 /* Info-WindowsMedia.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-WindowsMedia.plist"; sourceTree = ""; }; 85EF896615669BDC00DD5F41 /* WindowsMedia.format */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WindowsMedia.format; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF897815669BDC00DD5F41 /* Info-Musepack.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-Musepack.plist"; sourceTree = ""; }; 85EF897915669BDC00DD5F41 /* Musepack.format */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Musepack.format; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF898815669BDC00DD5F41 /* Info-ID3Tag.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-ID3Tag.plist"; sourceTree = ""; }; 85EF898915669BDC00DD5F41 /* ID3Tag.tags */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ID3Tag.tags; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF899A15669BDC00DD5F41 /* Info-VorbisTags.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-VorbisTags.plist"; sourceTree = ""; }; 85EF899B15669BDD00DD5F41 /* VorbisTags.tags */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VorbisTags.tags; sourceTree = BUILT_PRODUCTS_DIR; }; 85EF89AB15669BDD00DD5F41 /* Info-FLACTags.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-FLACTags.plist"; sourceTree = ""; }; 85EF89AC15669BDD00DD5F41 /* FLACTags.tags */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FLACTags.tags; sourceTree = BUILT_PRODUCTS_DIR; }; EA03BA5409D0F84A036B92BF /* CNSFileHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CNSFileHandle.h; path = Bundles/Musepack/CNSFileHandle.h; sourceTree = ""; }; EA03BA5509D0F84A036B92BF /* CNSFileHandle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CNSFileHandle.m; path = Bundles/Musepack/CNSFileHandle.m; sourceTree = ""; }; EA03BA5809D0F862036B92BF /* Musepack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Musepack.h; path = Bundles/Musepack/Musepack.h; sourceTree = ""; }; EA03BA5909D0F862036B92BF /* Musepack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Musepack.m; path = Bundles/Musepack/Musepack.m; sourceTree = ""; }; EA1D795606263FB803CFD9F6 /* Ogg.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Ogg.m; sourceTree = ""; }; EA1D795906263FB803CFD9F6 /* Ogg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Ogg.h; sourceTree = ""; }; EA2D90580629F93F03D508AF /* EsoundPreferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = EsoundPreferences.nib; path = Bundles/Esound/EsoundPreferences.nib; sourceTree = ""; }; EA4FAC5009A456860310F3BF /* lock.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = lock.tiff; path = Images/lock.tiff; sourceTree = ""; }; EA547B68078A36000358AD96 /* NSStringExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSStringExtensions.h; path = Frameworks/Cynthiune/NSStringExtensions.h; sourceTree = ""; }; EA547B69078A36000358AD96 /* NSStringExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSStringExtensions.m; path = Frameworks/Cynthiune/NSStringExtensions.m; sourceTree = ""; }; EA5AA10B09A51CA303396ECD /* Cynthiune-playlist.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Cynthiune-playlist.icns"; path = "Images/Cynthiune-playlist.icns"; sourceTree = ""; }; EA5AA10D09A5220203396ECD /* Cynthiune-song.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "Cynthiune-song.icns"; path = "Images/Cynthiune-song.icns"; sourceTree = ""; }; EA675446062726D80396FC5D /* MacOSXPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MacOSXPlayer.m; path = Bundles/MacOSX/MacOSXPlayer.m; sourceTree = ""; }; EA675448062726F10396FC5D /* MacOSXPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MacOSXPlayer.h; path = Bundles/MacOSX/MacOSXPlayer.h; sourceTree = ""; }; EA73D4B4074C81F203F60D55 /* PlayerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayerController.h; sourceTree = ""; }; EA73D4B5074C81F203F60D55 /* PlayerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlayerController.m; sourceTree = ""; }; EA73D4B6074C81F203F60D55 /* PlayerPreference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayerPreference.h; sourceTree = ""; }; EA73D4B7074C81F203F60D55 /* PlayerPreference.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlayerPreference.m; sourceTree = ""; }; EA778ACC09B5778A032657EF /* CynthiuneHeaderCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiuneHeaderCell.h; sourceTree = ""; }; EA778ACD09B5778A032657EF /* CynthiuneHeaderCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiuneHeaderCell.m; sourceTree = ""; }; EA7EE734063AE6B6039F4895 /* CynthiuneBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CynthiuneBundle.h; path = Frameworks/Cynthiune/CynthiuneBundle.h; sourceTree = ""; }; EA7EE76B063AE6B6039F4895 /* PlaylistView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistView.h; sourceTree = ""; }; EA7EE76C063AE6B6039F4895 /* PlaylistView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlaylistView.m; sourceTree = ""; }; EA7EE79F063AEA0B039F4895 /* xing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xing.h; path = Bundles/MP3/xing.h; sourceTree = ""; }; EA7EE7A3063AEA4F039F4895 /* xing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = xing.c; path = Bundles/MP3/xing.c; sourceTree = ""; }; EA7EE7DC063B0267039F4895 /* French */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/InfoPlist.strings; sourceTree = ""; }; EA7EE7DE063B035E039F4895 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; EA7EE7E0063B036F039F4895 /* French */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/Localizable.strings; sourceTree = ""; }; EA7EE7E1063B04D0039F4895 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; EA7EE7E2063B04D0039F4895 /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = ""; }; EA80097B0629F33B036EED6D /* Esound.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Esound.m; path = Bundles/Esound/Esound.m; sourceTree = ""; }; EA80097D0629F354036EED6D /* Esound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Esound.h; path = Bundles/Esound/Esound.h; sourceTree = ""; }; EA85A0ED062775460303B004 /* MP3.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MP3.m; path = Bundles/MP3/MP3.m; sourceTree = ""; }; EA85A0EF0627755D0303B004 /* MP3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MP3.h; path = Bundles/MP3/MP3.h; sourceTree = ""; }; EA8795DF06F66AA403809032 /* CynthiuneController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiuneController.h; sourceTree = ""; }; EA8795E006F66AA403809032 /* CynthiuneController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiuneController.m; sourceTree = ""; }; EA8795E306F66AA403809032 /* NSNumberExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSNumberExtensions.h; path = Frameworks/Cynthiune/NSNumberExtensions.h; sourceTree = ""; }; EA8795E406F66AA403809032 /* NSNumberExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSNumberExtensions.m; path = Frameworks/Cynthiune/NSNumberExtensions.m; sourceTree = ""; }; EA8795E506F66AA403809032 /* Output.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Output.h; path = Frameworks/Cynthiune/Output.h; sourceTree = ""; }; EA88F6F10682227603ABED23 /* Italian */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Italian; path = Italian.lproj/Localizable.strings; sourceTree = ""; }; EA88F6F2068222A103ABED23 /* Italian */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Italian; path = Italian.lproj/InfoPlist.strings; sourceTree = ""; }; EA8A19170688EE2B03C0F62E /* CynthiuneWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiuneWindow.h; sourceTree = ""; }; EA8A19180688EE2B03C0F62E /* CynthiuneWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiuneWindow.m; sourceTree = ""; }; EA8A20BD0675A4D003A8D3C1 /* AudioFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AudioFile.m; path = Bundles/AudioFile/AudioFile.m; sourceTree = ""; }; EA8A20BF0675A4EB03A8D3C1 /* AudioFileBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioFileBundle.h; path = Bundles/AudioFile/AudioFileBundle.h; sourceTree = ""; }; EA8A20CF0675A80A03A8D3C1 /* playlist-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "playlist-pushed.tiff"; path = "Images/playlist-pushed.tiff"; sourceTree = ""; }; EA8A20D00675A80A03A8D3C1 /* playlist.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = playlist.tiff; path = Images/playlist.tiff; sourceTree = ""; }; EA8A20D10675A80A03A8D3C1 /* repeat-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "repeat-pushed.tiff"; path = "Images/repeat-pushed.tiff"; sourceTree = ""; }; EA8A20D20675A80A03A8D3C1 /* repeat.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = repeat.tiff; path = Images/repeat.tiff; sourceTree = ""; }; EA8A20D30675A80A03A8D3C1 /* shuffle-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "shuffle-pushed.tiff"; path = "Images/shuffle-pushed.tiff"; sourceTree = ""; }; EA8A20D40675A80A03A8D3C1 /* shuffle.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = shuffle.tiff; path = Images/shuffle.tiff; sourceTree = ""; }; EA8BBBF90682D60703C2B047 /* CynthiunePopUpButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiunePopUpButton.h; sourceTree = ""; }; EA8BBBFA0682D60703C2B047 /* CynthiunePopUpButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiunePopUpButton.m; sourceTree = ""; }; EA8D0C0106268E3003000102 /* dummy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file; name = dummy.m; path = Bundles/dummy/dummy.m; sourceTree = ""; }; EA8D0C0306268E4303000102 /* dummy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file; name = dummy.h; path = Bundles/dummy/dummy.h; sourceTree = ""; }; EA8E355D09476698032DC65E /* Slovak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Slovak; path = Slovak.lproj/InfoPlist.strings; sourceTree = ""; }; EA8E355E094766BD032DC65E /* TraditionalChinese */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = TraditionalChinese; path = TraditionalChinese.lproj/InfoPlist.strings; sourceTree = ""; }; EA8E3562094766F7032DC65E /* Hungarian */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Hungarian; path = Hungarian.lproj/InfoPlist.strings; sourceTree = ""; }; EA8E35630947670D032DC65E /* Spanish */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Spanish; path = Spanish.lproj/InfoPlist.strings; sourceTree = ""; }; EA8E356409476757032DC65E /* Hungarian */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Hungarian; path = Hungarian.lproj/Localizable.strings; sourceTree = ""; }; EA8E35650947676F032DC65E /* Slovak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Slovak; path = Slovak.lproj/Localizable.strings; sourceTree = ""; }; EA8E356909476796032DC65E /* TraditionalChinese */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = TraditionalChinese; path = TraditionalChinese.lproj/Localizable.strings; sourceTree = ""; }; EA8E356A09476934032DC65E /* Spanish */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Spanish; path = Spanish.lproj/Localizable.strings; sourceTree = ""; }; EA8F75AD06F89D9103F15592 /* FLAC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FLAC.h; path = Bundles/FLAC/FLAC.h; sourceTree = ""; }; EA8F75AE06F89D9103F15592 /* FLAC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FLAC.m; path = Bundles/FLAC/FLAC.m; sourceTree = ""; }; EA9316530770FC6503000102 /* CWMFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CWMFile.cpp; path = Bundles/WindowsMedia/CWMFile.cpp; sourceTree = ""; }; EA9316560770FCEB03000102 /* CWMFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CWMFile.h; path = Bundles/WindowsMedia/CWMFile.h; sourceTree = ""; }; EA9316580770FD0903000102 /* WindowsMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WindowsMedia.h; path = Bundles/WindowsMedia/WindowsMedia.h; sourceTree = ""; }; EA93165A0770FD3003000102 /* WindowsMedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WindowsMedia.m; path = Bundles/WindowsMedia/WindowsMedia.m; sourceTree = ""; }; EA95850F078BA57703566F1F /* SongInspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SongInspectorController.h; sourceTree = ""; }; EA958510078BA57703566F1F /* SongInspectorController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SongInspectorController.m; sourceTree = ""; }; EA958513078BAB6B03566F1F /* SongInspector.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = SongInspector.nib; sourceTree = ""; }; EA9ADB0006823B6103000102 /* Mod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Mod.m; path = Bundles/Mod/Mod.m; sourceTree = ""; }; EA9ADB0206823B7A03000102 /* Mod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mod.h; path = Bundles/Mod/Mod.h; sourceTree = ""; }; EA9EE052078207F20394BCE8 /* Cynthiune.framework */ = {isa = PBXFileReference; lastKnownFileType = file; name = Cynthiune.framework; path = build/Cynthiune.framework; sourceTree = ""; }; EAA6DF9109A663DE034E8D88 /* dragged-song.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "dragged-song.tiff"; path = "Images/dragged-song.tiff"; sourceTree = ""; }; EAA6DF9209A663DE034E8D88 /* dragged-songs.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "dragged-songs.tiff"; path = "Images/dragged-songs.tiff"; sourceTree = ""; }; EAA6DFA009A66D8D034E8D88 /* VorbisTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VorbisTags.h; path = Bundles/VorbisTags/VorbisTags.h; sourceTree = ""; }; EAA6DFA209A66DA3034E8D88 /* VorbisTags.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VorbisTags.m; path = Bundles/VorbisTags/VorbisTags.m; sourceTree = ""; }; EAACCAF309C7ACDF03B7D5E1 /* vcedit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = vcedit.c; path = Bundles/VorbisTags/vcedit.c; sourceTree = ""; }; EAAF6D39092BC4F303000102 /* add.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = add.tiff; path = Images/add.tiff; sourceTree = ""; }; EAAF6D3A092BC4F303000102 /* cleanup.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = cleanup.tiff; path = Images/cleanup.tiff; sourceTree = ""; }; EAAF6D3E092BC51E03000102 /* remove.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = remove.tiff; path = Images/remove.tiff; sourceTree = ""; }; EAAF6D3F092BC51E03000102 /* save-as.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "save-as.tiff"; path = "Images/save-as.tiff"; sourceTree = ""; }; EAAF6D41092BC51E03000102 /* slider-knob-disabled.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "slider-knob-disabled.tiff"; path = "Images/slider-knob-disabled.tiff"; sourceTree = ""; }; EAAF6D42092BC51E03000102 /* slider-knob-enabled.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "slider-knob-enabled.tiff"; path = "Images/slider-knob-enabled.tiff"; sourceTree = ""; }; EAAF6D43092BC51E03000102 /* song-inspector-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "song-inspector-pushed.tiff"; path = "Images/song-inspector-pushed.tiff"; sourceTree = ""; }; EAAF6D44092BC51E03000102 /* song-inspector.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "song-inspector.tiff"; path = "Images/song-inspector.tiff"; sourceTree = ""; }; EAAF6D4D092BC55703000102 /* CynthiuneAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiuneAnimatedImageView.h; sourceTree = ""; }; EAB991A1086E52690334F83B /* German */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/InfoPlist.strings; sourceTree = ""; }; EAB991A2086E52690334F83B /* German */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/Localizable.strings; sourceTree = ""; }; EAB991A3086E52A60334F83B /* anim-logo-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-1.tiff"; path = "Images/anim-logo-1.tiff"; sourceTree = ""; }; EAB991A4086E52A60334F83B /* anim-logo-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-2.tiff"; path = "Images/anim-logo-2.tiff"; sourceTree = ""; }; EAB991A5086E52A60334F83B /* anim-logo-3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-3.tiff"; path = "Images/anim-logo-3.tiff"; sourceTree = ""; }; EAB991A6086E52A60334F83B /* anim-logo-4.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-4.tiff"; path = "Images/anim-logo-4.tiff"; sourceTree = ""; }; EAB991A7086E52A60334F83B /* anim-logo-5.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-5.tiff"; path = "Images/anim-logo-5.tiff"; sourceTree = ""; }; EAB991A8086E52A60334F83B /* anim-logo-6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-6.tiff"; path = "Images/anim-logo-6.tiff"; sourceTree = ""; }; EAB991A9086E52A60334F83B /* anim-logo-7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-7.tiff"; path = "Images/anim-logo-7.tiff"; sourceTree = ""; }; EAB991AA086E52A60334F83B /* anim-logo-8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-8.tiff"; path = "Images/anim-logo-8.tiff"; sourceTree = ""; }; EAC9033508F2EB2003D0D62A /* Tags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Tags.h; path = Frameworks/Cynthiune/Tags.h; sourceTree = ""; }; EAC9033708F2ED0603D0D62A /* DictionaryCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DictionaryCoder.h; sourceTree = ""; }; EAC9033808F2ED0603D0D62A /* DictionaryCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DictionaryCoder.m; sourceTree = ""; }; EAC9033B08F2ED3103D0D62A /* M3UArchiver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = M3UArchiver.h; sourceTree = ""; }; EAC9033C08F2ED3103D0D62A /* M3UArchiver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = M3UArchiver.m; sourceTree = ""; }; EAC9033F08F2ED4903D0D62A /* PlaylistArchiver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistArchiver.h; sourceTree = ""; }; EAC9034008F2ED4903D0D62A /* PlaylistArchiver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlaylistArchiver.m; sourceTree = ""; }; EAC9034108F2ED4903D0D62A /* PLSArchiver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLSArchiver.h; sourceTree = ""; }; EAC9034208F2ED4903D0D62A /* PLSArchiver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLSArchiver.m; sourceTree = ""; }; EADC4D6709476C5903B0DF6D /* ID3Tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ID3Tag.h; path = Bundles/ID3Tag/ID3Tag.h; sourceTree = ""; }; EADC4D6809476C5903B0DF6D /* ID3Tag.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ID3Tag.m; path = Bundles/ID3Tag/ID3Tag.m; sourceTree = ""; }; EAF9B4E109D0EEED037E42D6 /* FLACTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FLACTags.h; path = Bundles/FLACTags/FLACTags.h; sourceTree = ""; }; EAF9B4E209D0EEED037E42D6 /* FLACTags.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FLACTags.m; path = Bundles/FLACTags/FLACTags.m; sourceTree = ""; }; EAFFEE4B086E54DA039AFE6D /* CynthiuneAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiuneAnimatedImageView.m; sourceTree = ""; }; EAFFEE4C086E54DA039AFE6D /* CynthiuneFadingTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiuneFadingTextField.h; sourceTree = ""; }; EAFFEE4D086E54DA039AFE6D /* CynthiuneFadingTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiuneFadingTextField.m; sourceTree = ""; }; EAFFEE4F086E54DA039AFE6D /* CynthiunePauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiunePauseButton.h; sourceTree = ""; }; EAFFEE50086E54DA039AFE6D /* CynthiunePauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiunePauseButton.m; sourceTree = ""; }; EAFFEE55086E54DA039AFE6D /* CynthiuneSongTitleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiuneSongTitleCell.h; sourceTree = ""; }; EAFFEE56086E54DA039AFE6D /* CynthiuneSongTitleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiuneSongTitleCell.m; sourceTree = ""; }; EAFFEE57086E54DA039AFE6D /* CynthiuneTextCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CynthiuneTextCell.h; sourceTree = ""; }; EAFFEE58086E54DA039AFE6D /* CynthiuneTextCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CynthiuneTextCell.m; sourceTree = ""; }; EAFFEE6C086E5601039AFE6D /* NSArrayExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSArrayExtensions.h; path = Frameworks/Cynthiune/NSArrayExtensions.h; sourceTree = ""; }; EAFFEE6D086E5601039AFE6D /* NSArrayExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSArrayExtensions.m; path = Frameworks/Cynthiune/NSArrayExtensions.m; sourceTree = ""; }; EAFFEE6E086E5601039AFE6D /* NSCellExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSCellExtensions.h; path = Frameworks/Cynthiune/NSCellExtensions.h; sourceTree = ""; }; EAFFEE6F086E5601039AFE6D /* NSCellExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSCellExtensions.m; path = Frameworks/Cynthiune/NSCellExtensions.m; sourceTree = ""; }; EAFFEE70086E5601039AFE6D /* NSColorExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSColorExtensions.h; path = Frameworks/Cynthiune/NSColorExtensions.h; sourceTree = ""; }; EAFFEE71086E5601039AFE6D /* NSColorExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSColorExtensions.m; path = Frameworks/Cynthiune/NSColorExtensions.m; sourceTree = ""; }; EAFFEE72086E5601039AFE6D /* NSTimerExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSTimerExtensions.h; path = Frameworks/Cynthiune/NSTimerExtensions.h; sourceTree = ""; }; EAFFEE73086E5601039AFE6D /* NSTimerExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSTimerExtensions.m; path = Frameworks/Cynthiune/NSTimerExtensions.m; sourceTree = ""; }; EAFFEE74086E5601039AFE6D /* NSViewExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSViewExtensions.h; path = Frameworks/Cynthiune/NSViewExtensions.h; sourceTree = ""; }; EAFFEE75086E5601039AFE6D /* NSViewExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSViewExtensions.m; path = Frameworks/Cynthiune/NSViewExtensions.m; sourceTree = ""; }; EAFFEE81086E61A7039AFE6D /* BundleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BundleManager.h; sourceTree = ""; }; EAFFEE82086E61A7039AFE6D /* BundleManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BundleManager.m; sourceTree = ""; }; EAFFEE85086E61D7039AFE6D /* MBResultsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBResultsPanel.h; sourceTree = ""; }; EAFFEE86086E61D7039AFE6D /* MBResultsPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBResultsPanel.m; sourceTree = ""; }; EAFFEE89086E688A039AFE6D /* lookup-mb-off.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "lookup-mb-off.tiff"; path = "Images/lookup-mb-off.tiff"; sourceTree = ""; }; EAFFEE8A086E688A039AFE6D /* lookup-mb-on.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "lookup-mb-on.tiff"; path = "Images/lookup-mb-on.tiff"; sourceTree = ""; }; EAFFEE8D086E688A039AFE6D /* song-pointer.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "song-pointer.tiff"; path = "Images/song-pointer.tiff"; sourceTree = ""; }; F502404803B83C9E01000004 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; F502405C03B83D6601000004 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; F502406503B83D9A01000004 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; F51A012C03BA9CE401000004 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; F51A012D03BA9CE401000004 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; F531F10803BB93F301000004 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; F559092103B834CA01000004 /* Cynthiune.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = Cynthiune.nib; sourceTree = ""; }; F59C8F6B03C0155B01C14AF2 /* Cynthiune.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Cynthiune.icns; path = Images/Cynthiune.icns; sourceTree = ""; }; F59C8F6C03C0155B01C14AF2 /* next.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = next.tiff; path = Images/next.tiff; sourceTree = ""; }; F59C8F6D03C0155B01C14AF2 /* pause.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = pause.tiff; path = Images/pause.tiff; sourceTree = ""; }; F59C8F6E03C0155B01C14AF2 /* play.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = play.tiff; path = Images/play.tiff; sourceTree = ""; }; F59C8F6F03C0155B01C14AF2 /* previous.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = previous.tiff; path = Images/previous.tiff; sourceTree = ""; }; F59C8F7003C0155B01C14AF2 /* stop.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = stop.tiff; path = Images/stop.tiff; sourceTree = ""; }; F59C8F7903C01A7601C14AF2 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; F7858BEA061FC27301C0FE28 /* Format.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Format.h; path = Frameworks/Cynthiune/Format.h; sourceTree = ""; }; F7858BEB061FC27301C0FE28 /* FormatTester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormatTester.h; sourceTree = ""; }; F7858BEC061FC27301C0FE28 /* FormatTester.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FormatTester.m; sourceTree = ""; }; F7858BED061FC27301C0FE28 /* GeneralPreference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneralPreference.h; sourceTree = ""; }; F7858BEE061FC27301C0FE28 /* GeneralPreference.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneralPreference.m; sourceTree = ""; }; F7858BEF061FC27301C0FE28 /* InfoDisplayController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InfoDisplayController.h; sourceTree = ""; }; F7858BF0061FC27301C0FE28 /* InfoDisplayController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InfoDisplayController.m; sourceTree = ""; }; F7858BF3061FC27301C0FE28 /* Player.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Player.h; sourceTree = ""; }; F7858BF4061FC27301C0FE28 /* Player.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Player.m; sourceTree = ""; }; F7858BF5061FC27301C0FE28 /* Playlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Playlist.h; sourceTree = ""; }; F7858BF6061FC27301C0FE28 /* Playlist.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Playlist.m; sourceTree = ""; }; F7858BF7061FC27301C0FE28 /* PlaylistController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistController.h; sourceTree = ""; }; F7858BF8061FC27301C0FE28 /* PlaylistController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlaylistController.m; sourceTree = ""; }; F7858BFB061FC27301C0FE28 /* Preference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Preference.h; path = Frameworks/Cynthiune/Preference.h; sourceTree = ""; }; F7858BFC061FC27301C0FE28 /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; sourceTree = ""; }; F7858BFD061FC27301C0FE28 /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; sourceTree = ""; }; F7858BFE061FC27301C0FE28 /* Song.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Song.h; sourceTree = ""; }; F7858BFF061FC27301C0FE28 /* Song.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Song.m; sourceTree = ""; }; F7858C00061FC27301C0FE28 /* PlaylistViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistViewController.h; sourceTree = ""; }; F7858C01061FC27301C0FE28 /* PlaylistViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlaylistViewController.m; sourceTree = ""; }; F7858C02061FC27301C0FE28 /* utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = utils.m; path = Frameworks/Cynthiune/utils.m; sourceTree = ""; }; F7858C1C061FC2A801C0FE28 /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = utils.h; path = Frameworks/Cynthiune/utils.h; sourceTree = ""; }; F7858C1F061FC31401C0FE28 /* cynthiune-splash-faded.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "cynthiune-splash-faded.tiff"; path = "Images/cynthiune-splash-faded.tiff"; sourceTree = ""; }; F7858C21061FC31401C0FE28 /* cynthiune-splash.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "cynthiune-splash.tiff"; path = "Images/cynthiune-splash.tiff"; sourceTree = ""; }; F7858C22061FC31401C0FE28 /* Cynthiune.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Cynthiune.tiff; path = Images/Cynthiune.tiff; sourceTree = ""; }; F7858C23061FC31401C0FE28 /* eject-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "eject-pushed.tiff"; path = "Images/eject-pushed.tiff"; sourceTree = ""; }; F7858C24061FC31401C0FE28 /* eject.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = eject.tiff; path = Images/eject.tiff; sourceTree = ""; }; F7858C28061FC31401C0FE28 /* next-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "next-pushed.tiff"; path = "Images/next-pushed.tiff"; sourceTree = ""; }; F7858C2A061FC31401C0FE28 /* pause-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "pause-pushed.tiff"; path = "Images/pause-pushed.tiff"; sourceTree = ""; }; F7858C2B061FC31401C0FE28 /* play-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "play-pushed.tiff"; path = "Images/play-pushed.tiff"; sourceTree = ""; }; F7858C2E061FC31401C0FE28 /* previous-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "previous-pushed.tiff"; path = "Images/previous-pushed.tiff"; sourceTree = ""; }; F7858C33061FC31401C0FE28 /* stop-pushed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "stop-pushed.tiff"; path = "Images/stop-pushed.tiff"; sourceTree = ""; }; F7BED96F0621E9B5010E156D /* Preferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = Preferences.nib; sourceTree = ""; }; F7BED9710621E9CF010E156D /* GeneralPreference.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = GeneralPreference.nib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 85EF888D15669BDB00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85A623271567FC1B00C86122 /* Cynthiune.framework in Frameworks */, 85EF888E15669BDB00DD5F41 /* AppKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88BF15669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF88C015669BDC00DD5F41 /* AppKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88D015669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF8BEE1566A08700DD5F41 /* Cynthiune.framework in Frameworks */, 85EF88D115669BDC00DD5F41 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88E015669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF89C615669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, 85EF88E215669BDC00DD5F41 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88F315669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF89C715669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, 85EF88F515669BDC00DD5F41 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF890415669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF89C815669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, 85EF890615669BDC00DD5F41 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF891515669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF89C915669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, 85EF891715669BDC00DD5F41 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF892615669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF89CA15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, 85EF892815669BDC00DD5F41 /* AudioUnit.framework in Frameworks */, 85EF892915669BDC00DD5F41 /* CoreAudio.framework in Frameworks */, 85EF892A15669BDC00DD5F41 /* AudioToolbox.framework in Frameworks */, 85EF892B15669BDC00DD5F41 /* Foundation.framework in Frameworks */, 85EF892C15669BDC00DD5F41 /* CoreServices.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF893C15669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF893D15669BDC00DD5F41 /* Foundation.framework in Frameworks */, 85EF893E15669BDC00DD5F41 /* AppKit.framework in Frameworks */, 85EF89CB15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF894D15669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF89CC15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, 85EF894F15669BDC00DD5F41 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF895E15669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF8CB41566A2A700DD5F41 /* Cynthiune.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF896F15669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF897115669BDC00DD5F41 /* Foundation.framework in Frameworks */, 85EF89CD15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF898015669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF8CCB1566A2C100DD5F41 /* Cynthiune.framework in Frameworks */, 85EF898115669BDC00DD5F41 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF899115669BDC00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF899215669BDC00DD5F41 /* Foundation.framework in Frameworks */, 85EF89CE15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF89A215669BDD00DD5F41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 85EF89A315669BDD00DD5F41 /* Foundation.framework in Frameworks */, 85EF89CF15669BDD00DD5F41 /* Cynthiune.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( EAFFEE82086E61A7039AFE6D /* BundleManager.m */, EAFFEE4B086E54DA039AFE6D /* CynthiuneAnimatedImageView.m */, EA8795E006F66AA403809032 /* CynthiuneController.m */, EAFFEE4D086E54DA039AFE6D /* CynthiuneFadingTextField.m */, EA778ACD09B5778A032657EF /* CynthiuneHeaderCell.m */, EAFFEE50086E54DA039AFE6D /* CynthiunePauseButton.m */, EAFFEE56086E54DA039AFE6D /* CynthiuneSongTitleCell.m */, EAFFEE58086E54DA039AFE6D /* CynthiuneTextCell.m */, EA8BBBFA0682D60703C2B047 /* CynthiunePopUpButton.m */, EA8A19180688EE2B03C0F62E /* CynthiuneWindow.m */, EAC9033808F2ED0603D0D62A /* DictionaryCoder.m */, F7858BEC061FC27301C0FE28 /* FormatTester.m */, F7858BEE061FC27301C0FE28 /* GeneralPreference.m */, F7858BF0061FC27301C0FE28 /* InfoDisplayController.m */, EAC9033C08F2ED3103D0D62A /* M3UArchiver.m */, EAFFEE86086E61D7039AFE6D /* MBResultsPanel.m */, F7858BF4061FC27301C0FE28 /* Player.m */, EA73D4B5074C81F203F60D55 /* PlayerController.m */, EA73D4B7074C81F203F60D55 /* PlayerPreference.m */, F7858BF6061FC27301C0FE28 /* Playlist.m */, EAC9034008F2ED4903D0D62A /* PlaylistArchiver.m */, F7858BF8061FC27301C0FE28 /* PlaylistController.m */, EA7EE76C063AE6B6039F4895 /* PlaylistView.m */, EAC9034208F2ED4903D0D62A /* PLSArchiver.m */, F7858BFD061FC27301C0FE28 /* PreferencesController.m */, F7858BFF061FC27301C0FE28 /* Song.m */, EA958510078BA57703566F1F /* SongInspectorController.m */, F7858C01061FC27301C0FE28 /* PlaylistViewController.m */, ); name = Classes; sourceTree = ""; }; 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( F502405C03B83D6601000004 /* AudioToolbox.framework */, F502406503B83D9A01000004 /* AudioUnit.framework */, F502404803B83C9E01000004 /* CoreAudio.framework */, F531F10803BB93F301000004 /* CoreServices.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, 29B97324FDCFA39411CA2CEA /* AppKit.framework */, EA9EE052078207F20394BCE8 /* Cynthiune.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 85EF88A215669BDC00DD5F41 /* Cynthiune.app */, 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */, 85EF88D915669BDC00DD5F41 /* AudioFile.format */, 85EF88EA15669BDC00DD5F41 /* FLAC.format */, 85EF88FD15669BDC00DD5F41 /* MP3.format */, 85EF890E15669BDC00DD5F41 /* Mod.format */, 85EF891F15669BDC00DD5F41 /* Ogg.format */, 85EF893415669BDC00DD5F41 /* MacOSXPlayer.output */, 85EF894615669BDC00DD5F41 /* Esound.output */, 85EF895515669BDC00DD5F41 /* dummy.output */, 85EF896615669BDC00DD5F41 /* WindowsMedia.format */, 85EF897915669BDC00DD5F41 /* Musepack.format */, 85EF898915669BDC00DD5F41 /* ID3Tag.tags */, 85EF899B15669BDD00DD5F41 /* VorbisTags.tags */, 85EF89AC15669BDD00DD5F41 /* FLACTags.tags */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* Cynthiune */ = { isa = PBXGroup; children = ( 080E96DDFE201D6D7F000001 /* Classes */, F559092303B834D301000004 /* Headers */, EA1D796D0626400703CFD9F6 /* Bundles */, F51A012B03BA9CCB01000004 /* Documentation */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, 85EF88A115669BDC00DD5F41 /* Info-Cynthiune.plist */, 85EF88C615669BDC00DD5F41 /* Info-Cynthiune_framework.plist */, 85EF88D815669BDC00DD5F41 /* Info-AudioFile.plist */, 85EF88E915669BDC00DD5F41 /* Info-FLAC.plist */, 85EF88FC15669BDC00DD5F41 /* Info-MP3.plist */, 85EF890D15669BDC00DD5F41 /* Info-Mod.plist */, 85EF891E15669BDC00DD5F41 /* Info-Ogg.plist */, 85EF893315669BDC00DD5F41 /* Info-MacOSXPlayer.plist */, 85EF894515669BDC00DD5F41 /* Info-Esound.plist */, 85EF896515669BDC00DD5F41 /* Info-WindowsMedia.plist */, 85EF897815669BDC00DD5F41 /* Info-Musepack.plist */, 85EF898815669BDC00DD5F41 /* Info-ID3Tag.plist */, 85EF899A15669BDC00DD5F41 /* Info-VorbisTags.plist */, 85EF89AB15669BDD00DD5F41 /* Info-FLACTags.plist */, ); name = Cynthiune; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( 29B97316FDCFA39411CA2CEA /* main.m */, ); name = "Other Sources"; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( F59C8F6803C0152501C14AF2 /* Images */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, EA7EE7DD063B035E039F4895 /* Localizable.strings */, F559092103B834CA01000004 /* Cynthiune.nib */, F7BED96F0621E9B5010E156D /* Preferences.nib */, F7BED9710621E9CF010E156D /* GeneralPreference.nib */, EA958513078BAB6B03566F1F /* SongInspector.nib */, ); name = Resources; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( EAFFEE69086E5596039AFE6D /* Cynthiune */, 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, ); name = Frameworks; sourceTree = ""; }; EA03BA5209D0F801036B92BF /* Classes */ = { isa = PBXGroup; children = ( EA03BA5509D0F84A036B92BF /* CNSFileHandle.m */, EA03BA5909D0F862036B92BF /* Musepack.m */, ); name = Classes; sourceTree = ""; }; EA03BA5309D0F80B036B92BF /* Headers */ = { isa = PBXGroup; children = ( EA03BA5409D0F84A036B92BF /* CNSFileHandle.h */, EA03BA5809D0F862036B92BF /* Musepack.h */, ); name = Headers; sourceTree = ""; }; EA0E08F206268A1F034EFD4C /* dummy */ = { isa = PBXGroup; children = ( EA8D0BF706268D9503000102 /* Classes */, EA8D0BF806268D9D03000102 /* Headers */, ); name = dummy; sourceTree = ""; }; EA1D795306263FB803CFD9F6 /* Ogg */ = { isa = PBXGroup; children = ( EA1D796F0626401C03CFD9F6 /* Classes */, EA1D79700626402403CFD9F6 /* Headers */, ); name = Ogg; path = Bundles/Ogg; sourceTree = SOURCE_ROOT; }; EA1D796D0626400703CFD9F6 /* Bundles */ = { isa = PBXGroup; children = ( EA8A20B30675A45C03A8D3C1 /* AudioFile */, EA8F759506F89A1F03F15592 /* FLAC */, EA85A0E2062773E80303B004 /* MP3 */, EA9ADAFD06823B0603000102 /* Mod */, EA96C1E90770F87B03166923 /* Musepack */, EA1D795306263FB803CFD9F6 /* Ogg */, EA96C1E80770F87303166923 /* WindowsMedia */, EA949F70062720910348A0D9 /* MacOSXPlayer */, EA80096F0629F2D7036EED6D /* Esound */, EA0E08F206268A1F034EFD4C /* dummy */, EAA95C2F09D0ECA7039F499A /* FLACTags */, EADC4D6409476C1203B0DF6D /* ID3Tag */, EAA6DF9509A66BCC034E8D88 /* VorbisTags */, ); name = Bundles; sourceTree = ""; }; EA1D796F0626401C03CFD9F6 /* Classes */ = { isa = PBXGroup; children = ( EA1D795606263FB803CFD9F6 /* Ogg.m */, ); name = Classes; sourceTree = ""; }; EA1D79700626402403CFD9F6 /* Headers */ = { isa = PBXGroup; children = ( EA1D795906263FB803CFD9F6 /* Ogg.h */, ); name = Headers; sourceTree = ""; }; EA2D90570629F91B03D508AF /* Resources */ = { isa = PBXGroup; children = ( EA2D90580629F93F03D508AF /* EsoundPreferences.nib */, ); name = Resources; sourceTree = ""; }; EA7EE7A1063AEA1A039F4895 /* C source */ = { isa = PBXGroup; children = ( EA7EE7A3063AEA4F039F4895 /* xing.c */, ); name = "C source"; sourceTree = ""; }; EA7EE7A2063AEA28039F4895 /* C headers */ = { isa = PBXGroup; children = ( EA7EE79F063AEA0B039F4895 /* xing.h */, ); name = "C headers"; sourceTree = ""; }; EA80096F0629F2D7036EED6D /* Esound */ = { isa = PBXGroup; children = ( EA8009790629F312036EED6D /* Classes */, EA80097A0629F318036EED6D /* Headers */, EA2D90570629F91B03D508AF /* Resources */, ); name = Esound; sourceTree = ""; }; EA8009790629F312036EED6D /* Classes */ = { isa = PBXGroup; children = ( EA80097B0629F33B036EED6D /* Esound.m */, ); name = Classes; sourceTree = ""; }; EA80097A0629F318036EED6D /* Headers */ = { isa = PBXGroup; children = ( EA80097D0629F354036EED6D /* Esound.h */, ); name = Headers; sourceTree = ""; }; EA85A0E2062773E80303B004 /* MP3 */ = { isa = PBXGroup; children = ( EA7EE7A1063AEA1A039F4895 /* C source */, EA7EE7A2063AEA28039F4895 /* C headers */, EA85A0E4062774020303B004 /* Classes */, EA85A0E3062773F30303B004 /* Headers */, ); name = MP3; sourceTree = ""; }; EA85A0E3062773F30303B004 /* Headers */ = { isa = PBXGroup; children = ( EA85A0EF0627755D0303B004 /* MP3.h */, ); name = Headers; sourceTree = ""; }; EA85A0E4062774020303B004 /* Classes */ = { isa = PBXGroup; children = ( EA85A0ED062775460303B004 /* MP3.m */, ); name = Classes; sourceTree = ""; }; EA8A20B30675A45C03A8D3C1 /* AudioFile */ = { isa = PBXGroup; children = ( EA8A20B40675A46B03A8D3C1 /* Classes */, EA8A20B50675A47503A8D3C1 /* Headers */, ); name = AudioFile; sourceTree = ""; }; EA8A20B40675A46B03A8D3C1 /* Classes */ = { isa = PBXGroup; children = ( EA8A20BD0675A4D003A8D3C1 /* AudioFile.m */, ); name = Classes; sourceTree = ""; }; EA8A20B50675A47503A8D3C1 /* Headers */ = { isa = PBXGroup; children = ( EA8A20BF0675A4EB03A8D3C1 /* AudioFileBundle.h */, ); name = Headers; sourceTree = ""; }; EA8D0BF706268D9503000102 /* Classes */ = { isa = PBXGroup; children = ( EA8D0C0106268E3003000102 /* dummy.m */, ); name = Classes; sourceTree = ""; }; EA8D0BF806268D9D03000102 /* Headers */ = { isa = PBXGroup; children = ( EA8D0C0306268E4303000102 /* dummy.h */, ); name = Headers; sourceTree = ""; }; EA8F759506F89A1F03F15592 /* FLAC */ = { isa = PBXGroup; children = ( EA8F759606F89A3103F15592 /* Classes */, EA8F759706F89A3C03F15592 /* Headers */, ); name = FLAC; sourceTree = ""; }; EA8F759606F89A3103F15592 /* Classes */ = { isa = PBXGroup; children = ( EA8F75AE06F89D9103F15592 /* FLAC.m */, ); name = Classes; sourceTree = ""; }; EA8F759706F89A3C03F15592 /* Headers */ = { isa = PBXGroup; children = ( EA8F75AD06F89D9103F15592 /* FLAC.h */, ); name = Headers; sourceTree = ""; }; EA949F70062720910348A0D9 /* MacOSXPlayer */ = { isa = PBXGroup; children = ( EA949F72062720A90348A0D9 /* Classes */, EA949F710627209C0348A0D9 /* Headers */, ); name = MacOSXPlayer; sourceTree = ""; }; EA949F710627209C0348A0D9 /* Headers */ = { isa = PBXGroup; children = ( EA675448062726F10396FC5D /* MacOSXPlayer.h */, ); name = Headers; sourceTree = ""; }; EA949F72062720A90348A0D9 /* Classes */ = { isa = PBXGroup; children = ( EA675446062726D80396FC5D /* MacOSXPlayer.m */, ); name = Classes; sourceTree = ""; }; EA96C1E80770F87303166923 /* WindowsMedia */ = { isa = PBXGroup; children = ( EA96C1EC0770F8C803166923 /* Other Sources */, EA96C1EB0770F8BF03166923 /* Headers */, EA96C1EA0770F89D03166923 /* Classes */, ); name = WindowsMedia; sourceTree = ""; }; EA96C1E90770F87B03166923 /* Musepack */ = { isa = PBXGroup; children = ( EA03BA5209D0F801036B92BF /* Classes */, EA03BA5309D0F80B036B92BF /* Headers */, ); name = Musepack; sourceTree = ""; }; EA96C1EA0770F89D03166923 /* Classes */ = { isa = PBXGroup; children = ( EA93165A0770FD3003000102 /* WindowsMedia.m */, ); name = Classes; sourceTree = ""; }; EA96C1EB0770F8BF03166923 /* Headers */ = { isa = PBXGroup; children = ( EA9316560770FCEB03000102 /* CWMFile.h */, EA9316580770FD0903000102 /* WindowsMedia.h */, ); name = Headers; sourceTree = ""; }; EA96C1EC0770F8C803166923 /* Other Sources */ = { isa = PBXGroup; children = ( EA9316530770FC6503000102 /* CWMFile.cpp */, ); name = "Other Sources"; sourceTree = ""; }; EA9ADAFD06823B0603000102 /* Mod */ = { isa = PBXGroup; children = ( EA9ADAFE06823B1703000102 /* Classes */, EA9ADAFF06823B3303000102 /* Headers */, ); name = Mod; sourceTree = ""; }; EA9ADAFE06823B1703000102 /* Classes */ = { isa = PBXGroup; children = ( EA9ADB0006823B6103000102 /* Mod.m */, ); name = Classes; sourceTree = ""; }; EA9ADAFF06823B3303000102 /* Headers */ = { isa = PBXGroup; children = ( EA9ADB0206823B7A03000102 /* Mod.h */, ); name = Headers; sourceTree = ""; }; EAA6DF9509A66BCC034E8D88 /* VorbisTags */ = { isa = PBXGroup; children = ( EAA6DF9609A66BDC034E8D88 /* Classes */, EAA6DF9709A66BE2034E8D88 /* Headers */, EAEAD23D09DCEDDA03EAE64E /* Other Sources */, ); name = VorbisTags; sourceTree = ""; }; EAA6DF9609A66BDC034E8D88 /* Classes */ = { isa = PBXGroup; children = ( EAA6DFA209A66DA3034E8D88 /* VorbisTags.m */, ); name = Classes; sourceTree = ""; }; EAA6DF9709A66BE2034E8D88 /* Headers */ = { isa = PBXGroup; children = ( EAA6DFA009A66D8D034E8D88 /* VorbisTags.h */, ); name = Headers; sourceTree = ""; }; EAA95C2F09D0ECA7039F499A /* FLACTags */ = { isa = PBXGroup; children = ( EAF9B4DF09D0EEC1037E42D6 /* Classes */, EAF9B4E009D0EEC8037E42D6 /* Headers */, ); name = FLACTags; sourceTree = ""; }; EADC4D6409476C1203B0DF6D /* ID3Tag */ = { isa = PBXGroup; children = ( EADC4D6509476C3203B0DF6D /* Classes */, EADC4D6609476C3803B0DF6D /* Headers */, ); name = ID3Tag; sourceTree = ""; }; EADC4D6509476C3203B0DF6D /* Classes */ = { isa = PBXGroup; children = ( EADC4D6809476C5903B0DF6D /* ID3Tag.m */, ); name = Classes; sourceTree = ""; }; EADC4D6609476C3803B0DF6D /* Headers */ = { isa = PBXGroup; children = ( EADC4D6709476C5903B0DF6D /* ID3Tag.h */, ); name = Headers; sourceTree = ""; }; EAEAD23D09DCEDDA03EAE64E /* Other Sources */ = { isa = PBXGroup; children = ( EAACCAF309C7ACDF03B7D5E1 /* vcedit.c */, ); name = "Other Sources"; sourceTree = ""; }; EAF9B4DF09D0EEC1037E42D6 /* Classes */ = { isa = PBXGroup; children = ( EAF9B4E209D0EEED037E42D6 /* FLACTags.m */, ); name = Classes; sourceTree = ""; }; EAF9B4E009D0EEC8037E42D6 /* Headers */ = { isa = PBXGroup; children = ( EAF9B4E109D0EEED037E42D6 /* FLACTags.h */, ); name = Headers; sourceTree = ""; }; EAFFEE69086E5596039AFE6D /* Cynthiune */ = { isa = PBXGroup; children = ( EAFFEE6A086E55AB039AFE6D /* Classes */, EAFFEE6B086E55B3039AFE6D /* Headers */, ); name = Cynthiune; sourceTree = ""; }; EAFFEE6A086E55AB039AFE6D /* Classes */ = { isa = PBXGroup; children = ( EAFFEE6D086E5601039AFE6D /* NSArrayExtensions.m */, EAFFEE6F086E5601039AFE6D /* NSCellExtensions.m */, EAFFEE71086E5601039AFE6D /* NSColorExtensions.m */, EA8795E406F66AA403809032 /* NSNumberExtensions.m */, EA547B69078A36000358AD96 /* NSStringExtensions.m */, EAFFEE73086E5601039AFE6D /* NSTimerExtensions.m */, EAFFEE75086E5601039AFE6D /* NSViewExtensions.m */, F7858C02061FC27301C0FE28 /* utils.m */, ); name = Classes; sourceTree = ""; }; EAFFEE6B086E55B3039AFE6D /* Headers */ = { isa = PBXGroup; children = ( EA7EE734063AE6B6039F4895 /* CynthiuneBundle.h */, F7858BEA061FC27301C0FE28 /* Format.h */, EAFFEE6C086E5601039AFE6D /* NSArrayExtensions.h */, EAFFEE6E086E5601039AFE6D /* NSCellExtensions.h */, EAFFEE70086E5601039AFE6D /* NSColorExtensions.h */, EA8795E306F66AA403809032 /* NSNumberExtensions.h */, EA547B68078A36000358AD96 /* NSStringExtensions.h */, EAFFEE72086E5601039AFE6D /* NSTimerExtensions.h */, EAFFEE74086E5601039AFE6D /* NSViewExtensions.h */, EA8795E506F66AA403809032 /* Output.h */, F7858BFB061FC27301C0FE28 /* Preference.h */, EAC9033508F2EB2003D0D62A /* Tags.h */, F7858C1C061FC2A801C0FE28 /* utils.h */, ); name = Headers; sourceTree = ""; }; F51A012B03BA9CCB01000004 /* Documentation */ = { isa = PBXGroup; children = ( F51A012C03BA9CE401000004 /* ChangeLog */, F51A012D03BA9CE401000004 /* COPYING */, F59C8F7903C01A7601C14AF2 /* NEWS */, EA7EE7E1063B04D0039F4895 /* README */, EA7EE7E2063B04D0039F4895 /* TODO */, ); name = Documentation; sourceTree = ""; }; F559092303B834D301000004 /* Headers */ = { isa = PBXGroup; children = ( EAFFEE81086E61A7039AFE6D /* BundleManager.h */, EAAF6D4D092BC55703000102 /* CynthiuneAnimatedImageView.h */, EA8795DF06F66AA403809032 /* CynthiuneController.h */, EAFFEE4C086E54DA039AFE6D /* CynthiuneFadingTextField.h */, EA778ACC09B5778A032657EF /* CynthiuneHeaderCell.h */, EAFFEE4F086E54DA039AFE6D /* CynthiunePauseButton.h */, EA8BBBF90682D60703C2B047 /* CynthiunePopUpButton.h */, EAFFEE55086E54DA039AFE6D /* CynthiuneSongTitleCell.h */, EAFFEE57086E54DA039AFE6D /* CynthiuneTextCell.h */, EA8A19170688EE2B03C0F62E /* CynthiuneWindow.h */, EAC9033708F2ED0603D0D62A /* DictionaryCoder.h */, F7858BEB061FC27301C0FE28 /* FormatTester.h */, F7858BED061FC27301C0FE28 /* GeneralPreference.h */, F7858BEF061FC27301C0FE28 /* InfoDisplayController.h */, EAC9033B08F2ED3103D0D62A /* M3UArchiver.h */, EAFFEE85086E61D7039AFE6D /* MBResultsPanel.h */, F7858BF3061FC27301C0FE28 /* Player.h */, EA73D4B4074C81F203F60D55 /* PlayerController.h */, EA73D4B6074C81F203F60D55 /* PlayerPreference.h */, F7858BF5061FC27301C0FE28 /* Playlist.h */, EAC9033F08F2ED4903D0D62A /* PlaylistArchiver.h */, F7858BF7061FC27301C0FE28 /* PlaylistController.h */, EA7EE76B063AE6B6039F4895 /* PlaylistView.h */, EAC9034108F2ED4903D0D62A /* PLSArchiver.h */, F7858BFC061FC27301C0FE28 /* PreferencesController.h */, F7858BFE061FC27301C0FE28 /* Song.h */, EA95850F078BA57703566F1F /* SongInspectorController.h */, F7858C00061FC27301C0FE28 /* PlaylistViewController.h */, ); name = Headers; sourceTree = ""; }; F59C8F6803C0152501C14AF2 /* Images */ = { isa = PBXGroup; children = ( F59C8F6B03C0155B01C14AF2 /* Cynthiune.icns */, EA5AA10D09A5220203396ECD /* Cynthiune-song.icns */, EA5AA10B09A51CA303396ECD /* Cynthiune-playlist.icns */, F7858C22061FC31401C0FE28 /* Cynthiune.tiff */, F7858C1F061FC31401C0FE28 /* cynthiune-splash-faded.tiff */, F7858C21061FC31401C0FE28 /* cynthiune-splash.tiff */, EAA6DF9109A663DE034E8D88 /* dragged-song.tiff */, EAA6DF9209A663DE034E8D88 /* dragged-songs.tiff */, F7858C23061FC31401C0FE28 /* eject-pushed.tiff */, F7858C24061FC31401C0FE28 /* eject.tiff */, F59C8F6C03C0155B01C14AF2 /* next.tiff */, F7858C28061FC31401C0FE28 /* next-pushed.tiff */, F59C8F6D03C0155B01C14AF2 /* pause.tiff */, F7858C2A061FC31401C0FE28 /* pause-pushed.tiff */, F59C8F6E03C0155B01C14AF2 /* play.tiff */, F7858C2B061FC31401C0FE28 /* play-pushed.tiff */, EA8A20D00675A80A03A8D3C1 /* playlist.tiff */, EA8A20CF0675A80A03A8D3C1 /* playlist-pushed.tiff */, F59C8F6F03C0155B01C14AF2 /* previous.tiff */, F7858C2E061FC31401C0FE28 /* previous-pushed.tiff */, EA8A20D20675A80A03A8D3C1 /* repeat.tiff */, EA8A20D10675A80A03A8D3C1 /* repeat-pushed.tiff */, EA8A20D40675A80A03A8D3C1 /* shuffle.tiff */, EA8A20D30675A80A03A8D3C1 /* shuffle-pushed.tiff */, F59C8F7003C0155B01C14AF2 /* stop.tiff */, F7858C33061FC31401C0FE28 /* stop-pushed.tiff */, EAB991A3086E52A60334F83B /* anim-logo-1.tiff */, EAB991A4086E52A60334F83B /* anim-logo-2.tiff */, EAB991A5086E52A60334F83B /* anim-logo-3.tiff */, EAB991A6086E52A60334F83B /* anim-logo-4.tiff */, EAB991A7086E52A60334F83B /* anim-logo-5.tiff */, EAB991A8086E52A60334F83B /* anim-logo-6.tiff */, EAB991A9086E52A60334F83B /* anim-logo-7.tiff */, EAB991AA086E52A60334F83B /* anim-logo-8.tiff */, EA4FAC5009A456860310F3BF /* lock.tiff */, EAFFEE89086E688A039AFE6D /* lookup-mb-off.tiff */, EAFFEE8A086E688A039AFE6D /* lookup-mb-on.tiff */, EAFFEE8D086E688A039AFE6D /* song-pointer.tiff */, EAAF6D39092BC4F303000102 /* add.tiff */, EAAF6D3A092BC4F303000102 /* cleanup.tiff */, EAAF6D3E092BC51E03000102 /* remove.tiff */, EAAF6D3F092BC51E03000102 /* save-as.tiff */, EAAF6D41092BC51E03000102 /* slider-knob-disabled.tiff */, EAAF6D42092BC51E03000102 /* slider-knob-enabled.tiff */, EAAF6D43092BC51E03000102 /* song-inspector-pushed.tiff */, EAAF6D44092BC51E03000102 /* song-inspector.tiff */, ); name = Images; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 85EF881815669BDB00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF881915669BDB00DD5F41 /* CynthiuneController.h in Headers */, 85EF881A15669BDB00DD5F41 /* FormatTester.h in Headers */, 85EF881B15669BDB00DD5F41 /* GeneralPreference.h in Headers */, 85EF881C15669BDB00DD5F41 /* InfoDisplayController.h in Headers */, 85EF881D15669BDB00DD5F41 /* Player.h in Headers */, 85EF881E15669BDB00DD5F41 /* Playlist.h in Headers */, 85EF881F15669BDB00DD5F41 /* PlaylistController.h in Headers */, 85EF882015669BDB00DD5F41 /* PlaylistView.h in Headers */, 85EF882115669BDB00DD5F41 /* PreferencesController.h in Headers */, 85EF882215669BDB00DD5F41 /* Song.h in Headers */, 85EF882315669BDB00DD5F41 /* PlaylistViewController.h in Headers */, 85EF882415669BDB00DD5F41 /* PlayerController.h in Headers */, 85EF882515669BDB00DD5F41 /* PlayerPreference.h in Headers */, 85EF882615669BDB00DD5F41 /* SongInspectorController.h in Headers */, 85EF882715669BDB00DD5F41 /* CynthiuneFadingTextField.h in Headers */, 85EF882815669BDB00DD5F41 /* CynthiunePauseButton.h in Headers */, 85EF882915669BDB00DD5F41 /* CynthiuneSongTitleCell.h in Headers */, 85EF882A15669BDB00DD5F41 /* CynthiuneTextCell.h in Headers */, 85EF882B15669BDB00DD5F41 /* CynthiunePopUpButton.h in Headers */, 85EF882C15669BDB00DD5F41 /* CynthiuneWindow.h in Headers */, 85EF882D15669BDB00DD5F41 /* BundleManager.h in Headers */, 85EF882E15669BDB00DD5F41 /* MBResultsPanel.h in Headers */, 85EF882F15669BDB00DD5F41 /* DictionaryCoder.h in Headers */, 85EF883015669BDB00DD5F41 /* M3UArchiver.h in Headers */, 85EF883115669BDB00DD5F41 /* PlaylistArchiver.h in Headers */, 85EF883215669BDB00DD5F41 /* PLSArchiver.h in Headers */, 85EF883315669BDB00DD5F41 /* CynthiuneAnimatedImageView.h in Headers */, 85EF883415669BDB00DD5F41 /* CynthiuneHeaderCell.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88A515669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF88A615669BDC00DD5F41 /* Preference.h in Headers */, 85EF88A715669BDC00DD5F41 /* Output.h in Headers */, 85EF88A815669BDC00DD5F41 /* Format.h in Headers */, 85EF88A915669BDC00DD5F41 /* Tags.h in Headers */, 85EF88AA15669BDC00DD5F41 /* CynthiuneBundle.h in Headers */, 85EF88AB15669BDC00DD5F41 /* NSNumberExtensions.h in Headers */, 85EF88AC15669BDC00DD5F41 /* NSStringExtensions.h in Headers */, 85EF88AE15669BDC00DD5F41 /* NSArrayExtensions.h in Headers */, 85EF88AF15669BDC00DD5F41 /* NSCellExtensions.h in Headers */, 85EF88B015669BDC00DD5F41 /* NSColorExtensions.h in Headers */, 85EF88B115669BDC00DD5F41 /* NSTimerExtensions.h in Headers */, 85EF88B215669BDC00DD5F41 /* NSViewExtensions.h in Headers */, 85EF88B315669BDC00DD5F41 /* utils.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88CB15669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF88CC15669BDC00DD5F41 /* AudioFileBundle.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88DB15669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF88DC15669BDC00DD5F41 /* FLAC.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88EC15669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF88ED15669BDC00DD5F41 /* MP3.h in Headers */, 85EF88EE15669BDC00DD5F41 /* xing.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88FF15669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF890015669BDC00DD5F41 /* Mod.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF891015669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF891115669BDC00DD5F41 /* Ogg.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF892115669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF892215669BDC00DD5F41 /* MacOSXPlayer.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF893615669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF893715669BDC00DD5F41 /* Esound.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF894815669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF894915669BDC00DD5F41 /* dummy.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF895715669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF895815669BDC00DD5F41 /* CWMFile.h in Headers */, 85EF895915669BDC00DD5F41 /* WindowsMedia.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF896815669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF896915669BDC00DD5F41 /* CNSFileHandle.h in Headers */, 85EF896A15669BDC00DD5F41 /* Musepack.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF897B15669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF897C15669BDC00DD5F41 /* ID3Tag.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF898B15669BDC00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF898C15669BDC00DD5F41 /* VorbisTags.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF899D15669BDD00DD5F41 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 85EF899E15669BDD00DD5F41 /* FLACTags.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 85EF880B15669BDB00DD5F41 /* Cynthiune */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF889D15669BDB00DD5F41 /* Build configuration list for PBXNativeTarget "Cynthiune" */; buildPhases = ( 85EF881815669BDB00DD5F41 /* Headers */, 85EF883515669BDB00DD5F41 /* Resources */, 85EF886F15669BDB00DD5F41 /* Sources */, 85EF888D15669BDB00DD5F41 /* Frameworks */, 85EF889015669BDB00DD5F41 /* CopyFiles */, 85EF889215669BDB00DD5F41 /* CopyFiles */, ); buildRules = ( ); dependencies = ( 85EF89AE15669BDD00DD5F41 /* PBXTargetDependency */, 85EF89B015669BDD00DD5F41 /* PBXTargetDependency */, 85EF89B215669BDD00DD5F41 /* PBXTargetDependency */, 85EF89B615669BDD00DD5F41 /* PBXTargetDependency */, 85407AF91594E4270015B7F7 /* PBXTargetDependency */, 85D98A711594F60F00E9C5F9 /* PBXTargetDependency */, ); name = Cynthiune; productName = Cynthiune; productReference = 85EF88A215669BDC00DD5F41 /* Cynthiune.app */; productType = "com.apple.product-type.application"; }; 85EF88A415669BDC00DD5F41 /* Cynthiune framework */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF88C215669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Cynthiune framework" */; buildPhases = ( 85EF88A515669BDC00DD5F41 /* Headers */, 85EF88B415669BDC00DD5F41 /* Resources */, 85EF88B515669BDC00DD5F41 /* Sources */, 85EF88BF15669BDC00DD5F41 /* Frameworks */, 85EF88C115669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = "Cynthiune framework"; productInstallPath = ""; productName = "Cynthiune framework"; productReference = 85EF88C715669BDC00DD5F41 /* Cynthiune.framework */; productType = "com.apple.product-type.framework"; }; 85EF88C815669BDC00DD5F41 /* AudioFile */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF88D415669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "AudioFile" */; buildPhases = ( 85EF88CB15669BDC00DD5F41 /* Headers */, 85EF88CD15669BDC00DD5F41 /* Resources */, 85EF88CE15669BDC00DD5F41 /* Sources */, 85EF88D015669BDC00DD5F41 /* Frameworks */, 85EF88D315669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( 85EF8B0315669EB800DD5F41 /* PBXTargetDependency */, ); name = AudioFile; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = AudioFile; productReference = 85EF88D915669BDC00DD5F41 /* AudioFile.format */; productType = "com.apple.product-type.bundle"; }; 85EF88DA15669BDC00DD5F41 /* FLAC */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF88E515669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "FLAC" */; buildPhases = ( 85EF88DB15669BDC00DD5F41 /* Headers */, 85EF88DD15669BDC00DD5F41 /* Resources */, 85EF88DE15669BDC00DD5F41 /* Sources */, 85EF88E015669BDC00DD5F41 /* Frameworks */, 85EF88E415669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = FLAC; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = FLAC; productReference = 85EF88EA15669BDC00DD5F41 /* FLAC.format */; productType = "com.apple.product-type.bundle"; }; 85EF88EB15669BDC00DD5F41 /* MP3 */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF88F815669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "MP3" */; buildPhases = ( 85EF88EC15669BDC00DD5F41 /* Headers */, 85EF88EF15669BDC00DD5F41 /* Resources */, 85EF88F015669BDC00DD5F41 /* Sources */, 85EF88F315669BDC00DD5F41 /* Frameworks */, 85EF88F715669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = MP3; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = MP3; productReference = 85EF88FD15669BDC00DD5F41 /* MP3.format */; productType = "com.apple.product-type.bundle"; }; 85EF88FE15669BDC00DD5F41 /* Mod */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF890915669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Mod" */; buildPhases = ( 85EF88FF15669BDC00DD5F41 /* Headers */, 85EF890115669BDC00DD5F41 /* Resources */, 85EF890215669BDC00DD5F41 /* Sources */, 85EF890415669BDC00DD5F41 /* Frameworks */, 85EF890815669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = Mod; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Mod; productReference = 85EF890E15669BDC00DD5F41 /* Mod.format */; productType = "com.apple.product-type.bundle"; }; 85EF890F15669BDC00DD5F41 /* Ogg */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF891A15669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Ogg" */; buildPhases = ( 85EF891015669BDC00DD5F41 /* Headers */, 85EF891215669BDC00DD5F41 /* Resources */, 85EF891315669BDC00DD5F41 /* Sources */, 85EF891515669BDC00DD5F41 /* Frameworks */, 85EF891915669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = Ogg; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Ogg.output; productReference = 85EF891F15669BDC00DD5F41 /* Ogg.format */; productType = "com.apple.product-type.bundle"; }; 85EF892015669BDC00DD5F41 /* MacOSXPlayer */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF892F15669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "MacOSXPlayer" */; buildPhases = ( 85EF892115669BDC00DD5F41 /* Headers */, 85EF892315669BDC00DD5F41 /* Resources */, 85EF892415669BDC00DD5F41 /* Sources */, 85EF892615669BDC00DD5F41 /* Frameworks */, 85EF892E15669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = MacOSXPlayer; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = MacOSXPlayer; productReference = 85EF893415669BDC00DD5F41 /* MacOSXPlayer.output */; productType = "com.apple.product-type.bundle"; }; 85EF893515669BDC00DD5F41 /* Esound */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF894115669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Esound" */; buildPhases = ( 85EF893615669BDC00DD5F41 /* Headers */, 85EF893815669BDC00DD5F41 /* Resources */, 85EF893A15669BDC00DD5F41 /* Sources */, 85EF893C15669BDC00DD5F41 /* Frameworks */, 85EF894015669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = Esound; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Esound; productReference = 85EF894615669BDC00DD5F41 /* Esound.output */; productType = "com.apple.product-type.bundle"; }; 85EF895615669BDC00DD5F41 /* WindowsMedia */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF896115669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "WindowsMedia" */; buildPhases = ( 85EF895715669BDC00DD5F41 /* Headers */, 85EF895A15669BDC00DD5F41 /* Resources */, 85EF895B15669BDC00DD5F41 /* Sources */, 85EF895E15669BDC00DD5F41 /* Frameworks */, 85EF896015669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = WindowsMedia; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = WindowsMedia; productReference = 85EF896615669BDC00DD5F41 /* WindowsMedia.format */; productType = "com.apple.product-type.bundle"; }; 85EF896715669BDC00DD5F41 /* Musepack */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF897415669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Musepack" */; buildPhases = ( 85EF896815669BDC00DD5F41 /* Headers */, 85EF896B15669BDC00DD5F41 /* Resources */, 85EF896C15669BDC00DD5F41 /* Sources */, 85EF896F15669BDC00DD5F41 /* Frameworks */, 85EF897315669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = Musepack; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Musepack; productReference = 85EF897915669BDC00DD5F41 /* Musepack.format */; productType = "com.apple.product-type.bundle"; }; 85EF897A15669BDC00DD5F41 /* ID3Tag */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF898415669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "ID3Tag" */; buildPhases = ( 85EF897B15669BDC00DD5F41 /* Headers */, 85EF897D15669BDC00DD5F41 /* Resources */, 85EF897E15669BDC00DD5F41 /* Sources */, 85EF898015669BDC00DD5F41 /* Frameworks */, 85EF898315669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = ID3Tag; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = ID3Tag; productReference = 85EF898915669BDC00DD5F41 /* ID3Tag.tags */; productType = "com.apple.product-type.bundle"; }; 85EF898A15669BDC00DD5F41 /* VorbisTags */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF899615669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "VorbisTags" */; buildPhases = ( 85EF898B15669BDC00DD5F41 /* Headers */, 85EF898D15669BDC00DD5F41 /* Resources */, 85EF898E15669BDC00DD5F41 /* Sources */, 85EF899115669BDC00DD5F41 /* Frameworks */, 85EF899515669BDC00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = VorbisTags; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = VorbisTags; productReference = 85EF899B15669BDD00DD5F41 /* VorbisTags.tags */; productType = "com.apple.product-type.bundle"; }; 85EF899C15669BDD00DD5F41 /* FLACTags */ = { isa = PBXNativeTarget; buildConfigurationList = 85EF89A715669BDD00DD5F41 /* Build configuration list for PBXNativeTarget "FLACTags" */; buildPhases = ( 85EF899D15669BDD00DD5F41 /* Headers */, 85EF899F15669BDD00DD5F41 /* Resources */, 85EF89A015669BDD00DD5F41 /* Sources */, 85EF89A215669BDD00DD5F41 /* Frameworks */, 85EF89A615669BDD00DD5F41 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = FLACTags; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = FLACTags; productReference = 85EF89AC15669BDD00DD5F41 /* FLACTags.tags */; productType = "com.apple.product-type.bundle"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = 85A468B315505DAB008CAE09 /* Build configuration list for PBXProject "Cynthiune" */; hasScannedForEncodings = 1; knownRegions = ( English, French, German, Italian, Slovak, TraditionalChinese, Hungarian, Spanish, ); mainGroup = 29B97314FDCFA39411CA2CEA /* Cynthiune */; projectDirPath = ""; targets = ( 85EF880B15669BDB00DD5F41 /* Cynthiune */, 85EF88A415669BDC00DD5F41 /* Cynthiune framework */, 85EF88C815669BDC00DD5F41 /* AudioFile */, 85EF88DA15669BDC00DD5F41 /* FLAC */, 85EF88EB15669BDC00DD5F41 /* MP3 */, 85EF88FE15669BDC00DD5F41 /* Mod */, 85EF890F15669BDC00DD5F41 /* Ogg */, 85EF892015669BDC00DD5F41 /* MacOSXPlayer */, 85EF893515669BDC00DD5F41 /* Esound */, 85EF894715669BDC00DD5F41 /* dummy */, 85EF895615669BDC00DD5F41 /* WindowsMedia */, 85EF896715669BDC00DD5F41 /* Musepack */, 85EF897A15669BDC00DD5F41 /* ID3Tag */, 85EF898A15669BDC00DD5F41 /* VorbisTags */, 85EF899C15669BDD00DD5F41 /* FLACTags */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 85EF883515669BDB00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF883615669BDB00DD5F41 /* InfoPlist.strings in Resources */, 85EF883715669BDB00DD5F41 /* Localizable.strings in Resources */, 85EF883815669BDB00DD5F41 /* ChangeLog in Resources */, 85EF883915669BDB00DD5F41 /* COPYING in Resources */, 85EF883A15669BDB00DD5F41 /* NEWS in Resources */, 85EF883B15669BDB00DD5F41 /* README in Resources */, 85EF883C15669BDB00DD5F41 /* TODO in Resources */, 85EF883D15669BDB00DD5F41 /* Cynthiune.nib in Resources */, 85EF883E15669BDB00DD5F41 /* Preferences.nib in Resources */, 85EF883F15669BDB00DD5F41 /* GeneralPreference.nib in Resources */, 85EF884015669BDB00DD5F41 /* Cynthiune.icns in Resources */, 85EF884115669BDB00DD5F41 /* cynthiune-splash-faded.tiff in Resources */, 85EF884215669BDB00DD5F41 /* cynthiune-splash.tiff in Resources */, 85EF884315669BDB00DD5F41 /* Cynthiune.tiff in Resources */, 85EF884415669BDB00DD5F41 /* eject.tiff in Resources */, 85EF884515669BDB00DD5F41 /* eject-pushed.tiff in Resources */, 85EF884615669BDB00DD5F41 /* next.tiff in Resources */, 85EF884715669BDB00DD5F41 /* next-pushed.tiff in Resources */, 85EF884815669BDB00DD5F41 /* pause.tiff in Resources */, 85EF884915669BDB00DD5F41 /* pause-pushed.tiff in Resources */, 85EF884A15669BDB00DD5F41 /* play.tiff in Resources */, 85EF884B15669BDB00DD5F41 /* play-pushed.tiff in Resources */, 85EF884C15669BDB00DD5F41 /* previous.tiff in Resources */, 85EF884D15669BDB00DD5F41 /* previous-pushed.tiff in Resources */, 85EF884E15669BDB00DD5F41 /* stop.tiff in Resources */, 85EF884F15669BDB00DD5F41 /* stop-pushed.tiff in Resources */, 85EF885015669BDB00DD5F41 /* playlist.tiff in Resources */, 85EF885115669BDB00DD5F41 /* playlist-pushed.tiff in Resources */, 85EF885215669BDB00DD5F41 /* repeat.tiff in Resources */, 85EF885315669BDB00DD5F41 /* repeat-pushed.tiff in Resources */, 85EF885415669BDB00DD5F41 /* shuffle.tiff in Resources */, 85EF885515669BDB00DD5F41 /* shuffle-pushed.tiff in Resources */, 85EF885615669BDB00DD5F41 /* SongInspector.nib in Resources */, 85EF885715669BDB00DD5F41 /* anim-logo-1.tiff in Resources */, 85EF885815669BDB00DD5F41 /* anim-logo-2.tiff in Resources */, 85EF885915669BDB00DD5F41 /* anim-logo-3.tiff in Resources */, 85EF885A15669BDB00DD5F41 /* anim-logo-4.tiff in Resources */, 85EF885B15669BDB00DD5F41 /* anim-logo-5.tiff in Resources */, 85EF885C15669BDB00DD5F41 /* anim-logo-6.tiff in Resources */, 85EF885D15669BDB00DD5F41 /* anim-logo-7.tiff in Resources */, 85EF885E15669BDB00DD5F41 /* anim-logo-8.tiff in Resources */, 85EF885F15669BDB00DD5F41 /* lookup-mb-off.tiff in Resources */, 85EF886015669BDB00DD5F41 /* lookup-mb-on.tiff in Resources */, 85EF886115669BDB00DD5F41 /* song-pointer.tiff in Resources */, 85EF886215669BDB00DD5F41 /* add.tiff in Resources */, 85EF886315669BDB00DD5F41 /* cleanup.tiff in Resources */, 85EF886415669BDB00DD5F41 /* remove.tiff in Resources */, 85EF886515669BDB00DD5F41 /* save-as.tiff in Resources */, 85EF886615669BDB00DD5F41 /* song-inspector-pushed.tiff in Resources */, 85EF886715669BDB00DD5F41 /* song-inspector.tiff in Resources */, 85EF886815669BDB00DD5F41 /* lock.tiff in Resources */, 85EF886915669BDB00DD5F41 /* Cynthiune-playlist.icns in Resources */, 85EF886A15669BDB00DD5F41 /* Cynthiune-song.icns in Resources */, 85EF886B15669BDB00DD5F41 /* dragged-song.tiff in Resources */, 85EF886C15669BDB00DD5F41 /* dragged-songs.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88B415669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88CD15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88DD15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88EF15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF890115669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF891215669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF892315669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF893815669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF893915669BDC00DD5F41 /* EsoundPreferences.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF894A15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF895A15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF896B15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF897D15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF898D15669BDC00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF899F15669BDD00DD5F41 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXRezBuildPhase section */ 85EF88C115669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88D315669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88E415669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88F715669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF890815669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF891915669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF892E15669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF894015669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF895015669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF896015669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF897315669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF898315669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF899515669BDC00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 85EF89A615669BDD00DD5F41 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXRezBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 85EF886F15669BDB00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF887015669BDB00DD5F41 /* main.m in Sources */, 85EF887115669BDB00DD5F41 /* CynthiuneController.m in Sources */, 85EF887215669BDB00DD5F41 /* FormatTester.m in Sources */, 85EF887315669BDB00DD5F41 /* GeneralPreference.m in Sources */, 85EF887415669BDB00DD5F41 /* InfoDisplayController.m in Sources */, 85EF887515669BDB00DD5F41 /* Player.m in Sources */, 85EF887615669BDB00DD5F41 /* Playlist.m in Sources */, 85EF887715669BDB00DD5F41 /* PlaylistController.m in Sources */, 85EF887815669BDB00DD5F41 /* PlaylistView.m in Sources */, 85EF887915669BDB00DD5F41 /* PreferencesController.m in Sources */, 85EF887A15669BDB00DD5F41 /* Song.m in Sources */, 85EF887B15669BDB00DD5F41 /* PlaylistViewController.m in Sources */, 85EF887C15669BDB00DD5F41 /* CynthiuneWindow.m in Sources */, 85EF887D15669BDB00DD5F41 /* CynthiunePopUpButton.m in Sources */, 85EF887E15669BDB00DD5F41 /* PlayerController.m in Sources */, 85EF887F15669BDB00DD5F41 /* PlayerPreference.m in Sources */, 85EF888015669BDB00DD5F41 /* SongInspectorController.m in Sources */, 85EF888115669BDB00DD5F41 /* CynthiuneAnimatedImageView.m in Sources */, 85EF888215669BDB00DD5F41 /* CynthiuneFadingTextField.m in Sources */, 85EF888315669BDB00DD5F41 /* CynthiunePauseButton.m in Sources */, 85EF888415669BDB00DD5F41 /* CynthiuneSongTitleCell.m in Sources */, 85EF888515669BDB00DD5F41 /* CynthiuneTextCell.m in Sources */, 85EF888615669BDB00DD5F41 /* BundleManager.m in Sources */, 85EF888715669BDB00DD5F41 /* MBResultsPanel.m in Sources */, 85EF888815669BDB00DD5F41 /* DictionaryCoder.m in Sources */, 85EF888915669BDB00DD5F41 /* M3UArchiver.m in Sources */, 85EF888A15669BDB00DD5F41 /* PlaylistArchiver.m in Sources */, 85EF888B15669BDB00DD5F41 /* PLSArchiver.m in Sources */, 85EF888C15669BDB00DD5F41 /* CynthiuneHeaderCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88B515669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF88B615669BDC00DD5F41 /* utils.m in Sources */, 85EF88B715669BDC00DD5F41 /* NSNumberExtensions.m in Sources */, 85EF88B815669BDC00DD5F41 /* NSStringExtensions.m in Sources */, 85EF88B915669BDC00DD5F41 /* NSArrayExtensions.m in Sources */, 85EF88BA15669BDC00DD5F41 /* NSCellExtensions.m in Sources */, 85EF88BB15669BDC00DD5F41 /* NSColorExtensions.m in Sources */, 85EF88BC15669BDC00DD5F41 /* NSTimerExtensions.m in Sources */, 85EF88BD15669BDC00DD5F41 /* NSViewExtensions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88CE15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF88CF15669BDC00DD5F41 /* AudioFile.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88DE15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF88DF15669BDC00DD5F41 /* FLAC.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF88F015669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF88F115669BDC00DD5F41 /* MP3.m in Sources */, 85EF88F215669BDC00DD5F41 /* xing.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF890215669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF890315669BDC00DD5F41 /* Mod.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF891315669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF891415669BDC00DD5F41 /* Ogg.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF892415669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF892515669BDC00DD5F41 /* MacOSXPlayer.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF893A15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF893B15669BDC00DD5F41 /* Esound.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF894B15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF894C15669BDC00DD5F41 /* dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF895B15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF895C15669BDC00DD5F41 /* CWMFile.cpp in Sources */, 85EF895D15669BDC00DD5F41 /* WindowsMedia.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF896C15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF896D15669BDC00DD5F41 /* CNSFileHandle.m in Sources */, 85EF896E15669BDC00DD5F41 /* Musepack.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF897E15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF897F15669BDC00DD5F41 /* ID3Tag.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF898E15669BDC00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF898F15669BDC00DD5F41 /* VorbisTags.m in Sources */, 85EF899015669BDC00DD5F41 /* vcedit.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 85EF89A015669BDD00DD5F41 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 85EF89A115669BDD00DD5F41 /* FLACTags.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 85407AF91594E4270015B7F7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 85EF897A15669BDC00DD5F41 /* ID3Tag */; targetProxy = 85407AF81594E4270015B7F7 /* PBXContainerItemProxy */; }; 85D98A711594F60F00E9C5F9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 85EF890F15669BDC00DD5F41 /* Ogg */; targetProxy = 85D98A701594F60F00E9C5F9 /* PBXContainerItemProxy */; }; 85EF89AE15669BDD00DD5F41 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 85EF88A415669BDC00DD5F41 /* Cynthiune framework */; targetProxy = 85EF89AD15669BDD00DD5F41 /* PBXContainerItemProxy */; }; 85EF89B015669BDD00DD5F41 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 85EF88C815669BDC00DD5F41 /* AudioFile */; targetProxy = 85EF89AF15669BDD00DD5F41 /* PBXContainerItemProxy */; }; 85EF89B215669BDD00DD5F41 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 85EF88EB15669BDC00DD5F41 /* MP3 */; targetProxy = 85EF89B115669BDD00DD5F41 /* PBXContainerItemProxy */; }; 85EF89B615669BDD00DD5F41 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 85EF892015669BDC00DD5F41 /* MacOSXPlayer */; targetProxy = 85EF89B515669BDD00DD5F41 /* PBXContainerItemProxy */; }; 85EF8B0315669EB800DD5F41 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 85EF88A415669BDC00DD5F41 /* Cynthiune framework */; targetProxy = 85EF8B0215669EB800DD5F41 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C165DFE840E0CC02AAC07 /* English */, EA7EE7DC063B0267039F4895 /* French */, EAB991A1086E52690334F83B /* German */, EA8E3562094766F7032DC65E /* Hungarian */, EA88F6F2068222A103ABED23 /* Italian */, EA8E355D09476698032DC65E /* Slovak */, EA8E35630947670D032DC65E /* Spanish */, EA8E355E094766BD032DC65E /* TraditionalChinese */, ); name = InfoPlist.strings; sourceTree = ""; }; EA7EE7DD063B035E039F4895 /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( EA7EE7DE063B035E039F4895 /* English */, EA7EE7E0063B036F039F4895 /* French */, EAB991A2086E52690334F83B /* German */, EA8E356409476757032DC65E /* Hungarian */, EA88F6F10682227603ABED23 /* Italian */, EA8E35650947676F032DC65E /* Slovak */, EA8E356A09476934032DC65E /* Spanish */, EA8E356909476796032DC65E /* TraditionalChinese */, ); name = Localizable.strings; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 85A468B415505DAB008CAE09 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Development; }; 85A468B515505DAB008CAE09 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Deployment; }; 85A468B615505DAB008CAE09 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Default; }; 85EF889E15669BDB00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { BUILD_SETTING = ""; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-Cynthiune.plist"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ( "-L/usr/local/lib", "-lstdc++", ); PREBINDING = NO; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = YES; }; name = Development; }; 85EF889F15669BDB00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { BUILD_SETTING = ""; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-Cynthiune.plist"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ( "-L/usr/local/lib", "-lstdc++", ); PREBINDING = NO; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = NO; }; name = Deployment; }; 85EF88A015669BDB00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { BUILD_SETTING = ""; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-Cynthiune.plist"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ( "-L/usr/local/lib", "-lstdc++", ); PREBINDING = NO; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; }; name = Default; }; 85EF88C315669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-Cynthiune_framework.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = framework; ZERO_LINK = YES; }; name = Development; }; 85EF88C415669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-Cynthiune_framework.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = framework; ZERO_LINK = NO; }; name = Deployment; }; 85EF88C515669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-Cynthiune_framework.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = framework; }; name = Default; }; 85EF88D515669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-AudioFile.plist"; OTHER_CFLAGS = ( "-no-cpp-precomp", "-framework", Cynthiune, ); OTHER_LDFLAGS = ( "-laudiofile", "-framework", Cynthiune, ); OTHER_REZFLAGS = ""; PRODUCT_NAME = AudioFile; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = YES; }; name = Development; }; 85EF88D615669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-AudioFile__Upgraded_.plist"; OTHER_CFLAGS = ( "-no-cpp-precomp", "-framework", Cynthiune, ); OTHER_LDFLAGS = ( "-laudiofile", "-framework", Cynthiune, ); OTHER_REZFLAGS = ""; PRODUCT_NAME = AudioFile; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = NO; }; name = Deployment; }; 85EF88D715669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-AudioFile__Upgraded_.plist"; OTHER_CFLAGS = ( "-no-cpp-precomp", "-framework", Cynthiune, ); OTHER_LDFLAGS = ( "-laudiofile", "-framework", Cynthiune, ); OTHER_REZFLAGS = ""; PRODUCT_NAME = AudioFile; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; }; name = Default; }; 85EF88E615669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLAC.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLAC; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = YES; }; name = Development; }; 85EF88E715669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLAC.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLAC; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = NO; }; name = Deployment; }; 85EF88E815669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLAC.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLAC; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; }; name = Default; }; 85EF88F915669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MP3.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lmad", "-lid3tag", "-lz", ); OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = MP3; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = YES; }; name = Development; }; 85EF88FA15669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MP3.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lmad", "-lid3tag", "-lz", ); OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = MP3; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = NO; }; name = Deployment; }; 85EF88FB15669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MP3.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lmad", "-lid3tag", "-lz", ); OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = MP3; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; }; name = Default; }; 85EF890A15669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( /usr/local/include/libmodplug, ., ); INFOPLIST_FILE = "Info-Mod.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lmodplug", "-lstdc++", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Mod; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = YES; }; name = Development; }; 85EF890B15669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( /usr/local/include/libmodplug, ., ); INFOPLIST_FILE = "Info-Mod.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lmodplug", "-lstdc++", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Mod; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = NO; }; name = Deployment; }; 85EF890C15669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( /usr/local/include/libmodplug, ., ); INFOPLIST_FILE = "Info-Mod.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lmodplug", "-lstdc++", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Mod; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; }; name = Default; }; 85EF891B15669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-Ogg.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lvorbis", "-lvorbisfile", "-logg", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Ogg; SECTORDER_FLAGS = ""; USE_HEADERMAP = ""; WARNING_CFLAGS = ( "\U0001-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = YES; }; name = Development; }; 85EF891C15669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-Ogg.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lvorbis", "-lvorbisfile", "-logg", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Ogg; SECTORDER_FLAGS = ""; USE_HEADERMAP = ""; WARNING_CFLAGS = ( "\U0001-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = NO; }; name = Deployment; }; 85EF891D15669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-Ogg.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lvorbis", "-lvorbisfile", "-logg", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Ogg; SECTORDER_FLAGS = ""; USE_HEADERMAP = ""; WARNING_CFLAGS = ( "\U0001-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; }; name = Default; }; 85EF893015669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_TREAT_WARNINGS_AS_ERRORS = YES; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MacOSXPlayer.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = MacOSXPlayer; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; ZERO_LINK = YES; }; name = Development; }; 85EF893115669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_TREAT_WARNINGS_AS_ERRORS = YES; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MacOSXPlayer.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = MacOSXPlayer; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; ZERO_LINK = NO; }; name = Deployment; }; 85EF893215669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_TREAT_WARNINGS_AS_ERRORS = YES; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MacOSXPlayer.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = MacOSXPlayer; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; }; name = Default; }; 85EF894215669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-Esound.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lesd"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Esound; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; ZERO_LINK = YES; }; name = Development; }; 85EF894315669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-Esound.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lesd"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Esound; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; ZERO_LINK = NO; }; name = Deployment; }; 85EF894415669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-Esound.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lesd"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Esound; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; }; name = Default; }; 85EF895215669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/build/Development", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = ( "-I.", "-D__MACOSX__", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = dummy; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "\U0001-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; ZERO_LINK = YES; }; name = Development; }; 85EF895315669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/build/Development", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = ( "-I.", "-D__MACOSX__", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = dummy; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "\U0001-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; ZERO_LINK = NO; }; name = Deployment; }; 85EF895415669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/build/Development", ); OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = ( "-I.", "-D__MACOSX__", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = dummy; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "\U0001-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = output; }; name = Default; }; 85EF896215669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-WindowsMedia.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = WindowsMedia; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = YES; }; name = Development; }; 85EF896315669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-WindowsMedia.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = WindowsMedia; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = NO; }; name = Deployment; }; 85EF896415669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-WindowsMedia.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = WindowsMedia; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; }; name = Default; }; 85EF897515669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 2; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-Musepack.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = "-lmpcdec"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Musepack; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = YES; }; name = Development; }; 85EF897615669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-Musepack.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = "-lmpcdec"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Musepack; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; ZERO_LINK = NO; }; name = Deployment; }; 85EF897715669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_OPTIMIZATION_LEVEL = 0; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "Info-Musepack.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = "-lmpcdec"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Musepack; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = format; }; name = Default; }; 85EF898515669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-ID3Tag.plist"; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_LDFLAGS = ( "-lid3tag", "-lz", ); OTHER_REZFLAGS = ""; PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; PRODUCT_NAME = ID3Tag; SECTORDER_FLAGS = ""; USE_HEADERMAP = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; ZERO_LINK = YES; }; name = Development; }; 85EF898615669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-ID3Tag.plist"; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_LDFLAGS = ( "-lid3tag", "-lz", ); OTHER_REZFLAGS = ""; PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; PRODUCT_NAME = ID3Tag; SECTORDER_FLAGS = ""; USE_HEADERMAP = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; ZERO_LINK = NO; }; name = Deployment; }; 85EF898715669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-ID3Tag.plist"; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_LDFLAGS = ( "-lid3tag", "-lz", ); OTHER_REZFLAGS = ""; PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; PRODUCT_NAME = ID3Tag; SECTORDER_FLAGS = ""; USE_HEADERMAP = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; }; name = Default; }; 85EF899715669BDC00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-VorbisTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lvorbis", "-lvorbisfile", "-logg", ); OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = VorbisTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; ZERO_LINK = YES; }; name = Development; }; 85EF899815669BDC00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-VorbisTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lvorbis", "-lvorbisfile", "-logg", ); OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = VorbisTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; ZERO_LINK = NO; }; name = Deployment; }; 85EF899915669BDC00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-VorbisTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ( "-lvorbis", "-lvorbisfile", "-logg", ); OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = VorbisTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; }; name = Default; }; 85EF89A815669BDD00DD5F41 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLACTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLACTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; ZERO_LINK = YES; }; name = Development; }; 85EF89A915669BDD00DD5F41 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLACTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLACTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; ZERO_LINK = NO; }; name = Deployment; }; 85EF89AA15669BDD00DD5F41 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Development\""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLACTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLACTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = tags; }; name = Default; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 85A468B315505DAB008CAE09 /* Build configuration list for PBXProject "Cynthiune" */ = { isa = XCConfigurationList; buildConfigurations = ( 85A468B415505DAB008CAE09 /* Development */, 85A468B515505DAB008CAE09 /* Deployment */, 85A468B615505DAB008CAE09 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF889D15669BDB00DD5F41 /* Build configuration list for PBXNativeTarget "Cynthiune" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF889E15669BDB00DD5F41 /* Development */, 85EF889F15669BDB00DD5F41 /* Deployment */, 85EF88A015669BDB00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF88C215669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Cynthiune framework" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF88C315669BDC00DD5F41 /* Development */, 85EF88C415669BDC00DD5F41 /* Deployment */, 85EF88C515669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF88D415669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "AudioFile" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF88D515669BDC00DD5F41 /* Development */, 85EF88D615669BDC00DD5F41 /* Deployment */, 85EF88D715669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF88E515669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "FLAC" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF88E615669BDC00DD5F41 /* Development */, 85EF88E715669BDC00DD5F41 /* Deployment */, 85EF88E815669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF88F815669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "MP3" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF88F915669BDC00DD5F41 /* Development */, 85EF88FA15669BDC00DD5F41 /* Deployment */, 85EF88FB15669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF890915669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Mod" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF890A15669BDC00DD5F41 /* Development */, 85EF890B15669BDC00DD5F41 /* Deployment */, 85EF890C15669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF891A15669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Ogg" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF891B15669BDC00DD5F41 /* Development */, 85EF891C15669BDC00DD5F41 /* Deployment */, 85EF891D15669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF892F15669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "MacOSXPlayer" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF893015669BDC00DD5F41 /* Development */, 85EF893115669BDC00DD5F41 /* Deployment */, 85EF893215669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF894115669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Esound" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF894215669BDC00DD5F41 /* Development */, 85EF894315669BDC00DD5F41 /* Deployment */, 85EF894415669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF895115669BDC00DD5F41 /* Build configuration list for PBXBundleTarget "dummy" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF895215669BDC00DD5F41 /* Development */, 85EF895315669BDC00DD5F41 /* Deployment */, 85EF895415669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF896115669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "WindowsMedia" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF896215669BDC00DD5F41 /* Development */, 85EF896315669BDC00DD5F41 /* Deployment */, 85EF896415669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF897415669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "Musepack" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF897515669BDC00DD5F41 /* Development */, 85EF897615669BDC00DD5F41 /* Deployment */, 85EF897715669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF898415669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "ID3Tag" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF898515669BDC00DD5F41 /* Development */, 85EF898615669BDC00DD5F41 /* Deployment */, 85EF898715669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF899615669BDC00DD5F41 /* Build configuration list for PBXNativeTarget "VorbisTags" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF899715669BDC00DD5F41 /* Development */, 85EF899815669BDC00DD5F41 /* Deployment */, 85EF899915669BDC00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 85EF89A715669BDD00DD5F41 /* Build configuration list for PBXNativeTarget "FLACTags" */ = { isa = XCConfigurationList; buildConfigurations = ( 85EF89A815669BDD00DD5F41 /* Development */, 85EF89A915669BDD00DD5F41 /* Deployment */, 85EF89AA15669BDD00DD5F41 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; } Cynthiune-1.0.0/Cynthiune.xcode/project.pbxproj000644 001751 000024 00000344133 12014507041 022264 0ustar00multixstaff000000 000000 // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 39; objects = { 080E96DDFE201D6D7F000001 = { children = ( EAFFEE82086E61A7039AFE6D, EAFFEE4B086E54DA039AFE6D, EA8795E006F66AA403809032, EAFFEE4D086E54DA039AFE6D, EA778ACD09B5778A032657EF, EAFFEE50086E54DA039AFE6D, EAFFEE56086E54DA039AFE6D, EAFFEE58086E54DA039AFE6D, EA8BBBFA0682D60703C2B047, EA8A19180688EE2B03C0F62E, EAC9033808F2ED0603D0D62A, F7858BEC061FC27301C0FE28, F7858BEE061FC27301C0FE28, F7858BF0061FC27301C0FE28, EAC9033C08F2ED3103D0D62A, EAFFEE86086E61D7039AFE6D, F7858BF4061FC27301C0FE28, EA73D4B5074C81F203F60D55, EA73D4B7074C81F203F60D55, F7858BF6061FC27301C0FE28, EAC9034008F2ED4903D0D62A, F7858BF8061FC27301C0FE28, EA7EE76C063AE6B6039F4895, EAC9034208F2ED4903D0D62A, F7858BFD061FC27301C0FE28, F7858BFF061FC27301C0FE28, EA958510078BA57703566F1F, F7858C01061FC27301C0FE28, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; 089C165CFE840E0CC02AAC07 = { children = ( 089C165DFE840E0CC02AAC07, EA7EE7DC063B0267039F4895, EAB991A1086E52690334F83B, EA8E3562094766F7032DC65E, EA88F6F2068222A103ABED23, EA8E355D09476698032DC65E, EA8E35630947670D032DC65E, EA8E355E094766BD032DC65E, ); isa = PBXVariantGroup; name = InfoPlist.strings; refType = 4; sourceTree = ""; }; 089C165DFE840E0CC02AAC07 = { fileEncoding = 10; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; //080 //081 //082 //083 //084 //100 //101 //102 //103 //104 1058C7A0FEA54F0111CA2CBB = { children = ( F502405C03B83D6601000004, F502406503B83D9A01000004, F502404803B83C9E01000004, F531F10803BB93F301000004, 29B97325FDCFA39411CA2CEA, 29B97324FDCFA39411CA2CEA, EA9EE052078207F20394BCE8, ); isa = PBXGroup; name = "Linked Frameworks"; refType = 4; sourceTree = ""; }; //100 //101 //102 //103 //104 //190 //191 //192 //193 //194 19C28FACFE9D520D11CA2CBB = { children = ( 8551FEE5156AC1E4005E1C81, 8551FF06156AC1E5005E1C81, 8551FF13156AC1E5005E1C81, 8551FF20156AC1E5005E1C81, 8551FF2F156AC1E5005E1C81, 8551FF3C156AC1E6005E1C81, 8551FF49156AC1E6005E1C81, 8551FF5A156AC1E6005E1C81, 8551FF80156AC1E8005E1C81, 8551FF8F156AC1E9005E1C81, 8551FF9B156AC1EA005E1C81, 8551FFA9156AC1EB005E1C81, 8551FFB6156AC1EC005E1C81, ); isa = PBXGroup; name = Products; refType = 4; sourceTree = ""; }; //190 //191 //192 //193 //194 //290 //291 //292 //293 //294 29B97313FDCFA39411CA2CEA = { buildSettings = { }; buildStyles = ( 4A9504CCFFE6A4B311CA0CBA, 4A9504CDFFE6A4B311CA0CBA, ); hasScannedForEncodings = 1; isa = PBXProject; knownRegions = ( English, French, German, Italian, Slovak, TraditionalChinese, Hungarian, Spanish, ); mainGroup = 29B97314FDCFA39411CA2CEA; projectDirPath = ""; targets = ( 8551FE5A156AC1E4005E1C81, 8551FEE7156AC1E4005E1C81, 8551FF07156AC1E5005E1C81, 8551FF14156AC1E5005E1C81, 8551FF21156AC1E5005E1C81, 8551FF30156AC1E5005E1C81, 8551FF3D156AC1E6005E1C81, 8551FF4A156AC1E6005E1C81, 8551FF74156AC1E8005E1C81, 8551FF81156AC1E8005E1C81, 8551FF90156AC1E9005E1C81, 8551FF9C156AC1EA005E1C81, 8551FFAA156AC1EB005E1C81, ); }; 29B97314FDCFA39411CA2CEA = { children = ( 080E96DDFE201D6D7F000001, F559092303B834D301000004, EA1D796D0626400703CFD9F6, F51A012B03BA9CCB01000004, 29B97315FDCFA39411CA2CEA, 29B97317FDCFA39411CA2CEA, 29B97323FDCFA39411CA2CEA, 19C28FACFE9D520D11CA2CBB, ); isa = PBXGroup; name = Cynthiune; path = ""; refType = 4; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA = { children = ( 29B97316FDCFA39411CA2CEA, ); isa = PBXGroup; name = "Other Sources"; path = ""; refType = 4; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; refType = 4; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA = { children = ( F59C8F6803C0152501C14AF2, 089C165CFE840E0CC02AAC07, EA7EE7DD063B035E039F4895, F559092103B834CA01000004, F7BED96F0621E9B5010E156D, F7BED9710621E9CF010E156D, EA958513078BAB6B03566F1F, ); isa = PBXGroup; name = Resources; path = ""; refType = 4; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA = { children = ( EAFFEE69086E5596039AFE6D, 1058C7A0FEA54F0111CA2CBB, ); isa = PBXGroup; name = Frameworks; path = ""; refType = 4; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; refType = 0; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; refType = 0; sourceTree = ""; }; //290 //291 //292 //293 //294 //4A0 //4A1 //4A2 //4A3 //4A4 4A9504CCFFE6A4B311CA0CBA = { buildSettings = { COPY_PHASE_STRIP = YES; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; OPTIMIZATION_CFLAGS = "-O2"; ZERO_LINK = YES; }; isa = PBXBuildStyle; name = Development; }; 4A9504CDFFE6A4B311CA0CBA = { buildSettings = { COPY_PHASE_STRIP = YES; GCC_ENABLE_FIX_AND_CONTINUE = NO; ZERO_LINK = NO; }; isa = PBXBuildStyle; name = Deployment; }; //4A0 //4A1 //4A2 //4A3 //4A4 //850 //851 //852 //853 //854 8551FE5A156AC1E4005E1C81 = { buildPhases = ( 8551FE5F156AC1E4005E1C81, 8551FE7C156AC1E4005E1C81, 8551FEB6156AC1E4005E1C81, 8551FED4156AC1E4005E1C81, 8551FED7156AC1E4005E1C81, 8551FED9156AC1E4005E1C81, ); buildRules = ( ); buildSettings = { BUILD_SETTING = ""; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_MODEL_TUNING = G3; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-Cynthiune.plist"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = "-L/usr/local/lib -lstdc++"; PREBINDING = NO; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = app; }; dependencies = ( 8551FFB8156AC1EC005E1C81, 8551FFBA156AC1EC005E1C81, 8580DB76156AD6770045AEE3, 8551FFBC156AC1EC005E1C81, 857E821915951F65003F23A2, ); isa = PBXNativeTarget; name = Cynthiune; productName = Cynthiune; productReference = 8551FEE5156AC1E4005E1C81; productType = "com.apple.product-type.application"; }; 8551FE5F156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( 8551FE60156AC1E4005E1C81, 8551FE61156AC1E4005E1C81, 8551FE62156AC1E4005E1C81, 8551FE63156AC1E4005E1C81, 8551FE64156AC1E4005E1C81, 8551FE65156AC1E4005E1C81, 8551FE66156AC1E4005E1C81, 8551FE67156AC1E4005E1C81, 8551FE68156AC1E4005E1C81, 8551FE69156AC1E4005E1C81, 8551FE6A156AC1E4005E1C81, 8551FE6B156AC1E4005E1C81, 8551FE6C156AC1E4005E1C81, 8551FE6D156AC1E4005E1C81, 8551FE6E156AC1E4005E1C81, 8551FE6F156AC1E4005E1C81, 8551FE70156AC1E4005E1C81, 8551FE71156AC1E4005E1C81, 8551FE72156AC1E4005E1C81, 8551FE73156AC1E4005E1C81, 8551FE74156AC1E4005E1C81, 8551FE75156AC1E4005E1C81, 8551FE76156AC1E4005E1C81, 8551FE77156AC1E4005E1C81, 8551FE78156AC1E4005E1C81, 8551FE79156AC1E4005E1C81, 8551FE7A156AC1E4005E1C81, 8551FE7B156AC1E4005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FE60156AC1E4005E1C81 = { fileRef = EA8795DF06F66AA403809032; isa = PBXBuildFile; settings = { }; }; 8551FE61156AC1E4005E1C81 = { fileRef = F7858BEB061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE62156AC1E4005E1C81 = { fileRef = F7858BED061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE63156AC1E4005E1C81 = { fileRef = F7858BEF061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE64156AC1E4005E1C81 = { fileRef = F7858BF3061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE65156AC1E4005E1C81 = { fileRef = F7858BF5061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE66156AC1E4005E1C81 = { fileRef = F7858BF7061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE67156AC1E4005E1C81 = { fileRef = EA7EE76B063AE6B6039F4895; isa = PBXBuildFile; settings = { }; }; 8551FE68156AC1E4005E1C81 = { fileRef = F7858BFC061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE69156AC1E4005E1C81 = { fileRef = F7858BFE061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE6A156AC1E4005E1C81 = { fileRef = F7858C00061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE6B156AC1E4005E1C81 = { fileRef = EA73D4B4074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; 8551FE6C156AC1E4005E1C81 = { fileRef = EA73D4B6074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; 8551FE6D156AC1E4005E1C81 = { fileRef = EA95850F078BA57703566F1F; isa = PBXBuildFile; settings = { }; }; 8551FE6E156AC1E4005E1C81 = { fileRef = EAFFEE4C086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FE6F156AC1E4005E1C81 = { fileRef = EAFFEE4F086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FE70156AC1E4005E1C81 = { fileRef = EAFFEE55086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FE71156AC1E4005E1C81 = { fileRef = EAFFEE57086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FE72156AC1E4005E1C81 = { fileRef = EA8BBBF90682D60703C2B047; isa = PBXBuildFile; settings = { }; }; 8551FE73156AC1E4005E1C81 = { fileRef = EA8A19170688EE2B03C0F62E; isa = PBXBuildFile; settings = { }; }; 8551FE74156AC1E4005E1C81 = { fileRef = EAFFEE81086E61A7039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FE75156AC1E4005E1C81 = { fileRef = EAFFEE85086E61D7039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FE76156AC1E4005E1C81 = { fileRef = EAC9033708F2ED0603D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FE77156AC1E4005E1C81 = { fileRef = EAC9033B08F2ED3103D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FE78156AC1E4005E1C81 = { fileRef = EAC9033F08F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FE79156AC1E4005E1C81 = { fileRef = EAC9034108F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FE7A156AC1E4005E1C81 = { fileRef = EAAF6D4D092BC55703000102; isa = PBXBuildFile; settings = { }; }; 8551FE7B156AC1E4005E1C81 = { fileRef = EA778ACC09B5778A032657EF; isa = PBXBuildFile; settings = { }; }; 8551FE7C156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( 8551FE7D156AC1E4005E1C81, 8551FE7E156AC1E4005E1C81, 8551FE7F156AC1E4005E1C81, 8551FE80156AC1E4005E1C81, 8551FE81156AC1E4005E1C81, 8551FE82156AC1E4005E1C81, 8551FE83156AC1E4005E1C81, 8551FE84156AC1E4005E1C81, 8551FE85156AC1E4005E1C81, 8551FE86156AC1E4005E1C81, 8551FE87156AC1E4005E1C81, 8551FE88156AC1E4005E1C81, 8551FE89156AC1E4005E1C81, 8551FE8A156AC1E4005E1C81, 8551FE8B156AC1E4005E1C81, 8551FE8C156AC1E4005E1C81, 8551FE8D156AC1E4005E1C81, 8551FE8E156AC1E4005E1C81, 8551FE8F156AC1E4005E1C81, 8551FE90156AC1E4005E1C81, 8551FE91156AC1E4005E1C81, 8551FE92156AC1E4005E1C81, 8551FE93156AC1E4005E1C81, 8551FE94156AC1E4005E1C81, 8551FE95156AC1E4005E1C81, 8551FE96156AC1E4005E1C81, 8551FE97156AC1E4005E1C81, 8551FE98156AC1E4005E1C81, 8551FE99156AC1E4005E1C81, 8551FE9A156AC1E4005E1C81, 8551FE9B156AC1E4005E1C81, 8551FE9C156AC1E4005E1C81, 8551FE9D156AC1E4005E1C81, 8551FE9E156AC1E4005E1C81, 8551FE9F156AC1E4005E1C81, 8551FEA0156AC1E4005E1C81, 8551FEA1156AC1E4005E1C81, 8551FEA2156AC1E4005E1C81, 8551FEA3156AC1E4005E1C81, 8551FEA4156AC1E4005E1C81, 8551FEA5156AC1E4005E1C81, 8551FEA6156AC1E4005E1C81, 8551FEA7156AC1E4005E1C81, 8551FEA8156AC1E4005E1C81, 8551FEA9156AC1E4005E1C81, 8551FEAA156AC1E4005E1C81, 8551FEAB156AC1E4005E1C81, 8551FEAC156AC1E4005E1C81, 8551FEAD156AC1E4005E1C81, 8551FEAE156AC1E4005E1C81, 8551FEAF156AC1E4005E1C81, 8551FEB0156AC1E4005E1C81, 8551FEB1156AC1E4005E1C81, 8551FEB2156AC1E4005E1C81, 8551FEB3156AC1E4005E1C81, 8580DB74156AD6700045AEE3, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FE7D156AC1E4005E1C81 = { fileRef = 089C165CFE840E0CC02AAC07; isa = PBXBuildFile; settings = { }; }; 8551FE7E156AC1E4005E1C81 = { fileRef = EA7EE7DD063B035E039F4895; isa = PBXBuildFile; settings = { }; }; 8551FE7F156AC1E4005E1C81 = { fileRef = F51A012C03BA9CE401000004; isa = PBXBuildFile; settings = { }; }; 8551FE80156AC1E4005E1C81 = { fileRef = F51A012D03BA9CE401000004; isa = PBXBuildFile; settings = { }; }; 8551FE81156AC1E4005E1C81 = { fileRef = F59C8F7903C01A7601C14AF2; isa = PBXBuildFile; settings = { }; }; 8551FE82156AC1E4005E1C81 = { fileRef = EA7EE7E1063B04D0039F4895; isa = PBXBuildFile; settings = { }; }; 8551FE83156AC1E4005E1C81 = { fileRef = EA7EE7E2063B04D0039F4895; isa = PBXBuildFile; settings = { }; }; 8551FE84156AC1E4005E1C81 = { fileRef = F559092103B834CA01000004; isa = PBXBuildFile; settings = { }; }; 8551FE85156AC1E4005E1C81 = { fileRef = F7BED96F0621E9B5010E156D; isa = PBXBuildFile; settings = { }; }; 8551FE86156AC1E4005E1C81 = { fileRef = F7BED9710621E9CF010E156D; isa = PBXBuildFile; settings = { }; }; 8551FE87156AC1E4005E1C81 = { fileRef = F59C8F6B03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; 8551FE88156AC1E4005E1C81 = { fileRef = F7858C1F061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE89156AC1E4005E1C81 = { fileRef = F7858C21061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE8A156AC1E4005E1C81 = { fileRef = F7858C22061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE8B156AC1E4005E1C81 = { fileRef = F7858C24061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE8C156AC1E4005E1C81 = { fileRef = F7858C23061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE8D156AC1E4005E1C81 = { fileRef = F59C8F6C03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; 8551FE8E156AC1E4005E1C81 = { fileRef = F7858C28061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE8F156AC1E4005E1C81 = { fileRef = F59C8F6D03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; 8551FE90156AC1E4005E1C81 = { fileRef = F7858C2A061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE91156AC1E4005E1C81 = { fileRef = F59C8F6E03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; 8551FE92156AC1E4005E1C81 = { fileRef = F7858C2B061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE93156AC1E4005E1C81 = { fileRef = F59C8F6F03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; 8551FE94156AC1E4005E1C81 = { fileRef = F7858C2E061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE95156AC1E4005E1C81 = { fileRef = F59C8F7003C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; 8551FE96156AC1E4005E1C81 = { fileRef = F7858C33061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FE97156AC1E4005E1C81 = { fileRef = EA8A20D00675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FE98156AC1E4005E1C81 = { fileRef = EA8A20CF0675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FE99156AC1E4005E1C81 = { fileRef = EA8A20D20675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FE9A156AC1E4005E1C81 = { fileRef = EA8A20D10675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FE9B156AC1E4005E1C81 = { fileRef = EA8A20D40675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FE9C156AC1E4005E1C81 = { fileRef = EA8A20D30675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FE9D156AC1E4005E1C81 = { fileRef = EA958513078BAB6B03566F1F; isa = PBXBuildFile; settings = { }; }; 8551FE9E156AC1E4005E1C81 = { fileRef = EAB991A3086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FE9F156AC1E4005E1C81 = { fileRef = EAB991A4086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FEA0156AC1E4005E1C81 = { fileRef = EAB991A5086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FEA1156AC1E4005E1C81 = { fileRef = EAB991A6086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FEA2156AC1E4005E1C81 = { fileRef = EAB991A7086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FEA3156AC1E4005E1C81 = { fileRef = EAB991A8086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FEA4156AC1E4005E1C81 = { fileRef = EAB991A9086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FEA5156AC1E4005E1C81 = { fileRef = EAB991AA086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; 8551FEA6156AC1E4005E1C81 = { fileRef = EAFFEE89086E688A039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FEA7156AC1E4005E1C81 = { fileRef = EAFFEE8A086E688A039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FEA8156AC1E4005E1C81 = { fileRef = EAFFEE8D086E688A039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FEA9156AC1E4005E1C81 = { fileRef = EAAF6D39092BC4F303000102; isa = PBXBuildFile; settings = { }; }; 8551FEAA156AC1E4005E1C81 = { fileRef = EAAF6D3A092BC4F303000102; isa = PBXBuildFile; settings = { }; }; 8551FEAB156AC1E4005E1C81 = { fileRef = EAAF6D3E092BC51E03000102; isa = PBXBuildFile; settings = { }; }; 8551FEAC156AC1E4005E1C81 = { fileRef = EAAF6D3F092BC51E03000102; isa = PBXBuildFile; settings = { }; }; 8551FEAD156AC1E4005E1C81 = { fileRef = EAAF6D43092BC51E03000102; isa = PBXBuildFile; settings = { }; }; 8551FEAE156AC1E4005E1C81 = { fileRef = EAAF6D44092BC51E03000102; isa = PBXBuildFile; settings = { }; }; 8551FEAF156AC1E4005E1C81 = { fileRef = EA4FAC5009A456860310F3BF; isa = PBXBuildFile; settings = { }; }; 8551FEB0156AC1E4005E1C81 = { fileRef = EA5AA10B09A51CA303396ECD; isa = PBXBuildFile; settings = { }; }; 8551FEB1156AC1E4005E1C81 = { fileRef = EA5AA10D09A5220203396ECD; isa = PBXBuildFile; settings = { }; }; 8551FEB2156AC1E4005E1C81 = { fileRef = EAA6DF9109A663DE034E8D88; isa = PBXBuildFile; settings = { }; }; 8551FEB3156AC1E4005E1C81 = { fileRef = EAA6DF9209A663DE034E8D88; isa = PBXBuildFile; settings = { }; }; 8551FEB6156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( 8551FEB7156AC1E4005E1C81, 8551FEB8156AC1E4005E1C81, 8551FEB9156AC1E4005E1C81, 8551FEBA156AC1E4005E1C81, 8551FEBB156AC1E4005E1C81, 8551FEBC156AC1E4005E1C81, 8551FEBD156AC1E4005E1C81, 8551FEBE156AC1E4005E1C81, 8551FEBF156AC1E4005E1C81, 8551FEC0156AC1E4005E1C81, 8551FEC1156AC1E4005E1C81, 8551FEC2156AC1E4005E1C81, 8551FEC3156AC1E4005E1C81, 8551FEC4156AC1E4005E1C81, 8551FEC5156AC1E4005E1C81, 8551FEC6156AC1E4005E1C81, 8551FEC7156AC1E4005E1C81, 8551FEC8156AC1E4005E1C81, 8551FEC9156AC1E4005E1C81, 8551FECA156AC1E4005E1C81, 8551FECB156AC1E4005E1C81, 8551FECC156AC1E4005E1C81, 8551FECD156AC1E4005E1C81, 8551FECE156AC1E4005E1C81, 8551FECF156AC1E4005E1C81, 8551FED0156AC1E4005E1C81, 8551FED1156AC1E4005E1C81, 8551FED2156AC1E4005E1C81, 8551FED3156AC1E4005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FEB7156AC1E4005E1C81 = { fileRef = 29B97316FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { ATTRIBUTES = ( ); }; }; 8551FEB8156AC1E4005E1C81 = { fileRef = EA8795E006F66AA403809032; isa = PBXBuildFile; settings = { }; }; 8551FEB9156AC1E4005E1C81 = { fileRef = F7858BEC061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEBA156AC1E4005E1C81 = { fileRef = F7858BEE061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEBB156AC1E4005E1C81 = { fileRef = F7858BF0061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEBC156AC1E4005E1C81 = { fileRef = F7858BF4061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEBD156AC1E4005E1C81 = { fileRef = F7858BF6061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEBE156AC1E4005E1C81 = { fileRef = F7858BF8061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEBF156AC1E4005E1C81 = { fileRef = EA7EE76C063AE6B6039F4895; isa = PBXBuildFile; settings = { }; }; 8551FEC0156AC1E4005E1C81 = { fileRef = F7858BFD061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEC1156AC1E4005E1C81 = { fileRef = F7858BFF061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEC2156AC1E4005E1C81 = { fileRef = F7858C01061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEC3156AC1E4005E1C81 = { fileRef = EA8A19180688EE2B03C0F62E; isa = PBXBuildFile; settings = { }; }; 8551FEC4156AC1E4005E1C81 = { fileRef = EA8BBBFA0682D60703C2B047; isa = PBXBuildFile; settings = { }; }; 8551FEC5156AC1E4005E1C81 = { fileRef = EA73D4B5074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; 8551FEC6156AC1E4005E1C81 = { fileRef = EA73D4B7074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; 8551FEC7156AC1E4005E1C81 = { fileRef = EA958510078BA57703566F1F; isa = PBXBuildFile; settings = { }; }; 8551FEC8156AC1E4005E1C81 = { fileRef = EAFFEE4B086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FEC9156AC1E4005E1C81 = { fileRef = EAFFEE4D086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FECA156AC1E4005E1C81 = { fileRef = EAFFEE50086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FECB156AC1E4005E1C81 = { fileRef = EAFFEE56086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FECC156AC1E4005E1C81 = { fileRef = EAFFEE58086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FECD156AC1E4005E1C81 = { fileRef = EAFFEE82086E61A7039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FECE156AC1E4005E1C81 = { fileRef = EAFFEE86086E61D7039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FECF156AC1E4005E1C81 = { fileRef = EAC9033808F2ED0603D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FED0156AC1E4005E1C81 = { fileRef = EAC9033C08F2ED3103D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FED1156AC1E4005E1C81 = { fileRef = EAC9034008F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FED2156AC1E4005E1C81 = { fileRef = EAC9034208F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; 8551FED3156AC1E4005E1C81 = { fileRef = EA778ACD09B5778A032657EF; isa = PBXBuildFile; settings = { }; }; 8551FED4156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( 8551FED5156AC1E4005E1C81, 8551FED6156AC1E4005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FED5156AC1E4005E1C81 = { fileRef = 29B97324FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FED6156AC1E4005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FED7156AC1E4005E1C81 = { buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( 8551FFCB156AC1EE005E1C81, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FED9156AC1E4005E1C81 = { buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = ( 8551FFC1156AC1EC005E1C81, 8551FFC4156AC1EC005E1C81, 8551FFCA156AC1EE005E1C81, 857E8238159523DB003F23A2, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FEE5156AC1E4005E1C81 = { explicitFileType = wrapper.application; includeInIndex = 0; isa = PBXFileReference; path = Cynthiune.app; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FEE7156AC1E4005E1C81 = { buildPhases = ( 8551FEE8156AC1E4005E1C81, 8551FEF7156AC1E4005E1C81, 8551FEF8156AC1E4005E1C81, 8551FF02156AC1E4005E1C81, 8551FF04156AC1E4005E1C81, ); buildRules = ( ); buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_MODEL_TUNING = G3; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; INFOPLIST_FILE = "Info-Cynthiune_framework.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ""; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = framework; }; dependencies = ( ); isa = PBXNativeTarget; name = "Cynthiune framework"; productInstallPath = ""; productName = "Cynthiune framework"; productReference = 8551FF06156AC1E5005E1C81; productType = "com.apple.product-type.framework"; }; 8551FEE8156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( 8551FEE9156AC1E4005E1C81, 8551FEEA156AC1E4005E1C81, 8551FEEB156AC1E4005E1C81, 8551FEEC156AC1E4005E1C81, 8551FEED156AC1E4005E1C81, 8551FEEE156AC1E4005E1C81, 8551FEEF156AC1E4005E1C81, 8551FEF1156AC1E4005E1C81, 8551FEF2156AC1E4005E1C81, 8551FEF3156AC1E4005E1C81, 8551FEF4156AC1E4005E1C81, 8551FEF5156AC1E4005E1C81, 8551FEF6156AC1E4005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FEE9156AC1E4005E1C81 = { fileRef = F7858BFB061FC27301C0FE28; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEEA156AC1E4005E1C81 = { fileRef = EA8795E506F66AA403809032; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEEB156AC1E4005E1C81 = { fileRef = F7858BEA061FC27301C0FE28; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEEC156AC1E4005E1C81 = { fileRef = EAC9033508F2EB2003D0D62A; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEED156AC1E4005E1C81 = { fileRef = EA7EE734063AE6B6039F4895; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEEE156AC1E4005E1C81 = { fileRef = EA8795E306F66AA403809032; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEEF156AC1E4005E1C81 = { fileRef = EA547B68078A36000358AD96; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEF1156AC1E4005E1C81 = { fileRef = EAFFEE6C086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEF2156AC1E4005E1C81 = { fileRef = EAFFEE6E086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEF3156AC1E4005E1C81 = { fileRef = EAFFEE70086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEF4156AC1E4005E1C81 = { fileRef = EAFFEE72086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEF5156AC1E4005E1C81 = { fileRef = EAFFEE74086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEF6156AC1E4005E1C81 = { fileRef = F7858C1C061FC2A801C0FE28; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; 8551FEF7156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FEF8156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( 8551FEF9156AC1E4005E1C81, 8551FEFA156AC1E4005E1C81, 8551FEFB156AC1E4005E1C81, 8551FEFC156AC1E4005E1C81, 8551FEFD156AC1E4005E1C81, 8551FEFE156AC1E4005E1C81, 8551FEFF156AC1E4005E1C81, 8551FF00156AC1E4005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FEF9156AC1E4005E1C81 = { fileRef = F7858C02061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; 8551FEFA156AC1E4005E1C81 = { fileRef = EA8795E406F66AA403809032; isa = PBXBuildFile; settings = { }; }; 8551FEFB156AC1E4005E1C81 = { fileRef = EA547B69078A36000358AD96; isa = PBXBuildFile; settings = { }; }; 8551FEFC156AC1E4005E1C81 = { fileRef = EAFFEE6D086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FEFD156AC1E4005E1C81 = { fileRef = EAFFEE6F086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FEFE156AC1E4005E1C81 = { fileRef = EAFFEE71086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FEFF156AC1E4005E1C81 = { fileRef = EAFFEE73086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FF00156AC1E4005E1C81 = { fileRef = EAFFEE75086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; 8551FF02156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF03156AC1E4005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF03156AC1E4005E1C81 = { fileRef = 29B97324FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF04156AC1E4005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF06156AC1E5005E1C81 = { explicitFileType = wrapper.framework; includeInIndex = 0; isa = PBXFileReference; path = Cynthiune.framework; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF07156AC1E5005E1C81 = { buildPhases = ( 8551FF09156AC1E5005E1C81, 8551FF0B156AC1E5005E1C81, 8551FF0C156AC1E5005E1C81, 8551FF0E156AC1E5005E1C81, 8551FF11156AC1E5005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_MODEL_TUNING = G3; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-AudioFile.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-laudiofile"; OTHER_REZFLAGS = ""; PRODUCT_NAME = AudioFile; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( 8551FFC0156AC1EC005E1C81, ); isa = PBXNativeTarget; name = AudioFile; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = AudioFile; productReference = 8551FF13156AC1E5005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF09156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF0A156AC1E5005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF0A156AC1E5005E1C81 = { fileRef = EA8A20BF0675A4EB03A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FF0B156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF0C156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF0D156AC1E5005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF0D156AC1E5005E1C81 = { fileRef = EA8A20BD0675A4D003A8D3C1; isa = PBXBuildFile; settings = { }; }; 8551FF0E156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 857E825215952456003F23A2, 8551FF0F156AC1E5005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF0F156AC1E5005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF11156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF13156AC1E5005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = AudioFile.format; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF14156AC1E5005E1C81 = { buildPhases = ( 8551FF15156AC1E5005E1C81, 8551FF17156AC1E5005E1C81, 8551FF18156AC1E5005E1C81, 8551FF1A156AC1E5005E1C81, 8551FF1E156AC1E5005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLAC.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLAC; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXNativeTarget; name = FLAC; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = FLAC; productReference = 8551FF20156AC1E5005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF15156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF16156AC1E5005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF16156AC1E5005E1C81 = { fileRef = EA8F75AD06F89D9103F15592; isa = PBXBuildFile; settings = { }; }; 8551FF17156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF18156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF19156AC1E5005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF19156AC1E5005E1C81 = { fileRef = EA8F75AE06F89D9103F15592; isa = PBXBuildFile; settings = { }; }; 8551FF1A156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFCC156AC1EE005E1C81, 8551FF1C156AC1E5005E1C81, 8551FF1D156AC1E5005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF1C156AC1E5005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF1D156AC1E5005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF1E156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF20156AC1E5005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = FLAC.format; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF21156AC1E5005E1C81 = { buildPhases = ( 8551FF22156AC1E5005E1C81, 8551FF25156AC1E5005E1C81, 8551FF26156AC1E5005E1C81, 8551FF29156AC1E5005E1C81, 8551FF2D156AC1E5005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_MODEL_TUNING = G3; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MP3.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lmad -lid3tag -lz"; OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = MP3; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXNativeTarget; name = MP3; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = MP3; productReference = 8551FF2F156AC1E5005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF22156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF23156AC1E5005E1C81, 8551FF24156AC1E5005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF23156AC1E5005E1C81 = { fileRef = EA85A0EF0627755D0303B004; isa = PBXBuildFile; settings = { }; }; 8551FF24156AC1E5005E1C81 = { fileRef = EA7EE79F063AEA0B039F4895; isa = PBXBuildFile; settings = { }; }; 8551FF25156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF26156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF27156AC1E5005E1C81, 8551FF28156AC1E5005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF27156AC1E5005E1C81 = { fileRef = EA85A0ED062775460303B004; isa = PBXBuildFile; settings = { }; }; 8551FF28156AC1E5005E1C81 = { fileRef = EA7EE7A3063AEA4F039F4895; isa = PBXBuildFile; settings = { }; }; 8551FF29156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFCD156AC1EE005E1C81, 8551FF2B156AC1E5005E1C81, 8551FF2C156AC1E5005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF2B156AC1E5005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF2C156AC1E5005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF2D156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF2F156AC1E5005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = MP3.format; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF30156AC1E5005E1C81 = { buildPhases = ( 8551FF31156AC1E5005E1C81, 8551FF33156AC1E5005E1C81, 8551FF34156AC1E5005E1C81, 8551FF36156AC1E5005E1C81, 8551FF3A156AC1E5005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = "/usr/local/include/libmodplug ."; INFOPLIST_FILE = "Info-Mod.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lmodplug -lstdc++"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Mod; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXNativeTarget; name = Mod; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Mod; productReference = 8551FF3C156AC1E6005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF31156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF32156AC1E5005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF32156AC1E5005E1C81 = { fileRef = EA9ADB0206823B7A03000102; isa = PBXBuildFile; settings = { }; }; 8551FF33156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF34156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF35156AC1E5005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF35156AC1E5005E1C81 = { fileRef = EA9ADB0006823B6103000102; isa = PBXBuildFile; settings = { }; }; 8551FF36156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFCE156AC1EE005E1C81, 8551FF38156AC1E5005E1C81, 8551FF39156AC1E5005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF38156AC1E5005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF39156AC1E5005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF3A156AC1E5005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF3C156AC1E6005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = Mod.format; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF3D156AC1E6005E1C81 = { buildPhases = ( 8551FF3E156AC1E6005E1C81, 8551FF40156AC1E6005E1C81, 8551FF41156AC1E6005E1C81, 8551FF43156AC1E6005E1C81, 8551FF47156AC1E6005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-Ogg.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lvorbis -lvorbisfile -logg"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Ogg; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "\U0001-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXNativeTarget; name = Ogg; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Ogg.output; productReference = 8551FF49156AC1E6005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF3E156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF3F156AC1E6005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF3F156AC1E6005E1C81 = { fileRef = EA1D795906263FB803CFD9F6; isa = PBXBuildFile; settings = { }; }; 8551FF40156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF41156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF42156AC1E6005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF42156AC1E6005E1C81 = { fileRef = EA1D795606263FB803CFD9F6; isa = PBXBuildFile; settings = { }; }; 8551FF43156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFCF156AC1EE005E1C81, 8551FF45156AC1E6005E1C81, 8551FF46156AC1E6005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF45156AC1E6005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF46156AC1E6005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF47156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF49156AC1E6005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = Ogg.format; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF4A156AC1E6005E1C81 = { buildPhases = ( 8551FF4B156AC1E6005E1C81, 8551FF4D156AC1E6005E1C81, 8551FF4E156AC1E6005E1C81, 8551FF50156AC1E6005E1C81, 8551FF58156AC1E6005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_MODEL_TUNING = G3; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; GCC_TREAT_WARNINGS_AS_ERRORS = YES; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-MacOSXPlayer.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = MacOSXPlayer; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = output; }; dependencies = ( ); isa = PBXNativeTarget; name = MacOSXPlayer; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = MacOSXPlayer; productReference = 8551FF5A156AC1E6005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF4B156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF4C156AC1E6005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF4C156AC1E6005E1C81 = { fileRef = EA675448062726F10396FC5D; isa = PBXBuildFile; settings = { }; }; 8551FF4D156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF4E156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF4F156AC1E6005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF4F156AC1E6005E1C81 = { fileRef = EA675446062726D80396FC5D; isa = PBXBuildFile; settings = { }; }; 8551FF50156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFD0156AC1EE005E1C81, 8551FF52156AC1E6005E1C81, 8551FF53156AC1E6005E1C81, 8551FF54156AC1E6005E1C81, 8551FF55156AC1E6005E1C81, 8551FF56156AC1E6005E1C81, 8551FF57156AC1E6005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF52156AC1E6005E1C81 = { fileRef = F502406503B83D9A01000004; isa = PBXBuildFile; settings = { }; }; 8551FF53156AC1E6005E1C81 = { fileRef = F502404803B83C9E01000004; isa = PBXBuildFile; settings = { }; }; 8551FF54156AC1E6005E1C81 = { fileRef = F502405C03B83D6601000004; isa = PBXBuildFile; settings = { }; }; 8551FF55156AC1E6005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF56156AC1E6005E1C81 = { fileRef = F531F10803BB93F301000004; isa = PBXBuildFile; settings = { }; }; 8551FF57156AC1E6005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF58156AC1E6005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF5A156AC1E6005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = MacOSXPlayer.output; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF74156AC1E8005E1C81 = { buildPhases = ( 8551FF75156AC1E8005E1C81, 8551FF78156AC1E8005E1C81, 8551FF79156AC1E8005E1C81, 8551FF7C156AC1E8005E1C81, 8551FF7E156AC1E8005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; INFOPLIST_FILE = "Info-WindowsMedia.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = WindowsMedia; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXNativeTarget; name = WindowsMedia; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = WindowsMedia; productReference = 8551FF80156AC1E8005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF75156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF76156AC1E8005E1C81, 8551FF77156AC1E8005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF76156AC1E8005E1C81 = { fileRef = EA9316560770FCEB03000102; isa = PBXBuildFile; settings = { }; }; 8551FF77156AC1E8005E1C81 = { fileRef = EA9316580770FD0903000102; isa = PBXBuildFile; settings = { }; }; 8551FF78156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF79156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF7A156AC1E8005E1C81, 8551FF7B156AC1E8005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF7A156AC1E8005E1C81 = { fileRef = EA9316530770FC6503000102; isa = PBXBuildFile; settings = { }; }; 8551FF7B156AC1E8005E1C81 = { fileRef = EA93165A0770FD3003000102; isa = PBXBuildFile; settings = { }; }; 8551FF7C156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF7D156AC1E8005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF7D156AC1E8005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF7E156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF80156AC1E8005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = WindowsMedia.format; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF81156AC1E8005E1C81 = { buildPhases = ( 8551FF82156AC1E8005E1C81, 8551FF85156AC1E8005E1C81, 8551FF86156AC1E8005E1C81, 8551FF89156AC1E8005E1C81, 8551FF8D156AC1E8005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; GCC_OPTIMIZATION_LEVEL = 0; INFOPLIST_FILE = "Info-Musepack.plist"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = "-lmpcdec"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Musepack; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXNativeTarget; name = Musepack; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Musepack; productReference = 8551FF8F156AC1E9005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF82156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF83156AC1E8005E1C81, 8551FF84156AC1E8005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF83156AC1E8005E1C81 = { fileRef = EA03BA5409D0F84A036B92BF; isa = PBXBuildFile; settings = { }; }; 8551FF84156AC1E8005E1C81 = { fileRef = EA03BA5809D0F862036B92BF; isa = PBXBuildFile; settings = { }; }; 8551FF85156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF86156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF87156AC1E8005E1C81, 8551FF88156AC1E8005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF87156AC1E8005E1C81 = { fileRef = EA03BA5509D0F84A036B92BF; isa = PBXBuildFile; settings = { }; }; 8551FF88156AC1E8005E1C81 = { fileRef = EA03BA5909D0F862036B92BF; isa = PBXBuildFile; settings = { }; }; 8551FF89156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFD3156AC1EE005E1C81, 8551FF8A156AC1E8005E1C81, 8551FF8B156AC1E8005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF8A156AC1E8005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF8B156AC1E8005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF8D156AC1E8005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF8F156AC1E9005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = Musepack.format; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF90156AC1E9005E1C81 = { buildPhases = ( 8551FF91156AC1E9005E1C81, 8551FF93156AC1E9005E1C81, 8551FF94156AC1E9005E1C81, 8551FF96156AC1E9005E1C81, 8551FF99156AC1E9005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_MODEL_TUNING = G3; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-ID3Tag.plist"; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lid3tag -lz"; OTHER_REZFLAGS = ""; PRODUCT_NAME = ID3Tag; SECTORDER_FLAGS = ""; USE_HEADERMAP = NO; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = tags; }; dependencies = ( ); isa = PBXNativeTarget; name = ID3Tag; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = ID3Tag; productReference = 8551FF9B156AC1EA005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF91156AC1E9005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF92156AC1E9005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF92156AC1E9005E1C81 = { fileRef = EADC4D6709476C5903B0DF6D; isa = PBXBuildFile; settings = { }; }; 8551FF93156AC1E9005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF94156AC1E9005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF95156AC1E9005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF95156AC1E9005E1C81 = { fileRef = EADC4D6809476C5903B0DF6D; isa = PBXBuildFile; settings = { }; }; 8551FF96156AC1E9005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF97156AC1E9005E1C81, 8551FF98156AC1E9005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF97156AC1E9005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FF98156AC1E9005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FF99156AC1E9005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF9B156AC1EA005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = ID3Tag.tags; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FF9C156AC1EA005E1C81 = { buildPhases = ( 8551FF9D156AC1EA005E1C81, 8551FF9F156AC1EA005E1C81, 8551FFA0156AC1EA005E1C81, 8551FFA3156AC1EA005E1C81, 8551FFA7156AC1EA005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-VorbisTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lvorbis -lvorbisfile -logg"; OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = VorbisTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = tags; }; dependencies = ( ); isa = PBXNativeTarget; name = VorbisTags; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = VorbisTags; productReference = 8551FFA9156AC1EB005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FF9D156AC1EA005E1C81 = { buildActionMask = 2147483647; files = ( 8551FF9E156AC1EA005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FF9E156AC1EA005E1C81 = { fileRef = EAA6DFA009A66D8D034E8D88; isa = PBXBuildFile; settings = { }; }; 8551FF9F156AC1EA005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFA0156AC1EA005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFA1156AC1EA005E1C81, 8551FFA2156AC1EA005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFA1156AC1EA005E1C81 = { fileRef = EAA6DFA209A66DA3034E8D88; isa = PBXBuildFile; settings = { }; }; 8551FFA2156AC1EA005E1C81 = { fileRef = EAACCAF309C7ACDF03B7D5E1; isa = PBXBuildFile; settings = { }; }; 8551FFA3156AC1EA005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFA4156AC1EA005E1C81, 8551FFD4156AC1EE005E1C81, 8551FFA5156AC1EA005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFA4156AC1EA005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FFA5156AC1EA005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FFA7156AC1EA005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFA9156AC1EB005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = VorbisTags.tags; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FFAA156AC1EB005E1C81 = { buildPhases = ( 8551FFAB156AC1EB005E1C81, 8551FFAD156AC1EB005E1C81, 8551FFAE156AC1EB005E1C81, 8551FFB0156AC1EB005E1C81, 8551FFB4156AC1EB005E1C81, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__; HEADER_SEARCH_PATHS = .; INFOPLIST_FILE = "Info-FLACTags.plist"; OTHER_CFLAGS = "-no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLACTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = tags; }; dependencies = ( ); isa = PBXNativeTarget; name = FLACTags; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = FLACTags; productReference = 8551FFB6156AC1EC005E1C81; productType = "com.apple.product-type.bundle"; }; 8551FFAB156AC1EB005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFAC156AC1EB005E1C81, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFAC156AC1EB005E1C81 = { fileRef = EAF9B4E109D0EEED037E42D6; isa = PBXBuildFile; settings = { }; }; 8551FFAD156AC1EB005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFAE156AC1EB005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFAF156AC1EB005E1C81, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFAF156AC1EB005E1C81 = { fileRef = EAF9B4E209D0EEED037E42D6; isa = PBXBuildFile; settings = { }; }; 8551FFB0156AC1EB005E1C81 = { buildActionMask = 2147483647; files = ( 8551FFB1156AC1EB005E1C81, 8551FFD5156AC1EE005E1C81, 8551FFB2156AC1EB005E1C81, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFB1156AC1EB005E1C81 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; 8551FFB2156AC1EB005E1C81 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; 8551FFB4156AC1EB005E1C81 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8551FFB6156AC1EC005E1C81 = { explicitFileType = wrapper.cfbundle; includeInIndex = 0; isa = PBXFileReference; path = FLACTags.tags; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 8551FFB7156AC1EC005E1C81 = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 8551FEE7156AC1E4005E1C81; remoteInfo = "Cynthiune framework (Upgraded)"; }; 8551FFB8156AC1EC005E1C81 = { isa = PBXTargetDependency; target = 8551FEE7156AC1E4005E1C81; targetProxy = 8551FFB7156AC1EC005E1C81; }; 8551FFB9156AC1EC005E1C81 = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 8551FF21156AC1E5005E1C81; remoteInfo = "MP3 (Upgraded)"; }; 8551FFBA156AC1EC005E1C81 = { isa = PBXTargetDependency; target = 8551FF21156AC1E5005E1C81; targetProxy = 8551FFB9156AC1EC005E1C81; }; 8551FFBB156AC1EC005E1C81 = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 8551FF4A156AC1E6005E1C81; remoteInfo = "MacOSXPlayer (Upgraded)"; }; 8551FFBC156AC1EC005E1C81 = { isa = PBXTargetDependency; target = 8551FF4A156AC1E6005E1C81; targetProxy = 8551FFBB156AC1EC005E1C81; }; 8551FFBF156AC1EC005E1C81 = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 8551FEE7156AC1E4005E1C81; remoteInfo = "Cynthiune framework (Upgraded)"; }; 8551FFC0156AC1EC005E1C81 = { isa = PBXTargetDependency; target = 8551FEE7156AC1E4005E1C81; targetProxy = 8551FFBF156AC1EC005E1C81; }; 8551FFC1156AC1EC005E1C81 = { fileRef = 8551FF13156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFC4156AC1EC005E1C81 = { fileRef = 8551FF2F156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFCA156AC1EE005E1C81 = { fileRef = 8551FF5A156AC1E6005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFCB156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFCC156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFCD156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFCE156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFCF156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFD0156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFD3156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFD4156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8551FFD5156AC1EE005E1C81 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 857E821815951F65003F23A2 = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 8551FF90156AC1E9005E1C81; remoteInfo = ID3Tag; }; 857E821915951F65003F23A2 = { isa = PBXTargetDependency; target = 8551FF90156AC1E9005E1C81; targetProxy = 857E821815951F65003F23A2; }; 857E8238159523DB003F23A2 = { fileRef = 8551FF9B156AC1EA005E1C81; isa = PBXBuildFile; settings = { }; }; 857E825215952456003F23A2 = { fileRef = 8551FF06156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8580DB74156AD6700045AEE3 = { fileRef = 8551FF13156AC1E5005E1C81; isa = PBXBuildFile; settings = { }; }; 8580DB75156AD6770045AEE3 = { containerPortal = 29B97313FDCFA39411CA2CEA; isa = PBXContainerItemProxy; proxyType = 1; remoteGlobalIDString = 8551FF07156AC1E5005E1C81; remoteInfo = AudioFile; }; 8580DB76156AD6770045AEE3 = { isa = PBXTargetDependency; target = 8551FF07156AC1E5005E1C81; targetProxy = 8580DB75156AD6770045AEE3; }; //850 //851 //852 //853 //854 //EA0 //EA1 //EA2 //EA3 //EA4 EA03BA5209D0F801036B92BF = { children = ( EA03BA5509D0F84A036B92BF, EA03BA5909D0F862036B92BF, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EA03BA5309D0F80B036B92BF = { children = ( EA03BA5409D0F84A036B92BF, EA03BA5809D0F862036B92BF, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EA03BA5409D0F84A036B92BF = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CNSFileHandle.h; path = Bundles/Musepack/CNSFileHandle.h; refType = 4; sourceTree = ""; }; EA03BA5509D0F84A036B92BF = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CNSFileHandle.m; path = Bundles/Musepack/CNSFileHandle.m; refType = 4; sourceTree = ""; }; EA03BA5809D0F862036B92BF = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Musepack.h; path = Bundles/Musepack/Musepack.h; refType = 4; sourceTree = ""; }; EA03BA5909D0F862036B92BF = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = Musepack.m; path = Bundles/Musepack/Musepack.m; refType = 4; sourceTree = ""; }; EA1D795306263FB803CFD9F6 = { children = ( EA1D796F0626401C03CFD9F6, EA1D79700626402403CFD9F6, ); isa = PBXGroup; name = Ogg; path = Bundles/Ogg; refType = 2; sourceTree = SOURCE_ROOT; }; EA1D795606263FB803CFD9F6 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Ogg.m; refType = 4; sourceTree = ""; }; EA1D795906263FB803CFD9F6 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ogg.h; refType = 4; sourceTree = ""; }; EA1D796D0626400703CFD9F6 = { children = ( EA8A20B30675A45C03A8D3C1, EA8F759506F89A1F03F15592, EA85A0E2062773E80303B004, EA9ADAFD06823B0603000102, EA96C1E90770F87B03166923, EA1D795306263FB803CFD9F6, EA96C1E80770F87303166923, EA949F70062720910348A0D9, EAA95C2F09D0ECA7039F499A, EADC4D6409476C1203B0DF6D, EAA6DF9509A66BCC034E8D88, ); isa = PBXGroup; name = Bundles; refType = 4; sourceTree = ""; }; EA1D796F0626401C03CFD9F6 = { children = ( EA1D795606263FB803CFD9F6, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EA1D79700626402403CFD9F6 = { children = ( EA1D795906263FB803CFD9F6, ); isa = PBXGroup; name = Headers; path = ""; refType = 4; sourceTree = ""; }; EA4FAC5009A456860310F3BF = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = lock.tiff; path = Images/lock.tiff; refType = 4; sourceTree = ""; }; EA547B68078A36000358AD96 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSStringExtensions.h; path = Frameworks/Cynthiune/NSStringExtensions.h; refType = 4; sourceTree = ""; }; EA547B69078A36000358AD96 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSStringExtensions.m; path = Frameworks/Cynthiune/NSStringExtensions.m; refType = 4; sourceTree = ""; }; EA5AA10B09A51CA303396ECD = { isa = PBXFileReference; lastKnownFileType = image.icns; name = "Cynthiune-playlist.icns"; path = "Images/Cynthiune-playlist.icns"; refType = 4; sourceTree = ""; }; EA5AA10D09A5220203396ECD = { isa = PBXFileReference; lastKnownFileType = image.icns; name = "Cynthiune-song.icns"; path = "Images/Cynthiune-song.icns"; refType = 4; sourceTree = ""; }; EA675446062726D80396FC5D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MacOSXPlayer.m; path = Bundles/MacOSX/MacOSXPlayer.m; refType = 4; sourceTree = ""; }; EA675448062726F10396FC5D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MacOSXPlayer.h; path = Bundles/MacOSX/MacOSXPlayer.h; refType = 4; sourceTree = ""; }; EA73D4B4074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlayerController.h; refType = 4; sourceTree = ""; }; EA73D4B5074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlayerController.m; refType = 4; sourceTree = ""; }; EA73D4B6074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlayerPreference.h; refType = 4; sourceTree = ""; }; EA73D4B7074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlayerPreference.m; refType = 4; sourceTree = ""; }; EA778ACC09B5778A032657EF = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiuneHeaderCell.h; refType = 4; sourceTree = ""; }; EA778ACD09B5778A032657EF = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiuneHeaderCell.m; refType = 4; sourceTree = ""; }; EA7EE734063AE6B6039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CynthiuneBundle.h; path = Frameworks/Cynthiune/CynthiuneBundle.h; refType = 4; sourceTree = ""; }; EA7EE76B063AE6B6039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlaylistView.h; refType = 4; sourceTree = ""; }; EA7EE76C063AE6B6039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlaylistView.m; refType = 4; sourceTree = ""; }; EA7EE79F063AEA0B039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = xing.h; path = Bundles/MP3/xing.h; refType = 4; sourceTree = ""; }; EA7EE7A1063AEA1A039F4895 = { children = ( EA7EE7A3063AEA4F039F4895, ); isa = PBXGroup; name = "C source"; refType = 4; sourceTree = ""; }; EA7EE7A2063AEA28039F4895 = { children = ( EA7EE79F063AEA0B039F4895, ); isa = PBXGroup; name = "C headers"; path = ""; refType = 4; sourceTree = ""; }; EA7EE7A3063AEA4F039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = xing.c; path = Bundles/MP3/xing.c; refType = 4; sourceTree = ""; }; EA7EE7DC063B0267039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; EA7EE7DD063B035E039F4895 = { children = ( EA7EE7DE063B035E039F4895, EA7EE7E0063B036F039F4895, EAB991A2086E52690334F83B, EA8E356409476757032DC65E, EA88F6F10682227603ABED23, EA8E35650947676F032DC65E, EA8E356A09476934032DC65E, EA8E356909476796032DC65E, ); isa = PBXVariantGroup; name = Localizable.strings; path = ""; refType = 4; sourceTree = ""; }; EA7EE7DE063B035E039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EA7EE7E0063B036F039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EA7EE7E1063B04D0039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text; path = README; refType = 4; sourceTree = ""; }; EA7EE7E2063B04D0039F4895 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text; path = TODO; refType = 4; sourceTree = ""; }; EA85A0E2062773E80303B004 = { children = ( EA7EE7A1063AEA1A039F4895, EA7EE7A2063AEA28039F4895, EA85A0E4062774020303B004, EA85A0E3062773F30303B004, ); isa = PBXGroup; name = MP3; refType = 4; sourceTree = ""; }; EA85A0E3062773F30303B004 = { children = ( EA85A0EF0627755D0303B004, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EA85A0E4062774020303B004 = { children = ( EA85A0ED062775460303B004, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EA85A0ED062775460303B004 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MP3.m; path = Bundles/MP3/MP3.m; refType = 4; sourceTree = ""; }; EA85A0EF0627755D0303B004 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MP3.h; path = Bundles/MP3/MP3.h; refType = 4; sourceTree = ""; }; EA8795DF06F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiuneController.h; refType = 4; sourceTree = ""; }; EA8795E006F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiuneController.m; refType = 4; sourceTree = ""; }; EA8795E306F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSNumberExtensions.h; path = Frameworks/Cynthiune/NSNumberExtensions.h; refType = 4; sourceTree = ""; }; EA8795E406F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSNumberExtensions.m; path = Frameworks/Cynthiune/NSNumberExtensions.m; refType = 4; sourceTree = ""; }; EA8795E506F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Output.h; path = Frameworks/Cynthiune/Output.h; refType = 4; sourceTree = ""; }; EA88F6F10682227603ABED23 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Italian; path = Italian.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EA88F6F2068222A103ABED23 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Italian; path = Italian.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; EA8A19170688EE2B03C0F62E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiuneWindow.h; refType = 4; sourceTree = ""; }; EA8A19180688EE2B03C0F62E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiuneWindow.m; refType = 4; sourceTree = ""; }; EA8A20B30675A45C03A8D3C1 = { children = ( EA8A20B40675A46B03A8D3C1, EA8A20B50675A47503A8D3C1, ); isa = PBXGroup; name = AudioFile; refType = 4; sourceTree = ""; }; EA8A20B40675A46B03A8D3C1 = { children = ( EA8A20BD0675A4D003A8D3C1, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EA8A20B50675A47503A8D3C1 = { children = ( EA8A20BF0675A4EB03A8D3C1, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EA8A20BD0675A4D003A8D3C1 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AudioFile.m; path = Bundles/AudioFile/AudioFile.m; refType = 4; sourceTree = ""; }; EA8A20BF0675A4EB03A8D3C1 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioFileBundle.h; path = Bundles/AudioFile/AudioFileBundle.h; refType = 4; sourceTree = ""; }; EA8A20CF0675A80A03A8D3C1 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "playlist-pushed.tiff"; path = "Images/playlist-pushed.tiff"; refType = 4; sourceTree = ""; }; EA8A20D00675A80A03A8D3C1 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = playlist.tiff; path = Images/playlist.tiff; refType = 4; sourceTree = ""; }; EA8A20D10675A80A03A8D3C1 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "repeat-pushed.tiff"; path = "Images/repeat-pushed.tiff"; refType = 4; sourceTree = ""; }; EA8A20D20675A80A03A8D3C1 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = repeat.tiff; path = Images/repeat.tiff; refType = 4; sourceTree = ""; }; EA8A20D30675A80A03A8D3C1 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "shuffle-pushed.tiff"; path = "Images/shuffle-pushed.tiff"; refType = 4; sourceTree = ""; }; EA8A20D40675A80A03A8D3C1 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = shuffle.tiff; path = Images/shuffle.tiff; refType = 4; sourceTree = ""; }; EA8BBBF90682D60703C2B047 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiunePopUpButton.h; refType = 4; sourceTree = ""; }; EA8BBBFA0682D60703C2B047 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiunePopUpButton.m; refType = 4; sourceTree = ""; }; EA8E355D09476698032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Slovak; path = Slovak.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; EA8E355E094766BD032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = TraditionalChinese; path = TraditionalChinese.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; EA8E3562094766F7032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Hungarian; path = Hungarian.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; EA8E35630947670D032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Spanish; path = Spanish.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; EA8E356409476757032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Hungarian; path = Hungarian.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EA8E35650947676F032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Slovak; path = Slovak.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EA8E356909476796032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = TraditionalChinese; path = TraditionalChinese.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EA8E356A09476934032DC65E = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Spanish; path = Spanish.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EA8F759506F89A1F03F15592 = { children = ( EA8F759606F89A3103F15592, EA8F759706F89A3C03F15592, ); isa = PBXGroup; name = FLAC; refType = 4; sourceTree = ""; }; EA8F759606F89A3103F15592 = { children = ( EA8F75AE06F89D9103F15592, ); isa = PBXGroup; name = Classes; path = ""; refType = 4; sourceTree = ""; }; EA8F759706F89A3C03F15592 = { children = ( EA8F75AD06F89D9103F15592, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EA8F75AD06F89D9103F15592 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FLAC.h; path = Bundles/FLAC/FLAC.h; refType = 4; sourceTree = ""; }; EA8F75AE06F89D9103F15592 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = FLAC.m; path = Bundles/FLAC/FLAC.m; refType = 4; sourceTree = ""; }; EA9316530770FC6503000102 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CWMFile.cpp; path = Bundles/WindowsMedia/CWMFile.cpp; refType = 4; sourceTree = ""; }; EA9316560770FCEB03000102 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CWMFile.h; path = Bundles/WindowsMedia/CWMFile.h; refType = 4; sourceTree = ""; }; EA9316580770FD0903000102 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WindowsMedia.h; path = Bundles/WindowsMedia/WindowsMedia.h; refType = 4; sourceTree = ""; }; EA93165A0770FD3003000102 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = WindowsMedia.m; path = Bundles/WindowsMedia/WindowsMedia.m; refType = 4; sourceTree = ""; }; EA949F70062720910348A0D9 = { children = ( EA949F72062720A90348A0D9, EA949F710627209C0348A0D9, ); isa = PBXGroup; name = MacOSXPlayer; refType = 4; sourceTree = ""; }; EA949F710627209C0348A0D9 = { children = ( EA675448062726F10396FC5D, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EA949F72062720A90348A0D9 = { children = ( EA675446062726D80396FC5D, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EA95850F078BA57703566F1F = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SongInspectorController.h; refType = 4; sourceTree = ""; }; EA958510078BA57703566F1F = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SongInspectorController.m; refType = 4; sourceTree = ""; }; EA958513078BAB6B03566F1F = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = SongInspector.nib; refType = 4; sourceTree = ""; }; EA96C1E80770F87303166923 = { children = ( EA96C1EC0770F8C803166923, EA96C1EB0770F8BF03166923, EA96C1EA0770F89D03166923, ); isa = PBXGroup; name = WindowsMedia; refType = 4; sourceTree = ""; }; EA96C1E90770F87B03166923 = { children = ( EA03BA5209D0F801036B92BF, EA03BA5309D0F80B036B92BF, ); isa = PBXGroup; name = Musepack; refType = 4; sourceTree = ""; }; EA96C1EA0770F89D03166923 = { children = ( EA93165A0770FD3003000102, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EA96C1EB0770F8BF03166923 = { children = ( EA9316560770FCEB03000102, EA9316580770FD0903000102, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EA96C1EC0770F8C803166923 = { children = ( EA9316530770FC6503000102, ); isa = PBXGroup; name = "Other Sources"; refType = 4; sourceTree = ""; }; EA9ADAFD06823B0603000102 = { children = ( EA9ADAFE06823B1703000102, EA9ADAFF06823B3303000102, ); isa = PBXGroup; name = Mod; refType = 4; sourceTree = ""; }; EA9ADAFE06823B1703000102 = { children = ( EA9ADB0006823B6103000102, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EA9ADAFF06823B3303000102 = { children = ( EA9ADB0206823B7A03000102, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EA9ADB0006823B6103000102 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = Mod.m; path = Bundles/Mod/Mod.m; refType = 4; sourceTree = ""; }; EA9ADB0206823B7A03000102 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Mod.h; path = Bundles/Mod/Mod.h; refType = 4; sourceTree = ""; }; EA9EE052078207F20394BCE8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cynthiune.framework; path = build/Cynthiune.framework; refType = 4; sourceTree = ""; }; EAA6DF9109A663DE034E8D88 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "dragged-song.tiff"; path = "Images/dragged-song.tiff"; refType = 4; sourceTree = ""; }; EAA6DF9209A663DE034E8D88 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "dragged-songs.tiff"; path = "Images/dragged-songs.tiff"; refType = 4; sourceTree = ""; }; EAA6DF9509A66BCC034E8D88 = { children = ( EAA6DF9609A66BDC034E8D88, EAA6DF9709A66BE2034E8D88, EAEAD23D09DCEDDA03EAE64E, ); isa = PBXGroup; name = VorbisTags; refType = 4; sourceTree = ""; }; EAA6DF9609A66BDC034E8D88 = { children = ( EAA6DFA209A66DA3034E8D88, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EAA6DF9709A66BE2034E8D88 = { children = ( EAA6DFA009A66D8D034E8D88, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EAA6DFA009A66D8D034E8D88 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VorbisTags.h; path = Bundles/VorbisTags/VorbisTags.h; refType = 4; sourceTree = ""; }; EAA6DFA209A66DA3034E8D88 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = VorbisTags.m; path = Bundles/VorbisTags/VorbisTags.m; refType = 4; sourceTree = ""; }; EAA95C2F09D0ECA7039F499A = { children = ( EAF9B4DF09D0EEC1037E42D6, EAF9B4E009D0EEC8037E42D6, ); isa = PBXGroup; name = FLACTags; path = ""; refType = 4; sourceTree = ""; }; EAACCAF309C7ACDF03B7D5E1 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vcedit.c; path = Bundles/VorbisTags/vcedit.c; refType = 4; sourceTree = ""; }; EAAF6D39092BC4F303000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = add.tiff; path = Images/add.tiff; refType = 4; sourceTree = ""; }; EAAF6D3A092BC4F303000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = cleanup.tiff; path = Images/cleanup.tiff; refType = 4; sourceTree = ""; }; EAAF6D3E092BC51E03000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = remove.tiff; path = Images/remove.tiff; refType = 4; sourceTree = ""; }; EAAF6D3F092BC51E03000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "save-as.tiff"; path = "Images/save-as.tiff"; refType = 4; sourceTree = ""; }; EAAF6D41092BC51E03000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "slider-knob-disabled.tiff"; path = "Images/slider-knob-disabled.tiff"; refType = 4; sourceTree = ""; }; EAAF6D42092BC51E03000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "slider-knob-enabled.tiff"; path = "Images/slider-knob-enabled.tiff"; refType = 4; sourceTree = ""; }; EAAF6D43092BC51E03000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "song-inspector-pushed.tiff"; path = "Images/song-inspector-pushed.tiff"; refType = 4; sourceTree = ""; }; EAAF6D44092BC51E03000102 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "song-inspector.tiff"; path = "Images/song-inspector.tiff"; refType = 4; sourceTree = ""; }; EAAF6D4D092BC55703000102 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiuneAnimatedImageView.h; refType = 4; sourceTree = ""; }; EAB991A1086E52690334F83B = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; EAB991A2086E52690334F83B = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/Localizable.strings; refType = 4; sourceTree = ""; }; EAB991A3086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-1.tiff"; path = "Images/anim-logo-1.tiff"; refType = 4; sourceTree = ""; }; EAB991A4086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-2.tiff"; path = "Images/anim-logo-2.tiff"; refType = 4; sourceTree = ""; }; EAB991A5086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-3.tiff"; path = "Images/anim-logo-3.tiff"; refType = 4; sourceTree = ""; }; EAB991A6086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-4.tiff"; path = "Images/anim-logo-4.tiff"; refType = 4; sourceTree = ""; }; EAB991A7086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-5.tiff"; path = "Images/anim-logo-5.tiff"; refType = 4; sourceTree = ""; }; EAB991A8086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-6.tiff"; path = "Images/anim-logo-6.tiff"; refType = 4; sourceTree = ""; }; EAB991A9086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-7.tiff"; path = "Images/anim-logo-7.tiff"; refType = 4; sourceTree = ""; }; EAB991AA086E52A60334F83B = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-8.tiff"; path = "Images/anim-logo-8.tiff"; refType = 4; sourceTree = ""; }; EAC9033508F2EB2003D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Tags.h; path = Frameworks/Cynthiune/Tags.h; refType = 4; sourceTree = ""; }; EAC9033708F2ED0603D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DictionaryCoder.h; refType = 4; sourceTree = ""; }; EAC9033808F2ED0603D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DictionaryCoder.m; refType = 4; sourceTree = ""; }; EAC9033B08F2ED3103D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = M3UArchiver.h; refType = 4; sourceTree = ""; }; EAC9033C08F2ED3103D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = M3UArchiver.m; refType = 4; sourceTree = ""; }; EAC9033F08F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlaylistArchiver.h; refType = 4; sourceTree = ""; }; EAC9034008F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlaylistArchiver.m; refType = 4; sourceTree = ""; }; EAC9034108F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PLSArchiver.h; refType = 4; sourceTree = ""; }; EAC9034208F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PLSArchiver.m; refType = 4; sourceTree = ""; }; EADC4D6409476C1203B0DF6D = { children = ( EADC4D6509476C3203B0DF6D, EADC4D6609476C3803B0DF6D, ); isa = PBXGroup; name = ID3Tag; refType = 4; sourceTree = ""; }; EADC4D6509476C3203B0DF6D = { children = ( EADC4D6809476C5903B0DF6D, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EADC4D6609476C3803B0DF6D = { children = ( EADC4D6709476C5903B0DF6D, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EADC4D6709476C5903B0DF6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ID3Tag.h; path = Bundles/ID3Tag/ID3Tag.h; refType = 4; sourceTree = ""; }; EADC4D6809476C5903B0DF6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ID3Tag.m; path = Bundles/ID3Tag/ID3Tag.m; refType = 4; sourceTree = ""; }; EAEAD23D09DCEDDA03EAE64E = { children = ( EAACCAF309C7ACDF03B7D5E1, ); isa = PBXGroup; name = "Other Sources"; refType = 4; sourceTree = ""; }; EAF9B4DF09D0EEC1037E42D6 = { children = ( EAF9B4E209D0EEED037E42D6, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EAF9B4E009D0EEC8037E42D6 = { children = ( EAF9B4E109D0EEED037E42D6, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; EAF9B4E109D0EEED037E42D6 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FLACTags.h; path = Bundles/FLACTags/FLACTags.h; refType = 4; sourceTree = ""; }; EAF9B4E209D0EEED037E42D6 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = FLACTags.m; path = Bundles/FLACTags/FLACTags.m; refType = 4; sourceTree = ""; }; EAFFEE4B086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiuneAnimatedImageView.m; refType = 4; sourceTree = ""; }; EAFFEE4C086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiuneFadingTextField.h; refType = 4; sourceTree = ""; }; EAFFEE4D086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiuneFadingTextField.m; refType = 4; sourceTree = ""; }; EAFFEE4F086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiunePauseButton.h; refType = 4; sourceTree = ""; }; EAFFEE50086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiunePauseButton.m; refType = 4; sourceTree = ""; }; EAFFEE55086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiuneSongTitleCell.h; refType = 4; sourceTree = ""; }; EAFFEE56086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiuneSongTitleCell.m; refType = 4; sourceTree = ""; }; EAFFEE57086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CynthiuneTextCell.h; refType = 4; sourceTree = ""; }; EAFFEE58086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CynthiuneTextCell.m; refType = 4; sourceTree = ""; }; EAFFEE69086E5596039AFE6D = { children = ( EAFFEE6A086E55AB039AFE6D, EAFFEE6B086E55B3039AFE6D, ); isa = PBXGroup; name = Cynthiune; refType = 4; sourceTree = ""; }; EAFFEE6A086E55AB039AFE6D = { children = ( EAFFEE6D086E5601039AFE6D, EAFFEE6F086E5601039AFE6D, EAFFEE71086E5601039AFE6D, EA8795E406F66AA403809032, EA547B69078A36000358AD96, EAFFEE73086E5601039AFE6D, EAFFEE75086E5601039AFE6D, F7858C02061FC27301C0FE28, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; EAFFEE6B086E55B3039AFE6D = { children = ( EA7EE734063AE6B6039F4895, F7858BEA061FC27301C0FE28, EAFFEE6C086E5601039AFE6D, EAFFEE6E086E5601039AFE6D, EAFFEE70086E5601039AFE6D, EA8795E306F66AA403809032, EA547B68078A36000358AD96, EAFFEE72086E5601039AFE6D, EAFFEE74086E5601039AFE6D, EA8795E506F66AA403809032, F7858BFB061FC27301C0FE28, EAC9033508F2EB2003D0D62A, F7858C1C061FC2A801C0FE28, ); isa = PBXGroup; name = Headers; path = ""; refType = 4; sourceTree = ""; }; EAFFEE6C086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSArrayExtensions.h; path = Frameworks/Cynthiune/NSArrayExtensions.h; refType = 4; sourceTree = ""; }; EAFFEE6D086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSArrayExtensions.m; path = Frameworks/Cynthiune/NSArrayExtensions.m; refType = 4; sourceTree = ""; }; EAFFEE6E086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSCellExtensions.h; path = Frameworks/Cynthiune/NSCellExtensions.h; refType = 4; sourceTree = ""; }; EAFFEE6F086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSCellExtensions.m; path = Frameworks/Cynthiune/NSCellExtensions.m; refType = 4; sourceTree = ""; }; EAFFEE70086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSColorExtensions.h; path = Frameworks/Cynthiune/NSColorExtensions.h; refType = 4; sourceTree = ""; }; EAFFEE71086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSColorExtensions.m; path = Frameworks/Cynthiune/NSColorExtensions.m; refType = 4; sourceTree = ""; }; EAFFEE72086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSTimerExtensions.h; path = Frameworks/Cynthiune/NSTimerExtensions.h; refType = 4; sourceTree = ""; }; EAFFEE73086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSTimerExtensions.m; path = Frameworks/Cynthiune/NSTimerExtensions.m; refType = 4; sourceTree = ""; }; EAFFEE74086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSViewExtensions.h; path = Frameworks/Cynthiune/NSViewExtensions.h; refType = 4; sourceTree = ""; }; EAFFEE75086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = NSViewExtensions.m; path = Frameworks/Cynthiune/NSViewExtensions.m; refType = 4; sourceTree = ""; }; EAFFEE81086E61A7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BundleManager.h; refType = 4; sourceTree = ""; }; EAFFEE82086E61A7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BundleManager.m; refType = 4; sourceTree = ""; }; EAFFEE85086E61D7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBResultsPanel.h; refType = 4; sourceTree = ""; }; EAFFEE86086E61D7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBResultsPanel.m; refType = 4; sourceTree = ""; }; EAFFEE89086E688A039AFE6D = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "lookup-mb-off.tiff"; path = "Images/lookup-mb-off.tiff"; refType = 4; sourceTree = ""; }; EAFFEE8A086E688A039AFE6D = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "lookup-mb-on.tiff"; path = "Images/lookup-mb-on.tiff"; refType = 4; sourceTree = ""; }; EAFFEE8D086E688A039AFE6D = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "song-pointer.tiff"; path = "Images/song-pointer.tiff"; refType = 4; sourceTree = ""; }; //EA0 //EA1 //EA2 //EA3 //EA4 //F50 //F51 //F52 //F53 //F54 F502404803B83C9E01000004 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; refType = 0; sourceTree = ""; }; F502405C03B83D6601000004 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; refType = 0; sourceTree = ""; }; F502406503B83D9A01000004 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; refType = 0; sourceTree = ""; }; F51A012B03BA9CCB01000004 = { children = ( F51A012C03BA9CE401000004, F51A012D03BA9CE401000004, F59C8F7903C01A7601C14AF2, EA7EE7E1063B04D0039F4895, EA7EE7E2063B04D0039F4895, ); isa = PBXGroup; name = Documentation; refType = 4; sourceTree = ""; }; F51A012C03BA9CE401000004 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; refType = 4; sourceTree = ""; }; F51A012D03BA9CE401000004 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text; path = COPYING; refType = 4; sourceTree = ""; }; F531F10803BB93F301000004 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; refType = 0; sourceTree = ""; }; F559092103B834CA01000004 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = Cynthiune.nib; refType = 4; sourceTree = ""; }; F559092303B834D301000004 = { children = ( EAFFEE81086E61A7039AFE6D, EAAF6D4D092BC55703000102, EA8795DF06F66AA403809032, EAFFEE4C086E54DA039AFE6D, EA778ACC09B5778A032657EF, EAFFEE4F086E54DA039AFE6D, EA8BBBF90682D60703C2B047, EAFFEE55086E54DA039AFE6D, EAFFEE57086E54DA039AFE6D, EA8A19170688EE2B03C0F62E, EAC9033708F2ED0603D0D62A, F7858BEB061FC27301C0FE28, F7858BED061FC27301C0FE28, F7858BEF061FC27301C0FE28, EAC9033B08F2ED3103D0D62A, EAFFEE85086E61D7039AFE6D, F7858BF3061FC27301C0FE28, EA73D4B4074C81F203F60D55, EA73D4B6074C81F203F60D55, F7858BF5061FC27301C0FE28, EAC9033F08F2ED4903D0D62A, F7858BF7061FC27301C0FE28, EA7EE76B063AE6B6039F4895, EAC9034108F2ED4903D0D62A, F7858BFC061FC27301C0FE28, F7858BFE061FC27301C0FE28, EA95850F078BA57703566F1F, F7858C00061FC27301C0FE28, ); isa = PBXGroup; name = Headers; refType = 4; sourceTree = ""; }; F59C8F6803C0152501C14AF2 = { children = ( F59C8F6B03C0155B01C14AF2, EA5AA10D09A5220203396ECD, EA5AA10B09A51CA303396ECD, F7858C22061FC31401C0FE28, F7858C1F061FC31401C0FE28, F7858C21061FC31401C0FE28, EAA6DF9109A663DE034E8D88, EAA6DF9209A663DE034E8D88, F7858C23061FC31401C0FE28, F7858C24061FC31401C0FE28, F59C8F6C03C0155B01C14AF2, F7858C28061FC31401C0FE28, F59C8F6D03C0155B01C14AF2, F7858C2A061FC31401C0FE28, F59C8F6E03C0155B01C14AF2, F7858C2B061FC31401C0FE28, EA8A20D00675A80A03A8D3C1, EA8A20CF0675A80A03A8D3C1, F59C8F6F03C0155B01C14AF2, F7858C2E061FC31401C0FE28, EA8A20D20675A80A03A8D3C1, EA8A20D10675A80A03A8D3C1, EA8A20D40675A80A03A8D3C1, EA8A20D30675A80A03A8D3C1, F59C8F7003C0155B01C14AF2, F7858C33061FC31401C0FE28, EAB991A3086E52A60334F83B, EAB991A4086E52A60334F83B, EAB991A5086E52A60334F83B, EAB991A6086E52A60334F83B, EAB991A7086E52A60334F83B, EAB991A8086E52A60334F83B, EAB991A9086E52A60334F83B, EAB991AA086E52A60334F83B, EA4FAC5009A456860310F3BF, EAFFEE89086E688A039AFE6D, EAFFEE8A086E688A039AFE6D, EAFFEE8D086E688A039AFE6D, EAAF6D39092BC4F303000102, EAAF6D3A092BC4F303000102, EAAF6D3E092BC51E03000102, EAAF6D3F092BC51E03000102, EAAF6D41092BC51E03000102, EAAF6D42092BC51E03000102, EAAF6D43092BC51E03000102, EAAF6D44092BC51E03000102, ); isa = PBXGroup; name = Images; refType = 4; sourceTree = ""; }; F59C8F6B03C0155B01C14AF2 = { isa = PBXFileReference; lastKnownFileType = image.icns; name = Cynthiune.icns; path = Images/Cynthiune.icns; refType = 4; sourceTree = ""; }; F59C8F6C03C0155B01C14AF2 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = next.tiff; path = Images/next.tiff; refType = 4; sourceTree = ""; }; F59C8F6D03C0155B01C14AF2 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = pause.tiff; path = Images/pause.tiff; refType = 4; sourceTree = ""; }; F59C8F6E03C0155B01C14AF2 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = play.tiff; path = Images/play.tiff; refType = 4; sourceTree = ""; }; F59C8F6F03C0155B01C14AF2 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = previous.tiff; path = Images/previous.tiff; refType = 4; sourceTree = ""; }; F59C8F7003C0155B01C14AF2 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = stop.tiff; path = Images/stop.tiff; refType = 4; sourceTree = ""; }; F59C8F7903C01A7601C14AF2 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text; path = NEWS; refType = 4; sourceTree = ""; }; //F50 //F51 //F52 //F53 //F54 //F70 //F71 //F72 //F73 //F74 F7858BEA061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Format.h; path = Frameworks/Cynthiune/Format.h; refType = 4; sourceTree = ""; }; F7858BEB061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FormatTester.h; refType = 4; sourceTree = ""; }; F7858BEC061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FormatTester.m; refType = 4; sourceTree = ""; }; F7858BED061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralPreference.h; refType = 4; sourceTree = ""; }; F7858BEE061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GeneralPreference.m; refType = 4; sourceTree = ""; }; F7858BEF061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InfoDisplayController.h; refType = 4; sourceTree = ""; }; F7858BF0061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InfoDisplayController.m; refType = 4; sourceTree = ""; }; F7858BF3061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Player.h; refType = 4; sourceTree = ""; }; F7858BF4061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Player.m; refType = 4; sourceTree = ""; }; F7858BF5061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Playlist.h; refType = 4; sourceTree = ""; }; F7858BF6061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Playlist.m; refType = 4; sourceTree = ""; }; F7858BF7061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlaylistController.h; refType = 4; sourceTree = ""; }; F7858BF8061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlaylistController.m; refType = 4; sourceTree = ""; }; F7858BFB061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Preference.h; path = Frameworks/Cynthiune/Preference.h; refType = 4; sourceTree = ""; }; F7858BFC061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; refType = 4; sourceTree = ""; }; F7858BFD061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; refType = 4; sourceTree = ""; }; F7858BFE061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Song.h; refType = 4; sourceTree = ""; }; F7858BFF061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Song.m; refType = 4; sourceTree = ""; }; F7858C00061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlaylistViewController.h; refType = 4; sourceTree = ""; }; F7858C01061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PlaylistViewController.m; refType = 4; sourceTree = ""; }; F7858C02061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = utils.m; path = Frameworks/Cynthiune/utils.m; refType = 4; sourceTree = ""; }; F7858C1C061FC2A801C0FE28 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = utils.h; path = Frameworks/Cynthiune/utils.h; refType = 4; sourceTree = ""; }; F7858C1F061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "cynthiune-splash-faded.tiff"; path = "Images/cynthiune-splash-faded.tiff"; refType = 4; sourceTree = ""; }; F7858C21061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "cynthiune-splash.tiff"; path = "Images/cynthiune-splash.tiff"; refType = 4; sourceTree = ""; }; F7858C22061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = Cynthiune.tiff; path = Images/Cynthiune.tiff; refType = 4; sourceTree = ""; }; F7858C23061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "eject-pushed.tiff"; path = "Images/eject-pushed.tiff"; refType = 4; sourceTree = ""; }; F7858C24061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = eject.tiff; path = Images/eject.tiff; refType = 4; sourceTree = ""; }; F7858C28061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "next-pushed.tiff"; path = "Images/next-pushed.tiff"; refType = 4; sourceTree = ""; }; F7858C2A061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "pause-pushed.tiff"; path = "Images/pause-pushed.tiff"; refType = 4; sourceTree = ""; }; F7858C2B061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "play-pushed.tiff"; path = "Images/play-pushed.tiff"; refType = 4; sourceTree = ""; }; F7858C2E061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "previous-pushed.tiff"; path = "Images/previous-pushed.tiff"; refType = 4; sourceTree = ""; }; F7858C33061FC31401C0FE28 = { isa = PBXFileReference; lastKnownFileType = image.tiff; name = "stop-pushed.tiff"; path = "Images/stop-pushed.tiff"; refType = 4; sourceTree = ""; }; F7BED96F0621E9B5010E156D = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = Preferences.nib; refType = 4; sourceTree = ""; }; F7BED9710621E9CF010E156D = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = GeneralPreference.nib; refType = 4; sourceTree = ""; }; }; rootObject = 29B97313FDCFA39411CA2CEA; } Cynthiune-1.0.0/TraditionalChinese.lproj/InfoPlist.strings000644 001751 000024 00000001606 11733546722 024374 0ustar00multixstaff000000 000000 ÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 0.9.5"; CFBundleGetInfoString = "Cynthiune version 0.9.5, Copyright 2002-2006 Wolfgang Sourdeau.\nThis program is distributed under the GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau. See COPYING for more information about your rights."; NSApplicationIcon = "Cynthiune"; Cynthiune-1.0.0/TraditionalChinese.lproj/Localizable.strings000644 001751 000024 00000013006 11733546722 024703 0ustar00multixstaff000000 000000 þÿ/* Yen-Ju Chen <yjchenx@gmail.com> */ /* Application menu */ "Info" = "Šªf"; "Playlist" = "d­e>nU®"; "Songs" = "kLfò"; "Player" = "d­e>Vh"; "Windows" = "‰–z—"; "Window" = "‰–z—"; "Tools" = "]åQw"; "Services" = "g RÙ"; "Hide" = "–±…Ï"; "Hide Cynthiune" = "–±…ÏCynthiune"; "Hide Others" = "–±…ÏQvNÖ‰–z—"; "Show All" = "˜oy:Qh艖z—"; "Quit" = "}Pg_"; "Quit Cynthiune" = "}Pg_Cynthiune"; /* Info submenu */ "Info Panel..." = "Šªf—brH..."; "About Cynthiune..." = "g •ÜCynthiune..."; "Preferences..." = "POY}Š-[š..."; "Send A Bug Report..." = "VÞX1UO˜L..."; "Help..." = "R©Šªf..."; "Help" = "R©Šªf"; "Cynthiune Help" = "CynthiuneR©Šªf"; /* Playlist submenu */ "Open..." = "•‹U_..."; "New" = "e°Xž"; "Save..." = "[Xj”..."; "Save As..." = "Sæ[Xe°j”..."; "Save To..." = "Q2[Xb..."; "Revert To Saved" = "`b_©SŸj”"; "Close" = "•Ü•‰"; /* Songs submenu */ "Add Songs..." = "XžR kLfò..."; "Remove Selection" = "R*–dxSÖ"; "Remove All" = "R*–dQhè"; "Cleanup" = "ett"; /* Player submenu */ "Play" = "d­e>"; "Pause" = "f«P\"; "Stop" = "P\kb"; "Previous" = "PI"; "Next" = "_ëI"; "Mode" = "j!_"; /* Player/Mode submenu */ "Repeat" = "‘͉"; "Shuffle" = "–¨j_"; /* Tools submenu */ "Song Inspector..." = "j¢‰–kLfò..."; /* Windows submenu */ "Arrange In Front" = "yûógRM"; "Miniaturize Window" = "~.\‰–z—"; "Minimize" = "g\S"; "Close Window" = "•Ü•‰‰–z—"; /* Playlist status label */ "%d songs - total time: %@" = "%d ™–kLfò - ~=QqfB•“: %@"; " - selection: %@" = " - xSÖ: %@"; /* Playlist table */ "Song" = "kLfò"; "Time" = "fB•“"; /* Song Inspector */ "Song Inspector" = "j¢‰–kLfò"; "Song Information" = "kLfòŠ `o"; "Format Attributes" = "h<_\l`'"; "No song selected" = "l’g xSÖkLfò"; "Lookup through MusicBrainz..." = "TMusicBrainzgå\ "; "Title" = "fòT "; "Album" = "\/"; "Track" = "fòvî˜^"; "Artist" = "oQú€"; "Genre" = "z.˜^"; "Year" = "^tNý"; "Reset" = "‘Ín"; "Save" = "[Xj”"; "Generating TRM..." = "u"uTRM..."; "Querying MusicBrainz server..." = "gå\ MusicBrainzO:g Vh..."; "Received %d result(s)" = "c¥e6 %d }Pgœ"; /* Dialog boxes */ "Add music files..." = "R Qe—ójj”hH..."; "Add a music folder..." = "R Qe—ójj”hHY>..."; "Save playlist as..." = "d­e>nU®Q2[Xb..."; /* Song names */ "[not found: %@]" = "[l’g b~R0: %@]"; "[unknown format: %@]" = "[g*wåh<_: %@]"; "[format error: %@]" = "[“/Фh<_: %@]"; /* Preference dialog */ "None" = "q!"; "Preferences" = "POY}Š-[š"; "General" = "N‚,"; /* General preferences */ "Windows" = "‰–z—"; "Playlists" = "d­e>nU®"; "Use absolute filenames" = "Ou(}U\ ï_‘"; "Output module" = "8Qúj!}D"; "Textured" = "Œ¼W"; "Sticky" = "–D„W"; "Remember location" = "ŠOOOMn"; "Format" = "h<_"; /* MB results panel */ "Please select the correct information..." = "ŠËxdÇkcxºŒÇŠ ..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "MusicBrainzP³VÞY˜}Pgœ0\nŠËW(N Rˆhh */ /* Application menu */ "Info" = "Información"; "Playlist" = "Lista de reproducción"; "Songs" = "Canciones"; "Player" = "Reproductor"; "Windows" = "Ventanas"; "Window" = "Ventana"; "Tools" = "Herramientas"; "Services" = "Servicios"; "Hide" = "Ocultar"; "Hide Cynthiune" = "Ocultar Cynthiune"; "Hide Others" = "Ocultar otros"; "Show All" = "Mostrar todo"; "Quit" = "Salir"; "Quit Cynthiune" = "Salir de Cynthiune"; /* Info submenu */ "Info Panel..." = "Panel de información..."; "About Cynthiune..." = "Acerca de Cynthiune..."; "Preferences..." = "Preferencias..."; "Send A Bug Report..." = "Enviar un reporte de error"; "Help..." = "Ayuda..."; "Help" = "Ayuda"; "Cynthiune Help" = "Ayuda sobre Cynthiune"; /* Playlist submenu */ "Open..." = "Abrir..."; "New" = "Nuevo"; "Save..." = "Guardar..."; "Save As..." = "Guardar como..."; "Save To..." = "Guardar a..."; "Revert To Saved" = "Volver a lo guardado"; "Close" = "Cerrar"; /* Songs submenu */ "Add Songs..." = "Agregar canciones..."; "Remove Selection" = "Remover selección"; "Remove All" = "Remover todo"; "Cleanup" = "Limpiar"; /* Player submenu */ "Play" = "Reproducir"; "Pause" = "Pausa"; "Stop" = "Detener"; "Previous" = "Anterior"; "Next" = "Siguiente"; "Mode" = "Modo"; /* Player/Mode submenu */ "Repeat" = "Repetir"; "Shuffle" = "Mezclar"; /* Tools submenu */ "Song Inspector..." = "Inspector de canciones..."; /* Windows submenu */ "Arrange In Front" = "Traer al frente"; "Miniaturize Window" = "Minimizar ventana"; "Minimize" = "Minimizar"; "Close Window" = "Cerrar ventana"; /* Playlist status label */ "%d songs - total time: %@" = "%d canciones - Tiempo total: %@"; " - selection: %@" = " - selección: %@"; /* Playlist table */ "Song" = "Canción"; "Time" = "Tiempo"; /* Song Inspector */ "Song Inspector" = "Inspector de canción"; "Song Information" = "Información de la canción"; "Format Attributes" = "Atributos de formato"; "No song selected" = "No hay canción seleccionada"; "Lookup through MusicBrainz..." = "Buscar usando MusicBrainz..."; "Title" = "Título"; "Album" = "Álbum"; "Track" = "Pista"; "Artist" = "Artista"; "Genre" = "Género"; "Year" = "Año"; "Reset" = "Reiniciar"; "Save" = "Guardar"; "Generating TRM..." = "Generando TRM..."; "Querying MusicBrainz server..." = "Consultando servidor MusicBrainz..."; "Received %d result(s)" = "%d resultado(s) recibido(s)"; /* Dialog boxes */ "Add music files..." = "Agregar archivos de música..."; "Add a music folder..." = "Agregar carpeta de música..."; "Save playlist as..." = "Guardar lista de reproducción como..."; /* Song names */ "[not found: %@]" = "[no encontrado: %@]"; "[unknown format: %@]" = "[formato desconocido: %@]"; "[format error: %@]" = "[error de formato: %@]"; /* Preference dialog */ "None" = "Ninguno"; "Preferences" = "Preferencias"; "General" = "General"; /* General preferences */ "Windows" = "Ventanas"; "Playlists" = "Listas de reproducción"; "Use absolute filenames" = "Usar nombres absolutos"; "Output module" = "Módulo de salida"; "Textured" = "Textura"; "Sticky" = "Pegagoso"; "Remember location" = "Recordar ubicación"; "Format" = "Format"; /* MB results panel */ "Please select the correct information..." = "Por favor seleccione la información correcta..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "La consulta al servidor de MusicBrainz devolvió más de un resultado.\nPor favor elija la línea más precisa de la siguiente lista."; "Cancel" = "Cancel"; Cynthiune-1.0.0/SongInspector.nib/classes.nib000644 001751 000024 00000002334 11733546662 021651 0ustar00multixstaff000000 000000 { IBClasses = ( { CLASS = CynthiuneAnimatedImageView; LANGUAGE = ObjC; SUPERCLASS = NSImageView; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {mbLookup = id; reset = id; save = id; }; CLASS = SongInspectorController; LANGUAGE = ObjC; OUTLETS = { albumField = id; albumLabel = id; artistField = id; artistLabel = id; delegate = id; filenameField = id; genreField = id; genreLabel = id; inspectorPanel = NSPanel; lookupAnimation = id; lookupButton = id; lookupStatusLabel = id; pageSelector = id; resetButton = id; saveButton = id; titleField = id; titleLabel = id; trackField = id; trackLabel = id; yearField = id; yearLabel = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }Cynthiune-1.0.0/SongInspector.nib/info.nib000644 001751 000024 00000000703 11733546662 021145 0ustar00multixstaff000000 000000 IBDocumentLocation 32 183 356 240 0 0 1024 746 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 Cynthiune-1.0.0/SongInspector.nib/keyedobjects.nib000644 001751 000024 00000026303 11733546663 022672 0ustar00multixstaff000000 000000 bplist00Ô§Y$archiverX$versionX$objectsT$top_NSKeyedArchiver† ¯x (,-348<hoz€‘™š§¨©­¯²³µ¹ÀÁÅÈËÌÍÎÑÔÕÖ×ÚÝÞßàãæçèéìïðòóöùúûüÿ!%(),/06789<=@BCFJK[\]nstyz{‚ƒ…‡‹Ž‚’‚“—™ ¡¤§¨®¯™³¶·¹»¼½ÀÃÄÆÇÈËÎÏÑÒÓÖÙÚÜÝÞáäåçèéìïðõøùúüýÿÿÿÿÿÿ  $%&')1ACEFHIJMOQTWXZ[acefIgijprtuIvxy|}€™ƒ†‡‰“”•˜™š ¤§¨©ª«ÿ®°±³´¶·¶¹¶»¶½¶¿¶Á¶ÃÅÆÈÉË̶ζжÒÕ×ÙÛû¾žüRýþÿ¾¾M   º  &bcdefghijkl÷mnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ¦ ¡˜²¢£¤U$nullß  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues€wV€€-+€ ,*€  Ò )*+[NSClassName€€_SongInspectorControllerÒ./01Z$classnameX$classes^NSCustomObject¢02XNSObject_IBCocoaFrameworkÒ 567ZNS.objects€ Ò./9:\NSMutableSet£9;2UNSSetÒ 5=>€m¯)?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg€ €€#€(€-€2€7€<€H€O€R€T€r€€…€‹€‘€—€ž€ €¢€¤€¦€¨€ª€¬€é€ë€í€ï€ñ€ó€õ€÷€ù€û€ý€ÿÔ ijklmnWNSLabel]NSDestinationXNSSource€€€ Ö pqrstuvwxyv_NSNextResponderVNSCellWNSFrameYNSEnabled[NSSuperview€€ € € Ô p{r|}~ZNSSubviews€·€²€ã_{{17, 291}, {255, 19}}Ù ‚ƒ„…†‡ˆ‰Š‹nŒyŽ_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor_NSDrawsBackground[NSCellFlagsZNSContents€€€@€ÿÿÿÿ„qþA€PÔ ’“”•–—˜VNSSizeVNSNameXNSfFlags€"A0€\LucidaGrandeÒ./›œVNSFont¢›2Õ žŸ ¡¢£¤¥¦WNSColor]NSCatalogName[NSColorName\NSColorSpace€€€€VSystem_textBackgroundColorÓ ª¡¢«¬WNSWhiteB1Ò./ž®¢ž2Õ žŸ ¡¢°¤±¦€€YtextColorÓ ª¡¢´¬B0Ò./¶·_NSTextFieldCell¤¶¸q2\NSActionCellÒ./º»[NSTextField¦º¼½¾¿2\%NSTextFieldYNSControlVNSView[NSResponder]filenameFieldÒ./ÂÃ_NSNibOutletConnector£ÂÄ2^NSNibConnectorÔ ijklÆÇ€"€Ö pqrstuvÉÊyv€!€ _{{17, 188}, {255, 22}}Ù ‚ƒ„…†‡ˆ‰Š‹ÇŒyŽZtitleFieldÔ ijklÏЀ'€$Ö pqrstuvÒÓyv€&€%_{{17, 146}, {194, 19}}Ù ‚ƒ„…†‡ˆ‰Š‹ÐŒyŽZalbumFieldÔ ijklØÙ€,€)Ö pqrstuvÛÜyv€+€*_{{17, 105}, {255, 19}}Ù ‚ƒ„…†‡ˆ‰Š‹ÙŒyŽ[artistFieldÔ ijkláâ€1€.Ö pqrstuväåyv€0€/_{{17, 64}, {194, 19}}Ù ‚ƒ„…†‡ˆ‰Š‹âŒyŽZgenreFieldÔ ijklêë€6€3Ö pqrstuvíîyv€5€4_{{213, 64}, {59, 19}}Ù ‚ƒ„…†‡ˆ‰Š‹ëñyŽ@YyearFieldÔ ijklôõ€;€8Ö pqrstuv÷øyv€:€9_{{213, 146}, {59, 19}}Ù ‚ƒ„…†‡ˆ‰Š‹õñyŽZtrackFieldÔ ijklýþ€G€=Ö pqrstvyv€F€?€>_{{170, 19}, {55, 28}}Ý ‚ƒ„ ‡  ˆ  ‹þ_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags_NSPeriodicInterval_NSAlternateImage€E€C:Èÿÿÿÿ†‚@ÿÿÿÿÿ¤þ€A€@UResetÔ ’“”•–˜€BYHelveticaÒ YNS.string€DÒ./_NSMutableString£ 2XNSStringÒ./"#\NSButtonCell¥"$¸q2]%NSButtonCellÒ./&'XNSButton¥&½¾¿2[resetButtonÔ ijkl*+€N€IÖ pqrstv-.yv€K€J_{{223, 19}, {51, 28}}Ý ‚ƒ„ ‡  ˆ 1‹+234‹5€Mÿÿÿÿ††@ÿ$þ€LTSaveÒ ZsaveButtonÔ ijk:;þ€Q€PVreset:Ò./>?_NSNibControlConnector£>Ä2Ô ijk:A+€SUsave:Ô ijklDE€q€UÖ pqrstGvHIyv€p€W€V_{{59, 314}, {171, 22}}ß L‚ƒ„MNO  ‡P QR¬S‹TE2UVy‹WXyYZ_NSPreferredEdgeZNSMenuItem_NSArrowPosition_NSUsesItemFromMenu]NSAltersStateVNSMenu€o€Y€X€Z‚@ÿÿÿÿÿ¤AþK€[Ò Ò Û ^_`abcdQefghijkHlZm]NSMnemonicLoc\NSMixedImage_NSKeyEquivModMaskWNSStateWNSTitleXNSTargetXNSActionZNSKeyEquivYNSOnImage€dÿÿÿ€a€\€c€]Ó obpqr[NSMenuItems€n€f€e_Song InformationÓ )uvwx^NSResourceName€`€^€_WNSImage_NSMenuCheckmarkÒ./|}_NSCustomResource£|~2_%NSCustomResourceÓ )uvw€€b_NSMenuMixedState__popUpItemAction:Ò./M„¢M2Ò †ZOtherViewsÒ 5=ˆ£V‰Š€g€jÚ ^_`bcdQefghijŒHZm€h€iUItem2Ú ^_`bcdQefghijH‘Zm€k€lUItem3Ò./”•^NSMutableArray£”–2WNSArrayÒ./Q˜¢Q2Ò./š›_NSPopUpButtonCell§šœ"$¸q2^NSMenuItemCellÒ./žŸ]NSPopUpButton¦ž&½¾¿2\pageSelectorÔ ijkl¢£€~€sÖ pqrstuv¥¦yv€u€t_{{20, 124}, {249, 14}}Ø ‚ƒ„…‡ˆ‰©ª£Œ«¬­€y€w€|þ€vWArtist Ô ’“”•°±²"A €xÕ žŸ ¡¢´¤µ¦€{€z\controlColorÓ ª¡¢¸¬I0.666667Õ žŸ ¡¢°¤º¦€}_controlTextColor[artistLabelÔ ijkl¾¿€„€€Ö pqrstuvÁÂyv€‚€_{{20, 166}, {188, 14}}Ø ‚ƒ„…‡ˆ‰©ª¿Œ«¬Å€ƒVAlbum ZalbumLabelÔ ijklÉÊ€Š€†Ö pqrstuvÌÍyv€ˆ€‡_{{20, 83}, {188, 14}}Ø ‚ƒ„…‡ˆ‰©ªÊŒ«¬Ѐ‰VGenre ZgenreLabelÔ ijklÔÕ€€ŒÖ pqrstuvרyv€Ž€_{{216, 166}, {53, 14}}Ø ‚ƒ„…‡ˆ‰©ªÕñ«¬Û€VTrack ZtrackLabelÔ ijklßà€–€’Ö pqrstuvâãyv€”€“_{{216, 83}, {53, 14}}Ø ‚ƒ„…‡ˆ‰©ªàñ«¬怕UYear YyearLabelÔ ijklê뀀˜Ö pqrstvíîyv€š€™_{{20, 232}, {30, 30}}Ü ‚ƒ„ ‡ ˆ ñòëó¦ô4€œ€›ÿÿÿÿ†Ä@ÿÔ ’“”•ö±÷"APÒ \lookupButtonÔ ijk:û뀟YmbLookup:Ô ijklþÇ€¡XdelegateÔ ijklЀ£Ô ijklõ€¥Ô ijklÙ€§Ô ijklâ€©Ô ijkl ë€«Ô ijkl  €è€­Ü v !"#\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClass€çÿÿÿÿðx€¯€å€æ€®€ä€°€±_{{317, 248}, {289, 343}}^Song InspectorWNSPanelÒ (TViewÒ 5=*¯E+,nÇ¿ÐõÕÙâë£Êàþ+ë-./0€³€¾€Â€Ê€Ò€ÚÜ2p {34567r8t9v:;<=¬>?@=v]NSTransparentYNSOffsets_NSTitlePosition\NSBorderType]NSContentView[NSTitleCellYNSBoxType€½€´€¹€µ€º€¸Ò 5=B¡>Ô prt|+D+€¶_{{2, 2}, {244, 0}}Ò./¾G£¾¿2_{{0, 280}, {248, 0}}V{0, 0}Õ ‚„‡ˆKò=¬L€¼€»Ò NSBoxÒ./qP¢q2Ò./RSUNSBox¤R¾¿2Ö pqrstuvUVyv€À€¿_{{20, 210}, {249, 14}}Ø ‚ƒ„…‡ˆ‰©ª,Œ«¬Y€ÁVTitle Ü2p {34567r8t9v:\]=¬^_`=v€Ã€Ç€Ä€È€ÆÒ 5=b¡^Ô prt|-d-€Å_{{2, 2}, {285, 0}}_{{0, 280}, {289, 0}}Õ ‚„‡ˆKò=¬h€ÉÒ NÜ2p {34567r8t9v:kl= mnov€Ë€Ï€Ì€Ð€ÎÒ 5=q¡mÔ prt|.s.€Í_{{3, 3}, {283, 0}}_{{0, 280}, {289, 1}}Õ ‚„‡ˆKò=¬w€ÑÒ NÖ pqrstuvz{yv€Ô€Ó_{{60, 241}, {177, 13}}Ø ‚ƒ„…‡ˆ‰©~/Œ¬€Õ€×Ô ’“”•‚˜"A€ÖÕ žŸ ¡¢„¤…¦€Ù€Ø_disabledControlTextColorÓ ª¡¢ˆ¬I0.333333Ú p)Šq‹rstŒvŽy‘yv’ZNSEditable_NSOriginalClassName[NSDragTypes€â€Û€à€Ü€ß€Ý_CynthiuneAnimatedImageView[NSImageViewÒ 56–¡—€Þ_NSFilenamesPboardType_{{245, 235}, {24, 24}}Ö „›œ‡ž= =Ÿ=WNSScaleWNSAlignWNSStyle€áþÒ./¡¢[NSImageCell¤¡£q2\%NSImageCellÒ./¥¦^NSClassSwapper¢¥2_{{1, 1}, {289, 343}}_{{0, 0}, {1024, 746}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò./¬­_NSWindowTemplate¢¬2Ô ijkl¯ €ê^inspectorPanelÔ ijkl²Ç €ì_initialFirstResponderÔ ijklµÐÇ€î[nextKeyViewÔ ijkl¸õЀðÔ ijklºÙõ€òÔ ijkl¼âÙ€ôÔ ijkl¾ëâ€öÔ ijklÀþë€øÔ ijklÂ+þ€úÔ ijklÄ0€ü_lookupAnimationÔ ijklÇ/€þ_lookupStatusLabelÔ ijklÊ,ZtitleLabelÔ ijklÍÇëÔ ijklÏE+Ô ijklÑëEÒ 5ÓÔ¯0¿^Evljà>nëÙm -+.ÕŠÊ+ZëÐâ,/þ£õVÒ./–Ö¢–2Ò 5Óدvv-v vZv+vvv.vvvvZvvEvvvvvvvvZÒ 5ÓÚ¯¿^E +Ùàâ>ë‰më/.ŠÕ+ÊVZÐn,-õ£þÇÒ 5ÓܯÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùú   !"#$%&'()]NSTextField12_SongInspectorPanel\NSTextField4^NSTextField114\NSTextField5\NSTextField6[NSMenuItem1YNSButton2_NSTextField1151111VNSBox2[NSMenuItem2^NSTextField111YNSButton1^NSTextField113YPopUpList\NSTextField2\File's Owner]NSTextField11VNSBox1\NSTextField3^NSTextField112\NSTextField1Ò 5Ó¡0Ò 5Ó¡ŽÒ 5Ó¯I0.N]ŠYXGgEVÕT¿P+ʉ/ARLëõ+Zm?JBCÐIM\Ùe^,fnâ^>àZDOQSWUHa[`-_Kd@ £ëFvcEÇþbVÒ 5Ó¯I !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvLA/F >=%U#;95 M7, B) !'.ER@TG C"068<:&JDI?H+Q2$PO Ò./¥¦^NSIBObjectData¢¥2Ѩ©]IB.objectdata€#,5:LQEKŠ˜Ÿ©¼ÃÐâðþ %1=OQTVXZ]`behknpsv‹©²½ÆÕÚãöÿ   #*09;’”–˜šœž ¢¤¦¨ª¬®°²´¶¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜßâåöþ 4FMU_kmoqst…’”–¯Ôèò -9DFHJOQZ\]nu|…‡ŒŽ¦­²ÇÏÝéöøúüþ*257@EZ\^hux“œ©²¾ËØâéõ  # * 9 J L N g i k „ © ´ Å Ç É â ä æ ÿ $ / @ B D ] _ a z Ÿ « ¼ ¾ À Ù Û Ý õ  % 6 8 : S U W o ” ™ £ ´ ¶ ¸ Ñ Ó Õ î   / 1 3 L N P R j Ÿ ± Ç Ù è ö  " ' ) + 4 = ? A C I Z \ f o y { „ – ¦ ¯ ¼ Ç Õ Þ ç ò þ,.0H}„’”™¢­¾ÀÂÉÒêñ 8:<>W¢´¿Ñæôûýÿ !*Wer†Ž–Ÿ¨³½¿ÄÆËÍÏÑÞêìîð!#%-?H[bvƒ…˜¬µºÃÎ×Þàâ  >@BHQ`gox}†š©¸ÁÏÜéúüþ4UWY[`bj{€‚„™›ª·ÁÖØë÷  %')BcelwˆŠŒ¥§©Áâäëö  $&(Abdkv‡‰‹¤¦¨Àáãéó!#%=nprw€‘–˜¡®¿ÁËÜÞçøú   13DFWY[Œ™£±»ÅÒæø!*,.02468:<Wfnw|…´¶¸º¼¾Àñÿ (6BLMOQSUWY[dgxz˜Ÿ¶½ÒÔÖßãìñú "$&?`bišœž ¢¤­°ÁÃØï@BDFHJSVgi~•ª¬µÎÐÒë !&(=?A\isœ§½ÉËÍÏÑÓÕòþ  $=V^fnpu~Š“ ©¸½Ôì÷05FHWhj‚“•¡²´ÅÇØÚëíþ$&8IK_ps~’£¦·ºÃÆ     _ h § ° ï ò õ ø û þ!!!! ! !!!!!!!"!%!(!+!.!1!4!7!:!=!@!C!F!I!W!l!y!ˆ!•!¢!®!¸!Í!Ô!à!ï!ù"""",":"A"N"]"j"s"v""‚"‹# #)#¾#Á#Ä#Ç#Ê#Í#Ð#Ó#Ö#Ù#Ü#ß#â#å#è#ë#î#ñ#ô#÷#ú#ý$$$$ $ $$$$$$$!$$$'$*$-$0$3$6$9$<$?$B$E$H$K$N$Q$T$W$Z$]$`$c$f$i$l$o$r$u$x${$~$$„$‡$Š$$$“$–$™$›$$Ÿ$¡$£$¥$§$©$«$­$¯$±$³$µ$·$¹$»$½$¿$Á$Ã$Å$Ç$É$Ë$Í$Ï$Ñ$Ó$Õ$×$Ù$Û$Ý$ß$á$ã$å$ç$é$ë$í$ï$ñ$ó$õ$÷$ù$û$ý$ÿ%%%%% % % %%%%%%%%%&%5%:%?%Mª%OCynthiune-1.0.0/SongInspector.gorm/data.classes000644 001751 000024 00000001444 11733546662 022207 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; CynthiuneAnimatedImageView = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; FirstResponder = { Actions = ( "cancal:", "mbLookup:", "save:" ); Super = NSObject; }; NewClass = { }; SongInspectorController = { Actions = ( "reset:", "save:", "mbLookup:" ); Outlets = ( titleField, albumField, trackField, artistField, genreField, resetButton, saveButton, inspectorPanel, yearField, filenameField, lookupButton, lookupAnimation, albumLabel, artistLabel, genreLabel, pageSelector, titleLabel, trackLabel, yearLabel, lookupStatusLabel ); Super = NSObject; }; }Cynthiune-1.0.0/SongInspector.gorm/data.info000644 001751 000024 00000000270 11733546662 021501 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamCynthiune-1.0.0/SongInspector.gorm/objects.gorm000644 001751 000024 00000025254 11733546662 022243 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:0000002e:00000135:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±&%SongInspectorController0±& %  TextField701 NSTextField1 NSControl1NSView1 NSResponder% CW C B< A  B< A&01 NSMutableArray1 NSArray&%01 NSTextFieldCell1 NSActionCell1NSCell0 ±&%Track0 1NSFont% A@&&&&&&&&0%’0 1NSColor0 ±&%NSNamedColorSpace0 ±&%System0±&%textBackgroundColor0±° ° 0±& % textColor’0±& %  TextField80±% A BÞ C| A  C| A&0± &%0± 0±&%Artist° &&&&&&&&0%’0±° 0±&%System0±&%textBackgroundColor0±° °0±& % textColor’0±& %  MenuItem101 NSMenuItem0±&%Format Attributes0±&&&ÿ%’%0±& % TextField0 ±% A C2 C| A¨  C| A¨&0!± &%0"± 0#±&0$±%&&&&&&&&0%’0%±° 0&±&%System0'±&%textBackgroundColor0(±° °&0)±& % textColor’0*±& %  TextField90+±% A B† CI A  CI A&0,± &%0-± 0.±&%Genre° &&&&&&&&0%’0/±° 00±&%System01±&%textBackgroundColor02±° °003±& % textColor’04±&%Button051NSButton% CD A  B„ AÈ  B„ AÈ&06± &%071 NSButtonCell08±&%Save091NSImage Ap A 0:±0;±&%NSCalibratedWhiteColorSpace 0<± &0=1NSBitmapImageRep1 NSImageRep0>±&%NSDeviceRGBColorSpace Ap A %%% 0?1 NSDataMalloc1 NSDataStatic1NSData&òòII*`ÿÿÿÿUUUÿÿÿÿÿÿÿÿÿUUUÿUUUÿÿÿÿÿÿÿUUUÿUUUÿÿÿÿÿÿÿÿÿÿÿUUUÿÿÿÿÿÿUUUÿÿÿÿÿÿªªªÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿÿ þÿ êXR°$&&&&&&&&%’0@±&0A±&&&&0B±&%InspectorPanel0C1GSWindowTemplate1GSClassSwapper0D±&%NSPanel1NSPanel1NSWindow%  Cˆ€ CŸ&% C D0E±%  Cˆ€ CŸ  Cˆ€ CŸ&0F± &°50G±% C A  B` AÈ  B` AÈ&0H± &%0I±0J±&%Reset°$&&&&&&&&%’0K±&0L±&&&&° 0M±% A C CI A¨  CI A¨&0N± &%0O± 0P±&°$&&&&&&&&0%’0Q±° 0R±&%System0S±&%textBackgroundColor0T±° °R0U±& % textColor’0V±% CW C B< A¨  B< A¨&0W± &%0X± 0Y±&°$&&&&&&&&0%’0Z±° 0[±&%System0\±&%textBackgroundColor0]±° °[0^±& % textColor’0_±% A B´ C| A¨  C| A¨&0`± &%0a± 0b±&°$&&&&&&&&0%’0c±° 0d±&%System0e±&%textBackgroundColor0f±° °d0g±& % textColor’0h±% A B8 CI A¨  CI A¨&0i± &%0j± 0k±&°$&&&&&&&&0%’0l±° 0m±&%System0n±&%textBackgroundColor0o±° °m0p±& % textColor’0q±% A CG C| A  C| A&0r± &%0s± 0t±&%Title° &&&&&&&&0%’0u±° 0v±&%System0w±&%textBackgroundColor0x±° °v0y±& % textColor’0z±% A C CI A  CI A&0{± &%0|± 0}±&%Album° &&&&&&&&0%’0~±° 0±&%System0€±&%textBackgroundColor0±° °0‚±& % textColor’°°°+0ƒ±% CW B8 B< A¨  B< A¨&0„± &%0…± 0†±&°$&&&&&&&&0%’0‡±° 0ˆ±&%System0‰±&%textBackgroundColor0б° °ˆ0‹±& % textColor’0Œ±% CW B† B< A  B< A&0± &%0ޱ 0±&%Year° &&&&&&&&0%’0±° 0‘±&%System0’±&%textBackgroundColor0“±° °‘0”±& % textColor’0•1NSBox% C€ Cˆ€ @  Cˆ€ @&0–± &0—±% @à @à C€   C€ &0˜± &0™±0š±&%Box°$&&&&&&&& @  @ %%0›1 NSPopUpButton% B C C A°  C A°&0œ± &%01 NSPopUpButtonCell1!NSMenuItemCell0ž±&°$&&&&&&&&0Ÿ1"NSMenu0 ±&0¡± &0¢±0£±&%Song Information°&&ÿ%0¤±0¥±& % common_Nibble’%°%’0¦±&0§±&&&&°¢°Ÿ%%%%%0¨±% A Cƒ€ C| A  C| A&0©± &%0ª± 0«±&%filename0¬±% A0­1#NSNumber1$NSValuef ?Ío&&&&&&&&0%’0®±°; ?€ ?€0¯±°; >ü ?€’0°±% A C^ Aè Aè  Aè Aè&0±± &%0²±0³±&0´±%&&&&&&&&%’0µ±&0¶±&&&&0·1%GSControlTemplate0¸±&% CynthiuneAnimatedImageView1& NSImageView% Cn C^ AÀ AÀ  AÀ AÀ&0¹± &%0º1' NSImageCell°$&&&&&&&&%%% ?€ ?€’0»±% B0 Cd C= A  C= A&0¼± &%0½± 0¾±&°¬&&&&&&&&0%’0¿±° 0À±&%System0Á±&%textBackgroundColor0±° °À0ñ& % textColor’0ı° 0ű&% System0Ʊ& % controlColor0DZ&%Window0ȱ&%Song Inspector°È ?€ ?€ F@ F@%&   D€ D@0ɱ& % NSVisible0ʱ &0˱&%MenuItem°¢0̱& %  TextField10°ƒ0ͱ& %  TextField11°Œ0α&%GSCustomClassMap0ϱ&0б& % ImageView°¸0ѱ& %  TextField12°¨0Ò±& %  TextField13°»0Ó±&%Box°•0Ô±& %  TextField1°M0Õ±& %  TextField2°V0Ö±& %  TextField3°_0×±&% Button1°G0ر&% Button2°°0Ù±& %  TextField4°h0Ú±& % ImageView°·0Û±&%GormNSPopUpButton°›0ܱ& %  TextField5°q0ݱ& %  TextField6°z0Þ± &::0ß1(NSNibConnector°B°0à±(°4°0á±(°×°0â1)NSNibOutletConnector°°×0ã±& % resetButton0ä±)°°40å±& % saveButton0æ±)°°B0ç±&%inspectorPanel0è1*NSNibControlConnector°4°0é±&%save:0ê±*°×°0ë±&%reset:0ì±)°B°0í1+NSMutableString&% delegate0î±(°°0ï±(°Ô°0ð±(°Õ°0ñ±(°Ö°0ò±(°Ù°0ó±(°Ü°0ô±(°Ý°0õ±(°°0ö±(°°0÷±(°*°0ø±(°Ì°0ù±(°Í°0ú±(°Ó0û±(°Û0ü±(°Ë0ý±(°0þ±)°°0ÿ±& % titleFieldP±)°°ÔP±& % albumFieldP±)°°ÕP±& % trackFieldP±)°°ÖP±& % artistFieldP±)°°ÙP±& % genreFieldP±)°°ÌP ±& % yearFieldP ±(°ÑP ±)°°ÑP ±& % filenameFieldP ±(°ØP±*°Ø°P±+& %  mbLookup:P±)°°ØP±+& %  lookupButtonP±(°ÚP±)°°ÛP±+& %  pageSelectorP±)°°ÜP±+& %  titleLabelP±)°°ÝP±+& %  albumLabelP±)°°P±+& %  trackLabelP±)°°P±+& %  artistLabelP±)°°*P±+& %  genreLabelP±)°°ÍP ±+& %  yearLabelP!±)°°ÔP"±+& %  nextKeyViewP#±)°Ô°ÕÐ"P$±)°Õ°ÖÐ"P%±)°Ö°ÙÐ"P&±)°Ù°ÌÐ"P'±)°Ì°×Ð"P(±)°×°4Ð"P)±)°B°ÛP*±+&% initialFirstResponderP+±)°Û°ØÐ"P,±)°Ø°Ð"P-±)°4°ÛÐ"P.±)°°ÚP/±&% lookupAnimationP0±(°ÒP1±)°°ÒP2±&% lookupStatusLabelP31, GSMutableSet1- NSMutableSet1.NSSet&°CCynthiune-1.0.0/Slovak.lproj/InfoPlist.strings000644 001751 000024 00000001606 11733546714 022063 0ustar00multixstaff000000 000000 ÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 0.9.5"; CFBundleGetInfoString = "Cynthiune version 0.9.5, Copyright 2002-2006 Wolfgang Sourdeau.\nThis program is distributed under the GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau. See COPYING for more information about your rights."; NSApplicationIcon = "Cynthiune"; Cynthiune-1.0.0/Slovak.lproj/Localizable.strings000644 001751 000024 00000015744 11733546714 022405 0ustar00multixstaff000000 000000 þÿ/* Saso Kiselkov <diablos@manga.sk> */ /* Application menu */ "Info" = "Info"; "Playlist" = "Zoznam skladieb"; "Songs" = "Skladby"; "Player" = "Prehráva "; "Windows" = "Okná"; "Window" = "Okno"; "Tools" = "Nástroje"; "Services" = "Slu~by"; "Hide" = "Skrye"; "Hide Cynthiune" = "Skrye Cynthiune"; "Hide Others" = "Skrye ostatných"; "Show All" = "Uká~ vaetky"; "Quit" = "Ukon ie"; "Quit Cynthiune" = "Ukon ie Cynthiune"; /* Info submenu */ "Info Panel..." = "Info panel..."; "About Cynthiune..." = "O Cynthiune..."; "Preferences..." = "Nastavenia"; "Send A Bug Report..." = "Poslae chybovú správu..."; "Help..." = "Pomocník..."; "Help" = "Pomocník"; "Cynthiune Help" = "Pomocník pre Cynthiune"; /* Playlist submenu */ "Open..." = "Otvorie..."; "New" = "Nový"; "Save..." = "Ulo~ie..."; "Save As..." = "Ulo~ie ako..."; "Save To..." = "Ulo~ie do..."; "Revert To Saved" = "Navrátie k ulo~enému"; "Close" = "Zatvorie"; /* Songs submenu */ "Add Songs..." = "Pridae skladby..."; "Remove Selection" = "Odstránie výber"; "Remove All" = "Odstránie vaetky"; "Cleanup" = "Vy istie"; /* Player submenu */ "Play" = "Prehrae"; "Pause" = "Pauza"; "Stop" = "Stop"; "Previous" = "Predoalá"; "Next" = "a>aia"; "Mode" = "Mód"; /* Player/Mode submenu */ "Repeat" = "Opakovae"; "Shuffle" = "Náhodne"; /* Tools submenu */ "Song Inspector..." = "Inapektor skladieb..."; /* Windows submenu */ "Arrange In Front" = "Usporiadaj vpredu..."; "Miniaturize Window" = "Miniaturizuj okno"; "Minimize" = "Minimalizuj"; "Close Window" = "Zatvor okno"; /* Playlist status label */ "%d songs - total time: %@" = "%d skladieb - celkový  as: %@"; " - selection: %@" = " - výber: %@"; /* Playlist table */ "Song" = "Skladba"; "Time" = " as"; /* Song Inspector */ "Song Inspector" = "Inapektor skladieb"; "Song Information" = "Informácie o skladbe"; "Format Attributes" = "Formátové atribúty"; "No song selected" = "Nie je zvolená ~iadna skladba"; "Lookup through MusicBrainz..." = "Vyh>adaj cez MusicBrainz..."; "Title" = "Titul"; "Album" = "Album"; "Track" = "Stopa"; "Artist" = "Umelec"; "Genre" = "}áner"; "Year" = "Rok"; "Reset" = "Reset"; "Save" = "Ulo~ie"; "Generating TRM..." = "Generujem TRM..."; "Querying MusicBrainz server..." = "Pýtam sa MusicBrainz servera..."; "Received %d result(s)" = "Dostal som %d výsledkov"; /* Dialog boxes */ "Add music files..." = "Pridae hudobné súbory..."; "Add a music folder..." = "Pridae hudobnú zlo~ku..."; "Save playlist as..." = "Ulo~ie zoznam skladieb ako..."; /* Song names */ "[not found: %@]" = "[nenájdená: %@]"; "[unknown format: %@]" = "[neznámy formát: %@]"; "[format error: %@]" = "[formátová chyba: %@]"; /* Preference dialog */ "None" = "}iaden"; "Preferences" = "Nastavenia"; "General" = "Vaeobecné"; /* General preferences */ "Windows" = "Okná"; "Playlists" = "Zoznamy skladieb"; "Use absolute filenames" = "Pou~ívaj absolútne súborové cesty"; "Output module" = "Výstupný modul"; "Textured" = "Texturovaný"; "Sticky" = "Pri>navý"; "Remember location" = "Pamätaj si lokáciu"; "Format" = "Formát"; /* MB results panel */ "Please select the correct information..." = "Prosím zvo>te správne informácie..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "Po~iadavka na MusicBrainz server vrátila viac ako jednen výsledok.\nProsím zvo>te výsledok z nasledúcej tabu>ky, ktorý je najvhodnejaí."; "Cancel" = "Zruaie"; Cynthiune-1.0.0/Preferences.nib/classes.nib000644 001751 000024 00000000735 11733546714 021316 0ustar00multixstaff000000 000000 { IBClasses = ( {CLASS = CynthiunePopUpButton; LANGUAGE = ObjC; SUPERCLASS = NSPopUpButton; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {bundleChanged = id; }; CLASS = PreferencesController; LANGUAGE = ObjC; OUTLETS = {bundleSelector = id; bundleViewBox = id; prefsWindow = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }Cynthiune-1.0.0/Preferences.nib/info.nib000644 001751 000024 00000000701 12014507042 020565 0ustar00multixstaff000000 000000 IBDocumentLocation 18 63 356 240 0 0 800 578 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 Cynthiune-1.0.0/Preferences.nib/keyedobjects.nib000644 001751 000024 00000011527 12014507042 022315 0ustar00multixstaff000000 000000 bplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯z +/067;?GNefghlpw{†‡ˆ‰¨°±´¶·ÉεÏÔÕÖÚÜÝÞàâæéÝêíÝîòôûþ$%(23479<=?BEFGHILMQSTVWYZ]^adfhjuvwxy‡Dz|~€‘’“¯/”•–—˜™š›œU$nullß  !"#$%&'()*[NSNamesKeys[NSFramework_NSObjectsValues]NSNamesValues]NSConnections]NSFontManagerVNSRootYNSNextOid_NSVisibleWindows]NSObjectsKeys]NSClassesKeysZNSOidsKeys\NSOidsValuesV$class_NSClassesValues€[€€Z€\€€€€€X€f€h€i€y€gÒ,-.[NSClassName€€_PreferencesControllerÒ1234X$classesZ$classname¢45^NSCustomObjectXNSObject_IBCocoaFrameworkÒ89:ZNS.objects €Ò12<=£=>5\NSMutableSetUNSSetÒ8@F¥ABCDE€ €O€Q€S€U€0ÔHIJKLM"]NSDestinationWNSLabelXNSSource€ €M€NÜOPQRSTUVWXY#Z[\]^_`abcd_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€J€ € € €I€K€ÿÿÿÿðx€L€_{{104, 201}, {331, 361}}[PreferencesWNSPanelÒijkYNS.stringTView€Ò12mn£no5_NSMutableStringXNSStringÔqrst!uvZNSSubviews_NSNextResponderWNSFrame€€H€8Ò8xF¢yz€€4Ør|}s~,aa€‚ƒ„…[NSSuperview_NSOriginalClassNameYNSEnabledVNSCell€€ €3€€_CynthiunePopUpButton]NSPopUpButton_{{99, 320}, {128, 22}}ߊ‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦‚y§›‚_NSAlternateImage[NSCellFlags^NSButtonFlags2]NSButtonFlagsVNSMenuZNSMenuItem_NSAlternateContents_NSPeriodicInterval_NSPreferredEdge_NSPeriodicDelay\NSCellFlags2]NSAltersState]NSControlView_NSKeyEquivalentYNSSupport_NSUsesItemFromMenu_NSArrowPosition€ÿÿÿÿ„Aþ‚@ÿ€€€K€2€Ô©ª«¬­®¯VNSSizeVNSNameXNSfFlags"A0€€\LucidaGrandeÒ12²³¢³5VNSFontÒiµkPÒiµkÛŽ¸¹º»¼½¾¿ÀŸÁÂÃĄůÇÈ]NSMnemonicLocWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImage_NSKeyEquivModMaskXNSActionÿÿÿ€€ €€$€'€&ÓºÊËÌÍ[NSMenuItems€(€1€)UItem1ÓÐ,ÑÒÓ^NSResourceName€"€#€!WNSImage_NSMenuCheckmarkÒ12ר£ØÙ5_NSCustomResource_%NSCustomResourceÓÐ,ÛÒÓ€%_NSMenuMixedState__popUpItemAction:Ò12ߢ5ÒiákZOtherViewsÒ8ãF£ äå€*€-ÚŽ¸º»¼½¾¿ÀŸÁçÃĄůÇè€+€,UItem2ÚŽ¸º»¼½¾¿ÀŸÁëÃĄůÇì€.€/UItem3Ò12ïð£ðñ5^NSMutableArrayWNSArrayÒ12󎢎5Ò12õö§ö÷øùú5_NSPopUpButtonCell^NSMenuItemCell\NSButtonCell]%NSButtonCell\NSActionCellÒ12üý¢ý5^NSClassSwapperÜqrÿ|aa     £[NSFrameSize\NSBorderType_NSTitlePosition[NSTitleCellYNSOffsets]NSTransparent]NSContentViewYNSBoxType€5€9€;€:€6€GÒ8F¡ Ôr|szzv€7_{{1, 1}, {329, 304}}Ò12£5VNSView[NSResponderZ{331, 306}V{0, 0}ט‹” !"# [NSTextColorZNSContents_NSBackgroundColor€C€=€<€Fþ€>SBoxÔ©ª«&­®'"APÕ)*+,-./01WNSColor[NSColorName\NSColorSpace]NSCatalogName€A€@€?€BVSystem_textBackgroundColorÓ5+6£1WNSWhiteB1Ò128)¢)5Õ)*+,:;/01€E€D_controlTextColorÓ5+>£1B0Ò12@A¤Aú5_NSTextFieldCellÒ12CD¤D5UNSBox_{{1, 1}, {331, 361}}_{{0, 0}, {800, 578}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò12JK¢K5_NSWindowTemplate[prefsWindowÒ12NO£OP5_NSNibOutletConnector^NSNibConnectorÔHIJzRM"€P]bundleViewBoxÔHIJyUM"€R^bundleSelectorÔHIJ"XMK€TXdelegateÔHIJ"[\y€V€W^bundleChanged:Ò12_`£`P5_NSNibControlConnectorÒ8bc©åŸ Kaäy z€YÒ12eñ¢ñ5Ò8gc©ŸyŸ"KŸazaÒ8ic©åŸ Kä" yzÒ8kc©lmnopqrst€]€^€_€`€a€b€c€d€e[NSMenuItem2YPopUpListUPanel[NSMenuItem1\File's OwnerÒ8{c¡yÒ8}c¡…Ò8c¯ŸK"yCaA B äEzDåÒ8c¯‚ƒ„…†‡ˆ‰Š‹ŒŽ€j€k€l€m€n€o€p€q€r€s€t€u€v€w€x     Ò12žŸ¢Ÿ5^NSIBObjectData#,1:LQVdf]c¢®ºÌÚèöý(6ANUgikmoqsuwy{}ƒ…Žšœž¶¿ÈÓØçð #*7=FQSUWY[]n|„‘“ÄØêô*4AKWY[]_acegprt›£¬¶»½ÆÍßèù "$-246WcyƒŠŒŽ‘“•¬ºÓ1=LZal‚—©»ÈÖäö')249;=?ACFHMO`gnw|~€‚˜¤­®·äòú  -AJOQSUWY^`my{}…’¡£¥§¯ÁÊÑäø    . 7 < E P Y ` b d ‘ — À Â Ä Ê Ó Ú é ñ ú ÿ   + : G U b k p  ° ¼ É Û ç ñ ÿ      ! " $ & / 2 C E \ e l s  Š ‘ ® º Å Ù Û Ý ß á æ è ì ý    ! - : H J L N P R Y o | „ ‡ • ª ¬ ® Á Î Ñ Ú ã õ þ  $ ; F c l q „ ™   · Æ × Ù ç ø ú %68:IRYqz˜¦¹ÂÕÞñóõ÷ùûýÿ+8ADMPYzƒ¤¦¨ª¬®°²´¶¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚãè ÷Cynthiune-1.0.0/Preferences.gorm/data.classes000644 001751 000024 00000000701 11733546725 021646 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; CynthiunePopUpButton = { Actions = ( ); Outlets = ( ); Super = NSPopUpButton; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "bundleChanged:" ); Super = NSObject; }; PreferencesController = { Actions = ( "bundleChanged:" ); Outlets = ( prefsWindow, bundleViewBox, bundleSelector ); Super = NSObject; }; }Cynthiune-1.0.0/Preferences.gorm/data.info000644 001751 000024 00000000270 11733546725 021145 0ustar00multixstaff000000 000000 GNUstep archive00002afb:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamCynthiune-1.0.0/Preferences.gorm/objects.gorm000644 001751 000024 00000005434 11733546725 021705 0ustar00multixstaff000000 000000 GNUstep archive00002afb:00000022:00000049:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±&%PreferencesController0±&%GSCustomClassMap0±&0±&%GormNSPopUpButton0±&%CynthiunePopUpButton0 ±&%Box0 1NSBox1NSView1 NSResponder% A A  C—€ C…  C—€ C…&0 1 NSMutableArray1 NSArray&0 ±% @ g² @ g² C’| Cù…  C’| Cù…&0 ± &01 NSTextFieldCell1 NSActionCell1 NSCell0±&%Box01NSFont%&&&&&&&&0%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%windowBackgroundColor0±°0±&%System0±& % textColor @ g² @ g²%%0±& % GormNSPanel01NSPanel1NSWindow%  C¡€ CŸ&% CE D0±%  C¡€ CŸ  C¡€ CŸ&0± &° 01GSControlTemplate1GSClassSwapper°1 NSPopUpButton1NSButton1 NSControl% Bæ C BÌ A   BÌ A &0± &%01NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell0±&°&&&&&&&&0 1NSMenu0!±&0"± &0#1 NSMenuItem0$±&%Item 10%±&&&ÿ%0&1NSImage0'±& % common_Nibble’%0(±0)±&%Item 2°%&&ÿ%’%0*±0+±&%Item 3°%&&ÿ%’%%’0,±&0-±&&&&°#° %%%%%0.±% CŒ€ C¡€ @  C¡€ @&(0/± &00±% @à @à Cš€   Cš€ &01± &02± 03±&%Box°&&&&&&&& @  @ %%°04±&%Window05±& % Preferences°5 C€ Cr F@ F@%06±07±&%NSApplicationIcon08±&% Box1°.°°09± &  0:1NSNibConnector°0;±&%NSOwner0<1NSNibOutletConnector°;°0=±& % prefsWindow0>±° 0?±°;° 0@±& % bundleViewBox0A±°0B1NSNibControlConnector°°;0C±&%bundleChanged:0D±°;°0E±&%bundleSelector0F±°°;0G±&%delegate0H±°80I1 GSMutableSet1! NSMutableSet1"NSSet&°Cynthiune-1.0.0/Italian.lproj/InfoPlist.strings000644 001751 000024 00000001606 11733546723 022205 0ustar00multixstaff000000 000000 ÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 0.9.5"; CFBundleGetInfoString = "Cynthiune version 0.9.5, Copyright 2002-2006 Wolfgang Sourdeau.\nThis program is distributed under the GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau. See COPYING for more information about your rights."; NSApplicationIcon = "Cynthiune"; Cynthiune-1.0.0/Italian.lproj/Localizable.strings000644 001751 000024 00000015526 11733546723 022525 0ustar00multixstaff000000 000000 ÿþ/* Roberto Pariset <r.pariset@gmail.com> /* Application menu */ "Info" = "Informazioni"; "Playlist" = "Elenco brani"; "Songs" = "Brani"; "Player" = "Lettore"; "Windows" = "Finestre"; "Window" = "Finestra"; "Tools" = "Strumenti"; "Services" = "Servizi"; "Hide" = "Nascondi"; "Hide Cynthiune" = "Nascondi Cynthiune"; "Hide Others" = "Nascondi gli altri"; "Show All" = "Mostra tutto"; "Quit" = "Esci"; "Quit Cynthiune" = "Termina Cynthiune"; /* Info submenu */ "Info Panel..." = "Informazioni..."; "About Cynthiune..." = "Infomazioni su Cynthiune"; "Preferences..." = "Proprietà..."; "Send A Bug Report..." = "Segnala un bug..."; "Help..." = "Aiuto..."; "Help" = "Aiuto"; "Cynthiune Help" = "Aiuto su Cynthiune"; /* Paylist submenu */ "Open..." = "Apri..."; "New" = "Nuovo"; "Save..." = "Salva..."; "Save As..." = "Salva come..."; "Save To..." = "Salva su..."; "Revert To Saved" = "Torna alla versione salvata"; "Close" = "Chiudi"; /* Songs submenu */ "Add Songs..." = "Aggiungi brano..."; "Remove Selection" = "Rimuovi selezione"; "Remove All" = "Rimuovi tutte"; "Cleanup" = "Pulisci"; /* Player submenu */ "Play" = "Riproduci"; "Pause" = "Pausa"; "Stop" = "Interrompi"; "Previous" = "Precedente"; "Next" = "Successivo"; "Mode" = "Modalità"; /* Player/Mode submenu */ "Repeat" = "Ripeti"; "Shuffle" = "Shuffle"; /* Tools submenu */ "Song Inspector..." = "Ispettore di brani..."; /* Windows submenu */ "Arrange In Front" = "In primo piano"; "Miniaturize Window" = "Riduci a icona"; "Minimize" = "Minimizza"; "Close Window" = "Chiudi finestra"; /* Playlist status label */ "%d songs - total time: %@" = "%d brani - tempo totale: %@"; " - selection: %@" = " - selezione: %@"; /* Playlist table */ "Song" = "Titolo"; "Time" = "Durata"; /* Song Inspector */ "Song Inspector" = "Ispettore di brani"; "Song Information" = "Informazioni sul brano"; "Format Attributes" = "Formato degli attributi"; "No song selected" = "Nessuna brano selezionato"; "Lookup through MusicBrainz..." = ""; "Title" = "Titolo"; "Album" = "Album"; "Track" = "Traccia"; "Artist" = "Artista"; "Genre" = "Genere"; "Year" = "Anno"; "Reset" = "Cancella tutto"; "Generating TRM..." = "Generazione TRM in corso..."; "Querying MusicBrainz server..." = "Interrogazione del server MusicBrainz in corso..."; "Received %d result(s)" = "Ricevuto/i %d risultato/i"; /* Dialog boxes */ "Add music files..." = "Aggiungi file musicali..."; "Add a music folder..." = "Aggiungi una directory di musica..."; "Save playlist as..." = "Salva elenco brani come..."; /* Song names */ "[not found: %@]" = "[non trovato: %@]"; "[unknown format: %@]" = "[formato sconosciuto: %@]"; "[format error: %@]" = "[errore di formato: %@]"; /* Preference dialog */ "None" = "Niente"; "Preferences" = "Proprietà"; "General" = "Generale"; /* General preferences */ "Windows" = "Finestre"; "Playlists" = "Elenco brani"; "Use absolute filenames" = "Usa nomi di file assoluti"; "Output module" = "Modulo d'uscita"; "Textured" = "Look and feel metallico"; "Sticky" = "Attacca"; "Remember location" = "Ricorda posizione"; "Format" = "Formato"; /* MB results panel */ "Please select the correct information..." = "Selezionare l'informazion corretta..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "La richiesta al server MusicBrainz ha restituito più di un risultato.\nSelezionare la riga più accurata nella tabella seguente."; "Cancel" = "Annulla"; Cynthiune-1.0.0/Images/Cynthiune-playlist-48.tiff000644 001751 000024 00000012670 11733546670 022276 0ustar00multixstaff000000 000000 II*^ÁæþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÕîþÿþþÿþ€…þÙòþþ‘ÿþüüÿþùÿþ€ˆþÝòþ þ-éÿÿýüÿúöîÿóíåÿæèÓÿåðÉÿì÷ÏÿóùÝÿúûôÌÿþýÿþóøÿþôÿþ€Šþáòþþ=ñÿÿþ,ýÿûøíÿûë¶ÿûâºÿðÜÑÿÚÛÂÿÙë®ÿßù­ÿãû¢ÿéû¡ÿò÷ÑÿüüúÔÿþüÿþêôÿþôÿþ€ŠþåòþþBõÿþþ3ÿùôêÿüç¿ÿÿå›ÿýâ¤ÿèÒ¿ÿ¿µÿ²¼žÿ¸ÈÿÊÞ“ÿâöÿðü¢ÿôöÐÿúú÷Øÿþüÿþåðÿþôÿþ€ŠþéòþþCõÿ7÷öðÿóçËÿüåÂÿþä±ÿÛȘÿ¼¶¸ÿ¼¾ÌÿÈÉ×ÿÃÄÔÿ¹»Àÿ¸½ÿæì£ÿúû°ÿòòÔÿþúÜÿþüÿþäìÿþôÿþ€ŠþíòþþCùÿþü<ÿëë×ÿéãÆÿñãÄÿßÏ·ÿÁÀÈÿËËÜÿËËÜÿÏÐÞÿÊËÜÿÍÎÝÿÉÊÙÿ¸¹ªÿù÷¬ÿ÷ôµÿðïæÿþþàÿþüÿþäèÿþôÿþþñòþþCùÿòóïÿæóØÿçñÔÿæéËÿþÆ,ÿÍÏÚÿËÌ×ÿÊËÕÿÏÏÖÿÌÍÕÿËÌÖÿÍÎØÿÆÇÕÿÙÕ¢ÿþõ®ÿèäÉÿþûàÿþüÿþåÿþ»ÿþ¤ÿþ¡ÿþ§ÿþµÿþÊÿþâÿþ&þþõòþþCùÿ?éíâÿäøÓÿæúÖÿßïÏÿÈÈ¿ÿÑÑÄÿÐϾÿÏÏ»ÿÎ̹ÿÓѼÿÏνÿÐÏÁÿÑÐÅÿÎɦÿþñ®ÿç߸ÿþòàÿþýÿþìÿþÌÿþ»ÿþ¸ÿþ¹ÿþ¿ÿþÍÿþãÿþ9þþõòþþCùÿCáæÖÿâõ¿ÿßô½ÿÅʦÿÏÌ®ÿÑΩÿÓЦÿÐξÿÔÓ×ÿÖÒ¤ÿÏÌ¡ÿÓÑ©ÿÖÒ¯ÿÝÒ¢ÿüëªÿÛÑ®ÿÑÑëÿÿãÿÿÿãÿÿÿãÿÿÿãÿÿÿãÿÿÿãÿÿÿãÿÿÿãÿÿÿâþÿÜÜøÿÒÒìÿËËåÿããäÿþäÿþåÿþêÿþóÿþ@þþõòþþCùÿGÞâÑÿàðªÿàñ§ÿרžÿ×ÓšÿÕÐÿÔωÿÚÔšÿÚÖ«ÿÓÍ‚ÿÙÐŽÿëÛ ÿòÞ¤ÿ÷á¥ÿùã¥ÿÒÇ©ÿËËêÿÉÉçÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÝ þÿÜÜýÿÛÛüÿûûüÿþüÿþüÿþüÿþþÿþBþþõòþþCùÿÿÜmÕÿàé¥ÿäî ÿÛÚÿÞØ…ÿÜÖ{ÿÔÍkÿÕÏkÿÔÍiÿÓÇpÿîÓ™ÿôÖŸÿõÙ¡ÿöÛ¢ÿôÚ¢ÿª¡“ÿÏÏîÿŸŸ·ÿ’’¨ÿ——­ÿ««Åÿ››²ÿ††šÿ´´Îÿ››³ÿ““©ÿŽŽ£ÿÜÜýÿÿÞÿÿÿþïÿþCþþõòþþCùÿþçlÿÓÖ§ÿìòŸÿìí—ÿìêÿíçŽÿåÝiÿæÜVÿåÛRÿàË}ÿñМÿòÒœÿóÓžÿôÕŸÿÞÅ–ÿ“–ÿ¤¤¼ÿ––­ÿyy‹ÿ{{ÿ©©Âÿ““©ÿrr„ÿŠŠŸÿŒŒ¡ÿ——­ÿxxŠÿÖÖöÿÿÞÿÿÿþïÿþDþþõòþþCùÿþø@ÿÇÇ»ÿàãœÿóôÿòîœÿñèœÿîá‚ÿîâAÿíá9ÿ̾CÿÕº~ÿðЛÿòÒœÿîМÿ¯£”ÿ¹¹ÕÿÜÜýÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÃàÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCùÿþþ<ÿååäÿ··£ÿßܘÿñèœÿðâ›ÿðݘÿñÜŠÿñÚ‡ÿîÖ‡ÿåÊÿîΚÿíΚÿµ¦‹ÿµ´·ÿììôÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ëÿþDþþõòþþCõÿþü0ÿÜÜÛÿ­¬žÿÊÂÿæÖ—ÿïÙ›ÿïÕ›ÿïÒ›ÿïЛÿêÌ™ÿÙ¾‘ÿ¨†ÿ³²°ÿþÞÿþþüÿþÊÿþâüÿþôÿþêÐÿþDþþõòþþCñÿþüÿþå ÿ°°­ÿ|ÿšrÿºª†ÿº©…ÿ¬ž~ÿ‰kÿqnhÿþ†ÿþ§ÿþšÿþ³ÿþýÿþ—ÿþ¢ÿþ¾ÿþ£ÿþªÐÿþDþþõòþþCíÿþþÿþ÷ÿþŸÿþŠÿþ£ÿþ©ÿþnÿþˆÿþµÿþ…ÿþÿþ…ÿþ“ÿþüÿþ™ÿþ¨ÿþ“ÿþ•ÿþ±ÐÿþDþþõòþþCÕÿþûøÿþÝÿþÆüÿþûôÿþüÿþþÌÿþDþþõòþþCíÿÿöÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿéÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿÙúÿÓÓóÿÿÞÿÿÿÚ ûÿÔÔôÿÕÕôÿÿÞÿÿÿÞÿÿÿÞÿÿÿÜ ýÿÕÕõÿ½½ÙÿÛÛüÿÿÞÿÿÿÞÿÿÿÞÿÿÿÜýÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿ¸Óÿ‰‰žÿÿÞÿÿÿÈ5æÿ{{Žÿ  ¸ÿŸŸ·ÿ¬¬Åÿ¦¦¾ÿ––­ÿªªÄÿ‰‰ÿ¦¦¿ÿ››³ÿ±±Ëÿ¥¥¾ÿŸŸ·ÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿµAÐÿ‹‹ ÿÊÊèÿÈÈæÿ¤¤½ÿtt†ÿqq‚ÿ~~‘ÿvvˆÿžž¶ÿªªÄÿ””«ÿ•ÿvv‡ÿ‡‡œÿ~~‘ÿ££»ÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿÛ üÿÖÖöÿÝÝþÿÿÞÿÿÿÝþÿÝÝþÿÕÕõÿÙÙúÿÔÔôÿ××÷ÿÝÝþÿÛÛûÿÿÞÿÿÿÕ ôÿ××÷ÿ××÷ÿ××÷ÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿùÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñëÿþDþþõòþþCÕÿþóÿþúàÿþûôÿþöÿþþÿþ÷àÿþDþþõòþþCåÿþìÿþŸüÿþæÿþµÿþ©üÿþ¶ÿþ¶ÿþÆÿþËÿþµÿþ¹ÿþüÿþ“ÿþÊÿþÃÿþ¨ÿþ“ÿþÀÿþ´àÿþDþþõòþþCåÿþÅÿþ•ÿþïÿþãÿþÂÿþ¬üÿþ­ÿþ®ÿþ–ÿþœÿþ¬ÿþªÿþüÿþ¦ÿþ…ÿþÿþšÿþºÿþˆÿþ³àÿþDþþõòþþCáÿþøÿþ÷üÿþåÿþòüÿþöÿþöÿþéÿþïÿþöÿþöüÿþáÿþðÿþàÿþëÿþàÿþóÿþêàÿþDþþõòþþCíÿÿøÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿïÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿÞÿÿÿÝþÿÿÞÿÿÿÞÿÿÿØ øÿÜÜýÿÝÝþÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÜýÿÿÞÿÿÿÞÿÿÿÜ üÿÜÜüÿÝÝþÿÝÝýÿÿÞÿÿÿÜýÿÿÞÿÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿ¢ºÿ´ÿÿÞÿÿÿÐIðÿ‡‡›ÿ——­ÿšš²ÿ»»×ÿ°°Êÿ··ÒÿÅÅâÿ¬¬Æÿ™™°ÿ³³ÍÿÇÇåÿ¢¢ºÿ••«ÿ——­ÿ¬¬Æÿ¹¹Õÿ‘‘§ÿ´´ÎÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿ¶UÑÿ––¬ÿÖÖöÿÐÐïÿ¢¢ºÿww‰ÿ  ¸ÿ––­ÿŠŠŸÿppÿ||ÿ‘‘§ÿoo€ÿ››²ÿ››³ÿÄÄáÿ……™ÿll|ÿ¦¦¿ÿ¤ÿtt†ÿŠŠžÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿòÿÿÿÞÿÿÿÎ íÿÀÀÜÿÑÑðÿÿÞÿÿÿ²EÍÿÊÊèÿÒÒñÿÀÀÜÿ¾¾ÛÿÏÏîÿÏÏíÿ¸¸Óÿ¾¾ÛÿººÖÿÇÇäÿÝÝþÿÏÏîÿÎÎíÿÅÅâÿ¼¼Øÿ¿¿Ûÿ··ÓÿÿÞÿÿÿÞÿÿÿþïÿþDþþõòþþCíÿÿ÷ÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿþïÿþDþþõòþþCÿñÿþDþþõòþþCÿñÿþDþþõòþþCÿñÿþDþþõòþþCÿñÿþDþþõòþþCÿñÿþDþþõòþþBÿñÿþBþþõòþþ=þ|þ «þ ºþ ¼þ ¼þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ¼þ ºþ «þ|þ=þþõòþ þ.þ[þ|þˆþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþˆþ|þ[þ.þ þõòþþþ.þ?þFþFþFþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþFþFþ?þ.þþþõîþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþñêþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþíþ00<€ ND’@V¨°(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/Cynthiune-playlist-48.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/Cynthiune-playlist.icns000644 001751 000024 00000120067 11733546673 022054 0ustar00multixstaff000000 000000 icns 7ics#Hüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüis32–Ž ÿÿþýøêãëõûþ€ÿmÿþûüøÜÍÓßïùþÿÿbÿø“úåunov†‘“þÿbÿëðäÈÈÎÊÅÎïóüÿbÿæ‡ÔËÌÎÌÍÈäñ÷ÿbÿåÚËÑ{{|{x†ŽîÿbÿáØÖ×ÝëÛÚäòìçÿbÿãƒàÝÝÞÝòö÷Þçÿbÿ€‹êꈅ„ŽŽxîÿ]&f¨»Ø€×ÕÕ̱”yej€”³Ï–›û÷û€ÿ ø=æßd¯ÿÿöüÿu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿ7þúõëÝôþü÷í“®²KexlgifccEFøñt¶øaXÖu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿ7þúõëÝôÿÿþúóå…Fµ­Ÿ“ІƒƒQP=_>¨pzRÛÉSž˜OäàKþÿø0YWBÓÒgê·wu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô€ÿ.þéSšçäÛÑÈÁ²~ºsrU‚hÚ}gøì\ †:~Œþÿø?üüÒ`ºE~¨u¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ-z‹¿¿éÔÀìèÑBÍhf™xôœŸUܱN ŸMãÐ}ÿÿø:ÌË‚€ÞZð©¥u¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿª„„‡ßÔ¿€ÿ#¹`ŒöºÔÂÿÒ×ËeŠcÐÓÔgpèÿÿü—„„£øþ¹b‡ò¼ÓÁÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô”ÿûc¡}›¦ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô•ÿñ»Ëü¦ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞݼ³Ð‚ÞÔšÔÞÔ¨†ÞÚ×€Þ™ˆ‰©Ú†ÞÜÕ‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ¡PsPÛÞÄ ƒÞÃSÞÞÙÝÞÞÚÚÞµˆ€Þ/š˜FÞÞÚÜÞÞÛÙÞÈu‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞˆ¿×EÏÞ$ÄESºÃS׃^qР^Z¨m9ÄÞÞ2ØØ|ˆÜ—^eÄ·^].¯ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓ‚ÞÌYPÜÞ$ÄT¨\¼S¨dÆwŒˆ¾œb¢lÚÞÞ.YW4¹ÉIÙe›®²JºW×ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞÈØÀTºÞÄTÚrvSˆDi]ŠŽh`[ªt€Þ1Ê˨T±1idn¤fgAÀ]‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞf±ØU´¹ØÞÞÄTÞÉ>B¡pך¢JÇ¥]ªs€Þ1ÃÚTÅOÕ²Uµ¼FÀ\‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ-¹UYzÕvÐÞÞÌÞÞ¤lÕuZiÊuazP¯RÃÞÞd``gÃÛˆZ^½Ž\tW¦\¬ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓ‚Þ×ÑÝ‰Þ ÜÑÚÞÛÒÜÔÜÒÛ…Þ ÝÒØÞÝÒÚ×ÙÕØÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëÜíÂøïÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô„ÿü„ÿ彨þ”ÿäú‡ÿß×ÿÿùÂú…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿþއ‚ÿý™Rcqø’ÿýoá„ÿ ¥àò~véÿ¡‚­…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿÊ?†‚ÿ0ÜQöÿýs´ÿÿá°¥£xÝÚ|†ïϳu¶“€íÿýl•xÄü¯t˜ÞIŠÜ‚‚åü¤t¸ý„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿï_³†‚ÿ²ƒ€ÿ+¹}ÿÿ¿Vâ>®­vLÏ­m™pã$ÏŽŸÿý\‰ÓPÁxál½n»\¾¹d¤yàSÖ„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿn¦˜mîÿ¸z€ÿ+²ƒÿÿ¿‰ÿgãÑXiüÿF—®ûOÿ²™ÿýlÛÿƒ´©|>½z·døÿW`Îÿž£„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ9£ˆdIÓñýÿÿåPàýïbÄÿÿ¿ŠÿgäÑeXõìO˜¯ûPÿ²™ÿýeÃúp†qò½zÁ]ëðWx²ý„¶„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôƒÿÔ÷lë€ÿ/ºUqZšüÿÿÇ—ÿyçÖŠkY·¦¸ûdÿ»¥ÿýtbluÍXƒ[†ˆ‰d`£ÝWt_ó„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôŒÿ÷àò‰ÿäíˆÿ÷ãüÿîéùé÷æýçêþÿõàû…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÚàÂêæÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓ‚Þ€ÛƒÞÛÿ×ÞÐÚŽÞÒ׃ÞÑÔÞØÍÞÞÌÚÞÎÝ…ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞÄ?RZØÞØsai^ÎrÃŽÞ…®ƒÞ—~Þ¡CÒÐWÌÞ^Õ…ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ¤vÌÍÝÞ2ÄE×܇±b–¾ÜªŠ­È¿Þ¤ØÉÀÂŒ—Õx§»‹×ÞÞµNÝm8¶²UØªŠ­ÜLÑ£‰³‚ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ…CW|ÝÞ3ÑP[–ÂÛRr’V±^ F¢aÇ®yœR›lŠxVa›ÞÞÏLÀXƒ‡}¶_ DÈL¡c¡9ÙÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ³µËS±‚Þ2ѬwA¦^ºÓWÈ„/¼M]{KЪŒXvx¤¦‰LŒÞÞÝ`‡e¼_^®Òœ„/ÁLÄ™"×ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ©ÓÞp£Þ·sÞÞ•ob¾ÓW‡k¼T¿kG¸JNÏ?°•vx‰K´‚Œ€ÞŽ3’ØQ<É‘k¼RÁLty¿?×ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëÙÓÞ<“Q|LÌ^ÌÞÞÑUfzJ¯b¾ÓWŠY„3•¡1ÔD€Ò7‹ZOu‹@‰OcÛÞÞ¸$»ÞqJÜ”Z„2—Kwd'¬ÞÝÞëõúþ‚ÿ‹ ‹‚ÿþúõëÙÓÞÛ»©ÒÝÐÜ€Þ2Õ³©ËÝÓÛÝÒÙ´¹Ç¼ÚÐÝÒ×ÞÃ¬Ð®ÔØ¾¯Í³ÝÞÞÛÐÜÞ×ÓÞÚ´¹Æ½Ñׯ½ÃÁÞÝÞëõúþ‚ÿ‹ ‹‚ÿþúõëÙÓÂÞÝÞëõúþ‚ÿ‹ ‹‚ÿ þûõìÚÏÕÓÑѺРÑÑÓÕØßìõúþ‚ÿ‹ ‹‚ÿ þûõíÞ¶¬¥¡ ¸Ÿ  ¡¥¬¶Çàìõûþ‚ÿ‹ ‹‚ÿ þûöïä×ËÁº·µ¸´ µ·ºÁË×äîöûþ‚ÿ‹ ‹‚ÿ þüøñèÝÓËÅÂÁ¸À ÁÂÅËÓÝèñøüþ‚ÿ‹ ‹‚ÿ þýúôíåÝ×ÓЀϵΠÏÏÐÓ×Ýåíôùýþ‚ÿ‹ ‹ƒÿþûøóíèäá߀޴݀Þßáäèíóøûþƒÿ‹ ‹ƒÿþýûøôñïíìºëìíïñôøûýþƒÿ‹ ‹„ÿþýûúøöƒõ³ô‚õöøúûýþ„ÿ‹ ‹…ÿþþýüƒû´úƒûüýþþ…ÿ‹ ‹‡ÿÄþ‡ÿ‹ ‹Øÿ‹ ŒØÿŒ {éåãàßßÌÞßßàãåé{ÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿ‚ã€ø¿÷€øñ™²ãÃÿþþûöU±×ÂÿþüúüüðH°ÇÁÿþüøóùÿüïf¯¶‘ÿþ†ýüþþ ÿ þúñçóÿÿüëi®©Žÿþýú÷ïéåãåéîñòóõùûýþÿý÷ëÚë€ÿüëi­Œÿþü÷ïæßÛÙØÚàçîóøùùöóô÷ûþ›ÿýöæÎäÿüëZ¬™‹ÿüøíåáÞÜÚÙØ×ßçíóøùúúüûõñøüþ™ÿýõãÇß‚ÿüëZ«‘‰ÿþúòèãááßÝÛØØÙßçîôøúúûüüýúóóúý˜ÿýôáÃÛƒÿüëZªŽˆÿý÷íæääááßÝÜÚØØÞæîôøúúûüüýüüõð÷ý—ÿýôàÁÚ„ÿüëU©Œ‡ÿüöéææääãáàÞÜÚØØÝæîõùúúûüýüùïôü–ÿýôàÀÙ…ÿüêU¨‹…ÿþüóè€äåäãááßÝÛÓ©œ¡¤¨Éåõüý‚üøíóû•ÿýôàÀÙ†ÿüê$§‹…ÿüõéåää€åäâáàÑ—yˆ˜––“•”|w¾„ü÷ëóü”ÿýôàÀÙ‡ÿüê$¦‹„ÿýöìåä€åãน¹ÇÒÏÌÈÊÏɱ…zʃüõéõý“ÿýôàÀÙˆÿüꥋƒÿþ÷ìåƒäååÔŽ•ÂÊÌÈÏÑÌÉÇÏÑÊÑ·~°ó€üûûïë÷ý’ÿýôàÀÙ‰ÿþꥋ‚ÿþûîäâã„ä•®ÊÍÌÌÈÌÒÍËÈÎÑÌËÍÇ”ûü€ûùåíúþ‘ÿýôàÀÙŠÿþꤋ‚ÿýôçâßàãäÙ‘¯ÊÎËÌÈËËÑÑËÈÉÐÐËÓÌË—™‚ûñâóü‘ÿýôàÀÙŒÿ꣋‚ÿùëèæãßßâ€ä ¢µÌÌËËÎÉÌËÑÔÌÈÊÐÐÈÏÍÌÊ”ÐüûúùøâèøþÿýôàÀÙŒÿþê¡‹ÿ,ýóçîìéæãààäÅŸÏÎÍËËÌËÊËÍÒÐÊÆÌÐÌËÑË̾}òúùø÷ëÛòýÿýôàÀÙÿþé$ ‹ÿ-úëëóñïìéæâà·ÆÎÑÊËÍËÏÇÌÏÓÓËÅÉÍÌÊÐËÌʨ¿øø÷öô×éúþÿýôáÁÓñ‡ïðòô÷úüúâ ‹€ÿ.þõãò÷õóòðíéá¬ÉÎÒËËÍËÍÉËÌÌÔÎÊÈÍÎËÌÑÌÊŪöõôóóÙÝõþÿýôâá†wqƒp qswޤ½Öé¶ ‹€ÿ.üñæùùø÷öõóñпÌÉÒÐÏËÍÊÌÊÎÌÑÒÌÊÍÌËÍÐÎÍÊ“ßóóòñâÒïüÿýöåÊ«“†€€€‚†Žž³Ëᢠ‹€ÿúêãú ùù÷öØÆÌËÓÔÌÏÌÌÓÌÏÏÑÑÍÊÌÎÑÍÑÎÑ˶Îñ€ðæÉéúÿþøëÖ¾«¡…œž£«¹Ìà— ‹€ÿøåè„úûµÅ€ÏÕÐÏÎÎÐÐÏÒÒÖÏÊÌЀÏÐÏμÍïíÄâ÷þŽÿþûóåÖÊÃÁ†ÀÁÃÇÎÚç‘ ‹€ÿõÞäƒú÷ǯÊÑÎÑÔÍÑÑÒ˾¼ÌÒÖ×ÊÌÑÐÒÐÔÏÒ¼Íïë»Üõþÿýùóëæâááƒàáãæëò’ ‹€ÿôÚâùúﯙÍÐÏÒÐÔÐÒÔÎÆéíÎÐרÉËÓÑÑ€Ò Ñ»Ìîííìè³Öòüþýüú÷õ€ôóô€õöøú• ‹€ÿóØáøùÌ´ÓÑÓÍ€ÑËÔÓÇáññéÇÕ×ÌËÏÕÐÓÑÓÍÊàêæ©Éäï‘ñðð„ïóüü„ýþ ‹€ÿó×ß‚÷ôåÔÐÒÍ€ÏÆÖÐÌÕÞÞÛËÔ×ËÉÍÓÏÓÛââä‚ç䞸ÒܘÞÝÝæúüýþƒÿŽ ‹€ÿòÖÞ‚õòËÒÔÒÒÐÐÑÆ×ÓÔÑÙÛÑÒÔÔÉÏÎÙáäèå€ãääãä㞸ÒÜšÞæøûýþƒÿŒ ‹€ÿóÖ×ôô€óðÇÖÖÒÕÑÓÔ¿Ô×ÔÔÓÕÓÔ×ÓÇÚÞàÞÝÞÞ€ßàáàáÙ™¸ÒÜšÞäóøûþƒÿ‹ ‹€ÿôÙÌ€òñòÎ¼ÕØÔÕ€ÔÑ¿ÚÕÙÖÕ×Ô×ÀÒá××ÙÚÚÛÜÝÞÞË•¸ÎÜšÞâíôùýþ‚ÿ‹ ‹€ÿõܽëñãÔÖ××ÔÏÕÖ×Ë¿ÒÛÒÉÍǶÊÚÓÓÕÖרÙÙ€ÛÜÜݲ–ž{ÝšÞàèñøüþ‚ÿ‹ ‹€ÿ÷â¾Þð@ñÖÕÙØÌÊÖØØÚÓ¾»¼»¾ºËÑÑÒÑÓÔÕÖ×ØÙØÙÙÚÛœœ–_Ú·ÑÞйËÞØ¾ÃÎÕÓÞÒ×Ù¾¿ÚÛ»ׂÞäîöûþ‚ÿ‹ ‹€ÿúèÂÇ€ñAòòÏÖÚØÕËØÙÚÛÜÞÕÍÉÒ×ÐÒÏÐÑÑÒÓÔÕÖ×רØÙχ§š`¡QlSÌVnOÂ|Z`?’‚Þ|ªyc[”WdyÞÝàíõûþ‚ÿ‹ ‹€ÿûîͯç€òóîêéêçêñêßÞÝÞÝØÓÔÏÐÎÏÐÑ&ÓÔÔÕÖÕרª‡²ža½°ž;šzÞ¶µPÓÐJŽÞyœ@¡¦]%e‹¡®ÈÄÂÁ¿Á¹£Œvdj€”³Ï–›û÷û€ÿ ø=æßd¯ÿÿöüÿu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿ7þúõëÝôþü÷í“®²KexlgidbbDEøñt¶øaXÖu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿ7þúõëÝôÿÿþúóå…Fµ­Ÿ“ІƒƒQP=_>¨pzRÛÉSž˜OäàKþÿø0YWBÓÒgê·wu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô€ÿ.þéSšçäÛÑÈÁ²~ºsrU‚hÚ}gøì\ †:~Œþÿø?üüÒ`ºE~¨u¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ-z‹¿¿éÔÀìèÑBÍhf™xôœŸUܱN ŸMãÐ}ÿÿø:ÌË‚€ÞZð©¥u¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿª„„‡ßÔ¿€ÿ#¹`ŒöºÔÂÿÒ×ËeŠcÐÓÔgpèÿÿü—„„£øþ¹b‡ò¼ÓÁÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô”ÿûc¡}›¦ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô•ÿñ»Ëü¦ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞݼ³Ð‚ÞÔšÔÞÔ¨†ÞÚ×€Þ™ˆ‰©Ú†ÞÜÕ‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ¡PsPÛÞÄ ƒÞÃSÞÞÙÝÞÞÚÚÞµˆ€Þ/š˜FÞÞÚÜÞÞÛÙÞÈu‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞˆ¿×EÏÞ$ÄESºÃS׃^qР^Z¨m9ÄÞÞ2ØØ|ˆÜ—^eÄ·^].¯ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓ‚ÞÌYPÜÞ$ÄT¨\¼S¨dÆwŒˆ¾œb¢lÚÞÞ.YW4¹ÉIÙe›®²JºW×ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞÈØÀTºÞÄTÚrvSˆDi]ŠŽh`[ªt€Þ1Ê˨T±1idn¤fgAÀ]‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞf±ØU´¹ØÞÞÄTÞÉ>B¡pך¢JÇ¥]ªs€Þ1ÃÚTÅOÕ²Uµ¼FÀ\‘ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ-¹UYzÕvÐÞÞÌÞÞ¤lÕuZiÊuazP¯RÃÞÞd``gÃÛˆZ^½Ž\tW¦\¬ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓ‚Þ×ÑÝ‰Þ ÜÑÚÞÛÒÜÔÜÒÛ…Þ ÝÒØÞÝÒÚ×ÙÕØÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëÜíÂøïÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô„ÿü„ÿ彨þ”ÿäú‡ÿß×ÿÿùÂú…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿþއ‚ÿý™Rcqø’ÿýoá„ÿ ¥àò~véÿ¡‚­…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿÊ?†‚ÿ0ÜQöÿýs´ÿÿá°¥£xÝÚ|†ïϳu¶“€íÿýl•xÄü¯t˜ÞIŠÜ‚‚åü¤t¸ý„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿï_³†‚ÿ²ƒ€ÿ+¹}ÿÿ¿Vâ>®­vLÏ­m™pã$ÏŽŸÿý\‰ÓPÁxál½n»\¾¹d¤yàSÖ„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿn¦˜mîÿ¸z€ÿ+²ƒÿÿ¿‰ÿgãÑXiüÿF—®ûOÿ²™ÿýlÛÿƒ´©|>½z·døÿW`Îÿž£„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ9£ˆdIÓñýÿÿåPàýïbÄÿÿ¿ŠÿgäÑeXõìO˜¯ûPÿ²™ÿýeÃúp†qò½zÁ]ëðWx²ý„¶„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôƒÿÔ÷lë€ÿ/ºUqZšüÿÿÇ—ÿyçÖŠkY·¦¸ûdÿ»¥ÿýtbluÍXƒ[†ˆ‰d`£ÝWt_ó„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôŒÿ÷àò‰ÿäíˆÿ÷ãüÿîéùé÷æýçêþÿõàû…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÚàÂêæÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÂÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓ‚Þ€ÛƒÞÛÿ×ÞÐÚŽÞÒ׃ÞÑÔÞØÍÞÞÌÚÞÎÝ…ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞÄ?RZØÞØsai^ÎrÃŽÞ…®ƒÞ—~Þ¡CÒÐWÌÞ^Õ…ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ¤vÌÍÝÞ2ÄE×܇±b–¾ÜªŠ­È¿Þ¤ØÉÀÂŒ—Õx§»‹×ÞÞµNÝm8¶²UØªŠ­ÜLÑ£‰³‚ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ…CW|ÝÞ3ÑP[–ÂÛRr’V±^ F¢aÇ®yœR›lŠxVa›ÞÞÏLÀXƒ‡}¶_ DÈL¡c¡9ÙÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ³µËS±‚Þ2ѬwA¦^ºÓWÈ„/¼M]{KЪŒXvx¤¦‰LŒÞÞÝ`‡e¼_^®Òœ„/ÁLÄ™"×ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëØÓÞ©ÓÞp£Þ·sÞÞ•ob¾ÓW‡k¼T¿kG¸JNÏ?°•vx‰K´‚Œ€ÞŽ3’ØQ<É‘k¼RÁLty¿?×ÞÝÝëôúþ‚ÿ‹ ‹‚ÿþúõëÙÓÞ<“Q|LÌ^ÌÞÞÑUfzJ¯b¾ÓWŠY„3•¡1ÔD€Ò7‹ZOu‹@‰OcÛÞÞ¸$»ÞqJÜ”Z„2—Kwd'¬ÞÝÞëõúþ‚ÿ‹ ‹‚ÿþúõëÙÓÞÛ»©ÒÝÐÜ€Þ2Õ³©ËÝÓÛÝÒÙ´¹Ç¼ÚÐÝÒ×ÞÃ¬Ð®ÔØ¾¯Í³ÝÞÞÛÐÜÞ×ÓÞÚ´¹Æ½Ñׯ½ÃÁÞÝÞëõúþ‚ÿ‹ ‹‚ÿþúõëÙÓÂÞÝÞëõúþ‚ÿ‹ ‹‚ÿ þûõìÚÏÕÓÑѺРÑÑÓÕØßìõúþ‚ÿ‹ ‹‚ÿ þûõíÞ¶¬¥¡ ¸Ÿ  ¡¥¬¶Çàìõûþ‚ÿ‹ ‹‚ÿ þûöïä×ËÁº·µ¸´ µ·ºÁË×äîöûþ‚ÿ‹ ‹‚ÿ þüøñèÝÓËÅÂÁ¸À ÁÂÅËÓÝèñøüþ‚ÿ‹ ‹‚ÿ þýúôíåÝ×ÓЀϵΠÏÏÐÓ×Ýåíôùýþ‚ÿ‹ ‹ƒÿþûøóíèäá߀޴݀Þßáäèíóøûþƒÿ‹ ‹ƒÿþýûøôñïíìºëìíïñôøûýþƒÿ‹ ‹„ÿþýûúøöƒõ³ô‚õöøúûýþ„ÿ‹ ‹…ÿþþýüƒû´úƒûüýþþ…ÿ‹ ‹‡ÿÄþ‡ÿ‹ ‹Øÿ‹ ŒØÿŒ {éåãàßßÌÞßßàãåé{ÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿ‚ã€ø¿÷€øñ™²ãÃÿþþûöU±×ÂÿþüúüüðH°ÇÁÿþüøóùÿüïf¯¶‘ÿþýý…üþþ ÿ þúñçóÿÿüëi®©ŽÿþüùìáÛÈ¿»€¹ÁÑàïùýþÿý÷ëÚë€ÿüëi­ŒÿþûðÚÍÒÔÓÅ·¯¬­®¯¬¨¬¾áôûþ›ÿýöæÎäÿüëZ¬™‹ÿüðȲ¼ÉÔÕÔɹ¯¬­­¯«¦¢›¯Ûöüþ™ÿýõãÇß‚ÿüëZ«‘‰ÿþùÔ¦§µÄÑÖÕÌ»±¬­®¯ª¦ œ–‘“¹êúý˜ÿýôáÃÛƒÿüëZªŽˆÿýñÆ›– ­¾ÌÕÔϽ±­­®¯©¥Ÿ™“Ž‹ªÜ÷ý—ÿýôàÁÚ„ÿüëU©Œ‡ÿ üîÄ©Ÿ’𦵯ÓÕÒÀ²­­¯¯¨¤ž—‘‹‹“š¬Ûóü–ÿýôàÀÙ…ÿüêU¨‹…ÿ#þüíǹ°¦›” ­ÀÏÖͱ|}~~Š”™•‹– ª´Òòû•ÿýôàÀÙ†ÿüê$§‹…ÿ$üðÍÃÀ¹¯¥˜˜¥·½‘z¢££¡¢šu^qŒ”§¯¯´Õòü”ÿýôàÀÙ‡ÿüê$¦‹„ÿýõÒÃÃÄÀ¸®¢”‘œ–€¦ÈØßÝÜÛÛÝ×À‹^x™¤®€¯¶Ûõý“ÿýôàÀÙˆÿüꥋƒÿþ÷ØÂÃÄÄÃÀ·¬ž‡xžÑÛÜÚÝÞÜÛÚÝÞÛÞÄv¥€¯®¯¼ä÷ý’ÿýôàÀÙ‰ÿþꥋ‚ÿþûçÆÂ‚ÃÀ¶«ƒ¼Û€ÜÚÜßÜÜÛÜÞ€ÜÖ–r®¯€®°Çìúþ‘ÿýôàÀÙŠÿþꤋ‚ÿýóÎÄÃÃÂö†½ÛÝÜÜÚÛÜÞßÜÚÛÞÝÛàÜÛ¢r‚®´Øóü‘ÿýôàÀÙŒÿ꣋‚ÿùâÈÉÆÄÀ×À‚ÜÛÜÜÞàÜÚÛÝÝÚÝÜÜÚ–“®®­­®ÃèøþÿýôàÀÙŒÿþê¡‹ÿ ýòÓÐÍËÈÆÃ®ªÝƒÜÛÜÜßÞÛÙÜÝÜÜÞÜÜÎp©­´ÖòýÿýôàÀÙÿþé$ ‹ÿ-úèÏ×ÔÑÎÊÇÅð×ÜÞÛÜÜÛÝÚÜÝàßÜÙÛÜÜÛÞÜÜÛ²…­­®­¯ÆéúþÿýôáÁÓñ‡ïðòô÷úüúâ ‹€ÿþõÜÔÙÚØÕÑÎÊǶÚÜÜØ×ÖÕÕÓ ×ÔÓÒÕ×ÖØÛÚÚÖ‘­®¹Ýõþÿýôâá†wqƒp qswޤ½Öé¶ ‹€ÿüñÖØÙÛ€ÙÖÒµÅÔÑÔÒÏÌÌÉÉÈËÈËÌÊÊ€ÌÏÓÓÔÕ‘Ÿ­³ÐïüÿýöåÊ«“†€€€‚†Žž³Ëᢠ‹€ÿúêÍÖØÙÚÙÂÆÌÉËËÄÄÁÃÄÁÂÁÂÂÀÀÂÅÅÆÉÊÌÌ´–­®ÄéúÿþøëÖ¾«¡…œž£«¹Ìà— ‹€ÿøäÈÑÑÓÔÖ×ØÙ¤¿ÄÂÁÁ¾ººƒ¹ ¼¶¶¹¼¼¾¿ÂÃij—­¯ºâ÷þŽÿþûóåÖÊÃÁ†ÀÁÃÇÎÚç‘ ‹€ÿ/õÝÂÊËÍÍÏÐϨŸ»»¹¸·°³²±«££ª°²²«¯²³¶¶¹¹½ª–­­¬¬«°Üõþÿýùóëæâááƒàáãæëò’ ‹€ÿ&ôÙ¼ÃÄÄÅÆ¿‘†µµ±±®®¨«ª¥ªä꼤¨©¡¤ªª«­°²´¡”€«ª©¨Öòüþýüú÷õ€ôóô€õöøú• ‹€ÿ/óÖ¶»»¼¼½œ˜³°®©¨§¤œ£¡šßþþòžŸ ™›Ÿ¤£¦¨«©¢¢©©¨©¦¦Ôñü‘þýý‡ü„ýþ ‹€ÿ&óÕ²³³²³³±°­¨¦¢ ›’›—•Ýÿÿò›•˜’—ššŸ¦ªª¨¦§¦¥Ôòý˜ÿþþýúüýþƒÿŽ ‹€ÿòÕ¯©©€¨¦”¤¢ž›—•”‰’¢à籋‹Œ…Œ˜¢§©§ƒ¥€¦ÔòýšÿýøûýþƒÿŒ ‹€ÿóÕ®¥€¤¥¦“žš•”Ž‹|‡‡…„†Š‚‚„ƒ{‹›£¤¢£ ¤¤¥¤¥¢¥Ôòýšÿûóøûþƒÿ‹ ‹€ÿôÙ°¦¤€£‹…•“Œ‰†ƒr|}zyzxyo~ ¡¡€¢£¢ §Ôîýšÿùíôùýþ‚ÿ‹ ‹€ÿ$õܰ££¢¢£›‘Œˆƒy~|yqhrtkbda[o™žžŸŸ  ¡¡‚¢£—«¶þšÿ÷èñøüþ‚ÿ‹ ‹€ÿ$÷⸡¢¢¡¢¡Œ‡…€qhvsrpj^[XV[Yd‡›œžŸ  Ÿ€  ¡¡¢’´­nûßÓñÿðÕêÿùÛáíõóÿòøúÛÜûüß×÷ÿõäîöûþ‚ÿ‹ ‹€ÿ$úèÁ ¢¡¡  „yrcmkigdc]VRY[nœ››œœžŸŸ Ÿ ‘À²o¹^}`ëc[ßhoI¨–ÿÄŒri•«dsŒÿôàíõûþ‚ÿ‹ ‹€ÿûîÍ Ÿ €Ÿž˜“‘—¡’q_\[XRLLKšš€›œ€žŸ ›Í·pÚ˶D±ÿÒÐ]óðV¤’ÿ‹´Jº¿F‹zÎÑÿôßìõúþ‚ÿ‹ ‹€ÿýôÙ­œ €Ÿžœ››\TSQHIKH|›š€›œœ‚ž Ÿž†PÙ¹r‘z¨M¤ÿèÓ_û÷\¤’ÿƒ­I¥©ŸÞ°whÿôÞëõúþ‚ÿ‹ ‹€ÿþùæ¾”Ÿž€œ€› škLIH@BC?F„šš›&œœžžžˆ?›r›o­²9Ä\ÁhÇj¡=±fÆIÀh«¥…Š™ÀOÿôÞëõúþ‚ÿ‹ ‹ÿ üïÏ¢Ÿžœœ›šš•HB?<::91*‰šš›€œ"ž—€¦»Š¦÷à—¶³ÔË’Àýæš­[á­Ìî霟í휖ÞÿôÞëõúþ‚ÿ‹ ‹ÿ þ÷߸ˆŽžœœ‚›šš™];7521021*nšš‚›œœ™x¾ã÷þŠÿoêÿôÝëõúþ‚ÿ‹ ‹‚ÿûìΡz’œœ‚›š ˆB@=:9::=<>cšš‚›—}­Õðû‹ÿåûÿôÝëôúþ‚ÿ‹ ‹‚ÿýôß»‹{–‚›‚šœ‡¢šš›švŸÉèøþÿôÝëôúþ‚ÿ‹ ‹‚ÿþøëШ’ƒ’€›’š ››™{t–ÀáõýžÿôÝëôúþ‚ÿ‹ ‹‚ÿ þúòß¿³•‘š›“š•{o“ºÜñûþžÿôÝëôúþ‚ÿ‹ ‹‚ÿ þúõçÐÑ»•x…—‘š ™Žor”¹ÚïúþŸÿôÝëôúþ‚ÿ‹ ‹‚ÿ þúõêØäܾœ{tŽ‚š™š™€š™‚š ›–wfxš½Úïúþ ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÜïñßŧ‡UT~—œ›‡š ˜ndl†¥œ®ðúþ€ÿûjmœù‚ÿ®Ê´ÿôÝëôúþ‚ÿ‹ ‹‚ÿ&þúõëÝóûóåÐ~>]$^t~…“‘ŽŒtg`j€”³Ï–›û÷û€ÿ ø=æßd¯ÿÿöüÿu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿ7þúõëÝôþü÷í“®²Kexked`]]?@8E*5(ƒjH]^›¡Ÿ^R¼ÿÿø>øñt¶øaXÖu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿ7þúõëÝôÿÿþúóå…Fµ­Ÿ“ІƒƒQP=_>¨pzRÛÉSž˜OäàKþÿø0YWBÓÒgê·wu¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô€ÿ.þéSšçäÛÑÈÁ²~ºsrU‚hÚ}gøì\ †:~Œþÿø?üüÒ`ºE~¨u¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ-z‹¿¿éÔÀìèÑBÍhf™xôœŸUܱN ŸMãÐ}ÿÿø:ÌË‚€ÞZð©¥u¤~ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿª„„‡ßÔ¿€ÿ#¹`ŒöºÔÂÿÒ×ËeŠcÐÓÔgpèÿÿü—„„£øþ¹b‡ò¼ÓÁÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô”ÿûc¡}›¦ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô•ÿñ»Ëü¦ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿþÙÎï‚ÿô²ôÿô†ÿû÷€ÿ°žÃû†ÿýõ‘ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ¹\…]üÿâ%—ÿá`ÿÿúþÿÿûûÿЀÿ7²¯Qµÿÿûýÿÿüúÿ懑ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿÜøPîÿ$âP`Öá`ø—m‚ï¸lhÂ~Bâÿÿ:ùùý®muâÓlk¥£5ÊÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿëg]ýÿ$âaÂjÙ`Ás䉡۴q»}ûÿÿ5ge<ÕèTá°u³ÈÍUÖdøÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿæùÝaÖÿâaûƒˆ`OykŸ¤xoiĆ€ÿ9éêÁaÌ9ys½vwKÝk‘ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿvÌùbÏÕùÿÿâaÿçHL¹ø±»Vå¾kÄ…€ÿ9àá±aã[õͦbÑÙQÝj‘ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ-Õbgõˆïÿÿë“ÿÿ½}õ‡hyé‡p]Ê_àÿÿsoowàühmÚ¤j†e¿jÆÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿ÷ñþ‰ÿ ýñûÿüòýôýòü…ÿ þòùÿþòû÷úõùÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô„ÿü„ÿ彨þ”ÿäú‡ÿß×ÿÿùÂú…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿþއ‚ÿý™Rcqø’ÿýoá„ÿ ¥àò~véÿ¡‚­…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿÊ?†‚ÿ0ÜQöÿýs´ÿÿá°¥£xÝÚ|†ïϳu¶“€íÿýl•xÄü¯t˜ÞIŠÜ‚‚åü¤t¸ý„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿï_³†‚ÿ²ƒ€ÿ+¹}ÿÿ¿Vâ>®­vLÏ­m™pã$ÏŽŸÿý\‰ÓPÁxál½n»\¾¹d¤yàSÖ„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿn¦˜mîÿ¸z€ÿ+²ƒÿÿ¿‰ÿgãÑXiüÿF—®ûOÿ²™ÿýlÛÿƒ´©|>½z·døÿW`Îÿž£„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ9£ˆdIÓñýÿÿåPàýïbÄÿÿ¿ŠÿgäÑeXõìO˜¯ûPÿ²™ÿýeÃúp†qò½zÁ]ëðWx²ý„¶„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôƒÿÔ÷lë€ÿ/ºUqZšüÿÿÇ—ÿyçÖŠkY·¦¸ûdÿ»¥ÿýtbluÍXƒ[†ˆ‰d`£ÝWt_ó„ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôŒÿ÷àò‰ÿäíˆÿ÷ãüÿîéùé÷æýçêþÿõàû…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÂÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝô‚ÿ€üƒÿüàÜøÿïûŽÿòøƒÿñôÿùìÿÿëûÿíþ…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿâI_hùÿù…pylíƒàŽÿ™Éƒÿ®‘ÿºNòïdëÿmõ…ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ½ˆëìþÿ2âPøýœÌq­¢ÛýÄŸÇæÜÿ½ùçÝß¡®õŠÀ× µ÷ÿÿÑZþ~AÒÍbùÄŸÇýXñ¼žÎ‚ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿ™Neþÿ3ñ\i­ßü_ƒ¨cÌm¸Q»påÉŒ´_³}ŸŠµcµp³ÿÿîXÝf—œ£Òn¸OæX¹r¹BúÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿÎÐê`Ì‚ÿ2ñƉK¿mÖód浘7ÙY¦kŽWðÄ¡fˆŠ½¿žX¡ÿÿþoœuØnmÉò´˜6ÞXâ°•(÷ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÝôÿÃóÿ¼ÿÓ…ÿÿ¬€qÛóeœ{ØaÜ{RÔVZîIˬˆŠžWÏ–¡€ÿ¤;¨ù^Fè§|Ø_ÞX†‹ÜI÷ÿôÝëôúþ‚ÿ‹ ‹‚ÿþúõëÞôÿ<©^XëmëÿÿñbvVÊqÛóeŸg˜;¬º9ôO”ò@ h[‡ Jž[rüÿÿÔ*×ÿ‚Výªh˜:®W‰t•-ÆÿôÞëõúþ‚ÿ‹ ‹‚ÿþúõëÞôÿü×Ãòþðý€ÿ2õÎÃêþóüþòúÏÕåÙûðþòøÿáÆïÉôùÛÊìÎþÿÿüïýÿ÷óÿûÏÕäÚñøÊÚáÞÿôÞëõúþ‚ÿ‹ ‹‚ÿþúõëÞôÂÿôÞëõúþ‚ÿ‹ ‹‚ÿ þûõìßðöôòòºñ òòôöïßìõúþ‚ÿ‹ ‹‚ÿ þûõíáÕÉ¿¸´³¸² ³´¸¿ÉÔàìõûþ‚ÿ‹ ‹‚ÿ þûöïä×ËÁº·µ¸´ µ·ºÁË×äîöûþ‚ÿ‹ ‹‚ÿ þüøñèÝÓËÅÂÁ¸À ÁÂÅËÓÝèñøüþ‚ÿ‹ ‹‚ÿ þýúôíåÝ×ÓЀϵΠÏÏÐÓ×Ýåíôùýþ‚ÿ‹ ‹ƒÿþûøóíèäá߀޴݀Þßáäèíóøûþƒÿ‹ ‹ƒÿþýûøôñïíìºëìíïñôøûýþƒÿ‹ ‹„ÿþýûúøöƒõ³ô‚õöøúûýþ„ÿ‹ ‹…ÿþþýüƒû´úƒûüýþþ…ÿ‹ ‹‡ÿÄþ‡ÿ‹ ‹Øÿ‹ ŒØÿŒ {éåãàßßÌÞßßàãåé{ÿÿÿÿÿÿÿÿÿÿÿÿ÷t8mk@/§§§¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨§§—J IÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæŽ  Mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘ Sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý“ bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý’ $iÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘)nÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘-rÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý /tÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþŽ 1vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþŒ 1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþŒ  1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ‹  1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ‹   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷u   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿX  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿa   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿg  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿk"   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿn&   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿo*  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿs,  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿt/  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv0   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1    1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1   1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1  1vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv1  /kßãåèééêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêééèåãßk/ -@Set~…ˆ‰ŠŠ‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹Š‰ˆ…~teS@-);M]jty}~~}ytj]M;) $3CR]ejmnnnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooonnmje]RC3$  *7CLSWY[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[[[YWSLC7*  *3:@CDEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEDC@:3*  $),/011111111111111111111111111111111111111111111111111111111111111111111111111111110/,)$      Cynthiune-1.0.0/Images/Cynthiune-song-48.tiff000644 001751 000024 00000013072 11733546675 021405 0ustar00multixstaff000000 000000 II*äÁæþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÕîþÿþþÿþ€…þÙòþþ‘ÿþüüÿþùÿþ€ˆþÝòþ þ-•ÿþýÿþóøÿþôÿþ€Šþáòþþ=•ÿþüÿþêôÿþôÿþ€ŠþåòþþB•ÿþüÿþåðÿþôÿþ€ŠþéòþþC•ÿþüÿþäìÿþôÿþ€ŠþíòþþC•ÿþüÿþäèÿþôÿþþñòþþCÑÿþþ$ÿýýüÿùùôÿõôêÿïñâÿîòàÿòõàÿôöåÿùùòÿüüûÿþþðÿþüÿþåÿþ»ÿþ¤ÿþ¡ÿþ§ÿþµÿþÊÿþâÿþ&þþõòþþCÙÿþþ7ÿúùôÿ÷ðÝÿôãÓÿëÝÑÿàÚÍÿÔÜ´ÿÓæ¨ÿÝï«ÿß÷¯ÿáø­ÿèö´ÿïõÑÿ÷÷ðÿýýûþÿýÿþþüÿüüúÿëëéÿÌÌÊÿºº¹ÿ··µÿ¸¸·ÿþ¿ÿÌÌÊÿþãÿþ9þþõòþþCÝÿÿûYúÿøñÒÿûæ¨ÿüá´ÿúÞËÿïÚÕÿâÙÑÿÔÚ·ÿÔå¬ÿÝð­ÿÞø¯ÿàû©ÿâû¡ÿåü˜ÿçù™ÿïóÌÿøøöÿýýüÿýýüÿ÷÷öÿëëêÿååäÿääãÿþäÿþåÿþêÿþóÿþ@þþõòþþCåÿþþ\ÿø÷ôÿøë¾ÿÿæ”ÿÿä–ÿýâ©ÿüßÁÿôÝÔÿæÙÔÿ×Ú»ÿÔå¬ÿÝñ­ÿßù¯ÿàû§ÿãüžÿäü“ÿ¸ÊmÿêüŽÿïô¹ÿóóðÿýýûÿþþüÿýýûÿüüûÿþüÿþüÿþüÿþüÿþþÿþBþþõòþþCéÿþþWÿöõòÿùèÅÿÿå°ÿÿåŸÿÿå‘ÿþãžÿüáµÿøÞÏÿç×Ñÿºº¥ÿ§ƒÿ¢®ƒÿ£³„ÿÀÖŽÿß÷—ÿãûŽÿAF&ÿíû’ÿóý¥ÿòõºÿññéÿüüúþÿýþÿýþÿþðÿþCþþõòþþCíÿþþ_ÿ÷öõÿöéËÿýåÄÿÿå½ÿÿæ®ÿÿå™ÿÿä“ÿøÞ¥ÿºªœÿ‰‰Œÿª«µÿ½¾Éÿ¸¹Èÿ¸¹Èÿ¨©µÿ‡‹‚ÿ¡®mÿ)*ÿÐØ…ÿöý®ÿùý°ÿóô¼ÿððëÿýýûþÿýþÿýþÿýôÿþDþþõòþþCíÿþù\ÿîéÓÿôåÄÿùäÄÿýåÄÿÿå½ÿÿæ«ÿéÒÿš•‹ÿ»¼ËÿÊËÚÿÈÊÙÿÑÒÝÿËÌÛÿÇÈÛÿÐÑÞÿËËÚÿ¼½ÇÿÿVY9ÿöú«ÿúü®ÿüü¯ÿííÅÿþóÿþþìÿþDþþõòþþCñÿþýhÿîíãÿèáÄÿìáÃÿòäÃÿøåÄÿýåÄÿíÖ±ÿ¤ ŸÿÈÊÙÿËÌÛÿÊËÚÿÊËÚÿÎÐÜÿÍÎÜÿÈÊÛÿÍÎÝÿÌÍÛÿÊË×ÿ ÿÿuvPÿúù¬ÿýü¯ÿûø°ÿæåØÿùùøÿþþðÿþDþþõòþþCñÿþöhÿçèÐÿçèÊÿçãÇÿéáÄÿðãÃÿôâÂÿ¨££ÿËÌÜÿËËÛÿËÌÚÿËÌÚÿÊËÚÿÍÏÛÿÑÒÞÿÈÊÛÿËËÜÿÏÐÞÿÆÇÕÿ!$ÿÿÿ}zSÿüø«ÿÿù®ÿêæ»ÿììëÿþüðÿþDþþõòþþCõÿþýlÿëëåÿæñÕÿçñÔÿçíÏÿçèÊÿèãÅÿÐÊ·ÿÂÂÓÿÐÑÞÿÊËÜÿËËÜÿÌÎÜÿÈÉÙÿÌÍÛÿÒÓßÿËÌÜÿÆÈÙÿÌÍÚÿÄÅÓÿ++.ÿ¦£¬ÿ96:ÿÿ‡ƒZÿýö«ÿúñ¯ÿÜÜ×ÿþùðÿþDþþõòþþCõÿþù4ÿãæÙÿçùÚÿç÷ÛÿçõÙÿçòÕÿçîÏÿ¼¾¹ÿÉÊÖÿÐÑØÿÍÎÕÿÍÎÒÿËËÍÿËËÌÿþÍÿþÎ0ÿÑÑÐÿÉÉÎÿÍÎÏÿÆÆÈÿ!ÿ¶¸¹ÿÃÅÎÿZSJÿ'"ÿ¯¨uÿýò¬ÿØÕÃÿþòÿþþôÿþDþþõòþþCõÿþôLÿßçÑÿæûÖÿæûØÿæúÙÿçùÚÿç÷ÙÿÇÊÁÿÌÌÊÿÑÐÉÿÒÒÇÿÎÍÂÿÎÍÀÿÓÒÀÿÏοÿÒÐÁÿÕÔÂÿÌË¿ÿÎÍÀÿÉÈ»ÿþÿpphÿÌÎÈÿª©ÿ_ÿ92'ÿèÜžÿÜÖµÿþèÿþýôÿþDþþõòþþCõÿþîlÿÛæÈÿåûÍÿåûÏÿæûÐÿæûÓÿÈÖ¸ÿº¹¬ÿÑнÿÑϸÿÖÔ¸ÿÒϳÿÓÑ´ÿÌˬÿÅèÿÒϯÿÙÖµÿÐίÿÏͰÿÉÆ«ÿÿ$ ÿ¨§”ÿ°®™ÿúí«ÿocJÿƒ|WÿÚÓ¬ÿþÞÿþûôÿþDþþõòþþCõÿþê4ÿÕá¾ÿäùÁÿäùÂÿäúÃÿµ¿šÿ³±™ÿÕÓ´ÿÒЮÿÔÒ¬ÿÒЦÿØÕ©ÿÖÒ¥ÿÚØÈÿþù8ÿØÖ¿ÿÚÖ¥ÿØÕ¤ÿÎËžÿÊÇœÿÿÿ1/)ÿ¤¢ÿûíªÿâÓ™ÿ?6'ÿÒÉŸÿ××ÖÿþúôÿþDþþõòþþCõÿþè3ÿÔß¶ÿâ÷³ÿâ÷³ÿâø³ÿàî¯ÿÚØ¬ÿØÕ¨ÿÖÒ¢ÿ×ÔŸÿÑÍ–ÿÝÙ›ÿ×Ò•ÿïîÜüÿ7êèÐÿÛוÿÜØ–ÿÐËÿÇÄÿ40&ÿ/)!ÿ#ÿE?/ÿâÑ”ÿúæ¥ÿobHÿ´«‡ÿÕÕÔÿþùôÿþDþþõòþþCõÿþèlÿÔÚ±ÿâô§ÿâô¦ÿãô¦ÿÏÙ˜ÿÙÕžÿÜ×›ÿÛÖ•ÿÚÕ‘ÿÔΉÿÛÖŠÿÝØŠÿßÙÿçã­ÿÜ׊ÿßÙ†ÿÕÐÿÝÖ‰ÿÕËŽÿqeJÿÛÅÿ]Q=ÿ) ÿJC/ÿæÑ–ÿ˜…cÿ£›}ÿþÕÿþúôÿþDþþõòþþCõÿþêlÿÊͱÿåò¥ÿåò£ÿæò¤ÿÈÌÿÝØ“ÿßÚÿÞØŠÿÝ×…ÿߨ€ÿÎÈsÿߨzÿâÜzÿàÙxÿàÚxÿÛÔuÿÓËwÿòÜžÿÛÀŽÿvcKÿõÚ¡ÿõÚŸÿ«—pÿ71&ÿWL7ÿ™…bÿš•ÿþØÿþúôÿþDþþõòþþCõÿþïlÿÃøÿäî£ÿæñ¢ÿçñ¢ÿâéœÿÝׇÿâÜ„ÿàÚ~ÿáÛyÿâÛsÿâÚpÿÑÊeÿÏÇbÿÏÇaÿÎÆ_ÿÏÇcÿíÖ–ÿòÒÿ׺‹ÿxeMÿõ× ÿõØ ÿôØŸÿÜÃŽÿN@2ÿ:0&ÿŸž”ÿþàÿþüôÿþDþþõòþþCõÿþõÿþÇhÿÕØŸÿêò¡ÿëò ÿæëšÿä߉ÿçâƒÿæá~ÿëæ‡ÿèàuÿçÞdÿèàaÿæÝ\ÿåÜZÿåÜZÿãÓvÿðÏ›ÿñÑœÿÓ·‰ÿzhOÿóÔžÿôÕŸÿõÖ ÿô× ÿÛÁÿ8/(ÿ¢¡ ÿþêÿþýôÿþDþþõòþþCõÿþúÿþÛlÿ¹¹¡ÿìò ÿïô ÿñõŸÿó÷ŸÿóöŸÿóòžÿòîœÿñëœÿêâhÿëàRÿëàPÿìàMÿæÛJÿοmÿðÏ›ÿñЛÿϳ†ÿ~jPÿòÒÿóÓžÿóÔŸÿôÔŸÿòÕžÿc[RÿŽÿóôóÿþþôÿþDþþõòþþCõÿþýÿþìhÿµµ´ÿÑÓ™ÿò÷Ÿÿóöžÿóôÿòñÿòîœÿñêœÿðæ›ÿïã„ÿíâFÿîãBÿîã?ÿëà=ÿ¼²9ÿ¼¥rÿðÏ›ÿͰ„ÿlQÿòÒ›ÿòÒÿòÒÿóÓžÿ˺ÿ~}}ÿІˆÿþùðÿþDþþõòþþCñÿþøÿþÖdÿ–ÿãåšÿòóÿòñœÿñîœÿñêœÿñæœÿðâ›ÿðßšÿðäLÿñä5ÿñä1ÿòä/ÿïã0ÿ¸,ÿ¨•]ÿè}ÿƒnRÿðÑšÿòÒœÿòÒœÿàÇ–ÿ‰‡ÿ¬ª«ÿ˜”•ÿþýðÿþDþþõòþþCñÿþýÿþïÿþÁTÿ••‡ÿçåšÿñíœÿñê›ÿñçœÿðä›ÿðß›ÿðÜ›ÿñß—ÿòÞ”ÿòÝ“ÿòÜ“ÿòÛ“ÿòÚ”ÿçÏ’ÿÁ§}ÿ…rSÿñÏ›ÿñÑœÿçË™ÿ„uÿþ¨ ÿ¼º»ÿ´±²ÿþÿþðÿþDþþõòþþCíÿþûÿþçÿþ´Lÿ““„ÿÞÙ–ÿñèœÿðä›ÿðá›ÿðÞ›ÿïÚ›ÿïØ›ÿïÕ›ÿïÓ›ÿîÑšÿìÏšÿèÉ•ÿë˘ÿÆ©€ÿ‰rWÿðЛÿÛ”ÿ€}rÿþÿþ×ÿ¢œÿÞÿÝìÿþDþþõòþþCéÿþùÿþâÿþ²Dÿ††€ÿ»¶‰ÿíà›ÿðß›ÿðÜ›ÿïÙ›ÿï×›ÿîÔ›ÿèÌ–ÿ›…cÿN=2ÿ-$ÿ7)#ÿ[I9ÿ‡qUÿ¸¨„ÿwupÿþÿþÓÿþñÿ‚|{ÿþýìÿþDþþõòþþCéÿþþÿþùÿþåÿþ¼ÿþŠ8ÿ‰†xÿ¹°†ÿçÕ™ÿîÙ›ÿïÖ›ÿÞÃÿRB6ÿ'ÿ&ÿ' ÿ' ÿÿMG>ÿzzxÿþªÿþØÿþôÿÏËÌÿ¿¿ÿþþìÿþDþþõòþþCáÿþûÿþìÿþÏÿþ¨ÿþ‚,ÿvupÿ…‚pÿœ”xÿ@7.ÿÿÿÿÿÿÿ]ZZÿþÂÿþãÿþ÷ÿþþÿþýÿþýèÿþDþþõòþþCÝÿþýÿþöÿþæÿþÐÿþ¶ÿþŸÿþu ÿÿÿÿÿÿÿ$#ÿ¨¨¤ÿþñÿþûØÿþDþþõòþþCÕÿþüÿþ÷ÿþïÿþåÿþž ÿ ÿ !ÿ" #ÿ"!$ÿ%#&ÿ*%*ÿ`\_ÿ÷÷õÿþþÔÿþDþþõòþþCÅÿþîÿ:8:ÿ(&(ÿ*(+ÿ*'+ÿ-*,ÿxwxÿóÿòþÿþÐÿþDþþõòþþCÁÿáãâÿ’ÿzz}ÿ–•–ÿþÛÿþþÈÿþDþþõòþþCÿñÿþDþþõòþþCÿñÿþDþþõòþþBÿñÿþBþþõòþþ=þ|þ «þ ºþ ¼þ ¼þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ½þ ¼þ ºþ «þ|þ=þþõòþ þ.þ[þ|þˆþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþŠþˆþ|þ[þ.þ þõòþþþ.þ?þFþFþFþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþGþFþFþ?þ.þþþõîþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþñêþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþíþ00€ JÊ@Û*2(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/Cynthiune-song-48.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/Cynthiune-song.icns000644 001751 000024 00000124471 11733546672 021163 0ustar00multixstaff000000 000000 icns©9ics#Hüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüis32©Ž ÿÿþýøêãëõûþ€ÿEjÿþûüøÜÍÓßïùþÿÿ_ÿøùú寻‘ãöùþÿ_ÿëðäÈÈÎJ–Ýóüÿ_ÿæäÔËÌÎÍK<ñ÷ÿ_ÿåÚË€Ñ]—Ëãðîÿ_ÿáØÖ×ÝëR¦ßìçÿ_ÿãÞàÝÝÞò\<Þçÿ_ÿÙëêêæáñóðÌîÿ_ÿÍåñðïïèðÕÌöÿ_ÿâÆÞ®åнæþÿ_ÿúܺ €°·àûÿÿ_ÿÿûìÖîü€ÿ_ÿººƒÿ_Ž ÿÿþúðçíøúýþ€ÿjÿýõéßÒÚëôùúþÿÿ_ÿõçáÑÀ¾™ì÷ùþÿ_ÿëãÖÃÉÏJ–Ûñüÿ_ÿòéÓËÍÎÎK<êöÿ_ÿùéÎÐÏЖÉÚåìÿ_ÿõãÔÓÙéOŸÐÜåÿ_ÿîâÚ×ÖרR<Ìåÿ_ÿßïçäÜ×ÑÓÓÀíÿ&_ÿÎæíåáßÊÐÀÇöÿ_ÿâÅÕ¢Ǻ¶åþÿ_ÿúÜ· €¢²àûÿÿ_ÿÿûìÕîü€ÿ_ÿººƒÿ_Ž ÿÿüòæ×ÆËßõý€ÿ5jÿü䶸Á­¦™¹ìýÿÿ_ÿìÇ©«¾»t¡Åïþÿ_ÿÕÄ»Â×ÝN‚ Óúÿ_ÿÕÍÉ€ÓmÕJ<ºñÿ_ÿÏǺ¼¹½‡·®®åÿ_ÿ²ª¥œ¨Î:x™¥Þÿ_ÿ¢™€ur<<¢àÿ_ÿ¡šŽ‚`Qœž¥êÿ_ÿ´šœ—lV”›—½öÿ_ÿÞ¤–q“’§äþÿ_ÿúØ¥€Ѝßûÿÿ_ÿÿûëÓîü€ÿ_ÿººƒÿ_s8mkDDDDDDDDDDDCB66ÿÿÿÿÿÿÿÿÿÿÿÿÿÿVBÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Bÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`DDDDDDDDDDDCB6ich#Hÿÿÿøÿÿÿüÿÿÿþÿÿÿÿÿÿÿÿ€ÿÿÿÿÀÿÿÿÿÀÿÿÿÿÀÿÿÿÿÀÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿÀÿÿÿÿÀÿÿÿÿÿÿÿøÿÿÿüÿÿÿþÿÿÿÿÿÿÿÿ€ÿÿÿÿÀÿÿÿÿÀÿÿÿÿÀÿÿÿÿÀÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿÀÿÿÿÿÀÿÿÿÿih32 ÛãšÿþóŽ™ÿüÿùð˜ÿýóÿÿôꌘÿüê€ÿôꋘÿüåÿôꊘÿüä‚ÿôꉘÿüäƒÿô‰‰ÿ þýùõïîòôùüþÿü廤¡§µÊ≇ÿþú÷ôëàÔÓÝßáèï÷ýÿþüë̺·¸¿Ì㉆ÿûøûüúïâÔÔÝÞàâåçïøýý÷ëåääåêó‰„ÿþøøÿÿýüôæ×ÔÝßàãä¸êïóýþý‚üþ‰ƒÿþöù€ÿþüøçº¢£ÀßãAíóòñü„ÿ‰‚ÿþ÷öýÿøº‰ª½¸¸¨‡¡)Ðöùóðýƒÿ‰‚ÿùîôùýÿÿéš»ÊÈÑËÇÐ˼Vöúüíóþ‚ÿ‰ÿýîèìòøýí¤ÈËÊÊÎÍÈÍÌÊuúýûæùþÿ‰ÿö€çéðô¨ËÊÍÑÈËÏÆ!}üÿêìüÿ‰€ÿýëæ€çèÐÂÐÊËÌÈÌÒËÆÌÄ+¦9‡ýúÜùÿ‰€ÿùã‚ç¼ÉÐÍÍËËÍÎÑÉÍÆ¶ÃZ'¯ýØòþ€ÿ‰€ÿô߀æççÇÌÑÒÎÎÓÏÒÕÌÎÉp̪9èÜèý€ÿ‰€ÿîÛååææÈºÑÑÖÒÓÌÅÒÙÐÏÉ$¨°úoƒÚÞû€ÿ‰€ÿêՀ䵳ÕÒÔÒØÖÚùØÚØÎÊ1¤ûâ?Ò×ú€ÿ‰€ÿèÔ€âàÚØÖ×ÑÝ×ïÿêÛÜÐÇ4/#Eâúo´Õù€ÿ‰€ÿèÔââãÏÙÜÛÚÔÛÝßçÜßÕÝÕqÛ])J昣Õú€ÿ‰€ÿêÊååæÈÝßÞÝßÎßâààÛÓòÛvõõ«7W™šØú€ÿ‰€ÿïÃäæçâÝâàáââÑÏÏÎÏíò×xõõôÜN:Ÿàü€ÿ‰€ÿõÇÕêëæäçæëèçèæååãðñÓzóôõôÛ8¢êý€ÿ‰€ÿúÛ¹ìïñ€óòñêëëìæÎðñÏ~òóóôòcŽóþ€ÿ‰€ÿýìµÑòóóòòñðïíîîë¼¼ðÍ€òóË~Šùÿ‰ÿøÖãòò€ñ€ðññòï¨Ãðòòà‰¬˜ýÿ‰ÿýïÁ•ç€ñ€ðñ‚ò çÁ…ññ焨¼´þÿ‰‚ÿûç´“Þñ€ðï îìèëÆ‰ðÛ€×¢Þ‚ÿ‰ƒÿùⲆ»íððïïîè›N-7[‡¸wÓñ‚ý‚ÿ‰ƒÿþù弊‰¹çîïÞR'&''MzªØôÏÂþ‚ÿ‰…ÿûìϨ‚v…œ@]Âã÷þýýƒÿ‰†ÿýöæÐ¶Ÿu$¨ñû‡ÿ‰ˆÿ ü÷ïåž ""%*`÷þˆÿ‰Œÿî:(**-xóŠÿ‰ÿáz–Ûþ‹ÿ‰¡ÿ‰¡ÿ‰¡ÿ‰ÿÁãšÿþóŽ™ÿüÿùð˜ÿýóÿÿôꌘÿüê€ÿôꋘÿüåÿôꊘÿüä‚ÿôꉘÿüäƒÿô‰‰ÿ þýùôñòõöùüþÿü廤¡§µÊ≇ÿþùðãÝÚÜæï÷øöõ÷ýÿþüë̺·¸¿Ì㉆ÿûñæáÞÚÙÚåðøûûüùóøýý÷ëåääåêó‰„ÿþ÷ëæäâßÝÙÚåñùûüüÊüôóýþý‚üþ‰ƒÿþõè€åãáÞ׺§®³Ö÷ûFûýõñü„ÿ‰‚ÿþöéååæåäÞª‰«¾¹¹©‹®*Øýýôðýƒÿ‰‚ÿùéåäååæÒ•¼ËÊÒÌÈÑ˽Yúüüíóþ‚ÿ‰ÿýíááäååÖ ÊÌËËÐÎÊÎÍËvùüøåùþÿ‰ÿöèèãáãâ£ÌËÌÌËÏÒÊËÐÇzøùæìüÿ‰€ÿýëññíèãÊÂÑËËÎÉÍÓÌÈÍÅ+£6ƒöñÜùÿ‰€ÿùæù÷õòî¾ÊÑÎÎËËÍÎÑÉÎÆ¸ÅS"¨òÕòþ€ÿ‰€ÿôçûûúù÷ÊÌÐÒÍÍÒÎÐÔËÍÈpΩ2ÜÖèý€ÿ‰€ÿîæûÖ¹ÐÏÔÏÑËÃÏÖÎÍÆ §®íc|ÓÞû€ÿ‰€ÿêáùùú¿±ÓÐÒÐÕÒØùÖÖÕËÇ/¢íÓ6É×ú€ÿ‰€ÿèß÷÷øîØÕÒÔÍÙÒîÿèרËÄ0)?Ñæb«Õù€ÿ‰€ÿèÚ€ôÙÕ×ÖÕÎÖØÙã×ÙÐÖËeÅQ CÑ…›Õú€ÿ‰€ÿêÍ€òÌØÚØ×ØÈØÜÙÚÔËÜÀcÚÚ—1L…•Øú€ÿ‰€ÿïÃîññé×ÜÚÛÛÚÊÇÇÆÇÖÒºeרØÃ@0žàü€ÿ‰€ÿõÇØòòëßâáæàÞàÝÜÜÓÏÑ·hÔÕÖ×Á/¡êý€ÿ‰€ÿ úÛ¹òôõ÷öòîëâ€àÛ¿ÏгjÒÓÔÔÕ[ôþ€ÿ‰€ÿýìµÓ÷öôñîêæãâããಥϰl€ÒÓº}†ùÿ‰ÿ øÖåóñîêæâßä 㸕¨nÑÒÒLJª”ýÿ‰ÿýïÁ•åíêçäßÜßÞÝÜÛÚϧrÏÑ˨º±‚ÿ‰‚ÿûç´“ÙèäáÞÚØÕÓÑÏÉË©rÐÂ}ל݂ÿ‰ƒÿùⲆ¶àßÜÙ×ÔÌ…=$)Iq¨uÓñ|ý‚ÿ‰ƒÿþù弊†°ÕÙÖÃB GzªØôË¿þ‚ÿ‰…ÿûìϨ‚u‚”7ZÂã÷þýýƒÿ‰†ÿýöæÐ¶Ÿu¨ñû‡ÿ‰ˆÿ ü÷ïåž !#%\÷þˆÿ‰Œÿî8&('*wòŠÿ‰ÿãz•Ûþ‹ÿ‰¡ÿ‰¡ÿ‰¡ÿ‰ÿÁãšÿþóŽ™ÿüÿùð˜ÿýóÿÿôꌘÿüê€ÿôꋘÿüåÿôꊘÿüä‚ÿôꉘÿüäƒÿô‰‰ÿ þüôêâààåòûþÿü廤¡§µÊ≇ÿþôÝÓÑÍ´¨«¯­´Ñðûýüúéʹµ·¿Ê㉆ÿúÒ¨´ËÕÑ·¬­¯©¡˜™Ìöüüöêäãäåêó‰„ÿþô¾”–©ÁÔÔ»¬­¯§ž“m޹ðûüûûüþ‰ƒÿþòŰŸ‘žµÏÑ¥ƒƒ„Ž—Ž&’¥ºéúýýþÿ‰‚ÿþõËĽ®™“¥œŒµÉÈȵ‚m…®°¼ëû€ý€ÿ‰‚ÿùӀĽ«‹ËÚÙÝÛÛÞÚÇ9«®¯Åóþ‚ÿ‰ÿýãÄÃÃÄıŸÙÛÚÚÜÜÛÝÛ× P¬¯°Øøþÿ‰ÿ öÐÊÇÄãÜÛ€ÚÛÞÛÜÞÕ$S«®»ëüÿ‰€ÿ ýåÕÔÏÊÅ·ÓÞ€ÜÙÛßÜÙÚÓ.¬:Z«¯×ùÿ‰€ÿùÙÚÛÙÕÏ¹ÖØÕÒÍÌÍÎÐÎÏÈ!¹ÎJu¬Ãòþ€ÿ‰€ÿôÑÖØÙÚÙÁÊÉÇÂÀÀ¿Á¿À»hÈ_'žµèý€ÿ‰€ÿîÈÍÏÐÓ¸¬½¸¸³´¬¨¯µ¯°«”™«JW¬Þû€ÿ‰€ÿê¾ÁÂÚ™´®¬¦©¥Èù¿¥¤žœ)ª™'ŸÖú€ÿ‰€ÿè¶€³¯¬¨¢Ÿ–›•ÜÿЕ–&!/”¥H‡Ôù€ÿ‰€ÿè±§¦¦˜ž›•‘‰ŠŠ­Š†‰ŽJ=/–c}Õú€ÿ‰€ÿê±¥£¤“Š…€szzxxuwžŽK¡Ÿp&7bØú€ÿ‰€ÿ︣¢¢œ‡„~yspeba_c–‹M  ŸŽ2&”àü€ÿ‰€ÿõÇŸ¡ š‰ƒ~‡uda\ZZv›œ‰OžŸ  ( êý€ÿ‰€ÿúÛ¡  €ŸžœœhRPMJm››†PžŸŸžRóþ€ÿ‰€ÿýì´™Ÿžœœ›„FB?=9r›„Q›ž}ˆùÿ‰ÿøÖ–šœ›šL51/0,]}Ršœœ–«•ýÿ‰ÿýïÁ‡šœ›œ€›—”€“ ”’}S›œ™u¨»²þÿ‰‚ÿûç´„–œ„› šš•˜€W›”r×Ý‚ÿ‰ƒÿùâ²€‰ƒ› –c2#9U„pÓñ{ý‚ÿ‰ƒÿþù弊x†™››6>xªØôÌ¿þ‚ÿ‰…ÿûìϨ‚ppx.ZÂã÷þýýƒÿ‰†ÿýöæÐ¶Ÿu#¤ñû‡ÿ‰ˆÿ ü÷ïåž !#$&*_õþˆÿ‰Œÿî:(++,xòþ‰ÿ‰ÿâ’}–Ûþ‹ÿ‰¡ÿ‰¡ÿ‰¡ÿ‰ÿÁh8mk ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@CÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿB=|«º¼¼½½½½½½½½½½½½½½½½½½½½½½½½½½½¼º«|= .[|ˆŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠˆ|[. .?FFFGGGGGGGGGGGGGGGGGGGGGGGGGGGFF?.it32Mÿÿÿÿÿÿ‚ã€ø¿÷€øñ™²ãÃÿþþûöU±×ÂÿþüúüüðH°ÇÁÿþüøóùÿüïf¯¶Áÿ þúñçóÿÿüëi®©Áÿý÷ëÚë€ÿüëi­ÁÿýöæÎäÿüëZ¬™ÁÿýõãÇß‚ÿüëZ«‘ÁÿýôáÃÛƒÿüëZªŽÁÿýôàÁÚ„ÿüëU©ŒÁÿýôàÀÙ…ÿüêU¨‹ÁÿýôàÀÙ†ÿüê$§‹ ÿ€þýý‡ü€ýþþŠÿýôàÀÙ‡ÿüê$¦‹™ÿþýýþüþýüûùöõòñðòðñóóôôöøúúüýýþ…ÿþþüô߿؈ÿüéÌÿª ‹˜ÿ!þþýüûøù÷õñìèåßÙÕÔÓ×Þáäçæêíñõ÷ùûüýþ‚ÿþýüó޾؉ÿþê€?ª ‹˜ÿþýûú÷ôòòïíéäÞØÔ€Ó×Ý€Þ ßáããèëïóöøûýþ€ÿþþûóßÀÙŠÿþêU¡‹–ÿþýûøõóó÷ú÷óîéåàÙÕ€ÓÖÝ€Þ߀àáäæéêïôøûýþÿþþûóßÀÙŒÿ꣋”ÿþýüùõóöûüúúøôïêæàÚÔÒÓÓÖÜÝÝÞ߀àáâããæêìïóøûýýþüôàÀÙŒÿþê¡‹“ÿþýúöôö€ýüüûùõñìåáÛÓÑÒÓÖ€ÜÞÞßààââããååèêìðôùûýüôàÀÙÿþé$ ‹’ÿ ýüøôöüÿþþý€üú÷òíçãÝ×€ÓÖÝ€Þßàßàáàáääååæéííñ÷ûûóáÁÓñ‡ïðòô÷úüúâ ‹ÿþýûöñ÷þ€ÿþý€üûøôîéäÞØ€ÓÕÝ€ÞßààáââÕ¸Îãåçèëíéîõøñáá†wqƒp qswޤ½Öé´ ‹ÿþüúôòø‚ÿþþý€ü)ùõðëåßÙÔÓÓÕÝÞÞßßààáâá³+LÙåçéìîðíëñïâÉ«“†€€€‚†Žž³Ëᢠ‹Žÿþüøóñû„ÿþý€ü(ú÷òìçáÚÔÓÓÕÝÞÞßßààâãâ§,ÏåçëíïñòîçêãÒ¼«¡…œž£«¹Ìà— ‹ÿþüøòòû…ÿþþýüüûøóîèâÛÕÓÓÕÜÞÞ߀àâãâ¤%¿çéëîñòôõíåãÝÒÈÃÁ†ÀÁÃÇÎÚç‘ ‹Œÿþüøññý‡ÿþüûüüúõðêãÜ‹}}€€~ŸÇáãâ¡!çêíïñóõö÷ðâããâàááƒàáãæëò’ ‹‹ÿþüøñðûˆÿ-þýûûüú÷Õ´~_ckjhjgfhicRTt°™gæìîñòôö÷ø÷íäçîñóõ…ô€õöøú• ‹Šÿþüøòñùüþˆÿ,ýûûúî­V[p™ÀÇÆÀÃÁ¾»ÅƱ”hKH7Óìðòôõ÷øùúúïæíõùüŠýþ ‹‰ÿ þýùóï÷úûüýþ†ÿ,þþôËfn”³ÀÇÎÓÓÍÈÍÅÄËÎÎËÀ©X ìðóõ÷øùùúûûìæð÷ü…þƒÿŽ ‹‰ÿ ýúôíðöøúûüý†ÿ.þÕ‹`™ÁÅÌÉÊÇÔÑÏËÍÅÄÉÐÑÐËÆ #Èïôõ÷÷ùúûüü÷æçòøüþ‰ÿŒ ‹ˆÿ þûöíïòôõ÷øûüý…ÿ$àl±ÅÎÆÌÉÉÇÑÑÒÊËÉÅÇËÒÑÌÇ‚9Íõ÷÷øúû€üýõäéôúý‰ÿ‹ ‹‡ÿþüøîéîïñóõ÷ùúüýþ‚ÿ0ÁYœÅÊÌÍËÈÏÄÊËÑÓÐÇËÅÈËÏÐÑÈ~ «ôùùûüüýýþýëáìöûþˆÿ‹ ‹‡ÿýúòéçêëíðñôöùúüýþÿÿýÙy©ÇÍ€Ë ÌÈÌÇËÆÒÑÑËËÆÈÈÎÑÐËu9Ôùúüüýý€þöããðøüþ‡ÿŠ ‹†ÿþûöìééçèêëïñóöøúûýþüâXÇÈ΀ËÍÅÊÊÈÊÐÑÔ€ÊÆÇÍÏÎÌv0Ñù€ú ýþþÿþðßèóúý‡ÿ‹ ‹…ÿþýøðèéç5éëîðóõ÷ùûýÀv°ÆËÊËÏÊËÌÉÆÎÅÍËÑÕÐÈËÄÇÌÐÏÏqIðüûúýþ€ÿûáÞíöûý†ÿ‹ ‹…ÿþûõêæè€ç4æçèêìïòôöùõˆ¡ÌÊÌÊÉÍËËÌËÅÌÊËÊÕÑÒÉËÇÆËÎÑÎwgìüý‚ÿþî×åñ÷ü†ÿ‹ ‹„ÿþýøðåä€çæç1èëíñóö¨‡ÉÏÐÊÌÈËÌÉÍÎÅÉËËÍÌÑÖÏÇÇÅÊÌÐÍqcòýþ‚ÿö×Üëõûþ…ÿ‹ ‹„ÿþûõêãçæƒç/éìðév¹ËÑÐËÌËÈÎÇÉÏÉÆÎÉÎËÓÖÑËÊÄÈÌÍÍmxP$ƒïý‚ÿýåÔåòúý…ÿ‹ ‹„ÿ ýùñåäèççææ„çè붯ÇËÑÑ€Ë%ÆÍÉÉÎÏÃËÊÍÍÒÒÔËËÅÅÉËÍn žÇ‹8!&ˆõþþÿòÏÝî÷üþ„ÿ‹ ‹ƒÿþü÷ìâæŠç/ã§ÇÆËÏÐÑÈËÈÉÍÉÌÏÈÆÍÉÏÍÑÖÏÉÉÃÉËÌl’ÎȲ`#*–ôþÿú×Ôèôûþ„ÿ‹ ‹ƒÿýúôæÞçæ†ç0ÛŒÈÉÉÎÒÒÈÌÎÇÏÊËÑÌÄÎÊÍÈÔÕÒÎÌÅÈÌÌkwËÍÈÂŒ6"#0³úý€ÿýÚÌâðùý„ÿ‹ ‹ƒÿýùðáá€çææ„ç=ææ¥²ÇÉÉÌÒÓÍÊÑÊÐÍÉÌÏÅÉÊÌÊÌÑÕÐÎÉÈËÌgRËÒÎÈͦK#';ÑöþÿþþìÈÛì÷üþƒÿ‹ ‹ƒÿü÷ìÜáçæ‡ç=ææÖÆÈÎÈÍÒÓÔÊÐÏÌÎÄËÕÎÈÔÌÐÎÑÓÑÎÌÇÌÍh0¹ÑÎÌÍ˸\))^ðýýþþôÂÓèôûþÿþÿ‹ ‹ƒÿûõèØÞ€æä‡ç;¶ÄÎÌÊÌÒÖ×ÎÏÒÆÏÌÏÓÖÉÓÎÒÐÖØÏÌÐÊÌÍi!‡ÏÐÊËÒǽa++)˜úüýýõÈËãòúýÿýÿ‹ ‹ƒÿúòäÛç‡æç;¸ÂÓÌÎÍÑÕÖÕÎÏËÐÑÏÑ×ÎÏÑÔÒÕÖÖÏËÎÊÎfDÃÑÍËÒËʸN3+*4ÕøýýüׯÞïøýƒÿ‹ ‹ƒÿùðà×çŠæ À‘ÅÑÏÑÏÐÕÖØÍÌÕÎÕÎÐ×ÒÌ×ÒÕÑÙÙÖÊÎÊÏc€#„ÏÐÐÑÒ̼…‡0+'cò€ýÖÀÙì÷üþ‚ÿ‹ ‹ƒÿ÷îÜÒäåæåä…æâ–°ËÍÓÑÎÓÔÖÙÊÒÖÏÕÒÒÕØËÖÓÙÓ€Ú!ÐÉÍÏa!5«ÑÐÍÙÌ‹ís.),¶úúýÔºÕéõüþ‚ÿ‹ ‹ƒÿ ÷ìÙÎâååääå傿?Ü¢ÑÎËÕÐÓÒÔØÓÏÑÖÕÑ×Ò¶¯­¯¼×ÖØÙÛØÆÏÌ`##MÂÑÑÕÐÃøäV+'RðùüѵÑçôûý‚ÿ‹ ‹ƒÿöêÖËá‡å¦[Ç×ÔÌ€ÓÒÔØÐÖÓÔÙÒÓ§ÏñöìнØ×ÛÝÚÍËÎ\€ "mÌÏÓÔÀùúÇ5(.¶÷üΰÎäóúý‚ÿ‹ ‹ƒÿöéÕÉß„äåÚŸµÌÓØ×ÑÑÖÓÔÖ×ÌÛØÕÚÕÊÔü€ÿ'ûÈÌÙÜÞÛÓÆÐW'‡ÍÏÖ½Žûü÷ƒ+*göüήÌãòúý‚ÿ‹ ‹ƒÿõèÓÈß…ãæž·ÖÚ×ÔÙÓÐØÕ×ÖÖÉÚÜ×ØÜºï‚ÿ íÇÛÛÝÝØÇÔR€€,ÍÏÔãùúøß<*:ÜüέËâòúý‚ÿ‹ ‹ƒÿõèÒÈßããââãâæçØÜØÕÚØÒÖÖØ×ÖÇÝߨØÝÅó‚ÿ&ôÉÛÛßÞÙÅÔQ! 2Ÿáñù÷÷ööŠ-0°ûάÊâñúý‚ÿ‹ ‹ƒÿ ôèÒÉàââáàâ€áââæÜÝØ×ÙÚÖÔÙרÙÅÛßÜØÞÎæþÿ æÔÞÜÜߨÊÒN€ #$!$&DÄôóø€ù Ö1,ƒøÌ¬Êâñúý‚ÿ‹ ‹ƒÿôèÒÊ€áà߃áÂÊÛÞÜÕÜ×ÕÛ×ÚÛÇÕààÚÛÝÑò€þ'òÒßÜÝÞàÒÏØM $"$('$$%&EÈóøùúúô[-`÷Ì«Éâñúý‚ÿ‹ ‹ƒÿõèÒËãáá‚â ããȦÑÜßÜØÝÜØ€Ú4ÙÌÊàãÜÛáÛÚÝèáØ×ÞÞàÝÞÄØÜJ"ƒ­I(($%%()GËôõøøó0OîʬÊâñúý‚ÿ‹ ‹ƒÿõèÓÁÙã€ä,åæåÊØÜÞÞÛÛÝÚÚÞÚÛØ¿ÜáàÛààÞÝÝßáÜÞßáàÕÇàßL(›ñÞ{.€&)*+GÎó÷÷òµ0I൬Ëâòúý‚ÿ‹ ‹ƒÿõèÔºÔæåæä‚æAàÓÛßÝáÜÚßÞÚÞÜÞÞÊÄáåÝßäÞàÝßãÝÝáàݼ×åõO+¤õôé¨B)''(&&KÑõöóÐ2BØœ­Ìãòúý‚ÿ‹ ‹ƒÿöêÖ½Öç忀åDææÚˆ˜ØßàâÞÛßàÝÝÞßßÝÁÍåáÞæàâÝâáâÝáÞÅÊâôòO,§òóïðØq-))&((NÞõôá7FذÎäóúý‚ÿ‹ ‹ƒÿ÷ìÙ¾¿áƒå)æåìÜÚßáââßÝáßÞáÞàáÚ¿ÅâàäæàâßâåßÙÀÄàñòñJ,©ô€õöñ¶T-'%((Uãôà7Mº•´Ñæôûý‚ÿ‹ ‹ƒÿ÷îܽá€åä倿(çÜÚàáàâàÝââÞâàáããÞÇ¿ÈÝæâåßâÜÅ´ÊÙïðòðH+©óô€õóðæ›;&)'*kïÜ7X·–¸Õéõüþ‚ÿ‹ ‹ƒÿùðàÈ³Òæå€æ-ççèéÔÕàáâãáßáãááââäåäã׿´¾ÀÄ¿··ÅÕÛçññòîD,«òóôô€õóðÌ`**,-“Ð2k˜ž¿Ùë÷üþ‚ÿ‹ ‹ƒÿ-úòäͳÈåççèèééêëÐÖÞããâäáàæäáæääååæçåÚÓÏÇÌÓÝçßßò€ñîB-¬óôôõóóñæ‚3,,1w/|¦ÅÞîøýþ‚ÿ‹ ‹ƒÿ ûôèÔ¸±Ûééêêë€ì&ÒØßâãâæâßãìãääåæèæéëååìäèãççÚãððññì@,°ò‚óôóóôôí›7,'-3®Ìâñúýƒÿ‹ ‹ƒÿü÷ìÚÀ¦Ë‚ë ìíîìóêëìííéíóõóòëæçéèêëéæëêèççäÔí€ðñê>-³òòóòóññ›5(+8}—·Óçôûþƒÿ‹ ‹ƒÿýøðàɬ·å€ìíîïððñô‚õóòòñðôìèêèëëìèéíçêåÞÓßðê=,µò‚óôôóóïŠ*'8…¢ÀÚìöüþƒÿ‹ ‹ƒÿýûóæÑ¶¤Òííîïïññòò‚óòñè€ê ìíééîèëäÛØÝðè:,·ñò…ó ñê^(#n«Éáðùý„ÿ‹ ‹ƒÿþüöìÚÁ¥°àïððññò‚óòƒñíéìëíììëíîêéÝ•™ðç8,ºññ‚òó òòóôÃ+GµÑçôûý„ÿ‹ ‹„ÿ ýùñâͱ™½ïññòò‚óòƒñððëíìííïêìñêì㺞€ðç70½€ñ‚ò‚ó òóÎG0²Øì÷üþ„ÿ‹ ‹„ÿþûõé×¾ Ÿàòòóóòóó‚ò‚ñ€ðñê€íïïîìñîîèåµWððã90½ñ„ò€ó ê¤h") ßðùý…ÿ‹ ‹„ÿ þüøïà˰–«æó„òñ‚ðñìïíðññïðòìîìêÄt‘äâ80¿‚ñòñòóóíº|„>+æôüþ…ÿ‹ ‹…ÿ ýûôé׿£‡²ñ€óƒò‚ñ‚ðòî€ðñóïðôïðíðïÕu\º83Ãð‚ñ„ò Í{~—g.|ì÷ý†ÿ‹ ‹…ÿ þüøðâε˜ˆÊñó‚ò„ñƒðöðññòôòðôóðïñòðÒ‚q*0Æð„ñò ÜuŽª1wôûþ†ÿ‹ ‹†ÿ ýûõëÛÆ«Çðò„ñ„ðóöù÷€ùøùú‚øöï¬$+Éððƒñ€ò Ý‹m‡¢¼®6wøü‡ÿ‹ ‹†ÿþýùòæÕ¾£ˆ}Ïñòòññðñ…ðï ðÛ55Ëîïðññðñ èŒh€›´ÍÁ;zùý‡ÿ‹ ‹‡ÿ þü÷ïáÏ·ƒšÔî€ñð€ñ†ðŽïÛ35Ëïï€ðñ ݱp{•¯ÇÛÈ=‹úþþ†ÿ‹ ‹ˆÿ ýûõìÞʳ™‚‹Çìñðñ„ðïÕ/1΀ðï€ñðØ…lw‘«ÃÕçÅ9œüþþ†ÿ‹ ‹ˆÿ þýúôéÚǰ—~‰Æëñïƒð‘ïÕ,3Ððïððññî×…`uާÀÕâð¹=²þþý†ÿ‹ ‹‰ÿþüùòçØÅ®•~НÝðññ€ðï€ð‘ï×-4Ó‚ð繇cwަ¾ÒãìõŸ@Ëýþý†ÿ‹ ‹Šÿþüøñæ×Ä®—€n’Ùìï‚ðïðˆïîîíî‚ïØ/6Ø€ðíà°dfy§½Ñâîó÷}Mèýþþ†ÿ‹ ‹‹ÿþü÷ðæ×Ű™‚py¬Úïƒðïîïîƒïîëì€ïî€ïÔ09Øðï乆fj}’©¿ÒâíõøðXg÷þˆÿ‹ ‹Œÿýû÷ðæØÇ³ž‰ve‰Âæï€ðï îïïíîïíìëì€íì€íÑ18×êÒŸcapƒ˜¬ÁÓâîõûúÉ>–ýýˆÿ‹ ‹ÿýû÷ñèÛ˸¤‘~miŠ´Õë†ï#îíëâË©‡xx‡§ÏéÍ03¨—j]hxŠž²ÅÖäïöûýú‰AÊŠÿ‹ ‹ŽÿþüøòêÞп­šˆwiasªÉáèí‚î#ëÒ•X9,((+-/8h%"T[es‚”§¹ËÚæðöûüüåO\óŠÿŠ ‹ÿ;þüùôìâÖǶ¥”„vjgg…Ž»ÈÎåäÑŠA(()'&&$'' bt ±ÂÑßêòøûýýü¤>¤úŠÿ‹ ‹ÿþüúöðçÜÏÁ²£”†zof^a`jŠj1€€{‘Ÿ­¼ËÙäíôùüýþûî`RèùŠÿ‹ ‹‘ÿþýûøóìäÙÍÀ³¦™ƒypjb>€ $–¯¼ÉÕàéñöúýþÿüû·E¨þþŠÿ‹ ‹“ÿýüúöðêâÙÎø­£™„K€-³ËÕßèïôùüýþÿÿý÷vxôþ‹ÿ‹ ‹”ÿþýüùõðëäÜÓ˺®d!  "%4Ëáèîôøûýþ‚ÿûØæùŒÿ‹ ‹–ÿ(þýûùöòíçáÛÒ“-" !!""!!#$(*8Ýðõøûüþþƒÿý€üŒÿ‹ ‹˜ÿ$þýüú÷ôñëÐD$$ !! !!%$%%'%%'(..Dïùûüýþ˜ÿ‹ ‹šÿ þýýûùô›($##!"#$%%')*))'((*,0gõýþþšÿ‹ ‹Ÿÿô]'$&%&%('()+-/,**++*,1™øÿ‹ ‹Ÿÿâ<&‚%''*++-/,),-,--;ßøÿ‹ ‹ŸÿÊ0‚% &')+**-.,)-€/.†úúÿ‹ ‹Ÿÿ Ä.%$%&&%'))((*,.//Tãþþÿ‹ ‹ŸÿÝ6&%&' )*((&()*.00GÏúŸÿ‹ ‹Ÿÿ÷Z'&'&&('())('')*-0RÉûþŸÿ‹ ‹Ÿÿüµ.())'(()*))(*,+/kÚ÷ýþŸÿ‹ ‹Ÿÿýöƒ,)+)++,-.1R«ðþþ¡ÿ‹ ‹Ÿÿýýñš8'())+,--2f¯ìúûþ¢ÿ‹ ‹¡ÿúùç­pVFJUs¡Øôüþ¥ÿ‹ ‹¡ÿ þþûüú÷õ÷úûýýüþ¦ÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ŒØÿŒ {éåãàßßÌÞßßàãåé{ÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿ‚ã€ø¿÷€øñ™²ãÃÿþþûöU±×ÂÿþüúüüðH°ÇÁÿþüøóùÿüïf¯¶Áÿ þúñçóÿÿüëi®©Áÿý÷ëÚë€ÿüëi­ÁÿýöæÎäÿüëZ¬™ÁÿýõãÇß‚ÿüëZ«‘ÁÿýôáÃÛƒÿüëZªŽÁÿýôàÁÚ„ÿüëU©ŒÁÿýôàÀÙ…ÿüêU¨‹ÁÿýôàÀÙ†ÿüê$§‹ ÿ€þýý‡ü€ýþþŠÿýôàÀÙ‡ÿüê$¦‹™ÿþýýþüþýüûùöôóóò€óô€õöøúúüýýþ…ÿþþüô߿؈ÿüéÌÿª ‹˜ÿ!þþýüûøùöóîéäáàÞÞâäçêîðñðòñóõ÷ùûüýþ‚ÿþýüó޾؉ÿþê€?ÿ ‹˜ÿ þýûúöðëåáÞÝÚ€ÙÝâåéíñô÷ùúùöôñðóöøûýþ€ÿþþûóßÀÙŠÿþêU¡‹–ÿ þýûøôíéâáÞÜÛÚÙ Ýáåéíñô÷ùúú€ûùôïïôøûýþÿþþûóßÀÙŒÿ꣋”ÿþýüùôíéåâ€ÝÜÛÚ€Ù ØÛàåéíñô÷ùúú€ûüûû÷ñïóøûýýþüôàÀÙŒÿþê¡‹“ÿ#þýúöñêæââáàßÞÝÛÛÖÙØÖÚàåéíðôøùúúûûúüû€ý öïðôùûýüôàÀÙÿþé$ ‹’ÿýüøòíèäãââáàÞÝÜÛÛÙ Ûàåéíñõøúú€ûúúüü€ý ûôíñ÷ûûóáÁÓñ‡ïðòô÷úüúâ ‹ÿþýûöîéçåääãâáàÞÞÝÜÛÚ€Ù ÚßäéíñõøúúûíÌãùûýüý÷ìîõøñáá†wqƒp qswޤ½Öé´ ‹ÿþüúôìææ€å äãâááàßÞÝÜÚ€Ù Úßãéíñõøúú€ûúÇ0Sìúý úñìñïâÉ«“†€€€‚†Žž³Ëᢠ‹Žÿþüøòêç€æ ååãäãââàßÞÝÜÛ€ÙÚÞãéíñõøúûú¸"0áû‚ý üòèêãÒ¼«¡…œž£«¹Ìà— ‹ÿþüøðé€å€æ äåäãââáàÞÞÝÛÙÞãéíñöùú€ûüúµ (ÏüƒýüðããÝÒÈÃÁ†ÀÁÃÇÎÚç‘ ‹Œÿþüøñçæ€åæäææåääâááàßÞÝÛ€Ù ‘‚„†ˆ‰Š‰²ßûüû±#¨úüüƒýñâããâàááƒàáãæëò’ ‹‹ÿþüøñêƒå€æ"ååäãáàáßÞÝêz^dljikhgijcW[}À¨m÷üüƒýûïãçîñóõ…ô€õöøú• ‹Šÿþüøòìæƒåæ!ååäááàÞÕžR[qšÂÈÇÁÄ¿»ÆÇ²•iML7âûü„ýüïæíõùüŠýþ ‹‰ÿþýùóíè…倿!ååäãâÚ¹bn•³ÁÈÏÔÔÏÉÎÆÅÍÏÐÌ«Y —ùû…ýûëæð÷ü…þƒÿŽ ‹‰ÿýúôìçåäƒåææåää¿`™ÂÅÍÊËÉÖÒÐÌÎÆÅÊ€ÑËÇ€$Òùüýüöåçòøüþ‰ÿŒ ‹ˆÿ þûöìéåäååã„倿åÍi‚³ÆÐÈÍÊËÉÒÓÓËÌËÈÉÍÓÑÍÇ;Õüý‚üóãéôúý‰ÿ‹ ‹‡ÿþüøîçäãäˆå&ææ³XÇËÍÎËÊÐÅËËÒÔÑÉÍÇÊÍÐÑÑÈ~"¯ùüüý‚üúêáìöûþˆÿ‹ ‹‡ÿ ýúòèãààâãã†åäÉwªÉÏ€ÌÍÉÎÉËÈÓÒÑËÍÇÊÊÐÑÑÌu:Øüû„üôáãðøüþ‡ÿŠ ‹†ÿ þûöìæäàßßàãääƒåâÎWÉÉÏÌÌËÏÇËËÊËÑÒÕ€ËÈÉÏÑÐÍv0Òøûû€üûûúìÞèóúý‡ÿ‹ ‹…ÿþýøðçèåãáßßàâää‚å)³s²ÈËËÌÐËÌÍÊÈÏÇÎËÒÖÑÊÌÆÈÎÑÐÏqIïúûüûúöÞÞíöûý†ÿ‹ ‹…ÿþûõêåëèçåâáßßâãä€å)ᆡÍËÎËËÏÌËÎÍÆÍËÌËÖÒÓÊËÉÈËÏÑÎueéù€û úúùøèÖåñ÷ü†ÿ‹ ‹„ÿ@þýøðåçîìêèæåâàßáãäå垈ÊÐÑËÎÊÍÍËÎÐÇÊÌËÏÍÓÖÏÉÉÈËÎÑÎq ^íùúú€ùøðÖÜëõûþ…ÿ‹ ‹„ÿ-þûõêäïðïíëêèæäâààâäÞuºÌÓÑËÍÌÉÏÉËÐÊÇÏÊÐÌÔ×ÑÌËÅÉ€ÎnqI€êøùù÷ø÷öáÓåòúý…ÿ‹ ‹„ÿ?ýùñåçôóòðïîìêèæäáàà³±ÉÌÒÑÌËÍÈÏÊÊÏÐÅÌËÎÏÓÓÕËËÇÆÊÌÏn œÄ‡3$…ð÷ööëÎÝî÷üþ„ÿ‹ ‹ƒÿMþü÷ìãíöõôóòñðîìêèæãݦÉÈÍÐÑÑÉÍÊËÏËÍÐÉÇÎÊÐÍÒÖÐÉÉÄÉÌÌl’Îɱ]"'’íööõõôñÔÔèôûþ„ÿ‹ ‹ƒÿýúôæàóø÷÷õõôóòðîíêèÚŒ€Ê*ÏÓÓÉÍÎÈÐËËÑÍÆÎËÍÉÕÕÓÎÌÆÉÌÎkwÌÎÉÊ1.®ñ€ôóòÖÌâðùý„ÿ‹ ‹ƒÿNýùðáåøùùøø÷öõôóòñîì§³ÇÉÊÍÓÓÎÊÑËÐÍÉÌÎÅÉÊÌÊÌÑÕÏÎÉÉÌÌgRÌÓÎÉÌ£D#8ÉîóóòòäÈÛì÷üþƒÿ‹ ‹ƒÿü÷ìÜè€ûú€ù7ø÷öõôòðÙÆÈÎÈÍÒÓÔÊÑÏÌÎÄËÔÍÈÓÌÐÍÐÒÑÎÌÇÌÍg0ºÒÎÎÍɵX"$YåñêÁÓèôûþÿþÿ‹ ‹ƒÿûõèØêƒûCúúùøø÷öôºÄÎÌËÌÒÕÖÍÎÑÆÎËÎÒÔÉÒÎÑÏÔÖÏËÏÉËÍh!ˆÏÓÍÍÑÆ½\!##‘íîððêÆËãòúýÿýÿ‹ ‹ƒÿúòäÜô†û7úúùùø»ÁÒÌÎÍÐÔÕÔÍÎËÏÏÎÐÖÍÎÏÒÐÓÖÖÎÊÌÉÍeCÃÒÏÌÓÊɶH) "2Ëë€ðÓÆÞïøýƒÿ‹ ‹ƒÿùðàØöŠû=Í“ÄÑÎÐÎÏÔÕÖËÌÓÍÓÎÎÕÐËÕÐÔÎÖ×ÕÈÌÈÎbƒÐÐÏÑÑ̼}$"%`æððñÒÀÙì÷üþ‚ÿ‹ ‹ƒÿ÷îÜÕö‰û>ô›¯ÊÍÒÐÍÒÒÕÖÈÐÔÍÓÏÐÓÕÉÔÑÖÑ×רÎÇÌÍ`2«ÑÏÌ×ËÀ‡áh##*­ííñκÕéõüþ‚ÿ‹ ‹ƒÿ÷ìÙÒõ€ú…û?î…¢ÏÎÊÔÎÑÐÓÖÑÍÏÓÓÏÔÏ´®«®¸ÔÓÕ×ÙÕÄÌÉ_LÀÏÏÓΉíÕI##OåíïʵÑçôûý‚ÿ‹ ‹ƒÿöêÖÐôù„úBûû²]ŒÅÕÒËÒÑÑÐÒÕÍÓÑÑ×ÏÐ¥ÎðöìÏ»ÖÔØÙ×ÊÈËZ!lÉÌÐÑ¿‰íì·,#+¬éíÆ°Îäóúý‚ÿ‹ ‹ƒÿöéÕÎó…ù쥃³ÊÒÕÔÎÎÓÑÒÓÔÈØÕÑØÑÆÒü€ÿ'ûÆÊÖØÙ×ÏÃÎV%ƒÊÌÓ»‰ííåw#$`çëÅ®Ìãòúý‚ÿ‹ ‹ƒÿõèÓÍó…ù õž´ÔØÔÒ×ÑÍÖÑ€ÓÆÖØÔÕØ·î‚ÿ íÄ×ÖÙÙÔÄÐQ€*ŽËÌÒØëëçÍ0!3ÌêÅ­Ëâòúý‚ÿ‹ ‹ƒÿõèÒÍò…ø÷ñì×ÙÕÑØÖÏÓÔÔÓÓÃØÛÔÔÙÁò‚ÿ óÅÖÖÛÚÔÀÐO€0œßéçééåäx!(¢éŬÊâñúý‚ÿ‹ ‹ƒÿôèÒÌñ€÷öƒ÷ôÙÙÖÔÖÖÒÑÔÓÔÔÂ×ÛÙÓÙÉäþÿ&äÏÙרÙÒÅÎL"#A¸ââåæååÂ%#yæÄ¬Êâñúý‚ÿ‹ ‹ƒÿôèÒÌðöö…õ*ÏÇ×Ù×ÒØÓÑÖÒÕÖÂÐÚÚÕרÍñýþþñÎÙרØÚÍÊÒJ  € =¶àã€ä ÞL#XäÄ«Éâñúý‚ÿ‹ ‹ƒÿõèÒÌï†ôAÒ©Î×ÜØÔÙØÓÔÖÕÕÈÆÚÝ×ÖÛÖÔØäÝÒÒØØÚ×׿Ó×G~£?  >¸ßßáâßz"DÛĬÊâñúý‚ÿ‹ ‹ƒÿõèÓÁâ‚ôó*êÈÔÙÚÚ×ÖÙÖÔØÕÖÒºÖÜÛÖÙÚ×ÖÖÙÜÕרÛÚÏÂÙÛJ!‰ÖÅh$€ "?»Ýááß¡!<α«Ëâòúý‚ÿ‹ ‹ƒÿõèÔ»Ù€óƒòAëÔ×ÛÙÜØÔÙØÕØÖØ×Å¿Ûß×ÙÞ×Ú×ÙÝÖÖÚÚÖ¶ÑàìC ‹ÚÙÏ”7  !"B»ÛÝÚ¶$8É™­Ìãòúý‚ÿ‹ ‹ƒÿöêÖ½Øñ„ò䊗ÓÚÚÜØÕÙÚÖרÙÙÖ¼ÆÝÛ×ßÚÛÖ€ÛÖÛØ¿ÃÜâÔB ××ÓÕ¾a%€ $#EÆÛÛÃ)<Ëœ°Îäóúý‚ÿ‹ ‹ƒÿ÷ìÙ¾Áë„òïïÚÖÚ€Û(ÙÖÜÙ×ÛØÚÛÓ¹¾ÛÙÜÞÙÛ×ÚÝØÑº½ØÞÒÑ= ŽÖרÙÙÔ G$" LËÚÃ)B°•´Ñæôûý‚ÿ‹ ‹ƒÿ÷îܽèòò„ñ@âÖÙÛÛÝÚÖÛÜØÛÙÚÛÛ×Á¸ÂÕßÙÜ×ÙÕ¿®ÄÒâÒÒÐ; ŽÕÖÖרÖÕˇ4"" #^Ô¾)M°—¸Õéõüþ‚ÿ‹ ‹ƒÿùðàȳֆñØÑÙ€Ü:ÛÙÚÝÚÚÛÛÜÝÜÛϹ­·º½¸°°¾ÍÔÜÒÑÑÍ8!ÓÔÕÕÖ××ÖÕµV#""!ƒ³'c–ž¿Ùë÷üþ‚ÿ‹ ‹ƒÿúòäͳÈíñò@ÏÑØÝÝÛÝÛÙÝÛÙÝÛÜÞÝÞßÝÓÌÇ¿ÄËÔÞÖÑØÐÐÑÍ7"ÒÓÔÔÕÕÖÕÕÔËr+"*b%tަÅÞîøýþ‚ÿ‹ ‹ƒÿûôèÔ¸°ß…ò?ÒÒØÜÛÜÞÛØÛæÛÜÜÝÞßÞàáÝÜâÛßÚÞÞÐÔÏÏÐÐÌ5!“ÒÒÓÓÔÔÕÔÕÕÖІ,!!)|®Ìâñúýƒÿ‹ ‹ƒÿü÷ìÚÀ¦Ìñò€ó%ïòååæèçäêòóðîãÝßàßááßÝáßÞÞÝÚËØÏÏÐÐÊ4#—ÒÔÔÓÔÔÕÕÓÓ…)"!0{—·Óçôûþƒÿ‹ ‹ƒÿýøðàɬ¶éò€ó€ôõõø÷öóñðíëðæßáßàááÞßãÜßÛÕÉÉ€ÏÐÊ3$›‚ÒÓÔÕÖÕÐv$!3„¢ÀÚìöüþƒÿ‹ ‹ƒÿ ýûóæÑ¶£Òóó€ôõõö€÷ öõôòñðîìëéê߀à áâßÞäÝàÙÒÒÄÏÈ0$ÑƒÒƒÔ ÒËN k«Éáðùý„ÿ‹ ‹ƒÿ þüöìÚÁ¥¯ãô€õö€÷öõôóòñðîìëéçèåÞáßââààâãÞÝÒ‹ÏÇ/$ŸÑуÒÓÓÔÓÔÔÓ¨!BµÑçôûý„ÿ‹ ‹„ÿ,ýùñâͱ™¾òöö÷ö÷÷öõôòòðïîìëéçæäçââáââäàáæßá×°‡Ž€ÏÇ,$¢ÐÑÑ†Ò ÔÓÔ¼?,°Úí÷üþ„ÿ‹ ‹„ÿþûõé×¾ Ÿà÷(öõôóòòðïíìëéçæåâãÞãââääâáæââÝØ¬RtÏÏÄ+#£ÐÐ€Ñ‚Ò ÐÒÓÔÒŸd&œâòùý…ÿ‹ ‹„ÿ3þüøïà˰–«è÷÷öôôóòñðïíìëéèæåãáßãàäâäååãäæáâàÞºl€ÆÃ*#¥€Ð€Ñ€ÒÏ€Ò Ñ¯zƒ;$‰éöüþ…ÿ‹ ‹…ÿýûôé׿£‡²óõôôóòñðïíìëêèæåäâàÞâãäæããçããáããÉoV¢*&©ÐÑÑƒÒ Ó½y}™e%wïùý†ÿ‹ ‹…ÿþüøðâε˜ˆÊòóòòððïíìëêèçåäâáßÝÝë€äåæäãçåââääãÆ{f#©Ï€Ð€Ñ‚Ò ÉuެŒ&qõûý†ÿ‹ ‹†ÿ ýûõëÛÆ«ÇðòððîììëêéçæåãáßÞÝÜâïñð€ñðñò‚ðî訬ÏÐ€Ñ€Ò Ç†m‡£¼«+qùüý†ÿ‹ ‹†ÿ#þýùòæÕ¾£ˆ}ÍïïîíìêêéçæåãâàÞÝÝÛÙÙ×ÖÕÔÓ€ÒÑÐÐϾ'&®ÍÐÍ€Ñ Ò͆h€›µÍ½/tùýý†ÿ‹ ‹‡ÿ"þü÷ïáÏ·ƒ˜ÑêíìëééçæåäâáßÞÝÜÚÙØ×ÖÕÔÓ€ÒÑÐÐϾ&&®ÎÏÐÐÎÐÐÑÑÅ¥n{•¯ÈÛÄ1…úþþ†ÿ‹ ‹ˆÿ!ýûõìÞʳ™‚‹ÄèëêéèååäãâàßÝÜÛÚÙØÖÖÔÔÓ€ÒрЀϸ'(°ÏÏÎÎÐÄkw‘«ÃØçÀ1™üþþ†ÿ‹ ‹ˆÿ!þýúôéÚǰ—~‰ÃåéèçæäââáßÞÝÛÛÙÙØÖÖÔÔÓ€ÒрЀϸ&*±ÎÍÏÐ Ä`uާÀÕåï³5¯þˆÿ‹ ‹‰ÿ þüùòçØÅ®•~‰¬ÖçæåäâáßÞÝÜÛÚÙÙ×ÖÕÔÔÓ€ÒрЀϺ&+³ÎÏÏÐÐÌ«„cwަ¾Òãïõš8Éýˆÿ‹ ‹Šÿþüøñæ×Ä®—€nÑâäãâáßÝÛÛÚÙÙØ×ÖÕÔÔ€ÒÑÏÐÏκ'+¹Ïɧcfy§½ÑâîõöwFæýˆÿ‹ ‹‹ÿþü÷ðæ×Ű™‚ox¨ÑááàßÝÜÛÙ×Ù€ÖÕÔÓÑ€ÒÑÑ€ÏÎη"+ºÏÐÊ«ej}’©¿ÒâíõùêM_÷þˆÿ‹ ‹Œÿýû÷ðæØÇ³ž‰ve‡»ÚßÞÝÜÛ€Ù)ÖÖÕÐÑÒÑÑÏÎÌÏÍÍÏÎε#+»ÏÀ—bapƒ˜¬ÁÓâîõûúÂ3ýýˆÿ‹ ‹ÿýû÷ñèÛ˸¤‘~mi‡¬ËÚÜÚ€Ù'×ÖÖÔÓÑÍÄ­tffq°Ç±"(›i\hxŠž²ÅÖäïöûýø€8ÈŠÿ‹ ‹Žÿ<þüøòêÞп­šˆwi`r¤¿ÑÖØÙ×ÖÕÓз}E' !'TqQ[es‚”§¹ËÚæðöûüýâEUòŠÿŠ ‹ÿ4þüùôìâÖǶ¥”„vjffƒŠ³½ÀÔлv4  ]t ±ÂÑßêòøû€ýž4 üŠÿ‹ ‹ÿþüúöðçÜÏÁ²£”†zof^bah†`'x‘Ÿ­¼ËÙäíôùüýþûèQJéüŠÿ‹ ‹‘ÿþýûøóìäÙÍÀ³¦™ƒyrk_6„  “¯¼ÉÕàéñöúý€þú©7¥þýŠÿ‹ ‹“ÿ7ýüúöðêâÙÎø­£™‘‚D'¯ËÕßèïôùüýþÿþþömsôþýŠÿ‹ ‹”ÿþýüùõðëäÜÓ˺®^€ !-Åáèîôøûýþ‚ÿûØæùŒÿ‹ ‹–ÿþýûùöòíçáÛÒ“%€ !""%4Úðõøûüþþƒÿý€üŒÿ‹ ‹˜ÿ þýüú÷ôñëÐD€! ! "#$%&%'Aïùûüýþ˜ÿ‹ ‹šÿþýýûùô›'!! !!"##$$#$&('*f÷ýþþšÿ‹ ‹Ÿÿ ô]&#%$%$'&'(*€()())(*,—úÿ‹ ‹Ÿÿâ<%‚$&&)**ƒ('(*6Ýûÿ‹ ‹ŸÿÊ0‚$%&(*))‚(''(+ùüÿ‹ ‹ŸÿÄ.$#$%%$&((''('()()**Rãþþÿ‹ ‹ŸÿÝ6%$%& ()''%'())++BÎúŸÿ‹ ‹Ÿÿ÷Z&%&%%'&'(('&&()*-OÆúþŸÿ‹ ‹Ÿÿüµ-&'&&''((''&(*)0mÛøýþŸÿ‹ ‹Ÿÿ ýö‚)$%&(()€'(*-Nªðþþ¡ÿ‹ ‹Ÿÿýýô9''((*)**0d­êúûþ¢ÿ‹ ‹¡ÿþýè­pVFJUs¡Øôüþ¥ÿ‹ ‹£ÿ ûûüù÷øúûýýüþ¦ÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ŒØÿŒ {éåãàßßÌÞßßàãåé{ÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿ‚ã€ø¿÷€øñ™²ãÃÿþþûöU±×ÂÿþüúüüðH°ÇÁÿþüøóùÿüïf¯¶Áÿ þúñçóÿÿüëi®©Áÿý÷ëÚë€ÿüëi­ÁÿýöæÎäÿüëZ¬™ÁÿýõãÇß‚ÿüëZ«‘ÁÿýôáÃÛƒÿüëZªŽÁÿýôàÁÚ„ÿüëU©ŒÁÿýôàÀÙ…ÿüêU¨‹ÁÿýôàÀÙ†ÿüê$§‹ ÿ€þýý‡ü€ýþþŠÿýôàÀÙ‡ÿüê$¦‹™ÿþüûýüþýüøöðåÜÝÞâäåäï÷øúüûûü†ýüûò޽؈ÿü饋˜ÿ!þþüúú÷÷ìè×ÓÑø´±°±±°°¯°»ÅÈÝåïöùúûü‚ýüûúòݽ؉ÿþꥋ˜ÿþüù÷ïÞÓÐÒÐÒÒÈ»µ³¯­­€® ¯°­«¬°½Íçóöùûü€ýüüùñ޾؊ÿþꤋ–ÿþýûõåÔÆÅÌÔÖÔÓÓ̾¸´¯­­€®°°®ª§¥¡£­ÆÛîöùûüýýüúò޾،ÿ꣋”ÿþýüùèÌ·³»ÁÊÒÖÔÓÓι²®€­®®°°­©§¥Ÿœ™™£»Úñøû€ýûò޾،ÿþê¡‹“ÿþýúòز£¦®·ÀÈÏÖÕÓÕÐĺ³¯­®°¯¬©§¤ žš—’“ ÇçôùúûûòÞ¾Øÿþé$ ‹’ÿýüøäº›—£ª²¼ÅÍÔÕÓÓÑÆ»´°®­€®°°¬¨¦¢›™•‘‹«Ôñöùùñß¿Òñ‡ïðòô÷úüúâ ‹ÿ8þýûóÛ¯“Ž“™Ÿ¦­·ÁÊÑÔÔÓÒɽµ°®­®®¯°¯«§¥¡›Žv‹ŠŠ ÌèóöïßÁŸ„vp‚o pqswޤ½Öé´ ‹ÿ9þüúñË©ž–•œ¢©²¼ÆÎÓÔÓÓÌ¿¶±®­®®¯°®©¥£Ÿšw-‚ˆ‰‹‘•žºäïíàÇ©‘„‚~ €€‚†Žž³Ëᢠ‹Žÿ:þüøð̰¨¢œ“—Ÿ¦®¸ÂËÑÔÓÓÎÁ·±®­®®¯°®©¥¢ž˜m{†ˆ“—œ¢»àèáл©Ÿ›‚š ›œœž£«¹Ìà— ‹ÿ;þüøåɸ²­¦ ™Ž”›¢©³½ÈÎÔÓÓÐĸ±®­®®¯°®¨¥¡žšmo†Š•™Ÿ¤«»ÐßÜÐÆÁ¿‚¾¿€ÀÁÃÇÎÚç‘ ‹ŒÿþüøîÉ¿»¶°«£Ÿ—–ž¤¬¸ÃË€ÓÑÆ‰xjkkex‘ šjY†Œ“–œ£ª®°¶ÐááàÞßß‚Þ ßààááãæëò’ ‹‹ÿþüøîÐÃþº´®ª¤œ”Ž’™ž¦±½Çй r\g„rqgKDVwc9…•› ¨®€°¹Ôåìïñó…òôõõöøú• ‹Šÿ4þüøïÐÃÄÄÁ¾¹´°©¢š‘ޕ𢬷¹‘Q^x¦ËÔÔÒÓÒÐÏÔÓ½qH4 {—Ÿ¥­°¯»×ëó÷ú…ûüýþ ‹‰ÿþýùóÖ€Ä,¾¹µ¯¨ ˜—¡˜]t¡¿Ï×ÛßàÝÛÝÙÙÜÝÜÙж\ T™£«¯°­¯¿Þîõú…üþ‚ÿŽ ‹‰ÿýúôßÄÂÄ-ÃÀº´®§ž•’„g`¤ÍÕÚÙÚÙàßÞÜÝÚÙÜÞÝÜÚ׈ {˜¦­¯®°°€¯³Çäòøüþ‰ÿŒ ‹ˆÿþûöæÅÀÄÅÄ Àº´­¥œ’Œc‰¾ÓÛØ€ÚÙÞß߀ÜÚÛÛÞÝÚÖˆ $ˆ¨€®°‚¯¶Ìéôúý‰ÿ‹ ‹‡ÿþüøîÑÁ€Ã„Ä(Àº³¬£†V§ÔÚÚÛÚÙÜ×ÚÛààÞÛÜÚÛÛÜÜÝÕ„v©­®ƒ¯°»Úìöûþˆÿ‹ ‹‡ÿýúòÛ‚ÃÄÂÄÿ¹±žv¸ÖÛ€ÚÛÙÛÙÚÚààßÜÜÚÛÚÜÝÜÕ{-¬®„¯²Äàðøüþ‡ÿŠ ‹†ÿþûöçÈ€ÄÃĀÂÄü«X©ÖÙÜ€ÚÛØÚÚÙÛßßá€ÜÚÚÝÞÝØ~!‘«­¯°€¯®¯·Ðèñøûþ†ÿ‹ ‹…ÿ þýøðÕÅÈÆÅĂÂÄ™oºÖ€ÚÜÚØÜØÜÜßáÞÛÜÚÛÝÞÞÙ{€ 0¢«­°‚®²ÀÝëôúý†ÿ‹ ‹…ÿ þûõçÉÊÊÉÈÆÅÄÀÄ)ÁƒªÙÚÛÚÚÛÚÚÛÚØÛÚÛÜáßàÜÜÛÛÜÝßÚ EŸ«„®µÏãðõü†ÿ‹ ‹„ÿþýøðÚÊÎÍËÊÉÇÆÄĀà ÄÄ’ÖÜÜÚÛÙÚÚÙÛÛØÚÚÛÝÝàáÞÛÛÚÜÜÞØx€ &! ?¡ª­‚®±ÂÚêóúþ…ÿ‹ ‹„ÿþûõèÍÐÓÑÏÎËÊÈÆÅÄ€ÃÂ|ËÜßÞ€Ü$ÛÛØØÜÛÚÝÜÞÜàâßÜÜØÙÛÛ×x!!yP#" Vžª­®¯·Ðåòúý…ÿ‹ ‹„ÿýùñàÌ××ÕÔÒÏÍËÊÈÆÅÄãÀÛÜß߀Ü%ÚÜÙÙÜÞÙÜÜÝÝàßáÜÜÙØÙÚ×x"" Ê5!#X£«¬®³ÅÝî÷üþ„ÿ‹ ‹ƒÿCþü÷ìÔÑÚÚÙØÖÓÒÏÍËÉÇÆÂ¨ÖÚÜÞÞÝÚÜÚØÚרܨ×ÛØÛÚÛÝÛØ×ÓÖØÔv “ÓÑ»a#!c£«­€®°ºÔèôûþ„ÿ‹ ‹ƒÿýúôæÏÔ€ÚÛÙØÖÔÒÏÍËÉĘÙÚÙÛÜÛ€Ö/ÓÕÓÒÖÔÏÔÑÒÐÖ×ÕÔÒÍÐÒÏq xÑÕÔÌ‘6v§¬®­­®³Ëâðùý„ÿ‹ ‹ƒÿ ýùðßÊØÚÚÛÛ€Ú7Ù×ÔÒÎÌž¼ÖÖÕÕØÕÒÏÑÍÐÍËÌÌÈÊÊÌÊËÍÑÏÍÊËÌËhNÉÑÔÑÒ¬I!#Š©«€¬²ÂÛì÷üþƒÿ‹ ‹ƒÿü÷ìÚÊÙ†Ú?Ù×ÔѼÌÑÓÎÐÑÐÏÉÊÊÈÇÀÆÌÈÆËÇÉÇÇÈÈÇÆÄÆÆe,²ËÌÍÎÌ»[=¡««¬¬²¹Óèôûþÿþÿ‹ ‹ƒÿûõèÒÊרØÛ†Ú<جÆÎÌÊÊÌËÊÅÄżÁÁÄÅÆÀÅÂÄÃÅÆÁ¿Â¿ÁÀb}ÁÇÈÉËĺ] c©«¬¬­³Ëãòúýÿýÿ‹ ‹ƒÿ úòäËÍÔÕÕÖרØÙƒÚ ®ÁÌÇÇÅÅÆÅÄÀ¼º€¾+¿Â¼¼½¾¾¿ÀÁº·»º¼]:±¿ÂÃÈÃų;"#©­­°´ÅÞïøýƒÿ‹ ‹ƒÿOùðàÇÌÑÑÒÓÓÔÕÕרØÙÚ³‹ÀÅÄÂÀÀÁÀÁ¹´º·¹¸¸º¹¶¹¸¹·»¼¹¯µ´¶Wt¸½ÁÃÂĶg[B¤­®¯®¿Ùì÷üþ‚ÿ‹ ‹ƒÿ÷îÜÄÈÌÍÏÐÏÐÑÑÒÓÔÕу£½¾¿¼º»€º2®³µ±´³²³µ®³±µ²¶¶µ­©¯°S,“¶ººÀ½´k¡Lx¨«­©¹Õéõüþ‚ÿ‹ ‹ƒÿ÷ìÙÀÅÈÉÊ€ËDÌÍÎÏÏÆr“ºº·º··µµ¶°«­®®«¯¬•”œ•—­­®¯¯­¢©¨N>¢µ·¸¹°k¨˜6 4Ÿª­¤´Ñçôûý‚ÿ‹ ‹ƒÿ öêÖ¼ÀÄÄÅÆÆ€ÇBÈÉ‘Q|°º¸²´²±¯¯°§«ªª¬¨§†ÁîöêÕ©©ªª¨  £IU§®³´§i©©…"w¨«ž¬Íäóúý‚ÿ‹ ‹ƒÿöéÕ¹¼¿€ÀÁ€Â¸„p›¯µ¶´¯¬®¬¬«©Ÿ©¨¥§¤™ºû€ÿ û²™£¥¤£ž—ŸB€h£©®žhª«¦WB¤¨›©Ëãòúý‚ÿ‹ ‹ƒÿõèÓ··€»‚¼¹|™³´±®¯«¨ª§§¥£—£¤  ¡‰â‚ÿ&åžžŸž›’›=!l¡¤¥›©©¦•%#§›©Êâòúý‚ÿ‹ ‹ƒÿõèÒµ³¶·¶µ´±°¬©ª¨££¢¡ŸŸ ›™›‹æ‚ÿ&ê‹™™›™–‰–:#x¦¨¥¨¨¥¤Wp¦›¨Éâñúý‚ÿ‹ ‹ƒÿôèÒµ¯€°¯°°¯°€¯««¨¥¥£ ž››™‹˜š—•–‹¿þÿÄŽ€“•‘ˆ“8,¡£¥€¦ Q£ž©Èâñúý‚ÿ‹ ‹ƒÿ ôèÒ´¬«ªª©ªª©@’𥥢Ÿš™™–••†Ž”“Š×ûþüÛŠŒ‡…Ž6-¡£¥¦ ;:¢ž¨Çâñúý‚ÿ‹ ‹ƒÿõèÒµ«§§‚¦C¥¥’{𡠙𗔒’Ž…ŽŽ‹Š‹ˆ†š´ž„„‡‡ˆ†ˆy…ˆ1Ut-,Ÿ£¤ž\/Ÿ©Èâñúý‚ÿ‹ ‹ƒÿõèÓ¶¥¦¥¥¤‚¥¦’€›%˜•“’ŽŠŠ†t…ˆ†„……‚‚€‚ƒ€‚ƒ}u„ƒ5_šN€-…¢£žv,“˜«Éâòúý‚ÿ‹ ‹ƒÿõèÔ·¢¦¥¥¤€¥C¤¤Ÿ–˜™••ŽŽ‹‰‰†……wr‚ƒ~~{|~}|}~{hx‡¦6fœŸ™l+.†ž  ‡)’Ž­Ìãòúý‚ÿ‹ ‹ƒÿöêÖº§¦¥¥‚£0šai‘”‘ŒŠŠˆ…„ƒ€}kq}{y|yyvxxyvxwhk œ6hšžœ›‹J €1ž ‘!,–‘°Îäóúý‚ÿ‹ ‹ƒÿ÷ìÙ½£¢¤¤‚£B¢§—ŽŒŠ†„…€{zztegusturrqrsqmbb{œ›š2i›Ÿ žžœw86’ ’!0‰´Ñæôûý‚ÿ‹ ‹ƒÿ÷îܧ¥€£¢£A¢–ЋЇ…ƒ~yywuusqc^ckpmmjli^Vanšœš0j›ž žœ•c& B›!8•¸Õéõüþ‚ÿ‹ ‹ƒÿùðàȪ ¤££‚¢¡Žƒ†…„€~{yyutrrpomleYRWXYVRRX`eŒ€œ™+m€Ÿ€ ž›„>\…F‡ž¿Ùë÷üþ‚ÿ‹ ‹ƒÿúòäͰ ¤¢¢‚¡) …‚{zxttronkkjhhfe_ZYTVZ\b_w¡›œœ™)mžž€Ÿ žœ•U!MVˆ¦ÅÞîøýþ‚ÿ‹ ‹ƒÿûôèÔ¸žž€¡ ¡€ …|~|zxvrppƒqigfed€b ]\^Z\Z[[X‰€›œ™(ožž€Ÿ€ž™c# b®Ìâñúýƒÿ‹ ‹ƒÿ ü÷ìÚÀ¢š£¡  Ÿ€ Ÿ¤Š‰‡„“ £ž•va`_€\YWYXVVUUW›œ˜)qœžžŸžžžœe# %m—·Óçôûþƒÿ‹ ‹ƒÿýøðàÉ«™£€ Ÿ‚ £¤¤€£ Ÿœœš˜Ÿ{ZZXXWV€SQRONb‰›˜+qœœ€žƒŸ œY*|¢ÀÚìöüþƒÿ‹ ‹ƒÿýûóæÑ¶šœ¢€ Ÿ Ÿ€ž€œ›–^USRRQOMNKLIGsˆ›–)s€œ€€ž€Ÿ ž™<h«Éáðùý„ÿ‹ ‹ƒÿþüöìÚÁ¤“€ ‚Ÿžž€ƒœ›žzPPMLKIGHHFEB4\›–(t‚œ‚ž Ÿžž€!@µÑçôûý„ÿ‹ ‹„ÿýùñâͱ”¡€ŸžŸŸžž€ƒœ€›’UJHGFFCCD@@=3Fa€›”&wƒœžž€ž =*°Ùì÷üþ„ÿ‹ ‹„ÿ þûõé×¾ ŒŸ €Ÿœžž…œ€›bFDAA@><><<9:.M››‘%xƒœœž€e'žáñùý…ÿ‹ ‹„ÿ þüøïà˰“Š›Ÿžž‚„œ‚› ŒE@=;;:889€6 7.&[’%y›…œ›€ œˆs„<'‹èõüþ…ÿ‹ ‹…ÿ ýûôé׿£†ŠŸžž…œƒ›O;97652130103402v%!|›†œ žn}˜f(yîøý†ÿ‹ ‹…ÿ þüøðâε˜€’ž€†œƒ›šB520/.€,+,-/1,<{™™š›…œ —vt«*sõûý†ÿ‹ ‹†ÿ ýûõëÛÆ«x€…œ…›–{xvvusƒru€va|™™š›„œ •pm‡£¼¬/søüþ†ÿ‹ ‹†ÿ þýùòæÕ¾£ˆt€œ››€œ—› Œ"~˜™™›œšœ ›oh€›µÍ¾3vùýþ†ÿ‹ ‹‡ÿ þü÷ïáÏ·ƒ„–›€œš€œ—›!~€™ššœ •…j{•¯ÈÛÅ5‡úþþ†ÿ‹ ‹ˆÿ ýûõìÞʳ™{›œš˜›‰š›šš›€œ”mfw‘«Ã×çÂ4šüþþ†ÿ‹ ‹ˆÿ þýúôéÚǰ—~y‘œ›šš–›‰‚šš‚› –o`uާÀÕäïµ7°€þ†ÿ‹ ‹‰ÿþüùòçØÅ®•~{‡–œœ€›šš”›‹„š›˜†rcwަ¾Òãîõœ;Êýþþ†ÿ‹ ‹Šÿ þüøñæ×Ä®—€ly™ƒ›š™Š›š™š‚›‹ˆ›˜…^fy§½Ñâîõ÷yHæýþþ†ÿ‹ ‹‹ÿþü÷ðæ×Ű™‚onƒ•œ„›™›š…›š™™˜™€šŠ $ˆ›œ˜‡oaj}’©¿ÒâíõùìQb÷þˆÿ‹ ‹Œÿýû÷ðæØÇ³ž‰vetœœ„›š›š˜™€š™—–˜—˜€šˆ"$‰›”{\apƒ˜¬ÁÓâîõûùÃ4ýýˆÿ‹ ‹ÿýû÷ñèÛ˸¤‘~met‡“›œ…›#š™˜’‚kUKKUk…—† !uv`[hxŠž²ÅÖäïöûýö€7ÆŠÿ‹ ‹ŽÿþüøòêÞп­šˆwi_f‚›š‚›$š—†_7""CWIYds‚”§¹ËÚæðöûüüàDSðŠÿŠ ‹ÿþüùôìâÖǶ¥”„vjd`pqŠŽŽ›—ˆU'€Xp~ ±ÂÑßêòøû€ý¢4ŸüŠÿ‹ ‹ÿþüúöðçÜÏÁ²£”†zof^^[_oM!€€rœ­¼ËÙäíôùüýþûêXJæýŠÿ‹ ‹‘ÿþýûøóìäÙÍÀ³¦™ƒyrk`9€!«¹ÉÕàéñöúý€þû®>£üþŠÿ‹ ‹“ÿ7ýüúöðêâÙÎø­£™‚I(«ÉÔßèïôùüýþÿþþöouóýþŠÿ‹ ‹”ÿþýüùõðëäÜÓ˺«_!€ "%$.Äáèîôøûýþ‚ÿûØæùŒÿ‹ ‹–ÿþýûùöòíçáÛÒ’)  €!"#%&'(5Øðõøûüþþƒÿý€üŒÿ‹ ‹˜ÿ$þýüú÷ôñëÐG"!!"#! "#%#$%&&'()**Aìùûüýþ˜ÿ‹ ‹šÿ þýýûùô›)%##"#%&&''('(*))*+,)bôýþþšÿ‹ ‹Ÿÿ ô](%(&%%++*+-,+,,+.*’÷ÿ‹ ‹Ÿÿâ<€'&$&*+,--€,+,,+,.4Ù÷ÿ‹ ‹ŸÿÊ0&$'*--‚,+€,-.õùÿ‹ ‹ŸÿÄ.&%&('&)++**+*+,-.//Sáüüÿ‹ ‹ŸÿÝ6'&()+,**(*+,./0GÍøýýÿ‹ ‹Ÿÿ÷Z(()('*)*++*))+,,/QÈùüýýÿ‹ ‹Ÿÿüµ/)*)())+,++)+-,0lÛøüýýþÿ‹ ‹Ÿÿýö‚)%'&((‚,+.Oªðþþ¡ÿ‹ ‹Ÿÿýýóœ8',--/-..2d­êúûþ¢ÿ‹ ‹¡ÿýüè­sZJMVt¢Øôüþ¥ÿ‹ ‹¡ÿ þþûûú÷õ÷úûýýüþ¦ÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ‹Øÿ‹ ŒØÿŒ {éåãàßßÌÞßßàãåé{ÿÿÿÿÿÿÿÿÿÿÿÿ÷t8mk@/§§§¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨§§—J IÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæŽ  Mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘ Sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý“ bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý’ $iÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘)nÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý‘-rÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý /tÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþŽ 1vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþŒ 1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþŒ  1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ‹  1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþŒ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒ   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷u   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿY  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿa   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿg  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿk"   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿn&   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿo*  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿs,  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿt/  2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv0   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1   2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx1    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    2wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw2    1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1    1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1   1wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw1  1vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv1  /kßãåèééêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêééèåãßk/ -@Set~…ˆ‰ŠŠ‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹Š‰ˆ…~teS@-);M]jty}~~}ytj]M;) $3CR]ejmnnnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooonnmje]RC3$  *7CLSWY[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[[[YWSLC7*  *3:@CDEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEDC@:3*  $),/011111111111111111111111111111111111111111111111111111111111111111111111111111110/,)$      Cynthiune-1.0.0/Images/Cynthiune.icns000644 001751 000024 00000140725 11733546675 020222 0ustar00multixstaff000000 000000 icnsÁÕich#H?øÿÿÿÿÀÿÿð?ÿÿøÿÿüÿÿÿþÿÿÿÿÿÿÿÿ€ÿÿÿÿÀÿÿÿÿÀÿÿÿÿàÿÿÿÿàÿÿÿÿðÿÿÿÿðÿÿÿÿø?ÿÿÿÿø?ÿÿÿÿø?ÿÿÿÿø?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿüÿÿÿÿøÿÿÿÿøÿÿÿÿøÿÿÿÿøÿÿÿÿðÿÿÿÿðÿÿÿÿàÿÿÿÿÀÿÿÿÿÀÿÿÿÿ€ÿÿÿ?ÿÿþÿÿüÿÿðÿÿàÿÿ€ü?øÿÿÿÿÀÿÿð?ÿÿøÿÿüÿÿÿþÿÿÿÿÿÿÿÿ€ÿÿÿÿÀÿÿÿÿÀÿÿÿÿàÿÿÿÿàÿÿÿÿðÿÿÿÿðÿÿÿÿø?ÿÿÿÿø?ÿÿÿÿø?ÿÿÿÿø?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿüÿÿÿÿøÿÿÿÿøÿÿÿÿøÿÿÿÿøÿÿÿÿðÿÿÿÿðÿÿÿÿàÿÿÿÿÀÿÿÿÿÀÿÿÿÿ€ÿÿÿ?ÿÿþÿÿüÿÿðÿÿàÿÿ€üih32îíªÕÖÝÛÔÒÎרÙÔпHœÈÙâèèãÞÖÓÓÜßßÝÞÝÙÀ‹˜¸Úçóú÷ðçßÔÒÓÛÝÞààáãàÜÈ”U×å÷ýüüøòéá×ÓÓÜÞÞßßáãååäÖª’ªÚðþÿþüüúõìãÙÓÓÜÞÞààâãååçêາÝ÷ÿýüû÷îåÛÓÓÜÞßàáãäåæçìïë¼$ªáø‚ÿþüüùñçØ¿±·¹ºÇáãååçéíñôîÑ‹»Ý÷ƒÿþýüúÌ‘\Virnqhc‹Åäçìðòõøðà ŠÛóüþƒÿþãX–¸ÈÆÀ½¼Æ¾§oˆÉîòõ÷ùúò·‰Öëöùüý‚ÿ³Xœ½Á½ÄÇÀ¾¹Äǿŭp¿ò÷ùúüü癇 ¸àïòõøûýÿÿþ¦d½€À¼¿ÈÅÀ¼ÀÇÿƿ‚õúüüýýÐ)…'mÛæéìñôøúýý­a¼ÃÀÁ¼¿¿ÇȾ½½ÅżÇÀÀ¡©üüýþþó¬…Ìá€çêîó÷ú¸Y½€ÀÁ½ÀÀÄÊÀ¾ºÄÆ¿ÀÄÀ¿žÕþþ€ÿÛ„UÑäçæççèìñâZ¼ÄÀ¾€À¾¿ÁÊǾ¹ÀÄÀ¿ÆÀÀ¸âÿñsƒ¢Ûççæçê§–ÄÆ¿¾Á¿Ä¹ÀÄÆËÀ¹½ÃÁ¾ÄÁÁ½¯Ãÿþ¿ƒÂàçæƒçm¿ÁÇÀ¿ÁÃÁÂÃÅËž¼Âÿ¿ÅÀ¿¾»úÿß‚Íãçæ‚çÇo¾¿ÉÅÄÃĺ»²¸¿ÌÍžÂÅÄÂÈÃľ£Ü€ÿþñZ‚Îãææ‚ç·ÂÁÌÎÄöÀÌÄÈźÍÈÃÃÇÇÅÈÇÇÁ¹Îþ÷‚ØçƒæçµˆÇÆÈΞÆÈÊËÉÌËÀÌÈÃÊÇÉÇÉÆÈÀÕþý®‚Òæå‚æÊbºÊÈËͼËËÏÇËÇÏÎÓ¾ÊÇËÊËËÍÉÌÂÕ‚ýª‚ÎåäåªT®ÊÊËËÈÉÍÒ¶˜`¸ÒÒÄÌÉÍÏÌÎÌÎËÅÕ‚ü¥‚Ëãä²UËÎÑÉÏϾÔÔЭǀ ÓÔÐÊÎÌÓÎÑÎÑÍÎÜ‚ü¤‚Íãá€â ÕØÕÐÒÎÐÐ»×ØÎÁ΀ ÒÕÒÊÒÍÕÒÓÕáåîõûú¤‚ÎâàḽÖÓÓÒÓÂÐÛÕÂÒÏŸ®ÖØÉÏØÒÕäïñòöúùúú¤‚ÌáââããÎÒØÔØÓ×ϼÜÛÙÊÇËÛØÛ¶ÛÜåïò„ø€ùø”‚ ¸áååææÕžÙۂظÖáÚßÛÙÝØÊÅßðñõöö÷‚øóL‚¡Û€åæÅ°ÙÜÜÙÛÚÚØ°ÔÞáÞÜߏÞíðôôõõ€öƒ÷ß‚sÓååæççÆÔÜÞÚßÜÞßÞÀ²½Ç¼®ÉÜìëòóóôôõö÷ƒ Àæèèêë¥Ìà€ß€àããâÔÔÖÝåáíññòòóóôô‚õöô„‹ÝêëìíÖ€êìîñìäååçåçåäæåïðññòò€ó€ô€õÝ „)Äííîðñò€óòòðéÛæèéæéæåæïððññ€ò€óôôõó †…Ýððò€ó€ò€ñ Úãéêçìçå¿Óðð€ñ€òóôÕ3‡³ðó€ò€ñðåÙë€íìêÑ“Ëðð€ñ€òóòóïˆ7Ãóóò€ñððïÉîîðíðíìÜ™²ððñòª‰UÔòñ€ð Üíïñðòïïð䫪èðñòòÇ%‹OØòòñðìé…ìêàìðññÐ"pÎññ„ðˆï‚ðñðÃFVÈìñ‚ð‰ï‚ð켑$¥ä€ðïðŠï€ðâ“ ”RÁëððïî€ïîƒïê»<— h¯àîˆïîà¦Wš9«ÁßààáàáÝ¿¦u*¡&('#ÿ íªÕÖ×ÚÕ××ÝÞÝØÓ¿HœÈ×ÜÜÚÙÚÚßæíòöóðéÞ˘¸Ø€ßÝÛÚÙ×Þæìò÷úúûûñâÊ”U×ÝãâáßÝÛ€Ù ÞåíóøúûûüýýôÛª’ª×áåäâáàÞÝÛÙÙÝåíóøúûûü€ýûé¼²×äæåäãâáßÝÛÙÙÜäíôùúûûƒýóÀ$ªÚâåäââßÞÛÙÕÅ¼ÂÆÉÛûü„ýóÍ‹»Øâ€åæåäãâàÞ¼ŠZWjrosmk“ÖûƒýôÄ ŠÛãåææåäâÍwS—»ÊÇÁ¿½ÇÁ©qÖƒýò·‰Öáåäåææå¥Q¾Ã¿ÆÈÿ¼ÅÈÀưtÅûýü晇¸Ýãä„åš`¾ÃÃÁ¾ÀÊÆÀ½ÀÇÄÀÇÀƒ’øý€üûÏ)…mØàßáää€åä a¾ÅÀýÀÀÇÊÀ¾¿ÆÇ¾ÈÁÁ£ªüûðª…'Ìàæãààãäåå¬V¿ÀÃÀľÁÀÅËÁ¿½ÆÇÀÃÅÃÀŸÕüüûûùÖ…(ÓéëéæâàâäÕU½ÅÃÀÃÁÁÀÀÄËÈÀ¼ÃÅÃÀÇÁÁ¹àûúùùìpƒ)¢áòðïìéåâᢖÆÇÀÀÃÀƼÁÅÇÌÀ¼¿ÄÄÀÅÄÿ²Áùùø÷õ¼ƒ*Âè÷ôóñïìéälÀÃÈÁÿÂÄÁÃÃÅÌÅ¿½ÃÄÁÁÆÁÀ¿ºô÷öõôØ‚*Ïòùù÷öôòðÊn¿¿ÉÇÄÂĺ»²·¾ÉÌžÂÄÃÂÈÃÄÁ£ÖôôóòçX‚*Ñ÷ûûúùù÷ö׈ÂÁÌÎĵ¿ËÃÈĸÌÈÃÃÇÆÄÇÆÇ¹Êòòñðë}‚Ü„ûú¿ˆÆÅÈÍÅ¼ÆÆÈÉÆÊɾÊÅÁÇÆÇÆÈÆÇÀÏ‚ð©‚Ú„ûÚh¹ÉÆÉ̹ÊÉËÃÈÅÌËмÈÃÊÇÊÈËÆËÀÏ‚ð¤‚Øù€úûúµW«ÈÇÉÈÆÆÌϳ•`³ÎÏÀÈÇÌ ÊËÊÃÏïïîíí‚Ö‚ù ¹WÈËÎÆË˺ÏÏͪÀ ÍÏËÄËÇÎÊÎËÎÌÌԂ뛂Õ÷ø çÞÑÍÏÊÍÌ·ÒÔ˼ˀÎÑÍÅÌÊÐÍÎÓÞâçãééçèéš‚ÕöõöƹÒÎÎÍμÊÔÑ»ÍɪÑÒÃÊÒÌÏáèæâá‚äå囂Ïóô$Ù„ÌÔÏÓÎÑÉ·ÕÕÓÃÁÄÔÐÔ°ÔÖßåÜÞßßààááâáâᎂºíó€ò$Þ¡ÔÔÒÒÑÑбÏÙÓØÔÓÖÑþØçØÙÚÛÛÜÝÝÞÞßÞßÝG‚*¡ãòñòò̰Ó×ÕÓÕÓÔÑ«ÌÖ×ÖÔÖ¿´ÖãÒÔÕרÙÙÛÛÜÜÝÝÞÌ‚pׂñËÎÖØÓ×ÔÖÖÕ¸¬¶¾µ§ÁÓáÏÒÒÓÔÖÖØ€ÙÚÚÛܱƒ)Àïññòò¨ÇØØÖÖרØÚÚØÌÌÍÔÛ×ÕÐÑÒÒÓÔÔÕÖ×ØÙØÙÚw„ˆá€òóÙè€æëîçÝÛÛÝÙÝÜÏÏÐÑ€Ò ÓÔÕÖÖ××ÙÈ „)Äó€ôõö÷öôòïëäÑÝÝÞÛÞÛØÝÏÏÐÐÑÒÔÔÕÕÖÖ•†„ßõöö÷öôóñïìéçÒØÞßÝàÝÚ·»ÏÏÐÐÑÒÓÓÔÕÀ0‡²ó÷ööôòñîìêæäÚÎßá€à ÞÅŒ´ÏÏÐÐÑÑ€ÒÑÓÓwˆ7Ãöõóòðîìêçåâß½ááãàãàßТπÐÑÑÒÑÒÒ›‰"UÔóòðîìêèæãàÝÏãäæäæäãäÙ¢ŸÉÏÐÐÑÑÒÒ³"‹OÖðíëêèæäáßÝØØÚØØÖÖ€Õ ÓÊÍÏÐÏÏÑÒ¹ mÌëëèæäâßÝÜÙØÖÔÒÒÑÐЂÏ΀Ю@ TÄäæåâáßÝÛÙ×ÖÔ€ÒÐÐÏÎÏÐͪ‘ % ÛäâßÜÛÚÙÖÕÔ€ÒÑÐÏÏ΀Ïȇ ”P¹ÝßÝÛØ×ÖÓÓÒÑÏÑ‚Ïͨ7— b§ÐÙÙØÖÕÔ€ÒÑÐÐÏÇ–Oš8y ²ËËÈÇÇÈǬ—m&¡$%$"ÿ íª±¼ÀÀ¸µ€´²³¯Ÿ$œ­½ÃÊÍÏȺ±­­®¯¬ª¬¯¤s˜ª»¶ºÈÓÖÕͼ²­­®°®¨¤ Ÿ¨§” U½¯ §´ÄÐ×Öо³€® °­¨£™“”¡Ž’ »¥–¡­¼ËÖÕÒÁ³€® °¬§¢œ•‘ŒŽ›ž¥»ªŸ“š¦µÅÒÖÔĵ€® °«¥ ›”މ—¢ ª¾¸±§›” ¬¾ÎÖÕÂ ŽŽ—¥Ÿ˜’Œ“›¥¬© ‹"ª¿ÁÁ¹°¥˜˜¥µÆ¬{VZr}{|kUg„‹‘™¡­°®ž Š¿ÀÄÄÁ¸®£•‘›d\¥ÏÙØÔÓÓ×Ò¹oa~•Ÿª€°®•‰»ÀÄÁ¸¬Ÿ‘qG«ÓÔÓרÔÔÒÕØÔÕ¿oƒ¥¯°°¯¯«{‡ž¿ÃÃÄÀ¶ªlaÑ€ÔÓÔÙ×ÔÓÔØÕÔØÓŽn¬°¯¡#…HÀÁÃÄÃľ}gÑÕÔÔÓÔÔØØÔÓÓ××ÓØÔÔ°‚¯¬‹…¦ÂÈÆÄÃÀÄZÒ€ÔÕÓÔÔ×ÙÔÔÒÕ×ÔÔÕÔÔ¥˜¯¯€®¤… ¹ÊÍËÈÅÄÃóQÍÕ„ÔÕÙØÔÒÔ×ÔÔ×ÔÔÍ…®ª\ƒ#‹ÄÖÔÐÍÊÈÅÆ¥××ÔÔÕÔ×ÒÔÕ×ÚÔÒÓÕÕÔÕÕÔÓÄ‚®–ƒªÌÚÚØÔÑÍÊÇdÓÔÔÒЀÏÌ ÏÌËÊÍÏÏÐÔÓÓÒ¦¬®¤‚$·ÒÚÛÚÚØÖÑ©tËËÌÊÇÄĺ·°µ¼ÃÆÂ¿ÂÄÅÅËËÌ̪®ªK‚ºÓÙÛÚÙ¸†ÂÀ¼·«µº·¹µ©¹€¸º¼¼ÀÁ¼œ®®­®«e‚ ÀÒÔÕÖרÚÚ¡‚º€·®§°­®­£€­²²´µ¸¸º¸¡‚®…‚&¹ÌÎÏÏÑÒÓ´\¨±­­¬›¨§§¡¡¢£¥§—¥¢§¨ª¬­­²¯®®€­}‚$³ÅÆÇÈÈÉG“ª¨¦£›žŸ‹sDˆ›œ™›ŸŸ£¥§¨¥›‚¬v‚«½¾¾¿¿‹G¢¥£œ›‹˜—”z€ ’“Œ““˜–š›ŸŸœª©r‚§‚µ ¨¤¢œš–”’‰}‹€ ‰ˆ‡Š‰ŒŽ‘–Ÿ¤§£‚§r‚¤¬€«ªª‰‡–’‹ˆ|‚‡‚uOl~€w|‚†˜£¤£¤ƒ¦§v‚Ÿ§¦€¥”\ˆ‡‚zl}{xomovuwcw{Ÿž£€¤¥¤¥¥l‚Ž£¥€¤–mˆ‡~{xubptoqnlnkdbršœ ¡¢¢„£¤£7‚zŸ¤€£ ‹u~{wuqnkUfhh€fXSf’›ž€ ¡¡¢¢€£¢£–‚Uš£¢ˆvwtnnigfbSKNQMFRZ‡•œžŸ €¡€¢…ƒ!Ž¢¢¡¡ okqlifc_][YWNNMPS_™›œœžŸŸ‚ ¡¡[„eš¡€ ‘’‡…ƒ™‹fSQPMMKJJr››œžžŸŸ ”„Œ¡ Ÿ ŸŸ€žœ›”PHGFDDA@|š››œžžŸŸž  n†_– €Ÿžžœ ›|A@>;<:7R„€›œ€žŸŸŽ#‡|ŸŸžžœ››•>874€3+>‚€›œœžžWˆ%‚žž‚œ€› i3/.++)*):o€›‚œr‰;Œ‚œ› >;97766:8>j•›ƒœƒ‹7œœ››œ‚›š–€—–—–‘—›œœ‰Wœ“›š›œ›„1Ašœ›š›šš››™€‘y—€›ššˆ›šš€›•g”?ˆ› šš›™š›š™›šš€›š€)—N{•‰›œ•s=š*[xƒ•”€’”•‚sT¡€ÿ h8mk  +d‡ÄÇÇÇÇǾ}S(mÌñúþÿÿÿÿÿÿÿþúîÃR“èûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûât aÚüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÐB šõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòw µüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü’Óüÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿý¿¹ýÿÿÿÿÿÿÿÿÿÿþýûðéççèíùüþÿÿÿÿÿÿÿý¦¤ýÿÿÿÿÿÿÿÿÿþýòàÚÙÙÙÙÙÙÚÝëûþÿÿÿÿÿÿýŒr÷ÿÿÿÿÿÿÿÿÿþ÷ßÙÙÙÙÙÙÙÙÙÙÙÙÜíüÿÿÿÿÿÿö_äÿÿÿÿÿÿÿÿÿþíÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙåúÿÿÿÿÿÿØ+ ªþÿÿÿÿÿÿÿÿþíÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙßúÿÿÿÿÿý”7ðÿÿÿÿÿÿÿÿþðÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙãüÿÿÿÿÿë-Œüÿÿÿÿÿÿÿÿ÷ÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚíþÿÿÿÿýq ÝÿÿÿÿÿÿÿÿþáÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÛúÿÿÿÿÿÒ.?öÿÿÿÿÿÿÿÿöÙÙÙÙÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÙÙÙÙëÿÿÿÿÿõCüÿÿÿÿÿÿÿþêÚÚÛÛÛÛÛÝÞÞÞÝÜÜÜÜÜÛÛÛÛÚÚÚàüÿÿÿÿýv& §þÿÿÿÿÿÿÿþéÜÜÜÜÝÞßÝÝÝÝÞßÝÝÝÝÝÝÝÜÜÜÜÜ÷ÿÿÿÿþ¡2ØÿÿÿÿÿÿÿÿþæÝÝÝÞßàÞßßßßßßáßßßÞÞÞÞÝÝÝÝöÿÿÿÿÿÐ= ÚÿÿÿÿÿÿÿþùßßßßßãààààÝÙàààãàààààßßßÞÞ÷ÿÿÿÿÿÕG ÛÿÿÿÿÿÿþøäßàààââááåÉJ>pàâäââááááàààß÷ÿÿÿÿÿÙO"  ÝÿÿÿÿÿþóààááââäãããçR*ºãääããããâââáäøÿÿÿÿÿÚU% ÝÿÿÿÿÿþõáââãããçäääçT½åæçåääääæìðøþÿÿÿÿÿÜW& ÞÿÿÿÿÿÿþæãäääåççææèÄ0åçéçææçî÷ùûþÿÿÿÿÿÿÿÜW' ÐÿÿÿÿÿþúåäååææèêçèèêçäèèèëèèñøýÿÿÿÿÿÿÿÿÿÿÿÓW&  £þÿÿÿÿÿùåææççèèëêéééêêêêììê÷ýÿÿÿÿÿÿÿÿÿÿÿÿÿ«U&  püÿÿÿÿþõæççèèééêîëëëëëëíîë÷þÿÿÿÿÿÿÿÿÿÿÿÿÿý“P"  BõÿÿÿÿÿþéèééêêëëìïðïïðñïíöþÿÿÿÿÿÿÿÿÿÿÿÿÿÿõHÕÿÿÿÿÿýêéêëëììíííîïïïîîñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖt>yüÿÿÿÿþõòòôøúøñîïïðððððöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý›f27éÿÿÿÿÿÿÿÿÿÿÿÿýóðññññññùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêˆU&  ‹üÿÿÿÿÿÿÿÿÿÿÿÿûòòòóóóóùþÿÿÿÿÿÿÿÿÿÿÿÿÿü´uB7ÛÿÿÿÿÿÿÿÿÿÿÿÿþõóôôôõõõûþÿÿÿÿÿÿÿÿÿÿÿÿÞ^/ #`óÿÿÿÿÿÿÿÿÿÿÿÿüõõööööö÷ûþÿÿÿÿÿÿÿÿÿÿó¥wF 3Šûÿÿÿÿÿÿÿÿÿÿÿþ÷øøøùùøø÷ûþÿÿÿÿÿÿÿÿûºˆZ. C—üÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþÿÿÿÿÿÿÿü¾”j> )N¯ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÊštH%.U£÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷½yO*2Wéþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþê¶›zR. 2Uzº÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ì­”tP. .No“Ïòþÿÿÿÿÿÿÿÿÿÿÿÿÿþò×µ¢ŠjJ+(B`|–ºÞóùþþþþþþþùòâÆ²¤’y\>%3KdzŽœ¨»¿ÃÃÃÃÀ²®¦š‹xaH0 #5H[lz…Œ‘’’’‹ƒxjYF2!  *7CNVZ\]\ZUMB6)  !&****)& it32d‡ÿÿÿÿÿ§ áÜÜÝÝÕÕÙÙÑÕÕÙ€ÕåâäááÝÛÛØ×ÖÓÖÔÐÎÓÔÙ××ÔרÜÝÛÛ›ÛmÂÊäãà€ÙÜØßãÝÚÖÓÓÑÎÌÐÔÙÛÜÝÞââØ×ÙÞÞÝÖ¬¦ÔfØÙÞÝÙàÞØææäßáâßÚ×ÖÕ€ÓÕÚÝßàáããàÜÝâãÛØÝÝØÃrÐHÌÛÚÛÛÞãîíéëìèåáÞÛ×Õ‚ÓÕÚÝƒÞ ßàãáßáåàØÞÒ²CË»ÞÛÛÝÚåïôôõóñîêçåâÞÛ×Õ‚ÓÕÙ݃Þßà áââæçÞÛÎÒ—ZÇÌÓÜ×Ûåèïøüúù÷ôñïìéæãàÜØÕÔÓÔÙÜ‚Þßß‚à áâããéäÝÝÜέ?ÄÌÚÙÙãí÷üûúøõóðìêçãàÛÔÑÑÒÓÒÒÓ×ÚÛÚÝÞÞßß‚à áâããäåççåã×½9ÁmÝÙÓáñ÷üýüûúøöóñíèåäàÜ×ÓÒÒ€ÓÔØÛÝÜ€ÞÛÜàááâããääååççèàÐu¾™ÖÜÒØå÷ýþ€ýü úùöóñîëèåáÞÚÖÔÓÔÙÜ‚Þ ßßàÞÝàáââããä‚åççßÔÍu»ªØ×Ýãõýþýýü ûøøõóîìéåâÞÚ×ÔÓÔØÜ‚Þßßàßâàâãä‚åæçééáÔœ¹fÕÖÝñúþ€ÿþþýý‚ü úøöóðìêæãßÛ×ÔÓÔØÜ‚Þßßàáâáãâä‚忀çêêÛˆ µfÍÕÕÜñû‚ÿ€þý‚ü ûù÷ôñíëçäàÜØÕÓÔØÜ‚Þß߀àáââããääâå æççèêêèÛ³G³UÐÓÚï÷ü„ÿ€þý‚ü úøõòîëèåàÝÙÕÓÔØÜހ߀à áââããäååää忀çêëìîìçØq²ËÖØîú‡ÿþþý‚ü úøöóðìéåâÞÙÕÓÔØÜހ߀àáââããä‚å äççèêìíîðïìÔ>°ÈÑÜíúˆÿþþýýü ûù÷ôñíêæãÞÚÖÔ€ÓÔØÜÞßßàáâããä‚åæåææêëìîïðòðíÏ­ÌÛÕÔðú‰ÿ€þý‚ü úøõñîêçãßÛ×ÔÓ×ÜÞßßàââããä‚忀ç éìíîðñòóôíÕ¤K«ÕØãïû‹ÿþþý‚ü úùõóïìèäàÛ×ÔÓ×ÜÞßßàââãã‚åææççéììíðñòóôõõîàÍ.©ÉÏåöýŒÿ€þýüûú÷óñìéåàÉ™—“~€€ƒ„ …ƒŠžßàââãã‚åæççèêìîíðñòóôõö÷óꨨÉÑÓòýŽÿþþý‚ü úøõñíæã…i:+.34‚36:-TmÃßâã‚åæççêìíîððòóôõõ÷÷øõÓ‹¥$ËÑÙïüþŽÿ€þýü!úøåʳ-,Lkš ››˜š•˜••žŸ‹mB.U¡Ìâ倿çèëìîïñòòôõöö÷øøùñ×–¤ÍÕØîùýþþÿ€þýüä‚+)AWq¨ÁÃÄ¿¶€¾!µ¸´½ÁÅ»«‚^<1yœ³ææçèêìîïðñóóôõö÷øø€ùïÖ’¢ ÑÒÚíøûüýþþÿ€þ8ýüüÁ=Sex’­·¹ÊÊÇÈÃÀ¾ÃÀº¹¹½ÇÄȾÁ³¬ŽvQ5M·âçéëìîðñòóôõö÷øøùù€úïÔ‡  UÒÕñöúúüüýýþŒÿ€þ7üì¿JWs“°¼¼ºÁ½ÀÍÇÊÇĺÀļ¼·ºÁÃÌÄÆÁ¿µ²¨’bLP£Ïêîïñòóôõö÷øøùù€úûûòÊ?ž ˆÎÓÛóøøúúûüýýþŒÿ8þåÓ>9]¦¸¹¹ÄÀ¼À½½ÌÈÇÈÀÀ¿Å¹¹¶¾¾ÇÄÈÅž¿ºÇĨW+uÃéññóóõö÷øøùù€úûüüøÚªœÎ×Üíõöøùúúûüüýþ‹ÿ;ætJb‡¥ÀǾ¸Åú½¿ºÇËÆÊÅÀ½Á¿¹º¹¿ÄÃÌÅÇÀ½ºÁÏ­vN{Âîòóõõö÷øøùùúúûüñÙªœUÔÝìñôõõ€øúûüüýŠÿñxEj¨¸¿¾Çº¼Àƺ¿¾ºÀËÈÊÇÀÀ¿Ã¹¼¶Á¿ÇÁ¼ºÀÍʾ¾¯‘`…Äãôõö÷øøù€úûüýüñÛVš3ÖÔãïñòóôõ÷øùúûüüýþ‡ÿ7“UQЏ¾ÁüÆÁ¿ºÅÄ·½¿¹ÊÇÇËÅÀ¼Ä½¹À¹ÀÄÆÈÆÇ¿¼¿ÆÎÃÀÀ·™[3µô÷øùù€úûü€ýüìµ™§ÒÜêîïññóóõöøùúûüüýþ…ÿ7éqU£¼ÀÀ¿ÀÃÀʽÄ;À¹ÅÈÇËÇÀ¿ÀÁ·À¹ÀÀÇÇÅÊ¿¿·ÄÌǾž¸—qUIÓðùù€úûü€ýþþöØq˜¬ÎÏáììíîððñóõöøùúúüüýþƒÿæ~l›¹ÀÁÄ¿¿Ä¿Å¾¾¼Ã¿¸Á¿ºÈ€Çƺ½Ä¹¹¿¼ÀÅÇÁÈÁÀ´ÄÇκÃÃÀ¸°œx Íù€úûü€ý€þýè½D–ˆÖÒÙæèêêìíïñòóôöøøùúüüýþÿ;–eVº¾½ÄŽ¿Ä¿ÃöºÄÁ·ÀÁºÇÆËÊǹÀÀ¿´¾¸ÄÀÇÁÄȽ¿¹ÇÍļĿÅÁ´™_¤Óúúûü€ýþÿõàž •¹Ó׿€çOèêéìîðñòôõöøùúûüýþÿÿë†b’»Áº¾ÅÿÀ¿ÀÁÁº¹ÀÁ¼¼ÄºÃËÆÌÇŹ¿¾ºº½½ÅÄÇÀÇÀ¿·ÅÆÍ¹ÃÁÀþ°„O•Îûüýý‚þÿÿýô×<•ÓÕÞèçMèèêìîïñòóõöøùúûüýþÖzj±¸Á½¿¾¾Çþ¿ÁÀþ¸½ÃÀ¹ÃÀ¿ÇÅÌÊŹÀÁ¸º¼¼ÅÄÈÄÇĽº¾ÆÌÀÁÄ¿Åö¬†L°üýƒþÿøç’”ÄÑ×äèçQåçèêìíîðòóõö÷øúûüïr=‚Ä¿À¾À¾ºÇÀ¿ÃÀÁÆ¿¹¹ÃÁ¾½Á½ÇÈÈÍÅÁºÃ·¼º¿ÀÆÅÊÃǽ½¼ÄÆÇÀÃÀÃᆲ€ŸÊüüýƒþ‚ÿýôÉ“ÊÑÞ‚çææ€çLéêìíïñòôõ÷øúúÖ:„¶ÇÀ¾ÅÀ¿¾¿ÇÀ¼ÀÃÁý¸ÀƼÀÁÀÄÌÄÍÊÁº¾À¹ººÁÄÃÇÀÇÀ¾º¿Çȿƾ¾Æ¾¼¼¥„ÎÉü‚þ…ÿúçw’•ÌÌâéçå‚çLèêëìîðòóõ÷øÙdz¾ÇÄǾÀÁÀ¿¹Çü¿ÃÁǺ¹¹Å½ÀÀýÇÇÌÌÅÀºÃ·¼¹ÁÀÅÄÇÄŹ½ÀÄÇÅÿÀÄ¿º¼¸„ÇÕø€þ†ÿþò’´ÎÓâ‚çæ„çJéêìíïñóõÕ~eÀÈÃÊ¿ÀĿùÀÆ¿¼ÄÁÅ¿¹¹ÁŹÀÅÀÇÈÈÎÈ¿¾À½¶¼¾ÃÃÄÆÁʹ¿½ÀÈÆÀĽÁľ¼½ ft©ð‰ÿþöÇB‘ÌËÚèçåæ…ç èéëíîññÉo™¼ÀË€Æ9½Áÿ½¿Æ¿½¿ÄÅŹºÀüÁÄÄÀÌÈÎËÃÀºÀ¸º¼ÁÀÄÅÃÅ¿¾ºÀÅÈÀǽÁƽ¼¼¸™dÁ´Šÿüè‹ÎÖäçææˆçGèêìîá›’ºÁÀÅÈÆÇ¼¿Ã¿¿¹ÅǼ¼ÅÁÆÁ¹·ÃźÃǾÇÇÍËȼ¿Àº³¿¾¿ÀÅÄÃÀ¿½¿ÀÊÄÀÀ¾ÅÁ½½¿·™fÅŠÿþõÌ@ÂÌÚèçææŠçEéëÒo£¾¼¾ÄÈÆÈÀºÀþ¸ÁÆ¿½ÀÄÇÅ·¸ÀÄ¼ÃÆÀÄÈËÌÇÁÀ½¼·¹¼À¿ÅÿƽÁ¼ÀÅʿùÇÀ¸À¼¾¬}½‹ÿúàZÐÎÛæ‘çEèÎy¼½¼Ã½ÊÅÈǹÀüº¼ÅÁ¿½ÄÄÆ¿¶¼ÄÀ¾ÅÅÂËÄÎÊǺÀ¿º³¿¾À¿ÄÁÿ¾ºÁÀÌÀ¿¾Ãý¾¿¾·š¡ÕŠÿüꎎÎ×äçæåŒç ãf˜Äº½¿½ÈÈÇÈ€¾Å¿¶ÈÄ€¾/ÆÊ·¼ÅÆ¿ÅÅ¾ÈÆÐÌÆÃĸ¹¼½ÄÂÄ¿üĹÃÅÇÀÀ¼ÇÀ·Ã½½±°Üωÿþ÷ÆxËÖæ’çFäR¿Àº½ÅÁÉÅ̹ÁÈøÄÅľ¾ÄÈɼ·ÂÅÁÁÃÀÄÌÇÐÉÇÁļ½¹Â¾ÅÂÅÃľ½¿ÃÌÄþÁľÀ¾½¸¤ËÞŠÿüÖ ½ËÖãçäç'žo±¾Â¸¾Å¾ÊÉËŹÁÄȾÀÊǺÁÄÅɹ²±Ã·¹¹»¹ÅÃÐÎǀĺ»ÀÀÇ€ÄÅÁÀ¿ÅÊÅžÁȾ½¾¾¸Š¸Õí‰ÿüáCÀÒßäçåçGm‹½¸Å¾¹ÃÃÈËÅÌÀ¾ÄÉÈ»ÉÌÀ¿¿¼Â¾º·ÇÅÂù¿¿ÆËÌÈÁÇ»¿ÀÂÂÆÃÉÄÄÁÃÁÅÈËÇÀÅÅÿ¿¾»¡¾Íæ‡ÿþþý»Óæ“çHÓ¶Ä»ÄÀ¾¾ÄÇËÌÎÆ¾ÆÉÌ¿ÃÌÆ´¸ÀÌÎüÅÏÃÈÇÇÅÍÄÅÅÇÈÂÇ»ÀÃÂÉÆÅÃÉ¿ÆÂÂÌÌÄÊÀÄÊÀ¾Á½±uÅáþ„ÿ‚þýº‹ »ÐâçææçåŽçH·½È½ÇÀ¾ÅÈÌÏÌÏÁÃÉÌÄ¿À½¸ÃÆÈÒÉÃ½ÎÆÇÈÈÄÍÏÒľÄÃÈ¿¾ÄÄÆÈÃÆÉÅÅÂÆÇÌÇÈÀÆÉÃÁÁ¶ŒÌ¹ü‚ÿ„þý ‹›ÀÏàç€æãæç6†ÈǾÉÀÀÆÇÍÎÎÒÆÃÈÌȶ½ÉÆ¿ÉÈÒÎľÊÍÄÊÊÆÊÎÓÍÅ»ÅÇĽÆÃÇÈÉÃÇÉÅ€ÆÌÌÃÇÂÌǾÂÁ»£ÑÊû†þýË!‹®ÉÙâ‹æ…ç3}ªÇÌÅÂÅÃÄÇÉÏÌÒÒ¿È;¸ÃÌÊÄÆÉÎÑÇÂÆÏÃÍÌÆÇÒÎÏÎÆ¿ÂÅÀ¾ÆÆÉÊÄÈÄÈÉÍÅÈÃÈÌ¿§ÓÌû„þƒýàv Š«ÏæéŽæçIׂ¹ÃËÈÃÈÃÆÉÆÏÌÏÒÄǼÊÀÎÌÅÈÊÊÑÍÂÃÍÌÈÎËÉÍÍÒÑÒ¿»Ä½ÉÇÊÊÆÆÉËÇÇÆÉÎÈÅÇÄÏÈÀÆÀ¨ÔËûþ†ýõ¥Š¥Íäè€æåŠæ€ç Òvv¸ÀÉÉÄÉÄÉÆÉ€Î;ÒÍ·ÉÍÄÉÍÉÊÆËÐÒÃÃÌÑÈÑÎÈÍÒÓÒÑÌ»»ÃÂÄÈËËÊÅÉÍÉÌÅÊÌÎÆÆÃÎÌÃÈêÑËûþ‰ýõ£Š Êáç€æã勿KÞ·d¿¾ÇÎÆÉÇÆÉÎËÐÍÕλÁÍÐÉÃÑÏÆÈËÎÑËÃÊÒËÐÏËËÖÎÔÓÑÄ·ÂÃÁÌËÌÆÉËËÌÍÆÊËÐÊÊÆÆÒÆÄĪÒËúŠýõ¢ŠžÆàç€æã勿KÈf’ÆÅ¿ÅÌÊÊÌÄÌËÊÑÑÐеÊÉÖÏÃÏÑÆÎÌÍÑ̼¿ÐÎÌÒÎÌÒÒÖÕÒÍÀºÃÆËÊÎËÊÉËÌËÌÈÌÐÍÍÅÉÑËÂĬÑËúŠýôŸŠ›Ãßæ€åäå剿LÁUbÁÌÊþÍÍÅÍÉÊËÎÐÓÌ˽ËÎÐÕÇÈÒÏÈεˆzln‡´¶ÑÐÎÑÖÒÕÕÑDzÅÄÈÐÍÎÊÌÊÏÌÌÉËÎÑËÈÊÊÐÅĬÒÊúŠýóŠ™ÂÝåäˆåO᎑Z[‘ËÐËÆÂËÏÉÉËÉËÏÎÒпËÌÍÏÕÎÇÐÑ·¤}b94_~‡¯ÎÑÏ×ÑÖÖÑиÁÆÇÏÍÐÎÌÉÎÍÐËÊÏÏÌÌÇËÒÈÁ«ÔÊú€ý‡üóœ Š—ÀÚåäˆå"ÙO@b­ÆÌÐÏÉÆÃÑÎÆÑÌÌÐÑÑκÔÍÌÍÔÔÈÎÌ›u‚.•ŸÑÔÐÔÖØÕÖѺ»ÇÅÎÑÏÑÌÌÎÏÒ€Í ÑÑÌÉÌÎЬÓÉúŠüòš Š—ÀÚ‚ä‡å"Æmk²ÀËËÊÔÐÎÇÅÎÐÌÏÍÍÏÐÑžÕÔÍÎÑ×ÍÍÚ„:˜¨ËÓÒØØÕ×ÓÅ´ÇÈÌЀÑÈÍÑÐÑÌÌÒÑÍÎÈÑÑëÑËúŠüòš Š˜¿Ø‰ä$åܾO@¯ÏÓÐÐËÒÒÑÈÇÌÑÑÉÐÎÏÑÏÂÁÖØÌÐÒÔÖ˶•†£§ÀÕÔ×רÖ×Ê®ÊÊÆÓÌÎÏÒÑÍÎÏÒÐÐÌÏÑÈÃÖÊúŠüò™ Š•¿ØŠã#àÊ}“ÉÐÔÒÐÌÏÓÒÍÈÉÒÐÎÑÎÏÓÏÀ¾ÖØÐÐÎ××Ë©†%™²ÃÕÔÖ×ÛÖ×Ï·ÃËÆÏÓÔÔÐËÏÔÓÒÍÏÔÒÏÎÌÒÖçÔÕúŠüò™ Š™¾Ùãáâ…ã"ÏçóØÑ×ÓÐÏÎÔÑÒËÉÏÓÏÐÏÔÏϽÀ×ÚØÎÐÔ×Ñ­˜†$¢·ÁÔÕÔÛ×Û×Ó²ÁÐÎËÓÕÔÓÍÏÔÕÓÎÐÐÕÑÏÓÙôÛÝîˆü€ûò˜ Š™ÀÚãáâ…ã"à×ÝáÓÕ×ÑÑÍÒÖÓÎËÏÔÏÐÒÎÔÑ»Á×ÛÚÓÒÏÛÕ¸»†$̾ÂÖÕÕÚÕÝÙÔ³ÅÐÏÉÓÕ×ÔÑÎÓÕÖÐÏÚèæåñîæáêú‹ûò™ Š™ÀÚã€âßá†â"àÑãÔÔØÒÔÏÐÕÓÓÍÍÕÐÐÓÐÖÒ¾ºÖØÝÕÑÓÚÙ¼¿q„ÌÌÁËØÕרÚÛÛ϶ÆÏÑÎЀÕÒÑÓÕçïïõõðêçæñ÷úñ– Š –ÁÛãáââÞßáââ‚á$ââß¡ÈÔÖØÓÔÎÕ×ÕÎÍÓÔÐÔÒÔÔÆ³ÔÖÞ×ÒÕÔÜκ̪‚#ŸÌÅÉÕØÕÙ×Þ×ÝȸÍÑÔÏÌÖÖØ×Õõöòçâáæìïóõù‡úùù‚úð– Š“ÃÝã€áàˆáGÞ‡žÔר×ÖÐÔÖÕÔÐÑÖÒÑÕÔÔȲÐÜÛÞÕÓÔÛÚÊÇÏÌÆÌ¿×ÓÌÀØØÙÚÚ×ÛÜÝÿ×ÑÔÒÏÔàåîõìåéêðöùù‹úùù‚úð– Š–ÂÞã‹áBÔºˆÏÕ×ÚØÕÓÓÙÕÕÒÐ×ÕÒÙÔÔγÃÜÚáÙÕÖÚÝ×ÖÌÎËÑÑÖÍÇÐ×ÛÚÛÛÙÙÞØ¬ÉÚÓÓÖÙêôïëæëóŒù‰úð– Š™Äáä€á„âã@Îh“ӨרÚÖÕÐÚÖÕÕÑÔØÔÕרÒÀ±ÙÛÞÞÕÖÙÜÛÔÙÍÉÎÌÏÔÖÕ×Ü×ßÚÛ×àÌ´ÑÚÚÒóóêåèïó‹øŒùï’ Š ºÞã€âãàâ‚ã1ääå¼ßÅÕÚ×ØÝØÖÔÔÚÙÔÕÒÚØÖÙ×ØÍ¬ÎÛÞáÖØÙÜߨÙÛÖ×ÛÚÞÚ×ÕÛÚÛ Ú·ÂØàáðîâãîó“øùùøƒùèƒ ‹›ÃÚäâƒå€æ<ÁÛÌÚØÛØÜÛ×ÔÔÜØØÖÕÚÙÖØØÚÕ½ªÔÞáÞ××ßßÛÙÛÚØÛÚßÞÕØÚÞØàÛÚ¸°ÒÞð÷çãïöƒ÷˜ø©ŒšÂÝ凿 ç¹ÖÖÞØÛÝØ×Ó€Ú-×Õ×ÚØØÛ󯄱¶ÚââØÚÛáàØÜÝØÙßÝÞÛØØßÙßÝʨÇÚñòêìñõõƒöŠ÷‹ø¤ ŒÅáç€æå䄿:ÅfQ°ÖÙÛÚÛÝÙÚÓØÜÛÚ×ØÛØÙÚÚÞÙÅ­ÁàäÞÙØäâÙÜߨÛÞÜàÞØÙÝàÙÞ©¼×ïîêïôƒõ‚öŒ÷øø÷„ø¥ Œ |Äßæååæåâæ€å€æ;ÅÛ©ÄÕÚØÝÛÝÜÙÚÖÛÛÞØ×ÚÚÙÚÛÝÛÖÀ¦·ãáÙÝÞãßÛßÝÙÝÞàßÜ×ÜáÔ¬¶Õíìèðóôô…õ„ö‰÷ö÷÷øð›¯Ìà†å€æÐËéÔ×ÚÜÞÛÜ×ÚÞÝÚÙÚÞÛÛÜÞàÝÕ̪°Ø€ÝäãÛßàÙÞÞàâßÙ×Àª³Ôîìçï€ó€ô„õ…ö‹÷øøöÉ=Ž©Åàæåã‚å9ææÕÛÌ×ÙÛÛÞÜßÜÛÚØÝÞÞÛØàÜÛßÝàßÞÜͱ®ÃÍÞâãßÞáÜÝßàãÞǯ¥»Ïïîâêòò€óô‡õ…ö÷öƒ÷õºŽ¡Èáæ…åæ5çæ¹×ØÞÞÜÜÞßÛÛ×ßÞßÛÛßÞÛÞÞàâàßÞѽ© ¶ÍãáÛáàØßÚǯ ­ÄØÝîäæð€ò‚ó€ôˆõ…ö…÷ô»ŽJºÓ‚åäåæ‚ç5èæ¨ÕØÞÜßÝÞßÝÞØÜßàßÜÝáÞÝààáâáâàÜÓ¼©Ÿ£¯°¼±®£ž¦µÃÒÚåðèèññòƒó€ô‰õˆö÷öÛ}Ž @«Éãååæçææç5èéêæŒÖÚÛßßÞÞßàÝÝÛááßÞÜâàßâàáäàáäååÝÓÈü°ª¯±·ÅÍÝáÞÞçíçï€ñ‚òƒó€ô‰õ‡öôÈ8 †Çâçèçè€é€ê2çvÒØÚáÞâÝàâÞÞÛàáâÞÜâáààáãáããäææçáÜÞàÜÓ×ÙØÝáäçááòèîðñ‚ò„óô‹õ‚öí¶,S©Ðéçèè€é€ê3ëëìèŸÕÚÚßßãÞàãßàÞÝäêèÞàãààãâååâåææèãââçèàâåÞáäãçæÜëï€ð‚ñ‚ò„ó‚ôõÕ_‘‡Âáéé€êéëëì/éÒëáØÞààâßãáàèëòùøííæáâäãçåãåææéæââçêäâæãâääèäæâð‚ñ„ò„óô„õôƒõíª3’y«Öëêêë€ì1íîìæñôóôõôöõõöôòêêçææìôóáããçææäèæéçãåäëéáææâäæèâîß‚ðƒñƒò„ó„ôõõôôƒõäa’¡Õëëìëìí€îïììíëéë‚ìëêéê€èåáòòâãåèååéèèêæääêêååèâååæßàÙƒðƒñƒò„ó„ôõô„õàW”y¸ßíì ííîîïïððññ€òƒó„òñçëèáàèçèæéèêçåæçëéãèæãçãìãÖ„ðƒñƒò…ó„ôƒõë“” #«Òëììíîîíïïð€ñ€ò„ó„ò€ñêêÜÞæèççéèêêçåèíìãèèãçàåÝÖì„ðƒñ„ò…óƒôõòÕf•o»äîïððñòò…ó„ò‚ñðÛÚáèêéìçæééîèåéåæÞ»ÛÝì„ð„ñ…ò†ó„ôë¥'– *•Íìîïððñðññòò†óƒò„ñðñÕÞèêèé‚ê çëïìçëêãà±y¾Ê„ð…ñ†ò…ó‚ôíÇa—EÒðð‚ñòò…ó…ò„ñðïáÝçééêëíëíèèëîïèéìåäÌŸ´Óëƒð…ñ…ò‚óòó€ôÒg™y¼è€ñ€ò†ó„ò…ñ€ðïÜæëëèììíîìëéîðëéíèåá»ynªã„ð†ñ…ò‡óí¦*š Ôñ€òóóòò‚ó…ò…ñðíÙåíëëìíîîïêëìðîêëëééÞ½‚Zo²„ð†ñ…òñò„óÛ` ›aµäñòóòó…ò…ñƒðìæëíìëîîïðííìðñìëíêëìãÇ™s²Ü„ð…ñ„òññòƒóæ¥)œ ^¸å…ó‡ò„ñ„ðëçéðìíîïðñðìíïòïìîëëîëéÖ¨c­Ìîƒð†ñ†ò€óòä©JuÀñƒó†ò†ñ…ðßçïïíîïðñðïîîóòëîîêîîðì×¥ƒbŒÄƒð†ñˆòî¸J Ÿˆæòó†ò†ñ†ðìííðîîððñòðíðòóïîïíîïððìÙ§m|Áìî‚ð†ñ‡òât¡ «áñóó†ò‡ñ†ð ííéðñîïññòñïïñôòìðîîñïñïéÙÈ”—’°Ûîð‡ñ„òâ•)¢2¨áñ…ò‰ñ‡ðëóøù€ø€ùø÷€ù€ø ÷øøùøø÷õéоµºàð‡ñƒòâš2¤+§ä…òˆñˆðíáñóóò€óô€óôõóòóòò€óòòñïëçÜÝуðññðƒñòæ™4¦°ãñ‚òñðð„ñŠðïíŽìëˆìíƒðñðïð„ñòð(¨eÊèñ€ò€ñð„ñŠð—ï‹ðï…ñíÖ9©Éáð„ñðð€ñ‹ð˜ï‡ðïïð…ñåÆz«k°Þï„ñï‹ðœï„ðïðïððƒñðã–F®Q­Øî„ñðïï†ðžï„ðïð‚ñïß±]¬Øî„ñððïï„ðžïðïïƒðñîݘ)²_©Öæî‚ñ€ðïïƒð ïðï†ðñðèÔ—2µo´Ýî€ñ„ð€ïððŸïîˆðîàª[.¸@ªÛêî†ðïïðœïîïîïï†ðïêÞ¢=»=“Íâìï‡ðïïíî•ïîî„ïƒðïíä“B¼EŸÌçï‡ðïíí€ïî‹ïíî‡ïƒðèÉ–RÀXµàéï…ð…ïîííîîïîîííîŒïððïê߸R Ä7†Áßêƒð¤ïëÝÀ= Æ=s¼Ùáîðð£ïãÎÁ}BÊ'@’ÎâììžïíìæÇ’@*Ï M‘¯Ä€æí–ïîèæäȬ’2ÔM’’ªÛ€âëîïŒî êäâãØªŠV× frs’ÈÝ‹Þ ÝÜÇ„qqf/ Þ9ONOOMM†PMMA€ÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿ§ áÜÜÝÝÕÕÙÕÑÕÕ€ÙÕåâäááÝÛÛØ×ÖÔ××ÓÓ××ÜÙÙÖØØÜÝÛÛ›Û&mÂÊáãÞÙרØÔÛáÝÚØØÚÛÚÛÝáãåææçéçàÜÝààÝÖ¬¦ÔfØÙÞÛØÝÙÓÞÞÜØÛÞÝÜÜÝßâäæèëíðòôõ÷ò€îëãÞÞÝÚÃrÐHÌÛÚÛ×ÙÝâàÚÜÞÜÚ‚ÙÛÞáäæèëíïòôõ÷øùúú÷òòîçÞàÒ²CË»ÞÛÙØÖÝáãßÞÝÜÛÛÚƒÙÛÝáãæèëíðòôõ÷øù€ú ûûú÷õñäßÒÒ—ZÇÌÓÜרÞÞáäáÞÞÝÝÜÛÛÚƒÙÛÝàãæèëíðòôõ÷ùù€ú‚ûüüòæâÝέ?ÄÌÚØ×ÝâääâàßÞÞÝÝÜÛÛÚ€ÙØÕÖØÜàãåçêìîðóõ÷ùù€ú‚ûüöîçÚ½9ÁmÝÙÓÜ€å!ââáàßßÞÝÝÜÛÛÖÕÙÙØ××ÙÜßâåçêìïñôö÷øù€ú‚ûüüý÷ðàÐ|¾™ÖÜÒÖÞåäã€â ááàßÞÝÝØÚÛÚƒÙÚÝßâåçëíðòôöøùù€úû€ü‚ýþ÷èØÍu»ªÛ×ÜÝççääâ ááßÞßÛÝÝÜÛÛƒÙ ÚÜßâåçëíðòôöøù€ú‚ûüüƒýþýüõæÔœ¹fÕÖÛççæ€äãâ ßßÞßÞÝÝÜÛÛÚƒÙÛßâäçëíðòôöøùúúƒûüü†ýû÷ðß µfÍÕÕØãæåå€äãââàáàáßßÞÞÝÜÛÛÚƒÙÛÞâäçëíðòôöøùúúƒûüü†ýüýùóàµG³UÐÓÙ€åæ€åääãáâ áàßÞÞÝÝÜÛÚƒÙÛÞâäçëíðòõ÷øùúú‚û€ü…ýü€ýü÷íÙq²ËÕÖãç€æåã€â áàßßÞÞÝÝÛÛƒÙÛÞáäçëíðòõ÷ùùúú‚ûüüŒýùñ×>°ÈÑ×á傿åãåãääãâ ààßÞÞÝÝÛÛÚ‚Ù ÛÝáäçëíðòõ÷ùùúƒûüüýùòÒ­ÌÛÓÐâåæåæãäååääãã€â áàßßÞÝÝÜÛÚƒÙ Ýàäçëíðòõ÷ùùú‚ûüüƒýþˆýüóÖ¤K«ÓÖÝàä€åææäææ€å€äã€â áààßÞÞÝÜÛÚƒÙ Ýàäæëíðòõ÷ùúú‚ûüü‚ýþþŠýò߯&©ÉÏÝåæ‚åäã€æ€åääãâáàßßÞÝÝÛÚ€Ù È™š™ƒ†‡‰‰‹‹Œ€Ž•­ú€ûüü‚ýþŒýö梨ÉÑÐãæ‚åä䂿ååääãâ"áàßßÞÞÝÛÚ××€g;,14344535355:B4[xÖøúüýþŽý÷Ó‹¥$ËÑÖáæ„åƒæ€åääã€âáààßÞÞл§(+Kk›¡œš›€˜–  nJ3"V«àùýþþýó×–¤ÍÕÕãä†å‚æ€åääãâ&áàßΰv&'=Uq©ÂÄÅÃÁ·¾Á¾·¹µ¾Ãż­ ‚_>4}¦ÀþþýüðÖ’¢ÑÒØääˆå‚æ€åääã€â'áà°3I`y•¯¸ºËÌÈÊÅÁÀÅÁ¼ºº¾ÇÅÊÀ´­wS7RÆ÷üýûðÓ‡ UÒÔé‹å‚æ€å.ääãâáÕ®AKs’²½¾¼Ã¿ÃÎÇËÇÆ½Ãƽ¾¸½ÄÄÍÅÇÃÀ·³©“fPU¬ÞûŽýûñÈ?žˆÎÓØƒåä…傿€å/ääãÏ¿54Z§¹º¼ÅÁ¾À¾¾ÍÊÈÊÃÃÀǹº¸¿ÀÇÆËÇÇÀÀ½ÈÅ©W,zÍ÷ýüøÛªœÎרääåãäˆå€æ2ååääÐh?X‚¥ÁÇ¿¹ÆÅ½¾À½ÈÌÇËÇÿÃÀ¹½ºÀÅÄÍÇÇÁ¿¼ÃÑðŸwPËù‹ýüüûðÙªœUÓÛå€äååãâ‰åæ2ååÚk>f¤¸À¿È¾¾ÁǼÀ¿½ÀÌËËÈÁÁÀĺ¾¹ÄÀÈÇÇÊþ½ÁÎËÀ¿±’a‡Ëì‡ýƒüûï×Rš3ÖÒßå€ä傿3‡IIŠ»ÀÞÇÃÀ½ÆÆ¹¿À¹ËÈÈÌÆÀ¾Æ¾ºÀ¼ÀÅÇÊÇÇÀ½ÀÇÎÄÁÁ¸š\3 ¹û…ý„üúé³™§ÒÚãäãäŒå€æ5ÕhMš¾ÁÃÀÃÃÁƼ¿ÅŸ¿ÁºÆÊÈÌÈÁÀÁĹÀºÁÁÈÇÆËÀÀ¹ÅÍÇ¿ÆÀ¸˜rVLØôƒý†üô×n˜ ¬ÎÎÝãàââäããäŒå7æÓrb›¼ÁÄÅÀÀÄÀÆÀÀ¾ÅÀ¹ÃÀ½ÊÈÈÊǽ¿Å¼ºÀ½ÁÇÈÄÊÃÁ¶ÅÇϽÄÄÀ¹±{ Ð‚ý‡üûç½@– ˆÓÐÖáàßßáâãääŒå:ˆZO½¿¿ÅÇ¿ÀÅÀÄŹ½ÅĸÁĽÈÇÌËȺÁÃÀ·À¹ÆÃÊÄÆË¿À¼ÇÍžÆÀÆÃ¶™`¥Õüý‰üûòݘ •¹ÓÖãâà€ßÞàâ‚ä‡å:ÖvZ“½Ä¼ÀÇÅÀÁÀÁÃý¼Áľ¾Å½ÅÌÇÍÇÆ¼ÀÀ½½¿¾ÆÆÊÁÊÃÀ¹ÆÇμÄÄÁÄ¿³…P•ЉüûûúðÓ<•ÓÔÝåäâàà€ßáâã€ä†åÄo]®¹Ã¿€ÀÈÄ¿ÀÃÁÅÀ¹¿ÅÁ¼ÅÃÀÊÆÍËÆ¼Áù€½ÇÅÊÅÇÆ¾½ÀÇÌÀÃÆÀÆÅ¹­†M°‡üûúõä”ÄÑÖãèåäâáßàâãäƒå,Úf9~ÅÀÁÀÃÀ½ÇÃÀÄÁÃÇÀº¼ÄÃÀ¿Ä¾ÈÊÊÎÆÁ½Ä¹¾¼ÀÃÇÇËÄÇ€¾ ÆÇÇÁÄÀÅžÀ­ Ê„ü‚ûúúùïÅ“ ÊÏÝçéçæåãââà€ßáâ€äƒåÆ7ƒ·ÊÁÀÆÀÀ¿ÀÇýÀ€Ä,¾¹ÀǾÁÃÃÆÍÅÎËýÀÁº½½ÃÅÄÈÁÊÀ¿½ÀÈÊÀÇ¿ÀÇÀ½½¦„ÎÈûü‚ûúúùùõÞm’•ÌÎãìëééèååäâáàßßáâãääåCÊYv¾ÇÅÈ¿ÃÃÁÀ¼ÇþÀÄÃȽ¼¼Ç¿ÃÁÄ¿ÈÈÍÍÆÁ½Ä¹¾ºÃÁÆÅÇÅǼ¿ÀÆÈÆÄÀÀÅÀ½¾¸„ÆÔ÷üüûúú‚ùì™’[´ÎÓçîíëëéèçæåãâáßßàáâääååÈs]žÀÊÅËÀÀÆÀĺÃÇÀ½ÆÃÆÀººÃƼÃÇÀÇÊÊÎÈÀÀÁ¿¹½ÀÄÅÅÇÃ˺À¿ÀÊÇÁÆ¿ÃÅ¿½¾ ft¨ïû€úùøøðÃB‘ÌÌÝîïîíìêêéèçæäãâàßßáâäåä¾e•½ÁÌ€Ç9¾ÄÅÀ¾ÀÆÀ¾ÀÄÇÆº½ÀľÄÅÅÀÍÊÏÌÄüÁ¹½½ÃÁÅÆÄÆÀÀ½ÁÆÊÀǾÃǾ¾½¹šeÁ²€ûúúùùøù€ø÷öâ‰]ÌÖèòñðïîííìëêéçæäãâàßàáãØ–ºÃÀÅÊÇȾÀÄÀÀºÆÇ½¾ÆÃÇú¹ÅƽÄÈ¿ÈÈÎÌʾÀÁ¼¶À¿ÀÀÆÅÄÃÀ¿ÀÁËÅÃÿÆÃ¾¿À¸šgÄû€ú€ù€ø÷íÁ=^ÂÌÝðóòòñðïïííëëéèçæäâáàßàÉi ¿¾ÀÅÊÇÈÁ½ÁÅÀ¹ÃÇÀ¿ÁÅÇÆ¹ºÃžÄÇÁÆÊËÍÈÃÿ½¹¼½ÀÀÆÄÀǿýÁÆËÀļÇùÁ½¿¬}¼úúùøø‚÷öòÚXÐÎßòôôóòòñððïííëëéèçæäâáßÇw€¾%Å¿ËÆÊǺÃľ½¾ÆÄÀ¾ÅÅÇÀ¸½ÅÁ¿ÆÅÂÌÅÏËȽÀÀ¼³ÀÅÃÄÀÀ½ÃÃÍÁÀÀÄÄ¿¿À¿¸š Ñùù€ø÷ööõõô㇎`Î×ìööõôôóóòòñððîíìëééçåäÞb”Ž¿À¿ÊÊÈÊ¿ÀÀÆÁ¶ÈžÁÁÅËø¼ÄÈÁÅžÉÈÏÍÈÃÄø»½¾ÅÄÅÂÁĽżůÈÁÁ½ÇÀ¹Å¾¾²°ÙËøø÷õöõõ€ôî¾xËÙð÷WöõôôóòòñððïíìëêèæâRžÀÁ½¿ÆÃËÆÌüÃÉĹįž¿ÅÉɽ¹ÂÅÂÁÃÁÄÌÇÐÊÇÂĽ½ºÃ¿ÅÂÅÃĿľÂÄÌÄÿÃÅ¿ÃÀ¿¹¥ËÙ÷öö€õôóϽÍÜòùùø€÷6ööõôôóòòñðïíìëéžo²¿Â¹¾Å¾ËÊËÆ¼ÂÄÈÁÀÊÈ»ÂÄÅɹ³±Ã··¹»¹ÅÃÏÎǀϼÀ¾Ç€Ä#ÅÂÁÃÁÅÊÅÆ¿ÂȾ¾¿À»Š·ÑæööõõôôóôôóóòòØAÀÒçõùøø€÷öõ€ô%óññðïíìoŒ¾¸Å¾»ÃÄÉËÇÌÁ¾ÄÉǺÉÉÁ¿¿¼À½º·ÈÅ€Â%¹¿¾ÅËÌÈÁÈ»¿ÀÁÂÆÃÊÄÄÁÂÂÅÈËÇÁÅÅÃÁÂÁ»¢¾Ë߀õ€ôóòòñ呌»Öðû€úù€øR÷÷öõôôóòñðïӶżÅÁ½¾ÄÇÌÌÏÆ¿ÆÈÌÀÃÉű·ÀÌÍûÅÎÀÈÇÆÄÌÃÄÅÆÈÂÇ»ÀÃÂÈÅÃÃÌÁÆÂÃÉÌÄʾÅÊÁ¾Â¾´vÃÙ‚ôóó„ò´‹ »Õðû€ú‚ùaø÷÷ööõôôòò¼ÂȽÅÁ¾ÅÉÌÎÌÎÀÂÈÌÄ¿¿½¸ÃÅÈÏÈÃ½ÌÆÆÈÇÃÌÍÒþÄÃÈ¿¾ÄÃÅÈÂÆÈÅÃÂÆÆÌÇÈÁÆÉÃÁÂ÷ŒËµñôóóòòññòòññðñ¹ ‹›ÀÖð†ûúú€ùø€÷:öõôô¢ÇÇ¿ÈÁÀÅÇÌÍÌÒÅÃÇÌȵ¼ÆÄ¿ÈÇÏÍþÉËÂÉÉÅÇÌÑËÄºÄÆÃºÄÃÆÇÈÃÇÈÄ€ÅÌÌÂÆÂÌȿ¼¥ÐÆñ‚òñðñðñ‹®Éáô‰ûúú€ù3øø÷÷ö…ªÇÉÅÂÅÃÃÆÈÍËÏÎÀÇ̽¸ÂËÇÃÅÇÌÎÆÀÅÎÂËÊÆÆÏÍÎÎżÁÄÀ½€ÆÉÃÈÃÆÈÌÅÇÃÈÌÂÃÀÁ§ÓÇðòòññ†ðÖs Š«ÏîŽûúú€ù7効ÀÉÇÃÇÃÆÉÅÎÌÎÑÃÆÁ»Ç¿ÌÊÄÅÈÆÎÌÁÂÌÊÆÍÊÈÌËÑÎм¸ÃÁ¼ÈÆÇÇÆÅÇÉÆ ÍÈÄÆÄÎÇ¿ÅÀ¨ÓÇïŠðë Š¥Îî‘û(úá·¾ÈÈÃÆÃÇÆÇÎÌÍÑËÁ¶ÈËÃÈËÅÆÅÉÍÎÂÂÊÎÅÍÌÅÌÐÉ»»ÁÁÃÆÉÉÈÄÆËÆËÄÉËÌÅÆÃÌËÃÇêÑÈîŠð랊 Ìî‘û8ð¾p•¿¾ÆÍÆÇÆÅÈÌÉÍËÓÍ»ÀËÍÇÂÎÌÃÆÊËÎÉÁÈÏÉÌÌÊÊÓËÒÑÎôÁÁ¿ÊÈÊÅÆÈ€ÊÄÈÊÍÇÇÅÅÑÆÃêÐÇíƒðïï€ðññ꜊žÊî‘ûK×tÈÄ¿ÃËÈÈÊÂÊÊÈÏÏÎÍ´ÇÇÓËÁËÎÃÌÈÌÏǹ¾ÍÌÌÐÌÌÏÏÒÒÐ̾·ÁÃÈÈËÈÇÇÊËÉÊÅËÍËÊÄÆÐÉÀÂ«ÑÆíƒðïï‚ð蘊žÉíûLÏ_iÅÊȽÌÌÄËÇÇÉËÌÐËȺÉÌÍÒÅÅÐÌÅÌ´…yjk†°´ÍÎÌÎÒÎÒÒÍİÂÁÅÍÌËÈÊÈËÊÊÇÉËÎÉÆÉÉÍÄÂ«ÑÆí„ðï‚ð畊›Èíƒú‡ûOõšœd`ÊÍÉÄÀÉÌÇÇÉÇÉÌËÐÍ»ÈÉÌÌÒÌÄÎδ¢{b44\{…¬ËÍÌÒÏÒÒÎÌ´½ÁÄÌÌÍÌÉÆÌÌÎÈÇËÌËËÄÊÐÅÀªÒÅîƒðîîïîå“ Š—Æìùù‡úûë[Hg«ÅÊÍÌÇÃÁÎËÃÎÈÈÌÎÍ˷ЀÉÐÐÆËǘr‚'.‘œÍÐÌÐÑÔÑÑζ¹ÅÂËÏÍÍÉÈÌÌÏÉÌÌÎÎËÆÊËËÁªÑÄí‚ïîíã Š—Æì…ùúù‚ú"Ôwu¶½ÊÊÈÓÌËÅÁÌÌÇÌÉÌÌÍÍ»ÑÐÉËÎÒÊÇÀ™„&:—¤ÇÏÎÔÔÐÓϱÄÄÈÍÎÍÏÆÈÎÍÏÉÈÎÎÉÌÅÎÎÁªÐÅì€î„í€ì⎠Š˜ÅëŠù#íÅSD´ËÐÌÌÈÎÏÎÅÄÉÎÍÇÌËËÎ̾½ÒÕÉÍÎÏÒÆ³†%¤»ÏÏÓÓÕÐÓūůÃÏÎÎÏÆÉËÏÎÉÉÌÏÍÌÇÌÎÄÁÔÃë€í‡ìá Š•ÅëŠù#óБÆÎÒÏÍÉÌÑÎÉÆÇÏÌÉÍÉÍÎ˽»ÒÔÎÎÉÓÓǦ}†™°¿ÐÐÑÒÖÑÓ˳ÀÆÃÍ€ÏÍÆËÏÏÎÉÌÐÏËËÇÐÒäÓËêƒëêê‚ëàŠ Š™Ãê‚ø†ù"àèñÕÎÓÐÎÌÉÑÎÐÇÇÍÎËÍÍÎÌ˺»ÓÕÕÊÌÎÓͪ˜†¢²¼ÏÐÎÖÒÖÓέ¼ËÊÅÎÑÐÎÊË€Ï ÊÍÍÒÍËÐØòÙÖß„êéé‚êà‹ Š™Äê‹ø"ôçááÔÒÓÍÎÈÏÑÏÊÇÊÏËÍÍËÐ͸¼ÓÖÖÎÎËÕѲ´†$ʽÒÑÑÕÑØÕϯÀËËÄÎÐÒÎÌÊÍÐÑÌÌØæãâðíâÙÜè„éèç‚éߊ Š™ÄéŒ÷"öàíÙÐÔÏÐËÎÐÏÏÉÈÐÌÌÍËÑÍ»·ÒÓÖÒËÌÔÓ¸»q„$ÌÅ»ÆÒÐÒÓÔÕÕ̲ÂÊËÉËÐÑÐÍÌÍÑäíìóóîçãÝáäæ…çæå‚çÞŠ Š“Äé÷öö‡÷"ó´ËÑÑÔÏÏËÐÒÐÊÉÍÐÌÏÌÏÏÁ¯ÐÒÙÒÍÑÐÕǵƪ‚ŸÂÀÄÐÒÐÓÒØÑØÃ³ÇÌÐÉÆÑ€Ò ÐôôðäáÝßààáâ凿äã‚æÝŠ Š“Äè÷öö÷õˆö*ò™¥ÏÓÔÒÒËÐÑÐÎËËÒÌËÑÏÏÄ­ÊÕÔØÑÎÐÕÒÅÁÊÃÆÌ¿ÍÍü€ÒÓÓÑÖÖØ½¹ÑÌÎÍÌÏÜáìóé€ÝÞáãã‚äåä„åää‚åÝ‹ Š–ÃèööŠõBáÇ—ÓÏÓÖÕÐÎÍÔÑÑÌËÒÑÍÔÐÏÇ®¾ÖÓÚÒÏÐÓ×ÑÏÆÇÅÌÌÎÇÁËÐÕÓÕÕÒÒØÒ¨ÃÓÎÏÐÔæòìåÝÛÞ‡âããâ€ãˆäÞŽ Š”ÄèŒô@Ðn™ÒÔÒÔÕÒÒËÕÒÑÐÌÏÒÐÑÑÒÍ»­ÒÓÙÙÏÐÓÖÖÎÑÇÃÈÇÊÎÏÏÐÖÐØÓÔÐÙǯËÔÒÌññçàÛÜÛßàà†á‹âÞŒ Š ¸äóôó†ô>ÄÞÂÐÖÒÓÖÓÑÎÐÔÔÏÑÍÓÒÏÒÐÑǧÈÕ×ÚÐÐÓÖØÐÑÔÎÏÕÓ×ÔÏÎÕÔÔÕÕÔÓ²¼ÑÚÝîêÛÖØÚ€Ý€Þƒß‚à€á€âáß‚âá× ‹›Çèôóôô„ó>ÊàÐÔÓÕÒÕÔÒÏÏÕÒÒÐÏÒÒÐÑÑÓϸ¤Î×Ú×ÏÏØØÕÒÕÒÑÕÓØ×ÎÑÓÖÑØÕÒ²ªËØíõáØÖÙÛÛÜ݀އ߀àÞáâà•Œ™Äçƒó†ò9Ê»ÒÒØÓÕØÒÑÎÓÕÓÑÏÐÔÑÑÔÔÑÊ«±ÓÚÚÏÓÔÚØÒÔÖÒÓ×Õ×ÔÐÒ×Ó×ÖâÀÒíïàÖÕ€ÙÚÚۀ܂݅ޅßàᓌ›Åçó‰òÍiV´Ñ€Ô6ÕØÒÒÍÒÖÕÓÐÐÕÐÒÕÓÖÒ¾ªºØÜÖÓÐÝÙÓÕ×ÐÓÖÕØÖÑÒÖØÒÖ£µÐëêÛÓÕÖרØÙÚÚÛÜÜ…ÝÞÝ€Þ€ß㙌|Ãäñòð„ò;ÉÚ¨¿ÐÔÒØÕ××ÒÑÐÖÕ×ÐÑÕÔÒÔÔÖÔι ²ÛØÓÕÖÜÖÓÖÕÑÕÖ×ÖÕÑÕ×Í¥¯Îèæ×ÑÔÔÕ€ÖרƒÙÚÛÜ„ÝÙÝÞßÛ‘¯Îé‰òÙÏèÒÑÓÖÖ×ÖØÔÖÐÓ×ÖÓÒÔ×ÓÔÔÖØÕÌÄ£©Ð€ÕÜÛÓÖ×ÑÕÕ×Ú×ÑϹ¢­Ìêç×ÐÓÔÕÖÖ×ØØƒÙڂۀ܄݂Þ³8ާÇçòññòƒñ5ÞâÎÒÒÓÕØÖØÖÕÓÒÖ×ÖÔÑØÕÓÖÕ×ÖÖÓÅ«¨ºÅÔÛÜÕÕØÔÔÕ×ÛÔ¿ªžµÈëêØÐ€ÒÓÔÕ€Ö×ØØƒÙÚÚ„ÛÜÙÜÝÞߪŽ Æçò‡ñ4ïÂÔÑØ×ÖÖרÕÕÑ×רÔÔ×ÖÓÖÖ×ÙÖ×Õɵ¡š°ÅÛÙÒÙ×ÏÖѾ¨š¥¼Ï×éÝÐÐÒÓÓ€ÔÕÖ׀؃ـڃÛÜÝÝ«ŽJ¸Øîñð…ñï±ÒÐØÖØÖרÖ×ÒÕרÖÓÕ×ÖÕ€ØÙ€ØÓ˵¡˜›¨©´ª§›˜Ÿ®»ÊÑÜìàÐÐÑÑ‚ÒÓÓ€ÔÕÖ××ØØ…ÙÚÚÙÚÛÜÜÄqŽ@ªËêñð…ñ6îÔÓÕØØ×ÖØØÖÕÓÙÙÖÖÓÚ×ÕÙ×ÙÛØÙÛÛÜÒËÀ»´©£©©¯¼ÄÔÖÕÕàæÐÏÐÐÑуÒÓ€Ô€Õ€Ö××ØØ…ÙØÙÚÛݶ2 „Ææ‚ñðñƒòívÌÑÔÚÖÙÖØÙÖÖÓ×ÙÚÔÔÙÙØ×ØÚÙ€ÚÜÝÝÖÓÔÖÒËÍÐÎÔÖÚÝ×ÙíÓÏÐÑуҀӀÔÕՀր׀؀ÙØ×ÙÚÚÓ¥(S§Ñðñˆò/ížÎÓÓרÛÖ×ÛÖ×ÕÔÝäâÕ×ÛØØÙÙÛÛÙÛÜÜÝÙÙØÝÝרÛÕ×ÛÙÝÜÓäÏ€ÐÑуҀÓÔÕÕÖ××€ØÙØ„ÙÀW‘…Âæ‚òñƒò/îÑèÛÒרØÚÖÛÙØáçî÷öèèß×ÙÚÙÞÛÙÛÜÝÝÜØØÝàÚØÝÙØÚÙÝÚàÒÏÐÑфҀӀԀՂÖרØÕƒÙј0’yªÙ…òó.ñçðòññòòóòòóñîåæâáâéñðÖÙÙÝÜÜÚÝÜÞÝÙÝÚáß×ÝÝØÚÝÝØë‚ÏÐÑцÒÓÔ€Õ‚Ö×ÖÖØØÙÍV’ Õðòóò€ó€ô òðîéäæççææç éççåáÜïïÙÙÛÞÝÚßÝÝßÝÚÙßàÙÙÝØÙÙÛÕÙÍÏ‚ÐÑ„ÒÓÓÔÕ€ÖÔÖ×€ØÙÙÉM”u¸àòò‚óƒôõõöö÷öõôóòòñððíìâçä×ÖÞ€ÝÞÝàÜÙÛÜáÞØÝÛØÜØèØÊ‚ÏÐцÒÓƒÔ€ÕÔÕÖÖ€×ØÔƒ”#©Òï€óôôóôõõöö÷(öõôôóòòñðïîíìëãæÔÔÛÞÜÜßÝßßÜÚÝáàØÜÝØÜÔàÖÇ̓ÏЀцÒÓ„ÔÓÓƒÖ×À]•k¹åƒô€õööƒ÷öõôôóòòñðïííìëéèêÒÐÖÝàÝáÜÛßÞâÜÚÝÚÛÓ³ÑÉ̓ÏÐцҀӃÔÕÕ€Ö×Ó•$–*”Ìð€ô€õööƒ÷öõ€ô€ò#ððîííìëéèçæíÌÓÝàÜßààßÞÞÛßãàÛßÞ×Óªsµ²„σÐÑчҀÓÔÒÑÔÔ€ÕÖÒ°U—CÓô€õööõö‚÷öõôôóòòñððîíììëééçæååÚÒÛ€ÞàáßâÝÝßáâÜÝàÙØ¿†œ¦¹Ë‚τЀцҀÓЃÔÖ»Z™y»ëõöö„÷öõ€ôóòòñððîíììëéèçæåäâéÏÚààÝ€àâßßÝâãßÝàÜÙÔ°rh ÆƒÏƒÐшҀӀÔÕÑ•&šŸÕõ‚÷ö1õôôóóòòñðïîííìëêéçææåãâàËØáßßàáâáâÞßßãâÞÞßÜÝѳ{UeŸƒÏ„ÐÑ„Ò ÍÐÒÒÓÓÔÔÖÅV ›`´æö‚÷€õôôó€ò,ñðïîíììëêéèææåäâáââÖßáàßáââãáàßããßÞàÝÞß×½n¤ÂƒÏ„ÐÑ‚ÒÐÐÒÓÓÔÌ’%œ+ ^¹èö÷÷ööõôôóóòòññðïîíììëêéèçæåäãâáßÞØÜãààáâ€ãßàáåáßàÞÞàÞÜÊžXŸ´ÍÏ„ÐÑÒÑÑ„ÒÇ–DuÀô÷öõ€ô6óóòòñððïîíììëêéèçæåääâáàßßÑÙââáàááäãààáååÝááÝààãßËœ{]­€Ï…ЂшÒ£A Ÿ‡çôõ€ô óòòññððïîíììëêéèèæååäââàßÞÝããàãàà€ãåãàâäæáàáÞáâããßÍgv®ÍÎσÐцÒÓÉh¡ ªâóôóóòòñ€ð7ïîíììëêéèèææåäãâáßÞÞÝÚåÜããáâããåãââãæäßâàáãâãâÜÍ½ŠŠˆŸ¿ÍÏσÐÑ…ÒÓdž'¢2©âòñððïîííììëêééèææåäãâáßßÞÝÝÜãîóô€óô€óòóôôòóóò‚óòðåÍ»²¨Ã€ÏƒÐÑЀуÒŇ.¤+¦åòòñ€ðîí€ìëëééèçæååäââáßÞÞÝÜÛÚÔæèèæ€çè€æçèæäæå倿åäåâßÜÑ̸€ÏƒÐÎЀÑÒÑÆ…-¦"°âïððïîííëêëêêéèçæååäãâáßßÞÝÝÜÛÚØÖ€ÔÓÒÑÑ‚ÐÏ‚ÎÍÎ΅̀ςÐÌÍÐÑ€ÒÐz#¨eÆåïîîííììêêééèçææåäãâáàßÞ€ÝÛÛ€Ù×ÖÖÕ€ÔƒÒÑÐŒÏÐÌ€ÐÑÒз0©ŒÅÞ€íììëëêèççææåääââáßßÞÝÝÜÛÚÙÙØ×ÖÖÕ€ÔƒÒÑÑ€ÐÏÎ΃ЀÑʬe«'j®ÜëììëëêééåçååääãââàßÞÞÝÝÛÛÚÙÙØ×ÖÖÕÔÔÓƒÒÑÑЊÏÎÎÌ…ÐÑÄ€<® Q¬Õéëëêééççæ€ä ãââáßßÞÝÝÜÛÚ€ÙØ€ÖÕÔÔÓƒÒÑÑЉÏÎËÏÏ…ÐÁ|± \«Óèêééççææåä€â áàßÞÞÝÜÛÛÚ€ÙØ€ÖÕÔÔÓ„ÒÑЇÏÎÍÎÏ‚ÐÑÁ…%²]¥ÒàæèçææåääãáßàßßÞÝÝÜÛÛ€ÙØ×€ÖÕÔÔÓ„ÒÑÐ…ÏÎÌ΃πÐÏɼˆ-µn°ÖæçæååäãââáàÝÜÛÛÚ€ÙØ×ÖÖÕ€ÔÓ„ÒÑЂÏÎÏ̆πÐÃR,¸@¦ÔâäåäãââáàßßÝÜÝÚÛÚÙØ×ÖÖÕ€ÔÓ„ÒуÐÏÌÏÍΈÏÎÃŽ7»;ÇÙâã€âáàßÞÞÝÜÚÛÖØÙÙØ××ÖÖÕ€ÔÓ„ÒÑÑ€ÐÍÌÏΊÏÊ©ƒ;¼D™ÄÜââáàßßÞÝÝÜÛÚ€ÙÔÔ××ÕÔÔÓ€ÒÑÐÐÑÑÐỀЉÏÐË­†JÀ X­ÕÛáàßÞÞÝÜÛÛÚÙØ×ÖÓÏÐÑÒÒÓÒÑÐÏÌËÐÑтЇÏÐÎÄ¢J Ä 2€¸ÔÛßÞÝÝÜÛÛ‚Ù ××ÖÖÕÕÔÔÓÓ„ÒÑтЅÏÑÌÀ®p6Æ :k¯ÌÔÝÝÛÛÚ‚Ù ××ÖÖÕÕÔÔÓÓ„Ò€ÑЃÏÑIJ§l:Ê$<ŒÄÒÜÛÚÙØ××ÖÖÕ€ÔÓӄҀтЀÏÐȰ‚8# Ï Lˆ¥¹ÕÔÓØÙØ×€ÖÕ€ÔÓÓ„Ò€Ñ ÐÑÑÏËËʰž‚, Ô Iˆ‰ÌÒÐÍÔ××ÖÕÔÔÓÓ†Ò ÎÉÊÌ“}L× `kh†¹ÎÍÌÉÈÆÄ‚Ã ÄÆÈÉʱpbg_+ Þ 5KIGFCBƒABCFGH< €ÿÿÿÿÿÿÿÿÿŸÿÿÿÿÿ§«±±®®««¯«¯¯‚«å³²°±»À¾½»º¹ºº¶¶¹¹º¹¹¶·¶­€¬…ÛHª§¹·¶ÀÀÁÄÅÃÁ¼¸µ³²±ƒ¯ ­¬¬­°··µ²°°ª‹yÔfªº·»ÁÃÅÆÈÊÌÍÊÆÁ¼·´±¯­¬­­¬­­¬¯®­­±´´±°fÐm£³ºÁÀÂÆÌÍÏÑÓÔÔÑÊþ¸µ³°®­€®¯¯°¯®¬¨ª¨ª¯´±¬™PË ª²¸½¿¿ÀÃÆÌÔÖÖÕÓÌľº¶³°®­€®¯€°®¬©§§¦£¤ª­¬®ª‚KÇ £´¹½¿¼º¼¿ÈÌÐÕ€Ö€ÕÔÍÅ¿º·³°®­€®¯€°®¬©§§¥£¡  £§®°©‹/Ä ª¸¾½¸³±¶»ÁÆÊÎÓ€Ö€ÕÔÏÈÁ»·³°®€­¬®­®¯€°®«©§§¥£ žœœŸ¥®®š.ÁH®¹¾¹®¨ª®³¸¾ÄÈÌÒÖ×ÖÕØØÔÐɼ·´°®­€®¯°¯®­ª©§¦£¢ žœ›™——˜£«¡b¾™²¸½º°¢ £¦«±¶¼ÁÆËÐÔÛØÖ€ÕÑÊü¸´±®€­®¯°°¯­©§§¦£¢ žœš˜–““’•¢§ h»jº¿¿® ™™ ¤¨®³º¿ÅÊÐÓ€Ö€ÕÓÌý¹µ²®­€®¯°°¯¬ª¨§¤£ Ÿž›™—•“‘Ž–¥©¹f²¾¹ª–‘“–›ž¢¦«±¶½ÂÈÌÑÕÖÖ€ÕÓÍž¹µ²®­€®¯°°¯¬©¨§¥£Ÿž››˜–”“ŽŒ‹Œ’¡¥h µf°À¿¶¤–ŽŽ”™œ £§­³ºÀÅÊÏÓÖÖ€Õ ÔÏÆ¾ºµ²¯®­­®°°¯®¬©§¦¥¢ ž›š”•”’Œ‹‹Ž‘›¤œ?³U³»½²£š–‘ŽŽ’–šœ¡¦ª±·¼ÂÉÌÑ€Ö ÕÕÔÑÉÁº¶²¯®­­®°°¯®«¨§¦¤¢ žœ™–“ŽŒ‹‹ŒŽ’•šªª\²¯½»²¨¢ž™•Ž‘–› ¤§­´ºÀÆËÏÕÖÖ€Õ ÒÊÁ»·³¯®­­®°°¯®ª¨§¥£ Ÿ›˜–”‘Š‹‹Œ“•™Ÿ©¦)°«ºº³¬¨¤ ˜“Œ•™ž¡¥ª±·½ÄÊÎÓÖÖ€Õ Ó̼¸³¯®­­®€°­ª§§¥£ žœš—•“‘ŽŠŠˆŒŽ’•–™¡ª£­¥»¾º¶°®¬§£ œ”Ž“–›Ÿ£¨®´ºÁÇÌÑÖÖ€Õ ÓÎĽ¸³¯®­­€®"¯°°¯­ª§¦¤¢ žœ™–”“ŒŠ‰‹“•˜›ž¢¦®ª>«+¸¿¾¹¶µ±®ª§¢Ÿš•Ž“—¡¥ª±¶¾ÅÊÏÕÖÖÕÕÔÐÆ¾¹³±®­­€®#¯°°¯¬ª§¦¤¢ ›—•“‘ŽŒ‹ŠŒ’“—𡥩®±¯ ©)ª»¾¼½»¸µ±­©¤¡ž™“Ž‘–šž£¨®³¼ÂÈÌÓÖÖÕÕÔѲƒzdƒe€feiv¥¥£¡Ÿœš—•“€‹Ž’”“˜œ ¤¨­¯±²±€¨1ª»¼¾ÁÁ½»¸³°¬©¤ œ—‘ŽŽ“—œ ¥«±¸ÀÆËÑÖÖÔÑÑxa:*,36677676€7 3$?Pžœ™–“‘ŽŒ‹‹Œ“•—šž¢§«®°°±³£l¥0$ª»¾¾ÃÄÃÀ¾º·´±­¨¤ ›•Ž”™¢§­µ¼ÃÈϬ˜- /Qpª«ª«©ª¬©¬­ª™t:'>s‰“’ŒŠŒŽ’•—šž¡¥ª®‚°±¨v¤)ª¼½¾ÁÄÄÃÂÁ¾º·³±¬§£Ÿ™”ŽŽ’•› ¥ª±¸À²›m*+D]}»Ð€Ó#ÒÍÑÒÒÍÏÌÑÓÓ̼­iB+[jwŒ‹‹Œ“–™œ ¥©®¯ƒ°±ªo¢£¼À½ÀÄ)ÃÃÀ½º·³®ª§¢—’Ž“˜¢§®µm4Ni†¥ÀÌÏÙÙØÙÕÔÓÕÔ€ÒÓ×ÕÙÒÒǾ¢‚P17w‰‰ŒŽ‘•—›Ÿ£§¬¯ƒ°¯±³¦i U«¾¾À„ÄDÃÁ½º·²®ª¥ œ—Ž•›Ÿ£ ‡9H}£ÅÐÒÑÔÓÕÛØÙØ×ÒÔ×ÒÓÑÒÔÕÚÕØÕÓÌÄ´›i>6n“–™¡¦ª®„°¯¯°´/žf®½¾¿Ã…Ä"ÃÀ¼ºµ²®ª¥ œ•Ž’—ˆ'/]´ÌÏÒ×ÔÓÔÓÓÚØÙÙ€Ô×ÒÒÏÓÔØ×Ù××ÔÔÒÕÒ¸‹`.U}’˜œ ¥ª®…°€¯°¦ œ²¾¾½ÃÀÄÅÅ€Ä#ÃÃÀ¼¹µ±­©¤Ÿ˜“ŽŠF,J…·ÓØÔÑ×ÕÒÓÓÒØÚ×Ù×ÔÑÒÒÔÕ×Ú××ÔÓÒÕÛÓ«‚Q_‚™ž£§¬¯°¯¯°ƒ¯©€œU¸¿¾¿Ã€ÄÅŃÄ!ÃÀ¼¹µ±¬§£—‘‰D3hªÌÓÔØÒÓÔØÓÔÓÒÔÚÙÙØ€ÔÕÑÓÏÔÔÙ€ØÔÓÒÔÛÙÓÑÁŸdo‡—¦«®¯‚°„¯±±ªAš3¯¼½¿ÃŠÄ>ÃÀ¼¹µ±¬§¡›Y+:’ÌÓÕÕÓ×ÔÓÓ××ÏÓÔÒÙÙØÙ×ÔÓ×ÓÒÔÒÔÕ×ÙרÔÒÔ×ÛÕÔÔÌ©f4€¬¯°‡¯±®‹™·¾½‚ÃÅ‡Ä ÃÀ¼¸´°«¥•JA’ÏÔÕÔ×ÒÓÕÕÏÓÔÒ×ÙØÚØÔÏÔÒÔÔØØ×ÙÔÔÑ×Ú×Ô×Ó˦}V<™«°‡¯°¯¤V˜²¸¼ÁÃÄÄÃÆÄÿ¼¸³¯œSQªÏÔÔÕÔÔ×Ô×ÔÔÓÕÔÑÔÔÓ€ÙØ×ÒÓÕÒÒÔÒÔ×ÙÔÙÔÔÏ××ÛÓÕÕÓÌ­|…•°ˆ¯°«‘0–f¯º¼¿ÃÄÄ€Ã‡Ä Ã¿¼¸jEF˜ÎÓÓ××ÔÔ×ÔÕÕÑÒ×ÕÏÔÕÓØ×ÚÙØÑ€ÔÏÔÑ×ÔÙÕ×ÙÓÔÒØÚ×Ó×Ô×ÔÌ©c~–¯°‰¯®®ªz• ”¶½¾ÃÄÄÃÃÄÄ€ÃˆÄ Â¿­`U¥ÏÕÒÓ×ÕƒÔ*ÓÒÔÕÓÒ×ÒÕÚ×ÚØ×ÒÔÔÓÒÓÓØ×ØÔØÔÔÑרÛÒÕÕÔÕÓÅ“Ps”‰¯€®°£-•ª»¾ÂÆ€ÅÄĄÅÄâ]U²ÏÔÓ€ÔØÕÔ+ÕÓÑÓÕÔÒÕÔÔÙ×ÚÙ×ÒÔÕÒÒÓÒ×ÕÙÕØÕÓÓÔ×ÚÔÕ×Ô×ÕÏÀ“MŠˆ¯®¯¬q”˜²¼ÁÇÈÇ€ÆÄ„ÅĸX9ƒÒ‚ÔÓØÔÔÕÔÔ×ÔÒÒÕÔÔÓÕÓ€ÙÚ×ÕÓÕÑÓÒÔÔ××ÙÕØ€Ó ÕרÔÕÔÕÕÓÓÀŒ’ƒ¯…®¯±™“  ¶ÀÆÊÉÉÈÇÇÅÄĂÅĤ8ËØÔÔ×ÔÔÓÔØÔÒÔ€Õ,ÓÑÔØÓÔÕÔÕÚÕÛÙÕÓÔÔÑÒÒÔÕÕÙÔÙÔÔÓÔÙÙÓ×ÓÔØÔÒѶ‚¤®¯‡®©Y’r©·ÃËÌËÊÉÊÈÆÅÅÄ„ÃĨQ}ÏÕÕØÓÔÒØÕÓÔÕÔØ€Ò×€Ô&ÕÓÙØÚÚØÔÓÕÑÓÑÔÔ×ÕØÕ×ÒÓÔÕØ×ÕÔÔ×ÔÒÒË{™–¬€¯†®¯­x’‘²¼ÇÏÎÌÌËÊÉÈÇÆÅÅÄ„Ã#ħe]­ÔØÕÚÔÔÕÔÕÑÔ×ÔÒÕÔ×ÔÒÒÔ×ÒÔ×ÔØÙÙÛÙ€ÔÓÏÓÓÔÕ××ÔÙÑÔÓÔÙ×Ô×ÔÔÕÔÓÒ°qg„¥Š®­—6mª¶ÂÎÑÐÏÎÎÌÊÊÉÈÇÆÅńÞ_ŸÑÕÚ€×1ÓÔÕÔÓÔØÔÓÔ××ÕÑÒÔÕÓÔÕÕÔÛØÛÚÕÔÒÔÑÒÓÔÔרÕÕÔÔÓÔ×ÙÔØÓÕ×€ÓÌ©n›„Š®¯ªku¯½ÊÕÔÓÑÑÐÎÍÌÊÊÉÈÇÅÅÄÃC´|ÎÔÔ×ÙרÓÔÕÔÔÒרÓÓ×ÕØÔÑÑÕ×ÓÕØÔÙØÚÚÙÓÔÔÒÎÔÓÔÔ×ÕÕÔÔÓÔÔÙÕÔÔÓ×ÔÓÓÔ˧iš‹®­™1\œ±ÁÑØÖÖÓÔÒÐÏÎÌÌÊÊÈÈÆÅÄÄÃéf«ÓÓÔ×Ù×ÙÔÒÔÕÔÑÕ×ÔÓÔר×ÑÑÔÕÓÕ×ÔרÙÚÙÔÔÓÓÏÒÓÔÔ×ÕÔ×ÓÔÓÔ×ÙÔÕÒØÔÑÔÒÓ¿†•‹®¯§GC«·ÅÕÚÙØÖÖÔÓÒÑÏÎÌËÊÉÈÇÅÅÄĨ}ÍÓÓ×ÔÙ××ÕÏÔÔÒÑÒÕÔÒÏÔÓÔÒÍÏÔÒÏÓÒÑÔÓ×ÓÔÎÒÑÎËÑÓÓÔÓÓÒÔÔØÓÓÒÔÕÓÔÔÓ̧ƒ–‹®ªlެ½ÍÙÚVÛØÖÔÓÒÑÏÎÌËÊÉÈÇÅÀ]ŸÔÓÔÔÒ××ÔÕÏÏÑÓÐËÓÑÏÍÌÒÑÍÉËÍÏËÍÏËÐÏÓÑÏÌÍÌÈÉËÌÐÏÐÐÏÑÍÒÍÓÔÔÒÓÒÕÔÏÕÒÒ£±‘ƒ®­„®™\­ÀÑ„ÚÙØÖÕÓÒÑÏÎÌËÊÉÈÃT°ÒÒÏÏÔÓ%ÐÌÏÐÌÉÌÍÌÉÉËÌÌÅÃÈÉÇÇÈÇÈËËÎËËÈÉÅÅÄÉÉÌËÍ€ÌÍËÍÑÓÑÑÐÒÓÑÓÑÒˤ±žŠ®±Ÿ—³ÃÓÚÞÚ"ÙØ×ÖÔÒÑÏÎÌËÊ„tÆÑÑÌÏÑÌÑÐÏÌÉÊÊËÇÈËÊÂÅ€Ç ¼¸·¾¹º¼»»ÂÃÊÊÈ€ÅÁÂÄÄÈÈÉÉÊÉÈÊÊÌÏÍÐÌÌÒÏÍÐÏË”¡£ƒ®­ƒ®¢3Ÿ¹ÉÖÚ݃ÚÙØ×ÖÓÓÑÏÎÌ`”ÊÉÍÊÈËÊÌËÉËÅÄ€Ç ÀÈÇ¿½¹¼¹ººÂÁÀÀ¿¸ºº¾ÃÃÂÀ¾ÀÀÁÂÅÄÇÄÅÈÊËÊÈ€ÌËÌÌÉ«ª­¡ƒ®­‚®­«wŒœºÏÙ‹ÚÙØÖÕÓÑÏ¡»ËÅÊÇÄÄÇÇÉÇÉÅ¿€Â#¾¿Â¾±²¹¿Â¼º¼Ã¹¾½½º¿··¸¼¾»¾»»¾¾Á¿ÀÀ¾€ÂÆÇÄÉÄÈËǀȹz¢ž­‰®² ‹ ›¼ÏØ€ÚÞÛˆÚ?ÙØ×ÕÓŸÀÉÅÃÅÃÁÂÂÅÆÅÅ»»¿À¼¸·²³¹º¼À¼¹·¾¹¹º¹¸½¾¿´°·¹¼¸¹º¹º¾»¼¿¼¾¼ÀÁÀ ÅÇÄÄÅǼ‘ª¬ƒ®­‚®±Œ‹¦¼ÏרØÙÞŒÚJØ×~¡Åÿÿ¼À¾ÁÂÀü¹¹¼¹¬­··´¸·ººµ²·¸µ··¶¶¸¼·±ª³¶¶´·¶¸¹¹¸¹º¹ºº¼ÁÁ¾À¾Ã¾Â¿¥µ¢¬ƒ®­‚®¯‘‹•±ÁÏÖրר€ÙŠÚ5wªÁ¿¼¼º¹º½¾¼¾½µ·¹­ª²·µ³´µ¶·³¯°µ¯´´²³·µ·¶®©­³°¯µµ¶·µ··€¸¹º¼º¾º¾À»¿¾¿¦µ¡¬Š®¢\ Š“µÇÒÓÓÔÔÕ€Ö×€ØÙ…ÚIÅ€´¹¿¼¹¹··¸¶»·¸¸²³­¦°­³²­°°®³²­¬±®­±°­±°³³´¦ ­­«°¯³³²³´µ´µ¶¶¹¹¸¹¸¾º¹¾º¢³¡¬Š®°€Š³ÇÑÑÒÒÔÓÓÔÔÕÖÖ×€ØÙÚJÀpy¯·¹¹¶¶³µ´´µ³³µ²ªŸ«°«­°¬¬ª¬­®©©«­ª­­©¬­®®­¬žŸ©ª«­®®°­°²°²¯³µ¶µµ´¸¹·¹¶Ÿ°Ÿ¬ƒ®­­‚®¯| Š ‰¯ÅÏÏÐÑÔÒÑÒÒ€ÓÔÕÖÖ×€ØK˘hŠ´²¶·³´²¯±²®±®±­Ÿ£­­©¦­ª¦¨¨©ª¨£§ª§©©§¨­©««ª£˜¢¥¥«ª«ª««­®®­°±³²°°³¸µµ´ž®ž¬ƒ®­­®­¬x Š ‡­ÃÌÌÍÎÐÐÏÐЀÑEÒÒÓÓÔÕÕÖ´j³°®¯²°­®«­¬ª­­«ª–¥¦ª¦¢¦¨¡¤¢£¤¢˜›¢££¥££¥¥ªª¦¤œ—Ÿ¢¥¥§§¦§©©ªª©€­ ®¬®´²®¯š¬›¬ƒ®­¬­¬©r ŠƒªÁ€ÊËÍ€ÌÍÎ΀ÏÐ€Ñ Ò©T^®±°­©®­ª¬©€¨<©©¦ —£¤¥¦Ÿ ¤¢žŸf_WVfˆŒŸ  ¢¥¢¤¤¢žŽ›ž ¥£¥¢££§¦§§¨ª­ª©­­°¬­˜ªš¬®€­ƒ¬¨o Šƒ¨¿ÈÉɀʀËÌÌÍÎÉ|SS~­°­ª¦ªª€§¥;¦£• ŸŸ¤ŸœŸŸŽ{\E" BZf…›œ Ÿ  ž”šŸŸ¢¢  £¤¦££§©¨©§ª­ª¨•©š«Š¬¦k Š¥¼ÅÆÆÇ‚ÈÉ€Ê"¼M=X“ª¬­«§£¢§¥¡¥ Ÿ¢¢ œŽŸœœŸ˜›—rR‚"gs™›ššœ›Œ‹–˜œŸœŸžŸ¢Ÿ ¢¥¦¥£¦©ª¢¥—«†¬«€¬¥hŠ}£¸€ÂƒÃÄÄŦ`b˜ž©©¨ª¨¥ Ÿ££ŸŸ€žŸœ”›œ™˜™›––l „&jw’—–˜™˜™˜ƒ““–šš›œ˜šœœž ¢ ¢ §¨ž‹¢–ª€¬ƒ«€ª«£dŠ{¢¶€¿€ÀƒÁ·“@7•©ª¨¦¥¥¤£ŸŸ›œ›šœ˜‹‹››”•€–_†ds…““””–•–}—€˜–˜™››šœœŸ ¢–¢“©ƒª©©‚ª¢dŠyŸ³€¼€½„¾#ºšawŸ§¨¦¥  £Ÿ›šœš˜™—˜˜“‰†–˜“’””ŒtU†Qyƒ€’”‘“~ˆ’“•–•“•˜š‚œŸ¡ª¢—©ª†©¡dŠxœ±€¹ƒº‚»"ª­±ª¤¦£ žœŸœœ—–˜˜••“”’‚„“”‘ŒŒŽ‹sb† \x}‹ŒŒŒŽŠw‚€‹ ’”••”–—€™œ¡°¢ ¡„©¨¨€©¨¨¡cŠxš®ƒ¶…·"µ«ª©¤ ¢œ™››˜–“”•’’‘Ž~€‹‹‡ŽŠwp†rx{€ˆŠŠŽŒˆtˆˆ‡ŒŒŽŒŽ‘’”’’œ¦¥¤®¬¥Ÿ §„¨§§‚¨¢fŠx𬳲²†³²£¬£ŸŸ›š€—••’Ž‹ŽŠ~x‹Œˆ‡†ˆ‡xu„fzw~†…†‡ˆ‰‰‚q…‡…‡Š‚‹ Ž¡ªª¯¯«§¤ £¤¦…§¦¥‚§¢fŠv™«±€°„¯‚®"¬}–š››—•“””’Ž‹ŒŒ‹‹ˆˆ‡}q†‡Š‡‚ƒ‚†}rwq‚#_wvw‚‚‚†‚…xp}‚ƒ‚‚‡‡ˆŠŒ®®ªŸœ›ž ¡¢£¦‡§¥¥‚§¢hŠv™ª­€¬«¬««‚ª+¨fs—––””Ž‹ˆ‡‹‡†‡…ƒ{l~…ƒ…€€‚€wrzwcf_z|qp|‚}€€‚qq}~‚‘–¤¬£™š›Ÿ£¥¥‹¦¥¦‚§¤kŠvšª«€¨ˆ§/›‰d“•”“‘ŽŒ‹Ž‹Š‡…‡†‚ƒ‚€|kt‚€‚}{|}}{zsqx‚{spovx{z{€z}zar}{|}‰ª£—šŸ‘¥„¦¥lŠs™ªª€§…¦€¥•Jh’“Œ‹‡‹‡‡ƒ€‚€€~|og|€}xx€z vvqnpoqrtuvwvz€w|qduz{w¦ªœ“•›Ÿ££¤—¥¦mŠ ª§€¦¥¤¦…¥†Ÿ†ŽŒŒŠ‡…ƒ†ƒ€}€~|}{zr`qxxz€u vwrttqqtrutqqƒt sags{„£ŒšŸ‡£¤‰¥¤£‚¥¤¡e‹w’Ÿ¥£†¥!‰šŠŽŒŒˆŠˆ…‚ƒ€~}{}{yzxxtf\quwvrqtu€qpnpoqqnooqnrqq_Zluœ«™¡¢‹£ƒ¤¥¤£‚¥¤m Œt‘¡‰¥€¤Š|‡‡Š††…‚€}~~}z€x'wvvusn\^ottnooqpllnkkllonkklkooeTfnš¡‘•œ€ €¡¢£…¤¦nŒx”£¦¥„¤;£ŒG7t†‡†ƒ‚ƒ~~z{|{xwuwsrrqqncWaoqlkiolijkghiijiggijhiQZi–“Ž˜ž„ €¡ƒ¢‰£¢ƒ£¨vŒ[”¤¦€¥¤¡„£8‹œtx‚ƒƒ~}{zwxwvsqrqppnoli^NXkkhhikhfgfcffgffcfgbNTg’Šš€Ÿ† ¡¢‡£ „£sƒ• €¤†£’‹ ƒ€€}{|xxstvtppoplkie_OQd€fgfbcf_bbcdc`_UKP_’އ˜€žŸ† ‚¡€¢Ž£…,Ž~‘¡£¢¡„£ •—€}}{|zxwtr€qplkl€ihigfc\NMVZadd``a^€_ b_UKFR[‘’}‘œž€Ÿ… ƒ¡„¢£¡¢‚£¥€ Žx•¤‚£¢„£¢¡{€z|zwwuuqpmpnljijh‚fccaZQFDMV`^[_]X]ZRGAFRZcŽzŠ›œžŸ† „¡„¢£¤ˆ Ž:‰›‚£¢¢£ƒ¢¡q}€w vtqqoojjkkh€fcbcbaa__^[VLE@AFFKEDA>AHLSVe“‚Œ‚œžŸ† …¡ ¡‚¢£“[Ž.}“‚£¡¡‚¢¡¡ŸZ{€urqoolkighgfcbca__€^\[[ZZURNKGCABBFJM€TUsŠš„œžŸ‰ €¡ ¡‚¢£Š'f”££¢…¡ Dsrqrpqlkkih€fda€_\€[ ZYZZWZWRQQRPL€M PQRTQX™‹™››„œ€žŸŠ Ÿƒ¡‚!<{–¤¢…¡€ žZoqnonnjiiffcbiyv\[\ZYYZWVTTSTT€P QQMMNLMNMQPT’™›„œ€ž‚Ÿ ¡¡B‘bŒž¢¡Ÿ¡‚ žŠ”z€kjj€fczŠ•«ªŠ†k€VTUSRR€QNLLNPMLMKKLLMLz}ƒ›„œžƒŸ„ Ÿƒ ›t'’Vz–£€¡… Ÿ™ ¤‚ €Ÿ —Љ‚}…ž™RQPMNMOMJKKMKHJJHIIJH“wƒ›†œ€ž„Ÿ Ÿƒ ¡™C“w𥂠Ÿƒ ž›–މˆ…„ƒ‚‚„‡‘‡{š—VMMOLKM€KHGGII€FD€FMqnƒ›†œ€‚ž„Ÿ€ žƒ ¡™=”V…£‰ …Ÿ€ž€œ›‚LJLJIHIFGFDEDECABBACAˆulƒ›‡œ€‚ž†Ÿƒ ¡žf”|—¢‚ ŸŸ ƒŸ‚ž€„œ””_€FEFFDDCBAABB>@@=?<~gr˜„›‡œ„žŸžžŸƒ ’J–O†¡¡ Ÿ€ ƒŸƒž€†œ¡tCCDECBC@A>==>@=;<;<8>h}˜…›‡œƒž…Ÿ  žs–m“¢‚ ž„Ÿžžƒ†œ››£Q?AA€?€= ;9;<;89866+(g…›‰œ‚žžƒŸœˆE—0o¢€ ŸŸŸ‚žˆœ››ž~=<;;9:7789:56745.&\m‡—„›‰œ€‚žœžžŸ ‹F™V‚ž „Ÿ‚žƒ†œ‚›¡@:<;8988754456424210(._‘…›‰œ„ž€Ÿœpšp”£‚Ÿœž‰œ‚› š^:88756434‚3 /00/0-'Cn…›ˆœ‚š›‚ž •C›F‚ž ŸŸ€žœžžŠœ‚›œ›M86423..-/0,,-+-.+'(k†›ˆœ››€ž™tœD™ƒž„ˆœ†›u;430€/.-+*+-*)**),*+(! j™„›‹œ„•s5R ‚žƒ‰œ…› œ…<30.-,,+*€(**&((&()+*(/.Y|„›‹œ‚œ{1Ÿ_ŸŸ€ž‚‹œ†›j..,*))((&$$%%#$$#%&')(%6u˜™‚›Œœ€ž˜P ¡x˜ž„Šœ‡› ™+,*(''%%#‚" €"$%€'%$P[rŒ™›œ•h£"t–ž‹œ‰›  ‰‡‡††……„„‚ƒ‚€ƒ„……†„~}yl‚›‹œ“g#¥q—€œ››…œ‹›y€p€omml€k lkkllmnnoop€qpmoƒ‚›€œ›š›…œ•e"¦z–ƒœšš„œ‹›™‡—–€—–‹—™ƒ›œ›™š†œ]©O‘œƒœšœ›€œ´›™†œ&©kŽ—…œššœœ±›™™†œ—‚P «M}–…œ™›š¯›šš™››„œ“b.®<|”…œš™š­›š˜ƒ›œ‘_±E}”„œ››š™š©›š™š„›€œ‘f²E{”˜›œ›š™š¥›š˜š†›š–g"µQ}”€œ…›™ššŸ›šš™‰›“k?!¸/z˜š‡›šš›™››™›™š‡›š™”n*».l˜šš‡›š›˜š•›™˜›šˆ›š›–f.¼3p‹˜Œ›˜˜››šƒ›€š€›—˜Œ›œ—ƒf9À@‚ššœ› ™—˜™šš››šš˜——šŽ›œš”}8Ä*dŠššœ¨›œ˜‘†Y*Æ.T‡”•œ¤›œ“‡U/ Ê,i˜›œž›œ—†e, Ï 8k}‰œ™—›œ”› œ›—˜™†wh" Ô 7jes–™–”™œ€›€š€›œ ™•–˜’obb= × KPMbŠ™—–“‘Ž‘’”–˜ˆTINJ" â)96522€/../€2468/ ÿÿÿÿÿÿÿÿÿ¢t8mk@+;;<<=============76MNO€§­®®¯¯¯¯¯¯¯¯¯¯¯¯®¥nSPG_ot¢ÄÇÇÚò÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷õçÎÉß|qQ!J|¿ÒÕç÷ùùùýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúùùñÝÔ¿—~<N²Ùâðúûüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüûùìݶx2 ?t´Þïùýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýûä¹”f%:…¯Ùñõùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüôà·t5p²×ðøýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøå´V LuÂîùýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþùÒ~'  ?wÄçñýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþðÀw'  U°äòüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýì­>  W²çùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ÷Â8 >’Åèùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþù×z  G©â÷üþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþó³/ @«ã÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ÷°% =¡ä÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþù§" (±äùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÅe% ÖðùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüåŒ! 9Áòüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþâ[ 9¢åúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýúõõõõõõõõõöûýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþµK E­çúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýûøñáßßßßßßßßßßßßàâéùûüüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÂX 9­çùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýú÷ïçÜÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÝßäêòùûþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÃR 2¨çùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþûòæàÜÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÛÜàæñ÷üþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù¼M  VÖûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýûèâÜÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÛßâë÷üüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ—0 Y»ìþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúïÞÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÝäìõüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ×r) Z¹êûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþøéÝÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÜàæðøüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÔo#  —êúþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúíãÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÜáíõüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÀ>   dÐöþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷äÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚàëõüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿï‹- )ŽíüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýöèÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚàçðùýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÇS& %~Ëõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ÷áÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÜßêôýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿî£?# jÂðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ÷ãÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚàîùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýáw/  0šãûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþöàÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÛãñúýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÉD)  iÅôþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþüäÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÜãòöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþêu1" 9“âúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøëÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÜäõüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûºA*N·õþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøåÛÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÞëôüÿÿÿÿÿÿÿÿÿÿÿÿÿÿþæi2& nËùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýìÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚäï÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷’=-! :Ÿéüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ßÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÞéó÷þÿÿÿÿÿÿÿÿÿÿÿÿÿýÅU5' yÆõþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýèÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚàéôûÿÿÿÿÿÿÿÿÿÿÿÿÿÿð‡<.  %çüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþïÛÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚàìõÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÃW6&  P¯ðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúåÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÜçõÿÿÿÿÿÿÿÿÿÿÿÿÿÿþäk=- „ÒöþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþïÜÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÚÙÙÙÚÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚàôüÿÿÿÿÿÿÿÿÿÿÿÿÿÿõG3$ ’æüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýéÙÙÙÙÙÙÙÙÙÙÙÙÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÙÙÙÙÙÙÙÙÙÙÙÙÜêòþÿÿÿÿÿÿÿÿÿÿÿÿÿýÃS:*  $êýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÞÙÙÙÙÙÙÚÚÚÚÚÚÚÚÚÚÚÚÚÚÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÙÙÙÙÙÙÚåíüÿÿÿÿÿÿÿÿÿÿÿÿÿÿØ^A/" Y½ñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþíÚÙÚÚÚÚÚÚÚÚÚÚÚÛÛÛÛÛÛÛÛÛÛÜÜÜÝÝÝÝÝÜÜÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÚÚÚÚÚÚÚÚÚÚÚÙÚãï÷þÿÿÿÿÿÿÿÿÿÿÿÿÿêqI5&  nÛùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüäÚÚÚÚÚÚÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÝÝÞÝÝÜÜÜÜÜÜÝÝÞÝÝÜÜÜÜÜÜÜÜÜÜÛÛÛÛÛÛÛÛÛÛÛÛÚÚÚÚÚÚÚàëîýÿÿÿÿÿÿÿÿÿÿÿÿÿù Q:+  räüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÞÚÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÝÝÞÝÜÜÜÜÝÝÝÝÝÝÝÝÞÞÞÝÝÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛÛÛÛÛÛÛÛÚÝçðüÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿[A1" xåüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüæÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÝÝÞßÞÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÞßÞÝÝÝÝÝÝÝÝÜÜÜÜÜÜÜÜÜÜÜÜÜÛÛÛÛÛÝäïõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉ`F6& @žëýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüëÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÞßÞÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞÞßàÞÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÜÜÜÜÜÜÜÜÜÜÜàêòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚlM:*  \É÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûáÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝßàÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞßàßÞÞÞÞÞÞÞÞÝÝÝÝÝÝÝÝÝÝÝÝÜÜÜÜÜàêñÿÿÿÿÿÿÿÿÿÿÿÿÿÿï’U?.  _ÓüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞßàÞÞÞÞßßßßßßßßßßßßßßßßßßßàáàßßßÞÞÞÞÞÞÞÞÞÞÞÝÝÝÝÝÝÝÝÜÜàêòÿÿÿÿÿÿÿÿÿÿÿÿÿÿü³[D3"  aÔüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúÞÝÝÝÝÞÞÞÞÞÞÞÞßßàáàßßßßßßßßßßßßßßßßßßßßßßßßááßßßßßßßßßßßÞÞÞÞÞÞÞÞÞÝÝÝÝáêòÿÿÿÿÿÿÿÿÿÿÿÿÿÿü¶`H6&  dÕüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüìÝÞÞÞÞÞÞÞßßßßßßßáàßßààààààààààààààààààààààààãáààßßßßßßßßßßßßßÞÞÞÞÞÞÞÝáêòÿÿÿÿÿÿÿÿÿÿÿÿÿÿü¸eL:( dÖüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþôâÞÞÞßßßßßßßßàààáãààààààààáááááââáááááááááááááâààààààààààààßßßßßßßßÞÞÞâëòÿÿÿÿÿÿÿÿÿÿÿÿÿÿý»iP>+ g×üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþõåßßßßßßßßàààààààââàáááááááááßϳ¬´Éáäááááááááááäâááááààààààààààààßßßßßßãëòÿÿÿÿÿÿÿÿÿÿÿÿÿÿý¼mTA.  i×üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþõçßßßßßàààààààààááäâááááááááãÚX,'P•Üæââââââââáããááááááááááàààààààààßßßãìòÿÿÿÿÿÿÿÿÿÿÿÿÿÿý½oVC0! jÙüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüõäßßßàààààààááááááâäâáââââââãß' tÙâââââââââääâââââááááááááááàààààààäìóÿÿÿÿÿÿÿÿÿÿÿÿÿÿý¿sZF2# lÙüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþøéáààààààááááááááááâäåââââââããå¹ §èäãããããããäæãâââââââââââáááááááàààäìôÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÀt[H3$ mÙüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýùêàààààáááááááâââââââäåããããããããævVèåãããããããäæäãããããããâââââââáááááááìïôÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÁv]J5&  mÙüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøéáààáááááááâââââââãããææãããããäääé?çæäääääääåçäããããããããããããââââââááçõì÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÁv^J6&  nÚüÿÿÿÿÿÿÿÿÿÿÿÿÿÿü÷ùááááááââââââããããããããççääääääääè9ççååäääääåèåääääääääããããããããââæêúïðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÂx_K6&  nÛüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúðîäááâââââãããããããääääççäääåååååçmPèçåååååååæéæååääääääääääããéïïïø÷ñòùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÃy`L7&  nÛüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúéââââããããããääääääääæèååååååååç¶  èçææææææææéæåååååååääääïööùùöóóóúþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÃy`L7&  pÛüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýèââãããããäääääääååååçéæåææææææçßz iØèææææææææèêçææææåååæèúúøðîïñöùüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÃy`L7&  pÛýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþîããããääääääååååååææçêçææææææççèÜ<4×éçççççççççéêææææææíîõúöðôõûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÃyaL7'  pÜýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýëãääääääåååååææææææçêéççççççççççæË£–¡ÄäéèèèèèèççççìéççççìôùöôôøýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÃy`L7'  nÙüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýóçääääåååååæææææææçççéëçççççèèèèèèééééééèèèèèèèèèèêìéèççùùõñõûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÁy`L7&  1«ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüûçäääååååææææææçççççççéìéèèèèèèèèèèèéééééééééééééèèìëèéíøöñõüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷¸x_K6&  +îþÿÿÿÿÿÿÿÿÿÿÿÿÿÿüøïåååååææææææççççççèèèèëíéèèèéééééééééééééééééééééìíêêöûòõüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×t_K6&  +ŒíþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñååææææææççççççèèèèèèèêííéééééééêêêêêêêêêêêêêêêêìïëéöøõúþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔŠr^J5&  *ŠëýÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýóåææææççççççèèèèèèéééééëíìêêêêêêêêêêêêêêêêêêêêêêïíìöõöýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓ‰q\H4%  (dÕüÿÿÿÿÿÿÿÿÿÿÿÿÿþþ÷èæææçççççèèèèèèéééééêêêëìïíêêêëëëëëëëëëëëëëëëëìïîíöõ÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý̇nZF2# &6ºõþÿÿÿÿÿÿÿÿÿÿÿÿþø÷êæçççççèèèèèèééééêêêêêêêêíðïìëëëëëëëëììììììììîðïìöõ÷þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ맃kWD0" %4²òþÿÿÿÿÿÿÿÿÿÿÿÿÿþüòêçççèèèèéééééêêêêêêëëëëëëíïïîíììììììììììììîðñïí÷÷õüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿä˜~iUB.  "2™èþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûìçèèèèéééééêêêêêêëëëëëëëììíïññïíìíííííííïñòñïîïöóúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþá”{fR>,  .\ÏùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýíèèèééééêêêêêêëëëëëëììììììíîîðñòòññðññòòñðïîíïøöüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöÃŽwaM;)  +S½ôþÿÿÿÿÿÿÿÿÿÿÿÿÿÿüîèèéééêêêêêëëëëëëìììììííííííííîððññòòññðïïîîîóùûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿí¨‡r]J7&  (>Œæþÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ëééééêêêêëëëëëìììììííííííîîîîîîîîïïïïïîîîïîîïúûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýᢃnXE4#  %6eÄøÿÿÿÿÿÿÿÿÿÿÿÿÿÿôéééêêêêëëëëëìíññííííííîîîîîîîïïïïïïïïïïïïïïïñûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿô»‘~hR@0 !2D“éþÿÿÿÿÿÿÿÿÿÿÿÿÿùõìêêêêëëëëìòõøýýööñîîîîîîïïïïïïïïïðððððððððð÷ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÞªŠxbN;,  .>‚Úüÿÿÿÿÿÿÿÿÿÿÿÿÿüúúùùùùùùùùùø÷÷õõ÷ùûúîîïïïïïïïðððððððððððððððûùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû—…r]H6(  )8Sºøÿÿÿÿÿÿÿÿÿÿÿÿÿÿýú÷õôóóóóóõøûüüüüûøûûðïïððððððððððñññññññññòøùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷»‘lWB2#  $2BåýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýûøððððððñññññññññññññññúùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÖ¢‰wdO<-   .=^Çøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüõðññññññññòòòòòòòòòòòú÷ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ–ƒp^J6(  (7M“æþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúòññññòòòòòòòòòòòòòòòöøüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýߪ|jVB1#  #0Be³ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþõñòòòòòòóóóóóóóóóóóóöúüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþð›ˆtaN<+  *:NyÉûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûóòòòóóóóóóóôôôôôôôôõùýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõʦ‘€kXF5%  %4FY¢îþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþôóóóóóôôôôôôôôôôôôôôöùüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþä³™ŠxbP>.  .>OkÐûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùóóóôôôôôôõõõõõõõõõõõ÷ùüþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÈ¥’‚oZH7(  &5EW—ãþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ôôôôõõõõõõõõõõõõõõõõöøûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüⱘ‡veO>/"   .=Mgçþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûõôõõõõõõööööööööööööõöøüþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüæ¿¢~m[F7)  '5DXm°÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþöõõõööööööö÷÷÷÷÷÷÷öööö÷øüýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ쨗†tbQ>/"   ,:M^uÌþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúõõööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ö÷ùúýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÒ¬œŽ{iXG5'  $1BSd„ßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýööö÷÷÷÷÷÷øøøøøøøø÷÷÷÷÷ö÷÷úýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÞ· ’‚p^M=,  )9IYk“âýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüýýýýýýýýýýýýüüüüüüýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü⻥–‡weRB3$  "0>N_t”áþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúûûûûûûûûüüüüüûûûûûûûûûúúúûûûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý⾨›‹|kYG9+  &3BRdvŽíþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿཀྵ~n^L<."  *6FWhxºóþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþõ«ž’ƒrbRA2&  ".;K[kˆÉïüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýñÔ±¡”†wfUF6)  $1?N^o†´ãüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýãÆ³£–ˆzjWH:,   &2@N`p~ªäûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû໬¢—ˆyjZJ;."  )5BRbq±äúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú㿬¢—‹{l]N=0%   *6FTcr„±ßøþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøâÀ­¢–Š~m^OA2&   *8FSbr–Âìüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüêо«¢–‰|n]NA3&   ,8ERbq~Œ²çûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúçDZ¨ž•ˆzl^N@4(  "-8ETbo~Œ«Õõýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýòáۧ’†zj]O@4)  ",8FR`n|‰›´Þöþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþôä͹®¥›„wj[NA3(   *6BN]jwƒ›Áìüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüîθ¯¨Ÿ–Œ~rfWJ>2&   *5?MZgsŒ–°ÖðüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüòÛÆµ¬¥œ’ˆ}nbVI;1&   )2>JVcq|†‘ž¶ÐîùþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýøòÛȸ®§ ˜Ž‚xl^RF:.%  &0:FQ^ju€‹• °¾ÝöýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýõãÊ·¯©¢š’ˆ|qfZMA6,"  #,6@LWbnzƒŒ–ž§ÁÛêöýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþýõìáź³®¨¢›“‰€vj^SH<2)   !)2=GR]hr|†Ž–ž¨²ÅÜàíúýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýýùêãßϾ¹±¬§¢š“‹ƒyndYNC9.&  %.8AKV`jt~†Ž–›¢«¯¶ÎÕÖãõûûûûûûûûûûûûûûûûûõßÚÙÕú¸³­©¤Ÿ™“‹ƒzqf]RG>4,"  !(09BLU_iqy‚‰–›Ÿ¤¨«¯¿ÇÉÊÊËËÌÌÌÌÌÌÌÌÌËËÆ¹´³°­ª¦¢žš“†vnf\RI?6-%  #*3;CMV^fov}„Š”™ £¦¨ª¬­®®®®®®®®®®­¬«ª§¥¢Ÿ›˜’މ‚ztmc[RJA80(!  &-371*#  $*/6;BHNSY^bgkoruvxzz{{{{{{zzzxvsqnjfa]VRLF?:3-'"  "',16>>>>>>=<;:752/-*&"  "$&')*++,,,,,,,+**(&%#!   Cynthiune-1.0.0/Images/Cynthiune.ico000644 001751 000024 00000010276 11733546702 020024 0ustar00multixstaff000000 000000   ¨( @  #-7:;:3* /E_o|€€vjS>#2S ~"-/ 7JO¼HaiÍLgrÕJeq×Keq×LepÕ4ELÈ'37¾ £ŒiG!8k/;>£i˜Úƒ¶Åð‘ÉÜü—Ðçþ™Ñêÿ˜Ïëÿ™Ïêÿ™Îêÿ’ÂÝü‰¶Î÷jæ;MU΢ƒQ, L0@At¡§Þ—×äý›Þðÿ›ÜïÿšØïÿ›×ïÿšÔïÿ›ÒïÿšÑïÿ›ÑïÿšÏïÿ›Ïïÿ›Ïïÿ›Îíÿy µð9KSÊ•j1>Qmn¢ˆÁÇì›ãîÿ›ãðÿ›àðÿ›Ýðÿ›Úïÿ›×ïÿ›Õïÿ›Óïÿ›Òïÿ›Ñïÿ›Ðïÿ›Ïïÿ›ÏðÿšÏðÿšÏïÿ¿ÚúIakÑœ_. C^ƒ…¨–ßâü›ëñÿ›èðÿ›åðÿ›âðÿ›Þðÿ›ÛïÿšØîÿš×îÿšÕîÿšÓîÿšÒîÿšÒîÿšÑîÿ™Îìÿ›Ïðÿ›Ïðÿ›Ððÿ—Éçýi‹œå ™b$ #T||•ÚÚòœñòÿœîòÿœëñÿœèñÿ›äðÿ›áðÿ˜ÚëÿoÜéû[âïúYáðúXáðûXàïúZÝíú\ÀÎû‚¸Ìþ™ÍîÿœÐñÿœÐñÿœÑñÿ˜ÍëþOlxÔ ŽCJjki“àÞúžöóÿôòÿñòÿœîòÿœëñÿœçñÿ›äðÿ…ÕãýB×äö2âïõ/âïõ.âïö,Úçö=°¼úp«¾þ›Ïðÿ›ÐñÿœÑñÿœÑñÿœÒòÿÒòÿ”ÇãüLfpÍo2 6JL7ƒÀ¿ÆŸõðÿŸöòÿžöóÿžôóÿœòòÿœïòÿœêñÿ›çñÿoÖßù?Üçó<àìó:àìó8ÞéôAÇÑö{µËþ˜Ììÿ›ÐñÿœÐñÿœÒòÿœÒòÿžÒóÿÒóÿŸÔóÿ‰¹Ïö”L t¤£ƒœèãú óíÿ ôîÿ›îëþ˜òðû–ññû˜ðñüšíñýŒåëúPØâñLÞèðIÞèñHÞèñEÛæñhÝçö›Ïïÿ›ÐðÿœÑñÿœÒòÿÒòÿžÓóÿŸÔóÿŸÕôÿŸÖõÿ ×ôÿa‚ŽÐl! ‘ËÈΡïçÿ¡òêÿ òëÿ{ÂÁøyÚàíuÝäítÞåïtßæðfÜãïYÛåíVÛåîOÒÛïNÓÜïPÙâï_Ûäñ›ÒïÿœÐñÿœÒòÿÒòÿžÓóÿŸÔôÿ Öõÿ ×õÿ Øõÿ Ùõÿ…³Æê!*-‹. cƒ:ŸãÜú£ñåÿ¢ñæÿéàÿ€ÇÇõ{ÕÛèv×ÝèrÖÝélÕÝêiÖÞë]ÆÍíW¼ÄîXÄÌîWÃÊîR»ÂïWÇÏî…ÜêõšÔðþžÓóÿŸÕôÿ ×õÿ Øõÿ¡Úõÿ¢Úöÿ¢Ûöÿ¢Ûöÿ›ÒéýG_h¬<…­­f£íâþ¤òåÿ¤òæÿ˜á×ÿxµ¶ò†ÖÜæÔÚç{ÓÚçvÓÚèkÄËêkÊÑënÕÝênØßêlÕÜêjÓÛëaÃÊìmÎÖí’àíöž×óþ Ùõÿ¡Úöÿ¢Û÷ÿ£Ü÷ÿ£Ý÷ÿ£Þøÿ£Þøÿ¢Üôÿ_€‹ÁDËÇ’¨ôáÿ§õâÿ§õâÿ éÙÿv©¦ôÐÕäŒÑÖåˆÐÕå‚ÍÓæwÁÆé€ÕÜç{ÏÕèsÆÌÌpÄÊ¢wÎÕÐzÓÚçpÀÆé}ÔÛçÜãï›ßìö¤âöý¤áöý¥áøÿ¥âùÿ¥âùÿ¥âùÿ¥ãùÿ„±¾äG¢ÏȘ²÷âÿ²÷áÿ²÷âÿ¬ðÜÿ›ÓÎñ›ÎÑâ—ÏÓã“ÎÒã‹ÇÌåˆÉÎæŒÓØåÃÈæ†ÎÓVu¼Å p¯³l‡ÒÖÝ‚ÊÏç†ÍÒæ‰ÍÒåÓØçšÙßë ßåï¦äî÷¦åöý§çûÿ§æúÿ§çúÿ‡·ÄèGªÒÇ—ÀùäÿÁùäÿÂùäÿ¬ÞÏÿl…‚ò–¶¸ä¥ËÎà¡ÊÍá›ÇËâ—ÈÍãšÏÓ≹¼å|¥¨Y%66{¦ªn—ÐÔÙ‘ÈÍä•ÉÍã™ËÏâšÌÐâžÍÐâ¡ÍÐá£ËÍáŸÐÖñ«ìüÿ«ìüÿªìüÿˆºÆæC´ÕÍ•ÊúåÿÌûåÿÍûæÿÏûæÿ®ÓÃþz‰õ«ÂÄß­ÉÊߪÊÌà ÃÅâ¦ÌÍà¡ÇÊá”·ºÊ’´¶¨¡ËÍǤÏÓàšÂÅâ¡ÇÊá¥ËÍà§ËÌàªËÍà¬ÊÌ߯ÉÊߢÌÐï­ðýÿ­ïýÿ­ïýÿŽ¿Èä;¼×Ó‡Ôúæÿ×ûæÿØûæÿØúæÿÚùçÿºØÌþ—ä¼ÅÆÝ¼ËÌÝ·ÉÉÞ®ÀÁß²ÄÅÞ´ÉËÞ²ÈÊÞ°ÇÉ߬į߲ÉÊÞ²ÃÅÞ¶ÈÊÞ·ÇÉÞºÈÉݼÈÈݽÄÄݨÉÍî®ñþÿ®ðýÿ®ðýÿ¾ÆÕ- ·ÏÌ`ÕöåýÛúæÿÚøçÿÙöçÿÖóçÿ»ÛÔþ”åÉÁÁÛÊËÊÛÆÇÇÜ¿ÂÃÜ»¾¿Ý¸¾¿Þ¶¼½Þ»ÂÃÝÀÊËÝ¿ÅÅÜ¿ÂÂÜÃÆÇÜÄÄÅÜÈÇÈÛÉÆÆÛÁ»¹Ü¤ÇËñ®óÿÿ®óÿÿ­ïûþ€¨®­!¤¿¿!ÏìâóØôçÿÔñçÿÐîçÿÊéçÿÇäèÿŠ‘ïп¾ÚÕÇÅÙÓÃÁÙÒÂÂÚÒÅÃÚÏÁÀÚÐÄÄÚÒÉÈÚÑÇÇÚο½ÚÐÂÁÚÒÄÃÚÓÃÂÚÕÅÄÙÔÂÀÙ½¼¼á¨äèú®÷ÿÿ®öÿÿªéòølŒvt†—ÆâÝÄÏíçþÌêæÿÈæçÿÅâéÿÃãíÿ’¨°ú®¢£á×ÅÄÙÕÂÀÙÕÃÁÙÖÄÂÙÕÀ¾ÙÖÄÃÙÙËÊÙ×ÄÃÙÔ¿¼Ù×ÅÃÙÕÃÁÙ×ÅÄÙÕÄÂÙÒ¿½Ùš°°î§ïòþ®ùÿÿ®øÿÿ¡ÜáÚRegH»ÙÚbÅãåòÅáèÿÃáëÿÄäòÿÄå÷ÿ·ØíÿzŒ•øºª©ÝÕÃÁÙÕÂÂÙÕÁ¿ÙÕÂÁÙ×ÅÄÙØÉÇÙÕÁ¿ÙÕÁÀÙØÈÆÙÕÂÀÙÖÅÄÙÑ¿½Ú¨ª©å¥ëìþ¯üþÿ®ûÿÿ®øüÿ’»¿–µÏÐÀÝá·ÃâîÿÄäòÿÄåøÿÄåûÿ¾åþÿ¥Öìÿt†Œò¸ªªÝÕÃÁÙÕÂÀÙÕÀ¿ÙØÇÆÙׯÅÙÔ¿¾ÙÖÃÂÙØÇÆÙÖÃÂÙÖÄÃÙš˜—æ•ÈÆù¯üûÿ¯üüÿ¯üýÿ©çêí^rs: »ÔÔ4ÂâíçÄäøÿÄåýÿÀåÿÿ±æÿÿ æÿÿ‹Öîÿn‘Ÿûš“•æ¼««ÝÕÂÀÙÙÉÇÙÕÂÀÙÔ¾¼Ù×ÇÅÙо¼Ú¬¨¦á‚œ–ï’äÛþªýõÿ°ýùÿ°ýûÿ­ññð’¼½u ???¿ÛápÂâôîÀåÿÿ¶åÿÿ¤æÿÿ•åÿÿšãþÿ©Ý÷ÿ ±ÄýŒ“šö~yy펄ƒå™Œ‹â™‹‰ãˆ‰„锎ñ´ú„èÖþ•ýîÿ¡ýòÿ¯ý÷ÿ°ùõþŸÏΗXkkª¸¸¿Øàf¶âöí¨åþÿ•åÿÿ”äÿÿ¦âýÿ»àüÿÒÝöÿÕÚêÿ¹ÓÓÿžËÀÿšÓÅþ›ØÇþ íÕÿ¡ûâÿ—ýåÿýæÿŽýêÿ—ýïÿ¦õíò¦ÕÕ¢ ²¿¿¶Ùâl¨âòä’åÿÿ›ãÿÿ°áüÿÄßûÿÕÜóÿÔÚçÿ½Ú×ÿ°âÓÿ®ïÝÿ¯÷Þÿªúàÿ£ûâÿ™ýäÿ’ýåÿŒýèÿ—ôçùžÒÍ€j‚€UUU½ØØ,¬ßê­«áõí»àúþÍÞùÿÖÚîÿÑÙãÿºÚÕÿ¯ãÓÿ®ïÜÿ¯öÞÿ¬úßÿ¥ûàÿûãÿš÷ãø›èܹ™ÄÁN·ÔÕ¸ÜâQÀÝê²ËÝííÑÛéýÌÚáÿ¸ÛÔÿ®äÓÿ­îÝÿ¯õßÿ¬õßýªñßö¨èܽ¢ÛÓj–µ³ªÆÆ¶ÙÙÀØÚJÁÚÝu¸×Ô…µ×Ï…´Þ×…³ÞÙ³ØÔJ«ÎÌ$?__ÿÿÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÀÿÿÿþÿüøøð?ðàóÿÀãÿÀãÿðãÿøÃÿÿÃÿÿÇÃÿÿÇÃÿÿÇÁÿÿÇáÿÿÏàÿÿÏðÿÿÏðÿð?ÿøþ?üüþÀÿÿÿÿàÿÿø?ÿÿÿÿÿÿÿÿÿCynthiune-1.0.0/Images/Cynthiune.tiff000644 001751 000024 00000017272 11733546702 020205 0ustar00multixstaff000000 000000 II*ŽÁ®þþþþþþþþµÁÿ9 %%+UUKdusg‡ª©•ħ¨‘Ç¥©Ç¢©ŽÇ©®ŽÇª¯ŽÇ£¦†¾ikY}EF:S(þþÅÊL^]Rm¶±œÌÝÑÀñå×ÊúäÚÐþÞÚÈÿÖÚºÿÓß±ÿÓæ­ÿÜí­ÿßò®ÿßö¯ÿÞô­þÛí¨úÐۢ‡Ã?@6R þþÍÑÿU ~m“Ô̧èñݹûúßÈÿ÷ÝÓÿðÛÖÿçÚÕÿßÙÍÿÔ×¼ÿÒÞ²ÿÓæ­ÿÛì­ÿÝò®ÿÞ÷°ÿàú®ÿàú¨ÿáû¤ÿãû ÿÞïžûÄÊ–â\]Mtþ þþÕÙþdSSIaž—Úöâ üýâ§ÿüá´ÿüßÄÿøÝÐÿòÛ×ÿéÙÖÿáÙÐÿ×Ù¾ÿÓÞ³ÿÓå®ÿÜí®ÿÞó®ÿÞø°ÿßú­ÿßû¨ÿáû£ÿãüÿåý™ÿåý“ÿãó”ü°´…Ð,,&BþþþÝÝÿm …ƒršèÚ õþåÿÿä–ÿþâ¡ÿüá­ÿüà¼ÿúÞËÿõÝÖÿìÛÕÿãÙÒÿÙÙÁÿÓݳÿÓå®ÿÜí®ÿÞó®ÿÞø°ÿàú¬ÿàû§ÿâû¢ÿãüœÿåý•ÿåý‘ÿçýŒÿêûŽÿÖß•òXYKwþ þþááÿyžš†µöã©üÿæŸÿÿå“ÿÿäÿÿãšÿýâ¦ÿüáµÿûßÅÿ÷ÝÒÿîÛÖÿåÙÔÿÛÙÄÿÓܵÿÓä®ÿÜí®ÿÞô®ÿßù°ÿàú«ÿáû¥ÿãû ÿäý›ÿåý”ÿæýŽÿçý‰ÿìýÿïý—ÿêò¢ümo[’þþååÿ  ¼¶ŸÓ÷á·üÿå±ÿÿå§ÿÿå›ÿÿåÿÿä”ÿþâ ÿüâ¬ÿüß¾ÿùÞÎÿñÛÖÿçÙÕÿØÕÂÿ¿Å ÿ²½þ¸ÃþºÇ‘þ»Ê‘þÇÛ—ÿáû¥ÿãüŸÿåý˜ÿåý’ÿçýŒÿéýÿíý“ÿñý›ÿôý¥ÿîó¬ýž›€¿þþééÿ  ¢žŒ¹÷âÁýÿåÁÿÿå¹ÿÿå°ÿÿæ¥ÿÿå˜ÿÿäÿþã˜ÿýâ¥ÿüàµÿúÞÆÿͽ­þ‘Š|ý\ZVûRSVðabjéiisçefqçhjrèbgeíbjSù‹“güÆ×…þäûÿçý‹ÿìý‘ÿðý™ÿòý¡ÿõý­ÿøý°ÿðô®ý€h¦þþþííþŽŽ|¤óãÀýüåÄÿþåÄÿÿåÁÿÿå¸ÿÿæ®ÿÿæ£ÿÿå•ÿÿä‘ÿþâÿäΜþxeýUPYò…†’àŸ¡²Ú¬­ºÙª«¹Ù¥¦¶Ù¢¤µÙ¡¢µÙª«¸Ù¤¦µÚ’”¢Ýhjhë‡aûÊ×þîý•ÿòýŸÿõýªÿ÷ý°ÿùý° ÿúý°ÿòò®ýffSŒþþþñîaaUråÛ»÷öåÄÿùäÄÿüåÄÿýåÄÿÿåÁÿÿå¸ÿÿæ¬ÿÿæŸÿÿå‘ÿ´¦rþWPF÷Š‹—ߢ£µÙ¦§¶Ù¢¤µÙ¨ª¸Ù«¬¹Ù¥§¶Ù£¤¶ÙŸ¡´Ù¨©·Ù«¬¹Ù¤¥¶Ù©ª·Ù—™¦Üjmií¾Äƒüòû¥ÿ÷ý¯ÿùý°ÿúý°ÿüý¯ÿüü¯ÿàߦö:9/_þþþõñÿÊǬäïãÃÿòäÃÿõåÄÿøåÄÿûåÄÿýåÄÿÿåÀÿÿå¶ÿþåªÿ§›mþ^[\í¢£³Ù¥§¶Ù¥§¶Ù¥¦¶Ù¡£µÙ¤¥¶Ù¬­ºÙ©ª¸Ù¥¥¶Ù¡¢µÙ¥¥¶Ù««¹Ù§¨·Ù¤¥¶Ùª«¹Ù¤¥µÙvwå‘múõø¬ÿúý°ÿüü¯ÿüü¯ÿýü¯ÿýû¯ÿ²±ŠØ+þ þõõÿ’‘€ªçáÂþéßÃÿìáÄÿñäÃÿôäÄÿøåÄÿúåÄÿýåÄÿýä¾ÿ®¡~þ\\aí¡£³Ù§©·Ù¥¥¶Ù¦§¶Ù¡¢µÙ¤¥¶Ù¤¥¶Ù««¹Ù¬­¹Ù£¥¶Ù¢£µÙ¢¤µÙ©ª¸Ù©«¸Ù¡£µÙ«¬¹Ù¥¦¶Ù¥¦¶Ùޛߧ¨~úüü¯ÿüü¯ÿýü¯ÿþü¯ÿþû¯ÿóð¬ýedR”þþþùö,,%7ÕÔ¸ðçæÈÿçãÆÿçàÄÿêàÃÿîãÃÿóäÄÿ÷åÄÿúåÄÿ¹­ŽþURV𢤴٥¥¶Ù¥§¶Ù¥¥¶Ù¦¨·Ù¢£µÙ¥¦¶Ù¥¥¶Ù¨©¸Ù­®ºÙ¥¦¶Ù£¤¶Ù ¢´Ù¨ª·Ùª«¸Ù¤¥¶Ù¥§¶Ù¨©·Ù¥§¶Ù¤¥¶ ÙŽ”ãÔÔ˜üþü¯ÿþü¯ÿÿû®ÿÿû®ÿÿù®ÿËÇ™ëþ-þþþýùtugŒãèÉüçëÍÿæéËÿçæÈÿçâÅÿèàÄÿìâÃÿñäÃÿâÕ³ÿYTP÷¢£±Ú¨©·Ù¥§¶Ù£¥¶Ù¥§¶Ù¥¦¶Ù¥¦¶Ù£¥¶Ù¤¥¶Ù¦¨·Ù­®ºÙ«¬¹Ù£¥¶ÙŸ¡´Ù¥§¶Ù¨©¸Ù¥§¶Ù¤¥¶Ùª«¸Ù¥¦¶Ù'¥¦¶ÙŸ ±Ú††}íãážþÿû®ÿÿú®ÿÿù®ÿÿù®ÿñìªý43*qþþ þýú ¿Ã«ÝçòÖÿçðÔÿæïÐÿçìÍÿçéÊÿçåÈÿçâÅÿêáÃÿ¨£‡þ††“ᨪ¸Ùª«¸Ù¤¥¶Ù£¥¶Ù¦§·Ù¤¥¶Ù¨ª¸ÙŸ¡´Ù¥¦¶Ù¨©·Ùª«¸Ù®¯»Ù¥¥¶ÙŸ¡´Ù¢¤µÙ§¨·Ù¦¨·Ù£¥¶Ù¨©·Ù¦¨·(Ù¦§¶Ù¢¤µÙ˜šªÛÁ¿Žúÿù®ÿÿù®ÿÿø®ÿÿ÷®ÿþõ®ÿŸœ}Òþ.þþýú11*?ÚáÆöç÷ÚÿæôÚÿçóØÿçñÔÿçïÑÿçìÍÿçéÊÿçäÇÿkjbö¤¥µÙ¦§¶Ù«¬¶Ù¥¦´Ù§¨³Ú¥¥²Ú¦§²Ú¨©²Ú¦¦°Ú§¨°Ú¨¨°Úªª°Ú¯°²Úªª°Ú¤¥¯Ú¢£®Ú§¨±Ú¨©²Ú¥¦²Ú¥¦³Ú©ª¶(Ù¥¦µÙ¤¥µÙ£¤´Ù®­šëúô¬ÿÿ÷®ÿÿö®ÿÿõ®ÿÿô®ÿØÑŸõþCþþþúDij^âñÑüçùÚÿæùÛÿç÷ÚÿçöÚÿçôØÿçòÖÿçðÑÿÈ˪þgflꤥ¯Ú¥¥¯Ú®®±Û«¬¯Ûªª¬Û©¨ªÛþªÛþ£ ݤ¤¡Þœœ›Þ¢¡ŸÞ§¦¤Ý°¯ªÜ²±¬Ü««©Ü¥¥¦Üþ©<Ü«ªªÛª©«Û¨¨«Û­­°Û¨¨¯Ú©©°Ú¤¦°Ú‘‘—àÛÕüÿô®ÿÿô®ÿÿó®ÿþò®ÿñçªý+*$vþ&þ þú,ˆŠ{§äøÔþæûÙÿæûÛÿçúÚÿçùÚÿçùÚÿç÷ÚÿçöÙÿÏØ¹þ}~|éþ©|ܨ¨§Ü°°©Ü³³©Ü««¤Ý«ª¡Þ¡ —ߨ§žÝ²±£Ý«ª Ý¯¯¢Ý­¬ŸÞ¤¢•ß³²¢Ý¯¯¡Ýª©¡Ýªª¡Ý®®£Ý®­¤Ý¬«¤Ý®­§Ü­¬¨Ü­­©Ü¨©©Ü¡¡¤ÜÉÅ™÷þò®ÿþò®ÿþñ­ÿþð®ÿøì¬þSPA¡þ2þþþþ¸¼¤ØçûÒÿæûÔÿæûÕÿæûÖÿæû×ÿæûØÿæûÚÿçúÚÿ¶À¢þ||wæ®­£Ý­¬ Ý¯¯ Ýµ´¡Þ®®šß¨§”à®®›Þ°¯›ß²°›ß³±›ß±¯™ß´²šß³±™ß«©‘á´²™ß°®™ß¬ª™ß±¯œÞ¯®œÞ°¯žÞ¯®Ÿ,Þ°¯¡Ý­­¡Ý¯®£Ý¨¨¡ÝÏÉöþð®ÿýð®ÿýð®ÿýð®ÿýð®ÿ‹nÐþ=þþþþ µ¼ ÚæûÌÿåûÎÿæûÏÿæûÏÿæûÑÿæûÒÿæûÓÿËÛµþag[ù¤£”ß²±œß°¯™ß³±™ßµ´˜ß©¦‹ã´³•à´²”à·´”భ౯ݫ©‹Ù·µ‘à¶´’໸”à«©ˆã³±’à°­à´³”à³°•à´³—à³°˜,ßµ³™ß±¯™ß³²œÞª©šÞÐÊš÷ýð®ÿýð®ÿýð­ÿýð­ÿýð­ÿŠjÕþGþþþþ ²»›ÛåùÅÿäúÆÿåúÇÿåúÈÿåûÈÿåúÉÿ«¶þSVGøš…ä²°–ß³°•à´²“à´±‘ೱⴱ‹â¶´á»¸Žá¥¢~åyw\ÉJ>RP=pº¶Šà¼¹Œâ±­‚ä¶³‰â´²‹â¶´Œá¸µŽáµ´Žá·µ‘,áµ³’à¶´”à´³•஬’ßÐʘ÷üï¬ÿüï¬ÿüî¬ÿüí¬ÿüí¬ÿއfÙþOþ"þ þþP ±»–Ýãù½ÿãù¾ÿãù¾ÿãù¿ÿäù¿ÿ³ºŒþRTEó´±à¶´’ື‘á³°Œá¹µŒâ¹µ‹â«¨~侺‰ã¾ºˆã»¸…ãž›pçA@/RúþP*›—lº¾º„㻷䶱乶„ã·³„ã½¹‰ã¹µ‡ã»¸Šâ¸µ‹â»¸â¶´Žáº¸ä×Йøüëªÿüëªÿüëªÿüëªÿüë©ÿކcÚþUþ%þ þþP³º’Ýã÷µÿáøµÿâøµÿâøµÿâøµÿÖè©þÑןõ½ºáº·Œâ¼¹Šâ¹µ‡ã»¸…ã»·ƒã«§v罂äÿ‚亷|ä°¬sçED/TöPšg½Á½|忺{渴vç¾¹}å¹¶|äÀ»ä½¹€ä¾ºƒäÂÀ‰æÒÏ•ìÙÖœðéâ¤øöä¤þûé§ÿûé§ÿûç§ÿûè§ÿúé§ÿ†dÜþWþ&þ þþµ»Þâö¬ÿàõ«ÿáö«ÿáö«ÿáöªÿáöªÿ¹ÇŠþ¬¨{æÀ¼‡ã¾º„侺佹~俺|屬r羸wçÇÁ{æÂ¾w沬l裟cÄ('0 XV7½såÅÀuç¹´n齸rçÄ¿w濹væÂ½{çÖÒîéâŸ,÷íâ¢ùðà¢û÷â¥þúä¦ÿúä¦ÿúä¦ÿúä¦ÿùä¦ÿúå¦ÿúå§ÿ‡gÜþWþ'þ þþ¨ªƒÐáó§ÿâô¦ÿâô¥ÿãô¥ÿãô¥ÿÏÚ•þ€ƒ\ú¾¹€åÿäÀ»|åÿ{åÀ»wæÃ¾v澸p让eêÉÂsçÉÃqèÇÁoè»´gê¶°dç·±eäÉÂmèÆ¿lèÉÂn詤]ëÉÂnèÊÄqèÚÔ‰ñêàœøòÜžýøÞ£,ÿøß¤ÿøß¤ÿøà¤ÿøà¥ÿøá¥ÿøá¥ÿùâ¥ÿùá¤ÿùâ¥ÿøá¥ÿ|w[ÓþWþ&þ þþ wx\£âî¤þåó¥ÿåò¤ÿæò¤ÿæò¤ÿÕÞ–ÿœŸlùÄÀ|åÇÁ{æÄ¿væÅÀtçÅ¿qçÆÀoèÆ¿lè«¥\ëÆ¿hêÏÈkéÉÂgéÍÇiéÊÄfêÉÃeêÌÆfêÈÁdê¼¶^츱\ìÎÈjêêá—÷ñØœýõÙ ÿöÚ¡ÿöÛ¢,ÿ÷Û¢ÿ÷Ü£ÿ÷Ý£ÿ÷Ý£ÿøÞ£ÿøÞ£ÿøß£ÿøÞ£ÿøß¤ÿóÝ£ÿ41&«þUþ&þ þþ HH7pÚâŸüåò¤ÿåñ£ÿåò£ÿæò£ÿÆÍŒþ««rõÅÀvæÉÄtçÉÂqçÇÁnèÉÃlèÉÂiéÉÃféÈÁdꦡQîŽ^ëÎÇaëÑÈaëÎÇ_ëÌÅ^ëÏÇ^ë¹³Sí®¨OîÎÇ_ëçÝ÷ñÓœþôÔžÿôÕ ÿõ× ÿõØ ,ÿöÙ¡ÿöÙ¡ÿöÛ¢ÿ÷Û¢ÿ÷Ü£ÿ÷Ü£ÿ÷Ý£ÿ÷Ý¢ÿ÷Þ£ÿßÌ–ý “þPþ"þ þþ BÌЕõåñ£ÿåñ¢ÿæñ¢ÿçñ¢ÿçñ¢ÿÇ̉þþméÊÄnèÌÇkéÉÂféÎÇfêËÄbêÎÇ`ëÏÇ^ëÏÇ\ìµ®Oï©£Hð³¬Kï¼´MﲬJð¦ŸDñ¾¶NïÎÆUíåÛ„öìЖþòÒœÿóÒÿóÓžÿôÔŸÿôÖ (ÿõÖ ÿõØ ÿõÙ ÿõÙ¡ÿöÙ¡ÿöÚ¡ÿöÚ¢ÿöÛ¢ÿ÷Ü¢ÿ¼¬õþþHþþþþþ¢¢xÕæï¢ÿèñ¢ÿèñ¡ÿêò¡ÿëò ÿ¥¨pý½¸dêÎÇiéÎÈeêÏÇbëÏÇ^ëÑÈ]ìÑÉYìÒÊXíÔÌVíÔÌTíÔËSîÈÁKïÈÁKïÊÂJïÐÇLî×ÎOîÖÍ[ñîÖšþñЛÿñÑœÿòÒœÿòÒÿóÓÿóÔžÿôÔŸ$ÿôÕŸÿõÖ ÿõ× ÿõØ ÿõÙ ÿõØ ÿöÙ¡ÿôÚ¡ÿleNÖþtþ>þþúþCB1yÜàšüêò¡ÿëò ÿìò ÿíó ÿ×Ú’þâàŽõàÜ‚òàÜ€òãÞôéæøîë—úçâ‰øÙÒbñ×ÎOîØÏMïÚÑLïÙÐJðÛÐJðÙÐHðØÎGðÚÐGðÞÖoöïÏ›ÿðÏ›ÿñМÿñÑœÿòÒœÿòÒœÿóÒÿóÓž$ÿóÔžÿôÕŸÿôÖŸÿôÖ ÿõ× ÿõ× ÿõÙ ÿÝÈ”ý›þfþ2þþúþ 7µµéíó¡ÿíô ÿîôŸÿðô ÿñõŸÿòöŸÿó÷žÿóöžÿóôžÿòòÿòïœÿðë›ÿéä”ýÒÉNóÚÐEðÝÒEñÞÓDñÛÐBñÞÓBñÛÐ?ñÚÎ>ñâÙ{ùïÏšÿðÏ›ÿðЛÿñМÿñÑœÿòÒœÿòÒœÿòÒ ÿóÒžÿóÔžÿóÔŸÿôÕŸÿôÕžÿõÖ ÿóÖ ÿ”ŠfêþˆþUþ&þ þúþ þJI5‹ÜÞ–üðõ ÿðöŸÿòöŸÿó÷Ÿÿóöžÿóôžÿòóÿòñœÿòïœÿñìœÿñéœÿñç›ÿØÐ|ûÙÎ?òßÔ>òàÕ<òÞÔ:óâ×;óÞÔ9óÜÑ6ó¼´RùÔ¼…þðÏ›ÿðÏ›ÿñЛÿñМÿñÑœÿòÒœÿòÒœÿòÒÿóÒžÿóÓžÿóÓžÿóÔŸÿôÕŸÿÔ¿Žü%#´þuþBþþþúþþþ7›šlÛðóŸÿó÷Ÿÿóöžÿóöžÿóôÿòòÿòñœÿòîœÿñìœÿñêœÿñæ›ÿðä›ÿæÛ–þÒÇ=õáÖ7óäÙ6ôäØ3ôäØ2ôäÙ1õâ×1õÊ¿+õ’‹?û̵ƒþðÏ›ÿðÏ›ÿñЛÿñМÿñÑœÿòÑœÿòÒœÿòÒÿóÒÿòÑœÿóÓžÿïÓžÿpiMÞþþ^þ/þþýöþ þ#`»»}óóöžÿóõžÿòóÿòòÿòðœÿòîœÿñìœÿñêœÿñçœÿðå›ÿðâ›ÿïß›ÿȼiüæÚ1õæÚ/õéÜ.öæÚ+öéÜ+öæÚ)öåÙ*ö×Ë)÷˜Ž;û³£pþðÏ›ÿðЛÿñЛÿñМÿñÑœÿñÑœÿòÒœÿòÑœÿòÒÿòÒÿ£•nó¥þwþFþþ þýöþþþ3/.!ŠÒÒ‹ûòóÿòòÿòðœÿòîœÿñìœÿñêœÿñèœÿñæ›ÿðã›ÿðà›ÿðÝ›ÿÝÐŽþçÝ>÷êß;øìá9øëß7øîâ7ùëà6ùêÞ6øëß:øÞÔ8÷ª¡?û« kþèÉ•ÿðÏ›ÿñМÿñМÿñÑœÿñÑœÿòÒœ ÿòÒœÿŲ‚ûºþˆþZþ.þþþýòþ þþC00"—×Õüòðœÿòíœÿñë›ÿñê›ÿñèœÿñæ›ÿðä›ÿðá›ÿðß›ÿðÝ›ÿìØšÿêÙ—þíÛ˜þíÙ˜þíÙ˜þí×—þíטþíÖ˜þíÖ˜þíÖ˜þëÔ—þáË’þìÍ—ÿðÏ›ÿðЛÿðÏ›ÿðÏ›ÿñÑœÿñÒœÿϸ‰ü¾þ”þjþ>þþ þùòþþþ)þÿNzL=¯ËÉ‹ùñëœÿñë›ÿðè›ÿðæ›ÿðä›ÿðâ›ÿðß›ÿðÝ›ÿðÜ›ÿïÙ›ÿïØ›ÿïÖ›ÿïÔ›ÿïÒ›ÿïÒ›ÿïÑ›ÿïЛÿïЛÿïÏ›ÿïÏ›ÿðÏ›ÿðÏ›ÿðÏ›ÿðΚÿðЛÿñМÿðЛÿ¿«‚ø94(ÊþšþtþHþ%þþõîþþþ.þtU87+£Ã¿Š÷ìäšÿñæœÿðå›ÿðâšÿðá›ÿðß›ÿðÝ›ÿïÛ›ÿïÙ›ÿï×›ÿïÖ›ÿïÔ›ÿïÒ›ÿïÒ›ÿïÒ›ÿïЛÿïЛÿïÏ›ÿïÏ›ÿðÏ›ÿðÏšÿðΚÿðÏ›ÿðЛÿìÍ™ÿ¸¦}÷½þþyþOþ*þþþõêþþþ2þlW˜”péåܘþðä›ÿðâ›ÿðß›ÿïÜšÿðÛšÿïÚ›ÿïÙ›ÿïÖ›ÿïÕ›ÿïÔ›ÿïÒ›ÿïÒ›ÿïÒ›ÿïÑ›ÿïЛÿïÏ›ÿïÏšÿïΚÿðÏ›ÿðÏ›ÿðÏ›ÿãÉ–þˆ}`ê ¶þ›þzþRþ.þþþñæþ þþ2þUþ\z=þ%þþþåÚþþþþ3þKþdþzþŽþ œ¨»¿ÃÃÃÃÀþ²þ®þ¦þšþ‹þxþaþHþ0þþþþáÖþþ þþ#þ5þHþ[þlþzþ…þŒþ‘þ’þ’þ’þþ‹þƒþxþjþYþFþ2þ!þþ þþÝÎþþ þþþ*þ7þCþNþVþZþ\þ]þ\þZþUþMþBþ6þ)þþþ þþÕÊþþþ þþþþ!þ&þ*þ*þ*þ*þ)þ&þ þþþþþþþÑþ00`€ Bh@…ª²(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/Cynthiune.tiffHHCynthiune-1.0.0/Images/Cynthiune.xpm000644 001751 000024 00000026371 11733546663 020067 0ustar00multixstaff000000 000000 /* XPM */ static char * Cynthiune_xpm[] = { "32 32 580 2", " c None", ". c #91848F", "+ c #968A91", "@ c #A19696", "# c #AFA69D", "$ c #B0A99C", "% c #AEAA9A", "& c #B1AD9A", "* c #B3AD99", "= c #A39995", "- c #988C91", "; c #A29795", "> c #C7B9A7", ", c #EFE0CF", "' c #EADCD3", ") c #E0D9CD", "! c #D5DBB8", "~ c #D3E4AE", "{ c #DDEEAE", "] c #DEF5AE", "^ c #E1F8AE", "/ c #E2F4AD", "( c #CACC9D", "_ c #A79E95", ": c #92858F", "< c #9A8E91", "[ c #CBBD9A", "} c #F9E3AA", "| c #FCE1BA", "1 c #F9DECE", "2 c #EFDBD6", "3 c #E2D9D1", "4 c #D5D9BA", "5 c #DBEEAD", "6 c #DEF6AF", "7 c #DFFAAB", "8 c #E1FBA4", "9 c #E3FC9D", "0 c #E6FB9A", "a c #D0D596", "b c #A09692", "c c #A79C96", "d c #E7D59E", "e c #FFE590", "f c #FEE39D", "g c #FCE1AF", "h c #FBDFC6", "i c #F3DCD5", "j c #E6D9D3", "k c #D7D9BE", "l c #D3E3AF", "m c #DCEEAE", "n c #DEF7AF", "o c #E0FBAA", "p c #E2FBA3", "q c #E4FD9A", "r c #E5FD91", "s c #E7FD8B", "t c #E6F195", "u c #B4AD98", "v c #AFA39C", "w c #F0DBB0", "x c #FFE6A7", "y c #FFE596", "z c #FFE493", "A c #FDE2A4", "B c #FCE0BC", "C c #F7DDD1", "D c #EADAD5", "E c #D3D3BB", "F c #C7D2A5", "G c #CEDCA4", "H c #D0E3A5", "I c #D7EEA2", "J c #E3FBA0", "K c #E5FD97", "L c #E6FD8E", "M c #EAFD8D", "N c #F0FD98", "O c #F1F9A7", "P c #C2BBA1", "Q c #A89D98", "R c #F0DCBC", "S c #FFE5C0", "T c #FFE5B4", "U c #FFE6A4", "V c #FFE593", "W c #FEE399", "X c #DDCAB2", "Y c #AEA79F", "Z c #95949B", "` c #9A9BA7", " . c #9798A6", ".. c #9596A6", "+. c #969A9A", "@. c #9FA68B", "#. c #C3CF8B", "$. c #E7FC8C", "%. c #EEFD94", "&. c #F3FDA2", "*. c #F6FDAE", "=. c #F6F9AF", "-. c #BFB8A0", ";. c #9B8F92", ">. c #E3D7B8", ",. c #F9E5C4", "'. c #FCE5C4", "). c #FFE5B2", "!. c #FFE6A0", "~. c #F9E091", "{. c #BAAE8D", "]. c #A5A4B1", "^. c #BFC0D4", "/. c #C1C2D6", "(. c #CBCCDB", "_. c #C3C4D7", ":. c #BDBED4", "<. c #C7C8D9", "[. c #C2C4D6", "}. c #B4B6C3", "|. c #9EA289", "1. c #E3EC9B", "2. c #F5FDAC", "3. c #F9FDB0", "4. c #FBFDB0", "5. c #F7F6AF", "6. c #AFA49A", "7. c #93868F", "8. c #C8BFAA", "9. c #EEE2C3", "0. c #F3E4C4", "a. c #F8E5C4", "b. c #FFE5BF", "c. c #F3DDA9", "d. c #AEA68E", "e. c #BEC0D2", "f. c #C4C5D7", "g. c #C1C3D6", "h. c #C0C1D5", "i. c #C5C6D8", "j. c #C0C1D6", "k. c #C6C8D9", "l. c #C4C6D8", "m. c #C2C3D6", "n. c #92949A", "o. c #DDE0A6", "p. c #FBFDAF", "q. c #FCFCAF", "r. c #FDFCAF", "s. c #E8E4AB", "t. c #978A91", "u. c #A89E99", "v. c #E8E6C7", "w. c #E7E1C6", "x. c #EBE1C3", "y. c #F1E4C3", "z. c #F7E5C4", "A. c #FAE3C3", "B. c #B8B0A1", "C. c #BEBFD3", "D. c #C2C4D7", "E. c #C0C2D6", "F. c #C5C7D8", "G. c #C9CBDA", "H. c #BFC1D5", "I. c #C8C9D9", "J. c #A4A6A6", "K. c #F2F2AD", "L. c #FEFCAF", "M. c #FFFBAE", "N. c #FEF9AF", "O. c #C1B7A0", "P. c #C8C4B0", "Q. c #E7EDCF", "R. c #E7EACB", "S. c #E7E5C8", "T. c #E8E1C4", "U. c #D0C7AB", "V. c #BDBFCF", "W. c #C4C5D8", "X. c #C3C5D7", "Y. c #CCCDDB", "Z. c #BEBFD5", "`. c #BABAA2", " + c #FFF9AE", ".+ c #FFF8AE", "++ c #E8E0AB", "@+ c #E6F0D4", "#+ c #E7F4D9", "$+ c #E7F2D5", "%+ c #E7EED0", "&+ c #E7EACA", "*+ c #E7E4C6", "=+ c #BAB8B8", "-+ c #C8C9D7", ";+ c #C2C3D3", ">+ c #C3C3D3", ",+ c #C5C5D2", "'+ c #C0C1D1", ")+ c #C5C6D2", "!+ c #C8C9D3", "~+ c #C9C9D3", "{+ c #BEC0CE", "]+ c #C3C3D1", "^+ c #C4C4D3", "/+ c #C2C3D4", "(+ c #C5C6D6", "_+ c #B5B6C2", ":+ c #F0EBAC", "<+ c #FFF7AE", "[+ c #FFF6AE", "}+ c #FCF2AE", "|+ c #A59996", "1+ c #A59B99", "2+ c #E7F8D8", "3+ c #E6F9DB", "4+ c #E7F8DA", "5+ c #E7F6D9", "6+ c #E7F3D6", "7+ c #E0E6C7", "8+ c #BABBC2", "9+ c #C2C3CA", "0+ c #CCCDCC", "a+ c #C7C6C7", "b+ c #C7C8C5", "c+ c #BFBEBB", "d+ c #B6B6B0", "e+ c #B4B3AF", "f+ c #C9C9C0", "g+ c #C6C6C1", "h+ c #C3C4C1", "i+ c #C5C5C5", "j+ c #C9CACB", "k+ c #C6C7CB", "l+ c #C0C0CB", "m+ c #DBD7AC", "n+ c #FFF4AE", "o+ c #FFF2AE", "p+ c #FEF2AE", "q+ c #C1B59F", "r+ c #B5B0A4", "s+ c #E6FBD3", "t+ c #E6FBD6", "u+ c #E6FBD8", "v+ c #E6FBD9", "w+ c #E7F9DA", "x+ c #D9E6C6", "y+ c #C0C0BA", "z+ c #C7C6BC", "A+ c #CDCCBC", "B+ c #CDCDBA", "C+ c #B9B8A7", "D+ c #C6C5B0", "E+ c #CECDB4", "F+ c #CAC8B2", "G+ c #CCCBB3", "H+ c #CAC8AF", "I+ c #C0BFA7", "J+ c #C6C4B2", "K+ c #CAC9B7", "L+ c #CBC9B8", "M+ c #CBCABB", "N+ c #C8C7BD", "O+ c #C7C7BF", "P+ c #DFDAB2", "Q+ c #FEF0AE", "R+ c #FDF0AE", "S+ c #D6CBA6", "T+ c #B7B4A5", "U+ c #E5FBCA", "V+ c #E5FBCC", "W+ c #E6FBCE", "X+ c #E6FBD0", "Y+ c #D8E9C0", "Z+ c #B4B99F", "`+ c #C7C6B0", " @ c #CCCAAE", ".@ c #CECCAC", "+@ c #CBC8A5", "@@ c #CAC8A3", "#@ c #CECCA5", "$@ c #C6C39D", "%@ c #ADAB8B", "&@ c #CECBA0", "*@ c #D3D0A5", "=@ c #C8C59E", "-@ c #C6C3A0", ";@ c #CECCA7", ">@ c #CECBA9", ",@ c #CDCCAB", "'@ c #CDCCAE", ")@ c #CCCAB2", "!@ c #DFDAAC", "~@ c #FDF0AD", "{@ c #FDEFAD", "]@ c #FDEFAC", "^@ c #DBCEA5", "/@ c #B5B4A2", "(@ c #E4F9BF", "_@ c #E4F9C1", ":@ c #D7E6B1", "<@ c #ABAF8F", "[@ c #CDCAA7", "}@ c #CECBA5", "|@ c #CFCDA1", "1@ c #D1CE9F", "2@ c #BDBA8C", "3@ c #D4CF9A", "4@ c #CFCB95", "5@ c #D4D095", "6@ c #D9D49A", "7@ c #BCB988", "8@ c #D0CD98", "9@ c #D1CD9B", "0@ c #D2CF9E", "a@ c #D2CEA2", "b@ c #D0CDA5", "c@ c #E5DFA8", "d@ c #FCEDAA", "e@ c #FCECAA", "f@ c #FCEBAA", "g@ c #DACBA1", "h@ c #B5B49E", "i@ c #E2F7B3", "j@ c #E1F7B2", "k@ c #E1F5B1", "l@ c #DEE4AA", "m@ c #D5D19F", "n@ c #D5D19A", "o@ c #D1CE94", "p@ c #D4CF91", "q@ c #BAB67C", "r@ c #D9D48E", "s@ c #CAC682", "t@ c #D2CD85", "u@ c #DBD68B", "v@ c #BDB778", "w@ c #D2CD8A", "x@ c #D6D28E", "y@ c #DFDB9A", "z@ c #EAE5A4", "A@ c #F0E8A8", "B@ c #F7E7A7", "C@ c #FAE7A7", "D@ c #D9C9A1", "E@ c #B5AF9C", "F@ c #E1F4A8", "G@ c #E2F4A7", "H@ c #E3F4A7", "I@ c #E0EFA3", "J@ c #C9CC8F", "K@ c #DAD593", "L@ c #D7D38D", "M@ c #D6D188", "N@ c #D8D384", "O@ c #BDB771", "P@ c #DED881", "Q@ c #D9D37C", "R@ c #C4BE6F", "S@ c #CEC97B", "T@ c #C3BD6D", "U@ c #DDD67A", "V@ c #DBD47B", "W@ c #C8C271", "X@ c #E5DE91", "Y@ c #F3E7A2", "Z@ c #F7E1A3", "`@ c #F8DFA3", " # c #F9E1A5", ".# c #F9E2A5", "+# c #D5C5A1", "@# c #A49B95", "## c #E6F1A7", "$# c #E5F2A4", "%# c #E6F2A4", "&# c #DCE59C", "*# c #CCCB88", "=# c #DDD888", "-# c #DAD481", ";# c #DBD57C", "># c #DBD478", ",# c #D6CF72", "'# c #C5BF65", ")# c #DFD871", "!# c #E0D86F", "~# c #DDD66D", "{# c #DFD76D", "]# c #DDD66C", "^# c #BDB65E", "/# c #EFE396", "(# c #F4D89F", "_# c #F5D9A0", ":# c #F6DAA1", "<# c #F7DBA2", "[# c #F7DDA3", "}# c #F8DEA3", "|# c #F7DEA3", "1# c #BFAF9B", "2# c #E6EEA6", "3# c #E5F1A2", "4# c #E6F1A2", "5# c #E6F0A1", "6# c #DFE092", "7# c #DFD87C", "8# c #DFD877", "9# c #DED771", "0# c #DFD86A", "a# c #CEC75D", "b# c #BEB854", "c# c #DED65F", "d# c #E1D85F", "e# c #DBD35D", "f# c #B9B24E", "g# c #E6DC88", "h# c #F1D29B", "i# c #F3D39E", "j# c #F4D49F", "k# c #F5D6A0", "l# c #F5D8A0", "m# c #F5D9A1", "n# c #F6DBA2", "o# c #F5DCA3", "p# c #A49695", "q# c #C8C5A0", "r# c #E8F2A2", "s# c #E9F2A1", "t# c #EBF2A0", "u# c #DFDE8D", "v# c #E0D872", "w# c #E2DA6C", "x# c #E3DB6C", "y# c #E9E277", "z# c #E3DA60", "A# c #E5DC5A", "B# c #E2D956", "C# c #CAC24A", "D# c #C2BA46", "E# c #CBC249", "F# c #E4D95F", "G# c #EFD39A", "H# c #F1D09C", "I# c #F2D29C", "J# c #F3D29D", "K# c #F3D49E", "L# c #F4D59F", "M# c #F5D7A0", "N# c #E4CEA1", "O# c #A79D96", "P# c #ECF1A2", "Q# c #EDF3A0", "R# c #EFF4A0", "S# c #F1F49F", "T# c #F3F49E", "U# c #F4F49C", "V# c #F3F29A", "W# c #F1EE98", "X# c #F3EE96", "Y# c #E8DD53", "Z# c #E9DF4C", "`# c #E9DE4A", " $ c #EADF47", ".$ c #E7DC46", "+$ c #ECE372", "@$ c #EFCF9A", "#$ c #F0D09B", "$$ c #F1D19C", "%$ c #F2D29D", "&$ c #F5D59F", "*$ c #F4D8A0", "=$ c #C0AF9B", "-$ c #CDC99F", ";$ c #F1F5A0", ">$ c #F2F69F", ",$ c #F3F79E", "'$ c #F2F29D", ")$ c #F2EF9C", "!$ c #F1EB9C", "~$ c #F1E79B", "{$ c #EFE47C", "]$ c #ECE041", "^$ c #EDE23D", "/$ c #EDE13B", "($ c #EBDF39", "_$ c #D1C845", ":$ c #E4CE87", "<$ c #F0CF9B", "[$ c #F1D09B", "}$ c #F3D29E", "|$ c #E4CB9F", "1$ c #968990", "2$ c #9C9092", "3$ c #E3E49F", "4$ c #F3F69D", "5$ c #F3F49D", "6$ c #F2F19D", "7$ c #F2EE9C", "8$ c #F1E79C", "9$ c #F0E39B", "0$ c #F0E397", "a$ c #EEE138", "b$ c #F0E432", "c$ c #EFE32F", "d$ c #F0E32E", "e$ c #ECDF2D", "f$ c #BEB235", "g$ c #DAC77E", "h$ c #F2D19C", "i$ c #EED29E", "j$ c #AE9E96", "k$ c #A79D95", "l$ c #E9E89D", "m$ c #F2F09D", "n$ c #F1E89C", "o$ c #F0E49B", "p$ c #F0E09B", "q$ c #F0DD9A", "r$ c #F2E67F", "s$ c #F4E86C", "t$ c #F5E86A", "u$ c #F5E769", "v$ c #F4E669", "w$ c #F4E66B", "x$ c #DBCE6B", "y$ c #DECC82", "z$ c #F1D19B", "A$ c #F1D29C", "B$ c #F0D19C", "C$ c #BEAC98", "D$ c #B0A597", "E$ c #E8E49D", "F$ c #F0E89B", "G$ c #F0E59B", "H$ c #F0E29B", "I$ c #F0DE9B", "J$ c #F0DB9B", "K$ c #EFD99B", "L$ c #EFD59B", "M$ c #EFD39B", "N$ c #EFD29B", "O$ c #EFD09B", "P$ c #EFCF9B", "Q$ c #F0CF9A", "R$ c #EED09C", "S$ c #C4B098", "T$ c #AA9F96", "U$ c #E1D99D", "V$ c #F1E69C", "W$ c #F0E39A", "X$ c #F0DD9B", "Y$ c #EFDA9B", "Z$ c #EFD89B", "`$ c #EFD19B", " % c #EACE9C", ".% c #B9A797", "+% c #998C91", "@% c #C8BD9A", "#% c #EEE2A0", "$% c #EFD79B", "%% c #EFD09A", "&% c #EFD19D", "*% c #D7C09B", "=% c #A39593", "-% c #A09393", ";% c #C6B99A", ">% c #E2D19D", ",% c #EED99E", "'% c #EED69B", ")% c #EFD49B", "!% c #EED19C", "~% c #E7CC9D", "{% c #D0BA9B", "]% c #A99994", "^% c #A09392", "/% c #B2A496", "(% c #B7A795", "_% c #B7A593", ":% c #B7A594", "<% c #B6A697", "[% c #A49693", "}% c #95878F", " . . . . . . . ", " . . + @ # $ % & * = - . . ", " . . ; > , ' ) ! ~ { ] ^ / ( _ : . ", " . < [ } | 1 2 3 4 ~ 5 6 7 8 9 0 a b . ", " . c d e f g h i j k l m n o p q r s t u . ", " . v w x y z A B C D E F G H I J K L M N O P . ", " . Q R S T U V W g X Y Z ` ...+.@.#.$.%.&.*.=.-.. ", " . ;.>.,.'.S ).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.. ", " 7.8.9.0.a.'.b.c.d.e.f.g.h.<.i.j.f.k.l.m.n.o.p.q.r.s.t. ", " . u.v.w.x.y.z.A.B.C._.D.E.g.F.G.H./.I./.k.f.J.K.L.M.N.O.. ", " . P.Q.R.S.T.9.U.V.i.g._.W.E.X.Y._.Z.F._.F.X.^.`.M. +.+++. ", " - @+#+$+%+&+*+=+[.-+;+>+,+'+)+!+~+{+]+^+/+(+m._+:+<+[+}+|+ ", ". 1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+d+f+g+h+b+i+j+k+l+m+n+o+p+q+. ", ". r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+R+S+. ", ". T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@. ", ". /@(@_@_@:@<@[@}@|@1@2@3@4@ 5@6@7@8@9@0@a@b@c@d@e@f@g@. ", ". h@i@j@i@k@l@m@n@o@p@q@r@s@ t@u@v@w@x@y@z@A@B@C@C@C@D@. ", ". E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #.#.#.#.#+#. ", ". @###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#[#}#|#`@1# ", " t.2#3#4#5#6#7#8#9#{#0#a#b#c#d#e#f#g#h#i#j#k#l#m#:#n#<#o#p# ", " . q#r#s#t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#J#K#L#k#M#l#_#N#: ", " . O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$I#%$i#K#L#&$*$=$. ", " . -$;$>$,$T#'$)$!$~${$]$^$/$($_$:$<$[$H#I#I#}$J#K#|$1$ ", " . 2$3$4$5$6$7$!$8$9$0$a$b$c$d$e$f$g$<$[$H#$$I#h$i$j$. ", " . k$l$m$7$!$n$o$p$q$r$s$t$u$v$w$x$y$<$H#z$A$B$C$. ", " . D$E$!$F$G$H$I$J$K$L$M$N$O$P$P$<$<$Q$<$R$S$. ", " . T$U$V$W$p$X$Y$Z$L$M$N$`$O$P$<$Q$<$ %.%. ", " . +%@%#%I$J$K$$%G#M$%%O$@$P$P$&%*%=%. ", " . -%;%>%,%'%)%N$N$N$!%~%{%]%. . ", " . . 7.^%/%(%_%:%<%[%}%. . ", " . . . . . . . ", " "}; Cynthiune-1.0.0/Images/add.tiff000644 001751 000024 00000003072 11733546670 016764 0ustar00multixstaff000000 000000 II*ò¡òþþþþþþþþþþþþþþþþþþùöþ'8ýÿÿÿÿÿÇÿþ'8þýúþ þ'RýÿÿÿÿÿÇÿþ'Rþ þúþþ'`ýÿÿÿÿÿëÿþÿþºäÿþ'aþþúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿþÿþ`ÿþºÿþììÿþ'cþþúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿþüÿþ`ÿþ<ìÿþ'cþþúþþ'cýÿÿÿÿÿëÿþÿþºäÿþ'cþþúþþ'cýÿÿÿÿÿëÿþÿþ`ÿþºÿþììÿþ'cþþúþþ'cýÿÿÿÿÿëÿþüÿþ`ÿþ<ìÿþ'cþþúþþ'cáÿþàÿþ'cþþúþþ'cáÿþàÿþ'cþþúþþ'cíÿþºÿþÿþÿþ!àÿþ'cþþúþþ'cíÿþÿþÿþÿþàÿþ'cþþúþþ'cíÿþ"ÿþÿþÿþ àÿþ'cþþúþþ'cíÿþºÿþÿþÿþºàÿþ'cþþúþþ'c½ÿþ'cþþúþþ'c½ÿþ'cþþúþþ'cþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ#ÿþ'cþþúþþ'cþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ'cþþúþþ'`þÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþÿþ'aþþúþ þ2þoþŽþ’þ“þ“þ“þ“þ“þ“þ“þ“þ“þ“þ“þ“þŽþoþ2þ þöþþ*þ6þ7þ8þ8þ8þ8þ8þ8þ8þ8þ8þ8þ8þ8þ6þ*þþýòþþþþþþþþþþþþþþþþþþùþЀ <Ø@ê*2(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/add.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/anim-logo-1.tiff000644 001751 000024 00000002070 11733546670 020251 0ustar00multixstaff000000 000000 II*Ñòóöÿÿÿÿÿÿ÷øÿÿÿÿÿÿÿÿÿÿùú"ÿÿÿÿÿÿÿÿÿÿÿÿûüÿÿÿÿÿÿÿÿÿøÿýþ'ÿÿÿÿÿÿÿÿÿøÿ'ÿþ ÿÿÿÿÿÿÿÿÿÿöÿ ÿþ*ÿÿÿÿÿÿÿÿÿÿöÿ+ÿ9ÿÿÿÿÿÿÿÿÿÿöÿ:CÿÿÿÿêÿCHÿÿÿÿêÿHHÿÿÿÿêÿHCxÿÿÿìÿ xC:jÿÿÿìÿ k:þ+V†éÿ †V+ÿþ  >k”íÿ •k? ÿþ'Ks”«õÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ Dä@ (0(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-1.tiff€LõG€LõGCynthiune-1.0.0/Images/anim-logo-2.tiff000644 001751 000024 00000002116 11733546663 020255 0ustar00multixstaff000000 000000 II*(Ñòóöÿÿÿÿÿÿ÷øÿÿÿÿÿÿÿÿÿÿùú"ÿÿÿÿÿÿÿÿÿÿÿÿûü&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþ*'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿþ* ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿþ*ÿÿÿÿÿxþÿ@ÿÿÿÿÿÿÿEÿÿ+ÿ9ôÿ8ÿÿÿtúÿ @ÿÿÿÿÿäþÿ Lÿ:Cÿÿøÿ#ÿköÿ@ÿÿÿßúÿCHýÿûòÿOÿÝøÿHHýÿþæÿH Cxåÿ xC :jåÿ k:þ+V†éÿ †V+ÿþ  >k”íÿ •k? ÿþ'Ks”«õÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ Dú@>F(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-2.tiff€LõG€LõGCynthiune-1.0.0/Images/anim-logo-3.tiff000644 001751 000024 00000002104 11733546663 020253 0ustar00multixstaff000000 000000 II*Ñòóöÿÿÿÿÿÿ÷øÿÿÿÿÿÿÿÿÿÿùú"ÿÿÿÿÿÿÿÿÿÿÿÿÿûüýÿÿÿÿÿÿÿÿÿÿÿÿÿýþ'ýÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿþ ñÿÿÿÿÿÿÿÿÿ ÿþ*ñÿÿÿÿÿÿÿÿÿ+ÿ9ñÿÿÿÿÿÿÿÿÿ:CñÿÿÿÿÿÿÿÿÿCHñÿÿÿÿÿÿÿÿÿHHñÿÿÿÿÿÿÿÿÿH Cxéÿ ÿÿxC :jéÿ ÿÿk:þ+V†ëÿ ÿ†V+ÿþ  >k”íÿ •k? ÿþ'Ks”«õÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ Dð@4<(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-3.tiff€LõG€LõGCynthiune-1.0.0/Images/anim-logo-4.tiff000644 001751 000024 00000002126 11733546670 020256 0ustar00multixstaff000000 000000 II*0Ñòóöûÿ ôÿÿÿ÷øùÿøÿ8ÿÿÿÿÿùúûÿþÿûÿ#ÿÿÿÿÿÿÿûüõÿkÿÿÿÿÿÿÿÿýþ'óÿtÿÿÿÿÿÿÿ'ÿþ ïÿxÿÿÿÿÿÿÿ ÿþ*íÿÿÿÿÿÿÿ+ÿ9ïÿ@ÿÿÿÿÿÿÿ:Cñÿ@ÿÿÿÿÿÿÿÿCHóÿ@ÿÿÿÿÿÿÿÿÿHHõÿOÿÿÿÿÿÿÿÿÿÿH Cx÷ÿÝÿÿÿÿÿÿÿÿÿxC :jõÿßÿÿÿÿÿÿÿÿk:þ+V†õÿäÿÿÿÿÿÿ†V+ÿþ  >k”õÿEÿÿÿÿ•k? ÿþ'Ks”«ûÿLÿÿÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ D@(FN(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-4.tiff€LõG€LõGCynthiune-1.0.0/Images/anim-logo-5.tiff000644 001751 000024 00000002102 11733546670 020251 0ustar00multixstaff000000 000000 II*Ñòóöõÿ÷øíÿùúéÿûüíÿ ÿÿÿÿýþ'íÿÿÿÿÿ'ÿþ ëÿÿÿÿÿÿ ÿþ*ëÿÿÿÿÿÿ+ÿ9ëÿÿÿÿÿÿ:C÷ÿÿÿÿÿÿÿÿÿÿÿÿCH÷ÿÿÿÿÿÿÿÿÿÿÿÿHH÷ÿÿÿÿÿÿÿÿÿÿÿÿH CxùÿÿÿÿÿÿÿÿÿÿÿxC :jùÿÿÿÿÿÿÿÿÿÿÿk:þ*+V†ÿÿÿÿÿÿÿÿÿÿÿÿ†V+ÿþ* >k”ÿÿÿÿÿÿÿÿÿÿ•k? ÿþ*'Ks”«ÿÿÿÿÿÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ Dî@2:(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-5.tiff€LõG€LõGCynthiune-1.0.0/Images/anim-logo-6.tiff000644 001751 000024 00000002116 11733546670 020257 0ustar00multixstaff000000 000000 II*(Ñòóöõÿ÷øíÿùúéÿûüåÿýþ'åÿ'ÿþ çÿþüÿ ÿþ*ùÿÝÿOòÿûüÿ+ÿ9ûÿßÿÿÿ@öÿkÿ#ÿøþÿ:CLþÿ äÿÿÿÿÿ@úÿtÿÿÿ8ÿôÿCHÿEÿÿÿÿÿÿÿ@þÿxÿÿÿÿÿÿH/HÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿH/CxÿÿÿÿÿÿÿÿÿÿÿÿÿÿxC/:jÿÿÿÿÿÿÿÿÿÿÿÿÿÿk:þ*+V†ÿÿÿÿÿÿÿÿÿÿÿÿ†V+ÿþ* >k”ÿÿÿÿÿÿÿÿÿÿ•k? ÿþ*'Ks”«ÿÿÿÿÿÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ Dú@ >F(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-6.tiff€LõG€LõGCynthiune-1.0.0/Images/anim-logo-7.tiff000644 001751 000024 00000002070 11733546671 020260 0ustar00multixstaff000000 000000 II*Ñòóöõÿ÷øíÿùúêÿûüÿèÿýþ 'ÿèÿ'ÿþ ÿÿÿÿÿÿÿðÿ ÿþ*ÿÿÿÿÿÿÿðÿ+ÿ9ÿÿÿÿÿÿÿðÿ:CÿÿÿÿÿÿÿðÿCHÿÿÿÿÿÿÿðÿHHÿÿÿÿÿÿÿðÿH Cxÿÿÿÿÿÿÿÿÿÿÿüÿ xC :jÿÿÿÿÿÿÿÿÿÿÿüÿ k:þ+V†ÿÿÿÿÿÿÿÿÿÿþÿ †V+ÿþ* >k”ÿÿÿÿÿÿÿÿÿÿ•k? ÿþ*'Ks”«ÿÿÿÿÿÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ Dä@ (0(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-7.tiff€LõG€LõGCynthiune-1.0.0/Images/anim-logo-8.tiff000644 001751 000024 00000002106 11733546663 020262 0ustar00multixstaff000000 000000 II* Ñòóö ÿÿLúÿ÷ø ÿÿÿEôÿùúÿÿÿÿÿäôÿûüÿÿÿÿÿÿÿßôÿýþ'ÿÿÿÿÿÿÿÿÝöÿ'ÿþ ÿÿÿÿÿÿÿÿÿOôÿ ÿþ*ÿÿÿÿÿÿÿÿ@òÿ+ÿ9ÿÿÿÿÿÿÿ@ðÿ:Cÿÿÿÿÿÿ@îÿCHÿÿÿÿÿìÿHHÿÿÿÿÿÿxîÿHCxÿÿÿÿÿÿtòÿ xC:jÿÿÿÿÿÿÿkôÿ k:þ+V†ÿÿÿÿÿÿ#ÿûÿþúÿ †V+ÿþ >k”ÿÿÿÿ8ÿøøÿ •k? ÿþ'Ks”«ÿÿôúÿ«•sK'ÿü&,Kk†š¥ªª¦š†kK,ýú"'>Vjx~~xjV>'ûø+9CHHC9+ùö  ÷ôõî ïþ€ Dò@6>(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/anim-logo-8.tiff€LõG€LõGCynthiune-1.0.0/Images/eject.tiff000644 001751 000024 00000002326 11733546675 017334 0ustar00multixstaff000000 000000 II*®¡¡¡Õþ.þ Åþ ÙÖþ½þÈþ£þÝÚþ ¢þ¤þ'þ³þ~ÝÝþ …þ¬þ-{þ2mþ*†þ»þ Yááþ^þ·þ+‚þ4iþ6fþ2mþ'Žþ¿þ 6ååþ:þ»þ)Šþ4lþ6fþ6eþ5fþ1pþ$—þ»þééþþ¹þ&“þ2oþ6fþ6eþ6eþ6eþ5gþ0uþ ¡þ®þíêþ­þ!þ0sþ5fþ6eþ6eþ6eþ6eþ6eþ5hþ.{þ¬þ•þñíþ•þ¨þ/xþ4gþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ4iþ,þ·þrññþ sþ³þ,þ5iþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ4lþ)‰þ½þ MõõþOYþÎôþÓêþÖãþÖàþÖàþÖàþÖàþÖàþÖàþÖàþÖàþÖàþÖàþÖáþÕäþÒíþÊëþ'2ùõþ]jþqþqþqþqþq~þq~þq~þq~þq~þq~þq~þq~þq~þp}þp}þp}þp}þFSù¡¡õþ ªþ Äþ Ãþ Ãþ Ãþ Ãþ Ãþ Ãþ Ãþ Âþ ÑþÏþÏþÏþÏþÏþÏþ Òþˆùõþ§þ®þªþªþªþªþªþªþ©þ§þ¤þ £þ £þ £þ £þ £þ £þ¬þƒùõþT þl¤þnŸþnŸþnŸþnŸþnŸþmžþmžþnžþnþoþoþoþoþoþnþl§þA‚ùõþÃÏþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþëðþ‡œù¡¡¡þ€€ >ˆ@¦ÆÎ(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/eject.tiffHHCynthiune-1.0.0/Images/cleanup.tiff000644 001751 000024 00000002716 11733546671 017670 0ustar00multixstaff000000 000000 II*¤Á |FøíÁ%Pe9ÕþíÁU6‘I)šéÅÿ …P)Ô\éÅÿ )ŠQ'ù#éÅ)je8ÐþéÉ (qQ.éN-…îùÍ £r5æ¶q&ÿ¤g#Ú úþþþþÑÿuT*ËÜ”.ÿ¼n ÿž_!éþþþþþ þÑFÓ—;ÿÔ‘4ÿÑ‚(ÿN.xþþþþ#þ%þþ ÑP>(oÞ¦HÿÖ’6ÿÓŠ.ý.þ þþ*þ9þ3þþ Õ ®UÛʈ4ÿÀ/ÿº~3ëþþ2þFþHþ4þþÖaR;ŽÂ|.ÿØ”5ÿÍ‚+ÿŠ9èþ(þBþ]þeþQþ.þþÙU†>ýÖ•9ÿÊ„.ÿ×”7ÿ«v.âþQþvþ‰þyþOþ$þ þÝ §…WêÓ5ÿÛ?ÿÒŠ2ÿÚ—8ÿ£y;âþƒþ£þŸþvþ@þþþÝdTB—½…;ÿÜŸBÿÛCÿΑAÿÛ¨QÿšxBäþ±þ»þœþbþ,þþýáþ'B³GüÙ¢LÿÕ NÿÓ–Bÿ¿†?ÿפSÿ‰qFëþÏþÀþþKþþþýæ$ ¥‚[ÝÄJÿÕ¥VÿØ£RÿÊ>ÿÓ¨_ÿØ¥TÿeV7òþÛþ¸þwþ8þþùê(„saÂʘNÿΗJÿÖ¤UÿÙ§WÿÌ’BÿÛ¹qÿÓJÿXRBõþ×þ¦þbþ(þ þùòþþ(|n[À¿˜UÿÛ®^ÿÔ«dÿÙ«^ÿà®UÿÔ®jÿá€ÿÊŸWÿ;=7òþÉþþKþþõòþ ,›{ÏÄ£gÿЪeÿÖ¸|ÿ׬eÿà´eÿÔ©`ÿß¼rÿÛµnÿ·]ÿ #!ãþ°þrþ6þþõöþ 0ŸŒlºÃ›\ÿáÂÿ̨jÿЭqÿáÁ{ÿÉž_ÿÏ®rÿߺoÿÓ®hÿ™~\ÿ ºþ‡þPþ!þ þõö4d^St’rDÂybA»V8³~^3Ȇ`2Ø}Y1ãŸyDõ»OüÄ¢fÿ¹ŒJÿyhSóvþSþ-þþñòþ þþþ&þ+þ/4 D \ v Jþ5þ$þþþñþv€ @~@›¾Æ(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/cleanup.tiffHHCynthiune-1.0.0/Images/common_ToolbarSeparatorItem.tiff000644 001751 000024 00000000660 11733546663 023710 0ustar00multixstaff000000 000000 II*húÿýõúÿýõúÿýõúÿýõúÿýõúÿýõúÿýõúÿýõúÿýõúÿýõúÿýõúÿýõþF€ ;NŠ@` ¨(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/sep.tifCreated with The GIMPHHCynthiune-1.0.0/Images/cynthiune-splash-faded.tiff000644 001751 000024 00000302452 11733546670 022577 0ustar00multixstaff000000 000000 II*¾ƒp}†ÿr}†ÿsˆÿtˆÿs€‰ÿr‰ÿq‰ÿp}ˆÿu‚‰ÿt€‰ÿu€ŠÿxƒŠÿyƒ‰ÿx‚‰ÿw‰ÿx‚‰ÿv€‰ÿu€ˆÿu€‰ÿw‚‰ÿw‚‰ÿv‰ÿu€‰ÿv‰ÿy„‰ÿw‚‰ÿw‰ÿyƒ‰ÿ{ƒ‰ÿzƒ‰ÿy‚‰ÿz‚‰ÿx‚‰ÿx‚‰ÿy‚‰ÿy„‰ÿxƒ‰ÿt€ˆÿsˆÿsˆÿp~ˆÿs€‰ÿt€‰ÿr~‰ÿr~ˆÿu‚‰ÿy„‰ÿxƒ‰ÿuˆÿv€ˆÿw‰ÿw‰ÿu‰ÿs}‰ÿs~‰ÿu‰ÿu€‰ÿw‚‰ÿu‰ÿsˆÿs‰ÿu€ŠÿwŠÿu‰ÿx‰ÿw‰ÿw€‰ÿx‰ÿy‚‰ÿyƒ‰ÿyƒŠÿzƒŠÿx‚Šÿx‚‰ÿx‚‰ÿx‚‰ÿyƒ‰ÿyƒ‰ÿx‚‰ÿw€‰ÿu€‰ÿt€‰ÿu‰ÿyƒŠÿ{…Šÿz„‰ÿw‚‰ÿtˆÿw€‰ÿyƒ‰ÿyƒŠÿw€ˆÿx‚‰ÿ}…Šÿ~…Šÿ{„Šÿ|„Šÿ|„Šÿ}„Šÿ~…Šÿ€†Šÿ€†Šÿ€…Šÿ…Šÿ|ƒ‰ÿ|ƒˆÿ|ƒ‰ÿ|ƒ‰ÿ}ƒ‰ÿ~„Šÿ~…Šÿ…Šÿ~…Šÿ~…Šÿ}„Šÿ}„‰ÿ€†‹ÿ€†‹ÿ€†‹ÿ‚†Šÿ‚‡Šÿ‚†Šÿ‚†Šÿ‚‡Šÿ†Šÿ€…‰ÿ†Šÿ‚‡Šÿƒ‡Šÿƒ‡‹ÿ‚‡‹ÿƒ‡‹ÿ„ˆ‹ÿƒ‡Šÿƒ†Šÿ„ˆŠÿ„ˆŠÿ„ˆŠÿƒ†Šÿƒ†Šÿ‚†Šÿ‚†Šÿƒ‡Šÿƒ‡Šÿ‚‡Šÿ€…‰ÿ„ˆÿ„ˆÿ~„ˆÿ€…‰ÿ€…‰ÿ„‰ÿ„ˆÿ†‰ÿ‚†‰ÿ‚†‰ÿ€…ˆÿ€„ˆÿ…‰ÿ…‰ÿ€„‰ÿ„‰ÿ„‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ„ˆÿ~ƒ‡ÿ~ƒˆÿ€„‰ÿ€…‰ÿ„‰ÿ€…‰ÿ€…‰ÿ„ˆÿ€…‰ÿ…‰ÿ…‰ÿ€…ˆÿ€…‰ÿ€…‰ÿ€…‰ÿ„ˆÿ€…‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ„ˆÿ~„ˆÿ~„‰ÿ~„‰ÿ€…‰ÿ†‰ÿ€†‰ÿ…‰ÿ}ƒˆÿ~„‰ÿ…‰ÿ€…Šÿ}ƒˆÿ„‰ÿ‚†Šÿ‚†Šÿ€…Šÿ†Šÿ€†Šÿ†Šÿ‚†Šÿƒ‡Šÿƒ‡Šÿƒ‡Šÿƒ‡Šÿ€…‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ€†Šÿ‚†Šÿ‚†Šÿ†Šÿ€†Šÿ€…Šÿ…‰ÿ†Šÿ†Šÿ†Šÿ‚†Šÿƒ†‰ÿ‚†‰ÿ‚…‰ÿ‚†‰ÿ‚…‰ÿ€…‰ÿ…‰ÿƒ‡Šÿƒ‡Šÿ‚†Šÿ†Šÿ‚†ŠÿƒˆŠÿ‚†Šÿ‚†Šÿƒ†Šÿƒ‡Šÿ‚†Šÿ‚†‰ÿ‚†Šÿ…Šÿ…Šÿ‚†Šÿ‚‡Šÿ†Šÿ~…‰ÿ}„‰ÿ}„‰ÿ|ƒ‰ÿ~…Šÿ~…Šÿ|ƒŠÿ|ƒ‰ÿ~…Šÿ€‡Šÿ†Šÿ}„ˆÿ}„‰ÿ~…Šÿ~…Šÿ}„Šÿ{‚Šÿ{ƒŠÿ}„‹ÿ|„‹ÿ}…‹ÿ{„Šÿyƒ‰ÿy‚Šÿ{„‹ÿ{ƒŠÿz‚Šÿ{„Šÿ{ƒŠÿzƒŠÿ{ƒŠÿ{„Šÿ{„Šÿ{„Šÿ{…‹ÿzƒ‹ÿzƒ‹ÿyƒŠÿyƒŠÿyƒ‹ÿyƒŠÿx‚Šÿu€‰ÿs€‰ÿr‰ÿs‰ÿv‚Šÿx„ŠÿxƒŠÿs€Šÿo}ˆÿq~‰ÿt€Šÿt€Šÿq~‰ÿr‰ÿwƒŠÿxƒŠÿs€ŠÿuŠÿtŠÿv‚ŠÿxƒŠÿz„Šÿz…ŠÿyƒŠÿx‚‰ÿks‰ÿsˆÿrˆÿrˆÿsˆÿs‰ÿt€‰ÿt€‰ÿt€‰ÿr‰ÿr~‰ÿp~ˆÿt‰ÿs€‰ÿt‰ÿw‚‰ÿyƒ‰ÿx‚‰ÿw‰ÿxˆÿvˆÿt‡ÿuˆÿv€ˆÿu€‡ÿt†ÿs~†ÿq}‡ÿ«·Áÿ­¹Âÿ­ºÃÿ­ºÃÿ¬¹Ãÿ¬¹Ãÿ¬¹Ãÿ¯»Äÿ®ºÄÿ®»Äÿ°¼Äÿ²½Äÿ²¼Äÿ²¼Äÿ³½Äÿ±¼Äÿ¯ºÃÿ¯ºÃÿ°¼Äÿ±½Äÿ°¼Äÿ¯¼Äÿ°¼Äÿ³¾Äÿ²½Äÿ²½Äÿ³¾Äÿµ¾Äÿµ¾Äÿµ½Äÿ´½Äÿ³½Äÿ²½Åÿ³½Åÿ´¾Äÿ³¾Äÿ¯¼Ãÿ­ºÃÿ­ºÃÿ«¹Ãÿ­ºÄÿ®ºÄÿ¬¸Ãÿ¬¸Ãÿ¯»Äÿ²½Ãÿ²½Äÿ±¼Ãÿ°¼Ãÿ±¼Äÿ±»Äÿ¯ºÄÿ­¹Äÿ®¹Äÿ¯ºÄÿ¯»Äÿ°¼Äÿ°¼Äÿ®ºÃÿ®ºÃÿ¯ºÄÿ°»Äÿ°»Äÿ²¼Äÿ³½Äÿ³¼Åÿ³¼Åÿ³¼Åÿ³½Åÿ´¾Åÿ´¾Åÿ´½Åÿ´¾Åÿ³½Äÿ³¼Äÿ´¾Åÿµ¾Åÿ´½Åÿ²¼Äÿ±¼Åÿ°¼Äÿ¯»Äÿ²½Åÿµ¿Åÿ·ÀÅÿ´¾Åÿ±¼Äÿ²¼Äÿ³½Åÿ³¾Åÿ²¼Äÿ´½Äÿ·ÀÅÿ¸ÀÅÿ·¿Åÿ·¿Åÿ·¾Åÿ·¿Åÿ¹ÀÅÿºÁÅÿ»ÁÅÿºÀÅÿ¹ÀÄÿ¸¾Äÿ·¾Äÿ·¾Ãÿ·¾Äÿ·¾Ãÿ·¾Äÿ¸¿Åÿ¹ÀÅÿ¹ÀÅÿ¸¿Åÿ¸¿Äÿ·¾ÄÿºÀÅÿ¹ÀÅÿºÀÅÿ»ÀÅÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ»ÀÄÿº¿Ãÿº¿Ãÿ»ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ½ÂÄÿ½ÁÄÿ¼ÀÄÿ½ÁÄÿ½ÁÄÿ½ÁÄÿ½ÀÄÿ½ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÃÿ½ÀÃÿ¼ÀÃÿº¿Âÿ¹¾Âÿ¹¾Âÿ¸¾Âÿº¿Ãÿº¿Ãÿ¸¾Âÿ¸½Âÿº¿Ãÿ»ÀÃÿ¼ÀÃÿº¿Âÿº¿Âÿº¿Ãÿ»¿Ãÿº¾Ãÿ¹½Âÿ¹¾Ãÿ¹¾Ãÿº¾Ãÿ¹¾Âÿ¹¿Âÿ¹¾Âÿ¹¾Âÿ¹¾Ãÿ¹¾Âÿ¹¾Âÿ¹¾Âÿº¾Âÿ¹¾Âÿ¹¾Âÿº¾Ãÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿ¹¾Âÿº¾Ãÿº¿Ãÿ»¿Ãÿº¿Ãÿ¸¾Âÿ¹¾Ãÿ¸¾Ãÿ¸¾Ãÿ¹¿ÄÿºÀÃÿ»ÀÃÿº¿Äÿ¸¾Ãÿ¸¾Ãÿ¹¿Äÿ¹¿Äÿ¸¾Ãÿ¸¾ÃÿºÀÃÿ»ÀÃÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿ»¿Ãÿ¼ÀÄÿ¼ÀÃÿ¼ÀÃÿ¼ÀÃÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿ¹¿Ãÿº¿Äÿ»ÀÄÿ»ÀÄÿ»ÀÄÿºÀÄÿº¿Äÿ¹¿Ãÿ»ÀÄÿ»ÀÄÿ»ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ½ÀÄÿ½ÀÄÿ¼ÀÄÿ»¿Ãÿ»ÀÄÿ¼ÀÄÿ½ÂÅÿ¼ÁÅÿ¼ÁÅÿ¼ÀÅÿ½ÂÅÿ¼ÀÄÿ¼ÀÄÿ¼ÁÄÿ½ÁÄÿ½ÁÄÿ½ÁÅÿ¼ÀÄÿ¼ÀÄÿ»ÀÄÿ¼ÀÄÿ¼ÁÄÿ»ÀÄÿ¹ÀÄÿ¸¿Äÿ·¾Ãÿ¶¾Ãÿ¸¿Åÿ¸¿Åÿ·¾Äÿ¶½Äÿ¸¿Äÿ¹ÀÄÿºÀÄÿ¸¿Äÿ¸¾Ãÿ¸¿Äÿ¸¾Äÿ·¾Äÿµ½Äÿµ¼Äÿµ½Äÿµ½Äÿµ¾Äÿµ¾Äÿ³½Ãÿ³¼Ãÿ³½Äÿ³½Äÿ³½Äÿ´½Äÿµ½Äÿ´¼Äÿ´½Äÿ´½Äÿ´½Äÿ´¾Äÿ´¾Äÿ´½Äÿ³½Äÿ³¼Äÿ²¼Äÿ³½Äÿ³½Äÿ²¼Äÿ¯ºÃÿ®ºÄÿ¬¹Ãÿ«¸Ãÿ®ºÄÿ±½Äÿ²¾Äÿ®ºÄÿª¸Ãÿ«¸Ãÿ­ºÄÿ­ºÄÿ«¸Ãÿ¬¹Ãÿ°¼Äÿ±½Äÿ®¼Äÿ®ºÄÿ®ºÄÿ®ºÄÿ±½Äÿ³¾Äÿ´¾Åÿ³¾Åÿ²½Åÿk¯»Äÿ®ºÄÿ­ºÄÿ­ºÄÿ­¹Äÿ­ºÄÿ®»Åÿ¯¼Åÿ®¼Åÿ­»Åÿ¬ºÄÿ¬¹Äÿ¯¼Åÿ®»Äÿ¯¼Äÿ±½Åÿ²½Äÿ²¼Äÿ³¼Äÿ³½Åÿ²½Åÿ¯ºÃÿ®ºÃÿ¯»Ãÿ°»Ãÿ¯ºÂÿu€‰ÿr~ˆÿ«·Âÿi’ÿmƒ”ÿm…–ÿl…—ÿk„˜ÿj„—ÿn†™ÿq‰›ÿrŠšÿr‰šÿuˆšÿv‹šÿw‹™ÿvŠ™ÿv‹™ÿrˆ˜ÿq‡—ÿr‰™ÿt‹™ÿt‹™ÿr‰™ÿqˆ™ÿv‹˜ÿw‹˜ÿwŠ™ÿxŠ™ÿ{‹™ÿ}™ÿ~Žšÿ|ŒšÿwŠ™ÿvŠ™ÿv‹™ÿy™ÿy™ÿtŒ™ÿr‰˜ÿo‡˜ÿk…˜ÿn‡›ÿp‡šÿo†šÿn†˜ÿo‡™ÿvŒ›ÿz›ÿyŽ›ÿxŒšÿv‹›ÿwŠ›ÿs‰šÿp…›ÿp†›ÿr‡›ÿu‹›ÿvŒœÿvŒœÿvœÿu‹œÿqˆ›ÿqˆœÿu‰œÿvŠœÿ{œÿ{œÿyŠœÿwŠ›ÿzœÿ|Žœÿ|Žœÿ}œÿ|ŽœÿzŒ›ÿy‹›ÿ|Žœÿœÿ}œÿzœÿxÿtŠšÿq‡˜ÿsˆ™ÿzšÿ’šÿ}›ÿy‹šÿv‰™ÿy‹šÿzŒšÿz‹šÿzŒšÿ}Œšÿ€šÿ‚šÿšÿ~Ž™ÿ™ÿ€™ÿƒ˜ÿƒ—ÿ„—ÿƒŽ—ÿ—ÿ‹•ÿ}Š•ÿ|ˆ“ÿ{ˆ“ÿ}‰”ÿ‹–ÿ€–ÿ€–ÿ€–ÿŒ–ÿ}Š”ÿŒ–ÿ‚–ÿƒŽ–ÿƒ–ÿ…–ÿ…–ÿ†–ÿ†–ÿ†–ÿ…Ž–ÿ…Ž•ÿˆ‘˜ÿ‰’˜ÿˆ’˜ÿˆ‘˜ÿ‡‘˜ÿ‰’˜ÿŠ’˜ÿŠ’˜ÿŠ‘˜ÿ‹’˜ÿ”™ÿŒ“˜ÿ‹’˜ÿŠ‘˜ÿŠ’™ÿŠ“™ÿŒ•šÿŒ•šÿŠ”šÿ‰’™ÿ‡‘™ÿ†™ÿ‰“œÿŠ”œÿŠ“œÿˆ’šÿˆ’šÿŒ•œÿŽ—œÿŽ–œÿ•›ÿŒ•œÿŒ•œÿ‹”œÿŠ“œÿ‰“œÿ‰’›ÿŠ”›ÿŠ”›ÿŠ”›ÿŠ”›ÿˆ“šÿ†™ÿ†‘šÿ‡™ÿˆ‘šÿŠ“šÿŠ“šÿˆ‘™ÿ‡˜ÿ‰’™ÿ‰’™ÿ‰’™ÿ‰“™ÿŠ“šÿˆ‘™ÿˆ‘™ÿ‰“šÿŠ“šÿ‰“šÿˆ’šÿ‡’›ÿ„™ÿ‚Ž˜ÿ„™ÿ‰”›ÿ‹–›ÿŠ•›ÿ†‘šÿ„™ÿ†‘šÿ†‘™ÿ†™ÿ†™ÿˆ‘šÿŠ“šÿŠ“šÿˆ’šÿ‡‘™ÿˆ‘™ÿŠ“›ÿ‹”šÿŒ”šÿ•›ÿŽ–œÿ‹”›ÿŠ”›ÿ‰“›ÿˆ’šÿ†™ÿˆ‘šÿŠ”œÿŠ”›ÿ‰”›ÿ‰“›ÿ‡’šÿ†™ÿ‰’›ÿ‰“›ÿŠ”›ÿ‰“šÿŠ“šÿ‹”šÿŒ“šÿ‹“šÿ‹“šÿ‰’™ÿˆ‘˜ÿ‰’™ÿ‰“™ÿ‰“™ÿˆ’™ÿ‡’™ÿŠ“šÿŠ“šÿŠ“šÿ‹”›ÿŒ”›ÿ•›ÿ”šÿŠ“šÿ‰’šÿˆ‘šÿˆ’šÿ‰“šÿ‰“šÿ†’šÿƒ˜ÿŽ˜ÿ˜ÿ€Žšÿ‚šÿŽšÿ˜ÿ€˜ÿ„‘šÿ†’šÿ…’šÿ„™ÿƒšÿ‚šÿ€Žšÿ~‹šÿ}‹šÿ}Œšÿ~ŽšÿŽšÿ~Žšÿ~šÿ|šÿyŠ™ÿx‹šÿ{‹šÿ{Œšÿšÿ~šÿ|‹šÿzŠ™ÿ|šÿ}šÿ|Œšÿ{Ž™ÿ{Œšÿy‹™ÿxŠšÿy›ÿ{Ž›ÿyŒ›ÿuŠšÿq‰šÿn‡™ÿkƒ˜ÿl…™ÿtŒ›ÿz‘›ÿwŽœÿpˆ›ÿk„™ÿo†šÿoˆšÿo‡›ÿo‡›ÿq‰œÿu‹›ÿwŒ›ÿrŠ›ÿqˆšÿp‡šÿs‰›ÿxŒ›ÿy›ÿzŽ›ÿy›ÿktŠ›ÿr‰šÿo‡™ÿm†˜ÿl„™ÿn…šÿpˆ›ÿq‰›ÿp‰›ÿo‰›ÿm‡›ÿk…™ÿp‡›ÿp‰›ÿrŠšÿr‰šÿuˆšÿw‹šÿwŠ™ÿu‰™ÿu‰—ÿp„•ÿn‚“ÿm‚’ÿm‚ÿ­¹Àÿt‡ÿsŠÿ­ºÅÿm…šÿqŠÿsŸÿsŽ¡ÿsŽ¢ÿq¢ÿpŒ¡ÿw¢ÿx‘¢ÿuŽ ÿx ÿ}‘¢ÿ“¢ÿ|’¡ÿ}”¢ÿz‘¢ÿw¡ÿy¢ÿz’£ÿ{“£ÿy’£ÿy£ÿ{“¤ÿ–¤ÿ•¤ÿ~“¤ÿ€•¤ÿ†˜¤ÿ‡˜¤ÿ„–¤ÿ€“¤ÿ~“¤ÿ}“¢ÿ”£ÿ‚–£ÿ}•£ÿy’¢ÿtŽ¡ÿq¡ÿqŒ¢ÿt¡ÿu¡ÿt¡ÿq‹žÿwŸÿ~•¡ÿ•¡ÿ|”¡ÿz‘¡ÿz‘¢ÿy¢ÿwŽ¢ÿv¢ÿu¢ÿy‘¢ÿy‘¢ÿ{“£ÿ~•£ÿ|’£ÿvŽ¡ÿsŒ¡ÿx£ÿyŽ¢ÿ”¢ÿ‚”¢ÿ}‘£ÿ{ ÿ“£ÿ”£ÿ€”£ÿ„–£ÿ‚•£ÿ“¢ÿ€’¢ÿ”¢ÿƒ–¢ÿ‚•¢ÿ“¡ÿ~’£ÿ|’£ÿxŽ ÿvŸÿ}’¢ÿ…™£ÿ‡™£ÿ„–£ÿ}’¢ÿ~‘¡ÿ€“¢ÿƒ”£ÿ‚”¢ÿ“¡ÿ†–£ÿ‹š£ÿ‡—£ÿ‡—£ÿ†•¡ÿˆ–¢ÿŠ˜£ÿ‹™¢ÿŽš¢ÿ™¢ÿŠ˜¢ÿ‰–¡ÿ†”Ÿÿ„’žÿ„’žÿ…“Ÿÿ‡“Ÿÿˆ•Ÿÿ‰– ÿˆ– ÿˆ• ÿ†”žÿ†”žÿ‰•žÿ‹–Ÿÿ‰”ÿŠ•ÿŽ—Ÿÿ˜Ÿÿ–žÿŽ˜ŸÿŽ—ŸÿŒ–žÿ—Ÿÿ™ ÿ™ ÿŽ˜Ÿÿ–žÿŽ—žÿ™Ÿÿ˜Ÿÿ˜Ÿÿ˜Ÿÿ’™žÿ‘˜ÿ‘˜žÿ—žÿŽ—žÿ•œÿ—žÿ™žÿ˜žÿ—žÿŒ•žÿŠ•žÿ‹–Ÿÿ— ÿŽ˜ ÿ— ÿ‹•ÿŽ—žÿ‘š ÿ’š ÿš ÿ™ ÿ™ ÿ˜ ÿ˜¡ÿŽ—¡ÿ—¡ÿ™¡ÿŽ™ ÿš¡ÿ‘š¡ÿ™¡ÿ‹–Ÿÿ‹– ÿ˜¡ÿ— ÿš¡ÿ‘š¡ÿš¢ÿ–Ÿÿ™¡ÿš¡ÿš¡ÿ’›¢ÿ’œ£ÿš¢ÿ™¡ÿ›¢ÿ“œ£ÿ’œ£ÿš¢ÿš£ÿš£ÿŠ–¡ÿ‰• ÿŽš£ÿ’£ÿ“£ÿ‘›£ÿ‹—¡ÿŒ˜¡ÿŽ™¢ÿš£ÿŽ™¢ÿ˜¡ÿ‘œ¤ÿ”ž¤ÿ’œ¤ÿ‘œ¤ÿš¢ÿš¢ÿ“›£ÿ“£ÿ”£ÿ”£ÿ’œ£ÿ‘›£ÿ™¡ÿŒ— ÿŒ— ÿ˜¡ÿ™¢ÿ‘š£ÿ‘›£ÿœ¤ÿš£ÿŽ™¢ÿ˜¡ÿš¢ÿ‘›£ÿŽ˜ ÿ˜ ÿ‘š¡ÿ’›¡ÿ™ ÿ‘›¡ÿ™ ÿ˜Ÿÿ™ ÿš¡ÿš¡ÿ™¡ÿ˜¡ÿ™¡ÿš¡ÿ‘š¡ÿ™¡ÿ‘›¢ÿ“›¡ÿ“›¡ÿ’š¡ÿ˜¡ÿŽ˜¡ÿŽ˜¡ÿš¢ÿ›¢ÿŽ›¢ÿŒ™¢ÿ‰—¢ÿ‡–¢ÿ‡–£ÿ‰—£ÿ‰˜£ÿˆ–£ÿ…” ÿ‰—¡ÿŽ›£ÿ›£ÿ‹š¢ÿŠ˜£ÿ‰—£ÿ‡—£ÿ†•£ÿ…”£ÿ„“£ÿ†—¤ÿ…–£ÿ†˜¤ÿˆ™¤ÿ†—¤ÿ”¢ÿ“¤ÿ‚•¥ÿ‚”¤ÿ‡˜¥ÿ‰˜¥ÿ„–¥ÿ“£ÿ„–¥ÿ…˜¥ÿ„–¤ÿ‡˜¤ÿ…—¥ÿ‚•¤ÿ€“¤ÿ‚–¥ÿ„˜¥ÿ‚–¥ÿ~”¤ÿz’¤ÿw’¤ÿs¢ÿpŒ¡ÿw‘¥ÿ€˜¥ÿ˜¥ÿ|“¤ÿs¢ÿr¢ÿuŽ£ÿx‘¤ÿv¤ÿt£ÿz“¥ÿ€—¥ÿz’¥ÿz“¦ÿy‘¤ÿz’¥ÿ~”¦ÿ–¥ÿ‚—¥ÿ‚—¥ÿk}”¥ÿz’¥ÿv£ÿsŽ£ÿs£ÿtޤÿv¥ÿx‘¥ÿx’¥ÿv’¥ÿv‘¦ÿt¥ÿt¥ÿz“¦ÿ{”¦ÿx‘¤ÿz‘£ÿ”¥ÿ€•¤ÿ}“£ÿ~”£ÿz¡ÿužÿt‹ÿt‹›ÿ²¾Çÿx„ÿu‚Žÿ¯¼Èÿp‰ŸÿtŒ¢ÿu‘¤ÿw’¦ÿv’¨ÿv’©ÿu’©ÿz–ªÿ˜«ÿ{•©ÿ}–©ÿƒ™«ÿ†›ªÿƒšªÿ„›«ÿ™ªÿ}–©ÿ|•©ÿ~—ªÿ™«ÿš«ÿ~™¬ÿ™¬ÿ„¬ÿ†ž­ÿ…­ÿ†­ÿŒ ­ÿŽ¢®ÿŒ ®ÿˆ®ÿ†œ®ÿƒ›¬ÿ„œ¬ÿˆŸ®ÿ‡ ®ÿƒ®ÿ|—¬ÿy–¬ÿx”¬ÿ{•­ÿ˜­ÿ|–­ÿx”«ÿ}—¬ÿ†ž®ÿ‰¡¯ÿ‡ ®ÿ„®ÿ‚›®ÿ‚™®ÿ™®ÿ~˜®ÿ|–­ÿ™®ÿ€™­ÿ„¯ÿˆ ¯ÿ†Ÿ¯ÿ~™­ÿ}•¬ÿ€—­ÿ~—¬ÿ†›®ÿ‰ž®ÿ†œ®ÿƒš¬ÿ…›­ÿ‰®ÿŠ®ÿŽ¡®ÿ ®ÿ‹ž®ÿ‰­ÿ‹ž®ÿŒ ®ÿ ®ÿŠž®ÿ†œ®ÿ…œ®ÿ…›­ÿ™¬ÿ„š¬ÿŒ¡®ÿ‘¤®ÿ‘£­ÿˆœ¬ÿ†š«ÿ‰›¬ÿŸ­ÿ‹¬ÿ‰›ªÿž­ÿ’£­ÿ¡­ÿ ¬ÿŽž«ÿŽžªÿŸ«ÿ’¡«ÿ•¢«ÿ–¢«ÿ”¡«ÿ’ «ÿŸ«ÿŸªÿž«ÿž«ÿ‘Ÿ¬ÿ’ ¬ÿ’¡¬ÿ“¡¬ÿ’¡¬ÿ’¡¬ÿ‘ «ÿ•¡¬ÿ—¢¬ÿ”¡ªÿ–¢«ÿš¤­ÿœ¥­ÿ›¥­ÿ›¥¬ÿš¤¬ÿ—¢ªÿ–¡©ÿ˜¢«ÿ˜£ªÿ™¤«ÿ™¤¬ÿ™¤¬ÿ›¥¬ÿ›¥¬ÿœ¦­ÿœ¥¬ÿž¦¬ÿž§¬ÿž¦¬ÿœ¥¬ÿœ¥­ÿš¤«ÿ›¤«ÿ¦­ÿ§­ÿ›¦­ÿ˜£¬ÿ—£¬ÿ–¢¬ÿ˜£­ÿš¤­ÿ™£­ÿ•¡ªÿ˜¢«ÿœ¦­ÿ§­ÿœ¦¬ÿ›¥¬ÿš¤¬ÿš£¬ÿ™¤­ÿ˜£­ÿ–¡«ÿ˜£¬ÿ—¢«ÿ™¤¬ÿ›¦­ÿ›¦­ÿ–¢«ÿ•¡¬ÿ—£­ÿ—£­ÿœ¦¯ÿ§¯ÿ›¥®ÿ˜£¬ÿ™¤­ÿœ¥®ÿœ¦¯ÿž¨¯ÿ¨¯ÿœ§¯ÿ›¥®ÿœ¥®ÿœ¦®ÿœ¦®ÿš¥®ÿ˜¤®ÿ—¤­ÿ•¢¬ÿ“ «ÿ”¡«ÿ™¥­ÿœ§­ÿœ§­ÿ—£­ÿ•¢¬ÿ—£­ÿš¥®ÿ™¤­ÿ–¢«ÿš¥®ÿ§®ÿ›¦®ÿš¥®ÿ™¤­ÿ™¤­ÿ›¥®ÿœ¦­ÿ¦­ÿž§­ÿœ¦­ÿ›¥­ÿ˜£¬ÿ–¡ªÿ–¡«ÿ–¡«ÿ—¡¬ÿ˜£¬ÿ˜£¬ÿ˜£¬ÿ—£¬ÿ–¢¬ÿ•¡«ÿ˜£¬ÿš¤¬ÿ—¢ªÿ˜£«ÿ›¥¬ÿœ¥¬ÿœ¥¬ÿœ¥¬ÿš¤¬ÿ—¡©ÿ–¡©ÿ˜£«ÿ˜¤«ÿ˜£«ÿ—¢«ÿ—¢ªÿ˜¢ªÿ˜£ªÿ—¢ªÿ˜¢ªÿš£ªÿ›¤ªÿš£ªÿ˜¢ªÿ–¡ªÿ“Ÿ¨ÿ”Ÿ¨ÿ–¡©ÿ•¢©ÿ“ ©ÿ©ÿ©ÿœ©ÿ«ÿ‘Ÿ«ÿž«ÿŠ›¨ÿ©ÿ“¡«ÿ”¢«ÿ“¢«ÿ‘ «ÿŸ«ÿž«ÿœ«ÿŠ›ªÿ‡š©ÿ‰›ªÿ‰›©ÿŒªÿŽ «ÿŒŸ«ÿ†š©ÿ„˜©ÿ†™«ÿ…˜ªÿ‹œ¬ÿž¬ÿ‰œ¬ÿ†›ªÿ‡›«ÿЬÿЬÿŸ¬ÿ‹ž¬ÿ‰œ¬ÿ‡›«ÿˆœ¬ÿ‰ž¬ÿ‰ž­ÿ†œ­ÿš­ÿ€š­ÿ}—«ÿy”ªÿ|–¬ÿƒ®ÿ‰¡®ÿ‰¡®ÿ}˜­ÿz–«ÿ}–¬ÿ€š®ÿ˜­ÿ{•«ÿ~™®ÿ†Ÿ®ÿ‚œ®ÿ›¯ÿ€š®ÿš®ÿ‚›¯ÿ…Ÿ¯ÿ‰ ¯ÿ‹¡¯ÿk†ž¯ÿ‚œ¯ÿ~™®ÿ{˜­ÿ{–®ÿ{–®ÿ{–¯ÿ}˜¯ÿ}š¯ÿ}š¯ÿ{™¯ÿz˜¯ÿy—®ÿ~š¯ÿ‚œ¯ÿ~™­ÿ€š­ÿ…œ®ÿ‰Ÿ¯ÿ‡®ÿ†­ÿ‚™«ÿ|•§ÿx£ÿw¢ÿ³ÁÊÿy†ÿz‡“ÿ³ÂÎÿw’ªÿz–¯ÿ}›²ÿ€ž´ÿ‚ ·ÿ ¸ÿ~ž·ÿƒ£¹ÿ‡¦ºÿ‰¥»ÿ‰¥ºÿŒ§»ÿ©»ÿ‘ª»ÿ©ºÿ¨ºÿ‰¤¸ÿ„ µÿ„¡¶ÿ‡¥¸ÿ‰¥¸ÿˆ¥¸ÿ…¢·ÿЦ¸ÿ§¸ÿŒ§·ÿŒ¥·ÿ¦·ÿ“¨·ÿ”©·ÿ¦·ÿŒ¤¶ÿŠ£¶ÿŠ£µÿŒ§·ÿŽ©¹ÿ‹¨¹ÿ„£¹ÿ€ ¹ÿž¹ÿ‚Ÿ¸ÿ„ ¸ÿƒŸ·ÿ€µÿƒžµÿˆ¤¶ÿŒ§·ÿ¨·ÿ§·ÿФ·ÿ‰¢·ÿ‡£¸ÿ† ·ÿ‚ž¶ÿƒŸµÿ„ µÿ‡£¶ÿŒ§·ÿ§¸ÿ‰¤¸ÿ…¡·ÿ„Ÿµÿ„ž´ÿŠ¢¶ÿ¦·ÿ¦·ÿŽ¥·ÿ‹£¶ÿ¥¸ÿ‘§¸ÿ”¨¸ÿ”ª·ÿ”§·ÿ‘¥¶ÿ¥µÿ’§¶ÿ“¦¶ÿ“¦¶ÿ¤µÿŒ¤µÿŒ¢µÿ‰ ³ÿŠ¡³ÿ£´ÿ•©µÿš¬¶ÿ“§¶ÿ¥´ÿ¤´ÿ•¨·ÿ”§·ÿ’¥´ÿ”¦µÿ™«·ÿš«·ÿ™ª·ÿ™©·ÿ˜©¶ÿ˜©µÿ›©µÿ«µÿž¬µÿª´ÿœ«µÿœª¶ÿ™©µÿ™¨¶ÿ˜¨¶ÿ˜§µÿ™¨¶ÿ™©µÿ›ª¶ÿ›ª¶ÿš©µÿ™¨µÿœ¬¶ÿŸ­¶ÿ ¬·ÿ ¬¶ÿ¢®·ÿ¤¯·ÿ¥°¸ÿ¦°¸ÿ¥°¸ÿ£®·ÿ ¬µÿ ¬µÿ£¯·ÿ£¯·ÿ£¯·ÿ¢®·ÿ¤¯·ÿ¥°·ÿ¥°·ÿ¥¯·ÿ¥¯¶ÿ¦¯¶ÿ§°¶ÿ¦¯¶ÿ£­µÿ¢¬´ÿ¡¬³ÿ¢­´ÿ¥°·ÿ¤°·ÿ¡®·ÿ ­·ÿ ¬¸ÿ¡­¸ÿ¢®¸ÿ¢­¸ÿ «¶ÿ¡­¶ÿ¤¯·ÿ§²¹ÿ¦±¸ÿ§²¹ÿ¥°¹ÿ¥°¹ÿ¤°¹ÿ£®¹ÿ¡­¸ÿ¡­·ÿ¡®¸ÿ£°¹ÿ¦²ºÿ¦²ºÿ¤±ºÿ¡®¸ÿŸ¬·ÿ ¬·ÿ£¯¹ÿ¦±ºÿ¦±ºÿ¥±ºÿ¤°ºÿ¦±»ÿ§²»ÿ¨³»ÿ©´»ÿ§²ºÿ¦±ºÿ¥°¹ÿ¦±ºÿ§±ºÿ§²»ÿ¤²»ÿ¤±»ÿ£°»ÿ ®¹ÿ ®¹ÿ¢¯¹ÿ¦²ºÿ¨´¹ÿ¤°¹ÿ ®·ÿ¡­·ÿ¤°¹ÿ£¯¹ÿ ¬¶ÿ¡­¶ÿ¥°¸ÿ¥°¸ÿ¤¯¸ÿ£¯¸ÿ¢®·ÿ£®·ÿ¤¯·ÿ¦°·ÿ§±·ÿ¦°·ÿ¥°·ÿ£®·ÿ¡­¶ÿ¡¬·ÿ ¬·ÿžªµÿŸ«¶ÿŸ¬¶ÿ ­¶ÿ ¬¶ÿŸ¬¶ÿŸ«¶ÿ¡®·ÿ£¯¸ÿ¤¯¸ÿ£®·ÿ¤¯¸ÿ¦°¸ÿ¦°·ÿ¦°·ÿ¥¯·ÿ£®¶ÿ «´ÿ ¬µÿ£¯¸ÿ¤¯¸ÿ£¯¸ÿ ­¶ÿ¢®·ÿ£®¶ÿ¢®¶ÿ¢®·ÿ¤¯·ÿ¦°·ÿ¦°·ÿ¤®·ÿ¡­¶ÿž«´ÿ©³ÿž«´ÿ ®¶ÿž­¶ÿšª¶ÿ—¨¶ÿ–¦µÿ—§µÿ˜¨µÿ˜§µÿ•¥´ÿ–§´ÿ™©µÿœ«¶ÿœ¬¶ÿ›«¶ÿ™©¶ÿ—¨¶ÿ–¨¶ÿ”¦¶ÿ‘¤µÿ‘¤´ÿ¤´ÿ’§µÿ—ª·ÿ–ª·ÿ’§·ÿޤµÿŒ£´ÿŒ¢´ÿ‘¥¶ÿ”©¸ÿ–©¸ÿ“¨¸ÿ¥·ÿ‘¦¸ÿ’§·ÿ”¨·ÿ•©·ÿ”§·ÿ‘¥·ÿ¥¶ÿ‘¦·ÿ’§·ÿ§·ÿŠ¥·ÿˆ¤·ÿ‡¢¸ÿƒžµÿ‚Ÿµÿ…¡¶ÿާ·ÿ“«·ÿ‰£·ÿ„ µÿ„Ÿµÿ‡¢¶ÿ†¡¶ÿ‚ž³ÿƒž³ÿ‰¢µÿˆ¢µÿ†¡µÿ…Ÿ´ÿ‚ž³ÿ…ž³ÿ‡ ´ÿ‹£³ÿ¦³ÿk‹£³ÿˆ¢³ÿ… ³ÿ±ÿš²ÿ|™²ÿ{˜°ÿ{˜±ÿ}š±ÿ²ÿ~œ²ÿ}›³ÿ|›³ÿ€ž´ÿ‚ ´ÿƒž³ÿ‚±ÿ† ²ÿˆ ±ÿˆ ±ÿˆŸ¯ÿƒ›­ÿ˜«ÿy“¥ÿv¢ÿ³ÀÊÿy†ÿz‰”ÿ³ÂÏÿw“¬ÿy–°ÿ~µÿ‚¡¸ÿ„¤»ÿ„¦½ÿ€£¾ÿ„¤¿ÿˆ¨¿ÿ¬Àÿ¬Áÿª¿ÿ¬Àÿ”¯Áÿ“¯Áÿ”¯Áÿ¬ÀÿЍ¾ÿ†¥½ÿŠ©¿ÿŒ«¿ÿ«¿ÿ†§½ÿЍ¾ÿ«¿ÿ­¿ÿ¬¿ÿ«¿ÿ’¬¿ÿ˜°Áÿ–°Áÿ•®Àÿ‘ª¾ÿŒ¨¼ÿª¼ÿ‘®¿ÿ‘¯Áÿ­Áÿ‡¦Âÿ†¦Âÿˆ§Ãÿˆ§Ãÿ‹¨Ãÿ‰¨ÃÿЍÁÿ‹©Àÿ®Áÿ•±Âÿ—²Âÿ“¯Âÿ«ÂÿªÂÿ©Âÿˆ§Àÿ‡¥¾ÿЍ¿ÿŽ«Áÿ¯Âÿ“±Ãÿ”±Ãÿ¬Âÿ‰§¿ÿŒ¦ÀÿŽ©Àÿ”®Äÿš³Äÿš³Ãÿ•®Âÿ•­Áÿ™°Ãÿš²Ãÿ³Âÿž³Âÿœ±Âÿ™°Âÿ›±Âÿž³ÃÿŸ´ÄÿžµÄÿ™±Äÿ—°Ãÿ˜°Ãÿ˜¯Ãÿ˜¯Áÿž³Ãÿ¦¹Äÿ£·ÄÿŸ´Åÿ±ÃÿŸ´Äÿ¡´ÄÿŸ³ÃÿŸ²Âÿ ³Âÿ¦·Äÿ¥·Äÿ¤µÄÿ£´Ãÿ£´Ãÿ¥·Äÿ¨¸ÄÿªºÄÿªºÄÿ©¹Äÿ¨¸Ãÿ§¸Äÿ¦¶Äÿ¤µÄÿ£³Ãÿ£´Ãÿ¥¶Äÿ¦·Äÿ¦·Äÿ¦·Äÿ¥·Äÿ§·Äÿª¹Äÿ¬ºÄÿ¬ºÄÿ«¸Âÿ­ºÃÿ°¼Äÿ°¼Äÿ°¼Äÿ¯ºÃÿª·Áÿ¨µÀÿª¸Áÿ¬¹Âÿ­¹Âÿ¨¶¿ÿª·Àÿ¬¹Áÿ®ºÂÿ®¹Âÿ­¸Áÿ®¹Áÿ±»Âÿ¯ºÁÿ¯ºÂÿ¬¶¿ÿ©´½ÿ©¶½ÿ­¹Àÿ­¹Áÿ«¸Áÿ¨µÁÿ¨µÁÿ¨µÁÿ¨µÁÿª¶Áÿª¶Âÿ©µÀÿª¶Àÿ­¸Áÿ¯ºÂÿ°»Âÿ®ºÂÿ¬¸Âÿ«¸Âÿ«·Âÿ§µÀÿ¥³¾ÿ§´¿ÿª·Áÿ«¹Âÿ­ºÃÿ­ºÃÿ«¹Ãÿ§´Àÿ¨µÁÿ¨µÁÿ­¹Äÿ±½Åÿ°¼Åÿ­ºÄÿ¬¹Ãÿ¯»Åÿ°¼Åÿ±½Åÿ²½Åÿ²½Æÿ¯»Åÿ¯»Äÿ±¼Åÿ²½Æÿ±½Æÿ®»Æÿ¬ºÅÿ¬ºÅÿ¬¹Åÿ«¹Äÿ°¼Æÿ´¿Æÿ²¾Æÿ¯¼Æÿ¬¹Äÿ®»Åÿ°¼Æÿ®»Åÿ­ºÄÿ­ºÄÿ²½Æÿ±½Æÿ°¼Æÿ®»Åÿ®»Åÿ°½Æÿ²¾Æÿ²¾Åÿ³¿Æÿ²¾Æÿ°¼Åÿ¯¼Åÿ®ºÅÿ¬¹Åÿ«¸Äÿª¸Äÿ¬¹Åÿ­ºÅÿ¬ºÅÿ¬ºÅÿ©¸Äÿ«¸Äÿ­»Åÿ®»Äÿ®»Äÿ­¹Âÿ¯ºÃÿ±½Äÿ±¼Äÿ±¼Äÿ¯ºÃÿª·Àÿ¨´¿ÿª·Áÿ¬¹Âÿ¬¹Âÿ¨¶Àÿ©¶Àÿ«¸Áÿ«¸Àÿª¶Àÿ©µ¿ÿª¶¿ÿ¬¸Àÿ«·Àÿª¶¿ÿ¦²¼ÿ£±¼ÿ¤²¼ÿ§¶¿ÿ¦·Àÿ¤µÀÿ ±Àÿ ±Àÿ ±ÀÿŸ°Àÿ ±ÀÿŸ±ÀÿŸ°¿ÿž°¾ÿ¡³¿ÿ¥µÀÿ¥¶Àÿ¢³¿ÿŸ±¿ÿ›®¾ÿ›¯¿ÿ—¬½ÿ•ª»ÿ–¬¼ÿš®¾ÿš±¿ÿœ²¿ÿœ²Àÿ˜¯Àÿ‘ª½ÿ”ª¾ÿ”ª¾ÿ˜®Àÿ³Áÿœ±Àÿ—­Àÿ–¬¿ÿš¯Áÿš°Àÿœ²Àÿ²Àÿš°Àÿ—®Àÿ˜¯Áÿš°Âÿš±Âÿ˜±Âÿ‘¬ÁÿªÁÿ«ÁÿŽ©Áÿ©Àÿ”­Âÿœ´Âÿ—±Âÿ¬ÁÿŒ¨¿ÿŽªÀÿ«ÁÿªÀÿ©¿ÿŒª¿ÿ”¯Âÿ‘®Ãÿ¬ÃÿªÂÿŒªÂÿ­Âÿ“°Âÿ–²Ãÿk–³Ãÿ”±Ãÿ‘®Ãÿ­Ãÿ«Ãÿ‰¨Ãÿ‡¦Âÿ…¦Âÿˆ©ÃÿŠ«ÄÿŠ«Äÿ‰¬Åÿ„©Äÿˆ©ÄÿŒ­Åÿ¯Äÿ®ÃÿެÁÿ­Áÿ“¯Áÿ‘­¿ÿª»ÿФ¸ÿ‚²ÿz—­ÿµÅÐÿ}‹•ÿ~Œ—ÿ·ÆÓÿ{šµÿžºÿƒ£¾ÿ†¨Âÿ‰¬ÄÿŠ­Æÿ…ªÇÿ†«Çÿ¯Éÿ”µÊÿ”´Êÿ°Èÿ’³Éÿš¸Êÿš·Ëÿ›¸Ëÿ™¶Ëÿ¯Èÿ‹®Æÿ°Èÿ“´Ëÿ•·Ëÿ°Éÿ°Éÿ’µËÿš¹Ëÿ™·Ìÿ’²Êÿ–µËÿŸºÍÿŸºÍÿž¹Íÿ˜¶Ëÿ’²Çÿ’²Èÿ—·Ëÿ—¸Ìÿ”µËÿ¯Ìÿ°ÌÿŒ­ËÿŒ­ËÿޝËÿ°Êÿ°Ëÿ®Èÿ“´Éÿœ¹Ìÿž»Êÿš·Êÿ–´Êÿ“²Êÿ°Éÿ®Èÿ‹«Æÿ°Èÿ‘±Éÿ”³Ëÿ™·ËÿœºËÿ–µËÿŒ®Æÿ¯Èÿ¬Çÿ˜³Êÿ¡ºÊÿ¡ºÊÿ™³Èÿ˜±Çÿž·Éÿž¶Éÿ¢ºÉÿ¥ºÉÿ£¹Éÿ ¶Éÿ ¶Éÿ£¹Êÿ¥»Êÿ¦¼ËÿŸ·ËÿœµÉÿ¡¹Ëÿ¡¹Ëÿž¶Éÿ£ºÌÿ«¿Íÿ®ÂÍÿ©¾Íÿ¥ºÌÿ¦»Íÿª¿Îÿ¬ÀÏÿ©½Íÿ¦»Ìÿ¯ÂÐÿ®ÁÐÿ®ÁÐÿ¬ÀÏÿ¬¿Îÿ¯ÁÐÿ±ÃÐÿ³ÅÐÿµÅÐÿ´ÄÐÿ²ÃÐÿ²ÃÐÿ³ÃÑÿ°ÁÑÿ­¿Ðÿ­ÀÐÿ°ÁÑÿ±ÃÑÿ²ÄÑÿ²ÃÑÿ¯ÁÐÿ¯ÁÏÿ³ÄÑÿ·ÆÑÿ·ÆÑÿµÄÏÿ·ÅÐÿ»ÈÑÿ»ÇÐÿºÇÏÿºÆÏÿµÂÍÿ²ÀËÿ´ÂÍÿ·ÅÏÿ¸ÆÏÿ³ÂÍÿ³ÂÍÿ·ÅÏÿºÇÏÿºÆÏÿ¶ÃÍÿ¸ÄÎÿ¼ÇÏÿ¼ÇÏÿ»ÇÏÿ¹ÅÎÿ´ÁÊÿ´ÂËÿ¸ÅÎÿ¸ÆÏÿ·ÅÏÿ´ÂÎÿ´ÂÎÿ²ÀÍÿ²ÀÍÿ³ÁÍÿ´ÂÍÿ´ÁÍÿ±¿Êÿ´ÂËÿ¹ÆÎÿºÇÎÿ¹ÅÎÿ·ÄÎÿµÃÎÿ´ÁÍÿ²ÀÌÿ¯¾Êÿ²ÁÍÿ´ÂÎÿ·ÅÐÿºÈÑÿºÉÑÿ¸ÇÑÿ°ÀÌÿ³ÂÎÿ²ÀÍÿ¸ÅÑÿ¼ÉÑÿ¼ÉÑÿ·ÅÐÿ¶ÃÏÿºÇÑÿ¹ÆÐÿ»ÈÐÿ¼ÈÐÿ»ÆÏÿ·ÃÎÿ·ÃÎÿ¹ÅÏÿ»ÇÐÿ»ÇÏÿ·ÅÐÿ³ÁÍÿ¶ÄÏÿ¶ÄÏÿ²ÀËÿ¶ÄÏÿºÆÎÿ»ÇÎÿ¸ÄÎÿ³ÀËÿ³ÀËÿ¶ÃÍÿ¶ÃÍÿ´ÀËÿ°½Èÿ¶ÃÌÿ¶ÃÌÿµÂÌÿ³ÁËÿ³¿ÊÿµÂÌÿ¶ÂËÿ·ÃËÿ¸ÃËÿ¸ÃÌÿµÂËÿµÂËÿµÁÌÿ²¿Ëÿ¯½Êÿ°¾Ëÿ±¿Ìÿ±ÀËÿ²ÁÌÿ²ÁÌÿ°¿Ìÿ°¿Ëÿ³ÁÍÿ¶ÄÍÿ¶ÄÍÿ³ÁËÿµÃÌÿ¹ÆÎÿºÅÎÿºÆÎÿºÆÏÿµÂÍÿ³ÁÌÿµÃÎÿ¸ÆÐÿ¹ÇÐÿ³ÃÎÿ´ÃÏÿ·ÆÑÿ»ÈÑÿ¹ÇÑÿµÄÏÿ·ÅÐÿ»ÈÑÿºÇÑÿ¹ÇÑÿ¶ÄÏÿ±ÁÌÿ±ÁÍÿ´ÅÐÿµÆÑÿ³ÄÑÿ®ÁÑÿ®ÁÑÿ¬¾Ðÿ¬¾Ðÿ¬¿Ðÿ­ÀÐÿ­¿Ðÿ©½Íÿ¬ÀÎÿ²ÄÐÿ³ÆÐÿ°ÃÐÿ­ÁÐÿª¿Ðÿ¦¼Íÿ¤ºÌÿŸ¶Êÿ¢ºÌÿ£»Íÿ¤¼Îÿ§¾Íÿ¨ÀÍÿ£½Íÿ˜µÈÿ›µÉÿš²Èÿ ·Ëÿ§½Ëÿ¦¼Ëÿž·ÊÿµÉÿ£ºËÿ¢¹Ëÿ¤¼Ëÿ¦¼Ëÿ¤»ËÿŸ¶ÊÿŸ·Ëÿ¡ºÍÿ¢»Ìÿ£¼Ìÿš·Ìÿ•³Êÿ™¶Ìÿ™¶Ìÿ“²Éÿ™µÌÿ¡»Ëÿ¢½Ëÿ›¶Ëÿ”°Èÿ“°Çÿ˜³Éÿ—³Éÿ“¯Çÿ­Æÿ˜µÊÿ—µËÿ–´Ëÿ“²Êÿ’±Éÿ•´Ëÿ˜¶Ëÿ›¹Ëÿkœ¹Ëÿš¸Ëÿ–µËÿ–µÌÿ•³Ìÿ‘°Íÿ‹­ÌÿŠ®Ìÿ°Íÿ޲Íÿ³Íÿ޲Íÿ‰­Ìÿ‰®Ëÿ²Ìÿ•¶Ìÿ”´Ëÿ‘°Èÿ’²Èÿ—µÈÿ•±Åÿ”°Âÿª¾ÿ„¡·ÿ|š±ÿµÆÑÿ}Œ–ÿz‡ÿ¶ÄÏÿ{™²ÿ|›¹ÿ¢Áÿ‹®Éÿ´Íÿ޵Ñÿ‘·ÓÿгÓÿвÒÿ—»ÖÿžÀÕÿš¼Ôÿ—ºÓÿ˜¹Óÿ ÀÔÿ¢ÂÔÿ¡ÁÕÿ™¼Õÿ¶ÑÿµÑÿ“¸Ôÿ˜¾Õÿ—½Öÿ“¹Õÿ”ºÔÿš½Öÿœ¾Öÿ™»Õÿ›½Öÿ ÀÖÿ¤ÂÖÿŸ¿Õÿž¾Ôÿ¾Óÿ™¼Òÿ”ºÒÿ•¼Ôÿš¿Ôÿ¶Ôÿ³Ôÿ²ÔÿµÔÿ”¸Ôÿ–¹Ôÿ”·Õÿ‘µÓÿ“·Ñÿš½Ôÿ ÂÔÿ¢ÁÔÿ ÀÔÿ¡ÀÕÿ™ºÕÿ‘µÒÿ“¶Ôÿ•ºÕÿ˜»Öÿš¼×ÿŸÁ×ÿ£Æ×ÿ¡Ä×ÿÀ×ÿ“´Ñÿš¹Ôÿ—·Òÿ›ºÓÿ¨ÅÕÿ§ÃÕÿŸ»Óÿ¢½Óÿ§ÁÕÿ«ÄÕÿ­ÆÕÿ­ÆÕÿ«ÂÕÿ¨ÁÒÿªÁÓÿ«ÄÔÿ¬ÄÔÿ¬ÄÕÿªÂÕÿ©ÀÔÿ¦¿Óÿ§ÀÓÿ«ÁÕÿ­ÃÕÿ¶ÊÖÿ³ÇÖÿ¬ÂÔÿª¿Òÿ¯ÄÕÿ´ÇÖÿ³ÆÖÿ¬ÁÒÿ°ÄÕÿ±ÆÖÿ²ÆÕÿ°ÅÔÿ­ÂÒÿ­ÁÒÿ±ÄÔÿ´ÆÕÿ»ÌÕÿ¸ËÕÿ¶ÇÔÿ¶ÇÕÿ·ÈÕÿ·ÈÕÿ³ÅÕÿ¯ÂÓÿ°ÃÔÿ´ÇÕÿµÈÕÿ³ÇÕÿµÇÕÿ±ÄÓÿ±ÃÒÿ¹ÉÖÿ¾Í×ÿ½Ì×ÿ»ËÖÿ¼ÊÖÿÀÎ×ÿÂÏ×ÿÁÎ×ÿ¾Ì×ÿ¸ÇÓÿ·ÇÓÿ»ÊÖÿ½Í×ÿ½Ì×ÿºÊÖÿ¹ÉÔÿ½ÌÖÿ¾ÌÖÿ½ËÖÿ¾Ì×ÿÀÍÖÿÂÍÖÿ¿ÌÖÿ¾ËÕÿ½ËÔÿ»ÊÓÿ¸ÈÒÿºËÕÿ¼ËÔÿ·ÇÔÿ·ÇÕÿ·ÇÕÿ¸ÇÕÿºÈÔÿºÈÔÿ¹ÈÔÿ·ÆÒÿ¸ÆÒÿ¼ËÕÿ¿ÍÕÿ¿ÍÕÿ¾ÌÕÿ¾ÌÕÿºÉÕÿ´ÄÑÿµÅÒÿ¶ÇÓÿ·ÇÓÿ¹ÈÔÿ»ÊÔÿ¼ÌÔÿ»ËÔÿ¹ÉÔÿ±ÁÏÿ·ÅÓÿ´ÃÑÿ·ÅÒÿ½ËÔÿ¼ÊÓÿ·ÅÑÿ¸ÅÑÿ»ÈÒÿ¼ÉÒÿ¾ËÓÿ¾ÊÓÿ¼ÉÓÿ¸ÆÏÿºÆÐÿ¼ÉÒÿ¼ÉÒÿ»ÉÒÿ»ÈÓÿ¹ÇÒÿ·ÅÑÿ·ÄÐÿ¹ÆÒÿºÇÒÿ¿ËÒÿ½ÉÒÿ¸ÅÐÿµÂÎÿ¹ÆÑÿ½ÉÒÿ¼ÈÒÿµÂÍÿ¸ÅÐÿ¹ÇÑÿºÇÑÿ¸ÅÐÿµÂÎÿ´ÂÎÿ¸ÅÑÿºÇÒÿ¿ËÒÿ¼ÉÑÿ»ÈÒÿ»ÈÒÿºÇÑÿ»ÈÒÿ·ÅÒÿ³ÂÐÿ´ÃÑÿ·ÆÒÿ·ÇÒÿ·ÇÓÿ·ÇÓÿ²ÃÐÿ³ÃÐÿºÈÔÿ¾ÌÕÿ¼ÊÔÿºÉÓÿ»ÉÔÿ¿ÌÕÿ¿ÌÔÿ½ÊÓÿºÈÓÿµÄÐÿµÅÑÿ¹ÈÔÿ¼ËÕÿ»ÊÕÿ¸ÈÔÿ·ÇÓÿºÊÕÿ»ÊÕÿ¹ÈÔÿ»ËÖÿ½ÌÖÿ¾ÌÖÿ¼ÊÖÿ»ÊÖÿ¹ÊÕÿ¶ÈÔÿ´ÇÔÿ´ÉÕÿ·ÊÖÿ°ÅÖÿ¯ÃÖÿ­ÂÕÿ®ÃÕÿ±ÅÕÿ±ÅÕÿ¯ÄÕÿ­ÂÔÿ­ÃÓÿ²ÈÖÿ¶Ë×ÿ¶Ë×ÿµÊ×ÿ³É×ÿ­ÄÖÿ¥¾Òÿ¦¿Ôÿ§ÂÕÿ¨ÂÖÿªÃ×ÿ¬ÆÖÿ¯ÉÖÿ¬ÈÖÿ¨ÄÖÿžºÑÿ¥¾Õÿ ¼Óÿ£¾Ôÿ®È×ÿ­Æ×ÿ¤¿Õÿ¦ÀÕÿªÃ×ÿ¬ÄÖÿ®ÇÖÿ­ÆÖÿ«ÂÖÿ¦ÁÔÿ¨ÁÕÿ¨ÃÖÿ¨ÃÖÿ§ÂÖÿ¥Á×ÿ¢¿Öÿž¼Õÿž¼Õÿ¡¾Öÿ¢¿Öÿ­ÆÖÿ¨ÃÖÿŸ»Ôÿš¸ÒÿŸ½Õÿ¦ÁÖÿ£¾Öÿš¸Òÿ›¼Õÿž½Öÿž¾Öÿ›¼Õÿ•¸Óÿ”¸Óÿ™»Öÿž¿×ÿkªÉÙÿ¥ÆÙÿ¡ÁÙÿ ÀÙÿ¡ÁÙÿŸÀÙÿ–ºÙÿµ×ÿ¶Øÿ–¼Ùÿ—¾Ùÿ“»Ùÿ”¼ÙÿŒ¶Öÿ¶Öÿ™¾Ùÿ ÃØÿÀØÿ™»Ôÿ˜¹Òÿž¼Ïÿ›¹Ëÿ”±Äÿ‰¦½ÿz™°ÿ±ÂÎÿw…‘ÿ{‰“ÿ¸ÅÐÿž¶ÿ£¾ÿ…¨Çÿ‹±Ïÿ¸Ôÿ¹×ÿ˜¾Ûÿ’»Üÿ‘»Ýÿ˜ÀßÿŸÆàÿ¢ÆßÿžÃÞÿ›ÀÝÿ£ÅÝÿ¦ÇÝÿ¦ÇÜÿŸÃÜÿ—½Úÿ’»Úÿ”½Ûÿ˜ÁÜÿ›ÃÜÿ•¿Üÿ’¼Úÿ˜¿ÜÿžÃÜÿžÃÜÿžÂÜÿœÁÜÿ¢ÃÜÿ¡ÂÜÿ¡ÃÛÿžÃÚÿ™ÀØÿ“¼×ÿ˜ÀÛÿžÆÜÿ—ÀÝÿ޹Ýÿ‹¶Ýÿ“½ÞÿšÁßÿ˜Áßÿ•¾ßÿ–¾Ýÿ™ÀÜÿ¡Æßÿ¨ÊßÿªËßÿªËßÿ¨Êßÿ¡Äßÿ˜¿Üÿ–¼Üÿ›ÀÞÿÃáÿ Æáÿ¥Éáÿ«Îâÿ«Íáÿ§ËáÿŸÃÞÿ Âßÿ ÁÞÿ¥Åáÿ¯Ìâÿ°Îâÿ®Êâÿ¬Éáÿ¯Ëáÿ³Îâÿ·Ñâÿ¸Ñâÿ¶ÏâÿµÎáÿµÎáÿ·Ïâÿ¹Ñâÿ·Ñâÿ¶Ïâÿ´Îâÿ²Ìáÿ³ËàÿµÍáÿ¸ÐâÿÁÖâÿÀÔâÿºÐâÿ·ÍßÿºÎàÿ½Ñâÿ»Ðàÿ¸ÌÞÿ·ÌÞÿºÏàÿ¼Ðàÿ»Ðàÿ¹ÍÞÿ¸ÌÝÿ¹ÎÞÿ¼ÐàÿÃÕáÿÃÖáÿÃÔáÿÁÓáÿÁÓáÿÁÓáÿ¿Òáÿ»Ïàÿ»Îàÿ½Ðáÿ¾Òáÿ¾ÒâÿÀÓáÿ½Ðàÿ»ÏßÿÀÒáÿÃÕàÿÅÕàÿÄÕáÿÃÓàÿÈÕàÿÉ×àÿÉ×àÿÆÕàÿÂÑÞÿ¿ÐÝÿÁÒßÿÃÔàÿÅÕàÿÂÓàÿÀÒßÿÃÔàÿÆÕàÿÆÕàÿÆÕàÿÅÔàÿÈÖáÿÉ×âÿÉ×âÿÇ×áÿÄÔßÿÁÒÞÿÅÖâÿÇØâÿÄÔáÿÀÑáÿ¿ÐáÿÂÓáÿÅÕâÿÄÔáÿÁÒàÿÁÑÞÿÁÑÝÿÆÕàÿÈ×àÿÉ×àÿÉ×àÿÇÖßÿÄÔàÿ¿ÐÝÿ½ÎÜÿÀÐÞÿÂÒàÿÃÔáÿÅÖáÿÇØáÿÇØáÿÅÖàÿ¿ÐÝÿÀÐÞÿ¿ÏÝÿÂÑßÿÇÕàÿÇÖàÿÅÓßÿÃÒÞÿÅÓÞÿÇÕßÿÉ×àÿÉ×àÿÈÖàÿÇÔßÿÇÔßÿÈÕßÿÈÖßÿÇÕßÿÆÔßÿÅÔàÿÄÓßÿÄÒÞÿÅÓßÿÇÕàÿÌÙàÿÌÙáÿÉÖáÿÅÒÞÿÆÓßÿÉÖáÿÈÕàÿÅÒÞÿÅÓßÿÇÕáÿÈÖáÿÇÕàÿÃÒÞÿÂÑÝÿÃÒÞÿÅÓßÿÉÖßÿÉÖßÿÈÕßÿÅÓÞÿÅÓÞÿÄÒÝÿÂÑÝÿ¿ÎÜÿ½ÍÛÿ¾ÎÜÿ¿ÏÜÿ¾ÏÜÿÀÐÜÿ½ÍÛÿ»ÌÚÿ¿ÏÜÿÁÐÛÿÂÑÛÿÀÏÛÿ¿ÎÚÿÃÑÛÿÃÑÚÿÃÑÚÿÁÏÚÿ¼ÌØÿºÊ×ÿ»ÌØÿ¾ÎÚÿ¾ÎÙÿ»ÌÙÿ¹ËØÿ¼ÍÚÿ¾ÏÚÿ½ÍÙÿ½ÍÙÿ¼ÍÚÿ¾ÎÚÿ¾ÎÚÿ¿ÏÛÿ½ÏÛÿ¸ÌØÿµÊØÿ¹ÎÜÿ»ÐÜÿ¸ÍÝÿ³ÊÞÿ±ÈÞÿµÌßÿ¹Ïàÿ·ÏàÿµÍàÿ¶Ìßÿ¶ÍÞÿ»Ñáÿ¾Ôáÿ¾Ôáÿ¾Ôáÿ½Óáÿ·Ïáÿ¯Êßÿ¬ÈÞÿ®Éßÿ¯Êàÿ°Ìàÿ³Ïáÿ¶ÑàÿµÐàÿ±Îàÿ¨ÆÜÿ¨ÆÝÿ§ÄÜÿªÆÞÿ³Ìàÿ³Îàÿ°Êàÿ®Éßÿ¯ÉÝÿ°ËÞÿ´ÍÞÿ´ÍÞÿ±ÊÞÿ®ÈÜÿ­ÈÜÿ¯ÉÝÿ°ÊÝÿ­ÊÝÿ¬ÇÝÿ¨ÆÝÿ¤ÃÜÿ¤ÂÛÿ¦ÃÜÿ¨ÆÝÿ³ÍÜÿ¯ÊÜÿ§ÄÛÿ¢ÀÙÿ¥ÂÚÿ§ÃÛÿ¥ÃÚÿ ¾Øÿ½ØÿŸÀÙÿ¢ÁÚÿ ÁÚÿœ¾Ùÿš½Ùÿ›¿ÚÿžÁÛÿkªÊÝÿ©ÊÞÿ¦ÇÝÿ£ÄÞÿ£ÅÞÿ£ÅÞÿÁÞÿ•¼Ýÿ“ºÜÿ•½Ýÿ–¿Ýÿ•¿Þÿ™ÂÞÿ“½Ýÿ‘»Üÿ˜¿ÞÿžÅÞÿŸÅÝÿ›¿Úÿ—»Öÿ¾ÔÿœºÏÿ—´ÈÿŠ©¿ÿ}›´ÿ±ÂÎÿu…‘ÿ{‰”ÿºÉÔÿˆ¦¼ÿЬÈÿŠ®ÏÿŒ´Õÿ“¼Ýÿ–¿âÿÆäÿšÆçÿ–Ãçÿ–ÃçÿžÉéÿ¦Îéÿ¥Îéÿ¡Çèÿ¦Êçÿ©Íæÿ¬Îæÿ¨Íæÿ¡ÈæÿšÃäÿ—Ãåÿ–Ãåÿ ËåÿšÆæÿ”Ãäÿ–ÂäÿŸÉåÿ¥Íåÿ¡Èäÿ™Ââÿ Æåÿ£Êåÿ¥Ìåÿ£Ìåÿ›Çãÿ”Âàÿ“ÂâÿšÆãÿœÈãÿ¿ãÿ‰¸äÿ¾äÿ™Ääÿ˜Ääÿ–Áäÿ•Áâÿ›Áâÿ Çäÿ¨Ìäÿ¬Îäÿ­Ñäÿ¬Ðäÿ¥ÊäÿžÄãÿ–½ßÿ™ÀáÿœÃäÿ¡Æåÿ¦Êåÿ«Ñæÿ­Óæÿ­Òæÿ©Ìæÿ Åãÿ Åãÿ§Çäÿ«Ìåÿ²ÑåÿµÒæÿ¯Îåÿ¯ÍåÿµÑçÿºÔçÿ¼Öçÿ»ÕæÿºÓæÿºÒäÿºÓåÿ½Öçÿ¾Õçÿ¾Öèÿ»Ôçÿ¹Òæÿ¹Ñåÿ»Óæÿ½ÔçÿÅØçÿÅÙçÿÄØçÿÁÖèÿÁÔçÿÂÕçÿÂÕæÿÂÕæÿºÐãÿ½ÓäÿÀÕæÿÁÖæÿ¿Õæÿ¾Ôæÿ¾Óåÿ¾ÔåÿÃØæÿÇÚæÿÇÙåÿÅ×åÿÃÖåÿÆØæÿÆØæÿÂÕæÿ¿Óåÿ¾ÒäÿÀÕæÿ¿ÔåÿÃ×åÿÂÖåÿÀÔåÿÁÕåÿÆØæÿÉÚæÿÉÚæÿÇ×åÿÊÙåÿÍÛæÿÎÜæÿÌÜæÿÉÙæÿÅÖäÿÄ×åÿÄÖåÿÈÚåÿÆ×åÿÂÕãÿÃÕãÿÈÙåÿËÛæÿÊÚæÿÅÖäÿÊÚçÿËÛæÿËÛåÿÊÚåÿÅ×ãÿÁÔáÿÃÖäÿÆÙåÿÈÚæÿÃÖæÿÁÔçÿÄ×çÿÈÙçÿÇÙçÿÆ×æÿÄÖäÿÆÖäÿÉÙæÿÌÜæÿÏÞçÿÎÝæÿÍÜåÿÊÚæÿÆ×åÿÀÒâÿÃÕäÿÅ׿ÿÇØçÿÉÚçÿËÝçÿÌÞçÿÌÝçÿÊÚçÿÄÖäÿÃÕäÿÈØæÿËÛèÿÎÝèÿÏÞèÿËÛçÿÊÙæÿÍÜçÿÎÜæÿÎÜåÿÏÜæÿÏÜçÿÎÚåÿÎÛæÿÎÜåÿÏÜæÿÎÛæÿÍÚæÿÊØäÿÉ×ãÿËÙåÿÍÚæÿÑÝæÿÑÝæÿÐÝæÿÎÛæÿÎÚæÿÎÚæÿÎÚåÿÎÛæÿÉ×äÿÉ×ãÿÌÚåÿÌÚåÿÊÙåÿÈØäÿÇ×ãÿÇ×ãÿËÚäÿÍÛäÿÍÛäÿËÚäÿÊØäÿËÙäÿÊØäÿÇ×äÿÃÓâÿÂÓáÿÃÔãÿÂÔâÿÆ×ãÿÅÖäÿÃÕäÿÃÕäÿÇØåÿÊÙåÿÉÚåÿÉØæÿËÚæÿÍÛæÿÏÝçÿÍÜçÿÊÚçÿÆ×åÿÅ׿ÿÅ׿ÿÊÛçÿÇÙçÿÃÖåÿÃÖåÿÈÚçÿÊÛçÿÈÚèÿÃÕåÿÈÚéÿÊÝêÿÊÞêÿÈÝêÿÂÙçÿ½ÕåÿÀØéÿÃÛëÿÃÛêÿ¼Õêÿ¸Ñêÿ»Ôêÿ¿×êÿ¾×êÿ¼Õêÿ»Õéÿ¾ÕéÿÀØêÿÅÜëÿÇÝëÿÇÞëÿÅÝëÿ¾Ùêÿ¸Ôéÿ±Ìæÿ²Îçÿ³Ðéÿ´Ñèÿ·Óèÿº×èÿ»Øèÿº×èÿ¶Òèÿ­Ìåÿ«Éãÿ¯Ìäÿ²Ïæÿ·Óæÿ¹Ôæÿ²Ïåÿ°ÍäÿµÑæÿ¹ÓæÿºÔæÿ¹Óæÿ·Ñæÿ¶Ïãÿ´Ðäÿ¶Òäÿ¶Ðäÿ´Ïäÿ²Ïæÿ®Ìåÿ­Êäÿ®Ìäÿ°Íæÿ¸Òåÿ¸ÒäÿµÐäÿ°Ìäÿ®Êäÿ¯Êãÿ®Êâÿ­Êãÿ¢Ãàÿ¦Èâÿ©Êäÿ¨Êäÿ¤ÈäÿŸÆäÿ Æãÿ Çäÿk¨Íæÿ®Ðåÿ¯ÑåÿªÍåÿ¦ÉåÿªÍæÿ¨Ìçÿ¡ÇçÿšÂåÿ—Âäÿ˜Ãæÿ˜ÃæÿŸÉæÿ™Ææÿ”Áåÿ“Àãÿ›Åäÿ¡ÈãÿŸÆàÿšÀßÿœ¿Úÿœ¼Óÿ™·Ìÿ¯Äÿ€ ¸ÿ²ÃÑÿt…’ÿ{‰•ÿ¹ÈÓÿЍ½ÿ®Æÿ‹°ÏÿеÖÿ»Ýÿ•Áäÿ™ÇæÿšÈèÿ”Ãèÿ‘¿çÿ™Æëÿ¥Ïëÿ§Ðìÿ¢Ëìÿ¢Êëÿ¨Ìëÿ¬Òìÿ«Òìÿ¤ÎëÿžÉìÿ–Åêÿ“Âéÿ ÌìÿËíÿ™Çíÿ•ÄëÿžÊíÿ¦Ñíÿ¤Îîÿ™Åëÿ¡Ìîÿ¥Ïïÿ¨Óïÿ§Õðÿ£Ðïÿ™Êíÿ•Èíÿ“Çîÿ Ððÿ˜Ìðÿ‘ÅïÿÃïÿ˜Êðÿ¡Ñðÿ ÎðÿšÉíÿŸÊîÿ¦Îïÿ¬Óïÿ³Øïÿ¶ÝïÿµÛïÿ¯Öïÿ©Ñïÿ›ÆëÿžÆìÿŸÉîÿ¢Ìîÿ¨Ðîÿ­Õîÿ²Ùîÿ¶Ûîÿ´Øïÿ§Ííÿ§Ììÿ­Ðîÿ­Ðíÿ·×ïÿÀÝïÿ·×ïÿ´Óíÿ¹Öíÿ½ÙíÿÁÜíÿÃÜíÿÂÛíÿÀÙìÿ¿ØìÿÄÜíÿÃÝíÿÄÛíÿÁÚíÿÁÚíÿÁØíÿÁÙíÿÂÚíÿÇÝîÿÊàïÿËàîÿÊÞîÿÇÛíÿÇÛíÿÌßïÿÎâïÿÃÙìÿÄÛìÿÅÜíÿÈÝïÿÇÞðÿÅÜîÿÄÜíÿÅÛíÿÈÝîÿÎâîÿÐãîÿÎáîÿÊÝîÿÍßîÿÎàîÿËßîÿÆÛíÿÃÚìÿÅÛíÿÇÝîÿÉßîÿÉÞîÿÇÜíÿÃØêÿÈÜíÿÎàìÿÏàìÿÎßíÿÎÞìÿÑßíÿÒáìÿÑáìÿÏàìÿÌÝìÿÇÚêÿÅÙéÿÍÞìÿÌßíÿÉÛëÿÇÚêÿÌÞìÿÏàìÿÎßìÿÇÙéÿÍÞìÿÎßìÿÐáíÿÏáìÿËÝêÿÆÚèÿÄÙèÿÄÙéÿËÞìÿÈÝìÿÅÚëÿÅÚìÿÈÜìÿÌÞìÿËÞìÿÆÙèÿÉÚéÿÌÜêÿÏßëÿÒâìÿÓäìÿÓãìÿÑâíÿÏàîÿÇÚëÿÈÛìÿÊÜîÿÊÝíÿÍßíÿÏáíÿÑãíÿÒäíÿÑâíÿÉÛëÿÈÚêÿÌÝìÿËÛêÿÑáíÿÕäíÿÑáîÿÎÞëÿÒáíÿÔâíÿÕãìÿÕãìÿÔâìÿÓàëÿÔáíÿÖäîÿÕäíÿÕãíÿÔâíÿÓáíÿÒàìÿÒàìÿÒàìÿÕâíÿÖäíÿÖãìÿÕâìÿÓàëÿÓßëÿÕâìÿ×ãìÿÎÝéÿÏÞêÿÐßëÿÑàìÿÐàìÿÎÞëÿÍÝêÿÎÞëÿÏßìÿÔäíÿ׿îÿÔãíÿÑàíÿÒáíÿÓâíÿÑâîÿÍßîÿÊÝìÿÊÝìÿÊÝìÿÌÞìÿÌßíÿÊÝíÿÆÙêÿËÝíÿÑâîÿÑâîÿÏàîÿÏßíÿÒáîÿÔäïÿÔäïÿÑâïÿÎàïÿÊÝíÿÈÛìÿÏáïÿÏâðÿÌàðÿÉÝîÿÍàðÿÐãðÿÎáðÿÇÛíÿËßðÿÍáðÿÍâðÿÌâðÿÉßïÿÃÛíÿ¿Úíÿ¾ÙíÿÅÞïÿÀÜïÿ¼Øïÿ»×ïÿ¾ÚïÿÃÝïÿÁÛïÿ»×ìÿ¿ØíÿÃÛïÿÇßñÿÊâñÿËåñÿÊãðÿÅßðÿÀÛðÿ´Òíÿ¶Óîÿ¶Ôðÿ·ÖðÿºØðÿ½ÜðÿÀßïÿÁàïÿ¿Ýðÿ´Óîÿ²ÑíÿµÔïÿµÓîÿ¼ÚðÿÄßðÿ»Ùðÿ¶Ôíÿ»Øîÿ¿ÛðÿÃÞðÿÃÞðÿÁÛïÿ¿Øîÿ½×îÿÀÜïÿ¿Üïÿ¿Ûðÿ»ÙðÿºØðÿ·Õîÿ·Õïÿ·Öïÿ»Øïÿ¾ÛïÿÀÜïÿ½Ùïÿ·Õîÿ¶Óíÿ¹Öíÿ¼Úíÿ­Ïëÿ¯Ñíÿ®Òîÿ¯Óïÿ«Òïÿ©Ðîÿ¦Ïîÿ¦Ïíÿk©Ñïÿ´Úðÿ¹Ýðÿ´ØðÿªÐïÿ¯Ôïÿ°Õïÿ©Ñïÿ ÊîÿšÈíÿšÉîÿœÌðÿ ÏïÿŸÎïÿ™Éîÿ”ÂëÿšÈíÿ¦Ðíÿ¦ÏêÿŸÈçÿœÃâÿžÀÝÿ›¾Ôÿ“µÊÿ‡©Âÿ´ÇÖÿuˆ–ÿ{‹–ÿ»Ê×ÿŽ­Ãÿ“¶Îÿ“ºØÿ’¾àÿ–Âçÿ™Éíÿ›ËðÿÍòÿ™Éóÿ“ÅòÿšÉôÿ¥Óôÿª×ôÿ©Ôôÿ¤Îóÿ«Óõÿ°Øöÿ±Úöÿ­Øöÿ¤ÒöÿœÌôÿ”ÇòÿÏöÿ¡Óöÿ¡ÑöÿœÍöÿœÎõÿ¤Ôöÿ¤ÔöÿŸÍõÿ Îöÿ¡Ðöÿ¤Ôöÿ¥Øöÿ§Ùöÿ£×öÿ—ÏôÿÇòÿ˜Íôÿ ÔôÿšÏôÿŠÂòÿÆóÿ¢Õôÿ¥Öôÿ›Ìòÿ Íóÿ£Îóÿ¨Óóÿ±Úôÿ·Þôÿ¸Þôÿ²Úóÿ®Øóÿ¢Íóÿ Ëóÿ Êóÿ¢Ëóÿ¨Ñóÿ¬×óÿ²Üóÿ¹ßóÿºßôÿ­Ôóÿ«Òñÿ­Óñÿ«Ððÿ·ØóÿÁßóÿ¼Üóÿ¸×ñÿ½ÛóÿÂÝóÿÅàóÿÈâóÿÈàóÿÆÝñÿÃÜðÿÆÞñÿÇßñÿÈàñÿÉáóÿÇßòÿÆßñÿÇßñÿÇßñÿÊàòÿÎâòÿÑåòÿÑãòÿÎàòÿËÝïÿÏáðÿÑäðÿËßñÿÉßðÿÇÝïÿÆÝîÿÆÝïÿÆÞðÿÇÞðÿÇÞðÿÇÝïÿÎãñÿÓåðÿÒãðÿÉÝíÿÌßïÿÍàîÿÌàîÿÉÝîÿÅÚìÿÅÛíÿÆÝîÿÇÝîÿÇÜíÿÆÚíÿÂØëÿÈÜîÿÍàîÿÑãðÿÑâðÿÍÞíÿÏßíÿÑáíÿÒáíÿÑâîÿÍßîÿÉÜìÿÃØéÿÈÜìÿÉÝëÿÉÜëÿÇÛëÿÈÛëÿÌßíÿÌßíÿÉÛëÿÉÛëÿÉÛëÿÊÜêÿÉÝéÿÊÝéÿÈÜéÿÂ׿ÿ½ÓäÿÄØèÿÇÛèÿÄÙèÿ½ÓæÿÀÕçÿÉÝéÿÊÝéÿÅØçÿÆØçÿÈÙèÿÉÛèÿÍÞéÿÐàéÿÐàéÿÍÝèÿËÜèÿÅ×çÿÃÖçÿÄÖèÿÄÖèÿÈÚêÿÊÞëÿÍàëÿÐâëÿÐáëÿÊÜêÿÈÛêÿÊÜëÿÉÛëÿÐáîÿÔãíÿÑáíÿÍÝêÿÐßëÿÓàìÿÖäîÿØæïÿØåïÿ×ãîÿÕãîÿ×åïÿØåðÿØæðÿØåðÿÖäïÿÕãîÿÖäïÿÖäïÿ×äðÿÙåðÿÛçðÿÛçðÿÚåñÿ×ãïÿÚæñÿÝèñÿ×åñÿ׿òÿÕåñÿÓäðÿÔåòÿÓåòÿÓäñÿÓäñÿÒãðÿØèòÿÛéòÿÚèòÿÓãðÿÖåòÿ׿òÿÕæòÿÒäòÿÏáñÿÏãóÿÐäôÿÐäôÿÐäôÿÎâôÿÊßñÿÎáóÿÔæôÿÖéõÿÕæôÿÒãòÿÕæôÿ×çôÿ×çóÿÕæóÿÑäóÿÌßðÿÈÜîÿÎâòÿÏäòÿÏãòÿÌáòÿËàñÿÏäóÿÏãóÿËßòÿÌàóÿËáóÿÌâóÿÌäóÿÍäóÿÊãóÿÂÞñÿ¼ÙïÿÃÞóÿÅáòÿÁÝñÿ·Õïÿ¸ÖïÿÃÞðÿÃÞïÿ½Øîÿ¿ÙïÿÀÙïÿÁÛïÿÇàðÿÉâðÿÇàîÿÄÞïÿÀÜïÿ·Ôîÿ´Òîÿ´Ñïÿ´Òïÿ·Õïÿ¹Úïÿ¾ÞñÿÃáñÿÂàñÿ¸Øòÿ´ÕðÿµÕïÿ²Òîÿ»ÙñÿÂÞðÿ¼Úðÿ¸ÖîÿºØïÿ¿ÛðÿÂÞðÿÄßðÿÄÝðÿÁÚïÿ½ØîÿÀÛïÿ¿Ûïÿ¿Ûïÿ¾Úïÿ¼ÙðÿºØðÿ»Ùðÿ»Ùñÿ½ÙòÿÁÛòÿÄàòÿÂÞòÿ½Ùòÿ»×ðÿ¾ÚñÿÄßòÿ·×òÿ´×òÿ¯Ôñÿ­ÒðÿªÒñÿ©Óñÿ¨Òñÿ§Òðÿk§Ðïÿ²Øñÿ»Üñÿ¸Úñÿ©Ðîÿ­Ôñÿ°Öòÿ­Õòÿ¤ÑòÿžÌñÿÌòÿžÎóÿžÎòÿÎòÿ˜Èòÿ‘Ãïÿ˜Æðÿ£Ïïÿ¥Ðíÿ£ÊêÿšÁäÿœÀßÿš½×ÿ“¶Íÿ‰ªÂÿµÇÖÿu‡–ÿ~˜ÿ»ËØÿ­Æÿ“¹Òÿ™ÀÛÿ—Ããÿ–Åéÿ—Èïÿ˜Ëóÿ›ÎôÿœÍöÿ—Êöÿ™Éøÿ Ðøÿ§Õøÿ¬×øÿ¥Ï÷ÿ¨Òøÿ¬Õøÿ­Ù÷ÿ¬Ù÷ÿ¦Õ÷ÿÏùÿ•É÷ÿ˜ÌùÿžÒúÿ¡ÔúÿœÏùÿšÌ÷ÿ›Í÷ÿ¡Ðøÿ£Ñøÿ—Çöÿ—ÊöÿšÍ÷ÿžÓøÿ¦Ûùÿ¦ÜùÿÕùÿË÷ÿŒÈøÿ›ÕùÿÕúÿ‰Å÷ÿŠÅõÿÓùÿ¦Úùÿ Óùÿ¤Òùÿ¢Ï÷ÿ¦Òöÿ°Ûùÿ·áùÿºâùÿ·àùÿµÞùÿ­×ùÿ¤ÏøÿžÊöÿ¡Ìöÿ¦Ò÷ÿ¬Ø÷ÿ²Þøÿ·á÷ÿ¼á÷ÿ´Û÷ÿ±×÷ÿ¯Õõÿ®Óôÿ´Úõÿ¿ßöÿÂá÷ÿÀÞ÷ÿÀÞöÿÃßöÿÇã÷ÿÌå÷ÿÍå÷ÿÌä÷ÿÊâöÿÊã÷ÿËä÷ÿÌå÷ÿÍæ÷ÿÍå÷ÿÌä÷ÿÍäøÿÎåùÿÒçùÿÔéøÿØëøÿØëøÿÕèøÿÑåöÿÓæ÷ÿ×êøÿÖëùÿÒèùÿÎåøÿËäöÿÍäøÿÎæùÿÐèúÿÎæøÿÎå÷ÿÑç÷ÿ×êøÿÙì÷ÿÓæöÿÒæöÿÓç÷ÿÒçöÿÑæöÿÎåöÿÍãöÿÌãöÿÍä÷ÿÎäöÿÎãöÿÌáõÿÍâöÿÑåöÿÕçöÿ×èöÿÓäôÿÔåõÿÖæõÿÖèõÿÖèõÿÓæõÿÏäõÿËàóÿÍâõÿÏåõÿÑåõÿÏãõÿÍáóÿÎâóÿÐäôÿÑäôÿËßòÿËàòÿÍâóÿÏåôÿÒèôÿÒèôÿÏæõÿÉáóÿÊâöÿÑè÷ÿÑè÷ÿÈáõÿÈàôÿÑæöÿÕê÷ÿÒç÷ÿÓç÷ÿÒåöÿÓæõÿÙëøÿÜîøÿÜîøÿÚì÷ÿÙë÷ÿÔæöÿÐäöÿÍáõÿÎáõÿÑåöÿÔè÷ÿÖê÷ÿØì÷ÿÙìöÿÕèöÿÔæöÿÑäôÿÐãóÿÔçõÿÚêöÿÛêöÿÙéöÿØèôÿÙèôÿÛêõÿÞëõÿÝêôÿÜéôÿÚèóÿÚèôÿÛéôÿÝëõÿÝëõÿÜêôÿÛéôÿÛéõÿÛéõÿÞëöÿßìöÿâíöÿâíöÿßëöÿÜèôÿÝéõÿàìöÿßíöÿÝì÷ÿÙéöÿ×èõÿØèöÿØê÷ÿÚëùÿÙêøÿØé÷ÿÛìøÿßíøÿáðùÿÛëøÿÛëøÿÛëøÿÚìøÿÚëùÿÕéøÿÔèøÿÓèùÿÓèùÿÔéúÿÔèúÿÑæùÿÓæúÿÖéúÿØëúÿÛìúÿ×èùÿÙêúÿÛëúÿÛíúÿÛíúÿØëúÿÔèúÿÐåøÿÒçúÿÔéúÿÕêúÿÒèúÿÏåøÿÏåøÿÒçùÿÒçùÿÌâøÿËãøÿËäøÿÍçùÿÐêùÿÏêøÿÊæùÿÂà÷ÿÀßøÿÇæùÿÇåùÿºÛöÿ¹ÙôÿÄá÷ÿÈåöÿÃàöÿÄßöÿÂÜôÿÂÝóÿÉäöÿÌæöÿÍçöÿËæöÿÉä÷ÿÂß÷ÿ¼Ùöÿ¶Ööÿ·Ööÿ¹Úöÿ¼ÝõÿÀáöÿÂäöÿÆäöÿ¾ÞöÿºÚöÿ·ØôÿµÖóÿ»ÜõÿÃáöÿÄâöÿÁßöÿÁÞõÿÂßõÿÅâöÿÊäöÿÊäöÿÇâ÷ÿÅàöÿÄáøÿÅá÷ÿÆã÷ÿÆã÷ÿÄâ÷ÿÁà÷ÿÂßùÿÂàúÿÆãúÿÉåúÿÍèúÿÌçúÿÇãúÿÁÞøÿÂÞøÿÆãùÿÃãùÿ¼ßùÿ´Ù÷ÿ®Öõÿ®Õõÿ­×öÿ­×÷ÿ«Ööÿk¬Ôöÿ²Ù÷ÿºÞ÷ÿ¾á÷ÿ±Øöÿ¯Øöÿ°Øöÿ®Úöÿ«×öÿ¢ÑõÿžÎõÿœÎöÿ›ÍõÿœÎõÿ›Ëõÿ•Çóÿ—ÆóÿœËñÿ¡Îïÿ¤Ìëÿ™Àæÿ˜¾àÿ–¹×ÿ´Íÿ‡©ÁÿµÈÖÿt†–ÿ€™ÿ»ÌØÿ‹«Åÿ’¸Ñÿ›ÂÛÿ˜Äâÿ”Áçÿ’Áéÿ–Æïÿ˜Éñÿ›Ìóÿ™Ëòÿ•Æóÿ“ÄóÿœÊóÿ§Òóÿ¢Ìóÿ£Ìóÿ¤Îóÿ¦Ñóÿ§Óóÿ¢Ñòÿ›Ìòÿ”Æòÿ‘ÄñÿÅðÿ–Èñÿ—Èòÿ“Åñÿ‘Äðÿ—ÇóÿžÎóÿÃñÿ‘ÄñÿÆñÿ’ÉñÿšÐóÿÔóÿ™ÒóÿËôÿ~¼ðÿŠÇôÿ“Ìõÿ‰Æõÿ‚¿òÿŒÆóÿ›Ðõÿ¤×õÿ£Ðöÿ Ëõÿ ÍôÿªÖöÿ³ßøÿ¶áøÿ·àùÿ·áùÿ³Üùÿ¨ÒùÿÊùÿžËøÿ§Óøÿ¬×øÿ¯Üöÿ´ßøÿºâùÿ»âùÿ´Ûùÿ¯Ö÷ÿ²Ø÷ÿ¶Úøÿ¼ÞúÿÅåúÿÅäúÿÃâúÿÃàøÿÇãùÿÍçúÿÐéúÿÎçùÿÌäøÿÇâ÷ÿËåùÿÍæøÿÏèøÿÏçøÿÎåøÿÌäöÿÍä÷ÿÒçøÿÓèøÿ×êøÿÙëøÿ×êøÿÑåöÿÑäõÿÓæöÿÕéõÿÑæõÿÌâôÿÈàòÿÉáóÿËãõÿÊãõÿÉâôÿÊâóÿÊàòÿÐäôÿÖéôÿÔçôÿÑåôÿÐäôÿÑæõÿÒçõÿÎåõÿËáôÿÉàóÿËáôÿÌâôÿÍâôÿÍâôÿÌàôÿÌàôÿÑãõÿÕæôÿÒäôÿÓäôÿÔåõÿÕçõÿÕçõÿÔèöÿÒæöÿÏäöÿÍâõÿÍãõÿÏãõÿÏãõÿÍâôÿËáóÿÐäöÿÒæöÿÌàôÿÍâõÿÌãõÿÍäõÿÑçöÿÎäòÿÆÛêÿÍæ÷ÿÃÝóÿËä÷ÿÍåöÿÉâöÿÄÝòÿÈàóÿÐæöÿÔéöÿÓæöÿÐâôÿÎáòÿÔçõÿÙì÷ÿÚí÷ÿÚì÷ÿÛìøÿÙëøÿÓæøÿÏãùÿÏäùÿÒæøÿÓç÷ÿÓçôÿÖêöÿØêöÿØêõÿÓçõÿÐãóÿÐâòÿÓåôÿ×èöÿÛëöÿÛëöÿÚêöÿÚéöÿÛêöÿÞìöÿàî÷ÿßí÷ÿÞì÷ÿÛêöÿÝì÷ÿßíøÿßî÷ÿàíøÿßíøÿÞìøÿÞìøÿáîùÿáïùÿãïøÿäðøÿâïøÿßë÷ÿÞë÷ÿàíøÿâïøÿÞì÷ÿØèõÿÕæóÿÕæôÿÖèõÿÖçõÿÕèõÿØé÷ÿØé÷ÿÜìùÿàðùÿßîùÿÜíùÿÚëùÿÛîúÿÛîúÿØìúÿÕèùÿÒçøÿÔèúÿÔéúÿÔéùÿÓèùÿÑæùÿÐäøÿÓæøÿØêøÿÖèøÿÖèøÿ×éùÿ×êøÿØêøÿÖéøÿÓèøÿÐæøÿÏä÷ÿÏå÷ÿÑæøÿÐå÷ÿÍãöÿËáõÿÎã÷ÿÐæ÷ÿÈßõÿÉá÷ÿÈâ÷ÿÈã÷ÿÌæøÿËç÷ÿÈåöÿÂáöÿµÕñÿ¾ÝõÿÀßõÿ¹Úôÿ´Ôðÿ¹ØñÿÀÞóÿÅâóÿÂÜóÿ¾Øñÿ½×ïÿÂÝñÿÇãóÿÉåôÿÈâóÿÇâóÿÄáôÿ¼Úõÿ³Óõÿ³Óôÿ¸Ùõÿ»Ûôÿ¼Ýòÿ¿áõÿÂáôÿÂáôÿºÛôÿµ×òÿ¶Öñÿ¸Ùóÿ½ÝöÿÅâöÿÄáöÿÁÞõÿÀÝôÿÃàöÿÉã÷ÿËå÷ÿÉä÷ÿÆá÷ÿÁß÷ÿÄâùÿÇåùÿÉçûÿÈåûÿÆãûÿÄâúÿÃáúÿÈåûÿÉæüÿÎéüÿÏêüÿËçüÿÃáúÿÂàúÿÄãûÿÈèûÿÀãûÿ·Ýúÿ°Úøÿ±Úúÿ°Ûûÿ­Úûÿ«Úúÿk®Úúÿ®ØùÿµÝûÿÀåûÿ»âûÿ³Ýúÿ°Úúÿ°Þûÿ±Þûÿ¨Ùûÿ¡ÒúÿœÏùÿžÑûÿŸÒûÿ ÓûÿžÑùÿ™Ëùÿ•Ç÷ÿœËõÿ¥ÐñÿÆíÿšÁåÿ–¼ÝÿµÒÿ‰¬Çÿ·ÊÙÿwŠ™ÿ‚˜ÿ¼ÌØÿ‰«Ãÿ”·ÐÿÃÛÿœÇåÿ•ÄêÿÄíÿ™Ëóÿ™ÎõÿžÒ÷ÿžÓøÿ—ÌùÿÄ÷ÿ—Êùÿ¨Öùÿ¤Òùÿ¤Òùÿ¤Ñùÿ¦Ôùÿ¨Öùÿ§Øúÿ¢ÔúÿÐúÿ”Éøÿ‘Çöÿ“É÷ÿ™Íøÿ–Ê÷ÿÅõÿ”È÷ÿžÐ÷ÿ’È÷ÿ”Ëöÿ‘ÉöÿÈõÿÌöÿ”Ñöÿ”ÒöÿÏöÿv»ñÿ|¿óÿ‡ÈöÿŠË÷ÿÂõÿ{½ñÿŽÍ÷ÿ¨Þøÿ ÓøÿžÌöÿœËôÿ§Óöÿ°Û÷ÿ´Ýøÿ¶Þøÿ·ßøÿ¹ßøÿªÓøÿœÈõÿ›Éôÿ¤Ðöÿ©Õöÿ¬Øöÿ°Ú÷ÿ¶Þöÿ½âöÿµÛöÿ­Ôôÿ²Ùöÿ±×õÿ¶Ú÷ÿÇæúÿÇæúÿÅãúÿÃáùÿÆãùÿÌçúÿÑéúÿÏéúÿÎçúÿÈâøÿËåúÿÍçùÿÏèøÿÑéúÿÑèúÿÐçùÿÐæùÿÓéúÿÒçùÿÖêùÿÚìùÿÚìùÿÖéùÿÕèùÿÕéøÿØíøÿÔêøÿÏå÷ÿÍäöÿÎåøÿÎæøÿÎçúÿÌåùÿÐèúÿÍäøÿÑçùÿÚîúÿÝïúÿ×ëúÿÓèøÿÖëúÿØìúÿÔêúÿÎæùÿÊã÷ÿÐçúÿÐèúÿÒéúÿÓéúÿÐçúÿÍãùÿÒæúÿØëúÿ×éúÿØêûÿØëûÿÙìûÿØìúÿ×ëùÿÔèøÿÓçùÿÎä÷ÿÌâöÿÎä÷ÿÑçùÿÑæùÿÍã÷ÿÐåùÿÔèùÿÏåùÿÐçùÿÎæùÿÍåøÿÎçùÿ²ÄÖÿ°ÃÔÿÌç÷ÿ¾ÚñÿÄßõÿÉä÷ÿÊå÷ÿÃßôÿ¿ÙïÿÊãõÿÔêõÿÑåõÿÎáóÿËßðÿÐãòÿÕèôÿ×èôÿ×èôÿ×éôÿØéôÿÒåõÿËßóÿËàôÿÏãõÿÐäôÿÐåóÿÒæôÿÖéõÿÚìöÿÖèöÿÏãóÿÒåôÿÑäóÿÓåôÿÜìöÿÜìöÿÛêöÿÚêöÿÛêöÿÞì÷ÿßíöÿßìöÿÞí÷ÿÚéõÿÜë÷ÿßíøÿàïùÿàîøÿßíøÿßíøÿßìøÿâïúÿáïúÿãðúÿæñúÿåñúÿãïúÿâîúÿâïùÿâðøÿàïùÿÜëøÿÚê÷ÿÛëùÿÚëùÿÙëùÿÖéøÿÙëùÿÕçöÿ×èöÿÞî÷ÿàî÷ÿÛë÷ÿ×èõÿÚë÷ÿÚë÷ÿ×ê÷ÿÑæöÿÌâôÿÒçøÿÑçøÿÒç÷ÿÑæöÿÎäöÿÊàõÿÏã÷ÿÕèöÿÓæöÿÓåõÿÓåõÿÒåôÿÒåóÿÑåóÿÏãóÿÎâôÿÊßòÿÈÞñÿÉÞñÿÍâôÿÌâõÿÇÝòÿÉßôÿÎãõÿÇàõÿÈàõÿÆàõÿÂßôÿÃáõÿÅãõÿÄãõÿÂâöÿ²Õñÿ·Úöÿ½ßøÿ½àøÿµÙõÿ°Ôñÿ¼ß÷ÿÉè÷ÿÄá÷ÿÁÜöÿ¾ÛóÿÄàõÿÊå÷ÿËæ÷ÿÍçùÿÍèùÿÍçùÿÂàùÿ¶Ö÷ÿµ×øÿ»Ýúÿ½áúÿ¿ãûÿÂåüÿÆçüÿËëüÿÄäüÿºÝùÿ½ßúÿ»Þùÿ½ßúÿËéüÿÌêýÿÉæýÿÆäüÿÇæüÿÍéýÿÐëýÿÏêýÿÌèýÿÄãûÿÇåýÿÊèýÿËéýÿËèýÿÇåüÿÆäûÿÅãûÿÉæüÿÆäüÿËçýÿÐêýÿÏêýÿÈåüÿÆãüÿÆäûÿÊéûÿÂåûÿ¸Þûÿ´Üúÿ´Üüÿ²Üüÿ¬Úûÿ¨×úÿk­Úûÿ§Ôùÿ®Øúÿ¾äûÿÂåúÿ¶Þûÿ®Úùÿ²Ýûÿ³ßûÿ«ÛûÿžÒùÿ–Ì÷ÿžÑúÿœÒùÿžÓùÿžÓùÿ—ÊøÿŒÀóÿ“Äóÿ¢Îðÿ›Åëÿ—Àåÿ’ºÜÿŒ³Ñÿ‡¬Èÿ·ËÚÿx‹šÿ‚™ÿ¾ÍØÿ­Åÿ‘¶ÑÿœÃÝÿ£Íæÿ™ÊìÿŠÁëÿ‘Éóÿ“Êõÿ—Ð÷ÿÔùÿ›Ñúÿ–Îúÿ—Íúÿ›ÐúÿŸÔúÿ Óûÿ Ôûÿ£Õüÿ¤Öüÿ¥×üÿ¤Ôüÿ£ÓüÿšÌûÿ™Ëúÿ–Ëúÿ”Êûÿ•Ëüÿ•Ìýÿ–Ïýÿ˜Ïýÿ˜Ðýÿ‹Èýÿ€ÀúÿÂùÿ‰Ëüÿ”Õüÿ—Úüÿ•ÚüÿwÅúÿuÄúÿ„ÏýÿÖýÿ}ÊýÿuÁùÿ‡Ïýÿ Þýÿ¥ÜýÿŸÓüÿžÑúÿ©Øüÿ³Ýýÿ·ßýÿºàýÿ¿äýÿ¾âýÿ¸ßýÿ¯Øüÿ¥ÑùÿŸÏøÿ£Óúÿ«Úûÿ³Þúÿ¶Þùÿ¿äùÿ¾ãùÿ´Ûøÿ®Öõÿ±Øõÿ¸Ý÷ÿ»ßùÿÂæùÿÆåùÿÆã÷ÿÅáöÿÇãöÿÎæ÷ÿÏçøÿÎçøÿÊäøÿÊä÷ÿÌåøÿÏè÷ÿÑé÷ÿÐç÷ÿÑè÷ÿÒèøÿÏåöÿÔéøÿÙìøÿØëöÿÕèöÿÒæöÿÒåöÿÒæöÿÕèöÿ×ëöÿÖêöÿÑæöÿËãöÿÌä÷ÿÍæøÿÎæùÿÌäùÿÍåùÿÐçúÿÓêúÿÜíúÿÙìùÿÖéøÿÔèøÿÕêøÿÖëøÿÐèøÿÄÞòÿÊä÷ÿÍæùÿÏèùÿÒéùÿÑèùÿÐæùÿÐæùÿÒçùÿÓéùÿÓèøÿÓèøÿÔèøÿÔèøÿÕéøÿÔèøÿÔçøÿÐä÷ÿÏãöÿÎã÷ÿÎäøÿÏåùÿÏæúÿÏæùÿÑçúÿÑçúÿÌäúÿÆß÷ÿÅà÷ÿËæúÿ¯ÂÔÿ°ÄÔÿÏìúÿÂá÷ÿÁá÷ÿÉçúÿÍêúÿÈçüÿÂáøÿËéüÿÖðýÿØïýÿÔêüÿÒèúÿ×ëûÿÝïýÿÞïýÿßðýÿáðüÿàðüÿÞïýÿÙìýÿÓèûÿÑçûÿÓêýÿ×íýÿÚïýÿÛïýÿàòýÿàñýÿÚíüÿÕéùÿ×ëúÿÚîüÿÜïýÿàòýÿâòýÿâñýÿßîúÿàïúÿãñúÿäòûÿãñûÿáïûÿàïúÿáðûÿãòûÿãòûÿâñûÿãñûÿãñûÿàîùÿäòûÿçóûÿçôûÿåòûÿäñüÿãðüÿãðüÿäòüÿåóûÿåóüÿàïûÿÛìúÿÜíûÿÛíûÿÚìúÿØêúÿØêúÿÚìûÿÜîûÿáðúÿßïúÿÜìùÿÚëùÿÜîúÿÝïúÿÖìúÿËâôÿÐçùÿÑèúÿÓëûÿÕëûÿÕëüÿÓêüÿÓéüÿÔêüÿÖìüÿÖëüÿÖëüÿ×ìüÿØìüÿØìüÿ×ëûÿÖêûÿÒæúÿÐäøÿÎã÷ÿÍã÷ÿÍã÷ÿÍãøÿÌäøÿÌäøÿÌåùÿÆáùÿ¾Ûöÿ¾Ý÷ÿÂâúÿÆæùÿÇèùÿÆéúÿµÜ÷ÿ³Û÷ÿºáùÿ¾äùÿµÞùÿ­×õÿ¸àùÿÅçùÿÆåùÿÁàøÿ¿ÝöÿÅâøÿÊåùÿÌæùÿÍæùÿÐèùÿÍæøÿÉäùÿÁÞùÿ¸Øöÿ´×öÿ¶Úøÿ»àùÿÀâøÿÁáøÿÇæøÿÇåøÿ½Þ÷ÿµÙôÿ¸Ûõÿ½ßøÿ¾àùÿÄåøÿÆäøÿÅâ÷ÿÃàöÿÄáõÿÊäöÿËåöÿÈäöÿÃà÷ÿÃáöÿÃá÷ÿÈå÷ÿÈæ÷ÿÆä÷ÿÇäøÿÈåùÿÃàöÿÇåøÿÍçøÿÌèøÿÈäøÿÃà÷ÿÂÞ÷ÿÀÞøÿÃâøÿÄå÷ÿÂä÷ÿ¹Ü÷ÿ®×öÿ­Ö÷ÿ¬×øÿ«Öøÿk¦Ò÷ÿ¦ÒøÿªÖøÿ®Úøÿ½àøÿ¸Ýøÿ²Ùøÿ®Øùÿ±Ýúÿ³àúÿ£×úÿÉôÿ•Ïùÿ—Ðüÿ›ÔüÿžÖüÿ›Òûÿ•Ìùÿ“É÷ÿ–Êôÿ–Éïÿ•Åêÿ¾áÿ‰µÕÿ‚ªÉÿ¶ÊÚÿxŠšÿ„‘›ÿÁÐÚÿ”³Ëÿ•¹ÕÿÄáÿ¥Ðêÿ Òñÿ“Êòÿ‘Ëöÿ’Îúÿ˜Óþÿ›ÖþÿÖÿÿ˜Òÿÿ–Ïÿÿ–Ïÿÿž×ÿÿÖþÿžÖþÿ ×ÿÿ¢×ÿÿ¤×ÿÿ¥Öÿÿ¦Õÿÿ¡ÑþÿžÐþÿ™Íýÿ–Ìýÿ”Ìþÿ”Íþÿ•Ïþÿ”Ðþÿ•Ðþÿ‹ËþÿƒÅþÿ}ÂüÿÆýÿ‰Ðþÿ“Ùþÿ˜ßþÿzÉýÿnÁøÿpÁùÿ~ÎüÿÎüÿqÁùÿzÇüÿ–Øüÿ¦Þûÿ¢×ûÿ¡Òûÿ¤Ôúÿ­Øûÿ´Ýüÿ¼ßüÿÀãüÿÀáüÿ»ßüÿ³Úüÿ©Ôúÿ¡Ñûÿ£ÔýÿªÛþÿ³áþÿ¸âþÿÁåþÿÃçþÿ¿ãÿÿ·Þüÿ¶Þüÿ»âþÿ¿äþÿÆèþÿÉêþÿÊêþÿËçýÿÌéüÿÒëýÿÔìýÿÒìýÿÐéüÿÎèüÿÐéûÿÔëûÿÔìûÿÒëûÿÔëúÿÖíûÿÒêùÿÖíüÿÚîûÿÛîûÿÙíûÿØìûÿØêûÿÖèúÿØìúÿÚîùÿÙíùÿÔéùÿÏå÷ÿÎåøÿÏåùÿÎæùÿÎæøÿÌä÷ÿÍä÷ÿÍå÷ÿÙê÷ÿÙë÷ÿÖè÷ÿÑåõÿÓè÷ÿÔéöÿÑè÷ÿÉâõÿÉâõÿÊãöÿÍæøÿÎçøÿÐçøÿÎå÷ÿÌãöÿÍã÷ÿÐç÷ÿÒéùÿÒéùÿÓéùÿÓéùÿÔéùÿÕéúÿÖèúÿÓçùÿÓçúÿÑåùÿÐæúÿÐçûÿÐçûÿÑèüÿÑéüÿÑéüÿÎèýÿËåýÿÇãûÿÉåüÿ®Ã×ÿ±Å×ÿÒïüÿÆæüÿÀâùÿÁâùÿÉéýÿÊéýÿÁâùÿÆæüÿÑíüÿÙðýÿ×íýÿÕêüÿÖëüÿÚíýÿÝîüÿÞîûÿàðûÿàïûÿÞïüÿÙëûÿÓæøÿÎä÷ÿÏæùÿÒéùÿÕëùÿØëùÿÜíùÿÜîùÿÚëùÿÔçöÿÓçöÿÖêøÿØëøÿÛíøÿÝîøÿÝíøÿÜë÷ÿÝì÷ÿàîøÿáîøÿàîøÿßíøÿÞíøÿàîùÿáïøÿàî÷ÿßî÷ÿßíöÿàî÷ÿÞìöÿáïøÿãðøÿäðøÿâïøÿàí÷ÿàì÷ÿßìøÿáïøÿãñùÿâðùÿÞîùÿÛëøÿÜìûÿÜìûÿÚìûÿÚìúÿÙëúÿÙëûÿÙìûÿâðûÿâðûÿßîûÿÚëùÿÛíúÿÜîúÿ×ìùÿÎåöÿÌãõÿËãõÿÍäöÿÎæöÿÏæöÿÎå÷ÿÌãöÿÌãöÿÏæöÿÏæöÿÑç÷ÿÒèøÿÒèøÿÔèøÿÔçøÿÔçøÿÑå÷ÿÑåøÿÐäøÿÎã÷ÿÍäùÿÌäùÿÌåùÿÊã÷ÿÊäøÿÅáøÿÀÝ÷ÿ»Úõÿ½ÜöÿÁâøÿÅçùÿÇêùÿ·Þøÿ®Øôÿ¯Ùöÿ¸áúÿ·áúÿ¬Øöÿ±Üùÿ¿äøÿÈèùÿÄãùÿÂàøÿÃàøÿÈãúÿÍçûÿÐèûÿÓêûÿÑéüÿÍçüÿÆãûÿ½ÝùÿµÙøÿ¶Ûúÿºàûÿ¿ãûÿÂãúÿÈæúÿÉçûÿÄãûÿ»ÞøÿºÝøÿ½áúÿÁãûÿÅæúÿÈçúÿÈçûÿÇåúÿÈæúÿÎèûÿÏèûÿÌèúÿÈäúÿÆãúÿÈåúÿËçúÿÊèùÿÇæùÿÇåøÿÉæùÿÅã÷ÿÈçúÿÍéúÿÍéúÿÊæúÿÅãùÿÄáùÿÃÞùÿÅäùÿÈçùÿÅæùÿ¼àùÿ´Ùøÿ¯×úÿ¯Øúÿ¬Øûÿk­Ùúÿª×úÿ¨Öúÿª×úÿ¾âúÿ½áúÿ·Üúÿ®×øÿ®Úúÿ±ßùÿ§Úùÿ–Îöÿ’Ìöÿ‘Ì÷ÿ•Ïùÿ—Ñøÿ˜Ðøÿ’Ë÷ÿŽÅôÿÃñÿ’ÇîÿŽÂæÿ‰»Ýÿ„²Óÿ~§Çÿ´ÈØÿwŠ™ÿ‚›ÿÂÑÛÿ˜µËÿ•¹Õÿ™Âáÿ¤Ïëÿ§ÕñÿžÓ÷ÿ‘Ë÷ÿËùÿ“Ïüÿ›ÔþÿŸÖþÿšÒþÿ”Ìþÿ‘ÊýÿšÓþÿ›ÔþÿÕýÿŸÕüÿ Ôüÿ Ôýÿ¢Òüÿ£Óüÿ¡Ñüÿ Ðüÿ›Ïüÿ—Ìûÿ“Ëüÿ“Ìýÿ“Íýÿ“Ïýÿ“ÍýÿÌýÿ‡Çýÿ|Áûÿx¿ùÿ}ÅüÿŠÒýÿ–ÝýÿŒ×ýÿvÅûÿc¶ôÿsÄûÿ‰Õýÿ|ÉýÿsÁúÿÓýÿ§Þýÿ¨Ûýÿ¤Õýÿ¢Òúÿ¦Óûÿ³Üþÿ½áÿÿÀãÿÿÁãþÿ¾âýÿ¸Ýüÿ­Öûÿ¢Ð÷ÿŸÐ÷ÿ¥Õûÿ­Úûÿ·Þûÿ¾áûÿÁåûÿ¿äûÿ¸Ýúÿ²×øÿ¶Ûøÿ½áùÿÂâøÿÄãøÿÅäøÿÆâ÷ÿÇãöÿÍå÷ÿÏæ÷ÿÎç÷ÿÌäøÿÌæøÿÏèøÿÑêøÿÒéøÿÑè÷ÿÑçöÿÔê÷ÿÒèöÿÓèöÿÕé÷ÿ×ë÷ÿÙë÷ÿÖê÷ÿÔç÷ÿÒåöÿÔèöÿØêöÿ×êõÿÔèõÿÎäõÿÌãöÿÌã÷ÿÌä÷ÿÐèøÿÐèúÿÏæúÿÍæúÿÙëúÿÜïúÿÛíúÿÔèøÿÓéùÿÖìùÿØíûÿÒëûÿËäøÿËäùÿÍçúÿÑèúÿÓéúÿÒéûÿÐæûÿÎåúÿÒéûÿÓéûÿÒéùÿÓéùÿÓèùÿÓèùÿÕèúÿÕèùÿÔçùÿÒæøÿÐåøÿÎã÷ÿÍäøÿÍäøÿÍäøÿÍåøÿÍäøÿËäøÿÉãùÿÄß÷ÿÁÝõÿ§¼Óÿ¬ÁÔÿÏëùÿËéùÿÁá÷ÿµÖïÿ¾ßõÿÈæöÿÂáöÿ¼ÜóÿÉå÷ÿÓê÷ÿÔêøÿÒçøÿÐäöÿÑäõÿØéøÿÝíúÿÞíúÿÞíùÿÛìøÿØé÷ÿÒåöÿËáóÿËâôÿÐçùÿÓèøÿ×é÷ÿÚëøÿÛíøÿÛìøÿ×éøÿÓæöÿÔçöÿÚìùÿÝîúÿÝíùÿÝíøÿÝìøÿÞíøÿáïùÿãðúÿáïøÿßíøÿßíøÿàïøÿáïøÿáïøÿàî÷ÿàî÷ÿãðùÿáïøÿáïøÿãðùÿäñùÿåñùÿãðùÿâîùÿßìøÿàîøÿãðøÿâðøÿßïøÿÝíúÿÚëùÿÚëúÿÙëúÿÚìùÿÙëùÿØêúÿ×êûÿßîúÿáðúÿàïúÿÙêøÿØëùÿÛîúÿÛîúÿÕëúÿÍå÷ÿÍåøÿÏèúÿÓêûÿÔêûÿÒèúÿÐçûÿÎåúÿÒéûÿÔêüÿÕëüÿÖëüÿÖëüÿÖëüÿ×êüÿ×ëüÿÖêüÿÖêüÿÓèûÿÑæúÿÏåúÿÎåúÿÍåúÿÌæúÿËåúÿÈäûÿÅâûÿ½Ýøÿ¹Úöÿ¼ßùÿÃæûÿÈëûÿÃèûÿµÝùÿ§Òòÿ²Üùÿ½åûÿµÞûÿ¬Ø÷ÿ»âúÿÈçúÿÇæúÿÃáùÿ¿ÝöÿÁÝöÿÈâøÿÎåùÿÏçùÿÐçúÿÎçúÿÉäúÿÀßùÿ¶Ùöÿ³Øöÿ·Ýúÿ¼àúÿÃãúÿÈåûÿÉèûÿÇæûÿ¿àúÿ¹Ûøÿ»ÞøÿÂåüÿÇæüÿÇçûÿÇçûÿÈæûÿÈåúÿÍçúÿÏèûÿÍéûÿÉåûÿÈæûÿÊèûÿÌéûÿÌéûÿÉçûÿÉçúÿÍéûÿÉçúÿÉçûÿÌèüÿÎëýÿÐêýÿÌèýÿÉåýÿÄàûÿÄäûÿÉéüÿÉéûÿÁåûÿ·Ýûÿ±Ùúÿ®Øûÿ«Øûÿk°Üûÿ¬Úûÿ¨Öûÿ¤ÓûÿºÞûÿ¿äúÿ¼àúÿ®Øøÿ©×ùÿ¯Ýúÿ®Ýúÿ¡×ûÿ’ÍøÿËøÿ’ÍúÿšÒûÿÓúÿ–ÍøÿŽÅöÿŠÀñÿÄíÿÁçÿŠ»Þÿ„²Óÿ~¦Çÿ´ÉÚÿwŠšÿ~Œ™ÿÁÐÚÿ˜¶Èÿ”¸Óÿ–¿Ýÿ¢Ìèÿ¦Óîÿ£Ôòÿ“ÊòÿÉôÿ‘ÊöÿšÑùÿŸÕùÿœÒùÿ”ËùÿÆ÷ÿ–Íúÿ™ÑúÿžÓúÿžÔùÿÒøÿŸÑøÿžÐøÿŸÑøÿ¡ÑøÿÏøÿ›Ïùÿ–Ìúÿ’Êùÿ‘Éùÿ‘ÊùÿËúÿ‘ËúÿÊúÿ‡Æúÿ}Àøÿv¼÷ÿwÀøÿ‚ËûÿŽÖûÿœàûÿ‰Ôûÿe¶óÿf·ôÿ‡ÒüÿƒÏüÿqÁøÿÈûÿ¢Úýÿ«Ûýÿ©Øýÿ£Ñúÿ¦Ñúÿ²Ûüÿ¼àýÿ¼àýÿÀâýÿÁäýÿ½ãýÿ³Ýüÿ¦Óùÿ Ð÷ÿ¥Öüÿ®Ûþÿºàþÿ¾ãÿÿÅçÿÿÆêÿÿÀäÿÿ¶Üüÿ¹ÞüÿÃæÿÿÅæÿÿÉèÿÿÍêÿÿÍêÿÿÏêÿÿÔíÿÿÕíþÿÔìþÿÑêþÿÐéüÿÑëüÿÔìüÿÕìüÿÑéúÿÔëûÿØîüÿØíüÿ×ìûÿ×ìûÿÛîüÿÞñýÿÞðýÿÛîüÿØìûÿØëùÿÜîûÿÞðûÿÚïûÿ×ëûÿÓèûÿÐæúÿÐçúÿÒéúÿÑèúÿÏæúÿÎæúÿÓç÷ÿÜîúÿÝïúÿ×êúÿÓéùÿ×ìúÿ×íúÿÔëùÿËäöÿÉâõÿËãöÿÐçøÿÒè÷ÿÒèøÿÏæùÿÌã÷ÿÑçúÿÓêûÿÕëûÿÕëûÿÕëûÿÕëûÿÕêûÿÖêûÿ×êûÿÕéûÿÔéûÿÑçúÿÐçûÿÐçûÿÐçûÿÐèüÿÐèüÿÏèüÿÍçýÿÈãûÿÃàùÿ§½Õÿ­ÂØÿÐîþÿÖòþÿÎíþÿ»Üöÿ»ÝöÿÍìýÿÌëþÿÁâúÿÈæüÿØðÿÿÜðÿÿÚîþÿÖêüÿ×êüÿÝïþÿâòÿÿâòÿÿãóÿÿãóÿÿâóÿÿÜðÿÿÔêüÿÐçúÿÓëýÿÙîÿÿÝðÿÿßñÿÿâóÿÿâôÿÿßñÿÿØìüÿÙìüÿßñþÿßñþÿàñýÿâñýÿâñýÿáðüÿäòüÿãñúÿãðúÿáïûÿáïûÿâñûÿãòûÿäñûÿáïùÿâðúÿäòúÿãðùÿáïøÿáïøÿãðùÿåñùÿåðùÿãïùÿàíøÿàí÷ÿäñúÿåòúÿâðùÿÞíùÿÛêøÿØè÷ÿØè÷ÿÙêøÿ×é÷ÿÕç÷ÿÔç÷ÿ×çôÿÞí÷ÿÞíöÿ×èõÿÔæôÿØêöÿØë÷ÿÖê÷ÿÍäõÿÌãõÿÍäöÿÒèùÿÔêùÿÔêúÿÐçúÿÍäøÿÐæùÿÑèùÿÓéùÿÓéùÿÓéùÿÔéùÿÔèùÿÔéùÿÕéùÿÓèùÿÒçùÿÐæùÿÏåùÿÎæúÿÍåùÿÊãøÿÊãøÿÇá÷ÿÃß÷ÿ½Ûõÿ·Øôÿ¸Ûöÿ¾áùÿÃåøÿÉëùÿ¿åùÿ¨Òñÿ¦Ððÿ»âøÿ¹áùÿ«Öõÿ±ÙöÿÄäøÿÈäøÿÆá÷ÿ¿ÜõÿÀÜõÿÈâ÷ÿÎåøÿÍåøÿÏæøÿÎæøÿÊå÷ÿÂàøÿ¸Úöÿ²Öóÿ´Ùöÿ»ÞùÿÂáùÿÄâùÿÉæúÿÊéúÿÃâùÿ¹ÚöÿºÛöÿÁáøÿÂáùÿÄãùÿÉæúÿÈæúÿÊæüÿÎéüÿÏéûÿÍçûÿÉåûÿÇäûÿÉæúÿËçúÿËæúÿÆãøÿÈæùÿÌéúÿÊçúÿÉæúÿÉçûÿÌéüÿÏêüÿÏéüÿÊæüÿÅâûÿÅãùÿÉçûÿËéûÿÅæûÿ½àûÿµÛüÿ°Øüÿ®Ùüÿk±Üüÿ­Úüÿ©Öüÿ¥Ôüÿ²Ùùÿ¿äûÿÀäûÿ±ÛûÿªÚûÿ±àýÿ±âüÿªÞüÿ˜Ñùÿ“Îùÿ”ÍúÿœÓüÿŸÖúÿ›Òùÿ“ÊøÿÂóÿÄðÿÅìÿ¿ãÿˆ¸Øÿ¬Ìÿ¶ËÛÿyŒ›ÿ{‹˜ÿ¾ÎÚÿš·Êÿ›¾ÖÿÄáÿ¤Îëÿ¨Õñÿ§ØöÿÒøÿ•Îøÿ–ÏûÿŸÖÿÿ¥Úÿÿ¢ØÿÿÑÿÿ”Íýÿ”Íþÿ—ÑþÿžÕþÿ¢Ùþÿ£Øþÿ£Öýÿ ÔýÿŸÒüÿ¢Ôüÿ Ôüÿ Óüÿ›Ñüÿ—Ðûÿ”Îûÿ’ÌûÿÊúÿ“Íúÿ‘ÍüÿŠÉüÿ‚Åûÿ{ÁùÿxÁùÿ|Çúÿ€Ëûÿ™ßûÿ—Ýûÿp¿öÿ^­ëÿ{Çùÿ‰ÑúÿxÄøÿx¿ôÿ›Ñúÿ¨Ùúÿ¬ÛúÿªÖúÿ©Õùÿ³Úùÿ»Þúÿ¼Þúÿ¾ßúÿÀãúÿÀãùÿ·ÞùÿªÕöÿ¢Ðóÿ£Ïóÿ©Óôÿ²Øöÿ·Û÷ÿ¿àøÿÃäùÿ¾àùÿ¶Ù÷ÿ¶Ú÷ÿ¼ß÷ÿ¼Þ÷ÿÂá÷ÿÇäøÿÉåøÿÉãøÿÍçøÿÏçøÿÐçøÿÍåøÿÎæùÿÐèùÿÓêúÿÓèúÿÐæ÷ÿÒèøÿÖëúÿ×ëùÿ×êùÿ×êùÿÚìúÿÝîúÿÞîúÿÛìúÿ×êøÿÖèöÿØë÷ÿÛíøÿÛíøÿ×ëøÿÓèùÿÐæùÿÐçúÿÒèûÿÒéüÿÒèûÿÑèûÿÑåöÿÚìûÿÞïûÿÚíûÿ×ëúÿ×ëùÿØìúÿ×íúÿÑèùÿÌäöÿÍä÷ÿÒéúÿÖëúÿÔêúÿÒçúÿÎåùÿÏæúÿÐèúÿÓéúÿÕëúÿÕêúÿÕêúÿÔéúÿÓèùÿÕêúÿÔéúÿÔéúÿÒèúÿÑèúÿÐçúÿÏæúÿÏçûÿÑéüÿÐèüÿÌæûÿÉãúÿÅáøÿ¦¼Óÿ¨¿ÕÿÈçûÿÓïûÿÑîûÿ¿ßöÿ²ÒìÿÆåúÿÍêüÿÄäúÿÁßöÿÕìþÿÚïþÿÜðþÿÚîþÿÙíýÿÞðþÿáñþÿáñþÿâòþÿãóþÿãóþÿÞñþÿØíýÿÒèúÿÓéûÿ×íýÿÜïþÿÞðþÿâóÿÿäôÿÿßñþÿÚìüÿÚíüÿÞñþÿÞðþÿàñýÿãóþÿãòýÿäòþÿæôþÿçôþÿæóýÿäñýÿäñýÿäóýÿæôþÿæóþÿâðûÿãñûÿåóüÿæóüÿåòûÿäñúÿæòûÿèóûÿèóûÿæòûÿãðúÿáïøÿãðùÿåòúÿåòúÿáðúÿÝíúÿÛëúÿÚìúÿÛëúÿÙëùÿÙêùÿ×éùÿÕåóÿàïûÿâñûÿÞïûÿÛìúÿÛíúÿÛîúÿÚîúÿÓèøÿÎåöÿÎå÷ÿÒèùÿÕêùÿÓéùÿÒçúÿÎåùÿÏæúÿÐèúÿÓéúÿÕëúÿ×ìüÿ×ìüÿÖëüÿÖëüÿ×ìýÿÖìüÿÖëüÿÔêüÿÓëýÿÑéýÿÐèýÿÎèýÿÏèýÿÍèýÿÉæýÿÃâûÿ¾Þùÿ»Þùÿ½áúÿ¾ãûÿÊìûÿÇëûÿ±Ùöÿ¡Ëìÿ¶Þùÿ»âùÿ°Ùöÿ­ÕóÿÁàøÿÇã÷ÿÈä÷ÿÅàöÿÃÞõÿÊã÷ÿÍäöÿËãõÿÌãõÿÍåõÿËäôÿÄàôÿºÚòÿ³Õðÿ³Õñÿ¶Øñÿ¼Úòÿ½ÚñÿÂÞñÿÅàñÿ¿Ýñÿ¶Õïÿ¶ÖïÿºÚðÿ¹Øðÿ¾ÛðÿÁÝñÿÂÝñÿÂÜñÿÅÞñÿÇàòÿÆàòÿÂÜñÿÂÜòÿÃÞòÿÃÞðÿÂÜñÿ¿Úïÿ¿ÛîÿÃÞðÿÆßñÿÅÞñÿÃÞñÿÆàóÿËâôÿÊãóÿÇàôÿÂÞôÿÀÝòÿÃáôÿÆãõÿÅãõÿ¼ßõÿ³Øõÿ¬ÔöÿªÓõÿkªÓôÿ§Óôÿ¨Ñôÿ¤Ðõÿ¨ÎïÿµÙõÿ¼ßöÿ²Ùõÿ«Õôÿ¬×õÿ¬Ùõÿ¨ØõÿšÎóÿ’Èñÿ‘Çòÿ˜ÍôÿÏóÿ—Ëðÿ’Âîÿ‰½êÿ…¹æÿ…¸àÿ‡·Úÿƒ°Ïÿ}¦Äÿ³Ç×ÿuˆ—ÿ{Š—ÿ¼ËÙÿ–³Éÿ ¿Õÿ£Çàÿ£Ìèÿ¥Ðîÿ¨ÕòÿžÐôÿ—Ìóÿ•Ëõÿ›Ïøÿ ÓùÿŸÒùÿœÏúÿ˜Îúÿ’Êùÿ’Ëúÿ•ÍúÿšÑûÿŸÔûÿŸÔûÿŸÒüÿœÐüÿ Óüÿ ÔüÿŸÔüÿžÔûÿ›Òúÿ˜Ðúÿ“Íùÿ‘Êùÿ–Ðúÿ“ÎúÿŽÊùÿ‡Çùÿ€Ã÷ÿzÁöÿw¿ôÿuÀôÿÓøÿœÝøÿ„Ëøÿg³îÿuÀõÿ‹Ñùÿ‰Ìøÿ‚ÄõÿÆöÿ¡Ñúÿ¬Øúÿ®Úúÿ­×úÿ®×ùÿ¶Úúÿ¸Üúÿ¾ßúÿÂãúÿÃåúÿ¾âùÿ³Üøÿ­×öÿ«Ø÷ÿ®Ø÷ÿ¬Ïîÿ­Íëÿ¯Ìèÿ©ÃÞÿ¡º×ÿµÔÿ´ÕÿŸ·ÖÿŸ¶Öÿ¥»×ÿª½×ÿ²ÇßÿÐêýÿÓìýÿ×íþÿ×íþÿÔìþÿÓëÿÿÔìÿÿÖîÿÿ×îþÿÕìýÿ×íýÿÙïþÿÝðþÿÛïþÿÛïýÿÞñþÿáóþÿáóþÿàòþÿßñþÿÞðýÿÞðýÿáòÿÿãôÿÿàôÿÿÜñÿÿØîÿÿ×íÿÿÕëÿÿÖìÿÿ×îÿÿ×íþÿÒæ÷ÿÙëûÿßñþÿàòþÿÝðþÿÜïþÿÚïýÿÚïýÿÕëüÿÑèúÿÐçúÿÔêüÿ×íýÿ×ìýÿÖëýÿÔëýÿÑèüÿÒéýÿÒêýÿÔêüÿÖëüÿÕëûÿÔéúÿÓèúÿÔéúÿÔêúÿÔêúÿÔêúÿÓéúÿÒèúÿÏçùÿÎåùÿÐèùÿÎçùÿÍåùÿÉäøÿÅàöÿ¥¹Ðÿ£¹ÏÿÀÞôÿËæöÿÐêöÿÇäöÿ¶Õîÿ¿ÞôÿÊæ÷ÿÈå÷ÿÃßóÿÆÝñÿÏäõÿÔçõÿÓæôÿÒäóÿÒãòÿÕåóÿÖåóÿ׿òÿØçñÿØèñÿÖæñÿÐãðÿÌßîÿÌàïÿÎáðÿÒãòÿÔåóÿØèõÿÚêõÿ×çóÿÔåóÿÓäòÿÔåòÿÔäòÿ׿òÿÙèòÿÛéóÿÜêôÿÝëôÿÞêóÿßëôÿÞëõÿÝëöÿÝëöÿßìöÿßíöÿÞëõÿÞëõÿÞìõÿáíõÿàìõÿàìõÿãï÷ÿåñøÿåñøÿåñùÿãïøÿâî÷ÿáî÷ÿãïøÿåñùÿãñùÿàïùÿÝíúÿÛìúÿÚêúÿÚëùÿÚëùÿÚëùÿÖæôÿÛê÷ÿàîúÿáðûÿàðüÿÞïüÿÝïüÿÝïüÿ×ëûÿÓèùÿÑçùÿÔéûÿ×ìüÿÖëüÿÕêüÿÓéüÿÐçûÿÑèüÿÒêýÿÕëýÿ×ìýÿ×ìýÿ×ëýÿÕëýÿ×ìýÿØíþÿ×íþÿ×íþÿÖíþÿÔìþÿÑêýÿÏèýÿÒëþÿÐëÿÿÍéÿÿÊçÿÿÄäýÿÀâýÿ¾áüÿ»áüÿÉìÿÿÏðÿÿÁçÿÿ­Õõÿ¶ÞûÿÂéÿÿÀæÿÿ¹àüÿ¿àüÿÉæÿÿÏêÿÿÎéþÿÌçþÿÌæýÿÐèþÿÑéþÿÔìþÿÖîþÿÕïþÿÑìþÿÇæüÿÀáùÿ¾áúÿ¿áúÿÃáúÿÆâûÿÊæüÿÌèüÿÉçûÿÀÝòÿ²ÌÓÿ­ÇÇÿ«ÅÇÿÀÜîÿËåùÿËåùÿÌæúÿÎçúÿÐèúÿÐèúÿÌæûÿÉäúÿÈãùÿÊåùÿÊæùÿÈäøÿÈäøÿÊæùÿÎçùÿËåùÿÊå÷ÿÌæøÿÎçöÿÍçöÿËæøÿÉäøÿÇã÷ÿÆã÷ÿÈåùÿËçùÿÅæùÿ¼àùÿµÛùÿ°Ùúÿk¬Õúÿ­×úÿ®Ùùÿ¯Úúÿ¬Óõÿ´Úøÿ»ßúÿ¼âúÿ·ßûÿ²Üûÿ¯Üûÿ¯Ýúÿ¢ÕùÿšÏöÿ–Ìöÿ›ÏøÿŸÓùÿÑøÿ™Ëöÿ’Æòÿ‰¾íÿ‡½éÿ…¸àÿ‚°Õÿ¨Éÿ´ÉÚÿvŠšÿŒ™ÿ¼ËÙÿ’²Éÿ£ÃÖÿ©Íáÿ¥Íèÿ§Ðîÿ­Øôÿ§Ööÿ ÑöÿÎ÷ÿžÑùÿ¢Ôûÿ¢Ôúÿ£Ôúÿ£Õúÿ˜Îúÿ’ÊúÿÈùÿ‘Éùÿ™ÏùÿžÒùÿžÓúÿ›Ñúÿ˜Ïùÿ›ÑúÿžÔúÿ ÕúÿŸÔúÿ›Óúÿ–Ïúÿ’ÌùÿÔûÿšÓûÿžÔúÿÓúÿ”ÍùÿŒÇ÷ÿ‡ÇöÿƒÆöÿ“Óúÿ¤àúÿ¡Þúÿ‡Ëùÿ~Â÷ÿŠÍûÿ’Óûÿ‘ÎûÿŒÄõÿœÍúÿ­Ùüÿ³Ýüÿ¯Ùýÿ«Õùÿ°×úÿ¸ÜûÿÀãüÿÄæüÿÆèüÿÃèýÿ¿ãýÿ¹àüÿ¯×õÿ Àáÿ—±Õÿµ×ÿ ¸Øÿ¢¹Øÿ£»Øÿ¤¼Øÿ£¹Øÿ ·×ÿ ·Öÿ¦¼×ÿ«¿Øÿ²ÆÝÿÒéüÿÕëüÿÖëüÿ×íýÿ×íýÿÔêýÿÒêýÿÕìýÿÙîýÿÙîýÿØíýÿØìûÿÜïüÿÜïüÿÜïûÿÞðüÿàñüÿáòüÿàñüÿàðüÿÞïûÿÜîûÿÞïüÿâóþÿâôþÿÞñþÿÙíýÿ×ìýÿÓêüÿÕëýÿ×ìýÿ×ëüÿÔè÷ÿÔç÷ÿÙìúÿßðûÿÝïúÿØëùÿ×êøÿÙíùÿ×ëùÿÓèøÿÒæ÷ÿÒçøÿÖëûÿÖêúÿÕéùÿÖêúÿÑçùÿÍäøÿËâöÿÌâöÿÐå÷ÿÒç÷ÿÏäõÿ·ÉÛÿ¯ÀÒÿ¿ÑãÿÑæöÿÑæõÿÐæõÿÏåõÿÌãôÿÊáóÿÏåõÿÎåõÿÌãõÿÉâõÿÄÞóÿ£·Íÿ¢¶Íÿ½ÚðÿÇâôÿÏéõÿÏèõÿÄáõÿ¿ÜòÿÇãöÿÊåõÿÊäöÿÅÜñÿÍâõÿÕè÷ÿØé÷ÿÕç÷ÿÑãóÿÔäôÿØçõÿÜë÷ÿÞíøÿÞî÷ÿÞïøÿÝîúÿÚìúÿÖêøÿÖêøÿ×èøÿÛìúÿÝíûÿßïüÿßðüÿßðüÿßïüÿÜíûÿÜíûÿàðüÿäóýÿäóýÿåòýÿçóýÿçôýÿçôýÿçôýÿåòýÿåòþÿæôþÿçôýÿçôýÿæóýÿåóüÿèôüÿèôýÿæòúÿçóûÿèôûÿéôûÿèôûÿèóûÿçòûÿäñúÿåòûÿèôüÿèõüÿäóüÿáðüÿßïüÿÛìúÿÜíûÿÝíûÿÝîüÿÛëøÿÚê÷ÿßïûÿãóüÿãóüÿÞïûÿÝïüÿÞðüÿÛîüÿÖêúÿÔèùÿÓéùÿÖëûÿ×ìüÿØìüÿØìüÿÓéüÿÑèüÿÏçûÿÑèüÿÕëýÿÖëüÿÕëûÿÔêüÿÓéûÿÕìýÿ×íýÿ×íüÿÖìüÿÔëüÿÐèúÿËä÷ÿÐèùÿÎæøÿËæùÿÆãøÿÁß÷ÿ»Üõÿ¸Úôÿ¶ÚôÿÀãøÿÉéøÿÈèøÿ¹Þ÷ÿ³Øõÿ»àùÿ¿ãùÿ½ßøÿ¶Öòÿ¿ÜöÿÉãøÿËåøÿÈâùÿÃÞõÿÆßöÿÊâ÷ÿÏæøÿÑèøÿÑéøÿÎè÷ÿÊä÷ÿÄáöÿ¿ßõÿ¾Þõÿ¿ÝöÿÃß÷ÿÅà÷ÿÆá÷ÿÃÝïÿ²Æ¹ÿ´Å¯ÿ¶Ä±ÿ±Áªÿ¦¹©ÿÁÚçÿÇáòÿÈßñÿÎäõÿÅÚãÿÄØàÿÌãôÿÉâøÿÇãùÿÊåùÿÍçúÿÎèúÿËçúÿËæùÿÏéúÿÍèùÿÍèùÿÎèùÿÐéùÿÒêùÿÎèøÿÍæøÿÊä÷ÿÅáöÿÅã÷ÿËçùÿÊèùÿÂãùÿ¹Üùÿ´Ûùÿk­×øÿ­Øùÿ°Øùÿ°Øøÿ±×öÿ±×öÿ·ÝúÿÀåûÿ¾æüÿ³Þúÿ°Üúÿ³ßûÿ¬Úûÿ£ÔùÿžÏ÷ÿžÑøÿ¡ÓùÿŸÑ÷ÿŸÏõÿÍóÿÂîÿ†ºçÿ²Þÿ|«Ôÿ{¦Èÿ´ÉÙÿvŠšÿ™ÿºÊ×ÿŽ­Äÿ¤ÂÔÿ¬Íßÿ¦Ìçÿ§Ïëÿ°Øòÿ®Úöÿ¦Õ÷ÿ¢Ò÷ÿ£Óùÿ¥Óùÿ¦Óùÿ§ÖùÿªÙùÿžÓùÿ”ËøÿÄõÿÅöÿ˜ÎùÿŸÔùÿ¡Öùÿ Õúÿ–ÍøÿšÐûÿžÔúÿ¢×ùÿ¡ÕøÿœÒøÿ—Ï÷ÿ’ÌöÿŸÕùÿžÔ÷ÿ¨Øøÿ­Øøÿ¡Ñ÷ÿ˜Ëôÿ•Ëôÿ”Ëõÿ–Ï÷ÿ¥Ûøÿ°ãøÿŸØøÿ†Ãóÿ†Äóÿ’Ïøÿ–Îøÿ”Éöÿ¡Ïøÿ°Ùùÿ¸ßùÿ´ÛúÿªÓ÷ÿ°Ö÷ÿ¼ßûÿ¿âûÿÃåüÿÆçüÿÅèûÿ¿ãùÿ©Èäÿ™µÔÿ™´Õÿ¥Ãåÿ³ÓñÿºÚöÿ¼ÞùÿÂãúÿÄã÷ÿº×ïÿ«Æäÿ¢¸×ÿ¦»×ÿ¬¾×ÿ¾ÓèÿÓêüÿÕëüÿ×ìûÿØìüÿÙîüÿÓêûÿÐçúÿÓéùÿ×ëøÿ×ëøÿÕêøÿÕé÷ÿØëøÿØê÷ÿ×éõÿÙêöÿÚëöÿÛëõÿÛìõÿÛëöÿÙéõÿÖæóÿ×çôÿÜëöÿÞîöÿÚëöÿÔçõÿÑåôÿÎãóÿÐåõÿÓæöÿÑåõÿÔåôÿÎàðÿÐâðÿÙéóÿÚêóÿÔæóÿÒåòÿÖèôÿÔæòÿÏãñÿÍáðÿÏâòÿÑãóÿÒäôÿÒåóÿÔæóÿÏäôÿÌãõÿÇÞòÿÉßóÿÎãõÿÐåõÿ¾Ðàÿ°¿Ñÿ­½Ðÿ¼ÎáÿÒç÷ÿÓé÷ÿÓè÷ÿÑç÷ÿÎäõÿËâôÿÑçöÿÑçöÿÏæöÿËäöÿÅßôÿ£¶Íÿ£·ÎÿÁÝòÿÅáõÿÎèöÿÔìöÿÍæöÿ¿ÚðÿÁÜòÿÊå÷ÿÌå÷ÿÊáõÿÑäöÿ×é÷ÿÛìøÿÙêøÿÓåõÿ×çöÿÝíúÿßîúÿàïúÿàðùÿßïøÿÝîøÿÛìøÿØê÷ÿ×é÷ÿÖè÷ÿÚëùÿÜìúÿÛìúÿÝîúÿàñúÿÞîúÿÚëùÿÙéøÿßîúÿâðúÿãðúÿãðúÿäñúÿæñúÿæñúÿæòúÿâïùÿàíøÿãïùÿåðùÿåðùÿäñúÿäðùÿåñùÿåñùÿåñøÿæñùÿçòùÿèóúÿçòùÿçòùÿäðøÿáíöÿáî÷ÿåñùÿçóùÿåòúÿáïûÿÞîúÿÛëùÿÜìúÿÝíúÿÛìùÿÞìùÿÚé÷ÿÛë÷ÿãñúÿãñúÿÜíùÿÛìùÿßïûÿÜîúÿØëùÿÕèøÿÖêúÿØëûÿØëûÿÙíûÿÚîûÿÖìüÿÒéüÿÌã÷ÿÍäøÿÓéûÿÕëûÿÖìûÿÕëûÿÑçùÿÒèúÿÔêúÿÖëúÿÖëúÿÔêúÿÐçùÿÍæøÿÓëûÿÓëûÿÏéúÿÉäùÿÀÞöÿºÚóÿ¹ÚôÿºÛõÿ¾ßøÿÈèúÿÐîûÿÆçûÿ²×óÿ³Øôÿ½áùÿ¾ßøÿ¼ÛõÿÃÞ÷ÿÌåøÿÐèøÿÌåøÿÄÞõÿÆÞôÿÍå÷ÿÎå÷ÿÏçöÿÏçõÿÎæõÿÌåõÿÇãõÿÂàôÿÁÝôÿ¿ÛôÿÁÚìÿ¿×ãÿ¿Úíÿ¸ÍÈÿ¿ÌµÿÀͶÿ¼É³ÿ¼É²ÿµÂ§ÿµÆ¶ÿµÆµÿ°¾©ÿ¶Æ¼ÿ¿Í½ÿ¿Ë·ÿ½ÍÀÿ¾ÕáÿÁÛïÿÆÞòÿËâóÿËãôÿÉãõÿÉâõÿÌåöÿÌæöÿÍæöÿÏçøÿÐéøÿÑêøÿÐêøÿÏèøÿËæ÷ÿÇãöÿÅã÷ÿÌèúÿÏëúÿÉèûÿ¿áüÿ¹Þûÿk²Úúÿ²ÛûÿµÜûÿ²Ûûÿ¸Üúÿ°Ö÷ÿ´ÚøÿÃçûÿÃçûÿµÞúÿ±Ûùÿ·àûÿ´áýÿªÚüÿ¥Öûÿ¦×þÿ¨×þÿ§Öüÿ§×úÿ¨×÷ÿšÌòÿÁìÿ‚´àÿ}¬Öÿ}©Ìÿ·ÌÜÿzŽœÿŽ™ÿ¼ËØÿŽ­Äÿ›ºÑÿ«ÊÜÿ±Óæÿ±Ôìÿ¬Ôðÿ°ÙóÿªÕôÿ¥Ñôÿ¡Ïôÿ¢Ïôÿ£Ñôÿ¦Òóÿ¥Òòÿ Ðòÿ•ÉòÿŽÁðÿŠ¿ïÿ’ÆòÿšÎòÿÑòÿÑóÿ—Ìôÿ›ÐôÿÐôÿÑôÿ¡Ôôÿ¤×õÿŸÒõÿ’Éñÿ“Éóÿ›Ðôÿ®ÚõÿºÞ÷ÿ²Ù÷ÿ¬Ö÷ÿ¤Ò÷ÿœÍôÿ•Éòÿ©Û÷ÿ¶ã÷ÿ¬Ý÷ÿ›Îôÿ“Èòÿ›Îõÿ£Ôöÿ ÍóÿšÇñÿ¢Îôÿ´Úõÿ¹ÝöÿµÙ÷ÿ¶×õÿ¼Ýøÿ¾ÞøÿÁáúÿÉæüÿÄàòÿ­ÄÝÿ«Æßÿ¸ØñÿÂâúÿ¿áüÿ¾ßüÿÁàýÿÃãüÿÈæüÿÉçüÿÈåüÿÆäüÿ¾Ûõÿ³Èáÿ°ÃÙÿÊâ÷ÿÏæúÿÕëüÿÚîüÿÙîüÿØîûÿØìûÿÔêûÿÒçøÿÖêûÿÛîûÿÛîûÿÙìûÿÒæöÿÝðûÿãóüÿßïûÿÝïùÿäòüÿåôüÿãòûÿâñûÿàïúÿÜíøÿÜíùÿáñûÿâòûÿÝðûÿÖêùÿ×êúÿ×ëúÿÙëûÿÙìúÿÙëúÿÙëúÿÙìúÿÞïüÿâóýÿáòûÿßðûÿÜîûÿÝïûÿÚìúÿ×éøÿÕèøÿ×êúÿÙëûÿÚìûÿÚíûÿÙíüÿÔêüÿÏåùÿÎäùÿÓéüÿÖìüÿ·ÇØÿµÅÖÿ³ÃÖÿÐæöÿÕëúÿÕëúÿ×ìúÿØíúÿ×ìûÿÐçøÿÑèúÿÔêúÿÖìúÿÓéúÿÏçúÿ­¿Ôÿª¾ÔÿÅßöÿÁÝôÿÑëûÿÚñüÿÖîüÿÌæùÿÈâ÷ÿÎçúÿÔìüÿÓéûÿÒæùÿ×ëüÿàòþÿâòþÿÞïþÿÚëùÿÞîûÿÜìùÿÞíúÿâðûÿâòúÿ×åðÿ¼É×ÿÁÏÝÿÕåòÿÚëùÿÛëùÿÜëùÿÝìùÿßîúÿáðûÿßîúÿÞîúÿÜëùÿáðûÿäòûÿâðûÿáîùÿåòûÿêõýÿèôüÿçóûÿæòûÿãðúÿáîøÿäðúÿçòúÿçòúÿåñúÿÞëõÿçóúÿêôúÿçñùÿåð÷ÿêóúÿëõúÿéóúÿéôûÿèóûÿåñúÿåòûÿéõýÿêöýÿæõýÿàïûÿàðüÿßðüÿáðýÿáñýÿàðüÿßïüÿßðüÿãòþÿçöÿÿæöþÿäôþÿàñýÿáòþÿßðþÿÚíüÿØëûÿÚíýÿÛîþÿÝðÿÿÝñÿÿÛðÿÿ×íÿÿÑèüÿÐçüÿÕìÿÿÙïÿÿÚðÿÿÚðÿÿ×íÿÿÙïÿÿÙïÿÿÙðÿÿÛñÿÿÜòÿÿÚðÿÿÒêüÿÓëþÿÖîÿÿ×ïÿÿÓìÿÿÎéÿÿÊçþÿÅäýÿ¿ßúÿºÜøÿËìÿÿÕòÿÿÎîÿÿÀáúÿ»ÝøÿÁáûÿÇçýÿÆâûÿÄßùÿÉäüÿÔìýÿÕíýÿÏèýÿÍåúÿÐéüÿÏçúÿÐèûÿÕìüÿ×ïüÿÓìûÿÊå÷ÿÆâöÿÈäùÿÀ×âÿ¿Ë²ÿ¼È°ÿ»É³ÿ¿Ì´ÿÅзÿÄÏ´ÿÁϹÿ½Ì»ÿ¾ÌµÿÀÊ­ÿÄαÿ¾É²ÿ»È·ÿÀ̵ÿÂηÿÇÔÂÿ»ÍÈÿ¿×çÿÃÛïÿÇÞñÿÏåõÿÏæöÿÏçúÿÆáõÿÒëúÿØíúÿÑèùÿÏç÷ÿÖìúÿØïúÿÕìúÿÑêùÿÏçùÿÈä÷ÿÇäøÿÌèúÿÏëúÿÅæùÿ·Ý÷ÿk¶ÝùÿµÜùÿ·Üúÿ¸Þúÿ¶Üøÿ´Ú÷ÿ´Û÷ÿ¹ßùÿÁäùÿÁæùÿ»âùÿ´Ýùÿ¶ßúÿ¯Úùÿ¨Ô÷ÿ£Ñöÿ¤Ñ÷ÿ¤Ñöÿ¤Ñóÿ£Ïðÿ›ÊëÿŒ¾åÿ€¯Úÿy§Òÿy¤Éÿ´ÊÚÿxŒšÿ€šÿ½ÍÙÿ¯Åÿœ»ÓÿªÉÜÿ±Òåÿ³Ôêÿ°Ôîÿ³Øòÿ®ÖòÿªÔóÿ¥Ðóÿ¥Ñôÿ§Óõÿ©Óõÿ©Ôõÿ«×õÿ Ðõÿ”ÇòÿŽÂïÿ“Æñÿ™ÌòÿžÑòÿ¢Ôòÿ™ÎòÿšÎòÿšÏóÿžÐóÿ£Õóÿ¨×óÿ£ÔôÿÎóÿ—ËòÿžÐóÿ¯ÙôÿÃâ÷ÿ½Þøÿ·Û÷ÿ±ØöÿªÓõÿ¦Ñõÿ­×öÿ¸àöÿºáöÿ­Øöÿ Îòÿ¤Ñôÿ°Úøÿ­Õ÷ÿ¢Îöÿ§Óøÿ±ÛùÿºßùÿÁàùÿÁß÷ÿÄà÷ÿÆá÷ÿÉäøÿÃÛíÿ¸ÈÜÿÊâòÿÍèøÿÌçøÿÏèúÿÆãùÿÀàúÿÁàûÿÅãüÿÈæüÿÊèüÿÉèüÿÉæüÿÅãûÿÍèüÿÑëüÿÒéûÿÓêüÿÖëüÿÙîüÿÛïüÿÚîüÿÙîüÿØíüÿÕéúÿÖêûÿÛîüÿÝïüÿÛîüÿÖêùÿÞñüÿâòüÿàñûÿßðûÿãòüÿåôüÿåóûÿäòüÿãòüÿàïúÿßïûÿãóýÿäóüÿàòüÿÛîûÿØìúÿ×ëùÿØëúÿÙìúÿÚìúÿØëùÿÙëùÿÜíúÿàïúÿáðúÿßïúÿÜíøÿÞîùÿÜíúÿÙêøÿÖè÷ÿØëúÿÚíûÿÛíûÿÛíûÿÜîûÿ×ëûÿÒçúÿÎäøÿÑæùÿÔêúÿµÄÕÿ¶ÅÕÿ¹ÊÛÿÔêúÿÔêúÿÖêúÿØíúÿÙíùÿ×ëùÿÔéùÿÑæ÷ÿÕêùÿÖëùÿÓéùÿÒèúÿ¯ÁÕÿ­ÀÔÿÈáõÿÇáöÿÐèúÿÖìùÿÙíøÿÓêùÿÊâôÿÎæ÷ÿ×íûÿÕêùÿÔèøÿØëúÿÜíúÿÞîùÿÝíúÿÜìøÿÝìøÿÝìøÿßîùÿâðùÿäñøÿÂÍ×ÿºÅÐÿ¹ÄÐÿ¿ÊÖÿÜì÷ÿÞíøÿÞíøÿàîùÿáïúÿáïùÿáïùÿßîøÿÝìøÿâïùÿäñøÿåñùÿåñùÿçñúÿéóúÿêôúÿéóúÿèóúÿçòúÿâî÷ÿãïøÿæñøÿçñøÿæñøÿáíõÿæñ÷ÿéñ÷ÿçðöÿæðöÿéòøÿéó÷ÿéò÷ÿèðöÿæðöÿäíõÿâíõÿåï÷ÿçñøÿåñùÿàïùÿÝìøÿÝìøÿÞíùÿÞíùÿÝìøÿÜë÷ÿÜë÷ÿßîùÿâñúÿãñúÿáðúÿÞîùÿßïúÿÜíùÿÙêøÿÖè÷ÿ×éùÿÙëúÿÚìúÿÚìúÿÛíúÿÖêúÿÐæøÿÍãöÿÐæøÿÔêúÿÖìúÿØíúÿÕëûÿÕëûÿÕëûÿ×ëûÿÙíûÿÛîûÿØíûÿÖìüÿÒéûÿÖìýÿÖíýÿÓëýÿÏéýÿËçüÿÆãúÿÂàùÿ¿ÞøÿÇåüÿÐíýÿÒîýÿÊèýÿ½ÝöÿÀßøÿËçüÿÈãúÿÆâúÿÊåüÿÐêýÿÓëüÿÐèüÿÎæúÿÎæùÿÏçùÿÑéúÿÕíûÿÙðüÿ×ïüÿÎçõÿÀÔÐÿ¿Ì´ÿ¿ÊªÿÃ̬ÿÃÌ­ÿÅϱÿÈÒµÿÉÔµÿÈÓºÿÃÑÃÿ¹Ê¿ÿºÉºÿ·Å¬ÿ¹Å«ÿÃκÿ¼È±ÿÁ͵ÿÂδÿÅÒ¹ÿÊ׿ÿÂÐÂÿ¸ÍÖÿÃÚíÿËâòÿÐæ÷ÿÎçøÿÊäøÿÓíüÿØîüÿÕìûÿÓëúÿ×íûÿØðûÿØïûÿÖíûÿÓìüÿÍçùÿÊæùÿÎêûÿÑíûÿÊéûÿ¿ãúÿk¹ßùÿ¸ßùÿ¸Ýúÿ¹ßúÿ¹Þúÿ¶Üùÿ¶ÜùÿºàúÿÁåúÿÃæúÿ¿ãúÿ¹ßùÿºáúÿ´Ýúÿ®Øùÿ¨Ôøÿ¨Ôøÿ§Õ÷ÿ§Óõÿ¥Ðòÿ¤Ïíÿ˜Åéÿ‡¶Þÿ}«Óÿz¥Éÿ´ÊÛÿy›ÿ‚šÿ¿ÏÚÿ•´Éÿ ¿Öÿ¯Îâÿ¸Øëÿ»Ýðÿ¼ßõÿ½áøÿ¹ßúÿµÛûÿ°Ùûÿ®Øüÿ°Ûýÿ²Ýýÿ±Ýþÿ¹åþÿ±ßýÿ¤Õýÿ›Îùÿ˜ÍøÿžÓûÿ¨Úüÿ¯ßüÿ©Üüÿ¢×üÿ Õûÿ¦Ùýÿ°ßþÿ²áþÿ°Ýüÿ¯Üüÿ¡Òúÿ¨Øüÿ¸áüÿÐëýÿËçüÿÇæýÿÁâüÿ»Þûÿ¹Ýûÿ¶Ûûÿ¾ãüÿÊìûÿÅçûÿ³Øøÿ®Ööÿ¼ßûÿ¸Üùÿ«ÖøÿªÔ÷ÿ®ÙøÿºÞùÿÍçúÿÎæùÿÌåøÿÏæøÿÇÜîÿ¾ÍàÿÑãïÿÙîøÿØíùÿÖëøÿ×ëøÿÍå÷ÿÀÞ÷ÿÀÞöÿÁß÷ÿÄá÷ÿÈã÷ÿÉå÷ÿÊæ÷ÿÆâ÷ÿÉäøÿÎçøÿÒéøÿÕéøÿÔè÷ÿ×éøÿÚìøÿÚíùÿÚíùÿÙìùÿÔè÷ÿÓçöÿ×êøÿÜìùÿÝíùÿÚëøÿÝìùÿßîùÿàïùÿàïùÿàïùÿâñùÿåñùÿäñùÿãðùÿáïùÿßíøÿßïùÿßïøÿÞï÷ÿÞïùÿ×éöÿÕèõÿÖçõÿ×éöÿØê÷ÿ×éöÿÖçôÿ×èôÿÛëõÿÝìõÿÝìõÿÜëõÿÜëõÿÛêõÿÙèõÿÖæôÿÖæõÿ×èöÿ×èöÿ×èöÿÚìöÿÖèõÿÑäóÿËßïÿËßðÿÏäôÿ³ÂÑÿµÃÐÿÁÒßÿÒæôÿÐåóÿÓçôÿØêõÿØëõÿØêôÿØêôÿÐäñÿÕèôÿÕèóÿÕéôÿÔèõÿ²ÂÑÿ²ÃÓÿÍäôÿÍåôÿÌãóÿÔêöÿÜïõÿÛîõÿÏåòÿÎäñÿÙì÷ÿ×êõÿ×êõÿØêõÿÚìöÿÜîöÿÞíöÿÝíôÿÚêñÿÜìòÿÞìóÿâðôÿäòôÿàíðÿÈÒØÿÁËÒÿÖâçÿßíóÿßíôÿÞíóÿßîôÿàîôÿâïôÿâðõÿãñõÿàîõÿáïõÿäñöÿçòõÿèòõÿçñôÿéòöÿéòôÿèòôÿéóõÿçòõÿäïóÿâîòÿæðôÿéòõÿéòõÿçðôÿèòõÿêóöÿëôöÿëóöÿëôöÿëôöÿìôõÿìôõÿëóöÿéóöÿçñöÿèóøÿéôøÿèôøÿæòøÿáîöÿßîöÿàìöÿßíöÿßî÷ÿßí÷ÿßí÷ÿáïùÿäòúÿåòùÿäòùÿãñùÿâðùÿàîùÿÝìøÿÚë÷ÿÚëøÿÜíúÿÝíûÿÝíûÿßïúÿÜîûÿØëüÿÑå÷ÿÏäöÿÔéúÿØìúÿÚíùÿÖêøÿÓèøÿÑæöÿÔè÷ÿØê÷ÿÙë÷ÿØê÷ÿØëøÿÐäõÿÒç÷ÿÓè÷ÿÑçöÿÏæ÷ÿÌä÷ÿÈâöÿÃÞôÿÂÞôÿÀÜôÿÊåøÿÓìøÿÏè÷ÿÁÜóÿ½ÚñÿÊã÷ÿÇàõÿÆàõÿÇàõÿÈãöÿÌäöÿÍäöÿÌäöÿÉàóÿÉàòÿËâóÿÑçõÿÔêõÿÔêõÿÃÕÖÿ¹Å¯ÿºÄ¨ÿ»Ä¤ÿ¾Ç§ÿÀÉ©ÿÂͱÿÂͲÿÆÒ¸ÿÀ;ÿ¼Êºÿ¹ÈºÿºÉ¹ÿµÂ­ÿ·ÃªÿÃθÿ¼Ç±ÿ¾É°ÿÂ̱ÿÆÏ´ÿÉÓ¸ÿÉÓ½ÿ³ÆÁÿ¼ÒáÿÄÚëÿÍáñÿÑåõÿÏå÷ÿÒéùÿÖêùÿÕëøÿÕéøÿÔê÷ÿÕë÷ÿØì÷ÿØëøÿÕêøÿÑèøÿÎæøÿÌèùÿÍêùÿËéùÿÆæùÿk½à÷ÿºß÷ÿ»Ý÷ÿºÞøÿºßùÿ·Ýøÿ·Ü÷ÿºÞ÷ÿÀãøÿÃæøÿÂåùÿ¿âùÿ¾âøÿ¹Þøÿ³Ø÷ÿ­ÕöÿªÓöÿªÓôÿ¨Òòÿ¦Ïïÿ¬ÔìÿŸÉæÿºÝÿ€ªÎÿw Âÿ²ÈØÿy‹™ÿ‚™ÿ¿ÎÙÿ”±Æÿž¼Ñÿ¬ÉÞÿ¶Õçÿ¼ÛíÿÀàñÿ½ßôÿºÞöÿ·Ûøÿ³Ù÷ÿ°×ùÿ®×ùÿ°Ùùÿ±Ûúÿºãúÿ´ßúÿ®Úúÿ£ÓøÿœÍöÿÐ÷ÿ¥×úÿ¬Ýùÿ®Þúÿ¤ÖùÿžÒ÷ÿ¥Õøÿ­Úùÿ°Üùÿ±Ýùÿ³Þøÿ¤Òõÿ¦Õøÿ·ÝùÿÕëûÿÓëûÿÐéûÿÊæúÿÇãúÿÂàùÿ½ÝùÿÂáûÿÏëûÿÑìûÿÃâúÿ½ÜøÿÁàúÿÂâúÿµÜùÿ­Ùùÿ®Øùÿ¹ÞúÿØíüÿÙíüÿÖêúÿÑäôÿÆÓæÿÑàïÿßñûÿâòûÿâòüÿáñûÿßðüÿØìûÿÆãûÿÄâúÿÄâúÿÈäüÿËèüÿÏêüÿÐìûÿÌéûÿÌæùÿÐèûÿ×íûÿÚîûÿÙíüÿÛíüÿÞðüÿßòüÿßòüÿÞðûÿÚîûÿÖêùÿ×ëùÿÞîûÿáðûÿßðûÿÞîûÿàïûÿãòûÿãóûÿâñúÿãñúÿæóúÿæòùÿåñùÿäñùÿàíøÿÞîøÿàðùÿâòúÿãóûÿÞïûÿÝïûÿÜíúÿÜîúÿÜîûÿÛîúÿÛíùÿÝîúÿáðûÿãòûÿåóûÿæóûÿäñûÿãñüÿâïüÿÞíùÿÝíúÿÝíúÿÝíùÿÞíùÿáñùÿàðúÿÜíùÿÖê÷ÿÒæõÿÒèôÿ¸ÅÑÿ¹ÆÐÿÎßçÿÖëõÿÓèóÿÖêôÿÚìôÿÚìóÿÚìñÿÜíðÿÔæíÿÖéïÿØêðÿØéïÿÖéïÿµÂÊÿµÄÍÿÑåíÿÎãìÿËßêÿÒåîÿÜííÿÝííÿÕçìÿÐâèÿÔåëÿÖèëÿ×èëÿÖçêÿÖçëÿØèëÿÜëëÿÝììÿÚéêÿÚééÿÜêêÿàíìÿâïìÿäïìÿãïìÿáíëÿáíìÿâîîÿàíîÿßìíÿàìîÿáîïÿãïïÿäñïÿåñïÿäñðÿãïïÿæòñÿéôñÿëöòÿêôòÿìõóÿî÷óÿîøóÿîøóÿí÷óÿêõòÿèòðÿèóñÿìöóÿî÷óÿí÷óÿìöôÿíöôÿïøôÿî÷óÿíöóÿîöôÿðøôÿñùõÿðøõÿï÷õÿìõõÿêõõÿë÷öÿëööÿêöõÿæóõÿåòõÿãñôÿãñôÿâðõÿáðõÿàïôÿâïõÿåñöÿæòöÿçó÷ÿçô÷ÿæóøÿäòøÿâðøÿÞí÷ÿÝíøÿÝìùÿÝíùÿÝíùÿàðøÿÞïøÿÛìùÿÕé÷ÿÑåõÿÒç÷ÿÙìûÿÛïûÿÜïûÿØíûÿÔéøÿØìûÿÜîüÿÝïüÿÞðüÿÞðüÿÖéùÿ×ëûÿØíüÿ×ìûÿÕëúÿÓêúÿÐèûÿÍæûÿÊäúÿÅß÷ÿÌåûÿØïüÿÚðüÿÏèûÿÈá÷ÿÍåúÿÍçúÿÍæùÿÊåøÿÊãøÿÍæùÿÒêúÿÓéúÿÎæùÿÎæøÿÐèùÿÕìüÿÙïüÿÚïüÿÃÓÉÿÂ͸ÿÀ̳ÿÀˬÿÃÍ«ÿÆÐ·ÿÀ̾ÿ¼È¸ÿÀͽÿ·Ä®ÿ½É¶ÿ¿Í¼ÿÁϾÿ¾Ë¸ÿºÆ«ÿÃÍ´ÿÂÍ´ÿ¿É¯ÿÃͯÿÇѲÿËÔ¶ÿÏØ½ÿÅÑ·ÿ¿ÏÆÿÀÕäÿÌßïÿÔçõÿÓé÷ÿÑéúÿÕêûÿÚðüÿÚðüÿ×îûÿÙîüÿÝñüÿÝðüÿÛïüÿØíüÿÒéûÿÎéûÿÎëüÿÐíüÿÏîüÿkÄæûÿÂåüÿ¿ãûÿ¿ãúÿ¾ãûÿ¼âûÿ»àúÿ½áúÿÃäûÿÇçûÿÈéûÿÈéúÿÃåúÿ¾áúÿ¸Üúÿ³Ù÷ÿ¯Öøÿ¬Õ÷ÿ­Ö÷ÿ¬Õõÿ²Øïÿ§Ðêÿ›ÃàÿгÓÿ|¤Åÿ³ÈÙÿyŒšÿ‚˜ÿ¿ÎØÿ•±Åÿž¼Ðÿ©ÇÜÿ³Ñäÿ»ÙéÿÂàîÿ¿ßòÿ¾Þôÿ»Ü÷ÿ¶Ú÷ÿ±×÷ÿ®Õ÷ÿ®×÷ÿ¯×÷ÿ·Ý÷ÿ·Ý÷ÿ³Ý÷ÿ«Øøÿ¡ÑõÿÏôÿ¢Ó÷ÿ¥×÷ÿ±Ýöÿ©Ø÷ÿ£Ó÷ÿ¥Ó÷ÿ©Öøÿ¯Ùúÿ³Ûúÿ¶Þùÿ­×÷ÿ«Öùÿ¹ÝùÿÝïüÿÛïûÿÙíûÿÕëüÿÑèüÿËäúÿÈãúÿËåûÿÒëüÿ×îüÿÓëüÿÍåûÿÆáùÿÌçüÿ¿ãýÿ´Ýüÿ°Úúÿ¸ÝûÿßòþÿáòýÿÞîûÿÒÞíÿÔàîÿãñûÿçõþÿéõýÿéõýÿéõþÿèôýÿâòýÿËèýÿÊæýÿÈæýÿÊçþÿÍêÿÿÐìþÿÓîþÿÒíþÿÏéüÿÒëýÿÙðþÿÝòþÿÜïýÿÝðýÿàòþÿãöÿÿãöÿÿäöÿÿàòþÿÜîüÿÛíûÿàðýÿâòüÿâòüÿßïüÿáïüÿåòüÿæôüÿäñûÿåóüÿèõüÿéõüÿèôûÿåòúÿâðùÿàïøÿßî÷ÿâðùÿäòùÿÞîøÿÝíøÿÜìøÿÝí÷ÿÜì÷ÿÛìöÿÛìõÿÚëóÿÝìôÿßìòÿáíòÿâîòÿàíñÿßìñÿÝêðÿÙèîÿ×çîÿ×çïÿØçîÿÙçîÿÚéíÿÚèëÿØèëÿÕåëÿÐâéÿÎáçÿ²¾Åÿ´ÀÆÿÐàáÿÕæéÿÑãèÿÒãèÿÔäçÿÖæèÿ׿çÿÙççÿÕääÿÖåæÿ׿çÿØçèÿØéèÿ·ÂÅÿ¸ÅÈÿÔåèÿÍßäÿÍßãÿÒãåÿØèæÿÝëæÿÛéæÿ×ååÿÒáâÿÙéçÿÛêèÿÚéèÿ×çæÿÚèçÿßìèÿßíèÿÝêçÿÝêæÿÝëæÿàíçÿâîèÿäïèÿåðéÿãïéÿâíèÿãïêÿãïëÿâíêÿàíêÿàíêÿâïëÿãðêÿãðéÿãïéÿáíèÿâîèÿæñéÿéòêÿèñéÿèñéÿêòêÿëôêÿëôêÿëóêÿêóëÿçïéÿåîèÿêòëÿìóëÿìôëÿêòìÿëòíÿíôìÿíõíÿëóëÿìóìÿîõìÿîõíÿíõíÿìôíÿêòíÿèñìÿçñìÿêôïÿëöïÿçòîÿåñîÿäðîÿäïîÿãðïÿâïîÿâïîÿáîîÿãðïÿæñðÿèôòÿêõóÿæòòÿåðñÿãïñÿàíñÿÞìñÿÝìóÿÝìóÿÞìóÿßîòÿßîòÿÝîóÿÛìôÿÖéñÿÓæðÿÖêôÿØìõÿÝîõÿÙìõÿÖêõÿ×êõÿØëõÿÚëõÿÛëõÿÜìõÿ×éõÿÖèõÿÔçõÿÖé÷ÿÖê÷ÿÔè÷ÿÑæøÿÎåøÿÇßôÿÇßõÿÌãøÿÓéùÿÙíúÿÕêúÿÏä÷ÿÈßôÿÏæøÿÐçùÿÍåøÿÊãöÿÍåøÿÓëúÿÔëúÿÏçùÿÎå÷ÿÎåöÿÑç÷ÿÕêøÿ×ëøÿÉÛÞÿ½É¶ÿ¿É´ÿ¿Ê±ÿÂͶÿÃÏÀÿÂÎÀÿÀ̼ÿ¼È´ÿ¼Ç±ÿÁ̶ÿÄÏ»ÿÀ̹ÿ¿Ë¶ÿ¼Ç­ÿ½È¬ÿÁ˱ÿ¿ÈªÿÀÊ«ÿÃͬÿÈѯÿÊÓ²ÿÈÒµÿÉÓ½ÿÀÏÄÿÅ×åÿÏáíÿÒåòÿÐåöÿÓçøÿÙëùÿÚîùÿÖëøÿ×ëùÿÛîùÿÜîùÿÛíùÿ×ëùÿÒéøÿÎçøÿÌçøÿÏêúÿÒîúÿkÆæùÿÃåùÿÁâùÿÁâùÿ¿ãúÿ¾âúÿ½áúÿ½âùÿÁãúÿÅæùÿÉéùÿÌëùÿÆæùÿÂâùÿ½ßùÿ·Üùÿ±Øøÿ®Õøÿ­Ö÷ÿ¬Óôÿ±Õïÿ¬Ñêÿ£Éáÿ“¹Öÿ‚©Çÿ´ÉÙÿyŒšÿ‚˜ÿÀÏØÿ—³Æÿ¡½ÑÿªÇÜÿ³Ñåÿ½ÙêÿÆáïÿÃàòÿÃáôÿ¿ßöÿºÛ÷ÿ³Ø÷ÿ°Õ÷ÿ±×øÿ³Ùøÿ¶Üøÿ¸ß÷ÿ¸à÷ÿ³Ý÷ÿ¨Öõÿ¢Ñôÿ¡Ðôÿ£Òöÿ®Ü÷ÿ°Ûøÿ«Øùÿ§Õøÿ¨Ôøÿ¯ÙùÿµÛùÿ·Þûÿ·Þûÿ°Úúÿ¸ÝøÿâñüÿâñüÿßðüÿÜîüÿÙìüÿÒçúÿÓèûÿÔéüÿÖëýÿÛîýÿÝñýÿØíþÿÏçúÿÒëüÿÆæýÿºáýÿµßûÿ¸ßûÿáòýÿèõýÿâí÷ÿÞæðÿçñúÿëõýÿìöýÿî÷ýÿðùýÿñùþÿï÷þÿêõýÿÎêýÿÍèýÿÌçýÿÊèýÿÊèüÿÍêüÿÏëüÿÒìüÿÑêûÿÒêúÿ×ìûÿÛïüÿÝñýÿÝðüÿÝïûÿâôüÿáôüÿâóüÿâóüÿÞðüÿÜíúÿÞîûÿàðûÿãòûÿßïúÿßîúÿãñûÿæóûÿåñúÿåñúÿèóûÿêôúÿèòùÿæòøÿåñ÷ÿãïöÿâï÷ÿãò÷ÿæô÷ÿâñ÷ÿáðöÿßïõÿÞíôÿßïõÿßðõÿßïôÿàîôÿáïóÿåòõÿèôôÿêõóÿçóòÿçòñÿåððÿâîðÿÞìîÿÞìïÿßíðÿàíðÿáïïÿâðïÿâñïÿßïíÿÛìëÿÖçèÿ¸ÃÆÿ¹ÅÇÿÜìêÿÞïíÿÝííÿÚëêÿÚêéÿÝíêÿàíêÿáïëÿâïëÿßíêÿÞìéÿàïëÿâðëÿ¾ÉÇÿ¿ÊÉÿÜìéÿ×çæÿÙêèÿÝíêÿßíêÿäðêÿæòéÿãïéÿÛéãÿßíæÿâðèÿâðèÿßîçÿàîçÿäòêÿæòêÿäñéÿåñéÿåòéÿçòèÿèóèÿêõéÿí÷éÿìöéÿéôéÿéõéÿèôéÿçòèÿæñçÿäñçÿåñçÿçóèÿèôèÿèôèÿèóçÿçòæÿêôçÿëõçÿëôæÿêóæÿêòåÿìôåÿìõæÿìõåÿëôäÿéòäÿçïâÿçïãÿéðãÿêñãÿçðãÿçïäÿéñäÿëñäÿêñäÿêñäÿëòäÿìòäÿëòäÿêðãÿèïäÿæîãÿäíâÿåîãÿçðåÿåïæÿäïæÿâíåÿâìåÿãïçÿãðéÿãïéÿãïéÿäïêÿåðêÿçñêÿèñêÿæðêÿåðêÿãîêÿáíëÿÞììÿÞìíÿÞííÿàíïÿáïðÿâñðÿãòñÿáðñÿÜìïÿÙìðÿØëðÿÚìñÿàñôÿàñõÿÞïõÿÚìòÿÚìóÿÝìóÿÞíôÿÞíôÿÝìôÿÚìôÿØêóÿÙìôÿÚìõÿ×ëôÿÔèõÿÒæôÿÊàòÿÍãõÿÏåõÿÑåõÿÖèõÿ×êõÿÓæõÿÈÝïÿÍäôÿÐæ÷ÿÏç÷ÿËãõÿËãôÿÎæöÿÐæöÿÍäõÿÎäôÿÎåõÿÐåõÿÑçõÿÖéöÿØêôÿÀÐÉÿ»Å¬ÿ¿ÊµÿÁ̼ÿ½Ç´ÿ¸Ã¯ÿ°¼¥ÿµÁªÿ¶Á©ÿ·Á¨ÿºÅ©ÿ¹Ä©ÿ¼Æ­ÿ»Ç­ÿ¹Ã¦ÿ¾Çªÿ½Æ©ÿ¾Æ§ÿÃ˨ÿÇЭÿËÔ²ÿÉÒ²ÿÇѶÿËÔ´ÿÄÔÜÿËÝêÿÑåðÿÐæõÿÓèùÿÙíûÿÛïûÿÚîûÿÚîûÿÛïûÿÞðûÿÜîûÿÚîûÿÖìûÿÒêúÿÏèùÿÏëúÿÒíúÿkÊçúÿÆæùÿÂãùÿÀáøÿÁäúÿÀäúÿÀãúÿÀãúÿÃãûÿÆæûÿÌéûÿÑìûÿÊèûÿÊèüÿÄåýÿ¾àýÿµÛûÿ±×úÿ¯Öøÿ¯Õôÿ¯Ôïÿ­Ñéÿ¦Êàÿš½Õÿˆ­ÇÿµÉØÿxŠ˜ÿ„’šÿÃÒÚÿœ·Éÿ¤ÁÕÿ¬Êßÿ¶ÓçÿÀÛîÿÈäòÿÉåõÿÈåöÿÃã÷ÿ½ßøÿ¶Úøÿ³Øøÿ²Øøÿ³Ùøÿ¶Ü÷ÿºàøÿ¾äúÿºâúÿ±Ûøÿ§Ööÿ¤Óöÿ¤Ôöÿ«Øùÿ´àùÿ´àúÿ«Öùÿ¨Óøÿ³Úûÿ»ßûÿ¸ÝûÿÀäûÿ·ÝúÿºÜùÿèóýÿçôüÿæôýÿâñüÿáñýÿÝíýÿÜíüÿÚìûÿÚìûÿÝïüÿáñüÿÞîûÿØìûÿÕëúÿÉçûÿ»âûÿºáûÿ»âûÿäôþÿðøþÿêïöÿìòøÿñùþÿñøýÿóúþÿôúþÿöûþÿ÷üþÿöûþÿóùþÿÕíýÿÑìýÿÐìþÿÍéýÿËèüÿÍéüÿÏëýÿÕîýÿÔíýÿÔìüÿÔëúÿÚîûÿàòüÿáñüÿÝðûÿáòûÿáòûÿãôûÿäôûÿâñúÿßïúÿßîúÿáðúÿæóúÿäðùÿãðùÿäñùÿçóùÿèóøÿèóøÿæñöÿèòõÿæñóÿåñóÿæñòÿäðòÿáîñÿáïðÿâððÿáïïÿáîïÿàíðÿßíîÿßîðÿàïïÿàïïÿáîîÿàííÿãïîÿçñîÿéòíÿèòìÿèòìÿåñëÿâîëÿßìëÿÞìëÿßìëÿàîìÿàîëÿâðêÿãñêÿáïèÿÞíçÿÒáÞÿ·ÃÁÿ·ÃÀÿÙéäÿÝíåÿÜìãÿÙçâÿÖäßÿÜèáÿßëâÿÞëâÿáíâÿÞìâÿÝéáÿÞëãÿÞëáÿ½Æ¿ÿ¿ÈÁÿÛéàÿØçàÿÚèáÿÚèàÿÛèßÿàìàÿâíàÿáìàÿÝéÞÿÜéÞÿÞìàÿßíßÿßíßÿÞëÞÿÞëÞÿßìÞÿáíßÿàìÞÿßëÝÿßêÜÿÙäÖÿËÑÅÿèñßÿèñßÿçðàÿæðàÿæðàÿæðàÿåðàÿãïàÿãïàÿãïàÿåñáÿèòáÿçòáÿçñáÿçðàÿêóáÿíõâÿíõâÿìôâÿîöãÿï÷äÿñøæÿòùæÿðøæÿîöæÿîöæÿïöæÿñ÷åÿïöåÿîöåÿïöæÿñöæÿðöåÿðöåÿïöåÿñöåÿðöåÿðöåÿîõäÿíõåÿëóåÿëôæÿëõæÿëõæÿéôæÿèòæÿåðäÿæòæÿåñåÿåðåÿåðæÿåïåÿåðæÿéóèÿëôèÿêôèÿéóèÿæòèÿäðèÿâîêÿàíéÿàíêÿàíêÿáíéÿáïêÿãñëÿàïêÿÝìêÿ×çæÿÕçæÿÕæçÿÚêêÿÛìêÿÛìêÿ×çêÿÕæéÿÝëíÿàìîÿÞìîÿáîïÿÛëíÿÚéîÿÛëðÿÜìñÿÚìòÿØëòÿ×êóÿÑåòÿÓæòÿÒæòÿÒåñÿØëôÿÚìôÿØêôÿÒæóÿÏæóÿÑéõÿÒêöÿÑéöÿÏçôÿÏçõÿÐçõÿÑè÷ÿÐçöÿÏæöÿÏäõÿÑåõÿ×ê÷ÿÛî÷ÿ×êòÿÀÏÆÿÁ̸ÿ¿Ê´ÿ¶À¥ÿ´¿£ÿ´¿£ÿµÀ¥ÿ¸Ã©ÿºÅ©ÿ¼Æ¨ÿ¾È«ÿÀʱÿÃͱÿÀȪÿÀɦÿÂʦÿÀÉ¥ÿÅΧÿÈѬÿÎÖ±ÿÐØ¸ÿÌÕ¸ÿÎÖ²ÿÂÒÐÿÇÙæÿÔäîÿÔæôÿÖêùÿÚíüÿÞñýÿßòýÿÞòýÿÜðýÿàòýÿÞñýÿÝñýÿÜñýÿÙñþÿÕîþÿÓïþÿÕòÿÿkÓðþÿÏíþÿÉèþÿÆæüÿÅéþÿÅêþÿÅéþÿÅçþÿÄæýÿÈçýÿÏìÿÿÓïþÿÑîþÿÏíþÿÉêþÿÂåþÿ¹Þýÿ´Úûÿ²Ùùÿ±×öÿ°Õïÿ¯Óéÿ«ÎáÿŸÂ×ÿ‘´Ìÿ¹ÍÛÿzšÿ…’šÿÄÑÚÿž¸Éÿ¥ÂÕÿ®ÉÞÿ·ÔèÿÀÝðÿÊæôÿÍè÷ÿÎéùÿÊèûÿÃåüÿºÞúÿ·Üúÿ¶Üûÿ¹Þûÿ¹Þúÿ¼âúÿ¿äùÿ¾ãúÿµÞúÿ­Ùøÿ§Õ÷ÿ¦Õ÷ÿ¨×øÿ¸âúÿ»äúÿ®Ùúÿ©Ó÷ÿµÝüÿ½âüÿºßûÿÆèûÿ»àûÿ¸Ýùÿèôüÿí÷þÿëõýÿéôýÿçóýÿäñýÿãðüÿáðýÿáðüÿâñüÿãòüÿãòüÿáñýÿÛîûÿÍéûÿ¿äüÿÀæüÿ½áúÿæóýÿöúýÿóöùÿ÷úýÿ÷ûýÿøûýÿùüþÿúýþÿúüþÿûýþÿúüýÿûýþÿÛðýÿÕïýÿÒëüÿÎêüÿÍèûÿÍéûÿÏêûÿÖïüÿØïüÿÖíüÿÔêúÿÚíúÿáóûÿâóûÿÞïúÿáòúÿáòùÿãôúÿæöùÿæôùÿáñ÷ÿßîöÿàð÷ÿæô÷ÿåóöÿäñõÿäñõÿçóôÿéõôÿéõóÿèóôÿëöóÿìõóÿëöóÿì÷óÿì÷óÿèôòÿçóñÿéõñÿë÷ñÿçòíÿËÕÔÿãñíÿãñîÿäòîÿåóîÿåòíÿãïêÿäðêÿèóëÿëõêÿìõêÿëõêÿêôêÿæñéÿâîçÿàìåÿàíæÿâîæÿáíåÿãïæÿäñåÿäðäÿàîäÿÍÙÑÿ¹Ä¾ÿ¹Ä¼ÿØèÞÿàíàÿàîàÿÛéÞÿØåÜÿÞëßÿâìÞÿßëÝÿãîÝÿßêÛÿÛçÚÿÛçÙÿÝéÛÿ½Æ¹ÿ¾ÆºÿÜèÚÿÛæÚÿÚåÚÿÙåÙÿÜçÙÿÞéÙÿàëÙÿàëÙÿàëÙÿÛçÖÿÝéØÿàìÙÿàíÙÿßëÙÿÝéØÿßêÙÿâíÙÿàìÙÿàìØÿàëØÿÃʺÿÅ̺ÿêóÚÿëóÚÿèñÚÿèïÚÿèñÛÿéóÜÿèñÜÿçñÜÿåïÛÿåïÛÿæðÛÿéóÜÿéóÜÿèñÜÿæîÙÿéñÚÿîôÜÿïõÝÿìóÜÿíôÜÿíôÜÿïõÝÿð÷Ýÿð÷ÞÿîôÞÿìôÞÿíôßÿðößÿîõÞÿîôÞÿìòÜÿíóÜÿíóÛÿíòÛÿìñÛÿëðÚÿÓÕÂÿìòÛÿìñÛÿëñÛÿèïÚÿçîÚÿèðÛÿéñÜÿèðÜÿæïÜÿäíÜÿäîÝÿåïÝÿäîÞÿâíÝÿâìÜÿáëÜÿäíÝÿæîÝÿçïÞÿæîÞÿåîàÿâìàÿßëàÿÞêßÿÞêàÿÞëáÿÞëâÿàíâÿáíâÿßìáÿÜêâÿØçàÿÕäßÿÓãßÿÖåàÿÜëâÿÞíäÿÙèåÿ×åäÿÞìèÿàìèÿÞëçÿâîèÿÝëèÿÙèçÿÛêéÿÜëêÿÚëëÿØéëÿ×èêÿÔæìÿÓäìÿÑäëÿÓäêÿ×èíÿÙéîÿØéíÿÖèîÿÏäìÿÒèðÿÕêñÿÕêñÿÑèòÿÎåñÿÏæòÿÒéôÿÐåôÿÏåóÿÎäòÿÏåóÿÖëöÿÞïøÿÞî÷ÿÒäéÿ¿Êµÿ¶¿¡ÿ³¼ÿ´½Ÿÿµ¿¢ÿµ¿¡ÿ·Â¥ÿ»Å¦ÿÀÉ©ÿÃË«ÿÄͯÿÃÌ®ÿÈЮÿÆÍ¥ÿÃÊ¢ÿÁÉ£ÿÄ̤ÿÇЩÿÎÕ­ÿÓÚµÿÏ׸ÿÆÎ©ÿÁÏËÿÃÖâÿÑãëÿÔèòÿÖè÷ÿØêùÿÜðûÿßòûÿÞñûÿÙíúÿßðúÿÞîûÿÛïûÿÝñûÿÜðûÿÕìúÿÒêúÿÒíûÿkÖñûÿÑîûÿÍéûÿÇæúÿÆçûÿÇçûÿÆçûÿÃäûÿÂâùÿÅäùÿÊçúÿÏëúÿÏëùÿÎéùÿÉæùÿÁâùÿ¸Ûøÿ²Øõÿ°Öõÿ±Õòÿ®Ñìÿ­ÏçÿªËßÿ¡ÀÔÿ±Èÿ¹ËÙÿy‹˜ÿ†™ÿÅÏÙÿ µÇÿ«ÃÓÿ´Íßÿ»Ôæÿ¿ÙëÿÄàñÿÑëôÿÏêõÿÍé÷ÿÈçøÿ¿à÷ÿµØõÿ¶Ù÷ÿ½àøÿ·Ýøÿ»áùÿ¿åùÿÁæùÿ¾äùÿ¶ßùÿ¯Ù÷ÿ¬Ö÷ÿ¤Ðóÿ´Ýúÿ¾äùÿºßùÿ²Ùùÿ³Úùÿ·ÞúÿºßúÿVÂæúÿ¾ãüÿ»àûÿéôýÿòùþÿðøýÿï÷þÿìõýÿëõýÿêôþÿçóýÿæòüÿçóýÿæóýÿèõýÿèõþÿãóýÿ×íþÿÀãþÿÅæþÿÆçþÿéõþÔÿÝïûÿÐêùÿÕíúÿÔìûÿÎçúÿÏçúÿÕìúÿÓêúÿØíúÿØíùÿÔê÷ÿÖëöÿÝï÷ÿáñöÿßñõÿÄÑÛÿÊØßÿåôôÿæõõÿäôôÿáñòÿàïñÿßîïÿáðñÿãñðÿäñïÿãðîÿäðíÿåñíÿåñìÿçòìÿéòìÿëóíÿìôíÿêóíÿêóìÿêôëÿæñêÿàìãÿæòéÿÑÚÓÿÁÈÅÿÞëâÿåîèÿæñèÿçòéÿèòéÿèòéÿèóçÿèóæÿêôçÿï÷æÿíöæÿëõåÿêõæÿæñäÿàìáÿâíâÿåðãÿâîáÿäðâÿæòâÿäïßÿØâÓÿÃÌÀÿÀɼÿ¾Ç»ÿÕãÕÿâïßÿåñÞÿãïÞÿàíÝÿàíÝÿãïÞÿäïÞÿæòÞÿåðÞÿãîÜÿáíÛÿâíÛÿÄÊ»ÿÃʺÿàìÙÿâíÚÿáìÚÿàëØÿÛæÓÿÐÙÇÿËÒÀÿÈϼÿÆÌ¸ÿÊÒ¾ÿ×àÌÿãíØÿäïØÿåðÙÿãîÙÿäîØÿåïØÿåîØÿæðÙÿæðÙÿÇ̸ÿÇ͸ÿêñØÿêòØÿëó×ÿëòÖÿèñÖÿèñÖÿëó×ÿéñÖÿæïÖÿãìÔÿÖÜÄÿÊθÿÎÓ»ÿ×ÝÃÿçîÔÿçïÔÿëòÕÿíóÖÿìòÖÿêðÕÿìòÖÿîôÖÿßäÈÿÒÕ¼ÿëóÖÿêòÖÿéñÖÿêñÖÿéñÖÿëòÖÿëòÖÿëòÖÿìòÖÿìò×ÿìò×ÿØÜÃÿÌηÿìð×ÿìòØÿìòØÿìòØÿéðØÿäìÔÿêòÙÿéòÙÿçïØÿãìÖÿæíØÿæíØÿæíÙÿçîÙÿæîÚÿæîÚÿæïÚÿèñÜÿìôÝÿìôÞÿêóÞÿèòÞÿãîÞÿßêÜÿáìßÿäïáÿÞêÝÿ×âÕÿÒÝÏÿÊÓÆÿÆÎÁÿÁÉÀÿÂÌÃÿÌÙÑÿÕäÝÿáïåÿåòæÿãïçÿßìæÿàíçÿâïèÿãïèÿåñçÿâîçÿÝìåÿÜëæÿÝìçÿÝìèÿÜëèÿÙêéÿÚêêÿÙéêÿØéìÿ×èëÿÙëìÿÚíîÿÝîïÿÝîïÿÙìïÿØëðÿ×êðÿÙìñÿÙìòÿÖêòÿÖéóÿ×ëóÿÖêôÿ×ëôÿÖêôÿÖêõÿ×íöÿÚìõÿÆÖÑÿ¿Ë¼ÿ¾Æ¨ÿ´¼ÿ´½ÿ¶¿ÿ·¿ÿµ½ÿ·ÀŸÿ¼Ä£ÿ½Æ¥ÿÂɦÿÂɦÿ¿Ç¦ÿ¾Æ£ÿÇΨÿÅÍ¢ÿÁÊ¡ÿÀÈ ÿÂË¢ÿÈÏ£ÿÐÕ¬ÿÁÉ¢ÿ±Ã²ÿ¹ËÑÿ¾ÒÛÿÆÙãÿÍâìÿÓèòÿÖëõÿ×íøÿÙïùÿÚïùÿÚîùÿÜîùÿÞîùÿÝíùÿÚìùÿÚíùÿÚïúÿÔëùÿÊåôÿÓîúÿgÒíúÿÍèùÿÅãöÿÉãúÿÊäúÿÊåúÿËæúÿËæúÿÊçøÿËçøÿÌèùÿÖðùÿÓïúÿÏìúÿÊêûÿÀáùÿ´×õÿ´Öõÿ¹Ûôÿ¯Ôïÿ¯Óëÿ­Ïáÿ§ÇØÿ›ºÌÿ¿ÐÛÿ›ÿ‰’šÿÈÒÚÿ§ºÊÿ°ÆÖÿ¸Ïáÿ¾ÖèÿÁÜíÿÅãóÿÔïùÿÔðûÿÓðýÿÑïþÿÅæýÿ½ßúÿ¼ÞûÿÀâýÿºàûÿ¼äýÿÁçýÿÅêþÿÄéþÿ¾åþÿ·ßýÿ±Ûûÿ­×ùÿ¸ßýÿÀæýÿ¾åþÿ·ßþÿ¶Þýÿ·ÞýÿºàýÿVÂçýÿÁåýÿ½ãþÿëöþÿöûþÿõúþÿôúþÿñøþÿñøþÿðøÿÿî÷þÿìöþÿìöþÿëöþÿì÷þÿë÷þÿéõþÿÜïþÿÂãþÿÈæþÿÈæýÿäñüàÿþþÿþþÿüýýÿáòüÿÖíüÿÛðüÿÛñýÿÕìûÿÔìûÿÙîûÿØíúÿÛðúÿÜñùÿÚïøÿÛðøÿßó÷ÿãö÷ÿÐÞáÿ»ÇÏÿ¾ÉÏÿàííÿéùôÿéøóÿèöñÿçõñÿæôðÿæôïÿæõïÿçõïÿçõîÿèõíÿèõíÿéöìÿêöíÿÑØÒÿÊÏÉÿËÐÊÿÖÝÕÿìöéÿíöèÿëõèÿåðãÿéóæÿÇÍÄÿÆÍÄÿßëÞÿéñåÿêòäÿêóäÿçïáÿÜäÖÿÌÒÅÿÈÎÁÿÇÍ¿ÿÏÔÃÿ×ÝËÿæîÚÿìôàÿèòàÿäíÝÿäîÝÿæðßÿäïÝÿËÕÃÿÆÎ¼ÿÈϽÿÈϼÿÆÎ¼ÿÄË»ÿÁʹÿÀÈ·ÿÅÌ»ÿËÓ¾ÿÎÖÂÿÆÎ¼ÿÇϼÿÌÕÂÿÖßÊÿæñØÿåð×ÿäï×ÿåïØÿåï×ÿÆÌ¶ÿÅ̶ÿàêÒÿåïÖÿáêÒÿÏ×ÀÿÄ˶ÿÅ̶ÿÇζÿÈζÿÉ϶ÿÇζÿÆÍ¶ÿÓÚÁÿèñÖÿèñÕÿèðÕÿçðÕÿçðÕÿèðÔÿèñÕÿéòÕÿÉεÿÈδÿéñÔÿìôÔÿîõÓÿëòÒÿéñÑÿêòÒÿíóÓÿìóÓÿéòÓÿæíÐÿËÏ´ÿÌеÿÍѵÿàçÈÿíôÕÿíôÕÿîõÕÿð÷ÕÿñöÖÿíôÔÿïöÕÿò÷ÖÿÑÓ¶ÿÑÓ¶ÿò÷Öÿñ÷Öÿñ÷×ÿïöÕÿïöÖÿð÷×ÿð÷×ÿñ÷×ÿñ÷×ÿñ÷×ÿðöÖÿÐѶÿÐѶÿëðÒÿñöØÿò÷Ùÿò÷ÙÿìòÕÿßåÉÿÒ×¾ÿÎÓºÿÌÏ·ÿÍѹÿÖÚÃÿæìÓÿìòÙÿìòÙÿëòÙÿêòØÿéñ×ÿéòØÿîõÛÿîõÛÿìôÛÿëóÛÿèñÜÿâíÙÿâíÚÿÙãÑÿÆÍ½ÿÄ̼ÿÅͼÿÆÍ¼ÿÆÍ¼ÿÃ˼ÿÀÉ»ÿ½ÆºÿÂËÀÿßìÞÿäñàÿãðáÿáíáÿàìáÿáîãÿâïãÿåñãÿäðäÿáïåÿáîåÿßíäÿàíæÿßîæÿÞíçÿÞíçÿÞîêÿÜíéÿÛìêÿÜíëÿÞïìÿßïìÿßðëÿÝîìÿÛíîÿÜíîÿÝíîÿÝîïÿÛíðÿÙìñÿÙìòÿÚíðÿÙìñÿÙìñÿØìòÿØìòÿÍÞÛÿ¿É°ÿÂ˪ÿÂʪÿºÃ ÿ¹Âžÿ¼Ãÿ»Âšÿ¸¿™ÿºÀšÿ¾ÅŸÿ¿Æ ÿÂÉ ÿÄÊ¢ÿÂÊ£ÿ¾Ç ÿÃÌ£ÿÄÌ¡ÿÄÌŸÿÀÇÿÃËŸÿÇΠÿÏÔ¥ÿÎÓ¤ÿ¶Å«ÿ¤· ÿ¤¸©ÿª¾´ÿ·ËÇÿÇÜáÿ×î÷ÿÚðúÿÛòüÿÝòüÿÜñüÿßñüÿßðúÿÝïúÿÜîûÿÜñüÿÞòüÿØïûÿÎéølÿÓíûÿÔïüÿÑíüÿËéùÿÏæûÿÑçûÿÑèûÿÐèûÿÍçûÿËæøÿËçøÿËèùÿÖñûÿÔðûÿÑîûÿÎìúÿÂãùÿ·ÚôÿµÖóÿ·×òÿ®Ñëÿ«Ïæÿ©ÊÞÿ£ÂÓÿ™µÇÿ¿ÎÙÿ~Œ™ÿ‰‘šÿÈÓÚÿ¨½Êÿ²ÇÖÿ¹Ðáÿ½Öçÿ¿ÛìÿÃàðÿÏêöÿÑíùÿÓðûÿÓðüÿÊêûÿÁãúÿ¼ßúÿ½ßûÿºßûÿ»áüÿ¿æüÿÂèüÿÄèüÿÁçýÿ»áýÿ´Ýûÿ³ÜûÿµÝüÿ»âýÿ¾ãüÿ»àûÿµÝûÿ´Ûúÿ¶Þûÿ¿äûÿÀåûÿ¿ãûÿÛîüÿâñýÿßðüÿÞïýÿÜîüÿÜïüÿÙíüÿÖëüÿÔêûÿÓéúÿÔêúÿÔëùÿÔìùÿÓêúÿÎçúÿÀàùÿÅãúÿÇåùÿÄÙíÿ½ÌáÿËÝòÿÖêûÿÖêúÿÖëúÿÕêúÿÓêùÿÕëùÿÚîøÿÝðøÿØíöÿÓëõÿÓìõÿØìôÿØíóÿÔêóÿÒéòÿÖëóÿÖìóÿ×ìòÿÙíòÿÙíñÿÙìïÿØíïÿÜîîÿÊØÖÿºÄÈÿºÅÇÿÌÙÖÿäòêÿæóêÿçôêÿçôëÿçôëÿåóêÿåóêÿæóéÿæóèÿçôèÿèôçÿèôçÿßèÝÿÆËÄÿÈÌÃÿÇÌÃÿ×ÞÒÿìõäÿíõãÿëôáÿæðÞÿæðßÿÆÌ¿ÿÆÍ¿ÿÝæÕÿàèØÿØÞÎÿÓÙÈÿÇͽÿÆË»ÿÄʹÿÄÉ·ÿÅɶÿÉιÿÉιÿÊϹÿàçÏÿèðØÿäíÖÿãìÖÿãíÖÿâíÖÿ×àÊÿÎ×ÀÿËÒ»ÿÇζÿÅ̵ÿÄÊ´ÿÁɲÿÀDZÿÁȲÿÃʱÿÃɱÿÂɰÿÁǰÿÅÌ´ÿÐØ¿ÿâìÐÿâìÏÿâìÎÿáêÍÿàéÍÿÃȯÿÄɰÿÍÓ¸ÿÓÛ¾ÿÅ˰ÿÇͱÿÑÙ¼ÿÛãÅÿâëÌÿäíÌÿÜäÃÿÌѲÿÆË®ÿÇ˯ÿÜãÄÿæïÎÿæîÍÿåíÍÿãìÌÿæíÌÿåíËÿåíËÿÇÌ­ÿÆË¬ÿåîÌÿéðËÿëñËÿèïÊÿçîÉÿéðËÿëñÌÿëòÌÿéðÌÿäëÇÿÌήÿËÏ®ÿÜá¾ÿêñÌÿêñÌÿëñÌÿêñÍÿíôÏÿïõÎÿìòÍÿìñÌÿîòÌÿÎЮÿÏѯÿðõÍÿïôÍÿïóÍÿîóÍÿîóÎÿîóÎÿîóÎÿîóÎÿîóÎÿîòÎÿîòÏÿÍϰÿÎϰÿäçÅÿæêÈÿßâÁÿÙÜ»ÿÎѱÿËίÿÉͰÿËαÿËϱÿËͱÿÉͱÿËͲÿáæÇÿëñÑÿëñÒÿèïÑÿçïÑÿçïÑÿíôÔÿìôÕÿìôÕÿëóÕÿéòÕÿãíÓÿÏÖÁÿÅ̶ÿÌÓ¾ÿØâÍÿâíÕÿæñÙÿäïÖÿÝèÑÿÐÙÇÿÂɹÿÁɹÿÒÜÊÿáíÚÿâíÚÿáíÛÿßìÛÿßìÜÿàíÝÿäïÝÿäïÝÿãîÞÿâîßÿáíàÿàìàÿàìáÿßíâÿàíâÿÞìâÿÞìãÿÝìäÿÝìäÿÝìäÿÞíäÿÞîåÿÝíåÿÛìæÿÚëæÿÛíçÿÝìçÿÛìèÿØêéÿÖèéÿÙëêÿÚììÿÚììÿÙëíÿÐâßÿ¿É°ÿ¿Ç£ÿ¾Äœÿ¹¿›ÿ¹Á›ÿ½ÃžÿÂÈ ÿÁÆ›ÿ½Â˜ÿ¼Ä˜ÿÁÆÿÂÈÿÅÊÿÇÌŸÿÅËŸÿÁÇÿÃÊ¢ÿÄÌŸÿÆÍœÿÃÊšÿÅËœÿÉÏ ÿÎÓ ÿÍЖÿÂÇÿ³¹‰ÿ´¼Œÿ¨³‰ÿ¡¯Œÿ‘¡‰ÿ²Å´ÿÉÞÞÿÒçíÿÚïùÿÜðûÿÞðüÿáñýÿßñýÿÝñýÿÞòýÿàôýÿÜòýÿÔíúÿkÑìúÿÔîüÿÓïüÿÑìüÿÐèýÿÒêýÿÔíýÿÔìýÿÑëþÿÎéüÿÍêûÿÍêûÿÖòþÿÖòþÿÖóþÿÕòþÿËëýÿÀâúÿºÝøÿ¸Úöÿ²Öñÿ®Òìÿ«Îãÿ§ÇØÿž»ÌÿÃÒÛÿ‚‘›ÿˆ™ÿÇÑÙÿ¦ºÇÿ²ÆÓÿ¹ÐÞÿ¾ÕçÿÀÜìÿÅâñÿÌéöÿÐìøÿÕðúÿÖñûÿÏíûÿÆçûÿ¿áúÿ»Þùÿºàûÿ¹áüÿ»ãûÿÀæûÿÅèûÿÃçûÿ¼ãûÿµÜúÿµÜúÿ¯Ø÷ÿ³Úùÿ¼áúÿ¾ãúÿ¸ÞûÿµÝûÿ¸Þûÿ¾âûÿÀåûÿÃæûÿÀãûÿ»àûÿ¹Þüÿ¼ßüÿ¾âýÿ¿ãûÿ¾âûÿ¾âýÿ½âýÿ¾âýÿÀäýÿÄæüÿÅèüÿÈèüÿÅåûÿÂãûÿÇæüÿËéüÿ³Ìãÿ¤¹Öÿ¾ÛõÿÆäûÿÊæùÿÌèùÿËèùÿÊåøÿÊç÷ÿÑêöÿ×îõÿÙïóÿÕìñÿÔëñÿØìòÿÛïòÿÛïòÿ×ìñÿÔêðÿØíïÿÖëîÿÙìíÿÛíìÿÚíêÿÖêçÿÚìèÿÝìãÿ¾ÈÅÿ¼ÅÃÿ¿ÊÅÿãðåÿåòåÿåñãÿäðãÿãïâÿâïãÿäðâÿäðâÿæñâÿåñáÿæñàÿæñàÿÌÓÅÿÄɼÿÄɼÿÒÖÇÿæîÚÿçðÚÿèðÚÿèñÙÿèñÚÿâì×ÿÄɹÿÄʸÿÆË¸ÿÅʸÿÅÊ·ÿÑ×ÁÿÜãËÿãêÒÿæíÔÿäìÑÿàçÍÿØÞÂÿËϵÿËϵÿÍѶÿçïÒÿèñÕÿæïÔÿãíÒÿãîÓÿäïÓÿäðÓÿæñÒÿéòÓÿåîÏÿÑØ¼ÿÅ̱ÿáìÏÿÞçËÿßéÌÿåîÎÿåïÎÿãíÎÿáìÍÿãíÍÿåîÍÿæïÌÿèðÍÿçðÍÿåîÍÿÇÌ®ÿÇÍ­ÿÇÍ­ÿËаÿ×ß¼ÿæîËÿæïÌÿæïÌÿçðÌÿçðÊÿçðÉÿæíÇÿÍÒ¯ÿÉάÿÕÛ¶ÿèðÈÿéñÉÿèïÉÿåíÈÿåíÈÿçîÈÿçïÈÿÉΪÿÉͪÿçïÈÿêñÈÿìòÈÿíòÈÿëñÇÿêñÇÿìñÈÿîóÈÿîóÉÿáçÀÿÌЬÿÒÕ°ÿëñÈÿíóÉÿíôÊÿìóÊÿêñÈÿíòÉÿðôÊÿñöËÿñõËÿðôÊÿÐÓ¬ÿÑÓ¬ÿñõÉÿðõÉÿðôÉÿîóÈÿðôÊÿðôËÿðôËÿðõËÿðôÊÿïóÉÿïóÊÿÐѬÿÐѬÿÐÑ­ÿÑÒ®ÿÐÑ­ÿÚÜ·ÿäçÁÿëïÈÿéïÊÿëñÌÿæìÆÿÚß»ÿÌήÿÌίÿÎаÿèíÊÿéðÍÿèîËÿæíÉÿæíÊÿéïÌÿéðÌÿéðÍÿéðÍÿåíÊÿÌѵÿÄɯÿÓÛ¿ÿàêÎÿàëÏÿâíÐÿãíÑÿäîÑÿäîÒÿàìÑÿÒÛÄÿÀDZÿÄÌ·ÿÞèÒÿáìÓÿâîÕÿáìÕÿßëÖÿàë×ÿâí×ÿãîÙÿäîÙÿâíÚÿàìÚÿßëÛÿßìÜÿßìÝÿàíÝÿÞìÝÿÝëÜÿÜêÜÿÜêÝÿÜìÞÿÞíßÿÞíßÿßíàÿÝìâÿÜìãÿÞíäÿßïäÿÞîåÿÛìæÿØèåÿÙêçÿÚëèÿÙêåÿÉØËÿ¸Ã¨ÿ¾Æ¤ÿ¿ÅŸÿÂÈžÿ¿Åšÿ»Â˜ÿ¼Â˜ÿÁÆ™ÿÂÈ™ÿÀÅ–ÿ½Ã•ÿ¾Ä—ÿÄɘÿÆÌœÿÊТÿÌУÿº¾‘ÿ¾Ã—ÿÃÉšÿÇÊ–ÿÆÊ™ÿÉΞÿÌÑ¡ÿÍÑÿÊÌ“ÿ¿ÃŠÿ½ÃŠÿÉΣÿ½Äœÿ¨°‰ÿ¥­‹ÿ¦´©ÿÌßåÿÓçðÿÖëõÿÙí÷ÿÜîúÿÝïûÿÝïüÿÜðüÿÞòüÿÞóüÿÜòûÿÙðûÿkÎêøÿÒëûÿÕïüÿÖðýÿÏæýÿÑéýÿÔíýÿÕíýÿÒìýÿÐêüÿÎëûÿÏìûÿÔðýÿÖòþÿØóýÿØôþÿÐïýÿÆçûÿ¼Þøÿ¶Øôÿ²Õðÿ¬Ñêÿ¦Êáÿ£ÃÖÿºÊÿÃÒÚÿƒ‘›ÿ†˜ÿÆÐØÿ¤¸Æÿ°ÄÒÿ¸ÐÝÿ½Öåÿ¿ÛêÿÃßïÿÈåóÿÎéöÿÓïùÿÕñúÿÓïúÿÍêúÿÃãøÿºÜ÷ÿºßùÿ¸Ýùÿºßùÿ¾ãúÿÃæúÿÃæúÿ¾äúÿ»áüÿ¶Ýûÿ°Øøÿ±Øùÿ¼àüÿÁåüÿ½áûÿ¹ßûÿºàûÿ¼áûÿÀäûÿÃçüÿÂæüÿ½áüÿºßûÿ¼ßüÿ¿ãýÿ¿ãýÿÀäýÿÀãýÿÀâýÿ¿âýÿÀãýÿÄæýÿÈêüÿÌëýÿÊéýÿÇæûÿÉèüÿÎëûÿ®ÃÙÿ§ºÓÿÅáõÿÄâ÷ÿÊæøÿÎé÷ÿÏê÷ÿÎéöÿÎéõÿÐëôÿÕìóÿâõóÿÜòñÿ×íïÿØíïÿÜðïÿßòîÿÛïîÿÕêëÿÜïíÿÚîíÿÝðìÿàóëÿÞñéÿÛìæÿÜïçÿãóèÿÛæÛÿÁÉÂÿÁÈÁÿÜæÚÿèôâÿéôáÿéóáÿèóàÿåñßÿæòßÿçòÞÿçòÞÿçòÝÿèòÝÿßæÒÿÆËºÿÇË»ÿËнÿèïØÿéòÙÿëòÚÿëóÙÿëó×ÿëó×ÿæðÖÿÆË¶ÿÆÍ¶ÿÈ͵ÿÊϹÿáèÍÿèðÒÿéðÒÿéñÒÿêñÓÿéñÐÿéðÐÿëòÑÿâçÆÿÎÒ²ÿÎÒ±ÿàåÃÿíôÒÿéñÐÿåíÎÿæñÑÿæðÐÿçñÑÿêóÑÿêóÐÿëóÏÿÑÙ·ÿÉϰÿåïÍÿáëÊÿâìÊÿçðÌÿèñÌÿèñÌÿçðÍÿèñÌÿèñÌÿéòËÿêóËÿêóËÿéðËÿÊϬÿÊЫÿÒײÿäìÅÿêòÊÿêòÊÿêñÊÿéñÊÿêòÊÿêóÊÿìóÉÿíôÉÿàæ½ÿÍѪÿÓ×®ÿíóÈÿîôÈÿìóÈÿëñÈÿéðÇÿëñÈÿìóÈÿÎÒªÿÎÒªÿëóÈÿìóÈÿîôÇÿó÷ÇÿðöÇÿîôÆÿîôÆÿðöÇÿñöÆÿÞâ¶ÿÍЧÿÞâµÿîôÆÿïõÇÿðöÈÿîôÇÿëñÄÿìòÄÿðõÆÿðôÄÿðóÄÿðóÄÿÒÓ§ÿÑÒ§ÿñôÄÿñôÄÿðôÄÿïòÃÿïóÄÿïóÅÿðóÅÿïòÄÿîòÄÿïòÄÿîòÅÿÐѧÿÐѧÿÏШÿÒÔ«ÿèë¿ÿíñÅÿîòÅÿîñÄÿèíÃÿéíÄÿéîÄÿéîÄÿÝà¹ÿÈ˦ÿȨ̂ÿÛÞ¸ÿèîÅÿèíÅÿçíÅÿæìÅÿæìÅÿçìÅÿèíÆÿèîÆÿÑÕ±ÿÉÌ«ÿÛâ¿ÿßçÆÿáéÈÿßèÈÿßèÈÿàëÉÿâìÉÿâìÊÿàëÊÿÝæÉÿÀƬÿ¾Å¬ÿÚäÊÿßèÌÿâìÎÿáêÎÿßéÏÿàéÐÿàêÐÿàëÑÿáìÑÿáìÓÿßêÓÿÝèÓÿÝéÔÿÝêÕÿÝêÕÿÝêÖÿÜéÖÿÜé×ÿÜêØÿÛêØÿÜêØÿÞìØÿÞíÚÿÝëÚÿÛéÚÿÜëÜÿÞíÞÿßíÞÿÜìßÿÙéàÿ×èàÿØêâÿØéßÿÅΰÿ¹ÁÿÁÉ¡ÿÁÉžÿÂÈ›ÿÈÍœÿÄÊ™ÿÂÈ—ÿÂÇ”ÿÅÉ“ÿÈÌ•ÿÆË–ÿÃÈ–ÿÇÌ—ÿÌÏœÿÄÆ—ÿÊÍÿ»¼ÿÃÇ•ÿËМÿ½¼ÿÅÂÿÇÇ•ÿÕ×£ÿÍ͘ÿÅÇ‹ÿÄÆŒÿÅÈŽÿÎÒ¢ÿÓÚµÿ¾Ë¼ÿºÈÄÿÇ×ÞÿÏáéÿÔæîÿÖéóÿØìöÿÛîúÿÜïüÿÜïýÿÜðýÿÜðüÿÜðûÿÜòûÿÜòûÿkÏêùÿÐêúÿÐìúÿÒìúÿÌäúÿÎçúÿÏéúÿÑêùÿÏëùÿÎêùÿÌéøÿËç÷ÿÍëùÿÒíúÿÔðúÿÔðúÿÒîùÿÊç÷ÿ¿Þôÿ³Ôïÿ°Òëÿ¨Ëåÿ£ÆÜÿ ¿Óÿš·ÇÿÂÑÙÿ‚™ÿ‰“šÿÈÒÚÿ¥¹Éÿ¯ÅÓÿ¹ÑÞÿÀØçÿÀÛëÿÁÝîÿÇåóÿÍêøÿÒïúÿÕñûÿÕñúÿÒîúÿÈæúÿ¼ß÷ÿ»àúÿ¹ßùÿ¹ßùÿ¼âúÿÀäúÿÂåúÿÀäúÿ¾ãúÿ´Ûùÿ¯×öÿ®Ööÿ¶Ûùÿ¾áùÿ¿ãùÿ»àùÿ¹ßùÿ¹Þøÿ½áùÿÂäúÿÁåûÿ½áúÿ»Þûÿ¼ßüÿ½âýÿ¾âýÿÀãýÿÃåýÿÈçüÿÅäûÿÅäùÿÇçúÿËêúÿÍêúÿÊêùÿËæöÿÈç÷ÿÍé÷ÿ¬¾Ñÿ©¼ÐÿÉåòÿÆáñÿÇãñÿÊåðÿËæîÿËçíÿÍæîÿÍæíÿÎçìÿÞòìÿÜðëÿØíëÿÕêèÿÙíéÿÞðèÿÛîçÿÖêäÿØëæÿØìäÿÛíäÿÝîãÿÜîâÿÛíáÿÜíàÿßïáÿãñàÿÉÑÆÿÁȾÿÕÞÏÿçóÞÿèóÝÿêôÞÿëôÞÿèôÝÿèôÝÿèóÜÿéóÛÿêóÛÿêóÛÿÎÓ¿ÿÉͺÿÉ͹ÿàçÎÿêòÙÿìôÙÿíôØÿìõØÿíöØÿï÷×ÿìô×ÿÈÍ´ÿÈͳÿÍÒ·ÿãëÍÿëòÓÿëòÓÿíôÓÿîõÔÿïöÓÿìôÐÿëñÎÿíôÏÿïõÐÿÙÞ¹ÿÐÔ°ÿØÜ·ÿïõÍÿëòÍÿæîÊÿçðËÿæïËÿæïËÿèðËÿéòËÿêòÊÿÐÕ¯ÿÊЫÿåîÈÿâìÇÿáëÆÿæïÈÿèðÇÿèðÆÿçïÆÿçïÆÿçîÄÿèðÅÿéñÅÿéñÅÿèðÅÿËϧÿËϧÿÞå»ÿèïÃÿéðÃÿéðÃÿéðÂÿèïÂÿèïÁÿéðÂÿêñÂÿëñÁÿæì½ÿÍУÿÏÒ¦ÿêðÀÿìòÁÿìòÁÿêðÀÿèî¿ÿéïÀÿêðÀÿÍУÿÍÑ£ÿêðÀÿêðÀÿêðÀÿñõÀÿïôÀÿíóÀÿëð¿ÿîóÀÿðôÀÿÙܪÿÏÑ¢ÿãè·ÿìòÀÿîóÁÿïóÁÿîóÁÿíóÀÿíòÀÿïóÀÿðô¿ÿðó¿ÿðó¿ÿÒÓ£ÿÓÔ£ÿòô¿ÿòõ¿ÿòô¿ÿðó¿ÿðóÀÿñôÁÿðóÁÿðóÁÿðóÁÿñôÂÿñôÂÿÒÓ¦ÿÒÓ¦ÿÔÕ©ÿéí½ÿðóÃÿðôÃÿðóÃÿñôÃÿîòÃÿìñÄÿëðÄÿíòÄÿíòÄÿØÚ°ÿÎЧÿ×Ù¯ÿìòÅÿíòÆÿêðÄÿèîÂÿêïÅÿìòÇÿíòÇÿâç»ÿÏÒªÿåëÀÿèðÈÿãëÆÿãìÈÿãìÉÿäíÊÿæïËÿèñËÿèðÌÿçñÌÿÞçÅÿÅË­ÿÂȬÿÞèÊÿãíÎÿåîÎÿåïÎÿåîÏÿãîÐÿãíÏÿäîÏÿåîÏÿãîÐÿâìÑÿàëÒÿàìÒÿàìÓÿßëÓÿàìÓÿßìÔÿÞìÕÿÝêÔÿÝëÕÿÞì×ÿàí×ÿàî×ÿßí×ÿÝêÖÿÛêØÿÝêØÿßìØÿÞìÙÿÛêÛÿ×çÚÿ×èÜÿÇÔ¿ÿ¼Äÿ½Åœÿ¾Æ›ÿ½Ä˜ÿ½Ã•ÿÄÊ–ÿÃÈ“ÿÀÄ‘ÿ¿Ä‘ÿÁÅŽÿÃÇŽÿÄÈÿÁÆÿÂÅ‘ÿÀÂŽÿÆÆ‘ÿ½¾ŒÿÁ¿‡ÿÈÊÿÊÍ”ÿÆÅ‰ÿÁ½†ÿÄÀŠÿÀ¿Œÿ¸·‚ÿ¾¿‡ÿÄÆ‰ÿÃÆ‰ÿÉÍ—ÿÌÒ¨ÿÍÔ´ÿ¾ËÄÿÂÒÖÿÆÖÛÿÊÜâÿÎàçÿÒåíÿÕèñÿÔçóÿÓæôÿÓèôÿÓèôÿÒéôÿÔëõÿÖíõÿkÏçõÿËåõÿÈäõÿÊåöÿÌåõÿÊâõÿÉâôÿËäôÿËæõÿËæõÿÈäôÿÅâòÿÈåôÿÌéöÿÑíøÿÓïøÿÒî÷ÿÍéõÿÁßóÿ³Ôíÿ¯Ñêÿ©Ëäÿ¢ÅÜÿ¼Òÿ—´ÆÿÁÏØÿ‚˜ÿŠ”šÿÇÓÚÿ¡¸Éÿ­ÅÕÿºÓàÿÃÜèÿÂÞíÿÁßïÿÅäòÿËé÷ÿÐíúÿÔïûÿÖðúÿÕðúÿÍéúÿÁà÷ÿºàøÿºßùÿ¸Þ÷ÿ¹Þøÿ»àùÿ¾ãúÿÁåúÿÂæúÿµÜøÿ´Ûøÿ²Ùøÿ³ÚùÿºßúÿÀåúÿ¿ãúÿºßùÿºÞ÷ÿ½áøÿÁãùÿÁãùÿ¿áùÿ»ÞøÿºÝùÿ»Ýùÿ»Þøÿ½à÷ÿÂâöÿÍç÷ÿËä÷ÿÊåöÿÍèöÿÐëõÿÒêôÿÑêôÿÏèñÿÊæðÿÌæïÿ¬¾Ëÿ­¾ÊÿÍåëÿËãíÿÉâëÿÇâêÿÈâêÿËäéÿÎæëÿÍåèÿÍåçÿ×ëæÿÛîåÿÛïåÿÖëãÿ×ìâÿÜíâÿÜîâÿÙìáÿØêßÿØëßÿÙìÞÿÚìßÿÜíßÿÝíÞÿÝíÝÿÛëÚÿáíÚÿÚäÑÿÂǺÿÇνÿåî×ÿçñØÿèò×ÿéò×ÿçñ×ÿçñÖÿçðÔÿçðÔÿçðÓÿÙàÄÿÆË³ÿÇ˳ÿÒ×¼ÿéñÒÿéðÑÿèñÑÿéòÑÿêñÑÿêòÐÿíôÐÿìóÏÿÉαÿÈͰÿÝäÄÿëòÎÿéðÍÿçðÌÿêñÌÿìôÍÿíôÌÿìóÊÿéñÈÿìòÈÿîõÊÿæëÁÿÑÔ«ÿÔ×®ÿñöÊÿïõÊÿéðÆÿçïÇÿçðÇÿçðÆÿçðÇÿéñÇÿêóÈÿÑÕ¬ÿÎÓ©ÿçïÅÿæïÅÿåîÃÿæïÃÿéñÅÿëóÄÿëóÄÿéðÃÿèðÀÿêñÁÿëñÁÿêñÁÿéðÁÿÌУÿÍУÿãéºÿéðÁÿëñÀÿëñ¿ÿéð¾ÿéð¾ÿéð¾ÿêð½ÿëò½ÿíò½ÿìñ¼ÿÏÑ ÿÎÑ ÿêï»ÿìð»ÿìñ»ÿìð»ÿéî»ÿéî»ÿèî»ÿÍПÿÎПÿêï¼ÿêï»ÿêï»ÿíò»ÿïòºÿïòºÿìð¹ÿìð¹ÿíñ¹ÿÓÕ ÿÐÑÿæëµÿìð¹ÿìñºÿìð¹ÿíñºÿîò»ÿîò»ÿìð¹ÿïòºÿðòºÿñó»ÿÔÔžÿÿÔžÿòó»ÿòô¼ÿòó»ÿñó¼ÿñó¼ÿñó¼ÿñó¼ÿñó¼ÿñó¼ÿñô½ÿñô¾ÿÔÔ¡ÿÓÔ¡ÿæè´ÿðó¾ÿïò½ÿîò¾ÿïó¾ÿðô¾ÿðò¿ÿíñ¿ÿéî¼ÿêð¾ÿíñ¿ÿáå´ÿÌΡÿÏÒ¤ÿìð¿ÿìòÀÿëï¿ÿçí½ÿèî¾ÿéï¿ÿëðÀÿÓÖ©ÿÎÑ¥ÿÎÑ¥ÿÍϦÿÈÊ£ÿÆË£ÿÆË¥ÿÆÊ¤ÿÆË¥ÿÇ̧ÿÉͨÿÊΨÿÉΨÿÅʨÿÅ˨ÿßéÆÿßéÆÿãìÇÿäíÈÿäíÈÿãíÊÿâëÈÿãíÊÿåíËÿäìÌÿãíÍÿáëÌÿàëÎÿàëÏÿàìÏÿàìÏÿáìÐÿßëÐÿàìÒÿßìÑÿáíÒÿáîÓÿãîÓÿâîÔÿàíÔÿßìÕÿàíÖÿãïØÿäðÙÿáîÙÿÝëÚÿÙç×ÿ¼Ä›ÿÀÈÿÁÈÿÁǘÿÁÈ—ÿÂÈ•ÿÆË–ÿÇ̘ÿÈΘÿÈÌ”ÿÆÊ’ÿÉÌÿÈÊ‹ÿÈÌÿÅÇÿÊË‘ÿÌÌŽÿăÿÏ͈ÿÓЋÿÒÏ‹ÿÐψÿÐ͆ÿÊÆ‡ÿ»¹„ÿÁ†ÿÉÉÿÊÌŒÿÊÌÿÌÏ“ÿÌÓ£ÿÏÖ²ÿÈÓ²ÿÃÒÑÿÊÚÜÿÏàâÿÓåéÿ×êðÿÚíôÿØí÷ÿØìùÿ×íúÿÕìûÿÔëúÿÖîûÿÛóüÿÙòiüÿÐìûÿÊæùÿËçúÿÑëûÿÍéûÿÉæûÿÌéüÿÑíûÿÓîûÿÎêúÿÇç÷ÿÊé÷ÿÎëùÿÑíúÿÒîúÿÔîøÿÒí÷ÿÉåöÿ»Ùðÿ±Ôìÿ­Ðèÿ¥ÈÞÿž½Ôÿ—´ÉÿÁÑÚÿ„‘šÿˆ‘˜ÿÄÏ×ÿ™°Âÿ¦¿Ðÿ¸ÏÜÿÂÚåÿÂÝëÿÀÝìÿÃàïÿÈåóÿÍéöÿÐëøÿÒíöÿÓîöÿÌèöÿ¿ßôÿ¹Üôÿ¸Üöÿ·ÜõÿµÛóÿµÛóÿ¹Þöÿ¾áöÿÁãöÿ³Ùõÿ´Úõÿ±×ôÿ­Ôòÿ´Ùõÿ½á÷ÿ½á÷ÿ¸Üöÿ¹Üöÿ¼ßöÿÀâ÷ÿÁãøÿÀáøÿ¾ßùÿ»ÞøÿºÝöÿ¾ß÷ÿ¿â÷ÿÆåöÿÔê÷ÿÑèöÿÑèôÿÔìôÿÖíôÿÖìòÿ×ìòÿÕêðÿÏæìÿÎæêÿµÅÎÿ²ÂÉÿÏâãÿÐèêÿÌãèÿÇàæÿÇàåÿÊáåÿÎåäÿÐæåÿÐæäÿÏæàÿÛîâÿàñâÿÛíáÿ×êßÿÜíßÿÞïßÿÞðßÿØëÝÿÛíÝÿÛíÜÿÚìÛÿÞîÜÿáòÛÿàðÛÿÛì×ÿäðÚÿçñÙÿÎÔÁÿÅ˸ÿÖÞÇÿæðÕÿçòÕÿèñÕÿéòÔÿèñÒÿèñÑÿèñÐÿçïÎÿËϳÿÉαÿËαÿæíÊÿèðÎÿçïÍÿèðÍÿèðÌÿçðËÿêñËÿìóËÿîõÊÿËϬÿÇË©ÿÞåÀÿéðÈÿçîÇÿäìÄÿèïÇÿìòÇÿíóÆÿíóÅÿéðÃÿêïÂÿìñÄÿéîÀÿÏÒ¦ÿÑÔ§ÿïôÂÿíòÁÿèî¿ÿæîÀÿæîÀÿæí¿ÿåí¾ÿæî¾ÿèðÀÿÏÓ¥ÿÎÒ¢ÿæî¾ÿçî¾ÿåí½ÿãë»ÿæî¼ÿêò¾ÿêñ¼ÿèï¼ÿèî¼ÿèîºÿêð»ÿêð»ÿéïºÿÎОÿÌÏÿãè´ÿèîºÿéïºÿêð¹ÿêð¹ÿêï¹ÿêï¸ÿëñ¸ÿíò¸ÿíò¸ÿíñ¸ÿÑÒœÿÏÑšÿêî´ÿìð¶ÿíñ¶ÿìñ¶ÿëï¶ÿéîµÿçì´ÿÍÏ™ÿÎКÿêïµÿêïµÿêïµÿèí³ÿîòµÿñóµÿîñµÿëï³ÿëî²ÿÒÓ™ÿÕÖœÿêî³ÿëï³ÿëï³ÿêî²ÿíð´ÿîò´ÿîòµÿëï³ÿïòµÿðòµÿòó¶ÿÕÕšÿÿÔšÿðò´ÿïñµÿïñµÿïñµÿïñµÿðòµÿïñµÿðò·ÿðò·ÿðò·ÿðò·ÿÔÔœÿÓÓÿçê±ÿïò¹ÿîñ¹ÿìð¸ÿïñ¹ÿðòºÿñôºÿíñºÿéí¹ÿêî¹ÿìðºÿæê¶ÿÌΜÿÎПÿíñ¼ÿîò¼ÿíò½ÿêïºÿéî»ÿìð½ÿæë¸ÿÑÓ¢ÿÒÔ£ÿÒÔ£ÿÐÒ¤ÿË΢ÿËΣÿÊϤÿÊΣÿÌѦÿÎÓ©ÿÌѨÿÌѧÿÍÒ§ÿÎÓ¬ÿ×ݵÿãìÄÿáêÂÿäíÆÿèðÆÿèðÇÿæîÇÿåîÈÿæïÈÿèðÊÿèñÌÿèñÍÿçðÎÿäîÍÿâìÌÿãíÎÿäîÎÿåïÏÿåïÐÿãîÑÿâîÐÿåðÓÿçòÔÿçñÔÿèòÕÿæñÕÿãîÓÿâîÕÿåñÖÿçò×ÿæò×ÿãðÙÿÑÝÂÿÂÉ—ÿÉѦÿÈÏ¢ÿÇΜÿÈΛÿÇÍ™ÿÉΘÿÏÓ™ÿÒÕ™ÿÏÑ‘ÿÍÏ‘ÿÎГÿÑÓ•ÿÑÓ“ÿËÌŽÿÇÆ‡ÿÐÏÿÏχÿÓÎ…ÿÓɃÿÑǃÿÑËÿÐÊ„ÿÄÀ‚ÿÉÆ‡ÿÌÍŒÿÎÐÿÎÐŽÿÎÏÿËÏ‘ÿÌÒœÿÒÙ°ÿÏØ¯ÿ¸Ä§ÿÉ×ÖÿÏàßÿÔæçÿÙëîÿÛíñÿ×ìôÿÔêôÿÔéôÿÑéôÿÎçóÿÑéõÿÖíõÿ×îiõÿÌçõÿÃàòÿÅáôÿËåöÿÄàôÿ¿ÜòÿÄàôÿÌæõÿÐêõÿËçôÿÅâñÿÆãòÿÉåôÿËçôÿÍèõÿÏêôÿÎèñÿÄàïÿ¶Õéÿ­Ìäÿ¦ÇßÿžÀÕÿ–µÉÿŽ«¾ÿ¼ÊÔÿŒ”ÿˆ“›ÿÈÔÛÿ¤»Ìÿ¨ÃÕÿµÑáÿÆßìÿÊåòÿÅãóÿÈç÷ÿÊèøÿÎëûÿÔðÿÿÙôÿÿÚõÿÿ×òÿÿÑïÿÿÀäüÿ¾ãýÿ¼áûÿ¼áûÿ½ãüÿÁåþÿÂæýÿÄèýÿÅéüÿ¹ßúÿ³Úøÿ·Ýûÿºßýÿ»àýÿ¾ãþÿÄçýÿÁäûÿÂåúÿÂåùÿÁãøÿ¿àöÿ¾àöÿÀâöÿÃäõÿÄäôÿÀâôÿÄãóÿÛïöÿÜïõÿ×ìôÿÖëóÿÚîóÿÜîòÿÜíðÿÛîïÿÙìîÿ×ëëÿÀÏÖÿ¹ÆËÿÎÞÝÿÕëèÿÐççÿÉáãÿÈáâÿËâãÿÎæãÿÏçãÿÏçâÿÐåÝÿÙíáÿÞñáÿÜïàÿÚìÞÿÙìÜÿÜîÞÿßïÛÿØëØÿ×èØÿØê×ÿÜíÙÿàñÛÿáñÚÿáñÙÿßîØÿàíÖÿåð×ÿáëÏÿÇͶÿÈζÿåïÑÿéóÔÿêóÓÿéòÒÿêóÒÿëôÑÿëôÑÿÞåÄÿËϱÿÌϰÿÛá½ÿìóÌÿëóËÿêòËÿèðÉÿèðÉÿèðÊÿéðÈÿèðÈÿëòÇÿÌϨÿÊΧÿÝä»ÿçîÄÿèïÃÿèïÂÿåì¿ÿçî¿ÿìòÂÿíòÁÿéï¿ÿëðÀÿêð¾ÿêï½ÿÐÓ£ÿÒÓ£ÿðô¿ÿïó¿ÿíò¿ÿçî¼ÿçî½ÿæí»ÿæíºÿçî»ÿéï¼ÿÎÑŸÿÏÒŸÿêð»ÿæì¸ÿáé´ÿãêµÿäë¶ÿäë¶ÿçí¶ÿêï·ÿèî¶ÿéï·ÿéî·ÿéï¶ÿèíµÿÎÑšÿÏÒ›ÿéîµÿëñ·ÿëð·ÿìñ·ÿíòµÿìòµÿêð´ÿëð´ÿîòµÿîòµÿíð²ÿÒÓ˜ÿÒÓ˜ÿìð²ÿíð³ÿîñ²ÿîò²ÿíð²ÿëð²ÿéî±ÿÎÑ–ÿÐÒ—ÿëð±ÿëð±ÿëð²ÿéî°ÿîò²ÿðô²ÿïó±ÿíñ±ÿæéªÿÔÕ˜ÿÞà ÿíð±ÿìï¯ÿìï¯ÿíð±ÿðó³ÿðó³ÿðó³ÿîð²ÿîð±ÿðò²ÿðò²ÿÖÕ—ÿÿÕ—ÿñó²ÿñó²ÿòó²ÿñó²ÿñô³ÿòó³ÿòô³ÿóô´ÿóõ¶ÿóõ¶ÿóõ¶ÿÖÖ›ÿÕÖ›ÿìî±ÿðó¶ÿïòµÿîñµÿðò·ÿðó·ÿñô¶ÿðô¶ÿïó¸ÿêïµÿíò¸ÿìð·ÿÑÒœÿÎКÿëï·ÿïò¹ÿïò¹ÿêï·ÿìð¸ÿëï·ÿÜߨÿÒÒžÿØØ£ÿæé³ÿëï¹ÿìñ¼ÿçî¼ÿçî½ÿæí¼ÿæí½ÿçï¾ÿéïÀÿêðÀÿêñÁÿêñÁÿåíÁÿáê¾ÿäìÀÿåíÂÿæîÂÿçîÃÿéðÄÿçïÄÿçïÅÿçðÆÿçïÆÿäìÆÿãìÅÿäìÈÿäíÈÿäíÈÿâìÉÿãìÉÿãîÉÿäïËÿáíËÿâíËÿåðÎÿæðÏÿçðÏÿçñÑÿæðÓÿåðÒÿäñÔÿåòÔÿçòÔÿáìÑÿÌÖ­ÿÇÏ ÿÇÏ ÿÄʘÿÇΚÿËÑÿËÒÿÍÑ›ÿÒÖœÿÖÙœÿÖØ™ÿÓÕ”ÿÓÖ—ÿר˜ÿØÙ˜ÿÍÍŒÿ¼¶ÿļÿÍÈÿËÀ€ÿŸ~ÿ½®|ÿŸ~ÿÊÃÿÊÆ€ÿÉÆ‚ÿÈÆ†ÿÏÑŽÿÐÒŽÿÎÐŒÿÍÑÿËЙÿÏÕ¥ÿÐ×­ÿÇЫÿÄÓËÿÌÝÛÿÒãáÿÖéèÿÙìíÿÚïñÿÙîóÿÕìôÿÓêôÿÐéõÿÑéöÿÒì÷ÿ×ðiøÿÖïùÿÏëùÿÅäöÿÉæúÿÌéûÿËèûÿÅäøÿÉèùÿÓîûÿÓïûÿÌêúÿÌëûÿÌêúÿÏìüÿÔðÿÿØóþÿÖñûÿÑìùÿÈæöÿµÖîÿ®Ðéÿ¦Èßÿž¾Ôÿ—´ÈÿÁÐÚÿƒ‘šÿ†’›ÿÇÓÛÿ£»Êÿ¨ÃÕÿ³ÎáÿÃÜëÿÉäñÿÈæõÿÈæöÿÊè÷ÿÍêûÿÑíüÿÕñýÿ×òýÿÕñýÿÑîýÿÂäûÿ¾ãüÿ»àùÿ¹Þøÿ¹Þ÷ÿ¼àùÿ¾âùÿÁäøÿÃåøÿ»ßøÿ³Ùõÿ³Ùõÿ·Üõÿ¸Üöÿ¼ßõÿÀâôÿ¾àóÿÀáòÿÁâòÿÁáñÿ¾ßðÿ¾ßðÿ¾ÞïÿÀàîÿÃâíÿÂáïÿÄäîÿÜïóÿàñõÿÞðôÿÝïóÿÞðñÿáïðÿáïíÿàðíÿÝîìÿÛìêÿËÙÛÿ¿ÊÍÿÈÕÒÿÚìæÿÕéäÿÎäáÿÉâÝÿËâÜÿÍãÝÿÎåÝÿÐæÝÿÑåÚÿ×ëÜÿÝíÜÿÝîÚÿÛìÚÿØë×ÿÚì×ÿÝíÖÿÙëÔÿØéÒÿ×çÒÿÚéÓÿÝíÒÿßíÒÿßíÑÿÞíÐÿÞêÐÿáìÏÿãìÎÿÑÙ»ÿÄÊ®ÿÐØ¹ÿåïÌÿæïËÿæïÊÿçïÉÿçïÉÿèñÉÿÎÒ¯ÿÈ̪ÿÎѬÿæîÅÿéðÆÿêñÅÿêñÆÿéðÅÿçïÄÿçîÃÿçïÄÿéñÄÿíôÄÿÎѦÿÎÑ¥ÿãé»ÿçïÀÿëòÁÿëòÁÿéï¿ÿëñÀÿîó¿ÿïô¿ÿíò½ÿíó¾ÿîò¼ÿîò¼ÿÓÔ ÿÕ×¢ÿòõ¼ÿñõ¼ÿðô¼ÿêï¹ÿèï¸ÿçí¶ÿæí´ÿæì´ÿèî¶ÿÏÑ›ÿÐÒ›ÿêð¶ÿéïµÿæí³ÿæí³ÿçí³ÿèî´ÿéî´ÿêð³ÿéî±ÿéî°ÿêï±ÿéî°ÿèí¯ÿÎДÿÎДÿçë¬ÿéí®ÿèí®ÿéí®ÿéî­ÿéî­ÿéî­ÿéî­ÿêî¬ÿëî«ÿèé§ÿÑÑ‘ÿÒÒ’ÿéìªÿéìªÿëí©ÿìî©ÿëî©ÿèì©ÿæê¨ÿÍÎŽÿÎÏÿçë©ÿçì¨ÿèì¨ÿèë§ÿêí¨ÿìî¨ÿëî§ÿëí¨ÿßàœÿÐÐŽÿÞß›ÿéë¦ÿèë¦ÿçé¥ÿéì§ÿêí¨ÿëí©ÿéì§ÿéì§ÿêì¨ÿëí©ÿëë§ÿÒÑÿÒÑÿìî©ÿíî©ÿìî©ÿìí©ÿìî©ÿîïªÿîïªÿïð«ÿîð«ÿîï«ÿíð¬ÿÓÓ’ÿÓÓ“ÿéë©ÿíï­ÿìî®ÿëî¬ÿìî¯ÿíð¯ÿïñ¯ÿïñ¯ÿíð°ÿêî¯ÿéî°ÿêî¯ÿÑÒ—ÿÐÒ˜ÿëî²ÿíñ³ÿîò³ÿìð³ÿêî³ÿêî²ÿÕמÿÑÑ™ÿéì°ÿðó·ÿðó¸ÿîò¸ÿéî¶ÿèî¸ÿæì¶ÿæì·ÿåì¸ÿèîºÿèï»ÿéï»ÿéï»ÿçî»ÿãë¹ÿãë¹ÿåí»ÿæí¾ÿæî½ÿèï¾ÿæí¾ÿæî¾ÿçïÀÿçîÁÿæîÂÿæïÃÿåîÄÿæïÅÿçïÅÿåîÆÿåïÆÿåïÆÿæðÉÿåïÉÿåðÊÿåðÊÿçïÊÿèðÊÿéñÌÿçñÍÿåïÌÿäîÍÿæðÏÿçòÐÿÛçÂÿÌÓ ÿÇÐÿÅΡÿÄʘÿËÒœÿÑסÿÔÚ¦ÿÖÛ¦ÿÚÞ§ÿÝà¦ÿÜà¡ÿÛÝžÿÜÞŸÿÝߢÿÝà¡ÿÕÖ•ÿÆÆƒÿ¾½|ÿÆÁ}ÿÉÀ}ÿºª{ÿ¸¦zÿɾ}ÿÐÊ~ÿÆÀ}ÿÆÀ}ÿË̃ÿÒÓ‰ÿÒÓŠÿÓÔŒÿÒÔÿÍÒ”ÿÏÕžÿØß·ÿÐÙ³ÿÃÑÃÿÊÜÖÿÐáÜÿÔèäÿÙíêÿÛðîÿÚððÿ×íðÿÔëñÿÑêòÿÑëôÿÒëôÿkÙñõÿÙòøÿÓîùÿÊè÷ÿÈæøÿÍêúÿÍêúÿÇæùÿÉçûÿÒíüÿÔïüÿÏíüÿÌêûÿÌêúÿÍêûÿÑìûÿÔïûÿÓîùÿÐìøÿÊçöÿ¹Øïÿ°Òéÿ¦Èßÿž½Óÿ–³ÇÿÁÐÚÿ„’šÿƒ™ÿÅÑÚÿ ¸Èÿ¦ÀÒÿ¯ÊÜÿ¹ÕæÿÃÝìÿÈäñÿÆâôÿÆäõÿÈæöÿÌèøÿÒëùÿÔíùÿÔíùÿÑìùÿÅåùÿÀâùÿ»ß÷ÿ¹Üõÿ¸Ûöÿ»Þ÷ÿÀâùÿÃåúÿÅçúÿÃäúÿ¿áøÿºÝöÿ»Ýõÿ¿â÷ÿÄåöÿÄåöÿÅå÷ÿÇèôÿÉéöÿÊèôÿÉèõÿÇæóÿÅåóÿÆåñÿÈæðÿÉçðÿÈæíÿÞðôÿåóöÿæôõÿåôõÿåóóÿçóóÿéôòÿéõñÿæóïÿãñíÿÚéçÿÉÓÒÿÉÔÑÿàðçÿàñèÿÚîçÿÐèàÿÐèáÿÐèßÿÓéÞÿÔêÞÿÕêÜÿ×êÚÿÜíÛÿàñÚÿáòÚÿÞïÚÿÝîØÿàðØÿßðÖÿÝîÕÿÜìÔÿÜìÒÿßïÔÿáðÔÿãñÒÿäñÒÿâïÑÿãïÐÿäïÏÿâìËÿÊϰÿÈίÿãìÇÿèóÌÿéòËÿêòÉÿêóÉÿâéÀÿÊϨÿÊϨÿàç¼ÿèðÄÿëòÃÿëóÄÿêòÃÿéñÂÿéðÂÿçïÀÿèïÁÿéðÀÿìóÁÿÏÒ£ÿÎÒ¡ÿçí»ÿæí½ÿêð¼ÿëñ¼ÿéï»ÿèî¹ÿëñºÿîòºÿíñ¸ÿìï·ÿêïµÿéí³ÿÐÑšÿÔÔœÿîñ´ÿíð³ÿíð³ÿéî²ÿéî±ÿæì±ÿåê®ÿåê®ÿæë¯ÿÏÑ–ÿÏÑ–ÿèì®ÿêî¯ÿçì¯ÿæë®ÿæë­ÿéî¯ÿëï¯ÿëï¯ÿëï¯ÿêï­ÿëï­ÿëï¬ÿêï«ÿÐÑ’ÿÑÒ’ÿéíªÿëî«ÿëï«ÿìï¬ÿëï«ÿìð«ÿíð«ÿìð«ÿìï©ÿïðªÿêë¤ÿÖÕ‘ÿÙÙ”ÿîðªÿíð©ÿïñ©ÿïñ©ÿïò¨ÿîñ¨ÿìð¨ÿÒÒŽÿÒÓŽÿëï¨ÿëï¨ÿëï¨ÿìï§ÿìï§ÿîñ¨ÿðò¨ÿðó¨ÿàášÿÕÕÿèê¢ÿîñ¨ÿíñ§ÿìî¦ÿìî¦ÿíð§ÿîñ§ÿïñ¨ÿïñ¨ÿîð§ÿîð§ÿëì£ÿÕÔŽÿÕÔŽÿðñ¨ÿðñ¨ÿïð§ÿîð§ÿîð§ÿîð¦ÿïñ¨ÿïñ¨ÿïñ¨ÿíï¦ÿìî§ÿÔÒŽÿÔÓŽÿëì¥ÿìï©ÿìï©ÿëî©ÿìï«ÿìï«ÿîñ«ÿïñ¬ÿîñ¬ÿìï¬ÿèìªÿêí«ÿÒÓ“ÿÒÓ”ÿêí­ÿëï®ÿíð®ÿîð¯ÿëï®ÿëî®ÿÒÓ—ÿÒÓ–ÿïð±ÿïñ²ÿîñ²ÿîñ²ÿëï²ÿéî³ÿæì³ÿäê±ÿäê²ÿåë²ÿèîµÿêð·ÿëð¸ÿêï¸ÿèî¸ÿæì·ÿåë·ÿèîºÿêï¼ÿêï¼ÿéï¼ÿéð¼ÿêñ¾ÿêð¾ÿéï¿ÿçïÀÿæîÀÿæîÁÿæïÂÿæïÁÿåïÁÿåîÂÿåíÃÿåïÃÿäîÄÿãíÄÿæîÅÿçîÄÿèïÆÿçîÆÿâìÄÿáëÆÿâíÇÿãîÉÿâìÅÿÏÙ°ÿÃϤÿÍÚ¸ÿÆÎŸÿÏÕ£ÿÕÛ¨ÿÙÞ¬ÿÙݨÿÑÔ˜ÿÒÔ—ÿ×Ù›ÿÚÛÿÚÝŸÿ×ÙÿÐÑÿ¿À~ÿ»»xÿººxÿÿ{ÿÉÃ{ÿÇ¿|ÿÅ»{ÿÊÃ|ÿÁ¸{ÿ¿·zÿ»µ{ÿÍΆÿÕÕŒÿÕÖ‹ÿÔÕŒÿÓבÿÏÔ“ÿÎÔšÿÖÝ´ÿÒÚ²ÿÁϺÿÈÙÏÿÍÞÔÿÏâÞÿÖëäÿØîèÿØîìÿÕììÿÒêîÿÎèíÿÎèðÿÏèïÿkÓíðÿÔíðÿÓíòÿÌéòÿÂàñÿÉæôÿÊçóÿÆäóÿÄãóÿÉçõÿÏêöÿÏìöÿÊæöÿÈæõÿÈåöÿËç÷ÿÐèöÿÏèôÿÍåòÿÇãïÿ¹Øëÿ°Ðåÿ¦ÇÜÿ›ºÏÿ’¯Ãÿ¿ÍØÿ‚™ÿ‚Ž–ÿÂÎØÿž´Äÿ£½Ïÿ©ÄØÿ²Îâÿ½ØéÿÇáíÿÄàðÿÅáòÿÅàòÿÅâóÿÊäóÿÎçôÿÏæóÿÍçóÿÄâóÿÀàóÿ¹ÛòÿµØñÿ³×ñÿ¶Ùòÿ»Þôÿ¿ßôÿÀáôÿÃäóÿ¿àòÿ¹Úðÿ¸Ùîÿ¾ßñÿÂâðÿÀáðÿÃâïÿÄãíÿÇåíÿÈæîÿÇäíÿÅãìÿÂàëÿÁßéÿÅâéÿÈäèÿÇäçÿÝíðÿèóôÿêõòÿéôòÿæòðÿéòðÿêóïÿëôïÿèóìÿåïëÿäïêÿÑÛØÿÎÖÒÿØâÙÿãòçÿßðåÿÒèÜÿÍåÙÿÍäØÿÐå×ÿÒæÖÿÔçÕÿÑåÒÿÔæÑÿÛëÑÿÝíÏÿÙêÏÿØçÎÿÚèÌÿÛêÍÿÙèÌÿÖæÉÿÖåÈÿØæÇÿÚçÇÿÜéÆÿÞêÅÿÛçÅÿÛçÄÿÜçÄÿÝéÄÿÒÙ´ÿÃɤÿÌÒ«ÿâìÁÿãìÀÿãíÀÿäì¿ÿÏÕªÿÈÍ£ÿÑתÿäì»ÿâêºÿäìºÿäë¹ÿãê¸ÿâé·ÿàè¶ÿàçµÿßç´ÿáèµÿåë¶ÿËÍ›ÿÌΚÿæì´ÿáè³ÿæìµÿèíµÿèí´ÿçì´ÿèí³ÿìðµÿîñ³ÿëï²ÿëî±ÿçê¬ÿÐÑ•ÿÕÕ™ÿîñ±ÿïñ°ÿïò°ÿíñ¯ÿëð¯ÿèî­ÿçëªÿæëªÿçì¬ÿÒÔ•ÿÑÓ“ÿæê¨ÿìñ¬ÿìï¬ÿèíªÿèí©ÿëð¬ÿíñ¬ÿíñ¬ÿîò¬ÿîò¬ÿïó¬ÿïò¬ÿïó¬ÿÕÕ‘ÿÔÕ‘ÿìðªÿîòªÿîò©ÿîò©ÿíð§ÿîñ§ÿðó¨ÿðó¨ÿíð¦ÿðñ¦ÿçèÿÙ׎ÿÜÜ’ÿÿï¥ÿíï£ÿîð¤ÿïñ¥ÿñò£ÿðò£ÿîð£ÿÔÔŠÿÓÔŠÿêí¢ÿëí¢ÿìî¢ÿìî¢ÿêí¡ÿìî¢ÿïñ¢ÿðñ¢ÿÜÜÿÓÓˆÿëíŸÿîï¡ÿíî ÿêìŸÿéëžÿêìŸÿìí ÿìí ÿíî ÿìí ÿëì ÿãä˜ÿÔÓˆÿÕÓ‰ÿïï¢ÿîï¡ÿíî¡ÿíî¡ÿíî¡ÿíî¡ÿíï¢ÿîï¢ÿíî¡ÿíî¡ÿìî¢ÿÔÔ‹ÿÔÔ‹ÿíí£ÿîï¥ÿìî¤ÿëí¤ÿéì¢ÿéê¢ÿêí¤ÿíï¦ÿíï¦ÿìï¦ÿçê¤ÿæé¤ÿÒÒŽÿÔÔ’ÿçë§ÿêí©ÿìïªÿîðªÿíï«ÿìï«ÿÑÑÿÐÑ‘ÿêí©ÿïð¬ÿïñ­ÿïñ­ÿëï®ÿêî®ÿçí®ÿåé¬ÿäé­ÿåê®ÿçí±ÿéî²ÿèî±ÿéï²ÿéî²ÿåë³ÿåê²ÿèîµÿéïµÿéî·ÿéî¶ÿéî¶ÿéï¸ÿéï¹ÿéïºÿèï»ÿçî¼ÿåí¼ÿçî¼ÿçî½ÿçï½ÿäì½ÿäí¾ÿèð¿ÿçð¿ÿäí¿ÿèïÁÿêðÃÿëòÄÿêðÅÿæîÅÿäíÅÿåïÇÿçðÈÿÙâ²ÿÒÚ£ÿÌÖ¦ÿÊÖ¨ÿÏܸÿÇÏ›ÿÖÝ©ÿÜá­ÿÖÚ ÿÂÆ~ÿÄÆ~ÿÉÊÿÌÍÿËÍ„ÿÇÈ‚ÿÀÂzÿÀÂyÿÂÃyÿÆÆyÿ¿ºwÿ¼¶vÿÊÄ{ÿËÇ{ÿÌÊ{ÿ¾xÿÉÈÿÑІÿÕÖŠÿÙØÿØÚŽÿ×ÙŽÿÔ×ÿÒÖ•ÿÍÔ˜ÿÎÔ¢ÿ½Å“ÿ¸Ä¥ÿÄÕÉÿÈÙÏÿÉßÔÿÑæÞÿÓêâÿÕêæÿÓéçÿÏæçÿËäçÿËäéÿÊãêÿËçiíÿÑêíÿÔíîÿÑìïÿÁàíÿÆãñÿÊæòÿÇäòÿÃáòÿÈæôÿÎêöÿÓíöÿÍé÷ÿËç÷ÿÉæöÿÉçøÿÍè÷ÿÏèöÿÏçôÿËæñÿ½Üìÿ¶Ôæÿ¨ÇÝÿ›ºÏÿ‘¯Ãÿ¾ÍØÿƒ™ÿ‚™ÿÂÏÙÿ™´Æÿ¢¿Ñÿ«ÆÚÿ±Ïäÿ¾ÙíÿÈäñÿÈäôÿÈäöÿÉä÷ÿÉä÷ÿÌçøÿÏéùÿÔëùÿÔíùÿÍëùÿÇçøÿÀáöÿ¹Üòÿ¶Ùðÿ¸Úðÿ½Þòÿ¾ßðÿÀàñÿÄäðÿÃãïÿºÛìÿ¸Øêÿ¼ÜëÿÀßêÿÀßêÿÁàéÿÃáæÿÆãçÿÇäæÿÇãæÿÅàåÿÀÞâÿÀÜàÿÃßâÿÇâãÿÆáßÿÝììÿìõôÿíõóÿíõòÿëôñÿëóðÿíóïÿíóíÿìóìÿèñëÿåïèÿßéáÿÐ×ÒÿÑØÐÿÞéÝÿàíàÿÑäÒÿÈàÎÿÊàÎÿÌáÏÿÏãÎÿÐâÍÿÏàÊÿÑâËÿÙèÌÿÛëÊÿÚéÊÿØçÈÿÙèÈÿÜêÉÿÚèÇÿØçÆÿ×åÄÿØæÄÿÜèÇÿÞëÅÿàìÅÿÞëÅÿßêÄÿÞéÄÿßêÃÿáêÀÿÈϧÿÈÌ£ÿÛä·ÿåíÀÿåï¾ÿàé¹ÿÈÍ¡ÿËÏ¡ÿãë¸ÿçï¼ÿæîºÿçï»ÿèð»ÿéñ»ÿëò»ÿéðºÿçî¹ÿçî·ÿçî¸ÿèï¶ÿÏÑ›ÿÐÓ›ÿîóµÿèïµÿêð¶ÿëñ¶ÿëðµÿêï²ÿêï²ÿîò³ÿðó±ÿïò±ÿïò±ÿèé¨ÿÓÓ“ÿÙÙ˜ÿðò­ÿñó¬ÿñó¬ÿðó­ÿíò¬ÿëïªÿèí§ÿèì§ÿèì¨ÿר”ÿÒÓŽÿâäžÿíñ¨ÿíñ¨ÿêî§ÿéí¥ÿìï§ÿíð§ÿíð¦ÿíð¦ÿíð¥ÿîñ¥ÿîñ¥ÿïñ¥ÿÕÕŒÿÔÔ‹ÿëî¡ÿíð£ÿîð£ÿîð£ÿìï¢ÿìï¡ÿïñ£ÿïò¢ÿíï ÿïï ÿãá“ÿÚ׉ÿâá’ÿÿñ¡ÿïðŸÿïðŸÿïñ ÿñò ÿñò ÿðò ÿÖÖ‡ÿÕÕ‡ÿìïŸÿíð ÿïñ ÿïñ ÿîïŸÿíïŸÿñòŸÿòòŸÿÜÚŠÿ×Ö‡ÿïðžÿññŸÿïñŸÿíïÿìîÿíïÿïðŸÿðñŸÿññŸÿïñŸÿïðŸÿààÿ×Õ‡ÿ×Õ†ÿðñŸÿññŸÿñò ÿðñŸÿïðŸÿïðŸÿîðŸÿðñŸÿïñŸÿîïŸÿîðŸÿÖÕ‰ÿÖÕ‰ÿîð¡ÿïð¡ÿîï¡ÿíî¡ÿìí ÿìî¡ÿìí¡ÿíï£ÿðñ£ÿðñ£ÿêí¢ÿæè ÿÓÓÿ×Ù‘ÿëí¥ÿëí¥ÿîï§ÿïñ§ÿîð¦ÿíï¦ÿÕÔŽÿÒÒŒÿåæ ÿíï§ÿîð¨ÿîð©ÿíðªÿìïªÿéí©ÿçìªÿæêªÿæëªÿèí¬ÿêî­ÿëð°ÿìð°ÿëð°ÿèí¯ÿæì°ÿêï²ÿëï³ÿêï´ÿêî³ÿéî²ÿêð¶ÿëð¶ÿêð¶ÿéï·ÿçî·ÿæí¶ÿèï¸ÿèïºÿèïºÿæíºÿæî»ÿéñ¼ÿèð¼ÿæï½ÿéð¾ÿëð¿ÿíòÀÿìòÁÿêòÄÿæïÂÿçðÃÿèñÆÿ×ÝœÿÍÓ‘ÿÕÞ¨ÿÔß²ÿÕâ¼ÿÇЛÿÆÌŒÿÊÑÿÈ̇ÿÄÆ{ÿÅÆ|ÿÇÈzÿÆÆvÿÄÅxÿÁÃvÿÀÂwÿÅÆyÿÈÉyÿÊÉyÿÁÂtÿÅÆyÿ½·vÿÌÈwÿÎÌxÿÅÄuÿÄÄxÿר•ÿØÙ“ÿÙÙÿÚÜ“ÿÙÛ‘ÿÖ׌ÿÔ×”ÿÍÔ–ÿÄË“ÿ¨®yÿ´Á ÿÄÖÆÿÆÙÊÿÉÞÑÿÏåÛÿÒèßÿÔëãÿÔêãÿÐçåÿÌääÿÉâåÿÈâåÿÈâiçÿÍæéÿÔìëÿ×ïìÿÂàìÿÅãïÿÆåðÿÆæñÿÅãïÿÅãðÿÌçóÿÒìôÿÏêõÿÍçôÿÊåõÿÉäôÿËåôÿÌæôÿÏæóÿËåðÿÁÞëÿ¹×èÿ­ÊÞÿž¼Ðÿ“°Ãÿ¾Í×ÿ‚˜ÿ…‘šÿÂÏÙÿ˜³Çÿ¤¿Ôÿ®Éßÿ²Ïæÿ»×îÿÅâóÿÌæöÿËçùÿÌçûÿËæúÿÌçúÿÏêûÿÔìûÿÕïûÿÓïúÿÍìùÿÇèùÿÁä÷ÿ¿áôÿ¾áóÿÁâóÿÀãóÿÃåôÿÇèòÿÈçñÿÁãïÿ¾ßíÿÀàîÿÅäïÿÇçîÿÈçìÿÉçëÿËéëÿÍêéÿÎêèÿÍééÿÉææÿÆãäÿÈääÿËæäÿÌçãÿáñïÿóù÷ÿòù÷ÿòùöÿòùõÿñ÷ôÿñ÷òÿñ÷ñÿñ÷ïÿïöîÿíõíÿëóêÿßçàÿÙߨÿÚà×ÿçñãÿÚëØÿÐæÐÿÏåÏÿÑçÏÿÕèÐÿÖèÏÿÕæÎÿ×çÎÿÙêÍÿÞíÌÿàîËÿßíÊÿÝìÈÿßìÈÿÞëÈÿÛéÆÿÚèÄÿÚèÅÿÜéÅÿÞêÄÿàìÃÿáìÂÿàìÁÿßëÁÿàìÀÿáí¿ÿ×à´ÿÇÍ¢ÿÏÕ¨ÿåï½ÿåï¼ÿÕܬÿÊÏ¡ÿÙ߬ÿéñºÿéñ¹ÿèð¸ÿèð¸ÿêò¸ÿìò¸ÿëò·ÿëò·ÿêñ·ÿéïµÿéï³ÿéî²ÿÐÒ˜ÿÒÔ˜ÿðô±ÿëð±ÿéï°ÿéï¯ÿëð±ÿëð°ÿêï®ÿîñ¯ÿðó¯ÿòô¯ÿñó®ÿåç£ÿÕÕ‘ÿÜÜ—ÿðò©ÿòó©ÿóõªÿòõ©ÿðó©ÿïñ¨ÿíð§ÿëï¥ÿëï¥ÿÝÞ•ÿÓÔŒÿÚÚÿíð¤ÿíð£ÿëï¢ÿêí¡ÿêí¡ÿìï¢ÿíð¡ÿíï ÿíð ÿíï ÿîðŸÿïðŸÿÕÕ†ÿÔÔ…ÿëíœÿìîœÿíïœÿíïœÿíïœÿëî›ÿíîœÿîð›ÿîï›ÿïï›ÿÝÛ‰ÿÚÖƒÿæãÿñð›ÿñðšÿðð™ÿïðšÿòò›ÿòó›ÿòò›ÿØ×„ÿÖÖ‚ÿìî˜ÿíï™ÿîð™ÿíî˜ÿíî˜ÿíî˜ÿïðšÿññšÿÚØ‚ÿÙׂÿîî—ÿðð˜ÿïð˜ÿíî—ÿìí—ÿíî˜ÿíî˜ÿîî˜ÿïð˜ÿïð˜ÿîî—ÿØÖ‚ÿÖÕÿ×Õÿïð™ÿïð™ÿðñ™ÿïðšÿïðšÿîïšÿïðšÿïðšÿððšÿïð›ÿïðšÿ×Õƒÿ×Ö…ÿïðœÿïðœÿîï›ÿíïÿìíœÿìí›ÿìíœÿîïžÿïðžÿññŸÿíï ÿâä—ÿÓÔˆÿÛÜÿíï¢ÿëî¡ÿîï£ÿðò¤ÿðñ¤ÿðñ¥ÿÜÛ‘ÿÕÔ‹ÿâã˜ÿïñ¦ÿññ§ÿòô¨ÿòô©ÿïó©ÿíñ¨ÿëï©ÿéî§ÿéî¨ÿëï©ÿêï«ÿëð«ÿíð«ÿìñ¬ÿéî¬ÿèì«ÿéí­ÿêî¯ÿëð¯ÿëð°ÿëð°ÿìð±ÿìð±ÿëð²ÿêï³ÿéï´ÿçîµÿèïµÿèï¶ÿèï¶ÿçî·ÿæî¶ÿçî¸ÿèð¸ÿêï¹ÿéïºÿëï»ÿëð»ÿìð¼ÿêð¼ÿçî¼ÿåí»ÿäí½ÿÝä¯ÿÙá«ÿâì¼ÿÜçºÿÖâ¸ÿÊÓžÿÊÐŽÿÈ̇ÿÇÊ„ÿÉÌ‚ÿÊÍ‚ÿÊÌ}ÿÊÉyÿËË{ÿÉËzÿÊÌ}ÿÏÑ€ÿÏÏ~ÿÍÍ}ÿÊÊyÿÌÌÿÊÉ~ÿÍËzÿÊÉtÿËËvÿÊÊwÿÔÖÿÜߟÿÛÞ™ÿÜß›ÿÝß—ÿÛÜÿÔØ‘ÿÎÕšÿÀÈ‘ÿ¤ªwÿºÇ¬ÿÅÖÃÿÈÙÊÿËßÐÿÐæÙÿÔêÞÿÕìàÿÕìàÿÓéáÿÎæáÿËããÿÊâãÿkÉâäÿÌåæÿÑêæÿÖíçÿÇãèÿÂßæÿÀÞçÿÃàéÿÄàêÿÀÞéÿÅàëÿËåìÿÍæëÿÊäìÿÉâîÿÇáîÿÈáîÿÊãïÿËäîÿÉäìÿÃÞèÿ¹Õãÿ­ÊÛÿ¡½Ðÿ•±Ãÿ¿Í×ÿ‚˜ÿ‰•šÿÃÐÚÿ˜²Çÿ¥ÁÖÿ²Îáÿ¶Ôêÿ»×ðÿÃàõÿÍèøÿÍéúÿÎèüÿËæúÿÊåöÿÍæøÿÐè÷ÿÑëõÿÐìôÿËëóÿÉèóÿÄäòÿÀáðÿ¾ßîÿ¾Þíÿ½ÝëÿÁáíÿÃãìÿÅãëÿÃâéÿ¿Þèÿ¼ÜäÿÁàèÿÈæçÿÉåçÿÉååÿÉååÿÌçäÿÎéâÿÍèâÿËåáÿÉãàÿÇãßÿÉäÞÿËåÝÿâðëÿóùöÿñ÷õÿñøôÿñøòÿïõðÿïôîÿîõìÿîõêÿëóèÿéòåÿæðäÿâïáÿÓÜÐÿÎ×ËÿÒÛËÿÙêÓÿÓéÑÿÐçÏÿÑèÏÿÕéÍÿÕçÍÿ×èËÿ×çÉÿÖçÈÿÛëÉÿáïÇÿâïÇÿÞìÇÿÞëÅÿÜëÄÿÝêÃÿÜèÂÿÛèÃÿÛèÁÿÝéÁÿßêÀÿàì¿ÿßì¿ÿÞé¼ÿÝé¼ÿÝè»ÿÞé¹ÿÉТÿÇÌœÿÛâ®ÿáêµÿÈÍ›ÿÈÍšÿâê±ÿæî³ÿçï´ÿçï²ÿäì±ÿçî±ÿéï°ÿéï°ÿèï¯ÿçí®ÿæì­ÿåë¬ÿåêªÿÌÎÿÍÏ‘ÿëî¨ÿéî¨ÿæì¨ÿäé¦ÿçì§ÿèì§ÿèì¦ÿêí¦ÿìï¦ÿîð¦ÿîï¥ÿßà—ÿÓÓ‹ÿÝÝ“ÿîî¢ÿïð£ÿðð¢ÿïð¡ÿîð¢ÿíï¡ÿëîŸÿêížÿéìÿßá“ÿÑуÿÓÓ„ÿâã“ÿëí›ÿêí›ÿéì›ÿèê™ÿêì™ÿìíšÿëí˜ÿëí—ÿëí˜ÿìî˜ÿìî˜ÿÖÕ€ÿÖÔÿíî˜ÿìî—ÿíï—ÿîï˜ÿîð˜ÿîï—ÿíï—ÿïð—ÿðñ—ÿîí•ÿÙÖ€ÿÚ×ÿëéÿñð–ÿñð•ÿïî“ÿíî“ÿïï”ÿðð•ÿññ•ÿÚØ~ÿØ×~ÿîï•ÿîð•ÿïñ•ÿðð–ÿðñ–ÿññ—ÿðñ–ÿòò—ÿÞÜÿÝÛ€ÿîî’ÿòò—ÿòò—ÿòò—ÿðñ–ÿðñ—ÿðñ—ÿññ—ÿòò—ÿññ•ÿâà‡ÿÛØ€ÿÚØ€ÿÙØÿïð—ÿññ—ÿòò—ÿòó˜ÿññ—ÿïð—ÿðð—ÿññ—ÿòò—ÿòó˜ÿñò˜ÿØ×€ÿÙׂÿòò™ÿòò™ÿñò™ÿðñ™ÿîï˜ÿíî™ÿíî™ÿíî™ÿïðšÿññšÿïð›ÿßàŽÿÔÓ‚ÿÝÝŒÿìîœÿìîœÿëíÿíîœÿîïœÿíîœÿâá’ÿÔÓ…ÿ×ÖˆÿììÿííŸÿîïŸÿîïŸÿíïŸÿíï¡ÿëî¢ÿëî¢ÿéí¢ÿéì£ÿèì£ÿêî¦ÿëî¦ÿëï¦ÿëï¦ÿèí§ÿçë¦ÿèí¨ÿëð©ÿëîªÿêî«ÿêî«ÿêï¬ÿëð®ÿëð®ÿêï¯ÿéí¯ÿçí¯ÿæí°ÿçî°ÿçî±ÿæí²ÿæí³ÿèðµÿêñ¶ÿéî¶ÿêîµÿêî¶ÿëî¶ÿéï¸ÿèî¸ÿåì¸ÿâì¹ÿåíºÿäî¼ÿãìºÿÞè·ÿÙä·ÿÒܪÿÎÔ”ÿÌÑŒÿÊΉÿËΈÿÏÑŠÿÌ΂ÿÎÏ„ÿÔÔ…ÿÕÕ†ÿÓÔ„ÿÿÔ~†ÿÓÔ…ÿÒÓ‚ÿÑÑÿÒÓ†ÿÒÓ‚ÿÏÏzÿÉÈsÿÍÌwÿÏÏzÿÎÎ}ÿÍ΂ÿÌÎÿØÜœÿÜàžÿÚÜ–ÿÕÙ‘ÿÍÓ—ÿ·À…ÿ¬¸’ÿÂÒ¼ÿÅÖÁÿÉÜÇÿÌàÏÿËâÔÿÐçÙÿÕëÞÿÖìÞÿÓêàÿÏçáÿÌäáÿÊâáÿÈÿâhÿÉäâÿÎèæÿÖìæÿÒìçÿÆäèÿÁßæÿÅâêÿÉäëÿÆâìÿÆáìÿÊäíÿÑéíÿÎèíÿÌäîÿÉâíÿÇáëÿÉáíÿÌãîÿËåíÿÆáéÿ½Úäÿ³ÐÜÿ¥ÂÒÿ™´ÅÿÀÏØÿƒ™ÿŒ—›ÿÄÑÛÿ™µÉÿ§ÃØÿ¶ÑãÿºÖìÿ»×ñÿÂßöÿÎéùÿÏêúÿÎêüÿÌèûÿËèùÿÍéøÿÒìøÿÓíøÿÖïöÿÓïöÿÏíõÿÌëôÿÈçòÿÃåïÿÁâîÿÀáìÿÆæíÿÅåíÿÈçìÿÊèëÿÅäêÿ¿àæÿÄâçÿÏêèÿÎéçÿÌèåÿÎçãÿÎéâÿÒêáÿÑìàÿÒêàÿÎèßÿËäÞÿÉåÛÿÎæÛÿÓêÜÿÓèÝÿÍåÛÿÒçÛÿÜïØÿ×çÖÿÚèÕÿÛêÔÿÞìÓÿÝíÒÿÝìÑÿ×èÏÿÔåÍÿÓäËÿ¿Ì¶ÿ»Æ®ÿ½É±ÿÌÞÃÿÐäÉÿÑåÈÿÖçÈÿÔæÈÿÚéÈÿØéÇÿÔäÅÿØçÅÿáïÄÿäðÄÿàíÃÿÞëÂÿÝêÁÿÜêÀÿÜé¾ÿÛé¿ÿÜé¿ÿÝê¾ÿÞë¾ÿàì¼ÿßì¼ÿàë»ÿÝé¹ÿÞè¸ÿÞê¸ÿÚã°ÿÉΜÿÍÓŸÿÖÞ©ÿÉΙÿÑØ¢ÿèñµÿêò´ÿêò³ÿêð±ÿäì®ÿçî®ÿêð®ÿêð®ÿêð®ÿèï­ÿèî¬ÿæì«ÿæì©ÿÍÏÿÏÑÿíñ©ÿïó¨ÿêî¦ÿæê£ÿéí¥ÿëî¤ÿêí£ÿéì£ÿêí¡ÿíî¡ÿíî ÿÙÙÿÔÒ‡ÿßà‘ÿìíÿîïžÿïïÿïïÿïðÿîðÿíïœÿìíšÿéì˜ÿèê—ÿÕÕƒÿÔÔ‚ÿÔÓ‚ÿááŒÿëí–ÿêì—ÿçé”ÿéë”ÿìí•ÿìí”ÿìí“ÿìí“ÿìí“ÿîí“ÿ×Õ|ÿØÕ}ÿìí’ÿìí‘ÿëì‘ÿíí’ÿíî’ÿîî’ÿêì‘ÿîî“ÿññ’ÿçå‰ÿÚÖ{ÿÜ×|ÿñîÿòð’ÿòñ‘ÿðïÿîîÿîîÿðð‘ÿððÿÚØzÿÙ×zÿìíÿìîÿïïÿïï‘ÿðð‘ÿïï‘ÿííÿïîÿßÝ~ÿÝÚ{ÿæä…ÿððÿððÿðð‘ÿðð‘ÿïð‘ÿïï‘ÿïï‘ÿëëÿÝÜÿàà‚ÿãá„ÿØ×zÿØÖ{ÿíî‘ÿðð’ÿññ’ÿññ’ÿðð’ÿïï’ÿïð’ÿòò“ÿòò“ÿòò“ÿññ”ÿ×Ö|ÿÙ×}ÿññ•ÿññ•ÿðñ•ÿïð•ÿîî•ÿíî–ÿíî–ÿìî•ÿïð—ÿñò˜ÿóó™ÿÜ܇ÿÕÕ€ÿââÿððšÿïðšÿîï›ÿïð›ÿñò›ÿñòœÿîîšÿØ×†ÿ×Ö„ÿÞÞÿðñžÿòò ÿòó ÿòó¡ÿðò ÿïò¡ÿîð¢ÿìï ÿëï¢ÿêî¡ÿíñ¤ÿíð¤ÿíð¥ÿîð¦ÿìð¦ÿéì¥ÿëî§ÿïñ¨ÿíñ¨ÿìð§ÿíï¨ÿìð©ÿìð©ÿìñªÿìð«ÿêï¬ÿéí¬ÿçí¬ÿèî­ÿèî­ÿçì®ÿäë®ÿçí¯ÿëð°ÿéí±ÿéí±ÿêî²ÿëï³ÿêð´ÿêð·ÿçî·ÿäìµÿãì¶ÿäí·ÿäì¶ÿàëµÿÜæ¶ÿ×â³ÿÏמÿÓ×–ÿÔØ•ÿÖÙ–ÿÖÙ•ÿÑÕÿÔÖÿÛÛŽÿÝÝŽÿÚÚŒÿØÙÿר‹ÿרˆÿÙÜ”ÿØÚ“ÿÒÒÿÔÓ{ÿÓÔÿÖÖƒÿÖÖƒÿÒÒ}ÿÎÏxÿËËuÿÑÖÿÜâ¨ÿÛàŸÿÙÝšÿÉÑ•ÿ©°}ÿºÊ°ÿÄÔ¼ÿÆÙÀÿËÝÆÿÐâÎÿÉàÑÿÎåÖÿÓéÙÿÔêÛÿÒéÝÿÌäÝÿÇáÛÿÆßÛÿkÅÞÜÿÄßÜÿÈãàÿÑéâÿÖîãÿÉãâÿ¿ÝáÿÅáåÿËåçÿÈâçÿÄßèÿÇâéÿÐèéÿÏçéÿËäêÿÈáêÿÇáêÿÈâëÿËãëÿÈâèÿÆßäÿ¿Øßÿ´Î×ÿ¨ÁÍÿ›³ÁÿÁÏÖÿƒ˜ÿˆ“™ÿÇÒÙÿœµÅÿŸ¹Îÿ©ÄÛÿ¸Òåÿ»×ëÿ¸ÖðÿÀÞóÿÅàôÿÈãõÿÆäõÿÅâóÿÆãòÿËçóÿÐëñÿÔëðÿÕìïÿÒëíÿËæìÿÆäêÿÆäêÿÄãéÿ½ßæÿÁáèÿÅåèÿÈæçÿÉååÿÅâåÿÆâäÿÈããÿËäâÿÎçáÿÌåàÿÌäÞÿÏèÞÿÔêÝÿÓêÜÿÒéÛÿÑéÚÿÌãØÿÌä×ÿÐæÙÿÓêÙÿÒçØÿÍæ×ÿÑç×ÿ×ì×ÿàðÖÿÚëÕÿØêÒÿÞíÒÿáñÒÿàïÑÿÜíÐÿÞíÏÿÙêÌÿ×èÊÿÊÖ¸ÿ½É¬ÿ½Ç¬ÿÆÕ¹ÿÓåÅÿØèÇÿ×èÆÿØèÄÿ×èÂÿ×çÁÿÙçÀÿÜêÀÿáíÀÿäð¿ÿÞì½ÿßì½ÿÝì½ÿÛê¼ÿÙèºÿØç¸ÿØç·ÿÚé·ÿÞë¶ÿßìµÿàê´ÿÝé³ÿÛæ±ÿÙå°ÿÜæ±ÿÎÕŸÿÈÍ”ÿÆË“ÿÅÊ’ÿÓÚžÿáé©ÿâê¨ÿâê¨ÿäé§ÿâè¦ÿàæ¤ÿáç£ÿãé¤ÿåê£ÿäé£ÿãè¢ÿåê£ÿâç ÿÊ̇ÿÌΈÿæê ÿêí¡ÿêí ÿéì ÿçêžÿèëŸÿëìžÿêìÿèê›ÿêìœÿéê™ÿÔÓƒÿÔÓƒÿâáÿëì™ÿíî™ÿïï™ÿïï˜ÿðð˜ÿðð˜ÿîï˜ÿíî–ÿìî–ÿìî•ÿäæÿ×Öÿ×ÖÿÙØÿÜÛ‚ÿêêÿîï•ÿðñ•ÿññ•ÿòò•ÿññ”ÿññ’ÿòò“ÿóò“ÿÝÚ|ÿÛÙ{ÿñðÿïîÿïïŽÿðïÿðñÿððÿîîŽÿðïŽÿòðŽÿâÞ}ÿÜÙyÿàÜ|ÿóðÿôòÿôòÿòñÿóñÿñðŒÿñðÿòñŒÿÞÛwÿÝÙwÿïïŠÿïîŠÿïïŠÿîî‰ÿîî‰ÿîî‰ÿííˆÿííˆÿâß|ÿÛ×tÿÜÙvÿëê†ÿîí‰ÿíí‰ÿííˆÿììˆÿëë‡ÿáá~ÿÙ×tÿåäÿîîŠÿíìˆÿÙ×vÿØÖvÿêê‰ÿíí‹ÿîî‹ÿïï‹ÿîï‹ÿîîŒÿîïÿïïÿïïŒÿïïÿïïÿÚ×wÿ×ÕwÿììŒÿîíÿîîŽÿííÿëìÿìíŽÿêêÿêëŽÿëíÿíî‘ÿîî‘ÿÚ×}ÿØÖ|ÿäã‰ÿíí”ÿðï”ÿïï•ÿìí”ÿíî•ÿïî•ÿîî•ÿåäÿÖÔÿÖÔÿÚÙ„ÿéé’ÿðð—ÿðð˜ÿðð˜ÿíî™ÿëì™ÿêì˜ÿéì™ÿçë˜ÿèìšÿêíœÿêíœÿëíÿéìžÿêížÿêìŸÿêìŸÿêìŸÿëí¡ÿêì¡ÿêí¢ÿìî£ÿëî¤ÿêî¤ÿéí¤ÿçê¤ÿåé£ÿæê¥ÿæê¥ÿäé¦ÿãé§ÿäé©ÿæìªÿêíªÿçë«ÿåé«ÿèí­ÿêî®ÿéí°ÿçí±ÿçì²ÿãé±ÿâê²ÿäë²ÿäì±ÿáé²ÿÛæ³ÿØã±ÿÔÛ¥ÿÑÕ“ÿ×Ú•ÿÙÛ˜ÿ×Ú•ÿÖØÿÖØÿÚÛŒÿÜÝŽÿÚÛŽÿÙÚÿÕׇÿÚÞ›ÿ×Û—ÿÐÓ‚ÿÒÓ~ÿÕØ…ÿØÚˆÿØÚ‡ÿÖ׆ÿÑÔ„ÿÍÑÿÏÔŒÿÙàªÿÙà§ÿÖÝÿ¶¾ƒÿ¦°‡ÿ½ÎµÿÁÒºÿÄÖ¾ÿÉÜÄÿÏãÍÿÏäÑÿÎãÓÿÍåÕÿÐç×ÿÒèÙÿÌäÙÿËãØÿÊäÛÿkÃÞÚÿÂÞÚÿÅáÞÿÈäáÿÒìâÿÑëãÿËåâÿÃàáÿÆáåÿÎççÿÌæçÿÄàæÿÉåèÿÌåêÿÍæìÿÊæîÿÈãíÿÇãìÿÊäìÿËåêÿÊáæÿÇÝáÿ½ÔÙÿ­ÅÏÿŸ¸ÄÿÄÑ×ÿ…‘™ÿ†‘—ÿÅÑØÿžµÄÿ ¹Ìÿ¨ÃØÿ³Ïáÿ¹Õçÿ¹×ìÿ¿ÝîÿÄáñÿÈãñÿÇãñÿÄáðÿÃáïÿÇäðÿÌçðÿØíïÿÚíîÿ×ììÿÐéëÿÍçêÿÍèêÿÈæèÿÂâæÿÃãæÿÅæèÿÇççÿÊèæÿÊæåÿÊåäÿÍæãÿÏèäÿÔíãÿÒëâÿÑêàÿÒëàÿØîßÿÚñÞÿÙðÝÿÖíÝÿÓëÚÿÑéØÿÒëÙÿÕìÚÿÕìÙÿÔêØÿÔéÖÿØìÖÿÞðÔÿÝíÓÿÛìÑÿßïÑÿâñÐÿâðÏÿàðÎÿßïÍÿÜìÌÿÛêÊÿÜíÉÿÕäÁÿÄϯÿ»Æ¨ÿ¼Æ¨ÿÈÔ´ÿÔâ¿ÿØèÂÿÙéÁÿÙéÀÿÚé¿ÿÝë¾ÿàî¾ÿåð½ÿàî¼ÿàí»ÿßíºÿÜë¹ÿÙè¶ÿØç·ÿÙé¶ÿÛê¶ÿÞëµÿàì´ÿáì²ÿàë±ÿÝè°ÿÛç¯ÿÝè®ÿÔÝ£ÿÈÍ‘ÿÈÍ’ÿÈÍ’ÿÙá¤ÿâëªÿãì©ÿåì©ÿçí¨ÿæì¦ÿäé£ÿãê¢ÿæë¤ÿçì£ÿæë¢ÿåë£ÿçì¢ÿãéžÿÌÎ…ÿÎχÿæêžÿêíÿëíÿêíœÿèêšÿèëšÿêìšÿëíšÿêìšÿëí™ÿââÿÕÓ€ÿÕÔ€ÿææÿìí—ÿìí–ÿíí”ÿðð•ÿðï“ÿïî’ÿîî’ÿÿî’ÿîî’ÿíî‘ÿëí‘ÿãäˆÿ×Ö{ÿ×ÖzÿØÖzÿ×Õyÿ×ÕxÿÙ×zÿììŒÿïîÿííŒÿîíŠÿïîŒÿðîŒÿÛØwÿÛØvÿïîŠÿííˆÿìì‡ÿíìˆÿïíˆÿïî‰ÿîí‰ÿîíˆÿëéƒÿÜØsÿÛ×sÿáÝxÿðî‡ÿòï†ÿòð‡ÿòï‡ÿñî†ÿïî…ÿïí…ÿðî†ÿÜØrÿÜØrÿïî†ÿìì„ÿíì„ÿìì„ÿíí„ÿîí„ÿíí„ÿîí„ÿêèÿÜØpÿÝÙqÿÞÛtÿëé€ÿðï…ÿîî…ÿåå}ÿÜÚtÿÛÙsÿççÿîî…ÿïï†ÿðï‡ÿÛØrÿÚ×rÿìì†ÿîîˆÿîîˆÿððˆÿïïˆÿïï‰ÿîî‰ÿîï‰ÿïî‰ÿðð‰ÿðïŠÿÛÙuÿÚØuÿîí‰ÿðïŠÿðï‹ÿïî‹ÿîîŒÿîîŒÿêëŠÿêëŠÿìíÿíîŽÿçå…ÿÛØyÿÚØyÿççˆÿîîÿïð‘ÿðï‘ÿîî’ÿîï’ÿðï“ÿðï“ÿïï“ÿåå‹ÿÙ×ÿÙ×ÿÙ×€ÿãà‡ÿëéÿïî”ÿïð—ÿïð™ÿïð™ÿîð˜ÿìî™ÿêí˜ÿìîšÿëîšÿíî›ÿìîœÿìîÿíîÿíîžÿîïŸÿíï ÿìî ÿìï¡ÿîð¢ÿïñ£ÿíð£ÿìï¤ÿêî¤ÿèì£ÿéí¤ÿêî§ÿéî¨ÿèî¨ÿèí©ÿêîªÿìðªÿëï«ÿêîªÿëð­ÿíñ®ÿëð®ÿêî®ÿéî¯ÿæì°ÿæì±ÿåì±ÿæì±ÿäì²ÿáê³ÿÞè´ÿÝæ´ÿØá¬ÿÎÔ›ÿÕØ”ÿØÜ•ÿÚÝ“ÿÙÜÿÞß’ÿàâ”ÿÞà“ÿÛÞ’ÿØÛÿ×Ü“ÿ×ܘÿÖÛ”ÿ×ÜÿÙÜŒÿÛß‘ÿÝá”ÿÜà”ÿÚÞ”ÿÖÛ”ÿÓØ’ÿÑ×”ÿÐדÿÁƃÿ›¡lÿ°¿ÿ¼Î´ÿ¾Ñ¸ÿÄ×¾ÿËÞÅÿÐäÌÿÒæÑÿÐåÒÿÏçÔÿÓé×ÿÓèØÿÏæÙÿÌåÚÿÍæÛÿÄàiØÿÄàÚÿÃàÝÿÆâÞÿÒêßÿÒëáÿÏèâÿÇâßÿÇâáÿËæãÿÌæäÿÆâæÿÊååÿÌççÿÍçèÿËåéÿÇâèÿÄàçÿÄàæÿÅÞäÿÌààÿÊÛÝÿ¾ÓÕÿ°ÇÍÿ¤ºÂÿÇÓÖÿ†“—ÿ†’™ÿÇÓÙÿ£»Çÿ¦ÁÑÿ«ÈÜÿ´Ñåÿ»ØéÿÀÝíÿÂßïÿÆãðÿÊçñÿÊåðÿÇãïÿÅâîÿÅâìÿÇãëÿÕìêÿØìéÿÖëéÿÓéèÿÐèçÿÎèæÿËçåÿÆäãÿÅâãÿÅââÿÆããÿÈåâÿËæâÿÍæáÿÌäßÿÌäßÿÒéÝÿÒéÛÿÒçÙÿÏæØÿÔé×ÿÙíÖÿÙíÖÿÔêÔÿÔéÓÿÏæÒÿÍäÑÿÒçÒÿÕèÒÿÕèÑÿÕèÐÿÔèÏÿÜìÏÿÝìÎÿÝìÍÿÝíÌÿßïÌÿáðËÿâñËÿßîÉÿÛìÈÿÙêÇÿÚéÆÿÝíÆÿÞìÃÿÒáºÿÆÑ­ÿºÅ£ÿ¼Å¢ÿÀ˦ÿÉÕ®ÿÐܳÿÕâµÿÙæ¸ÿÞê¹ÿàí¹ÿÝè´ÿ×á®ÿÎצÿËÖ¤ÿÙç´ÿ×ç³ÿÙé´ÿÜê³ÿÝë³ÿàì²ÿáì±ÿáì¯ÿßé­ÿÝç¬ÿÝç«ÿÔÝ¢ÿÈÍÿÊÎÿÍÑ’ÿßç¥ÿÞæ¤ÿâé¥ÿäë¤ÿæí¤ÿçì¢ÿåê¡ÿåë¡ÿæì ÿèí¡ÿèì¡ÿçì ÿèíŸÿæëŸÿÏÑ…ÿÑÓ‡ÿæê›ÿêíšÿìîšÿìï™ÿêí™ÿéë—ÿëí˜ÿìí—ÿìî—ÿíí–ÿÛÙƒÿÙ×ÿÙÖÿëì’ÿîî”ÿíí’ÿíí‘ÿòð‘ÿòð‘ÿñð‘ÿðïÿðïÿðïÿïïŽÿíîŽÿîîŽÿèè‡ÿÞÝ|ÿÙ×wÿÚØxÿÛØwÿãà~ÿðï‹ÿñð‹ÿñðŠÿñð‰ÿñï‰ÿòð‰ÿêèÿåâ{ÿòð‡ÿòðˆÿñï†ÿðî…ÿñð…ÿòð†ÿòð†ÿñï†ÿãàvÿÞÚpÿÞÚpÿàÜqÿóðƒÿôñƒÿôñƒÿôñƒÿóðÿñïÿðïÿñï‚ÿÞÚoÿÞÚoÿñïÿðîÿïíÿðîÿðïÿðî€ÿïî€ÿïí€ÿïí€ÿçåwÿÝÙmÿÝÙmÿÝÙmÿÝÙmÿÛØmÿÙÖlÿßÜqÿêê~ÿíí€ÿííÿîîÿïîÿÜÙnÿÛØnÿíì€ÿìë€ÿììÿïîÿïî‚ÿïîƒÿííƒÿííƒÿîî„ÿðï„ÿñï…ÿÝÙqÿÝÚrÿîí„ÿïî…ÿðî†ÿðî†ÿîî†ÿîî†ÿíì†ÿìë†ÿëë‡ÿëëˆÿÝÚvÿÜØvÿÜØvÿëê‡ÿíí‰ÿîîŒÿïïŒÿîîÿÿîŽÿïîŽÿððŽÿðïÿïïÿììÿáà„ÿÚØ|ÿÛØ{ÿÛØ|ÿÚ×|ÿÚ×}ÿÙÖ~ÿÙÖ~ÿØ×~ÿÖÕ~ÿÖÕ~ÿ×Ö€ÿëí—ÿìî˜ÿíï™ÿíîšÿíîšÿíî›ÿïð›ÿïðÿðñŸÿïñ ÿðñ ÿñó ÿñó¡ÿïñ¢ÿïñ£ÿìï£ÿêî£ÿëï¥ÿìï¦ÿìð§ÿëï¨ÿêï¨ÿíñ¨ÿíñ©ÿìð©ÿëïªÿìñ«ÿíð¬ÿìð«ÿéî¬ÿçí¬ÿäë­ÿäê®ÿåì¯ÿåí°ÿãë±ÿßé±ÿÜæ°ÿÛå°ÿØâ¬ÿÐלÿÑ×™ÿÐÖ”ÿÍÒ‰ÿÕÖ‰ÿÛÝ‘ÿÚÜ“ÿØÛ“ÿÕÙ’ÿÐÔ‹ÿËÑ…ÿÊЋÿÐÕ’ÿÐÖŽÿÔØŽÿ×Û‘ÿ×Û“ÿ×Û”ÿÓØ“ÿÏÔ“ÿÎÕ”ÿ¸¿}ÿ ¤iÿ¨±…ÿºÉªÿ¸Ê°ÿ¸Ì²ÿÁÕ»ÿÊÞÄÿÍâÇÿÑäÊÿÎâÍÿÌâÍÿÍãÏÿÑæÒÿÏåÔÿÌäÖÿËä×ÿÅßiÖÿÄß×ÿÁÞØÿÁÝØÿÌæÙÿÑêÜÿÑêÞÿÊãÝÿÅàÝÿÈãáÿËåãÿËåäÿËääÿÌæåÿÎèçÿÍçèÿÉäèÿÅáçÿÂßäÿÂÝáÿËàÞÿÉÛÚÿ¾ÒÑÿ²ÆÈÿ¨½¿ÿÈÔÕÿˆ”—ÿ„‘—ÿÇÓÙÿ¥¼Æÿ©ÃÐÿ¬ÇØÿ²Îáÿ»ÖèÿÂÞëÿ¿ÜìÿÄáíÿÉäîÿÌçïÿÉæïÿÆäíÿÆãëÿÇâêÿÒèëÿ×ëêÿØíéÿ×ìèÿÑëèÿÏèçÿÍèæÿËèåÿÉåãÿÇåãÿÇäâÿÉæãÿÐéâÿÑéàÿÏæÞÿÌåÝÿÑçÜÿÕëÚÿÖëÙÿÑæ×ÿÒçÔÿ×ëÔÿÚíÓÿ×ìÒÿØìÑÿÓçÐÿÎäÍÿÏäÎÿÕèÏÿ×éÍÿÔçËÿÒäÊÿÖçÉÿÛêÉÿÜëÈÿÚêÇÿÛëÆÿÞíÄÿßìÃÿÜéÂÿÛéÀÿÖæ¿ÿÔä¾ÿ׿¾ÿÙé¼ÿÚè»ÿÖå»ÿÑà¸ÿÌÙ±ÿÅѨÿÂË¡ÿ¼Ä›ÿ»Ã—ÿ½Ä—ÿ¿Æ—ÿÁÈ—ÿÂÈ•ÿÃÊ–ÿÃÉ”ÿÂÊ–ÿÕã¬ÿÔã¬ÿÖä­ÿØå¬ÿÚæ«ÿÝè¬ÿàê«ÿàêªÿßé©ÿÝç¨ÿÛå¦ÿÕÞŸÿÇÌÿËÏÿÝäŸÿàé£ÿßç¡ÿâê¡ÿåë¡ÿåë ÿéí¡ÿçìŸÿæëÿçëœÿéíÿêíœÿèíœÿéí›ÿéì›ÿØÛŠÿÝßÿçë˜ÿéí—ÿîï—ÿïð–ÿíï–ÿëí”ÿëì“ÿîî”ÿïï“ÿáá‡ÿÙ×}ÿÙ×}ÿÚØ|ÿðï‘ÿïïÿîîÿîîÿòðŽÿòðÿóñÿòðŒÿñð‹ÿðî‹ÿðïŠÿïïŠÿîîˆÿííˆÿíì†ÿæåÿßÜvÿÞÛtÿíëƒÿïî…ÿðî…ÿñï„ÿñï„ÿñïƒÿñïƒÿóðƒÿóðƒÿóð‚ÿóð‚ÿñïÿïíÿñî€ÿóðÿóðÿòïÿåátÿàÛmÿâÞoÿìçwÿóð~ÿóð~ÿôñ~ÿôð~ÿóï}ÿòï}ÿðî|ÿðí|ÿàÜmÿéåtÿòï}ÿðî}ÿðí|ÿñî}ÿñî}ÿñî}ÿòï~ÿñî}ÿòï}ÿóð~ÿíêxÿãßmÿâÞlÿåáoÿæãrÿëéxÿïî}ÿïî~ÿïî~ÿïï~ÿñðÿòðÿáÝnÿåâsÿñï€ÿîî~ÿìì}ÿðïÿòñÿòñÿðï€ÿîíÿïï€ÿñðÿñïÿåâtÿèåxÿðïÿñïÿòðƒÿóñƒÿòðƒÿðð„ÿðï„ÿïï„ÿîî„ÿãá{ÿÛØqÿÞÛsÿßÛsÿñï‡ÿïî‡ÿïî‡ÿðï‰ÿñïˆÿÿï‰ÿðï‰ÿñð‹ÿñðŠÿðïŒÿïïÿîîŒÿîîÿîë‰ÿ鿆ÿåâ‚ÿàÝ}ÿÜØ{ÿÛØ|ÿÚØ|ÿÚÙ}ÿÙØ}ÿäã‰ÿîï“ÿïð•ÿðð–ÿðð—ÿïï–ÿîï—ÿðð™ÿðñšÿññ›ÿïðœÿîð›ÿðñœÿðñœÿïñÿðñÿìïÿêíÿêíŸÿìï¡ÿíï¢ÿìï£ÿêí¤ÿìï¥ÿîð¦ÿîñ§ÿíð¨ÿíñ¨ÿíò¨ÿíñ©ÿëðªÿéïªÿæíªÿãê«ÿåí¬ÿæî­ÿåì­ÿãë®ÿÞè®ÿÞç­ÿÝç­ÿÛä¬ÿ×â©ÿÓÝ¥ÿÒÛ¤ÿÉÏ‘ÿÒÖŒÿßãšÿÞã›ÿÚß•ÿÎÓ‡ÿ¿Çƒÿ½Ê˜ÿÂÌÿÒÛ”ÿÕÚ’ÿÙÞ—ÿÛߘÿÚÞ˜ÿ×Û•ÿÑÖ“ÿÂËŽÿ¡§jÿ¬¶ˆÿ¾Í«ÿÁѯÿ½Î°ÿ¼Ï´ÿÃ×»ÿÊÝÃÿÌàÆÿÓçÉÿÐãÊÿËâÊÿÌáÌÿÏäÎÿÐåÏÿÌäÑÿÊáÑÿÈáiÒÿÅÞÑÿÁÛÑÿÀÚÒÿÇßÒÿÍåÖÿÑæÖÿÉáÖÿÃÜ×ÿÂÜÙÿÆÞÚÿÉáÛÿÃÜÛÿÆàÝÿÉâÞÿÉáÞÿÆßÞÿÀÛÝÿ½ØÛÿ»ÔÙÿÁÕÖÿÁÒÑÿ¼ÏÍÿ³ÅÄÿ¥ººÿÇÑÓÿˆ’“ÿƒ—ÿÆÓØÿ¦¼Äÿ¬ÄÏÿ¯ÉØÿ³Ïßÿ¼×åÿÅàêÿÀÝìÿÃàìÿÈäìÿËçíÿÊçìÿÉåëÿÇäéÿÈãæÿÌâäÿÔèåÿÙìäÿ×ìãÿÐéâÿÉãÞÿËåÞÿÐèÞÿËäÜÿÆâÛÿÆßÚÿÇáÚÿÎåÚÿÐçÙÿÏåØÿÌáÖÿÌâÕÿÖèÕÿÙìÔÿÕéÔÿÒåÑÿÔçÑÿÙìÐÿÜìÏÿÛìÎÿÖèÍÿÑäÉÿÑäÊÿÕçÊÿÙêÊÿØèÉÿÓåÇÿÕåÄÿÚèÆÿÛéÃÿØèÂÿÙéÁÿÝìÁÿÝë¿ÿÛê¿ÿÞì½ÿÚè½ÿ׿»ÿ׿»ÿÜê½ÿÝë»ÿÛé»ÿÖæ¸ÿØç¹ÿØè¸ÿÚê¹ÿÜé·ÿ×ã²ÿÔà¬ÿÓÝ©ÿÓܦÿÓÚ£ÿÑמÿËÒšÿÈÏ™ÿÜê¯ÿÚé¯ÿÙè­ÿÜê®ÿÞë­ÿâí­ÿãî®ÿåð¬ÿæï¬ÿäîªÿáê©ÿÕÝ›ÿÈÍŒÿÙÞ™ÿçï¥ÿçî¦ÿåí£ÿåí£ÿèï£ÿèï¡ÿíñ¢ÿíð ÿêïŸÿêîœÿìðžÿíñÿìðœÿëï›ÿëï›ÿêî˜ÿéí—ÿéì–ÿêí”ÿïñ–ÿñò”ÿïñ”ÿíî’ÿíî‘ÿîï’ÿïïÿÚØ{ÿÙ×zÿÚ×yÿÜÙyÿïîÿîîŒÿííŠÿíí‰ÿîì‡ÿðîˆÿòïˆÿñïˆÿïî‡ÿîí…ÿïî†ÿðï†ÿïî„ÿííƒÿíì‚ÿîíƒÿïí‚ÿðî‚ÿïíÿíë~ÿíë}ÿðí~ÿñî~ÿñî~ÿïì}ÿðí|ÿñî|ÿòï|ÿñî|ÿðí{ÿîêyÿîëyÿðíyÿñíyÿðìyÿïëxÿïëwÿñíxÿñíxÿðíwÿðíxÿñíxÿñîxÿðíwÿñíwÿñîxÿïìvÿðìwÿñîwÿñîwÿñîwÿïìvÿðívÿïìvÿïíwÿïìwÿïìwÿîìvÿïìuÿðívÿñîvÿòïwÿñîwÿñîwÿîìvÿíëwÿìëwÿíëwÿíìvÿîìwÿïíwÿðîxÿðíyÿïíyÿíìyÿìëyÿíëyÿïízÿðîzÿïízÿíëyÿîìyÿïízÿîìyÿñî{ÿñí{ÿîìzÿîìzÿïí{ÿïí|ÿïí|ÿîí}ÿîí}ÿíë|ÿíë}ÿÚ×lÿÚ×kÿÜØlÿÞÚmÿïí€ÿíì€ÿìê€ÿîí‚ÿïî‚ÿîìƒÿîìƒÿïî†ÿïî†ÿïî†ÿîí‡ÿîíˆÿíí‡ÿîí‡ÿñï‹ÿòñ‹ÿñïŠÿðïŒÿììŠÿííŠÿïïÿîîÿíîÿîîÿîî‘ÿðï‘ÿïï’ÿïî“ÿîî’ÿíí“ÿðð•ÿññ–ÿïï–ÿíî–ÿíî˜ÿïð˜ÿðð˜ÿÿð™ÿíðšÿëí™ÿêì›ÿíîœÿíïžÿíïŸÿêí ÿêíŸÿìï¢ÿíñ£ÿëî¢ÿëï¤ÿíñ¥ÿíñ¥ÿëð¨ÿìñ§ÿèî©ÿåì¨ÿåìªÿçîªÿçî¬ÿåí­ÿáë­ÿàê®ÿßê®ÿßê­ÿÞè¬ÿÚã«ÿ×á¨ÿ×à¨ÿÓÜ£ÿÓÚ›ÿÒÚ›ÿÍÔ–ÿÉÓœÿÇÕ¢ÿÅÔ¥ÿÂТÿÀÊ“ÿÌÖ–ÿÔÚ–ÿ×Ü—ÿÕÛ—ÿÕÛ˜ÿÊÒ˜ÿ¾Í¦ÿµÄœÿ»ÍªÿÄÔ¯ÿÇØ³ÿÇÙ·ÿÆÚ¼ÿÉßÁÿÎãÆÿÎäÈÿ×êËÿÕçÌÿÏåÌÿÎäÌÿÐæÏÿÒçÐÿÏçÑÿÍåÒÿËåiÓÿÈâÓÿÄàÔÿÃÞÔÿÉâÔÿÐèØÿÕìÙÿÑéÚÿÊäÛÿÈáÛÿÌåÝÿÐéàÿÉäáÿÊäâÿÍæâÿÎçãÿËæãÿÈââÿÅááÿÄßàÿÄÚÜÿÉÚÚÿÅ×ÒÿºÌÈÿ©¾¾ÿÇÓÔÿŠ”•ÿ„–ÿÅÑÕÿ¥»Áÿ¬ÃËÿ¯ÉÔÿ³ÏÚÿ¹ÔàÿÀÚãÿ¿ÚåÿÂÝåÿÅßæÿÅàæÿÅàåÿÅàäÿÇáäÿÇàâÿÇßßÿÏäßÿÖêßÿ×ëÞÿÑçÞÿÌãÜÿÍåÜÿÔëÜÿÏçÜÿÌåÚÿËäÚÿÍäÛÿÐæÛÿÑèÚÿÒçÙÿÐåØÿÎâÕÿÕèÖÿÛíÕÿÚìÔÿÕéÓÿÕèÐÿÚìÑÿàðÏÿÝîÎÿÛíÍÿ×èËÿÔæÊÿ×çÉÿÚëÉÿÛìÈÿÙéÈÿ×çÅÿÛëÅÿÞíÆÿÝíÄÿÜìÂÿÝìÂÿÞîÂÿßîÁÿâðÁÿàîÀÿÝì¿ÿÛê½ÿÜì½ÿßí¼ÿßí»ÿÛê¹ÿÙé¹ÿÚê·ÿÜêµÿÜê´ÿÜé³ÿÝè±ÿÝé°ÿàë°ÿäî°ÿæï¯ÿåï®ÿâí­ÿÞê¬ÿÚè©ÿÙæ¨ÿÚæ¦ÿÜè¦ÿÞé¦ÿàê¥ÿãí¤ÿãì¤ÿâì£ÿàè£ÿÊÏ‹ÿǡÿßæÿäìžÿæíÿåìœÿäêœÿåë›ÿçìšÿêíšÿêî™ÿéî˜ÿèì—ÿèì–ÿêí•ÿêî•ÿêì”ÿèë“ÿçë‘ÿçêÿèëÿêìÿìíÿïïÿïïŽÿîîÿìíŒÿîîŒÿðï‹ÿåä‚ÿÜÚwÿÛØtÿäã~ÿïîˆÿïî‡ÿîî†ÿïî…ÿïíƒÿñï„ÿòðƒÿóñ„ÿñïƒÿðï‚ÿñï‚ÿòð‚ÿðî€ÿðîÿïí}ÿïí~ÿðî}ÿðî}ÿðî}ÿïí|ÿîì{ÿñí{ÿóï|ÿóï{ÿòî{ÿñîyÿòïyÿôðyÿôðyÿôðxÿòîxÿñíxÿòïwÿóïwÿóïwÿóîvÿñíuÿóïuÿôïuÿóïuÿôðvÿôðvÿôðvÿôðuÿõðuÿõñvÿôðuÿòïtÿóïuÿôðuÿôðuÿñîtÿòîsÿñîsÿñîsÿñîtÿðísÿðísÿñírÿòîrÿôðsÿôðsÿóïsÿóðsÿòïsÿïìsÿîìsÿîìsÿïísÿðísÿðîtÿòïtÿòïuÿñîuÿðíuÿîëtÿíëtÿðívÿñîwÿñïwÿðîwÿïívÿðîvÿðívÿòïxÿòïxÿòïxÿðîxÿñîyÿñîzÿñîzÿñî{ÿðî{ÿðî{ÿïí{ÿçätÿßÜkÿàÛkÿéåtÿóñ~ÿòð€ÿðïÿñð€ÿòïÿðî€ÿñï‚ÿñïƒÿðïƒÿñð„ÿñð„ÿðï…ÿñï…ÿðî„ÿòï†ÿôñ‡ÿôñˆÿóñ‰ÿñð‰ÿòðŠÿóò‹ÿññŒÿðïÿïïŒÿïïŽÿñðŽÿòðÿòðÿððÿîîÿñð’ÿòò“ÿòñ”ÿðð”ÿïï”ÿññ–ÿóò–ÿÿò—ÿñò˜ÿîï™ÿíî™ÿíð›ÿîð›ÿïñœÿîðžÿìîÿîñ ÿïò¢ÿîò¡ÿíñ¢ÿíñ¤ÿíò¥ÿíò¦ÿíó§ÿìñ¨ÿêð©ÿèï©ÿèð«ÿéð¬ÿèï­ÿåî­ÿâí¯ÿãî¯ÿãí¯ÿâì®ÿßê®ÿÞè­ÿÝç¬ÿÝç­ÿßè­ÿÞæ¬ÿÙã©ÿÕá©ÿÐÝ©ÿÍÛ¨ÿËÛªÿÊÙªÿÊÚ¨ÿË×£ÿÌØ¤ÿÌפÿË×¥ÿÉÖ¨ÿÄÓ¬ÿ¿Ï«ÿ¿Ð­ÿÄÕ²ÿÊÛµÿÍß¹ÿÌà½ÿÌáÀÿÍãÃÿÏäÆÿÖéÉÿÖéÊÿÔçËÿÐæËÿÑåÍÿÓçÎÿÒèÏÿÏæÐÿËäiÑÿÈáÑÿÆàÑÿÅßÒÿÊãÓÿÐçÖÿÕìØÿÔêÙÿÍåÚÿËäÚÿÍæÜÿÑçÜÿËäÝÿÌåßÿÍåßÿÌåàÿËäàÿÈâßÿÇáßÿÆßÞÿÂÙÚÿÆÚØÿÆØÒÿ¾ÐÈÿ®Â¾ÿÊÕÔÿŒ–•ÿ…‘–ÿÄÐÕÿ¡·¿ÿ¬ÃÈÿ³ËÒÿ·ÑÚÿºÕÞÿ¿ÙáÿÃÝâÿÃÞâÿÅÞåÿÆáæÿÇáæÿÈãåÿÈâäÿÈáãÿÉààÿÌâÞÿÓèàÿØìßÿÕëÝÿÏåÚÿÏåÚÿÑèÙÿÑçØÿÎæØÿËâÖÿÊàÔÿËáÔÿÎâÔÿÎãÑÿÎâÏÿÊÞÌÿÍßÌÿÓäÍÿØèÌÿÖçËÿÒãÉÿÓäÈÿÙéÈÿÙéÆÿÚéÆÿ×çÅÿÓäÄÿÒãÄÿÖçÅÿÚèÄÿÚèÃÿÖåÀÿØçÀÿÚéÀÿÜé¾ÿÙé½ÿÖç»ÿÙè»ÿÝëºÿÝì¹ÿÞì¹ÿÝê¸ÿÙç·ÿÖæµÿÙçµÿÚç´ÿÙç³ÿÖæ³ÿÙç³ÿÛè²ÿÜè°ÿÛè¯ÿÛç­ÿÜè­ÿÞê­ÿãí­ÿåï¬ÿæð¬ÿæï«ÿâíªÿÞê©ÿÜè§ÿÜè¦ÿÝê§ÿßê¦ÿáì¥ÿãì¤ÿæï¤ÿåî£ÿÚá˜ÿÉχÿÐ׎ÿàéžÿãìŸÿèïžÿçîÿäì›ÿæíšÿéï›ÿëïšÿíð™ÿíð™ÿìï˜ÿëï–ÿíð–ÿíñ•ÿíð”ÿìï”ÿìï’ÿìî‘ÿìî‘ÿíïÿïðŽÿññŽÿññŽÿññŒÿððŒÿðð‹ÿñðŠÿñðŠÿòñ‰ÿòðˆÿñðˆÿñð‡ÿòñ†ÿñð„ÿñïƒÿñï‚ÿñïÿôñÿõóÿôò€ÿóñÿóðÿòð~ÿóð~ÿóð}ÿñî|ÿòî|ÿòï|ÿôð{ÿóð{ÿóï{ÿñíyÿòîxÿôðyÿôïwÿôïwÿóïuÿóïvÿõñvÿõðuÿõðuÿõðtÿôïtÿòîrÿóïsÿóïsÿôðrÿóïqÿôðrÿõðrÿõðqÿôðqÿóïoÿôðpÿõñpÿõðpÿõðpÿõðpÿôðoÿòïoÿóðoÿôðpÿóïoÿòîoÿñîoÿòïoÿòîoÿñînÿðímÿòímÿòímÿóïnÿôïnÿóïmÿóïnÿòïoÿñînÿïìmÿïìmÿðínÿðínÿðínÿòînÿñînÿñïoÿðípÿïìnÿîìoÿîëpÿðírÿòïrÿñîrÿðíqÿïìrÿðîsÿñîsÿóïtÿóïtÿòïuÿñîuÿòïuÿñïuÿñîuÿñîuÿïívÿïìwÿðíwÿðîxÿñîyÿóðzÿôñ{ÿóð|ÿòï|ÿñï|ÿòï|ÿòï}ÿòï}ÿñï}ÿðï~ÿñï~ÿñï€ÿòðÿòð‚ÿñîÿòï‚ÿóð„ÿôñ„ÿôñ…ÿòð†ÿòñ‡ÿóñ‡ÿòðˆÿñð‰ÿðïˆÿðï‰ÿðïŠÿñï‹ÿðï‹ÿñïŒÿííŒÿîíÿðïÿñðÿñðÿïïÿðï’ÿòò“ÿòñ”ÿññ•ÿðñ–ÿíî–ÿìí–ÿíï˜ÿîï™ÿîïšÿëî™ÿìï›ÿíïÿîðÿëðÿéîÿêîŸÿìð¡ÿëñ¢ÿëð£ÿêï¥ÿçí¥ÿåí¥ÿåí§ÿæî¨ÿäí©ÿáë©ÿâìªÿäí«ÿâì­ÿáë­ÿÞè¬ÿßé¬ÿßé®ÿáì®ÿàé¬ÿàê¬ÿÜç¬ÿØä¬ÿÒá¬ÿÑß­ÿÏß®ÿÒâ±ÿÐà±ÿÏà²ÿÏà°ÿÐ߯ÿÎݰÿÊÛ²ÿÆØ±ÿÅØ²ÿÇÚ¶ÿÌà¼ÿÓç¿ÿÑæÂÿÍäÄÿÎåÆÿÔéÊÿÖêËÿÚíÌÿÙíÍÿÕêÎÿÒçÎÿÔéÐÿÔëÑÿÓêÒÿkÏçÓÿÍçÓÿÊåÕÿÉäÖÿÏèÖÿÑêØÿÕìÚÿ×íÛÿÔìÜÿÑêÝÿÐéÞÿÑêßÿÒëàÿÑëáÿÏèâÿÎèãÿÌæâÿËåáÿÉãàÿÇàÞÿÂÙÙÿÂ×ÔÿÂÕÎÿ»ÍÅÿ¯ÂºÿËÖÓÿ–”ÿˆ“—ÿÆÒÖÿ¥ºÁÿ°ÇÊÿ»ÒÔÿ¾×Üÿ¾ÚáÿÃÝäÿËææÿËåæÿÊäçÿÉãçÿÈâæÿÉãåÿÊääÿÌäãÿÊãàÿÊãÞÿÏåßÿÕìßÿ×íÞÿÔêÛÿÒèÚÿÓéÛÿÖìÚÿÓéØÿÏåÖÿÍãÔÿÍãÓÿÐåÒÿÒçÑÿÔçÐÿÐäÐÿÍàÏÿÒåÏÿÜíÐÿÝíÍÿÖèËÿ×èÊÿÛëÉÿÝìÈÿÞíÇÿÛëÄÿÕåÂÿÒãÁÿÕåÀÿÙèÀÿÚé¿ÿ׿¾ÿ׿¼ÿÙç¼ÿÝê»ÿÚéºÿÕä¶ÿØæ·ÿÝë¸ÿÜê¶ÿÞì´ÿÝê²ÿØå±ÿÓâ®ÿÕã®ÿ×å®ÿØå®ÿÔã­ÿ×ä¬ÿØå«ÿÚæªÿÚæªÿÚå©ÿÚå§ÿÛæ¦ÿÞè¦ÿáé¥ÿâë¤ÿâê¢ÿßè¡ÿÜæ¡ÿÙãžÿ×âœÿÙäœÿÙã›ÿÛå›ÿÞæ›ÿáè›ÿàè™ÿËÐ…ÿÉÍÿØß‘ÿÛä•ÿÞå–ÿãê–ÿäê–ÿáè“ÿáè“ÿæë“ÿçë’ÿêí‘ÿéì‘ÿéëÿèëÿêíÿëîÿëîŽÿìîÿëíŒÿëí‹ÿëí‹ÿíîŠÿíîŠÿîî‰ÿîî‡ÿïï†ÿïî…ÿîí„ÿîíƒÿðï‚ÿðï‚ÿïîÿðî€ÿðîÿðï€ÿñïÿðîÿðî}ÿðî}ÿñî}ÿóï|ÿóï{ÿóï{ÿòï{ÿñîyÿòïxÿòïxÿñîwÿñíwÿñîwÿòïwÿóïvÿòîtÿñítÿðëqÿñírÿòîqÿóïpÿòípÿñìnÿôîoÿóînÿõïnÿôïmÿòímÿñìlÿñìkÿóílÿóílÿòíkÿòíkÿóîlÿôïkÿóîkÿñìiÿóîjÿôïjÿóïjÿôïjÿôïjÿòíiÿðìgÿñìhÿñíiÿòîiÿñíiÿñíhÿòîhÿòíhÿòíhÿñíhÿòíiÿòíhÿòîhÿôïhÿôïhÿôïiÿôïjÿòîjÿðìiÿïìiÿðíiÿðíiÿñîjÿóïkÿóïkÿóïkÿñîkÿðíkÿïìkÿîëkÿïìlÿòïnÿòïnÿðínÿðínÿòïnÿòïoÿóïoÿóïoÿòïpÿñínÿòîpÿòîpÿñîpÿñîqÿðírÿðírÿðísÿñîsÿñîtÿòïuÿóðvÿóðwÿòïwÿñîxÿñîwÿñîxÿñîyÿðíyÿðíyÿïízÿðî{ÿðí|ÿðî}ÿïí|ÿïí|ÿðí~ÿòð€ÿóð€ÿòðÿòï‚ÿñðƒÿòï„ÿñð„ÿñï…ÿðî…ÿïî‡ÿðïˆÿñïˆÿñðŠÿñð‹ÿîí‰ÿïî‹ÿòñÿóòŽÿñðŽÿððÿòñ‘ÿóò’ÿóó“ÿòò”ÿïð”ÿíî”ÿíî•ÿïð—ÿïð—ÿíï—ÿìî—ÿíïšÿïñšÿìð›ÿéíšÿêïÿíòŸÿìñ ÿíò¡ÿíñ¢ÿéî¢ÿäì¡ÿäì£ÿæî¥ÿåî¦ÿâì§ÿãí¨ÿåîªÿäî«ÿãí«ÿáë«ÿáë¬ÿâì­ÿãí­ÿãí¬ÿäí­ÿáë¬ÿÞê­ÿØæ®ÿÖä®ÿÒã¯ÿÔå³ÿÑâ²ÿÑã²ÿÓã³ÿÔä²ÿÓã²ÿÏà´ÿÌßµÿÊÞ·ÿÈÝ·ÿÌá¼ÿÕé¿ÿÕéÂÿÎåÂÿÎåÄÿÖêÇÿÕéÈÿÛíÉÿÚíÊÿÖêËÿÓèËÿÕéÍÿÔëÎÿÓëÏÿkÑéÐÿÐèÑÿÍçÓÿÌçÔÿÐçÓÿÑèÔÿÓêÖÿÖí×ÿ×íÙÿÔìÚÿÐèÚÿÐèÛÿ×îÝÿÔìÞÿÐéßÿÎçàÿÌåàÿËåßÿÊãÞÿÉáÜÿÂÚ×ÿ¾ÖÒÿ½ÑÌÿºÍÄÿ²ÄºÿÍ×ÓÿŽ—”ÿ‡’–ÿÅÑÔÿ¤º¾ÿ°ÆÉÿ¹ÑÒÿ¾×ÙÿÀÛÞÿÂÝâÿÉäåÿÏêçÿÏêèÿËæçÿÉäæÿËææÿÍçäÿËåãÿÎçâÿËäàÿÎåßÿÔëßÿÙïÞÿÛïÝÿÕìÝÿÐèÚÿØîÛÿØîÙÿÕê×ÿÏåÔÿÏäÔÿÔçÔÿÔçÔÿÐæÓÿÕèÓÿÒåÑÿÓçÐÿÛíÑÿàñÏÿÞïÎÿÚìÌÿÚëÊÿÞïËÿàðÊÿàðÊÿÝîÉÿÙëÆÿ×èÃÿÛëÄÿÞìÂÿÚéÀÿÛê¿ÿÛì¿ÿÝì½ÿÞí½ÿÜì»ÿÛëºÿÛê¹ÿÝì¸ÿßí·ÿàî¶ÿàí´ÿÚé²ÿÕå¯ÿØç°ÿàí¯ÿÚè®ÿÕå¬ÿØå­ÿßë­ÿâí¬ÿÜèªÿÜç¨ÿßé©ÿÞè¦ÿáê¦ÿåí¥ÿæî¤ÿåî£ÿáë¢ÿÜæŸÿ×ãœÿÜæÿÝèÿÞèÿÞèœÿâê›ÿØÝÿÍÐÿÐÕ…ÿÝæ”ÿÞæ”ÿßç”ÿãê–ÿåì”ÿæì”ÿåë“ÿâèÿéì‘ÿëí‘ÿëíÿìîÿêíŽÿêíŒÿéí‹ÿêìŠÿêì‰ÿêìˆÿêì‡ÿêì…ÿëë„ÿìë„ÿîí„ÿîíƒÿïî‚ÿïî€ÿîíÿíìÿïí~ÿðî}ÿðî}ÿîí|ÿîí{ÿïì{ÿïí{ÿïìzÿñîyÿïíxÿïìwÿñîwÿòîvÿóïuÿñíuÿðìsÿòîsÿòîtÿñîrÿðìqÿðìqÿòîqÿòípÿòípÿòîoÿñìmÿòîmÿóïmÿõðnÿöðnÿõðmÿôïmÿöðmÿöñmÿöñlÿöñlÿõðkÿôîjÿõðjÿõðjÿõðjÿõðjÿõðjÿöðiÿ÷ñiÿöñiÿõðhÿõðgÿöðhÿöðhÿöñhÿöñgÿôðfÿòîeÿóîeÿöñfÿôïfÿòîfÿóïfÿõðfÿöñeÿôïdÿóîdÿôïdÿôïdÿõïdÿõðdÿöðdÿõðdÿóïeÿñídÿîêbÿðìdÿñíeÿñífÿòîfÿóïfÿóïfÿòîfÿñîfÿïìfÿïìfÿïìgÿñîhÿòïhÿòîiÿñíiÿïìhÿòíjÿóïjÿôïkÿôïkÿóîkÿòîlÿòïmÿóïmÿòînÿòînÿòðpÿòðpÿòïpÿòïpÿóïqÿóïrÿôðrÿôðtÿóïuÿóðuÿóðvÿõñwÿôñwÿòïxÿñïyÿòïyÿóðzÿñï{ÿòð{ÿñî{ÿòï|ÿóð|ÿôñ}ÿóñ~ÿóðÿñïÿóðÿóñÿòðÿïîÿïî‚ÿñïƒÿñï„ÿïî…ÿðî†ÿíì…ÿíì†ÿðîˆÿñïˆÿðï‰ÿîíˆÿíí‰ÿÿî‹ÿïïŒÿïîÿíîÿëìŽÿêëŽÿìí‘ÿíî’ÿëí’ÿêí“ÿêí”ÿêí•ÿêî–ÿéí—ÿèì˜ÿçì™ÿèí™ÿéíšÿêîœÿêïÿåìžÿàèÿâêŸÿçî¡ÿâë¢ÿÜè¢ÿßé¤ÿãì¥ÿåí¦ÿáê§ÿßè§ÿâëªÿàê«ÿâì¬ÿäî­ÿåî­ÿãî­ÿÞê®ÿÖæ®ÿÐâ­ÿÕæ²ÿÕæ³ÿÔæ´ÿÓå´ÿØè´ÿÚê´ÿ×çµÿÑä·ÿËà·ÿËà¸ÿËâ¹ÿÐæ½ÿÔé¿ÿÔéÁÿÏæÂÿËâÁÿÔçÄÿØéÆÿÙìÆÿØêÇÿÔèÈÿÒçÉÿÑçÊÿÑçËÿÐçiÍÿÐèÎÿÏèÎÿÏçÏÿÏçÐÿÐçÑÿÒéÓÿÔëÔÿÖìÕÿÔëÖÿÑèÖÿÎæ×ÿÒéØÿÕìÙÿÔìÜÿÎçÝÿËåÝÿËåÜÿÉãÚÿÆÞÙÿÃÛÖÿ½ÔÑÿ¸ÎÊÿµÉÁÿ±Ã¶ÿÏØÑÿŽ—“ÿˆ“•ÿÅÒÕÿ£¹½ÿ¯ÇÈÿºÑÑÿÀØÚÿÁÜßÿÄÞâÿÊääÿÏéåÿÒëåÿÍèçÿÊäåÿËåäÿÌæãÿËäâÿÍæáÿÌæáÿÌæàÿÒéàÿ×íÝÿÚîÛÿÕìÚÿÏæ×ÿÕëØÿ×ì×ÿÕéÕÿÏåÓÿÎãÑÿÏäÐÿÑåÏÿÐãÍÿÒåÌÿÐãËÿÐãÊÿÔçÊÿÚëÊÿØìÉÿÙêÇÿ×éÆÿÛìÅÿÛìÃÿÜëÂÿØèÀÿÖæ¾ÿÔå½ÿ׿½ÿØè¼ÿÔåºÿÖæºÿ×ç¸ÿÙé·ÿÚé¶ÿÚè¶ÿÙçµÿÙç³ÿÚè³ÿÜé²ÿßì±ÿßì°ÿÛè¯ÿÖä«ÿÖåªÿÛé¬ÿØç«ÿÕå©ÿ×å¨ÿÜè©ÿÞê§ÿÞè¦ÿÝç¦ÿßé¥ÿàé¤ÿãë¤ÿåí£ÿèð£ÿèð¢ÿäí¡ÿßéÿÜæ›ÿÝçœÿÞéœÿàêœÿàéšÿÞå”ÿÏÒ‚ÿÐÓÿÝãÿáé•ÿàé“ÿáé“ÿäë”ÿæí“ÿèí’ÿçì‘ÿåêÿéìŽÿêíŽÿëíÿìîŒÿìîŒÿëí‰ÿëíŠÿìîˆÿíîˆÿíï‡ÿíî†ÿíî…ÿîï„ÿïï„ÿðï‚ÿñð‚ÿñð€ÿñï€ÿñðÿðï~ÿòðÿóð}ÿóð}ÿòð|ÿòï{ÿñï{ÿñïzÿòïyÿòïyÿòïwÿòïvÿóïvÿôðtÿõñtÿóðsÿòîqÿóðrÿôðqÿôðqÿóïqÿòîoÿóïoÿóïoÿóïoÿóïlÿóîlÿóîlÿôîjÿõïjÿôðjÿõðjÿõïjÿöðiÿöðiÿöðhÿöñgÿöðgÿöðgÿöðfÿöðfÿôîeÿõïfÿõðeÿõïdÿõïdÿõïbÿôîbÿôîbÿôïbÿõïbÿõïbÿôïaÿóí`ÿòì_ÿòí_ÿôï`ÿóî`ÿòí`ÿòí`ÿóî`ÿôï`ÿôî`ÿóí_ÿôî`ÿôî`ÿôî`ÿõï`ÿõð`ÿöð`ÿôï`ÿòí_ÿïê_ÿðë_ÿðì`ÿñíbÿñíbÿòíbÿòíaÿóîaÿòíbÿðìaÿïëaÿïëbÿñícÿòîdÿòîdÿòîdÿñídÿòíeÿóîfÿôïgÿôïgÿóîhÿòígÿòîiÿòîiÿòîjÿóïjÿòïkÿòïlÿòîlÿóïmÿóïoÿôðoÿõðoÿôðpÿóïqÿóïqÿóðrÿõñsÿôðsÿòïtÿñîtÿñîtÿòïwÿòïwÿòïwÿñïyÿñîxÿóðyÿôð{ÿõñ{ÿóð}ÿñî|ÿóñ~ÿóñ~ÿóñ~ÿòðÿðî€ÿñïÿòðƒÿòðƒÿòð…ÿñð…ÿðï†ÿòð‡ÿóñˆÿóòŠÿòñ‹ÿññŒÿóòÿòóŽÿòòŽÿññÿðñÿîïÿîïÿïð‘ÿìî’ÿìî’ÿìî”ÿìî”ÿìî–ÿëï—ÿêî—ÿèí˜ÿéîšÿêïšÿëð›ÿëð›ÿçí›ÿãêšÿâêœÿåížÿáêŸÿÝèŸÿÞç ÿâë¢ÿãë¤ÿáé£ÿÞç£ÿßè¤ÿßç¥ÿàê§ÿâë¨ÿãì¨ÿâì©ÿÞêªÿ×å©ÿÒá¨ÿÑâ«ÿÓã­ÿÓã®ÿÒã¯ÿÓã®ÿÖå¯ÿÔæ±ÿÑã±ÿËß²ÿÉÞ³ÿÊÞµÿÍá¸ÿÐå¹ÿÑäºÿÎã»ÿÊà»ÿÏá¼ÿÓä¿ÿÔçÀÿÓæÁÿÑäÂÿÎâÄÿÎãÆÿÎäÈÿkÎäÈÿÍäÉÿÍåÉÿÍåËÿÎåËÿÏåÍÿÐæÎÿÒèÏÿÔêÐÿÓéÒÿÑçÓÿÎåÔÿÐçÕÿÓêÖÿÔê×ÿÎæÙÿÊâÙÿÈáØÿÇàÖÿÃÛÕÿÀØÒÿºÓÌÿ³ËÄÿ±Æ¾ÿ®Á¶ÿÎÖÐÿ–‘ÿˆ“•ÿÇÒÔÿ£º½ÿ°ÆÆÿ¸ÑÐÿ¿×ÖÿÀÚÛÿÃÝÞÿÅàßÿÌåàÿÐèáÿÍæáÿÉãàÿÈãßÿÈâÞÿÆáÞÿÈãÜÿÇãÛÿÆáÚÿÈâØÿÐçØÿØíÖÿÕêÕÿÎåÓÿÐæÓÿÔéÓÿÖêÒÿÒæÐÿËâÏÿÌâÎÿÎãÍÿÐåÌÿÑåËÿÐåÊÿÐãÉÿÏäÉÿÕæÈÿ×ëÈÿÚìÇÿØëÇÿÛíÆÿÛìÃÿÜíÂÿÛíÀÿÙé¿ÿÖè¾ÿ×è½ÿÚé¼ÿ×ç¼ÿÙèºÿÙê¹ÿÚê¸ÿÛê·ÿÛé¶ÿÛéµÿÚé´ÿÚé³ÿÛê²ÿÞì±ÿßí°ÿÞì¯ÿÛé®ÿÙè«ÿØç«ÿÚé«ÿÙéªÿÙç©ÿÛè¨ÿÞê¦ÿßê¥ÿßé¤ÿÝè¢ÿàé¢ÿâê¡ÿãë ÿæíŸÿçïÿæîœÿâê›ÿßç™ÿÚä—ÿÜæ˜ÿÝç—ÿÞæ–ÿÏÓƒÿÍÑÿÑÕ€ÿäë’ÿâê’ÿàçÿÞæŽÿàçŽÿåëÿçìÿæìŽÿåêÿçê‹ÿéêŠÿêìˆÿéëˆÿéë‡ÿéê…ÿéê„ÿéêƒÿêë‚ÿêëÿêë€ÿêë€ÿëëÿíë~ÿíì}ÿîí|ÿïî|ÿðí|ÿðî{ÿïìzÿïìyÿñîyÿñîwÿòîwÿðívÿðívÿðíuÿïìtÿðísÿðírÿðíqÿðìoÿòîpÿõðpÿôðoÿòímÿòímÿóïmÿôðlÿóîkÿòíjÿòíiÿóîhÿóîhÿóîhÿóîgÿôïgÿóîfÿôîeÿõðfÿõðeÿõïeÿõðeÿõïdÿöðdÿöðcÿöðcÿõïbÿõïbÿöðaÿõî`ÿõî_ÿõï_ÿõï^ÿõï^ÿõî^ÿôî^ÿôí]ÿôî]ÿôí]ÿôí]ÿôî\ÿôî\ÿóí[ÿóíZÿóíZÿóî[ÿóî[ÿòí[ÿôî[ÿôîZÿõîZÿõîZÿôî[ÿôî[ÿôî[ÿõï[ÿöï[ÿöð[ÿõï[ÿôî[ÿòíZÿðë[ÿñì\ÿòí\ÿòí\ÿòí]ÿóî]ÿôï^ÿóî^ÿòí^ÿðë\ÿïë\ÿðì^ÿòí_ÿôï_ÿóî`ÿòí`ÿòíaÿôîcÿôïcÿôïdÿôîdÿóîeÿóîeÿóïfÿôïfÿôïgÿôðgÿôïhÿôïhÿóîiÿóïjÿôïjÿõðkÿõðlÿôïlÿóïlÿóïnÿôðnÿôðoÿôðoÿòïpÿòîqÿòîrÿñîrÿòïsÿñîuÿñîvÿñïuÿôðwÿôñxÿôñyÿòïyÿóð{ÿôð|ÿõñ}ÿôð~ÿñî~ÿðî~ÿðïÿðï€ÿñïÿðî‚ÿïîƒÿïî„ÿðî…ÿñð…ÿñð†ÿðï‡ÿÿðˆÿððˆÿðð‰ÿïïŠÿíî‹ÿíîŒÿíîÿìíÿêìÿëíŽÿêìÿêìÿéì’ÿêí”ÿéí”ÿèì”ÿçì–ÿçì–ÿéî—ÿèí˜ÿçí™ÿäê™ÿàé™ÿáéšÿâëÿàëžÿßêŸÿàê ÿâë¢ÿãì¢ÿâê£ÿàé¤ÿâê¦ÿâë¨ÿãì¨ÿåî©ÿåðªÿäï«ÿÞë¬ÿÙç«ÿÒã¬ÿÔä®ÿÕæ°ÿÕå±ÿÖè²ÿÙê³ÿØëµÿØêµÿÒæ¶ÿÏãµÿÍâ·ÿÎäºÿÓè½ÿÖê¾ÿÔéÀÿÑçÁÿÓåÁÿÖçÃÿ×éÄÿ×èÅÿÓçÆÿÒæÇÿÑçÉÿÑéÊÿÒéiËÿÑèÌÿÐèËÿÏèÍÿÑèÍÿÑçÏÿÒèÐÿÕëÑÿÖìÑÿÕìÔÿÒéÓÿÐçÓÿÐçÕÿÕìÖÿÖíÖÿÒêØÿÌäØÿÈá×ÿÆßØÿÂÜÖÿÁÙÑÿ»ÔÍÿµÍÈÿ®Å¾ÿ­À·ÿÏÙÑÿ™’ÿˆ“”ÿÆÑÓÿ£¹ºÿ­ÄÄÿ¶ÎÌÿ½ÔÓÿÁÙØÿÄÝÜÿÂÞÜÿÊãÝÿÏçÝÿÑèßÿÊãÞÿÆàÜÿÅßÛÿÄßÚÿÄàÙÿÆãØÿÄâØÿÅàÖÿËåÖÿÖìÖÿÖìÕÿÐæÓÿÍãÑÿÓèÒÿ×êÑÿÔèÐÿÍãÏÿÊáÍÿÌâÌÿÐåËÿÏäÊÿÒçÊÿÒåÉÿÌâÇÿÏãÆÿÖéÅÿØëÄÿÔèÂÿÖèÁÿ×é¿ÿÚë¿ÿÙì¾ÿØê½ÿÖè¼ÿ×ç»ÿ×çºÿÖç¸ÿ×å¶ÿØæµÿÙèµÿÚè´ÿÚè´ÿÚè³ÿÚè±ÿ׿¯ÿØç®ÿÚé®ÿÝë­ÿÞë«ÿÜéªÿØæ¨ÿÓâ¦ÿÙç§ÿÙè¦ÿÙç¦ÿØæ¤ÿÜç¤ÿàê£ÿáê£ÿÜæ ÿàè ÿáèžÿáéœÿäë›ÿçî›ÿæîšÿäì™ÿáè˜ÿÚã“ÿÛä“ÿÜå“ÿÒØ…ÿËÎ|ÿÌÐ|ÿÚà‡ÿæìÿãêÿàçÿÝå‹ÿÞåŠÿäéŒÿçë‹ÿçëŠÿæê‰ÿçé‡ÿèé†ÿèê…ÿéê„ÿéê‚ÿèéÿéê€ÿêë€ÿêêÿêê~ÿêê|ÿëë|ÿëë{ÿìëzÿíëzÿìëyÿîìxÿîìwÿïívÿîìvÿîìuÿïìtÿðísÿñîsÿïìrÿïìrÿïìqÿïìpÿðíoÿðínÿïìnÿïìlÿòîmÿôïlÿóîkÿòíjÿòíiÿóîhÿõïiÿóîhÿòígÿñìfÿñíeÿóîfÿòîeÿôïdÿóîdÿóícÿóîbÿôïaÿõï`ÿôî`ÿõï_ÿõï_ÿöð_ÿõï_ÿõï_ÿöï^ÿöï^ÿöï^ÿõî]ÿõî]ÿöï\ÿõî\ÿöï[ÿõî[ÿõîZÿõïZÿôîYÿóíYÿõîYÿöïXÿöïXÿôîWÿóíVÿñëUÿóíWÿóíWÿòìVÿñëUÿòìVÿôíVÿôíVÿóìVÿôíWÿôíWÿôíWÿõïWÿ÷ïWÿöïWÿõïXÿôîXÿñëVÿòìWÿñìYÿñìYÿòìYÿóíYÿóíXÿóíYÿòíYÿðëYÿîéXÿïêXÿñì[ÿñì[ÿñìZÿñì[ÿñêZÿñë[ÿñë\ÿñë]ÿñë]ÿñë^ÿñì_ÿñí_ÿñì`ÿñìaÿòíbÿñícÿñìbÿóídÿòídÿóîeÿóîfÿóîfÿóîgÿòíhÿòíiÿòîjÿóîkÿóïkÿñílÿñímÿðìnÿðìnÿñíoÿðíoÿïípÿïìpÿñírÿôðtÿôðuÿòîvÿñîvÿòïxÿóðyÿòïzÿñîzÿðî{ÿñî}ÿòï~ÿñðÿñð€ÿòð‚ÿïîÿïï‚ÿñðƒÿòñ„ÿðð…ÿñð†ÿññ‡ÿññˆÿññŠÿðñ‹ÿîï‹ÿîïŒÿïðŽÿîðÿîïÿìîÿîð’ÿìï’ÿìï“ÿìï”ÿìï•ÿèí”ÿèí•ÿéî—ÿëð˜ÿëð™ÿèï›ÿäì›ÿàéšÿäížÿäîŸÿáë ÿàê ÿãí£ÿæï¤ÿçî¥ÿâë¥ÿäì§ÿäí¨ÿãí¨ÿæï©ÿèñªÿçñ«ÿãï¬ÿßì®ÿÔä¬ÿÕæ­ÿÕæ¯ÿÕæ¯ÿÕç°ÿØé²ÿÚê³ÿÛì´ÿÖèµÿÐå´ÿÉÞ³ÿÊßµÿÐä¹ÿÓæ¹ÿÒçºÿÐå¼ÿÐâ¼ÿÒã¾ÿÓæ¿ÿÓåÀÿÑäÁÿÐäÂÿÐäÃÿÎåÄÿkÎåÅÿÎåÆÿÎåÇÿÎåÈÿÎäÈÿÏäÉÿÏäÊÿÐæËÿÒæÌÿÑçÍÿÐæÎÿÎåÏÿÌãÏÿÒçÒÿÕêÓÿÔéÔÿÌãÔÿÇÞÔÿÂÛÓÿÀØÑÿ¼ÖÏÿ¹ÓÊÿ²ËÄÿ©Á»ÿ¥»²ÿÍ×Ïÿ˜ÿ‰”•ÿÇÓÔÿ£¹»ÿ®ÆÆÿ¸ÐÍÿÀÖÔÿÅÜÙÿÈáÝÿÅáÝÿÌæáÿÑêáÿÓìàÿÏçßÿÉãÞÿÆàÜÿÄßÛÿÂàÙÿÂâ×ÿÂàÖÿÁÞÔÿÇáÓÿÑèÒÿÔéÑÿÑçÐÿËâÎÿÐåÐÿÕèÎÿÓèÍÿÌãÌÿÇßÊÿÉßÉÿÌáÇÿÊàÆÿÏäÄÿÎáÃÿÈÞÁÿËßÀÿÎäÁÿÔæÀÿÐå½ÿÒå¼ÿÒå»ÿÕèºÿÕè¹ÿÕæ¹ÿÒæ¸ÿÓä¶ÿÒã´ÿÔã´ÿÕã³ÿÖå²ÿÖä°ÿÖä¯ÿÖä­ÿÖã¬ÿÖä«ÿÒá¨ÿÓá¨ÿÕä©ÿÙç¨ÿÜé§ÿÜé§ÿÖä¥ÿÐß ÿ×å£ÿÖæ¡ÿÖä¡ÿÔážÿØãÿÝæœÿÞæ›ÿÛã™ÿÝä˜ÿÜã—ÿÞæ–ÿàç—ÿãê–ÿåë•ÿãê“ÿáè’ÿÙãÿÙãÿÖÞ‰ÿÇÌxÿÈÍxÿÌÐzÿáç‹ÿäê‹ÿäêŠÿáçˆÿÝä†ÿÝä„ÿáç†ÿäè†ÿåé…ÿæê…ÿçé„ÿèé‚ÿêêÿêêÿêëÿêëÿêë~ÿëë}ÿëë}ÿëì|ÿìì{ÿììzÿíìyÿíìxÿîìwÿîìvÿðívÿðîuÿñîtÿðîsÿïírÿñîrÿóïrÿóïqÿóïpÿñîoÿñínÿðímÿñîlÿñîlÿñîkÿñíjÿòîiÿôðhÿõïgÿôïgÿóîeÿôïfÿöðfÿôïeÿôîdÿòícÿóîcÿôïbÿóîaÿõï`ÿõï`ÿóî_ÿóî^ÿõï^ÿöð^ÿôî]ÿõï\ÿôî[ÿõï\ÿöð[ÿöïZÿõïZÿöïYÿõïXÿöïXÿöïWÿöïWÿöïWÿöïVÿöïVÿõîUÿõîUÿôíSÿôíSÿõïTÿöïTÿ÷ðTÿöïSÿõîSÿòìQÿõîSÿõïSÿõîSÿóíRÿõîRÿöïRÿ÷ïRÿöîRÿöïRÿöîSÿöïSÿøðSÿøñSÿøðSÿøðSÿöïSÿóìRÿôíSÿóíTÿóíTÿôîUÿõïVÿõðVÿõïUÿõïVÿóíUÿñìUÿñìUÿòíWÿôîXÿôïXÿôîXÿóìXÿôíYÿôîZÿôîZÿôî[ÿôî[ÿôî\ÿôî\ÿôî]ÿôî]ÿôî^ÿôî_ÿóî`ÿôîaÿôîbÿõïbÿôïcÿõïcÿôïdÿôîdÿóîdÿôïfÿõðgÿõðhÿóîiÿóîjÿñíkÿñílÿðímÿðîmÿðínÿðíoÿñîpÿóðqÿóðrÿòïsÿðísÿñítÿóïvÿòïvÿñíwÿïíwÿïíyÿðízÿðî|ÿðî|ÿðí|ÿîì}ÿîí}ÿïïÿðï€ÿïïÿÿð‚ÿïðƒÿðð„ÿïð…ÿîï‡ÿíïˆÿìîˆÿìîˆÿìí‰ÿëí‰ÿëíŠÿëíŒÿëíÿëíŽÿéíÿèíÿæêÿåê‘ÿæì”ÿèí•ÿêï–ÿéî–ÿãê–ÿÞæ•ÿãë™ÿâì›ÿáêœÿÝçšÿàéœÿäìŸÿåì ÿâê ÿãë£ÿáê¤ÿáë¤ÿãì¦ÿæï§ÿèñ¨ÿåðªÿâï«ÿÖæªÿÔå«ÿÔå«ÿÓä¬ÿÓå­ÿÖç¯ÿØé°ÿÚì²ÿ×ê³ÿÑå²ÿÊß±ÿÈß±ÿÍãµÿÓç¸ÿÓç¹ÿÓæºÿÒä»ÿÓä¼ÿÓå¼ÿÓå¾ÿÒå¿ÿÒå¿ÿÐæÁÿÏåÂÿÏåiÃÿÏåÄÿÏåÅÿÏåÆÿÑåÇÿÏåÈÿÑæÉÿÑçÌÿÓèÍÿÔéÍÿÓèÎÿÑçÏÿÌåÏÿÐçÑÿÔêÒÿÓéÑÿÎäÒÿÈßÒÿÂÚÐÿ¾ØÏÿ¹ÕÍÿ¶ÓÊÿ¯ÊÃÿ§Á¹ÿ£¹¯ÿËÖÍÿŽ—ÿŠ••ÿÈÔÔÿ¥»ºÿ°ÇÅÿºÒÎÿÂÙÕÿÇßÚÿÈâÝÿÆâÜÿÊäÝÿÐéàÿÔìßÿÑêÞÿÌåÝÿÇàÜÿÃßÙÿÀáÙÿÀá×ÿÁàÖÿÃáÕÿÅâÔÿËæÔÿÐèÓÿÕëÐÿÏåÏÿÏåÏÿÐæÍÿÐçËÿÍäÊÿÈàÉÿÇàÈÿÉàÈÿËáÆÿÎãÅÿÍãÄÿËáÂÿÉßÁÿËáÀÿÏåÀÿÐå¿ÿÐå¾ÿÒæ»ÿÓæºÿÔç¸ÿÓæ·ÿÓæ¶ÿÓåµÿÑã´ÿÓä³ÿÕã²ÿÔä±ÿÕä±ÿÖä°ÿÖã®ÿÖä¬ÿÖå«ÿÓá©ÿÔâ¨ÿÔã§ÿØæ¨ÿÝé§ÿÞê¦ÿÚé¦ÿÓã£ÿÖå¢ÿ׿¡ÿØæ¢ÿÖäŸÿÙåžÿßêžÿáêžÿáéÿáêœÿàèšÿáè™ÿãê™ÿçî˜ÿèï—ÿèï–ÿçî”ÿàê”ÿßè’ÿÓÙ„ÿÊÏyÿÌÐzÿ×Ý…ÿäìÿçíÿèîÿæí‹ÿâé‰ÿâéˆÿåêˆÿæìˆÿèí‡ÿéí…ÿìí„ÿíî„ÿìîƒÿíî‚ÿíî€ÿíîÿíîÿíî~ÿîî}ÿîî|ÿîî{ÿîîzÿïíyÿðîyÿïîvÿðîvÿñïuÿòðtÿòïsÿòïrÿðíqÿòïoÿôïpÿõðoÿôðnÿóïmÿòîlÿñíkÿñïjÿñïjÿðîiÿòîhÿòîgÿóîfÿôïeÿõïdÿôîdÿôîbÿõïbÿôïbÿôï`ÿôî`ÿóí^ÿôî^ÿôî]ÿôî]ÿõï\ÿôî\ÿôîZÿôîZÿõïZÿõïYÿõïXÿöïWÿöïWÿöðVÿöðUÿõïUÿöïTÿõîTÿöïTÿöîRÿöîRÿõíRÿõíRÿôíQÿõîQÿõíQÿôìOÿôìOÿôìNÿõîOÿ÷ïOÿ÷ïOÿõîNÿóìMÿôíNÿôíNÿôíNÿôìMÿôìLÿõîMÿöîMÿöîLÿöîLÿôíMÿôìMÿöîMÿ÷ïMÿöîMÿ÷ïNÿöîOÿõîOÿôíOÿòìOÿòìOÿòìOÿóíNÿôíOÿôíPÿôíPÿóíQÿòìPÿóíQÿóíRÿôîSÿôîSÿôîTÿôíTÿõîTÿõîUÿôîVÿõîWÿõïXÿõïYÿõîYÿôîYÿôîYÿôî[ÿôî[ÿôí[ÿóî]ÿóî\ÿôï_ÿôî_ÿõï_ÿõïaÿõïaÿóîaÿóíbÿôîdÿõïeÿôïeÿóîfÿòígÿñígÿïíiÿðíhÿðíkÿñíkÿðímÿòïmÿóïnÿôðoÿòîpÿñîpÿòîqÿñîrÿðísÿïìtÿíëtÿîìuÿîívÿîìwÿîìwÿìëxÿëêxÿëëzÿìì{ÿíí}ÿÿí~ÿíí~ÿííÿíî€ÿìíÿìíƒÿêì„ÿêë…ÿëì†ÿëë†ÿéê‡ÿéê‰ÿèêŠÿèê‹ÿçëŒÿçëÿãçŒÿãçÿãèŽÿåêÿçì’ÿçì’ÿãé“ÿÞæ“ÿßè•ÿßè–ÿÝç—ÿÜå–ÿÜå—ÿàèšÿâèšÿàè›ÿáèÿÞçžÿÞçŸÿàé¡ÿâë¢ÿãí£ÿãí¥ÿáì¦ÿØæ¦ÿÔä§ÿÑâ¦ÿÐá¨ÿÑâ©ÿÑäªÿÕæ¬ÿØè®ÿ×é¯ÿÒå°ÿÌá¯ÿÊà°ÿÌà²ÿÏä´ÿÒæ¶ÿÒæ·ÿÕå¸ÿÕå¹ÿÓå¹ÿÒä»ÿÒã¼ÿÐã¼ÿÏã¼ÿÎã¾ÿÎãiÀÿÎäÁÿÍäÂÿÍåÄÿÏäÅÿÏåÇÿÎåÇÿÐåÈÿÒçÉÿÓçÊÿÒçËÿÑçÌÿÌäËÿÍäÌÿÑæÏÿÔéÑÿÑçÑÿÉàÑÿÂÚÏÿ½×Îÿ¶ÔËÿ²ÒÈÿ­ÊÁÿ§À¸ÿ¡¸®ÿÈÓÍÿŒ•ŽÿŠ•“ÿÈÔÓÿ¥¼ºÿ¯ÆÃÿ·ÏÌÿÂÙÓÿÆßÙÿÊãÜÿÈãÝÿÈãÜÿÍæÞÿÒëßÿÓëÝÿÍæÝÿÇàÚÿÃßÚÿ¾ßØÿºßØÿ¿àÖÿÃãÕÿÃáÓÿÁßÐÿËäÒÿÖìÐÿÑçÏÿÍäÌÿËáËÿÎäÊÿÏäÈÿÊáÈÿÆßÇÿÆÞÇÿÉàÅÿÉàÅÿËâÃÿÍãÂÿÊáÁÿÉß¾ÿÌã¾ÿÐæ½ÿÐå½ÿÑæ»ÿÑç¼ÿÒæºÿÒçºÿÓç¸ÿÑæ¸ÿÒæ¶ÿÔå´ÿÕä³ÿÕå±ÿÕä°ÿÖã®ÿÖä­ÿ×å¬ÿ×å«ÿÔãªÿÔã¨ÿÓã§ÿÖä§ÿÚè§ÿßì¥ÿÜê¥ÿØç¤ÿÔä¡ÿÕå ÿ×åŸÿ×äžÿÙåœÿÝçÿàè›ÿâë›ÿàèšÿàè™ÿßè—ÿâé–ÿäë–ÿæí•ÿèî”ÿèî’ÿäì’ÿÚáŠÿÊÏzÿËÏyÿÌÐxÿÞåŠÿãêŒÿåì‹ÿæíŠÿåëˆÿãé‡ÿãé…ÿãè„ÿåé„ÿæëƒÿéì‚ÿëìÿìì€ÿëìÿëë~ÿëì}ÿìì|ÿìí{ÿìízÿìíyÿíìxÿííxÿíívÿïíuÿïíuÿïísÿïìrÿðíqÿñîpÿñîoÿòînÿïìlÿïìkÿñíkÿóîjÿóïiÿòíhÿðìgÿïëgÿïëfÿîìeÿïìdÿðìbÿðëaÿîê_ÿñì_ÿôî_ÿóí^ÿòì]ÿòì\ÿóí\ÿòí[ÿòìZÿñëZÿñëYÿòìXÿóìWÿóíVÿóíUÿòìUÿòëSÿóìSÿóíSÿôíSÿôíQÿôíQÿôíQÿóìOÿôíPÿôíOÿôíOÿõíNÿõíMÿõíLÿôìLÿôìLÿôìKÿôìKÿõíJÿôíIÿôìIÿôìHÿôìIÿõíIÿöîIÿöîHÿõíHÿôíHÿõíHÿõíHÿõíHÿõíHÿõíHÿ÷îHÿ÷îHÿ÷îIÿöîIÿöîHÿöîHÿøðIÿ÷îIÿ÷îIÿ÷ïIÿ÷ïIÿõîJÿôíIÿóìIÿôíJÿôíJÿõîKÿõîLÿöîLÿôíMÿôíMÿóíMÿóìMÿôíOÿõîOÿôíPÿõíQÿõíQÿõîRÿõîSÿôíRÿôíSÿôîTÿôîUÿóíUÿôíUÿóíVÿóíWÿóíWÿóíXÿóíYÿóíZÿóí[ÿóí[ÿôî\ÿôî]ÿòì]ÿòí^ÿóî`ÿôîaÿôîaÿòíbÿðëcÿðëcÿïìfÿîìfÿîëfÿðíhÿïìhÿîêhÿðìjÿòîkÿñílÿðímÿðìnÿðìoÿðípÿîëqÿíëqÿìêrÿíësÿìêuÿíìuÿíìvÿìëwÿêévÿêêwÿëëyÿêézÿêê{ÿêê|ÿéê}ÿêê~ÿéêÿèê€ÿèéÿèé‚ÿèèƒÿçé„ÿçè…ÿæè…ÿæè†ÿåè‡ÿæè‰ÿãæ‰ÿâæŠÿáæŒÿáæÿäéÿåëŽÿãéÿßçÿÚä‘ÿÛå“ÿÜå”ÿÜå•ÿÜä•ÿÞæ—ÿàç˜ÿàè˜ÿÞæšÿÝå›ÿÜå›ÿÝæÿßèŸÿàê ÿáê¡ÿàê¢ÿÚç¢ÿÕã¤ÿÐà¥ÿÎߥÿÎà¦ÿÎá¦ÿÐâ©ÿÓåªÿÕç¬ÿÒä­ÿÎá®ÿË߯ÿËà±ÿÍá³ÿÎã³ÿÐãµÿÕäµÿÒâ¶ÿÑâ¶ÿÐá¸ÿÏâºÿÏáºÿÍâ»ÿÌâ¼ÿkÍã½ÿÍâ¾ÿËâÀÿËâÁÿÎâÁÿÍâÂÿËáÃÿÌâÄÿÎãÄÿÐäÆÿÐæÇÿÐåÊÿËâÈÿÉáÉÿËâÍÿÏåÍÿÏäÍÿÈßÌÿÁÙÍÿ¾ÕÍÿ³ÑÉÿ«ÍÅÿ«É¿ÿ¨Ã¹ÿ ¹®ÿÄÑÌÿ‹•ŽÿŠ•“ÿÇÓÑÿ£¸µÿ¬ÃÀÿ¶ÍÉÿ¿×ÏÿÄÜÓÿÉáØÿÅߨÿÄߨÿÆàÙÿÎæÚÿÑèØÿËä×ÿÆßÖÿÂÝÖÿ¼ÜÕÿ·ÚÔÿ½ÞÓÿÄãÒÿÀÞÏÿ»ØÌÿÄàÎÿÖìÏÿÒêÎÿËäÌÿÈáÉÿÌäÊÿÐçÉÿËäÇÿÇàÆÿÄÝÅÿÈáÄÿÈàÂÿËâÁÿÏæÀÿËâÀÿÅÞ¾ÿÈà¼ÿÏæ¼ÿÎå¼ÿÏå»ÿÐå¹ÿÒç¸ÿÒç·ÿÒç·ÿÒæ¶ÿÒæ´ÿÖæ³ÿÖæ²ÿÖç±ÿ׿¯ÿ׿®ÿØç­ÿÙç¬ÿÚç«ÿÕä©ÿÕã§ÿÓâ¦ÿÔâ¤ÿÙç¥ÿÞì¤ÿÝë£ÿÙè¢ÿÒâžÿÓäœÿÖåœÿØåšÿÙåšÿÚæ™ÿÞç˜ÿãê—ÿßè˜ÿàè–ÿàè”ÿàè“ÿãê‘ÿäë’ÿæì‘ÿçíÿåíŽÿÓØÿÎÒzÿËÏuÿÑÕyÿÞå†ÿßæ†ÿáè†ÿäê…ÿäê„ÿãéƒÿâç€ÿâæÿãç~ÿåé~ÿæé}ÿèé}ÿéê|ÿéêzÿéêzÿêêyÿêêxÿëëwÿêëvÿììvÿëëuÿíìtÿììsÿîìqÿíìpÿîìoÿïìnÿïìmÿðílÿñîkÿñîlÿðíjÿðìhÿðìgÿòígÿóîfÿòîeÿñídÿðìdÿðìcÿïìcÿïëaÿñí`ÿðì_ÿïê]ÿñì]ÿõï]ÿôî\ÿòíZÿòíZÿóîZÿôîYÿóíXÿòìWÿòìWÿòìVÿóíUÿóìTÿôíSÿôíRÿñëPÿòëOÿóìOÿôíNÿôíMÿôíLÿôìLÿôìKÿôíKÿôìJÿóìJÿõíIÿõíHÿõíGÿôìGÿôìGÿõìFÿôìFÿõìEÿôëDÿóëDÿóëCÿóëCÿõìDÿöíDÿõíCÿôìCÿòêBÿòêBÿóëBÿôëBÿôëBÿóëBÿõíBÿõìBÿôëBÿôëBÿõìBÿôëAÿõìBÿõìCÿõìCÿõìCÿöíCÿõìDÿóëDÿóëCÿòëEÿóëDÿôìEÿóìFÿõíFÿôìGÿôíGÿóëHÿòëHÿòëIÿôíJÿôìKÿôìKÿôìKÿôìLÿôìMÿôíMÿôíNÿóìOÿóíPÿôíQÿôîQÿóìRÿòìSÿóíTÿóìTÿòìUÿóìVÿôîWÿõîXÿõïYÿôîZÿóí[ÿòí[ÿóí^ÿõï_ÿöð_ÿôî`ÿòíaÿòíbÿðícÿðídÿðíeÿñîfÿðígÿîëfÿðíhÿôïjÿóïkÿñîlÿðílÿñînÿòîoÿñîpÿðíqÿîírÿïísÿïítÿïíuÿïîvÿîíwÿëëvÿëìwÿííyÿìí{ÿíí|ÿìì}ÿìí}ÿìí~ÿìîÿìí€ÿêìÿëì‚ÿëì„ÿêì…ÿêë†ÿéë‡ÿéìˆÿèë‰ÿéëŠÿåéŠÿäè‹ÿãèŒÿáçÿåëÿèîÿæí’ÿãë“ÿÝæ’ÿÜç“ÿÝç•ÿÞè–ÿÞç—ÿÞè˜ÿáê™ÿäìšÿàé›ÿßèœÿßèÿßèÿàé ÿáì¢ÿäî¤ÿãí¤ÿáí¥ÿÚè¦ÿÔã¦ÿÒã¦ÿÑã§ÿÑã§ÿÑãªÿÒæ«ÿÕè¬ÿÓç­ÿÒä®ÿÎâ¯ÿÌá°ÿÌá±ÿÏã³ÿÑã³ÿÔä´ÿÔäµÿÒã¶ÿÑâ·ÿÑâ¸ÿÏã¹ÿÍâ¹ÿËâ»ÿkÍã¼ÿÌâ½ÿÌâ¾ÿÊâ¿ÿÏâ¿ÿÌáÀÿËáÂÿÌáÃÿÍâÄÿÏäÅÿÏäÅÿÏäÆÿÊàÆÿÇÞÆÿÈÞÈÿÍâÊÿÏãÊÿÈÞÊÿÀ×ÉÿºÒÇÿ¯ÎÂÿ§Ç¾ÿ§Â·ÿ¥¿±ÿ›´¨ÿÀÎÈÿ‡’‹ÿˆ’’ÿÇÓÑÿ¥»¶ÿªÂ¿ÿ±ËÇÿ½×ÐÿÄÜÓÿÄÞÖÿÇà×ÿÈáÖÿÇàÖÿÊâ×ÿÏæ×ÿÑæÕÿËáÔÿÂÛÒÿ»ÙÓÿºÚÒÿºÚÑÿºÚÐÿ»ÚÎÿ½ÜÍÿ¿ÝÍÿÄßËÿÌæÊÿÈäÈÿÅàÇÿÆàÅÿÇáÄÿÇàÃÿÅÝÁÿ¿Ù¿ÿÀÚ¿ÿÃÞ¾ÿÆß¼ÿÅß»ÿÄÝ»ÿÃܹÿÅÜ·ÿÇÞ·ÿÉßµÿËà¶ÿÍãµÿÑæ´ÿÐä³ÿÍá³ÿÎâ²ÿÓå±ÿÒä°ÿÔä®ÿÔæ­ÿÑâ¬ÿÒã«ÿ×åªÿØæ©ÿØå¨ÿÓâ¦ÿÓà¤ÿÑà£ÿÑß¡ÿÑß¡ÿÒá ÿ×çŸÿÝêžÿÖæœÿÐá˜ÿÑá˜ÿØåšÿ×å˜ÿÓá•ÿØä—ÿàë–ÿáê•ÿÞç“ÿÜå‘ÿÞçÿáéÿåìÿåìŽÿåëÿåëÿäêŒÿáè‰ÿÝä‡ÿÛâ…ÿÝä…ÿàç†ÿáè…ÿâè„ÿãéƒÿäé‚ÿâçÿâæ}ÿâæ|ÿäç|ÿæè|ÿèé{ÿéêzÿêêyÿéêxÿêêvÿêëvÿêêuÿèèrÿêêrÿëërÿììqÿëëoÿíëoÿîìmÿîìmÿíêkÿìêjÿïìjÿðìiÿïìhÿðígÿðìeÿðëdÿñìeÿóîdÿóîcÿóíbÿñë`ÿðë`ÿðí`ÿðì_ÿñí^ÿðì]ÿñí\ÿñí[ÿóíZÿôïZÿòíYÿóíXÿóíWÿòìUÿóìTÿòìSÿñëSÿñëSÿòìRÿóíPÿòìOÿòìNÿòëMÿòìLÿóìLÿóìLÿóìKÿôíIÿôìIÿôìHÿôìGÿôìGÿõìFÿõíEÿôìDÿõìCÿóëBÿóëBÿôëAÿõëAÿôëAÿóê?ÿóê?ÿòé?ÿôë>ÿóê>ÿôë>ÿôë=ÿõë=ÿóê=ÿñé<ÿñè<ÿóê=ÿòé;ÿñè;ÿòé;ÿôë<ÿôë<ÿóê<ÿóê;ÿóê;ÿõë<ÿõë=ÿõë=ÿõë=ÿöì>ÿõë>ÿôë>ÿñé>ÿñè>ÿñé?ÿòê@ÿóê@ÿôìAÿóëAÿóëBÿòêBÿóëCÿòêDÿóëEÿóëGÿóëHÿóìHÿôìIÿóëIÿôìIÿôìJÿóìJÿòêKÿóìLÿóíNÿóìOÿòìPÿóìQÿôíQÿôíSÿôíSÿóìTÿôîVÿõïWÿôîWÿóíWÿóíXÿòíZÿóí\ÿõî\ÿôî]ÿóí^ÿòì^ÿðì`ÿðìaÿðíbÿïìdÿðìdÿðídÿðífÿñígÿòîhÿñîjÿñíkÿðílÿñîmÿñînÿïìnÿîënÿíìpÿíìqÿîísÿíísÿììtÿëëuÿëëvÿëìwÿëìxÿëìyÿëìzÿìì{ÿëì|ÿéê}ÿéë~ÿëìÿéë€ÿêìÿéë‚ÿçé‚ÿæéƒÿéë…ÿèë†ÿçê‡ÿäèˆÿâæ‰ÿáçŠÿáæ‹ÿàæÿàçŽÿâêÿæíÿàé‘ÿÛæÿÛå‘ÿÞè“ÿÜæ”ÿ×â“ÿÚä•ÿáê—ÿßé˜ÿÛç™ÿÙä™ÿÚåšÿÝèœÿàëÿàë ÿßê¡ÿÞé¢ÿÜè£ÿØæ¤ÿÒà£ÿÎߣÿÏà¥ÿÐâ§ÿÐã¨ÿÓæ©ÿÒåªÿÑä¬ÿÎá¬ÿÌ߬ÿËÞ­ÿÌà¯ÿÏá²ÿÑã³ÿÒä´ÿÒä´ÿÐâµÿÏâµÿÎá¶ÿÊß¶ÿÅܶÿkÈ߸ÿÊáºÿÊâºÿÅÞºÿÈݼÿËà¼ÿÌá¾ÿÈßÀÿÈàÁÿÎäÄÿÐåÄÿÌãÅÿÌâÆÿËáÆÿÉ߯ÿÊßÈÿÌáÉÿÌáÉÿÆÚÈÿºÒÆÿ°ÌÃÿ«È¿ÿ¦Ãºÿ »±ÿ™³§ÿÃÐÊÿ†”Œÿ†‘ÿÄÐÎÿ µ±ÿ§¿¹ÿ®ÇÁÿ¸ÑÉÿ¿×ÎÿÂÚÑÿÃÛÒÿÅÝÒÿÄÝÒÿÄÜÑÿËàÔÿÎãÓÿËáÑÿÃÛÐÿ¹ÖÏÿ¸×Îÿ¸×Ìÿ·×Ìÿ¸ØÉÿ¹ÚÈÿ»ÚÇÿ½ÛÇÿÄáÆÿÅâÅÿÃßÄÿÂÝÃÿÃÝÁÿÇÞÁÿÅÜÀÿ½×½ÿ¼Ø»ÿ¼Ù»ÿÁܺÿÂÞ¹ÿÂܹÿÁÛ¸ÿÃÛ·ÿÃÛµÿÆÝµÿÇÞ´ÿÉß³ÿÍá²ÿÌà°ÿÊ߯ÿÍ߯ÿÐã®ÿÏâ«ÿÑã«ÿÓãªÿÐáªÿÐà¨ÿÓã§ÿ×ä§ÿÖå¦ÿÒá¤ÿÐߢÿÐߢÿÐß¡ÿÏà¡ÿÑâ¡ÿÕåžÿÜéÿÖæœÿÐá˜ÿÐà–ÿÕå—ÿ×ä—ÿÓâ–ÿÖã–ÿÜç”ÿßé’ÿÝç‘ÿÝç‘ÿÜæÿàèÿãêÿåëÿåëŒÿæê‹ÿåêˆÿãç‡ÿÞå„ÿÜã„ÿÜä„ÿßæ„ÿßæ‚ÿáèÿâè€ÿãéÿãç~ÿâæ|ÿáåzÿãæzÿåèyÿèéyÿééxÿééwÿéévÿééuÿêêtÿéésÿéèqÿèèoÿêênÿëênÿêêlÿìêlÿìêkÿíêjÿîëiÿîëhÿïìgÿðìgÿñífÿñìeÿïëcÿïêbÿïêaÿòìaÿòì`ÿòì^ÿðê]ÿïê[ÿîêZÿïêZÿïêYÿïêXÿðëWÿðëVÿðëUÿñìTÿñëSÿñëRÿñëQÿñëPÿòìOÿñêNÿñêMÿðêLÿðêLÿñëKÿñëJÿñëIÿòêHÿñêGÿñéGÿòëFÿòêEÿóëDÿôìCÿóëCÿòêBÿóêAÿôë@ÿóê?ÿôë>ÿôê>ÿóê=ÿóé=ÿôë=ÿõì<ÿôë<ÿôë;ÿôë:ÿôê:ÿôê:ÿôë:ÿôê9ÿõë9ÿöí8ÿõì8ÿóê7ÿóê7ÿõì8ÿõì9ÿôë8ÿôë8ÿõì9ÿöì8ÿõì8ÿõë8ÿõë8ÿöì8ÿ÷í9ÿ÷í:ÿ÷í:ÿ÷ì:ÿöì;ÿõì<ÿôë;ÿóê<ÿôì<ÿôì=ÿôì>ÿõí?ÿõì?ÿõì@ÿôì@ÿóë@ÿôëAÿôìBÿõíCÿõìDÿõìEÿõíFÿõíGÿõìHÿõíHÿôìIÿóëHÿòëHÿôìJÿôíKÿòëKÿóìMÿôìNÿóìOÿóìPÿóìQÿôìQÿóìRÿòìSÿòëSÿòëTÿñêTÿðêVÿòëWÿóìXÿòëYÿðêYÿîéZÿîé[ÿíè\ÿíé]ÿíé^ÿìé^ÿíé_ÿíé`ÿîêbÿîêcÿîëeÿìéeÿíêfÿîêgÿíéhÿêçhÿéèjÿéèlÿêémÿêênÿéénÿééoÿéèqÿèèrÿÿétÿééuÿéêvÿêêwÿéêxÿçéyÿèézÿèézÿèê|ÿèê~ÿèêÿçè€ÿæè€ÿçé‚ÿèêƒÿæé„ÿãç„ÿáæ…ÿàå‡ÿßåˆÿÞå‰ÿÝæ‹ÿàèŒÿäëŽÿßèŽÿÙäÿØãŽÿÛæÿÜæ‘ÿ×â‘ÿ×â“ÿÜç•ÿÝç•ÿÛå–ÿÙã•ÿ×ã—ÿÛå—ÿÝç™ÿÝè›ÿÝèœÿÝæÿÛæžÿØãŸÿÐÞžÿÌÝŸÿÌÞ¡ÿÎà£ÿÍߥÿÏã§ÿÐã¨ÿÐã©ÿÍà©ÿÊÞ¨ÿÉݪÿËÞ«ÿÎà®ÿÐá°ÿÐâ±ÿÑâ³ÿÏá´ÿÏâµÿÏâ¶ÿËá¸ÿÇÞ·ÿÅÝi·ÿÉàºÿÉâ¼ÿÆß»ÿÊà¾ÿÌâ¿ÿÍãÁÿÌäÄÿÍäÅÿÐæÆÿÒçÇÿÐçÈÿÐåÉÿÎäÈÿÌâÊÿÉàÉÿÎãÌÿÐäÌÿÊßÊÿÁØÉÿ´ÐÆÿ¯ËÁÿ¨Å¼ÿ¡¿µÿ™µ¬ÿÄÑËÿ‡”ÿ…ŽÿÂÎËÿ™¯¬ÿ¤»´ÿ®Æ½ÿ³ËÂÿ¸ÏÆÿ¾ÖÊÿÀØËÿÀØÌÿ¿×Êÿ¾×ÊÿÃÙÌÿÆÜÊÿÇÛÉÿÂÚÈÿµÑÆÿ³ÑÅÿ´ÒÅÿµÓÄÿ´ÔÄÿ´ÕÂÿµÕÁÿµÕ¿ÿºÙÀÿÂÝÀÿÃݾÿÁÚ¾ÿÀÙ½ÿÅݼÿÄÚ»ÿ¼Õ¸ÿ¸Ô·ÿ¸Õ¸ÿ¼Ø¹ÿ¿Û·ÿÁܶÿÁܶÿ¿Ù´ÿ½×±ÿÂÚ±ÿÂÚ°ÿÄܰÿÈݯÿÈÝ®ÿÇݬÿÈÝ«ÿËߪÿËߨÿÏà§ÿÑá§ÿÏà¦ÿÍÝ£ÿÏÞ£ÿÒá£ÿÔá¢ÿÒà¡ÿÐÞ ÿÌÝžÿÌÛœÿËÜ›ÿÍÝ›ÿÑàšÿÖå™ÿ×å˜ÿÑâ–ÿÏÞ”ÿÓá”ÿÖä•ÿÕâ”ÿÔà’ÿÖáÿÜåŽÿÛåÿÛåÿÛã‹ÿÝå‹ÿßåŠÿâç‰ÿãéˆÿãè‡ÿäè†ÿãç…ÿßåƒÿÞä‚ÿÜä‚ÿÝåÿÝä~ÿàæ~ÿâç}ÿãç|ÿäè|ÿâæzÿàäxÿãæxÿåèwÿçèvÿèèuÿèètÿèèrÿèçrÿéépÿéèoÿèènÿçèlÿèèkÿéèjÿééiÿêçhÿêèhÿêèfÿëèeÿíédÿìécÿíébÿîêaÿîê`ÿïê`ÿîé^ÿìç\ÿïé\ÿðê[ÿñêYÿïéYÿíèWÿíèVÿîéVÿíèUÿíèTÿîéSÿîéRÿíèQÿïêPÿñëPÿñëOÿðéNÿðêMÿñêLÿñéKÿðèIÿîèHÿîèHÿðéHÿðéGÿñêFÿñêEÿðéDÿðèBÿòêBÿñéBÿóëAÿòêAÿóê@ÿôë?ÿóê>ÿôë=ÿôë<ÿõì<ÿõì;ÿõì;ÿôê9ÿõë8ÿõì9ÿöì8ÿõë7ÿôê7ÿõë6ÿôê6ÿóê5ÿôê5ÿôê5ÿõë4ÿõë4ÿôê3ÿóê2ÿôê3ÿõë3ÿôê3ÿõë3ÿõë3ÿöì3ÿöë3ÿöì3ÿöë3ÿöë3ÿõë4ÿöë4ÿöì4ÿöì5ÿöì5ÿöë6ÿôê6ÿóê6ÿóê6ÿôë7ÿóê8ÿôë9ÿôì:ÿõì;ÿóë<ÿòê<ÿòé<ÿóê>ÿôë>ÿôê?ÿôë@ÿôëAÿõìAÿóêBÿôëCÿóëDÿòêDÿñéEÿòëFÿòêHÿñêHÿòêIÿòêJÿñêKÿòëLÿóìNÿóìOÿóìPÿóìPÿòëQÿòëRÿñêQÿñêSÿòëUÿòëVÿòëWÿñëWÿïéXÿîéXÿíèYÿíè[ÿíè\ÿìé]ÿíé]ÿìé^ÿíê`ÿîêaÿîêbÿíécÿìédÿìédÿìèeÿéæeÿçåfÿçægÿèçhÿççiÿèçjÿèèkÿåålÿäämÿåænÿååoÿååpÿææqÿåæsÿäåtÿäåvÿåæwÿäæwÿåçxÿåæyÿãåzÿáãzÿáä{ÿãæ}ÿãåÿáã€ÿàã€ÿÜáÿÛá‚ÿÚáƒÿÙà…ÿÜã†ÿÞæˆÿÞæ‰ÿØâˆÿÕ߈ÿ×áŠÿÙãŒÿ×áÿÖàÿÖàÿÜå’ÿÚä”ÿØã”ÿ×â”ÿØã–ÿÛä—ÿÜå˜ÿÜæšÿÜåšÿÛä›ÿÙâœÿÒáÿÎÞŸÿÌÞ ÿËÝ¡ÿÊÝ¡ÿÌà¤ÿÎá¥ÿÏá¥ÿÍà¦ÿÈÜ¥ÿÇÛ¥ÿÉܨÿËÞ«ÿÎ߬ÿÏà­ÿÏà®ÿÍ߯ÿÍß°ÿÍß±ÿÊÞ²ÿÅܲÿkÂÛ²ÿÄÝ´ÿÆÝ¶ÿÅÜ·ÿÆÛ¸ÿÅܹÿÅÛºÿÈÝ»ÿÊß½ÿÉÞ¾ÿÉÞ¾ÿËà¾ÿÊß¿ÿÉÞÁÿÆÛÁÿÄÚÁÿÆÚÄÿÊÝÄÿÉÝÅÿÂÙÅÿ²ÌÁÿ¬Æ¼ÿ§Á·ÿž¹°ÿ˜²§ÿÂÐÉÿ…’‹ÿ…ŒÿÀËÊÿ–¬©ÿ¤¹°ÿ¬Â¸ÿ¯È¿ÿ³ËÁÿ»ÓÆÿ¿×Çÿ¾ÖÇÿ¼ÒÆÿ¸ÐÅÿºÐÄÿ¿ÔÅÿÃÖÄÿÀ×Âÿ³ÍÁÿ¯ÍÀÿ®Ë¿ÿ­Ë¾ÿ®Í½ÿ¯Î¼ÿ°Î»ÿ¯Ï»ÿ³Ñºÿ¼Ø»ÿÀÛºÿ»Õ¹ÿºÕ¸ÿ¿×·ÿ¿×¶ÿ¹Ð³ÿ²Ï´ÿ³Ð³ÿµÑ³ÿ¸Õ±ÿ½×°ÿ½Ö¯ÿºÔ®ÿ·Ñ«ÿ¹ÑªÿºÒ©ÿ½Ô©ÿÂשÿÄÙ©ÿÃØ§ÿÃצÿÃ×¥ÿÈÚ¥ÿÊݤÿÍÞ¢ÿÌÝ¢ÿÉÛŸÿÊÙŸÿÍÜžÿÑÞžÿÏÝÿÍÜœÿÊÚšÿÉÙ™ÿÇØ˜ÿÇÙ–ÿËÜ•ÿÐß•ÿÖã“ÿÏÞ“ÿËØŽÿÌÚÿÑÞÿÔߎÿÑÝÿÐ܉ÿØáŠÿØá‰ÿÙàˆÿØàˆÿØß…ÿÚá…ÿÝã„ÿßä„ÿßãÿßäÿßãÿÜáÿÛà|ÿÚà{ÿÙßzÿÙÞyÿÛáxÿÝáxÿßãwÿßâuÿÝàtÿÜßrÿÞàpÿßáqÿÿâoÿããoÿããmÿããmÿäãkÿåäiÿåäiÿãâfÿââfÿåäeÿåäeÿæådÿçädÿçäcÿèåaÿéæaÿêæ_ÿêæ_ÿêæ]ÿìç^ÿìç[ÿëç[ÿëæYÿêåXÿëåWÿìæUÿîçVÿîçTÿìæTÿëæRÿêåRÿëæPÿêåPÿëæOÿìæOÿëåLÿìæKÿîçKÿîèJÿïèJÿîçIÿðèHÿðèFÿîæFÿîçEÿîçDÿîçCÿïèCÿñéBÿðéAÿðè@ÿðè?ÿïç>ÿðç=ÿðè<ÿñè;ÿòé;ÿòé:ÿñè:ÿòé7ÿòè7ÿòè5ÿóé5ÿóé4ÿóè3ÿòç3ÿóé2ÿôé2ÿóé2ÿóé1ÿôé0ÿóé0ÿóé/ÿòè/ÿôê/ÿôé/ÿõê/ÿôé.ÿóè-ÿóè,ÿôê-ÿõê-ÿôê,ÿóè,ÿõê-ÿóé.ÿôê.ÿôé.ÿôé-ÿõê.ÿõê.ÿöë.ÿöë/ÿõê/ÿõê0ÿõê0ÿòç2ÿóé1ÿóé1ÿñç3ÿòé3ÿóé4ÿòé6ÿòé6ÿñè7ÿòé7ÿòé9ÿòè:ÿóê:ÿóê<ÿóé<ÿòé=ÿóê>ÿòé>ÿòê?ÿòé@ÿðè@ÿñéBÿðèCÿñéEÿñéEÿïçEÿðèFÿðèGÿòêIÿñéIÿðéJÿðéLÿðéLÿñéMÿïèNÿîçOÿîçOÿïèRÿïèSÿïèSÿìæTÿëæUÿëæVÿëæWÿëçXÿëçYÿêçZÿéæ[ÿêç]ÿìé]ÿíé_ÿëè`ÿêç`ÿëçaÿêæbÿçåcÿåãcÿäãeÿäãeÿåägÿæågÿåäiÿããiÿââjÿáâlÿáálÿââoÿããoÿãäpÿãäqÿâãsÿáãsÿâäuÿâävÿãävÿáãxÿßáwÿÞàyÿßáyÿáã{ÿßâ}ÿÜà}ÿÚß~ÿØÞÿÖÝ€ÿÕÝ€ÿ×Þ‚ÿÙá‚ÿÝä…ÿ×à†ÿÑÛƒÿÓÜ…ÿÕ݈ÿÕÞ‰ÿÓÝ‹ÿÑÛŠÿ×ߎÿ×àŽÿÕßÿÕß‘ÿÓÞ‘ÿÔÞ‘ÿÖà”ÿØâ–ÿ×á•ÿ×á—ÿÕà˜ÿÐݘÿËÚ™ÿÉØ™ÿÇØšÿÄÖšÿÅØžÿÈÙžÿÊÛŸÿÈÚ ÿÄ× ÿÁÕ ÿÂÔ¡ÿÅÖ¤ÿÈØ¤ÿÈØ¦ÿÉØ§ÿÇØ¨ÿÈÚ¨ÿÉÛªÿÆÚ¬ÿÃØ¬ÿ¿Õi­ÿÀ×°ÿÂÙ±ÿÃÙ²ÿÂÖ²ÿ¿Ô³ÿ¿Ô´ÿÄÚµÿÆÛ·ÿÃÙ·ÿÂØ¹ÿÆÜ¹ÿÈܺÿÆÜ»ÿÁÖ¼ÿ½Òºÿ¾Ò¼ÿÂÕ¿ÿÃÖ¿ÿ¿Ó¾ÿ®Çºÿ§Ã·ÿ ¼±ÿšµªÿ’­¢ÿ¿ÎÇÿƒ‰ÿ„ŽŒÿ¾ÊÉÿ“ª¨ÿŸ·¯ÿ©¿·ÿ¬Ã»ÿ¯Ç½ÿµÎÂÿ¾ÓÃÿ¼ÒÃÿ¹ÏÃÿµÌÀÿ´ÌÀÿ¹ÏÁÿ¼ÑÀÿ¼ÓÀÿ³ÎÀÿ°Í¿ÿ®Ë¾ÿ«Ë½ÿ¬Ë¼ÿ­Íºÿ¬Í¹ÿ¬Ì¸ÿ¬Ì·ÿ¶Ô·ÿ½Ö¶ÿºÔµÿ¹Ñ´ÿ¼Ó³ÿ¼Ó²ÿ¶Ï°ÿ°Ì°ÿ¯Ì®ÿ°Ì­ÿ³Ï«ÿ¹ÒªÿºÔªÿ·ÑªÿµÍ§ÿ³Ë¤ÿ³Ì¤ÿ¸Ï¥ÿ½Ó¥ÿ¿Ö¥ÿÀÖ£ÿ¾Ó¢ÿ¼Ñ ÿÁÕ¡ÿÅןÿÉÙžÿÉÚÿÇØÿÆÖ›ÿÈ×›ÿËÚšÿÌÚ™ÿÊÚ˜ÿÈØ—ÿÇ×–ÿÄÕ”ÿÄÕ’ÿÆØ“ÿËÛ’ÿÕâ‘ÿÑÞÿËÙŽÿÊØŒÿÎÚŒÿÑÝŒÿÑÜŠÿÎÙ‡ÿÔÞˆÿÖÞ‡ÿÖ߆ÿÖÞ…ÿÖÞƒÿÖÞ‚ÿÚß‚ÿÝâÿÝâ€ÿÞãÿßâ~ÿÝâ~ÿÛà|ÿÚßzÿÙßyÿØÝwÿÙßvÿÛàwÿÝávÿÞâtÿÝàsÿÜßqÿÝàpÿßàpÿáâoÿâânÿããnÿããlÿäãlÿæåjÿæåiÿåähÿââeÿââeÿäãdÿåädÿæäcÿåãaÿæã`ÿéå`ÿêæ^ÿêå]ÿéå]ÿëç\ÿìç[ÿëæZÿìæYÿêåWÿëåVÿëåVÿíæUÿíçTÿìæSÿëæQÿëåPÿëæPÿëæOÿìæNÿëåLÿìæLÿëåJÿîèIÿïèIÿïèGÿîçFÿïçFÿïçEÿîæCÿîæCÿîæBÿíæAÿïè?ÿïç>ÿðè=ÿïç<ÿïç<ÿïç;ÿïç:ÿðç:ÿñè9ÿòé7ÿñè6ÿñè5ÿñç4ÿóé4ÿóé4ÿôê3ÿóé1ÿôé1ÿòè/ÿôé/ÿôé/ÿôê.ÿóé-ÿóé-ÿóè,ÿôé+ÿóè+ÿôé+ÿõê*ÿõê)ÿõé)ÿôé(ÿôé(ÿõé(ÿõê(ÿõê(ÿôé'ÿõê(ÿõé(ÿöê(ÿôé(ÿõé)ÿôè)ÿõê)ÿöê*ÿöê*ÿõé+ÿõê,ÿôé-ÿóè.ÿòè.ÿòè.ÿñç/ÿòè/ÿòè0ÿòè1ÿòè2ÿòè3ÿòè4ÿòè5ÿñç5ÿòè7ÿòè7ÿñè8ÿðæ9ÿñè:ÿñè;ÿñè<ÿñè=ÿïç=ÿïç>ÿïæ?ÿïç@ÿðèAÿïçCÿïçDÿïçDÿñéEÿðèFÿðèHÿðèIÿðèJÿðèKÿîçLÿíæLÿíåLÿìåMÿîçOÿíçOÿëåRÿêåRÿêäSÿèãTÿèäUÿéåVÿèäWÿçäXÿæãYÿèåZÿêæ[ÿèå\ÿçã\ÿèä]ÿèä_ÿåâ`ÿâáaÿâáaÿáàbÿâádÿäâeÿããeÿááfÿßàgÿÿÞgÿÝÞiÿÞßjÿßàkÿßàlÿàámÿÞßmÿÜÞnÿÝßpÿÞßpÿßàrÿÞßsÿÜÞtÿÚÝtÿÛÝuÿÝßxÿÛßyÿÚÞzÿØÝzÿÖÛ{ÿÓÙ{ÿÒÙ|ÿÓÛ~ÿÔÜÿÚáÿÖÞ‚ÿÑÚÿÎØ‚ÿÑÚ…ÿÔ݈ÿÓ܉ÿÏÙˆÿÔÝ‹ÿÔÝŒÿÔÞÿÓÝŽÿÑÛÿÑÜÿÒÜÿÕß“ÿÕß”ÿÖá–ÿÖá˜ÿÒÞ™ÿÎÝšÿËÛšÿÈÚ›ÿÅ×›ÿÆØÿÈÚŸÿÊÛ¡ÿÊÜ¢ÿÆÙ£ÿÄ×¢ÿÄÖ¤ÿÅ×¥ÿÉÚ¦ÿÈÚ¨ÿÈÙ©ÿÇÙ¨ÿÈÚªÿÊÜ«ÿÈÛ­ÿÅÚ®ÿ¾Öi­ÿ¾Ö®ÿ¿×°ÿÁزÿÂØ³ÿ½Ô³ÿ¾ÕµÿÄÚ·ÿÆÛ¸ÿÄÙ¹ÿÂØºÿÅÛ»ÿÊÞ¼ÿÈܼÿÄÙ½ÿ¾Ó¼ÿ¼Ñ¼ÿ¿Ô¾ÿÀÔ¿ÿ¼Ó½ÿ°Êºÿ¨Ä¶ÿ¡¾²ÿ—´ªÿ’®¢ÿ¿ÎÇÿ‚‰ÿ•¤¤ÿÍÜÞÿÎÝÞÿÑßßÿÕãàÿÖäàÿÖäáÿÖåáÿÛçáÿÛçàÿÚæàÿØäßÿÖãÞÿ×äÞÿÙåÞÿØåÝÿÖåÜÿÔãÜÿÐâÛÿÏàÛÿÐáÙÿÑâÙÿÑãÙÿÑãØÿÐâØÿÓåÙÿØçØÿÙçØÿÙçÖÿÙæÕÿØåÔÿÖäÔÿÓâÔÿÑáÓÿÑáÒÿÓãÑÿÖåÑÿØåÐÿ×åÐÿÖäÐÿÓáÎÿÔáÎÿÕãÎÿÖäÎÿÙæÍÿÛçÌÿÚåÌÿØäËÿÙåËÿÛæËÿÞçÊÿßèÉÿßèÈÿÜæÈÿÝåÇÿÞçÇÿßçÆÿßçÅÿÞæÄÿÝæÃÿÛåÃÿÚäÂÿÛåÃÿÝæÂÿãêÂÿãêÁÿáéÀÿÞæ¿ÿßæ¿ÿãé¿ÿãé¾ÿáç½ÿãé¾ÿåê¾ÿæë½ÿæë¼ÿæê¼ÿæê»ÿçëºÿéìºÿêí¹ÿêí¹ÿëí¹ÿêí¹ÿéì¸ÿéì·ÿèë·ÿçëµÿèëµÿéì¶ÿêíµÿëíµÿëí´ÿêì³ÿëì³ÿëì²ÿìí²ÿíí²ÿíî±ÿíí°ÿîî¯ÿïï¯ÿðð¯ÿðï®ÿïï­ÿïï­ÿïî¬ÿïï¬ÿðð¬ÿðï«ÿðï«ÿðïªÿñðªÿñð©ÿñð©ÿóñ¨ÿóñ¨ÿôñ§ÿôñ§ÿóð¦ÿòð¥ÿóð¥ÿóð¥ÿóð¤ÿóð£ÿòð£ÿñð¢ÿòð¢ÿòð¡ÿòð¡ÿòð ÿòð ÿòïŸÿóðŸÿôñžÿõñžÿôñÿôñÿõñÿôñœÿôð›ÿôð›ÿôðšÿôñ™ÿõñ™ÿõñ˜ÿõñ˜ÿõñ˜ÿõð—ÿôð—ÿõñ–ÿõñ–ÿöñ–ÿöñ•ÿõñ”ÿöñ“ÿöñ“ÿöñ“ÿ÷ò’ÿ÷ñ’ÿ÷ò‘ÿöñ‘ÿ÷ñ‘ÿ÷ñ‘ÿ÷òÿ÷òÿ÷òÿ÷ñÿ÷ñÿöñŽÿ÷òÿøòÿøòÿøòÿøòÿ÷òŒÿ÷òŒÿøòŒÿøòŒÿ÷ñŒÿ÷òŒÿøòŒÿøòŒÿøòŒÿøòÿøòÿøòÿøòÿøòŽÿøóÿøòÿ÷òÿ÷òÿ÷ñÿ÷òÿöñ‘ÿöñ‘ÿöñ‘ÿöñ’ÿ÷ò’ÿ÷ò“ÿöò“ÿöñ•ÿöñ•ÿ÷ò•ÿ÷ò–ÿöñ–ÿöñ–ÿöñ—ÿöñ˜ÿöò˜ÿöñ˜ÿõñ˜ÿõð™ÿõð™ÿõñ›ÿõñ›ÿôð›ÿõñœÿôðœÿõñÿõñÿõñžÿõñžÿõñžÿõñ ÿõñ ÿôð ÿôð ÿôð¡ÿôñ¢ÿôð¢ÿóð£ÿòð£ÿñð¤ÿñï¤ÿñï¥ÿñð¥ÿñð¦ÿñï¦ÿðï§ÿñð¨ÿñð¨ÿñð©ÿñð©ÿñïªÿñð«ÿðï«ÿïî¬ÿîî¬ÿíí¬ÿîî­ÿïï®ÿïï®ÿïï¯ÿíî¯ÿÿì¯ÿìí±ÿìí²ÿìî²ÿîï³ÿîð³ÿíï´ÿëí´ÿëíµÿìïµÿíï¶ÿíï·ÿìï·ÿëí·ÿëí¸ÿëí¹ÿëî¹ÿêíºÿêíºÿéí»ÿçë»ÿæë¼ÿæë¼ÿæì½ÿêï¾ÿêî¾ÿçì¿ÿäê¾ÿåê¿ÿæìÀÿçìÀÿåëÀÿæëÂÿæìÃÿçìÃÿæìÄÿåëÄÿåëÄÿåëÅÿæìÆÿçìÇÿçíÇÿçíÇÿåìÈÿäìÈÿâêÉÿàéÉÿÞèÉÿÞèÊÿßéËÿßêÌÿßêÍÿßéÍÿÞèÎÿÞçÎÿÝçÎÿßéÏÿßéÏÿßéÐÿÞéÐÿßéÐÿàêÑÿßêÒÿÞêÓÿÛéiÒÿÚçÓÿÚæÔÿÛçÕÿÜèÕÿÚæÕÿÚæÖÿÛè×ÿÞéØÿÝéØÿÜéÙÿÜéÙÿàëÚÿßêÚÿÞéÛÿÛæÛÿÙåÚÿÚæÜÿÛæÜÿÙæÜÿ×åÜÿÓãÜÿÏáÜÿÍÞÛÿËÞÚÿËÜÚÿ‘£ ÿŸ«ÿ ­ÿ ®ÿ¡¯ÿ“¤±ÿ–¦²ÿ—§³ÿ•¦³ÿ™¨´ÿšª´ÿš©´ÿ–¦³ÿ•¥²ÿ–¥³ÿ–¦´ÿ•¦´ÿ–©´ÿ“§´ÿ£µÿ‹¡´ÿŒ¢µÿ¤µÿ¤µÿŒ¤µÿŒ¢³ÿ¤´ÿ‘§µÿ–ªµÿ–ªµÿ•§µÿ’¥´ÿ’¥µÿŒ¢µÿŠ¡µÿ‰¡´ÿ‹¢µÿ¤µÿ¦µÿ‘¦µÿ‘§µÿ‹¢µÿ‹¢´ÿŠ¡µÿ‹¡µÿ¤¶ÿ“§¶ÿ“§¶ÿ¤¶ÿ¤µÿ¥µÿ”§¶ÿ™ª¶ÿ™«µÿ–§µÿ•¦µÿ•§µÿ—¨µÿ–¨µÿ–§µÿ•§µÿ“¥µÿ¤³ÿ¤´ÿ‘¥´ÿ—¨µÿœ«µÿœ¬µÿ—§µÿ•¥³ÿ™¨µÿ›©µÿ™¨µÿ˜§´ÿš©µÿ«µÿž«µÿ«µÿœ«µÿž«µÿž«µÿ ¬µÿ¡®µÿ¢®µÿ¡®µÿ ­µÿŸ¬µÿž«µÿªµÿœ©³ÿª´ÿžªµÿŸ«µÿŸ«µÿŸ«µÿŸªµÿžª´ÿ¡¬´ÿ¡¬´ÿ¡¬³ÿ¡«³ÿ¢¬³ÿ¤®´ÿ¤®´ÿ£­´ÿ¤­´ÿ¢¬³ÿ¡«²ÿ¢«³ÿ£¬³ÿ£¬³ÿ£¬³ÿ£¬³ÿ¤­³ÿ¦®´ÿ¦®´ÿ¥­³ÿ¦®³ÿ§¯³ÿ§¯³ÿ¦­³ÿ¥¬²ÿ¦¬³ÿ§­³ÿ§¯µÿ¨°µÿ¦¯´ÿ¤­´ÿ¢¬³ÿ¢¬³ÿ¤¬´ÿ¤­´ÿ¤­´ÿ¢¬³ÿ¤¬³ÿ¥®´ÿ§¯´ÿ§¯´ÿ§¯´ÿ¦­´ÿ¦®µÿ¤­µÿ¤­µÿ£¬µÿ¤­µÿ¥­µÿ¦¯µÿ¦¯µÿ¦¯µÿ¤¬µÿ¤­µÿ£¬µÿ£¬´ÿ¥®µÿ§°¶ÿ§¯¶ÿ¦®¶ÿ¥®µÿ¥­´ÿ§¯µÿ¨°µÿ©±¶ÿ§¯µÿ¦®µÿ¦®µÿ§¯µÿ§¯µÿ§¯µÿ¦¯µÿ¥­µÿ¢¬³ÿ¤­µÿ¤­µÿ§¯µÿ©±µÿ¨°µÿ¦®µÿ¤¬³ÿ¦¯µÿ§¯µÿ¦®µÿ¥¬³ÿ¦®´ÿ§¯´ÿ§¯´ÿ§¯´ÿ¦®´ÿ§¯´ÿ¨¯µÿ©°µÿ©°´ÿ©°³ÿ¨°´ÿ§¯´ÿ¨¯µÿ§¯µÿ¦­´ÿ¥­³ÿ¦­´ÿ¦­´ÿ§®µÿ¦®´ÿ¦­´ÿ¦­´ÿ¥­³ÿ¨¯µÿ§¯´ÿ§¯³ÿ§®³ÿ§¯³ÿ¨°´ÿ¨°´ÿ§¯´ÿ¨¯´ÿ§®³ÿ¥­³ÿ¦®´ÿ§¯´ÿ§®´ÿ§®´ÿ§®µÿ¨¯µÿ¨°µÿ©°µÿ§¯´ÿ©°µÿª°µÿª°µÿ§¯´ÿ§­³ÿ§­³ÿ§­³ÿ¦­³ÿ§¯³ÿ¦®´ÿ¤¬´ÿ¢«³ÿ¢«³ÿ£¬³ÿ¤­´ÿ¢¬³ÿ¢«²ÿ¢«²ÿ¤­³ÿ¦¯³ÿ¦¯³ÿ¥­³ÿ¤¬³ÿ¤¬³ÿ «³ÿŸª³ÿŸª³ÿŸª³ÿ «³ÿ «³ÿ¡«³ÿ «³ÿ¨²ÿœ¨²ÿ›§²ÿ›§²ÿž©³ÿ «³ÿŸ«³ÿ©³ÿœ¨²ÿœ©²ÿžª²ÿ¡¬³ÿ¡¬³ÿžª³ÿ¨²ÿ¨²ÿŸª³ÿž«´ÿžª´ÿª´ÿš¨´ÿ—¦³ÿ–¦³ÿ—§³ÿœª³ÿ ¬´ÿ ¬µÿš¨´ÿ—¦³ÿ›©µÿœªµÿš¨µÿ™§³ÿ›©µÿ«µÿ«µÿ›ªµÿ›ªµÿ›ªµÿœ«µÿž¬µÿ ­¶ÿ¡­¶ÿž­¶ÿœ¬¶ÿ›«¶ÿ™ª¶ÿ—¨¶ÿ–§µÿ–§¶ÿ–¨¶ÿ—¨¶ÿ—¨¶ÿ–¨¶ÿ•§¶ÿ”¦µÿ˜©¶ÿ™ª¶ÿ—©¶ÿ—¨µÿ—©µÿ™«¶ÿš«¶ÿ—ª¶ÿk˜ª¶ÿ–¨µÿ“¦µÿ•§¶ÿ–¨¶ÿ–§¶ÿ•§¶ÿ•§µÿ–§µÿ™ªµÿ™©µÿ–§µÿ™ªµÿš«µÿšªµÿ—§µÿ–¦³ÿ–¦´ÿ—¦µÿ•¦³ÿ–¨³ÿ‘¥³ÿ‹¡±ÿˆž°ÿˆ¯ÿˆž­ÿ†œ«ÿþ[Gœ„€ O¤„ô„ …@……"…(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/cynthiune-splash-faded.tiffCreated with The GIMP}]u]A&HHCynthiune-1.0.0/Images/cynthiune-splash.tiff000644 001751 000024 00000302444 11733546701 021532 0ustar00multixstaff000000 000000 II*¾ƒp}†ÿr}†ÿsˆÿtˆÿs€‰ÿr‰ÿq‰ÿp}ˆÿu‚‰ÿt€‰ÿu€ŠÿxƒŠÿyƒ‰ÿx‚‰ÿw‰ÿx‚‰ÿv€‰ÿu€ˆÿu€‰ÿw‚‰ÿw‚‰ÿv‰ÿu€‰ÿv‰ÿy„‰ÿw‚‰ÿw‰ÿyƒ‰ÿ{ƒ‰ÿzƒ‰ÿy‚‰ÿz‚‰ÿx‚‰ÿx‚‰ÿy‚‰ÿy„‰ÿxƒ‰ÿt€ˆÿsˆÿsˆÿp~ˆÿs€‰ÿt€‰ÿr~‰ÿr~ˆÿu‚‰ÿy„‰ÿxƒ‰ÿuˆÿv€ˆÿw‰ÿw‰ÿu‰ÿs}‰ÿs~‰ÿu‰ÿu€‰ÿw‚‰ÿu‰ÿsˆÿs‰ÿu€ŠÿwŠÿu‰ÿx‰ÿw‰ÿw€‰ÿx‰ÿy‚‰ÿyƒ‰ÿyƒŠÿzƒŠÿx‚Šÿx‚‰ÿx‚‰ÿx‚‰ÿyƒ‰ÿyƒ‰ÿx‚‰ÿw€‰ÿu€‰ÿt€‰ÿu‰ÿyƒŠÿ{…Šÿz„‰ÿw‚‰ÿtˆÿw€‰ÿyƒ‰ÿyƒŠÿw€ˆÿx‚‰ÿ}…Šÿ~…Šÿ{„Šÿ|„Šÿ|„Šÿ}„Šÿ~…Šÿ€†Šÿ€†Šÿ€…Šÿ…Šÿ|ƒ‰ÿ|ƒˆÿ|ƒ‰ÿ|ƒ‰ÿ}ƒ‰ÿ~„Šÿ~…Šÿ…Šÿ~…Šÿ~…Šÿ}„Šÿ}„‰ÿ€†‹ÿ€†‹ÿ€†‹ÿ‚†Šÿ‚‡Šÿ‚†Šÿ‚†Šÿ‚‡Šÿ†Šÿ€…‰ÿ†Šÿ‚‡Šÿƒ‡Šÿƒ‡‹ÿ‚‡‹ÿƒ‡‹ÿ„ˆ‹ÿƒ‡Šÿƒ†Šÿ„ˆŠÿ„ˆŠÿ„ˆŠÿƒ†Šÿƒ†Šÿ‚†Šÿ‚†Šÿƒ‡Šÿƒ‡Šÿ‚‡Šÿ€…‰ÿ„ˆÿ„ˆÿ~„ˆÿ€…‰ÿ€…‰ÿ„‰ÿ„ˆÿ†‰ÿ‚†‰ÿ‚†‰ÿ€…ˆÿ€„ˆÿ…‰ÿ…‰ÿ€„‰ÿ„‰ÿ„‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ„ˆÿ~ƒ‡ÿ~ƒˆÿ€„‰ÿ€…‰ÿ„‰ÿ€…‰ÿ€…‰ÿ„ˆÿ€…‰ÿ…‰ÿ…‰ÿ€…ˆÿ€…‰ÿ€…‰ÿ€…‰ÿ„ˆÿ€…‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ„ˆÿ~„ˆÿ~„‰ÿ~„‰ÿ€…‰ÿ†‰ÿ€†‰ÿ…‰ÿ}ƒˆÿ~„‰ÿ…‰ÿ€…Šÿ}ƒˆÿ„‰ÿ‚†Šÿ‚†Šÿ€…Šÿ†Šÿ€†Šÿ†Šÿ‚†Šÿƒ‡Šÿƒ‡Šÿƒ‡Šÿƒ‡Šÿ€…‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ€…‰ÿ€†Šÿ‚†Šÿ‚†Šÿ†Šÿ€†Šÿ€…Šÿ…‰ÿ†Šÿ†Šÿ†Šÿ‚†Šÿƒ†‰ÿ‚†‰ÿ‚…‰ÿ‚†‰ÿ‚…‰ÿ€…‰ÿ…‰ÿƒ‡Šÿƒ‡Šÿ‚†Šÿ†Šÿ‚†ŠÿƒˆŠÿ‚†Šÿ‚†Šÿƒ†Šÿƒ‡Šÿ‚†Šÿ‚†‰ÿ‚†Šÿ…Šÿ…Šÿ‚†Šÿ‚‡Šÿ†Šÿ~…‰ÿ}„‰ÿ}„‰ÿ|ƒ‰ÿ~…Šÿ~…Šÿ|ƒŠÿ|ƒ‰ÿ~…Šÿ€‡Šÿ†Šÿ}„ˆÿ}„‰ÿ~…Šÿ~…Šÿ}„Šÿ{‚Šÿ{ƒŠÿ}„‹ÿ|„‹ÿ}…‹ÿ{„Šÿyƒ‰ÿy‚Šÿ{„‹ÿ{ƒŠÿz‚Šÿ{„Šÿ{ƒŠÿzƒŠÿ{ƒŠÿ{„Šÿ{„Šÿ{„Šÿ{…‹ÿzƒ‹ÿzƒ‹ÿyƒŠÿyƒŠÿyƒ‹ÿyƒŠÿx‚Šÿu€‰ÿs€‰ÿr‰ÿs‰ÿv‚Šÿx„ŠÿxƒŠÿs€Šÿo}ˆÿq~‰ÿt€Šÿt€Šÿq~‰ÿr‰ÿwƒŠÿxƒŠÿs€ŠÿuŠÿtŠÿv‚ŠÿxƒŠÿz„Šÿz…ŠÿyƒŠÿx‚‰ÿks‰ÿsˆÿrˆÿrˆÿsˆÿs‰ÿt€‰ÿt€‰ÿt€‰ÿr‰ÿr~‰ÿp~ˆÿt‰ÿs€‰ÿt‰ÿw‚‰ÿyƒ‰ÿx‚‰ÿw‰ÿxˆÿvˆÿt‡ÿuˆÿv€ˆÿu€‡ÿt†ÿs~†ÿq}‡ÿ«·Áÿ­¹Âÿ­ºÃÿ­ºÃÿ¬¹Ãÿ¬¹Ãÿ¬¹Ãÿ¯»Äÿ®ºÄÿ®»Äÿ°¼Äÿ²½Äÿ²¼Äÿ²¼Äÿ³½Äÿ±¼Äÿ¯ºÃÿ¯ºÃÿ°¼Äÿ±½Äÿ°¼Äÿ¯¼Äÿ°¼Äÿ³¾Äÿ²½Äÿ²½Äÿ³¾Äÿµ¾Äÿµ¾Äÿµ½Äÿ´½Äÿ³½Äÿ²½Åÿ³½Åÿ´¾Äÿ³¾Äÿ¯¼Ãÿ­ºÃÿ­ºÃÿ«¹Ãÿ­ºÄÿ®ºÄÿ¬¸Ãÿ¬¸Ãÿ¯»Äÿ²½Ãÿ²½Äÿ±¼Ãÿ°¼Ãÿ±¼Äÿ±»Äÿ¯ºÄÿ­¹Äÿ®¹Äÿ¯ºÄÿ¯»Äÿ°¼Äÿ°¼Äÿ®ºÃÿ®ºÃÿ¯ºÄÿ°»Äÿ°»Äÿ²¼Äÿ³½Äÿ³¼Åÿ³¼Åÿ³¼Åÿ³½Åÿ´¾Åÿ´¾Åÿ´½Åÿ´¾Åÿ³½Äÿ³¼Äÿ´¾Åÿµ¾Åÿ´½Åÿ²¼Äÿ±¼Åÿ°¼Äÿ¯»Äÿ²½Åÿµ¿Åÿ·ÀÅÿ´¾Åÿ±¼Äÿ²¼Äÿ³½Åÿ³¾Åÿ²¼Äÿ´½Äÿ·ÀÅÿ¸ÀÅÿ·¿Åÿ·¿Åÿ·¾Åÿ·¿Åÿ¹ÀÅÿºÁÅÿ»ÁÅÿºÀÅÿ¹ÀÄÿ¸¾Äÿ·¾Äÿ·¾Ãÿ·¾Äÿ·¾Ãÿ·¾Äÿ¸¿Åÿ¹ÀÅÿ¹ÀÅÿ¸¿Åÿ¸¿Äÿ·¾ÄÿºÀÅÿ¹ÀÅÿºÀÅÿ»ÀÅÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ»ÀÄÿº¿Ãÿº¿Ãÿ»ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ½ÂÄÿ½ÁÄÿ¼ÀÄÿ½ÁÄÿ½ÁÄÿ½ÁÄÿ½ÀÄÿ½ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÃÿ½ÀÃÿ¼ÀÃÿº¿Âÿ¹¾Âÿ¹¾Âÿ¸¾Âÿº¿Ãÿº¿Ãÿ¸¾Âÿ¸½Âÿº¿Ãÿ»ÀÃÿ¼ÀÃÿº¿Âÿº¿Âÿº¿Ãÿ»¿Ãÿº¾Ãÿ¹½Âÿ¹¾Ãÿ¹¾Ãÿº¾Ãÿ¹¾Âÿ¹¿Âÿ¹¾Âÿ¹¾Âÿ¹¾Ãÿ¹¾Âÿ¹¾Âÿ¹¾Âÿº¾Âÿ¹¾Âÿ¹¾Âÿº¾Ãÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿ¹¾Âÿº¾Ãÿº¿Ãÿ»¿Ãÿº¿Ãÿ¸¾Âÿ¹¾Ãÿ¸¾Ãÿ¸¾Ãÿ¹¿ÄÿºÀÃÿ»ÀÃÿº¿Äÿ¸¾Ãÿ¸¾Ãÿ¹¿Äÿ¹¿Äÿ¸¾Ãÿ¸¾ÃÿºÀÃÿ»ÀÃÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿ»¿Ãÿ¼ÀÄÿ¼ÀÃÿ¼ÀÃÿ¼ÀÃÿº¿Ãÿº¿Ãÿº¿Ãÿº¿Ãÿ¹¿Ãÿº¿Äÿ»ÀÄÿ»ÀÄÿ»ÀÄÿºÀÄÿº¿Äÿ¹¿Ãÿ»ÀÄÿ»ÀÄÿ»ÀÄÿ¼ÀÄÿ¼ÀÄÿ¼ÀÄÿ½ÀÄÿ½ÀÄÿ¼ÀÄÿ»¿Ãÿ»ÀÄÿ¼ÀÄÿ½ÂÅÿ¼ÁÅÿ¼ÁÅÿ¼ÀÅÿ½ÂÅÿ¼ÀÄÿ¼ÀÄÿ¼ÁÄÿ½ÁÄÿ½ÁÄÿ½ÁÅÿ¼ÀÄÿ¼ÀÄÿ»ÀÄÿ¼ÀÄÿ¼ÁÄÿ»ÀÄÿ¹ÀÄÿ¸¿Äÿ·¾Ãÿ¶¾Ãÿ¸¿Åÿ¸¿Åÿ·¾Äÿ¶½Äÿ¸¿Äÿ¹ÀÄÿºÀÄÿ¸¿Äÿ¸¾Ãÿ¸¿Äÿ¸¾Äÿ·¾Äÿµ½Äÿµ¼Äÿµ½Äÿµ½Äÿµ¾Äÿµ¾Äÿ³½Ãÿ³¼Ãÿ³½Äÿ³½Äÿ³½Äÿ´½Äÿµ½Äÿ´¼Äÿ´½Äÿ´½Äÿ´½Äÿ´¾Äÿ´¾Äÿ´½Äÿ³½Äÿ³¼Äÿ²¼Äÿ³½Äÿ³½Äÿ²¼Äÿ¯ºÃÿ®ºÄÿ¬¹Ãÿ«¸Ãÿ®ºÄÿ±½Äÿ²¾Äÿ®ºÄÿª¸Ãÿ«¸Ãÿ­ºÄÿ­ºÄÿ«¸Ãÿ¬¹Ãÿ°¼Äÿ±½Äÿ®¼Äÿ®ºÄÿ®ºÄÿ®ºÄÿ±½Äÿ³¾Äÿ´¾Åÿ³¾Åÿ²½Åÿk¯»Äÿ®ºÄÿ­ºÄÿ­ºÄÿ­¹Äÿ­ºÄÿ®»Åÿ¯¼Åÿ®¼Åÿ­»Åÿ¬ºÄÿ¬¹Äÿ¯¼Åÿ®»Äÿ¯¼Äÿ±½Åÿ²½Äÿ²¼Äÿ³¼Äÿ³½Åÿ²½Åÿ¯ºÃÿ®ºÃÿ¯»Ãÿ°»Ãÿ¯ºÂÿu€‰ÿr~ˆÿ«·Âÿi’ÿmƒ”ÿm…–ÿl…—ÿk„˜ÿj„—ÿn†™ÿq‰›ÿrŠšÿr‰šÿuˆšÿv‹šÿw‹™ÿvŠ™ÿv‹™ÿrˆ˜ÿq‡—ÿr‰™ÿt‹™ÿt‹™ÿr‰™ÿqˆ™ÿv‹˜ÿw‹˜ÿwŠ™ÿxŠ™ÿ{‹™ÿ}™ÿ~Žšÿ|ŒšÿwŠ™ÿvŠ™ÿv‹™ÿy™ÿy™ÿtŒ™ÿr‰˜ÿo‡˜ÿk…˜ÿn‡›ÿp‡šÿo†šÿn†˜ÿo‡™ÿvŒ›ÿz›ÿyŽ›ÿxŒšÿv‹›ÿwŠ›ÿs‰šÿp…›ÿp†›ÿr‡›ÿu‹›ÿvŒœÿvŒœÿvœÿu‹œÿqˆ›ÿqˆœÿu‰œÿvŠœÿ{œÿ{œÿyŠœÿwŠ›ÿzœÿ|Žœÿ|Žœÿ}œÿ|ŽœÿzŒ›ÿy‹›ÿ|Žœÿœÿ}œÿzœÿxÿtŠšÿq‡˜ÿsˆ™ÿzšÿ’šÿ}›ÿy‹šÿv‰™ÿy‹šÿzŒšÿz‹šÿzŒšÿ}Œšÿ€šÿ‚šÿšÿ~Ž™ÿ™ÿ€™ÿƒ˜ÿƒ—ÿ„—ÿƒŽ—ÿ—ÿ‹•ÿ}Š•ÿ|ˆ“ÿ{ˆ“ÿ}‰”ÿ‹–ÿ€–ÿ€–ÿ€–ÿŒ–ÿ}Š”ÿŒ–ÿ‚–ÿƒŽ–ÿƒ–ÿ…–ÿ…–ÿ†–ÿ†–ÿ†–ÿ…Ž–ÿ…Ž•ÿˆ‘˜ÿ‰’˜ÿˆ’˜ÿˆ‘˜ÿ‡‘˜ÿ‰’˜ÿŠ’˜ÿŠ’˜ÿŠ‘˜ÿ‹’˜ÿ”™ÿŒ“˜ÿ‹’˜ÿŠ‘˜ÿŠ’™ÿŠ“™ÿŒ•šÿŒ•šÿŠ”šÿ‰’™ÿ‡‘™ÿ†™ÿ‰“œÿŠ”œÿŠ“œÿˆ’šÿˆ’šÿŒ•œÿŽ—œÿŽ–œÿ•›ÿŒ•œÿŒ•œÿ‹”œÿŠ“œÿ‰“œÿ‰’›ÿŠ”›ÿŠ”›ÿŠ”›ÿŠ”›ÿˆ“šÿ†™ÿ†‘šÿ‡™ÿˆ‘šÿŠ“šÿŠ“šÿˆ‘™ÿ‡˜ÿ‰’™ÿ‰’™ÿ‰’™ÿ‰“™ÿŠ“šÿˆ‘™ÿˆ‘™ÿ‰“šÿŠ“šÿ‰“šÿˆ’šÿ‡’›ÿ„™ÿ‚Ž˜ÿ„™ÿ‰”›ÿ‹–›ÿŠ•›ÿ†‘šÿ„™ÿ†‘šÿ†‘™ÿ†™ÿ†™ÿˆ‘šÿŠ“šÿŠ“šÿˆ’šÿ‡‘™ÿˆ‘™ÿŠ“›ÿ‹”šÿŒ”šÿ•›ÿŽ–œÿ‹”›ÿŠ”›ÿ‰“›ÿˆ’šÿ†™ÿˆ‘šÿŠ”œÿŠ”›ÿ‰”›ÿ‰“›ÿ‡’šÿ†™ÿ‰’›ÿ‰“›ÿŠ”›ÿ‰“šÿŠ“šÿ‹”šÿŒ“šÿ‹“šÿ‹“šÿ‰’™ÿˆ‘˜ÿ‰’™ÿ‰“™ÿ‰“™ÿˆ’™ÿ‡’™ÿŠ“šÿŠ“šÿŠ“šÿ‹”›ÿŒ”›ÿ•›ÿ”šÿŠ“šÿ‰’šÿˆ‘šÿˆ’šÿ‰“šÿ‰“šÿ†’šÿƒ˜ÿŽ˜ÿ˜ÿ€Žšÿ‚šÿŽšÿ˜ÿ€˜ÿ„‘šÿ†’šÿ…’šÿ„™ÿƒšÿ‚šÿ€Žšÿ~‹šÿ}‹šÿ}Œšÿ~ŽšÿŽšÿ~Žšÿ~šÿ|šÿyŠ™ÿx‹šÿ{‹šÿ{Œšÿšÿ~šÿ|‹šÿzŠ™ÿ|šÿ}šÿ|Œšÿ{Ž™ÿ{Œšÿy‹™ÿxŠšÿy›ÿ{Ž›ÿyŒ›ÿuŠšÿq‰šÿn‡™ÿkƒ˜ÿl…™ÿtŒ›ÿz‘›ÿwŽœÿpˆ›ÿk„™ÿo†šÿoˆšÿo‡›ÿo‡›ÿq‰œÿu‹›ÿwŒ›ÿrŠ›ÿqˆšÿp‡šÿs‰›ÿxŒ›ÿy›ÿzŽ›ÿy›ÿktŠ›ÿr‰šÿo‡™ÿm†˜ÿl„™ÿn…šÿpˆ›ÿq‰›ÿp‰›ÿo‰›ÿm‡›ÿk…™ÿp‡›ÿp‰›ÿrŠšÿr‰šÿuˆšÿw‹šÿwŠ™ÿu‰™ÿu‰—ÿp„•ÿn‚“ÿm‚’ÿm‚ÿ­¹Àÿt‡ÿsŠÿ­ºÅÿm…šÿqŠÿsŸÿsŽ¡ÿsŽ¢ÿq¢ÿpŒ¡ÿw¢ÿx‘¢ÿuŽ ÿx ÿ}‘¢ÿ“¢ÿ|’¡ÿ}”¢ÿz‘¢ÿw¡ÿy¢ÿz’£ÿ{“£ÿy’£ÿy£ÿ{“¤ÿ–¤ÿ•¤ÿ~“¤ÿ€•¤ÿ†˜¤ÿ‡˜¤ÿ„–¤ÿ€“¤ÿ~“¤ÿ}“¢ÿ”£ÿ‚–£ÿ}•£ÿy’¢ÿtŽ¡ÿq¡ÿqŒ¢ÿt¡ÿu¡ÿt¡ÿq‹žÿwŸÿ~•¡ÿ•¡ÿ|”¡ÿz‘¡ÿz‘¢ÿy¢ÿwŽ¢ÿv¢ÿu¢ÿy‘¢ÿy‘¢ÿ{“£ÿ~•£ÿ|’£ÿvŽ¡ÿsŒ¡ÿx£ÿyŽ¢ÿ”¢ÿ‚”¢ÿ}‘£ÿ{ ÿ“£ÿ”£ÿ€”£ÿ„–£ÿ‚•£ÿ“¢ÿ€’¢ÿ”¢ÿƒ–¢ÿ‚•¢ÿ“¡ÿ~’£ÿ|’£ÿxŽ ÿvŸÿ}’¢ÿ…™£ÿ‡™£ÿ„–£ÿ}’¢ÿ~‘¡ÿ€“¢ÿƒ”£ÿ‚”¢ÿ“¡ÿ†–£ÿ‹š£ÿ‡—£ÿ‡—£ÿ†•¡ÿˆ–¢ÿŠ˜£ÿ‹™¢ÿŽš¢ÿ™¢ÿŠ˜¢ÿ‰–¡ÿ†”Ÿÿ„’žÿ„’žÿ…“Ÿÿ‡“Ÿÿˆ•Ÿÿ‰– ÿˆ– ÿˆ• ÿ†”žÿ†”žÿ‰•žÿ‹–Ÿÿ‰”ÿŠ•ÿŽ—Ÿÿ˜Ÿÿ–žÿŽ˜ŸÿŽ—ŸÿŒ–žÿ—Ÿÿ™ ÿ™ ÿŽ˜Ÿÿ–žÿŽ—žÿ™Ÿÿ˜Ÿÿ˜Ÿÿ˜Ÿÿ’™žÿ‘˜ÿ‘˜žÿ—žÿŽ—žÿ•œÿ—žÿ™žÿ˜žÿ—žÿŒ•žÿŠ•žÿ‹–Ÿÿ— ÿŽ˜ ÿ— ÿ‹•ÿŽ—žÿ‘š ÿ’š ÿš ÿ™ ÿ™ ÿ˜ ÿ˜¡ÿŽ—¡ÿ—¡ÿ™¡ÿŽ™ ÿš¡ÿ‘š¡ÿ™¡ÿ‹–Ÿÿ‹– ÿ˜¡ÿ— ÿš¡ÿ‘š¡ÿš¢ÿ–Ÿÿ™¡ÿš¡ÿš¡ÿ’›¢ÿ’œ£ÿš¢ÿ™¡ÿ›¢ÿ“œ£ÿ’œ£ÿš¢ÿš£ÿš£ÿŠ–¡ÿ‰• ÿŽš£ÿ’£ÿ“£ÿ‘›£ÿ‹—¡ÿŒ˜¡ÿŽ™¢ÿš£ÿŽ™¢ÿ˜¡ÿ‘œ¤ÿ”ž¤ÿ’œ¤ÿ‘œ¤ÿš¢ÿš¢ÿ“›£ÿ“£ÿ”£ÿ”£ÿ’œ£ÿ‘›£ÿ™¡ÿŒ— ÿŒ— ÿ˜¡ÿ™¢ÿ‘š£ÿ‘›£ÿœ¤ÿš£ÿŽ™¢ÿ˜¡ÿš¢ÿ‘›£ÿŽ˜ ÿ˜ ÿ‘š¡ÿ’›¡ÿ™ ÿ‘›¡ÿ™ ÿ˜Ÿÿ™ ÿš¡ÿš¡ÿ™¡ÿ˜¡ÿ™¡ÿš¡ÿ‘š¡ÿ™¡ÿ‘›¢ÿ“›¡ÿ“›¡ÿ’š¡ÿ˜¡ÿŽ˜¡ÿŽ˜¡ÿš¢ÿ›¢ÿŽ›¢ÿŒ™¢ÿ‰—¢ÿ‡–¢ÿ‡–£ÿ‰—£ÿ‰˜£ÿˆ–£ÿ…” ÿ‰—¡ÿŽ›£ÿ›£ÿ‹š¢ÿŠ˜£ÿ‰—£ÿ‡—£ÿ†•£ÿ…”£ÿ„“£ÿ†—¤ÿ…–£ÿ†˜¤ÿˆ™¤ÿ†—¤ÿ”¢ÿ“¤ÿ‚•¥ÿ‚”¤ÿ‡˜¥ÿ‰˜¥ÿ„–¥ÿ“£ÿ„–¥ÿ…˜¥ÿ„–¤ÿ‡˜¤ÿ…—¥ÿ‚•¤ÿ€“¤ÿ‚–¥ÿ„˜¥ÿ‚–¥ÿ~”¤ÿz’¤ÿw’¤ÿs¢ÿpŒ¡ÿw‘¥ÿ€˜¥ÿ˜¥ÿ|“¤ÿs¢ÿr¢ÿuŽ£ÿx‘¤ÿv¤ÿt£ÿz“¥ÿ€—¥ÿz’¥ÿz“¦ÿy‘¤ÿz’¥ÿ~”¦ÿ–¥ÿ‚—¥ÿ‚—¥ÿk}”¥ÿz’¥ÿv£ÿsŽ£ÿs£ÿtޤÿv¥ÿx‘¥ÿx’¥ÿv’¥ÿv‘¦ÿt¥ÿt¥ÿz“¦ÿ{”¦ÿx‘¤ÿz‘£ÿ”¥ÿ€•¤ÿ}“£ÿ~”£ÿz¡ÿužÿt‹ÿt‹›ÿ²¾Çÿx„ÿu‚Žÿ¯¼Èÿp‰ŸÿtŒ¢ÿu‘¤ÿw’¦ÿv’¨ÿv’©ÿu’©ÿz–ªÿ˜«ÿ{•©ÿ}–©ÿƒ™«ÿ†›ªÿƒšªÿ„›«ÿ™ªÿ}–©ÿ|•©ÿ~—ªÿ™«ÿš«ÿ~™¬ÿ™¬ÿ„¬ÿ†ž­ÿ…­ÿ†­ÿŒ ­ÿŽ¢®ÿŒ ®ÿˆ®ÿ†œ®ÿƒ›¬ÿ„œ¬ÿˆŸ®ÿ‡ ®ÿƒ®ÿ|—¬ÿy–¬ÿx”¬ÿ{•­ÿ˜­ÿ|–­ÿx”«ÿ}—¬ÿ†ž®ÿ‰¡¯ÿ‡ ®ÿ„®ÿ‚›®ÿ‚™®ÿ™®ÿ~˜®ÿ|–­ÿ™®ÿ€™­ÿ„¯ÿˆ ¯ÿ†Ÿ¯ÿ~™­ÿ}•¬ÿ€—­ÿ~—¬ÿ†›®ÿ‰ž®ÿ†œ®ÿƒš¬ÿ…›­ÿ‰®ÿŠ®ÿŽ¡®ÿ ®ÿ‹ž®ÿ‰­ÿ‹ž®ÿŒ ®ÿ ®ÿŠž®ÿ†œ®ÿ…œ®ÿ…›­ÿ™¬ÿ„š¬ÿŒ¡®ÿ‘¤®ÿ‘£­ÿˆœ¬ÿ†š«ÿ‰›¬ÿŸ­ÿ‹¬ÿ‰›ªÿž­ÿ’£­ÿ¡­ÿ ¬ÿŽž«ÿŽžªÿŸ«ÿ’¡«ÿ•¢«ÿ–¢«ÿ”¡«ÿ’ «ÿŸ«ÿŸªÿž«ÿž«ÿ‘Ÿ¬ÿ’ ¬ÿ’¡¬ÿ“¡¬ÿ’¡¬ÿ’¡¬ÿ‘ «ÿ•¡¬ÿ—¢¬ÿ”¡ªÿ–¢«ÿš¤­ÿœ¥­ÿ›¥­ÿ›¥¬ÿš¤¬ÿ—¢ªÿ–¡©ÿ˜¢«ÿ˜£ªÿ™¤«ÿ™¤¬ÿ™¤¬ÿ›¥¬ÿ›¥¬ÿœ¦­ÿœ¥¬ÿž¦¬ÿž§¬ÿž¦¬ÿœ¥¬ÿœ¥­ÿš¤«ÿ›¤«ÿ¦­ÿ§­ÿ›¦­ÿ˜£¬ÿ—£¬ÿ–¢¬ÿ˜£­ÿš¤­ÿ™£­ÿ•¡ªÿ˜¢«ÿœ¦­ÿ§­ÿœ¦¬ÿ›¥¬ÿš¤¬ÿš£¬ÿ™¤­ÿ˜£­ÿ–¡«ÿ˜£¬ÿ—¢«ÿ™¤¬ÿ›¦­ÿ›¦­ÿ–¢«ÿ•¡¬ÿ—£­ÿ—£­ÿœ¦¯ÿ§¯ÿ›¥®ÿ˜£¬ÿ™¤­ÿœ¥®ÿœ¦¯ÿž¨¯ÿ¨¯ÿœ§¯ÿ›¥®ÿœ¥®ÿœ¦®ÿœ¦®ÿš¥®ÿ˜¤®ÿ—¤­ÿ•¢¬ÿ“ «ÿ”¡«ÿ™¥­ÿœ§­ÿœ§­ÿ—£­ÿ•¢¬ÿ—£­ÿš¥®ÿ™¤­ÿ–¢«ÿš¥®ÿ§®ÿ›¦®ÿš¥®ÿ™¤­ÿ™¤­ÿ›¥®ÿœ¦­ÿ¦­ÿž§­ÿœ¦­ÿ›¥­ÿ˜£¬ÿ–¡ªÿ–¡«ÿ–¡«ÿ—¡¬ÿ˜£¬ÿ˜£¬ÿ˜£¬ÿ—£¬ÿ–¢¬ÿ•¡«ÿ˜£¬ÿš¤¬ÿ—¢ªÿ˜£«ÿ›¥¬ÿœ¥¬ÿœ¥¬ÿœ¥¬ÿš¤¬ÿ—¡©ÿ–¡©ÿ˜£«ÿ˜¤«ÿ˜£«ÿ—¢«ÿ—¢ªÿ˜¢ªÿ˜£ªÿ—¢ªÿ˜¢ªÿš£ªÿ›¤ªÿš£ªÿ˜¢ªÿ–¡ªÿ“Ÿ¨ÿ”Ÿ¨ÿ–¡©ÿ•¢©ÿ“ ©ÿ©ÿ©ÿœ©ÿ«ÿ‘Ÿ«ÿž«ÿŠ›¨ÿ©ÿ“¡«ÿ”¢«ÿ“¢«ÿ‘ «ÿŸ«ÿž«ÿœ«ÿŠ›ªÿ‡š©ÿ‰›ªÿ‰›©ÿŒªÿŽ «ÿŒŸ«ÿ†š©ÿ„˜©ÿ†™«ÿ…˜ªÿ‹œ¬ÿž¬ÿ‰œ¬ÿ†›ªÿ‡›«ÿЬÿЬÿŸ¬ÿ‹ž¬ÿ‰œ¬ÿ‡›«ÿˆœ¬ÿ‰ž¬ÿ‰ž­ÿ†œ­ÿš­ÿ€š­ÿ}—«ÿy”ªÿ|–¬ÿƒ®ÿ‰¡®ÿ‰¡®ÿ}˜­ÿz–«ÿ}–¬ÿ€š®ÿ˜­ÿ{•«ÿ~™®ÿ†Ÿ®ÿ‚œ®ÿ›¯ÿ€š®ÿš®ÿ‚›¯ÿ…Ÿ¯ÿ‰ ¯ÿ‹¡¯ÿk†ž¯ÿ‚œ¯ÿ~™®ÿ{˜­ÿ{–®ÿ{–®ÿ{–¯ÿ}˜¯ÿ}š¯ÿ}š¯ÿ{™¯ÿz˜¯ÿy—®ÿ~š¯ÿ‚œ¯ÿ~™­ÿ€š­ÿ…œ®ÿ‰Ÿ¯ÿ‡®ÿ†­ÿ‚™«ÿ|•§ÿx£ÿw¢ÿ³ÁÊÿy†ÿz‡“ÿ³ÂÎÿw’ªÿz–¯ÿ}›²ÿ€ž´ÿ‚ ·ÿ ¸ÿ~ž·ÿƒ£¹ÿ‡¦ºÿ‰¥»ÿ‰¥ºÿŒ§»ÿ©»ÿ‘ª»ÿ©ºÿ¨ºÿ‰¤¸ÿ„ µÿ„¡¶ÿ‡¥¸ÿ‰¥¸ÿˆ¥¸ÿ…¢·ÿЦ¸ÿ§¸ÿŒ§·ÿŒ¥·ÿ¦·ÿ“¨·ÿ”©·ÿ¦·ÿŒ¤¶ÿŠ£¶ÿŠ£µÿŒ§·ÿŽ©¹ÿ‹¨¹ÿ„£¹ÿ€ ¹ÿž¹ÿ‚Ÿ¸ÿ„ ¸ÿƒŸ·ÿ€µÿƒžµÿˆ¤¶ÿŒ§·ÿ¨·ÿ§·ÿФ·ÿ‰¢·ÿ‡£¸ÿ† ·ÿ‚ž¶ÿƒŸµÿ„ µÿ‡£¶ÿŒ§·ÿ§¸ÿ‰¤¸ÿ…¡·ÿ„Ÿµÿ„ž´ÿŠ¢¶ÿ¦·ÿ¦·ÿŽ¥·ÿ‹£¶ÿ¥¸ÿ‘§¸ÿ”¨¸ÿ”ª·ÿ”§·ÿ‘¥¶ÿ¥µÿ’§¶ÿ“¦¶ÿ“¦¶ÿ¤µÿŒ¤µÿŒ¢µÿ‰ ³ÿŠ¡³ÿ£´ÿ•©µÿš¬¶ÿ“§¶ÿ¥´ÿ¤´ÿ•¨·ÿ”§·ÿ’¥´ÿ”¦µÿ™«·ÿš«·ÿ™ª·ÿ™©·ÿ˜©¶ÿ˜©µÿ›©µÿ«µÿž¬µÿª´ÿœ«µÿœª¶ÿ™©µÿ™¨¶ÿ˜¨¶ÿ˜§µÿ™¨¶ÿ™©µÿ›ª¶ÿ›ª¶ÿš©µÿ™¨µÿœ¬¶ÿŸ­¶ÿ ¬·ÿ ¬¶ÿ¢®·ÿ¤¯·ÿ¥°¸ÿ¦°¸ÿ¥°¸ÿ£®·ÿ ¬µÿ ¬µÿ£¯·ÿ£¯·ÿ£¯·ÿ¢®·ÿ¤¯·ÿ¥°·ÿ¥°·ÿ¥¯·ÿ¥¯¶ÿ¦¯¶ÿ§°¶ÿ¦¯¶ÿ£­µÿ¢¬´ÿ¡¬³ÿ¢­´ÿ¥°·ÿ¤°·ÿ¡®·ÿ ­·ÿ ¬¸ÿ¡­¸ÿ¢®¸ÿ¢­¸ÿ «¶ÿ¡­¶ÿ¤¯·ÿ§²¹ÿ¦±¸ÿ§²¹ÿ¥°¹ÿ¥°¹ÿ¤°¹ÿ£®¹ÿ¡­¸ÿ¡­·ÿ¡®¸ÿ£°¹ÿ¦²ºÿ¦²ºÿ¤±ºÿ¡®¸ÿŸ¬·ÿ ¬·ÿ£¯¹ÿ¦±ºÿ¦±ºÿ¥±ºÿ¤°ºÿ¦±»ÿ§²»ÿ¨³»ÿ©´»ÿ§²ºÿ¦±ºÿ¥°¹ÿ¦±ºÿ§±ºÿ§²»ÿ¤²»ÿ¤±»ÿ£°»ÿ ®¹ÿ ®¹ÿ¢¯¹ÿ¦²ºÿ¨´¹ÿ¤°¹ÿ ®·ÿ¡­·ÿ¤°¹ÿ£¯¹ÿ ¬¶ÿ¡­¶ÿ¥°¸ÿ¥°¸ÿ¤¯¸ÿ£¯¸ÿ¢®·ÿ£®·ÿ¤¯·ÿ¦°·ÿ§±·ÿ¦°·ÿ¥°·ÿ£®·ÿ¡­¶ÿ¡¬·ÿ ¬·ÿžªµÿŸ«¶ÿŸ¬¶ÿ ­¶ÿ ¬¶ÿŸ¬¶ÿŸ«¶ÿ¡®·ÿ£¯¸ÿ¤¯¸ÿ£®·ÿ¤¯¸ÿ¦°¸ÿ¦°·ÿ¦°·ÿ¥¯·ÿ£®¶ÿ «´ÿ ¬µÿ£¯¸ÿ¤¯¸ÿ£¯¸ÿ ­¶ÿ¢®·ÿ£®¶ÿ¢®¶ÿ¢®·ÿ¤¯·ÿ¦°·ÿ¦°·ÿ¤®·ÿ¡­¶ÿž«´ÿ©³ÿž«´ÿ ®¶ÿž­¶ÿšª¶ÿ—¨¶ÿ–¦µÿ—§µÿ˜¨µÿ˜§µÿ•¥´ÿ–§´ÿ™©µÿœ«¶ÿœ¬¶ÿ›«¶ÿ™©¶ÿ—¨¶ÿ–¨¶ÿ”¦¶ÿ‘¤µÿ‘¤´ÿ¤´ÿ’§µÿ—ª·ÿ–ª·ÿ’§·ÿޤµÿŒ£´ÿŒ¢´ÿ‘¥¶ÿ”©¸ÿ–©¸ÿ“¨¸ÿ¥·ÿ‘¦¸ÿ’§·ÿ”¨·ÿ•©·ÿ”§·ÿ‘¥·ÿ¥¶ÿ‘¦·ÿ’§·ÿ§·ÿŠ¥·ÿˆ¤·ÿ‡¢¸ÿƒžµÿ‚Ÿµÿ…¡¶ÿާ·ÿ“«·ÿ‰£·ÿ„ µÿ„Ÿµÿ‡¢¶ÿ†¡¶ÿ‚ž³ÿƒž³ÿ‰¢µÿˆ¢µÿ†¡µÿ…Ÿ´ÿ‚ž³ÿ…ž³ÿ‡ ´ÿ‹£³ÿ¦³ÿk‹£³ÿˆ¢³ÿ… ³ÿ±ÿš²ÿ|™²ÿ{˜°ÿ{˜±ÿ}š±ÿ²ÿ~œ²ÿ}›³ÿ|›³ÿ€ž´ÿ‚ ´ÿƒž³ÿ‚±ÿ† ²ÿˆ ±ÿˆ ±ÿˆŸ¯ÿƒ›­ÿ˜«ÿy“¥ÿv¢ÿ³ÀÊÿy†ÿz‰”ÿ³ÂÏÿw“¬ÿy–°ÿ~µÿ‚¡¸ÿ„¤»ÿ„¦½ÿ€£¾ÿ„¤¿ÿˆ¨¿ÿ¬Àÿ¬Áÿª¿ÿ¬Àÿ”¯Áÿ“¯Áÿ”¯Áÿ¬ÀÿЍ¾ÿ†¥½ÿŠ©¿ÿŒ«¿ÿ«¿ÿ†§½ÿЍ¾ÿ«¿ÿ­¿ÿ¬¿ÿ«¿ÿ’¬¿ÿ˜°Áÿ–°Áÿ•®Àÿ‘ª¾ÿŒ¨¼ÿª¼ÿ‘®¿ÿ‘¯Áÿ­Áÿ‡¦Âÿ†¦Âÿˆ§Ãÿˆ§Ãÿ‹¨Ãÿ‰¨ÃÿЍÁÿ‹©Àÿ®Áÿ•±Âÿ—²Âÿ“¯Âÿ«ÂÿªÂÿ©Âÿˆ§Àÿ‡¥¾ÿЍ¿ÿŽ«Áÿ¯Âÿ“±Ãÿ”±Ãÿ¬Âÿ‰§¿ÿŒ¦ÀÿŽ©Àÿ”®Äÿš³Äÿš³Ãÿ•®Âÿ•­Áÿ™°Ãÿš²Ãÿ³Âÿž³Âÿœ±Âÿ™°Âÿ›±Âÿž³ÃÿŸ´ÄÿžµÄÿ™±Äÿ—°Ãÿ˜°Ãÿ˜¯Ãÿ˜¯Áÿž³Ãÿ¦¹Äÿ£·ÄÿŸ´Åÿ±ÃÿŸ´Äÿ¡´ÄÿŸ³ÃÿŸ²Âÿ ³Âÿ¦·Äÿ¥·Äÿ¤µÄÿ£´Ãÿ£´Ãÿ¥·Äÿ¨¸ÄÿªºÄÿªºÄÿ©¹Äÿ¨¸Ãÿ§¸Äÿ¦¶Äÿ¤µÄÿ£³Ãÿ£´Ãÿ¥¶Äÿ¦·Äÿ¦·Äÿ¦·Äÿ¥·Äÿ§·Äÿª¹Äÿ¬ºÄÿ¬ºÄÿ«¸Âÿ­ºÃÿ°¼Äÿ°¼Äÿ°¼Äÿ¯ºÃÿª·Áÿ¨µÀÿª¸Áÿ¬¹Âÿ­¹Âÿ¨¶¿ÿª·Àÿ¬¹Áÿ®ºÂÿ®¹Âÿ­¸Áÿ®¹Áÿ±»Âÿ¯ºÁÿ¯ºÂÿ¬¶¿ÿ©´½ÿ©¶½ÿ­¹Àÿ­¹Áÿ«¸Áÿ¨µÁÿ¨µÁÿ¨µÁÿ¨µÁÿª¶Áÿª¶Âÿ©µÀÿª¶Àÿ­¸Áÿ¯ºÂÿ°»Âÿ®ºÂÿ¬¸Âÿ«¸Âÿ«·Âÿ§µÀÿ¥³¾ÿ§´¿ÿª·Áÿ«¹Âÿ­ºÃÿ­ºÃÿ«¹Ãÿ§´Àÿ¨µÁÿ¨µÁÿ­¹Äÿ±½Åÿ°¼Åÿ­ºÄÿ¬¹Ãÿ¯»Åÿ°¼Åÿ±½Åÿ²½Åÿ²½Æÿ¯»Åÿ¯»Äÿ±¼Åÿ²½Æÿ±½Æÿ®»Æÿ¬ºÅÿ¬ºÅÿ¬¹Åÿ«¹Äÿ°¼Æÿ´¿Æÿ²¾Æÿ¯¼Æÿ¬¹Äÿ®»Åÿ°¼Æÿ®»Åÿ­ºÄÿ­ºÄÿ²½Æÿ±½Æÿ°¼Æÿ®»Åÿ®»Åÿ°½Æÿ²¾Æÿ²¾Åÿ³¿Æÿ²¾Æÿ°¼Åÿ¯¼Åÿ®ºÅÿ¬¹Åÿ«¸Äÿª¸Äÿ¬¹Åÿ­ºÅÿ¬ºÅÿ¬ºÅÿ©¸Äÿ«¸Äÿ­»Åÿ®»Äÿ®»Äÿ­¹Âÿ¯ºÃÿ±½Äÿ±¼Äÿ±¼Äÿ¯ºÃÿª·Àÿ¨´¿ÿª·Áÿ¬¹Âÿ¬¹Âÿ¨¶Àÿ©¶Àÿ«¸Áÿ«¸Àÿª¶Àÿ©µ¿ÿª¶¿ÿ¬¸Àÿ«·Àÿª¶¿ÿ¦²¼ÿ£±¼ÿ¤²¼ÿ§¶¿ÿ¦·Àÿ¤µÀÿ ±Àÿ ±Àÿ ±ÀÿŸ°Àÿ ±ÀÿŸ±ÀÿŸ°¿ÿž°¾ÿ¡³¿ÿ¥µÀÿ¥¶Àÿ¢³¿ÿŸ±¿ÿ›®¾ÿ›¯¿ÿ—¬½ÿ•ª»ÿ–¬¼ÿš®¾ÿš±¿ÿœ²¿ÿœ²Àÿ˜¯Àÿ‘ª½ÿ”ª¾ÿ”ª¾ÿ˜®Àÿ³Áÿœ±Àÿ—­Àÿ–¬¿ÿš¯Áÿš°Àÿœ²Àÿ²Àÿš°Àÿ—®Àÿ˜¯Áÿš°Âÿš±Âÿ˜±Âÿ‘¬ÁÿªÁÿ«ÁÿŽ©Áÿ©Àÿ”­Âÿœ´Âÿ—±Âÿ¬ÁÿŒ¨¿ÿŽªÀÿ«ÁÿªÀÿ©¿ÿŒª¿ÿ”¯Âÿ‘®Ãÿ¬ÃÿªÂÿŒªÂÿ­Âÿ“°Âÿ–²Ãÿk–³Ãÿ”±Ãÿ‘®Ãÿ­Ãÿ«Ãÿ‰¨Ãÿ‡¦Âÿ…¦Âÿˆ©ÃÿŠ«ÄÿŠ«Äÿ‰¬Åÿ„©Äÿˆ©ÄÿŒ­Åÿ¯Äÿ®ÃÿެÁÿ­Áÿ“¯Áÿ‘­¿ÿª»ÿФ¸ÿ‚²ÿz—­ÿµÅÐÿ}‹•ÿ~Œ—ÿ·ÆÓÿ{šµÿžºÿƒ£¾ÿ†¨Âÿ‰¬ÄÿŠ­Æÿ…ªÇÿ†«Çÿ¯Éÿ”µÊÿ”´Êÿ°Èÿ’³Éÿš¸Êÿš·Ëÿ›¸Ëÿ™¶Ëÿ¯Èÿ‹®Æÿ°Èÿ“´Ëÿ•·Ëÿ°Éÿ°Éÿ’µËÿš¹Ëÿ™·Ìÿ’²Êÿ–µËÿŸºÍÿŸºÍÿž¹Íÿ˜¶Ëÿ’²Çÿ’²Èÿ—·Ëÿ—¸Ìÿ”µËÿ¯Ìÿ°ÌÿŒ­ËÿŒ­ËÿޝËÿ°Êÿ°Ëÿ®Èÿ“´Éÿœ¹Ìÿž»Êÿš·Êÿ–´Êÿ“²Êÿ°Éÿ®Èÿ‹«Æÿ°Èÿ‘±Éÿ”³Ëÿ™·ËÿœºËÿ–µËÿŒ®Æÿ¯Èÿ¬Çÿ˜³Êÿ¡ºÊÿ¡ºÊÿ™³Èÿ˜±Çÿž·Éÿž¶Éÿ¢ºÉÿ¥ºÉÿ£¹Éÿ ¶Éÿ ¶Éÿ£¹Êÿ¥»Êÿ¦¼ËÿŸ·ËÿœµÉÿ¡¹Ëÿ¡¹Ëÿž¶Éÿ£ºÌÿ«¿Íÿ®ÂÍÿ©¾Íÿ¥ºÌÿ¦»Íÿª¿Îÿ¬ÀÏÿ©½Íÿ¦»Ìÿ¯ÂÐÿ®ÁÐÿ®ÁÐÿ¬ÀÏÿ¬¿Îÿ¯ÁÐÿ±ÃÐÿ³ÅÐÿµÅÐÿ´ÄÐÿ²ÃÐÿ²ÃÐÿ³ÃÑÿ°ÁÑÿ­¿Ðÿ­ÀÐÿ°ÁÑÿ±ÃÑÿ²ÄÑÿ²ÃÑÿ¯ÁÐÿ¯ÁÏÿ³ÄÑÿ·ÆÑÿ·ÆÑÿµÄÏÿ·ÅÐÿ»ÈÑÿ»ÇÐÿºÇÏÿºÆÏÿµÂÍÿ²ÀËÿ´ÂÍÿ·ÅÏÿ¸ÆÏÿ³ÂÍÿ³ÂÍÿ·ÅÏÿºÇÏÿºÆÏÿ¶ÃÍÿ¸ÄÎÿ¼ÇÏÿ¼ÇÏÿ»ÇÏÿ¹ÅÎÿ´ÁÊÿ´ÂËÿ¸ÅÎÿ¸ÆÏÿ·ÅÏÿ´ÂÎÿ´ÂÎÿ²ÀÍÿ²ÀÍÿ³ÁÍÿ´ÂÍÿ´ÁÍÿ±¿Êÿ´ÂËÿ¹ÆÎÿºÇÎÿ¹ÅÎÿ·ÄÎÿµÃÎÿ´ÁÍÿ²ÀÌÿ¯¾Êÿ²ÁÍÿ´ÂÎÿ·ÅÐÿºÈÑÿºÉÑÿ¸ÇÑÿ°ÀÌÿ³ÂÎÿ²ÀÍÿ¸ÅÑÿ¼ÉÑÿ¼ÉÑÿ·ÅÐÿ¶ÃÏÿºÇÑÿ¹ÆÐÿ»ÈÐÿ¼ÈÐÿ»ÆÏÿ·ÃÎÿ·ÃÎÿ¹ÅÏÿ»ÇÐÿ»ÇÏÿ·ÅÐÿ³ÁÍÿ¶ÄÏÿ¶ÄÏÿ²ÀËÿ¶ÄÏÿºÆÎÿ»ÇÎÿ¸ÄÎÿ³ÀËÿ³ÀËÿ¶ÃÍÿ¶ÃÍÿ´ÀËÿ°½Èÿ¶ÃÌÿ¶ÃÌÿµÂÌÿ³ÁËÿ³¿ÊÿµÂÌÿ¶ÂËÿ·ÃËÿ¸ÃËÿ¸ÃÌÿµÂËÿµÂËÿµÁÌÿ²¿Ëÿ¯½Êÿ°¾Ëÿ±¿Ìÿ±ÀËÿ²ÁÌÿ²ÁÌÿ°¿Ìÿ°¿Ëÿ³ÁÍÿ¶ÄÍÿ¶ÄÍÿ³ÁËÿµÃÌÿ¹ÆÎÿºÅÎÿºÆÎÿºÆÏÿµÂÍÿ³ÁÌÿµÃÎÿ¸ÆÐÿ¹ÇÐÿ³ÃÎÿ´ÃÏÿ·ÆÑÿ»ÈÑÿ¹ÇÑÿµÄÏÿ·ÅÐÿ»ÈÑÿºÇÑÿ¹ÇÑÿ¶ÄÏÿ±ÁÌÿ±ÁÍÿ´ÅÐÿµÆÑÿ³ÄÑÿ®ÁÑÿ®ÁÑÿ¬¾Ðÿ¬¾Ðÿ¬¿Ðÿ­ÀÐÿ­¿Ðÿ©½Íÿ¬ÀÎÿ²ÄÐÿ³ÆÐÿ°ÃÐÿ­ÁÐÿª¿Ðÿ¦¼Íÿ¤ºÌÿŸ¶Êÿ¢ºÌÿ£»Íÿ¤¼Îÿ§¾Íÿ¨ÀÍÿ£½Íÿ˜µÈÿ›µÉÿš²Èÿ ·Ëÿ§½Ëÿ¦¼Ëÿž·ÊÿµÉÿ£ºËÿ¢¹Ëÿ¤¼Ëÿ¦¼Ëÿ¤»ËÿŸ¶ÊÿŸ·Ëÿ¡ºÍÿ¢»Ìÿ£¼Ìÿš·Ìÿ•³Êÿ™¶Ìÿ™¶Ìÿ“²Éÿ™µÌÿ¡»Ëÿ¢½Ëÿ›¶Ëÿ”°Èÿ“°Çÿ˜³Éÿ—³Éÿ“¯Çÿ­Æÿ˜µÊÿ—µËÿ–´Ëÿ“²Êÿ’±Éÿ•´Ëÿ˜¶Ëÿ›¹Ëÿkœ¹Ëÿš¸Ëÿ–µËÿ–µÌÿ•³Ìÿ‘°Íÿ‹­ÌÿŠ®Ìÿ°Íÿ޲Íÿ³Íÿ޲Íÿ‰­Ìÿ‰®Ëÿ²Ìÿ•¶Ìÿ”´Ëÿ‘°Èÿ’²Èÿ—µÈÿ•±Åÿ”°Âÿª¾ÿ„¡·ÿ|š±ÿµÆÑÿ}Œ–ÿz‡ÿ¶ÄÏÿ{™²ÿ|›¹ÿ¢Áÿ‹®Éÿ´Íÿ޵Ñÿ‘·ÓÿгÓÿвÒÿ—»ÖÿžÀÕÿš¼Ôÿ—ºÓÿ˜¹Óÿ ÀÔÿ¢ÂÔÿ¡ÁÕÿ™¼Õÿ¶ÑÿµÑÿ“¸Ôÿ˜¾Õÿ—½Öÿ“¹Õÿ”ºÔÿš½Öÿœ¾Öÿ™»Õÿ›½Öÿ ÀÖÿ¤ÂÖÿŸ¿Õÿž¾Ôÿ¾Óÿ™¼Òÿ”ºÒÿ•¼Ôÿš¿Ôÿ¶Ôÿ³Ôÿ²ÔÿµÔÿ”¸Ôÿ–¹Ôÿ”·Õÿ‘µÓÿ“·Ñÿš½Ôÿ ÂÔÿ¢ÁÔÿ ÀÔÿ¡ÀÕÿ™ºÕÿ‘µÒÿ“¶Ôÿ•ºÕÿ˜»Öÿš¼×ÿŸÁ×ÿ£Æ×ÿ¡Ä×ÿÀ×ÿ“´Ñÿš¹Ôÿ—·Òÿ›ºÓÿ¨ÅÕÿ§ÃÕÿŸ»Óÿ¢½Óÿ§ÁÕÿ«ÄÕÿ­ÆÕÿ­ÆÕÿ«ÂÕÿ¨ÁÒÿªÁÓÿ«ÄÔÿ¬ÄÔÿ¬ÄÕÿªÂÕÿ©ÀÔÿ¦¿Óÿ§ÀÓÿ«ÁÕÿ­ÃÕÿ¶ÊÖÿ³ÇÖÿ¬ÂÔÿª¿Òÿ¯ÄÕÿ´ÇÖÿ³ÆÖÿ¬ÁÒÿ°ÄÕÿ±ÆÖÿ²ÆÕÿ°ÅÔÿ­ÂÒÿ­ÁÒÿ±ÄÔÿ´ÆÕÿ»ÌÕÿ¸ËÕÿ¶ÇÔÿ¶ÇÕÿ·ÈÕÿ·ÈÕÿ³ÅÕÿ¯ÂÓÿ°ÃÔÿ´ÇÕÿµÈÕÿ³ÇÕÿµÇÕÿ±ÄÓÿ±ÃÒÿ¹ÉÖÿ¾Í×ÿ½Ì×ÿ»ËÖÿ¼ÊÖÿÀÎ×ÿÂÏ×ÿÁÎ×ÿ¾Ì×ÿ¸ÇÓÿ·ÇÓÿ»ÊÖÿ½Í×ÿ½Ì×ÿºÊÖÿ¹ÉÔÿ½ÌÖÿ¾ÌÖÿ½ËÖÿ¾Ì×ÿÀÍÖÿÂÍÖÿ¿ÌÖÿ¾ËÕÿ½ËÔÿ»ÊÓÿ¸ÈÒÿºËÕÿ¼ËÔÿ·ÇÔÿ·ÇÕÿ·ÇÕÿ¸ÇÕÿºÈÔÿºÈÔÿ¹ÈÔÿ·ÆÒÿ¸ÆÒÿ¼ËÕÿ¿ÍÕÿ¿ÍÕÿ¾ÌÕÿ¾ÌÕÿºÉÕÿ´ÄÑÿµÅÒÿ¶ÇÓÿ·ÇÓÿ¹ÈÔÿ»ÊÔÿ¼ÌÔÿ»ËÔÿ¹ÉÔÿ±ÁÏÿ·ÅÓÿ´ÃÑÿ·ÅÒÿ½ËÔÿ¼ÊÓÿ·ÅÑÿ¸ÅÑÿ»ÈÒÿ¼ÉÒÿ¾ËÓÿ¾ÊÓÿ¼ÉÓÿ¸ÆÏÿºÆÐÿ¼ÉÒÿ¼ÉÒÿ»ÉÒÿ»ÈÓÿ¹ÇÒÿ·ÅÑÿ·ÄÐÿ¹ÆÒÿºÇÒÿ¿ËÒÿ½ÉÒÿ¸ÅÐÿµÂÎÿ¹ÆÑÿ½ÉÒÿ¼ÈÒÿµÂÍÿ¸ÅÐÿ¹ÇÑÿºÇÑÿ¸ÅÐÿµÂÎÿ´ÂÎÿ¸ÅÑÿºÇÒÿ¿ËÒÿ¼ÉÑÿ»ÈÒÿ»ÈÒÿºÇÑÿ»ÈÒÿ·ÅÒÿ³ÂÐÿ´ÃÑÿ·ÆÒÿ·ÇÒÿ·ÇÓÿ·ÇÓÿ²ÃÐÿ³ÃÐÿºÈÔÿ¾ÌÕÿ¼ÊÔÿºÉÓÿ»ÉÔÿ¿ÌÕÿ¿ÌÔÿ½ÊÓÿºÈÓÿµÄÐÿµÅÑÿ¹ÈÔÿ¼ËÕÿ»ÊÕÿ¸ÈÔÿ·ÇÓÿºÊÕÿ»ÊÕÿ¹ÈÔÿ»ËÖÿ½ÌÖÿ¾ÌÖÿ¼ÊÖÿ»ÊÖÿ¹ÊÕÿ¶ÈÔÿ´ÇÔÿ´ÉÕÿ·ÊÖÿ°ÅÖÿ¯ÃÖÿ­ÂÕÿ®ÃÕÿ±ÅÕÿ±ÅÕÿ¯ÄÕÿ­ÂÔÿ­ÃÓÿ²ÈÖÿ¶Ë×ÿ¶Ë×ÿµÊ×ÿ³É×ÿ­ÄÖÿ¥¾Òÿ¦¿Ôÿ§ÂÕÿ¨ÂÖÿªÃ×ÿ¬ÆÖÿ¯ÉÖÿ¬ÈÖÿ¨ÄÖÿžºÑÿ¥¾Õÿ ¼Óÿ£¾Ôÿ®È×ÿ­Æ×ÿ¤¿Õÿ¦ÀÕÿªÃ×ÿ¬ÄÖÿ®ÇÖÿ­ÆÖÿ«ÂÖÿ¦ÁÔÿ¨ÁÕÿ¨ÃÖÿ¨ÃÖÿ§ÂÖÿ¥Á×ÿ¢¿Öÿž¼Õÿž¼Õÿ¡¾Öÿ¢¿Öÿ­ÆÖÿ¨ÃÖÿŸ»Ôÿš¸ÒÿŸ½Õÿ¦ÁÖÿ£¾Öÿš¸Òÿ›¼Õÿž½Öÿž¾Öÿ›¼Õÿ•¸Óÿ”¸Óÿ™»Öÿž¿×ÿkªÉÙÿ¥ÆÙÿ¡ÁÙÿ ÀÙÿ¡ÁÙÿŸÀÙÿ–ºÙÿµ×ÿ¶Øÿ–¼Ùÿ—¾Ùÿ“»Ùÿ”¼ÙÿŒ¶Öÿ¶Öÿ™¾Ùÿ ÃØÿÀØÿ™»Ôÿ˜¹Òÿž¼Ïÿ›¹Ëÿ”±Äÿ‰¦½ÿz™°ÿ±ÂÎÿw…‘ÿ{‰“ÿ¸ÅÐÿž¶ÿ£¾ÿ…¨Çÿ‹±Ïÿ¸Ôÿ¹×ÿ˜¾Ûÿ’»Üÿ‘»Ýÿ˜ÀßÿŸÆàÿ¢ÆßÿžÃÞÿ›ÀÝÿ£ÅÝÿ¦ÇÝÿ¦ÇÜÿŸÃÜÿ—½Úÿ’»Úÿ”½Ûÿ˜ÁÜÿ›ÃÜÿ•¿Üÿ’¼Úÿ˜¿ÜÿžÃÜÿžÃÜÿžÂÜÿœÁÜÿ¢ÃÜÿ¡ÂÜÿ¡ÃÛÿžÃÚÿ™ÀØÿ“¼×ÿ˜ÀÛÿžÆÜÿ—ÀÝÿ޹Ýÿ‹¶Ýÿ“½ÞÿšÁßÿ˜Áßÿ•¾ßÿ–¾Ýÿ™ÀÜÿ¡Æßÿ¨ÊßÿªËßÿªËßÿ¨Êßÿ¡Äßÿ˜¿Üÿ–¼Üÿ›ÀÞÿÃáÿ Æáÿ¥Éáÿ«Îâÿ«Íáÿ§ËáÿŸÃÞÿ Âßÿ ÁÞÿ¥Åáÿ¯Ìâÿ°Îâÿ®Êâÿ¬Éáÿ¯Ëáÿ³Îâÿ·Ñâÿ¸Ñâÿ¶ÏâÿµÎáÿµÎáÿ·Ïâÿ¹Ñâÿ·Ñâÿ¶Ïâÿ´Îâÿ²Ìáÿ³ËàÿµÍáÿ¸ÐâÿÁÖâÿÀÔâÿºÐâÿ·ÍßÿºÎàÿ½Ñâÿ»Ðàÿ¸ÌÞÿ·ÌÞÿºÏàÿ¼Ðàÿ»Ðàÿ¹ÍÞÿ¸ÌÝÿ¹ÎÞÿ¼ÐàÿÃÕáÿÃÖáÿÃÔáÿÁÓáÿÁÓáÿÁÓáÿ¿Òáÿ»Ïàÿ»Îàÿ½Ðáÿ¾Òáÿ¾ÒâÿÀÓáÿ½Ðàÿ»ÏßÿÀÒáÿÃÕàÿÅÕàÿÄÕáÿÃÓàÿÈÕàÿÉ×àÿÉ×àÿÆÕàÿÂÑÞÿ¿ÐÝÿÁÒßÿÃÔàÿÅÕàÿÂÓàÿÀÒßÿÃÔàÿÆÕàÿÆÕàÿÆÕàÿÅÔàÿÈÖáÿÉ×âÿÉ×âÿÇ×áÿÄÔßÿÁÒÞÿÅÖâÿÇØâÿÄÔáÿÀÑáÿ¿ÐáÿÂÓáÿÅÕâÿÄÔáÿÁÒàÿÁÑÞÿÁÑÝÿÆÕàÿÈ×àÿÉ×àÿÉ×àÿÇÖßÿÄÔàÿ¿ÐÝÿ½ÎÜÿÀÐÞÿÂÒàÿÃÔáÿÅÖáÿÇØáÿÇØáÿÅÖàÿ¿ÐÝÿÀÐÞÿ¿ÏÝÿÂÑßÿÇÕàÿÇÖàÿÅÓßÿÃÒÞÿÅÓÞÿÇÕßÿÉ×àÿÉ×àÿÈÖàÿÇÔßÿÇÔßÿÈÕßÿÈÖßÿÇÕßÿÆÔßÿÅÔàÿÄÓßÿÄÒÞÿÅÓßÿÇÕàÿÌÙàÿÌÙáÿÉÖáÿÅÒÞÿÆÓßÿÉÖáÿÈÕàÿÅÒÞÿÅÓßÿÇÕáÿÈÖáÿÇÕàÿÃÒÞÿÂÑÝÿÃÒÞÿÅÓßÿÉÖßÿÉÖßÿÈÕßÿÅÓÞÿÅÓÞÿÄÒÝÿÂÑÝÿ¿ÎÜÿ½ÍÛÿ¾ÎÜÿ¿ÏÜÿ¾ÏÜÿÀÐÜÿ½ÍÛÿ»ÌÚÿ¿ÏÜÿÁÐÛÿÂÑÛÿÀÏÛÿ¿ÎÚÿÃÑÛÿÃÑÚÿÃÑÚÿÁÏÚÿ¼ÌØÿºÊ×ÿ»ÌØÿ¾ÎÚÿ¾ÎÙÿ»ÌÙÿ¹ËØÿ¼ÍÚÿ¾ÏÚÿ½ÍÙÿ½ÍÙÿ¼ÍÚÿ¾ÎÚÿ¾ÎÚÿ¿ÏÛÿ½ÏÛÿ¸ÌØÿµÊØÿ¹ÎÜÿ»ÐÜÿ¸ÍÝÿ³ÊÞÿ±ÈÞÿµÌßÿ¹Ïàÿ·ÏàÿµÍàÿ¶Ìßÿ¶ÍÞÿ»Ñáÿ¾Ôáÿ¾Ôáÿ¾Ôáÿ½Óáÿ·Ïáÿ¯Êßÿ¬ÈÞÿ®Éßÿ¯Êàÿ°Ìàÿ³Ïáÿ¶ÑàÿµÐàÿ±Îàÿ¨ÆÜÿ¨ÆÝÿ§ÄÜÿªÆÞÿ³Ìàÿ³Îàÿ°Êàÿ®Éßÿ¯ÉÝÿ°ËÞÿ´ÍÞÿ´ÍÞÿ±ÊÞÿ®ÈÜÿ­ÈÜÿ¯ÉÝÿ°ÊÝÿ­ÊÝÿ¬ÇÝÿ¨ÆÝÿ¤ÃÜÿ¤ÂÛÿ¦ÃÜÿ¨ÆÝÿ³ÍÜÿ¯ÊÜÿ§ÄÛÿ¢ÀÙÿ¥ÂÚÿ§ÃÛÿ¥ÃÚÿ ¾Øÿ½ØÿŸÀÙÿ¢ÁÚÿ ÁÚÿœ¾Ùÿš½Ùÿ›¿ÚÿžÁÛÿkªÊÝÿ©ÊÞÿ¦ÇÝÿ£ÄÞÿ£ÅÞÿ£ÅÞÿÁÞÿ•¼Ýÿ“ºÜÿ•½Ýÿ–¿Ýÿ•¿Þÿ™ÂÞÿ“½Ýÿ‘»Üÿ˜¿ÞÿžÅÞÿŸÅÝÿ›¿Úÿ—»Öÿ¾ÔÿœºÏÿ—´ÈÿŠ©¿ÿ}›´ÿ±ÂÎÿu…‘ÿ{‰”ÿºÉÔÿˆ¦¼ÿЬÈÿŠ®ÏÿŒ´Õÿ“¼Ýÿ–¿âÿÆäÿšÆçÿ–Ãçÿ–ÃçÿžÉéÿ¦Îéÿ¥Îéÿ¡Çèÿ¦Êçÿ©Íæÿ¬Îæÿ¨Íæÿ¡ÈæÿšÃäÿ—Ãåÿ–Ãåÿ ËåÿšÆæÿ”Ãäÿ–ÂäÿŸÉåÿ¥Íåÿ¡Èäÿ™Ââÿ Æåÿ£Êåÿ¥Ìåÿ£Ìåÿ›Çãÿ”Âàÿ“ÂâÿšÆãÿœÈãÿ¿ãÿ‰¸äÿ¾äÿ™Ääÿ˜Ääÿ–Áäÿ•Áâÿ›Áâÿ Çäÿ¨Ìäÿ¬Îäÿ­Ñäÿ¬Ðäÿ¥ÊäÿžÄãÿ–½ßÿ™ÀáÿœÃäÿ¡Æåÿ¦Êåÿ«Ñæÿ­Óæÿ­Òæÿ©Ìæÿ Åãÿ Åãÿ§Çäÿ«Ìåÿ²ÑåÿµÒæÿ¯Îåÿ¯ÍåÿµÑçÿºÔçÿ¼Öçÿ»ÕæÿºÓæÿºÒäÿºÓåÿ½Öçÿ¾Õçÿ¾Öèÿ»Ôçÿ¹Òæÿ¹Ñåÿ»Óæÿ½ÔçÿÅØçÿÅÙçÿÄØçÿÁÖèÿÁÔçÿÂÕçÿÂÕæÿÂÕæÿºÐãÿ½ÓäÿÀÕæÿÁÖæÿ¿Õæÿ¾Ôæÿ¾Óåÿ¾ÔåÿÃØæÿÇÚæÿÇÙåÿÅ×åÿÃÖåÿÆØæÿÆØæÿÂÕæÿ¿Óåÿ¾ÒäÿÀÕæÿ¿ÔåÿÃ×åÿÂÖåÿÀÔåÿÁÕåÿÆØæÿÉÚæÿÉÚæÿÇ×åÿÊÙåÿÍÛæÿÎÜæÿÌÜæÿÉÙæÿÅÖäÿÄ×åÿÄÖåÿÈÚåÿÆ×åÿÂÕãÿÃÕãÿÈÙåÿËÛæÿÊÚæÿÅÖäÿÊÚçÿËÛæÿËÛåÿÊÚåÿÅ×ãÿÁÔáÿÃÖäÿÆÙåÿÈÚæÿÃÖæÿÁÔçÿÄ×çÿÈÙçÿÇÙçÿÆ×æÿÄÖäÿÆÖäÿÉÙæÿÌÜæÿÏÞçÿÎÝæÿÍÜåÿÊÚæÿÆ×åÿÀÒâÿÃÕäÿÅ׿ÿÇØçÿÉÚçÿËÝçÿÌÞçÿÌÝçÿÊÚçÿÄÖäÿÃÕäÿÈØæÿËÛèÿÎÝèÿÏÞèÿËÛçÿÊÙæÿÍÜçÿÎÜæÿÎÜåÿÏÜæÿÏÜçÿÎÚåÿÎÛæÿÎÜåÿÏÜæÿÎÛæÿÍÚæÿÊØäÿÉ×ãÿËÙåÿÍÚæÿÑÝæÿÑÝæÿÐÝæÿÎÛæÿÎÚæÿÎÚæÿÎÚåÿÎÛæÿÉ×äÿÉ×ãÿÌÚåÿÌÚåÿÊÙåÿÈØäÿÇ×ãÿÇ×ãÿËÚäÿÍÛäÿÍÛäÿËÚäÿÊØäÿËÙäÿÊØäÿÇ×äÿÃÓâÿÂÓáÿÃÔãÿÂÔâÿÆ×ãÿÅÖäÿÃÕäÿÃÕäÿÇØåÿÊÙåÿÉÚåÿÉØæÿËÚæÿÍÛæÿÏÝçÿÍÜçÿÊÚçÿÆ×åÿÅ׿ÿÅ׿ÿÊÛçÿÇÙçÿÃÖåÿÃÖåÿÈÚçÿÊÛçÿÈÚèÿÃÕåÿÈÚéÿÊÝêÿÊÞêÿÈÝêÿÂÙçÿ½ÕåÿÀØéÿÃÛëÿÃÛêÿ¼Õêÿ¸Ñêÿ»Ôêÿ¿×êÿ¾×êÿ¼Õêÿ»Õéÿ¾ÕéÿÀØêÿÅÜëÿÇÝëÿÇÞëÿÅÝëÿ¾Ùêÿ¸Ôéÿ±Ìæÿ²Îçÿ³Ðéÿ´Ñèÿ·Óèÿº×èÿ»Øèÿº×èÿ¶Òèÿ­Ìåÿ«Éãÿ¯Ìäÿ²Ïæÿ·Óæÿ¹Ôæÿ²Ïåÿ°ÍäÿµÑæÿ¹ÓæÿºÔæÿ¹Óæÿ·Ñæÿ¶Ïãÿ´Ðäÿ¶Òäÿ¶Ðäÿ´Ïäÿ²Ïæÿ®Ìåÿ­Êäÿ®Ìäÿ°Íæÿ¸Òåÿ¸ÒäÿµÐäÿ°Ìäÿ®Êäÿ¯Êãÿ®Êâÿ­Êãÿ¢Ãàÿ¦Èâÿ©Êäÿ¨Êäÿ¤ÈäÿŸÆäÿ Æãÿ Çäÿk¨Íæÿ®Ðåÿ¯ÑåÿªÍåÿ¦ÉåÿªÍæÿ¨Ìçÿ¡ÇçÿšÂåÿ—Âäÿ˜Ãæÿ˜ÃæÿŸÉæÿ™Ææÿ”Áåÿ“Àãÿ›Åäÿ¡ÈãÿŸÆàÿšÀßÿœ¿Úÿœ¼Óÿ™·Ìÿ¯Äÿ€ ¸ÿ²ÃÑÿt…’ÿ{‰•ÿ¹ÈÓÿЍ½ÿ®Æÿ‹°ÏÿеÖÿ»Ýÿ•Áäÿ™ÇæÿšÈèÿ”Ãèÿ‘¿çÿ™Æëÿ¥Ïëÿ§Ðìÿ¢Ëìÿ¢Êëÿ¨Ìëÿ¬Òìÿ«Òìÿ¤ÎëÿžÉìÿ–Åêÿ“Âéÿ ÌìÿËíÿ™Çíÿ•ÄëÿžÊíÿ¦Ñíÿ¤Îîÿ™Åëÿ¡Ìîÿ¥Ïïÿ¨Óïÿ§Õðÿ£Ðïÿ™Êíÿ•Èíÿ“Çîÿ Ððÿ˜Ìðÿ‘ÅïÿÃïÿ˜Êðÿ¡Ñðÿ ÎðÿšÉíÿŸÊîÿ¦Îïÿ¬Óïÿ³Øïÿ¶ÝïÿµÛïÿ¯Öïÿ©Ñïÿ›ÆëÿžÆìÿŸÉîÿ¢Ìîÿ¨Ðîÿ­Õîÿ²Ùîÿ¶Ûîÿ´Øïÿ§Ííÿ§Ììÿ­Ðîÿ­Ðíÿ·×ïÿÀÝïÿ·×ïÿ´Óíÿ¹Öíÿ½ÙíÿÁÜíÿÃÜíÿÂÛíÿÀÙìÿ¿ØìÿÄÜíÿÃÝíÿÄÛíÿÁÚíÿÁÚíÿÁØíÿÁÙíÿÂÚíÿÇÝîÿÊàïÿËàîÿÊÞîÿÇÛíÿÇÛíÿÌßïÿÎâïÿÃÙìÿÄÛìÿÅÜíÿÈÝïÿÇÞðÿÅÜîÿÄÜíÿÅÛíÿÈÝîÿÎâîÿÐãîÿÎáîÿÊÝîÿÍßîÿÎàîÿËßîÿÆÛíÿÃÚìÿÅÛíÿÇÝîÿÉßîÿÉÞîÿÇÜíÿÃØêÿÈÜíÿÎàìÿÏàìÿÎßíÿÎÞìÿÑßíÿÒáìÿÑáìÿÏàìÿÌÝìÿÇÚêÿÅÙéÿÍÞìÿÌßíÿÉÛëÿÇÚêÿÌÞìÿÏàìÿÎßìÿÇÙéÿÍÞìÿÎßìÿÐáíÿÏáìÿËÝêÿÆÚèÿÄÙèÿÄÙéÿËÞìÿÈÝìÿÅÚëÿÅÚìÿÈÜìÿÌÞìÿËÞìÿÆÙèÿÉÚéÿÌÜêÿÏßëÿÒâìÿÓäìÿÓãìÿÑâíÿÏàîÿÇÚëÿÈÛìÿÊÜîÿÊÝíÿÍßíÿÏáíÿÑãíÿÒäíÿÑâíÿÉÛëÿÈÚêÿÌÝìÿËÛêÿÑáíÿÕäíÿÑáîÿÎÞëÿÒáíÿÔâíÿÕãìÿÕãìÿÔâìÿÓàëÿÔáíÿÖäîÿÕäíÿÕãíÿÔâíÿÓáíÿÒàìÿÒàìÿÒàìÿÕâíÿÖäíÿÖãìÿÕâìÿÓàëÿÓßëÿÕâìÿ×ãìÿÎÝéÿÏÞêÿÐßëÿÑàìÿÐàìÿÎÞëÿÍÝêÿÎÞëÿÏßìÿÔäíÿ׿îÿÔãíÿÑàíÿÒáíÿÓâíÿÑâîÿÍßîÿÊÝìÿÊÝìÿÊÝìÿÌÞìÿÌßíÿÊÝíÿÆÙêÿËÝíÿÑâîÿÑâîÿÏàîÿÏßíÿÒáîÿÔäïÿÔäïÿÑâïÿÎàïÿÊÝíÿÈÛìÿÏáïÿÏâðÿÌàðÿÉÝîÿÍàðÿÐãðÿÎáðÿÇÛíÿËßðÿÍáðÿÍâðÿÌâðÿÉßïÿÃÛíÿ¿Úíÿ¾ÙíÿÅÞïÿÀÜïÿ¼Øïÿ»×ïÿ¾ÚïÿÃÝïÿÁÛïÿ»×ìÿ¿ØíÿÃÛïÿÇßñÿÊâñÿËåñÿÊãðÿÅßðÿÀÛðÿ´Òíÿ¶Óîÿ¶Ôðÿ·ÖðÿºØðÿ½ÜðÿÀßïÿÁàïÿ¿Ýðÿ´Óîÿ²ÑíÿµÔïÿµÓîÿ¼ÚðÿÄßðÿ»Ùðÿ¶Ôíÿ»Øîÿ¿ÛðÿÃÞðÿÃÞðÿÁÛïÿ¿Øîÿ½×îÿÀÜïÿ¿Üïÿ¿Ûðÿ»ÙðÿºØðÿ·Õîÿ·Õïÿ·Öïÿ»Øïÿ¾ÛïÿÀÜïÿ½Ùïÿ·Õîÿ¶Óíÿ¹Öíÿ¼Úíÿ­Ïëÿ¯Ñíÿ®Òîÿ¯Óïÿ«Òïÿ©Ðîÿ¦Ïîÿ¦Ïíÿk©Ñïÿ´Úðÿ¹Ýðÿ´ØðÿªÐïÿ¯Ôïÿ°Õïÿ©Ñïÿ ÊîÿšÈíÿšÉîÿœÌðÿ ÏïÿŸÎïÿ™Éîÿ”ÂëÿšÈíÿ¦Ðíÿ¦ÏêÿŸÈçÿœÃâÿžÀÝÿ›¾Ôÿ“µÊÿ‡©Âÿ´ÇÖÿuˆ–ÿ{‹–ÿ»Ê×ÿŽ­Ãÿ“¶Îÿ“ºØÿ’¾àÿ–Âçÿ™Éíÿ›ËðÿÍòÿ™Éóÿ“ÅòÿšÉôÿ¥Óôÿª×ôÿ©Ôôÿ¤Îóÿ«Óõÿ°Øöÿ±Úöÿ­Øöÿ¤ÒöÿœÌôÿ”ÇòÿÏöÿ¡Óöÿ¡ÑöÿœÍöÿœÎõÿ¤Ôöÿ¤ÔöÿŸÍõÿ Îöÿ¡Ðöÿ¤Ôöÿ¥Øöÿ§Ùöÿ£×öÿ—ÏôÿÇòÿ˜Íôÿ ÔôÿšÏôÿŠÂòÿÆóÿ¢Õôÿ¥Öôÿ›Ìòÿ Íóÿ£Îóÿ¨Óóÿ±Úôÿ·Þôÿ¸Þôÿ²Úóÿ®Øóÿ¢Íóÿ Ëóÿ Êóÿ¢Ëóÿ¨Ñóÿ¬×óÿ²Üóÿ¹ßóÿºßôÿ­Ôóÿ«Òñÿ­Óñÿ«Ððÿ·ØóÿÁßóÿ¼Üóÿ¸×ñÿ½ÛóÿÂÝóÿÅàóÿÈâóÿÈàóÿÆÝñÿÃÜðÿÆÞñÿÇßñÿÈàñÿÉáóÿÇßòÿÆßñÿÇßñÿÇßñÿÊàòÿÎâòÿÑåòÿÑãòÿÎàòÿËÝïÿÏáðÿÑäðÿËßñÿÉßðÿÇÝïÿÆÝîÿÆÝïÿÆÞðÿÇÞðÿÇÞðÿÇÝïÿÎãñÿÓåðÿÒãðÿÉÝíÿÌßïÿÍàîÿÌàîÿÉÝîÿÅÚìÿÅÛíÿÆÝîÿÇÝîÿÇÜíÿÆÚíÿÂØëÿÈÜîÿÍàîÿÑãðÿÑâðÿÍÞíÿÏßíÿÑáíÿÒáíÿÑâîÿÍßîÿÉÜìÿÃØéÿÈÜìÿÉÝëÿÉÜëÿÇÛëÿÈÛëÿÌßíÿÌßíÿÉÛëÿÉÛëÿÉÛëÿÊÜêÿÉÝéÿÊÝéÿÈÜéÿÂ׿ÿ½ÓäÿÄØèÿÇÛèÿÄÙèÿ½ÓæÿÀÕçÿÉÝéÿÊÝéÿÅØçÿÆØçÿÈÙèÿÉÛèÿÍÞéÿÐàéÿÐàéÿÍÝèÿËÜèÿÅ×çÿÃÖçÿÄÖèÿÄÖèÿÈÚêÿÊÞëÿÍàëÿÐâëÿÐáëÿÊÜêÿÈÛêÿÊÜëÿÉÛëÿÐáîÿÔãíÿÑáíÿÍÝêÿÐßëÿÓàìÿÖäîÿØæïÿØåïÿ×ãîÿÕãîÿ×åïÿØåðÿØæðÿØåðÿÖäïÿÕãîÿÖäïÿÖäïÿ×äðÿÙåðÿÛçðÿÛçðÿÚåñÿ×ãïÿÚæñÿÝèñÿ×åñÿ׿òÿÕåñÿÓäðÿÔåòÿÓåòÿÓäñÿÓäñÿÒãðÿØèòÿÛéòÿÚèòÿÓãðÿÖåòÿ׿òÿÕæòÿÒäòÿÏáñÿÏãóÿÐäôÿÐäôÿÐäôÿÎâôÿÊßñÿÎáóÿÔæôÿÖéõÿÕæôÿÒãòÿÕæôÿ×çôÿ×çóÿÕæóÿÑäóÿÌßðÿÈÜîÿÎâòÿÏäòÿÏãòÿÌáòÿËàñÿÏäóÿÏãóÿËßòÿÌàóÿËáóÿÌâóÿÌäóÿÍäóÿÊãóÿÂÞñÿ¼ÙïÿÃÞóÿÅáòÿÁÝñÿ·Õïÿ¸ÖïÿÃÞðÿÃÞïÿ½Øîÿ¿ÙïÿÀÙïÿÁÛïÿÇàðÿÉâðÿÇàîÿÄÞïÿÀÜïÿ·Ôîÿ´Òîÿ´Ñïÿ´Òïÿ·Õïÿ¹Úïÿ¾ÞñÿÃáñÿÂàñÿ¸Øòÿ´ÕðÿµÕïÿ²Òîÿ»ÙñÿÂÞðÿ¼Úðÿ¸ÖîÿºØïÿ¿ÛðÿÂÞðÿÄßðÿÄÝðÿÁÚïÿ½ØîÿÀÛïÿ¿Ûïÿ¿Ûïÿ¾Úïÿ¼ÙðÿºØðÿ»Ùðÿ»Ùñÿ½ÙòÿÁÛòÿÄàòÿÂÞòÿ½Ùòÿ»×ðÿ¾ÚñÿÄßòÿ·×òÿ´×òÿ¯Ôñÿ­ÒðÿªÒñÿ©Óñÿ¨Òñÿ§Òðÿk§Ðïÿ²Øñÿ»Üñÿ¸Úñÿ©Ðîÿ­Ôñÿ°Öòÿ­Õòÿ¤ÑòÿžÌñÿÌòÿžÎóÿžÎòÿÎòÿ˜Èòÿ‘Ãïÿ˜Æðÿ£Ïïÿ¥Ðíÿ£ÊêÿšÁäÿœÀßÿš½×ÿ“¶Íÿ‰ªÂÿµÇÖÿu‡–ÿ~˜ÿ»ËØÿ­Æÿ“¹Òÿ™ÀÛÿ—Ããÿ–Åéÿ—Èïÿ˜Ëóÿ›ÎôÿœÍöÿ—Êöÿ™Éøÿ Ðøÿ§Õøÿ¬×øÿ¥Ï÷ÿ¨Òøÿ¬Õøÿ­Ù÷ÿ¬Ù÷ÿ¦Õ÷ÿÏùÿ•É÷ÿ˜ÌùÿžÒúÿ¡ÔúÿœÏùÿšÌ÷ÿ›Í÷ÿ¡Ðøÿ£Ñøÿ—Çöÿ—ÊöÿšÍ÷ÿžÓøÿ¦Ûùÿ¦ÜùÿÕùÿË÷ÿŒÈøÿ›ÕùÿÕúÿ‰Å÷ÿŠÅõÿÓùÿ¦Úùÿ Óùÿ¤Òùÿ¢Ï÷ÿ¦Òöÿ°Ûùÿ·áùÿºâùÿ·àùÿµÞùÿ­×ùÿ¤ÏøÿžÊöÿ¡Ìöÿ¦Ò÷ÿ¬Ø÷ÿ²Þøÿ·á÷ÿ¼á÷ÿ´Û÷ÿ±×÷ÿ¯Õõÿ®Óôÿ´Úõÿ¿ßöÿÂá÷ÿÀÞ÷ÿÀÞöÿÃßöÿÇã÷ÿÌå÷ÿÍå÷ÿÌä÷ÿÊâöÿÊã÷ÿËä÷ÿÌå÷ÿÍæ÷ÿÍå÷ÿÌä÷ÿÍäøÿÎåùÿÒçùÿÔéøÿØëøÿØëøÿÕèøÿÑåöÿÓæ÷ÿ×êøÿÖëùÿÒèùÿÎåøÿËäöÿÍäøÿÎæùÿÐèúÿÎæøÿÎå÷ÿÑç÷ÿ×êøÿÙì÷ÿÓæöÿÒæöÿÓç÷ÿÒçöÿÑæöÿÎåöÿÍãöÿÌãöÿÍä÷ÿÎäöÿÎãöÿÌáõÿÍâöÿÑåöÿÕçöÿ×èöÿÓäôÿÔåõÿÖæõÿÖèõÿÖèõÿÓæõÿÏäõÿËàóÿÍâõÿÏåõÿÑåõÿÏãõÿÍáóÿÎâóÿÐäôÿÑäôÿËßòÿËàòÿÍâóÿÏåôÿÒèôÿÒèôÿÏæõÿÉáóÿÊâöÿÑè÷ÿÑè÷ÿÈáõÿÈàôÿÑæöÿÕê÷ÿÒç÷ÿÓç÷ÿÒåöÿÓæõÿÙëøÿÜîøÿÜîøÿÚì÷ÿÙë÷ÿÔæöÿÐäöÿÍáõÿÎáõÿÑåöÿÔè÷ÿÖê÷ÿØì÷ÿÙìöÿÕèöÿÔæöÿÑäôÿÐãóÿÔçõÿÚêöÿÛêöÿÙéöÿØèôÿÙèôÿÛêõÿÞëõÿÝêôÿÜéôÿÚèóÿÚèôÿÛéôÿÝëõÿÝëõÿÜêôÿÛéôÿÛéõÿÛéõÿÞëöÿßìöÿâíöÿâíöÿßëöÿÜèôÿÝéõÿàìöÿßíöÿÝì÷ÿÙéöÿ×èõÿØèöÿØê÷ÿÚëùÿÙêøÿØé÷ÿÛìøÿßíøÿáðùÿÛëøÿÛëøÿÛëøÿÚìøÿÚëùÿÕéøÿÔèøÿÓèùÿÓèùÿÔéúÿÔèúÿÑæùÿÓæúÿÖéúÿØëúÿÛìúÿ×èùÿÙêúÿÛëúÿÛíúÿÛíúÿØëúÿÔèúÿÐåøÿÒçúÿÔéúÿÕêúÿÒèúÿÏåøÿÏåøÿÒçùÿÒçùÿÌâøÿËãøÿËäøÿÍçùÿÐêùÿÏêøÿÊæùÿÂà÷ÿÀßøÿÇæùÿÇåùÿºÛöÿ¹ÙôÿÄá÷ÿÈåöÿÃàöÿÄßöÿÂÜôÿÂÝóÿÉäöÿÌæöÿÍçöÿËæöÿÉä÷ÿÂß÷ÿ¼Ùöÿ¶Ööÿ·Ööÿ¹Úöÿ¼ÝõÿÀáöÿÂäöÿÆäöÿ¾ÞöÿºÚöÿ·ØôÿµÖóÿ»ÜõÿÃáöÿÄâöÿÁßöÿÁÞõÿÂßõÿÅâöÿÊäöÿÊäöÿÇâ÷ÿÅàöÿÄáøÿÅá÷ÿÆã÷ÿÆã÷ÿÄâ÷ÿÁà÷ÿÂßùÿÂàúÿÆãúÿÉåúÿÍèúÿÌçúÿÇãúÿÁÞøÿÂÞøÿÆãùÿÃãùÿ¼ßùÿ´Ù÷ÿ®Öõÿ®Õõÿ­×öÿ­×÷ÿ«Ööÿk¬Ôöÿ²Ù÷ÿºÞ÷ÿ¾á÷ÿ±Øöÿ¯Øöÿ°Øöÿ®Úöÿ«×öÿ¢ÑõÿžÎõÿœÎöÿ›ÍõÿœÎõÿ›Ëõÿ•Çóÿ—ÆóÿœËñÿ¡Îïÿ¤Ìëÿ™Àæÿ˜¾àÿ–¹×ÿ´Íÿ‡©ÁÿµÈÖÿt†–ÿ€™ÿ»ÌØÿ‹«Åÿ’¸Ñÿ›ÂÛÿ˜Äâÿ”Áçÿ’Áéÿ–Æïÿ˜Éñÿ›Ìóÿ™Ëòÿ•Æóÿ“ÄóÿœÊóÿ§Òóÿ¢Ìóÿ£Ìóÿ¤Îóÿ¦Ñóÿ§Óóÿ¢Ñòÿ›Ìòÿ”Æòÿ‘ÄñÿÅðÿ–Èñÿ—Èòÿ“Åñÿ‘Äðÿ—ÇóÿžÎóÿÃñÿ‘ÄñÿÆñÿ’ÉñÿšÐóÿÔóÿ™ÒóÿËôÿ~¼ðÿŠÇôÿ“Ìõÿ‰Æõÿ‚¿òÿŒÆóÿ›Ðõÿ¤×õÿ£Ðöÿ Ëõÿ ÍôÿªÖöÿ³ßøÿ¶áøÿ·àùÿ·áùÿ³Üùÿ¨ÒùÿÊùÿžËøÿ§Óøÿ¬×øÿ¯Üöÿ´ßøÿºâùÿ»âùÿ´Ûùÿ¯Ö÷ÿ²Ø÷ÿ¶Úøÿ¼ÞúÿÅåúÿÅäúÿÃâúÿÃàøÿÇãùÿÍçúÿÐéúÿÎçùÿÌäøÿÇâ÷ÿËåùÿÍæøÿÏèøÿÏçøÿÎåøÿÌäöÿÍä÷ÿÒçøÿÓèøÿ×êøÿÙëøÿ×êøÿÑåöÿÑäõÿÓæöÿÕéõÿÑæõÿÌâôÿÈàòÿÉáóÿËãõÿÊãõÿÉâôÿÊâóÿÊàòÿÐäôÿÖéôÿÔçôÿÑåôÿÐäôÿÑæõÿÒçõÿÎåõÿËáôÿÉàóÿËáôÿÌâôÿÍâôÿÍâôÿÌàôÿÌàôÿÑãõÿÕæôÿÒäôÿÓäôÿÔåõÿÕçõÿÕçõÿÔèöÿÒæöÿÏäöÿÍâõÿÍãõÿÏãõÿÏãõÿÍâôÿËáóÿÐäöÿÒæöÿÌàôÿÍâõÿÌãõÿÍäõÿÑçöÿÅÙèÿ¨¸ÈÿÍæ÷ÿÃÝóÿËä÷ÿÍåöÿÉâöÿÄÝòÿÈàóÿÐæöÿÔéöÿÓæöÿÐâôÿÎáòÿÔçõÿÙì÷ÿÚí÷ÿÚì÷ÿÛìøÿÙëøÿÓæøÿÏãùÿÏäùÿÒæøÿÓç÷ÿÓçôÿÖêöÿØêöÿØêõÿÓçõÿÐãóÿÐâòÿÓåôÿ×èöÿÛëöÿÛëöÿÚêöÿÚéöÿÛêöÿÞìöÿàî÷ÿßí÷ÿÞì÷ÿÛêöÿÝì÷ÿßíøÿßî÷ÿàíøÿßíøÿÞìøÿÞìøÿáîùÿáïùÿãïøÿäðøÿâïøÿßë÷ÿÞë÷ÿàíøÿâïøÿÞì÷ÿØèõÿÕæóÿÕæôÿÖèõÿÖçõÿÕèõÿØé÷ÿØé÷ÿÜìùÿàðùÿßîùÿÜíùÿÚëùÿÛîúÿÛîúÿØìúÿÕèùÿÒçøÿÔèúÿÔéúÿÔéùÿÓèùÿÑæùÿÐäøÿÓæøÿØêøÿÖèøÿÖèøÿ×éùÿ×êøÿØêøÿÖéøÿÓèøÿÐæøÿÏä÷ÿÏå÷ÿÑæøÿÐå÷ÿÍãöÿËáõÿÎã÷ÿÐæ÷ÿÈßõÿÉá÷ÿÈâ÷ÿÈã÷ÿÌæøÿËç÷ÿÈåöÿÂáöÿµÕñÿ¾ÝõÿÀßõÿ¹Úôÿ´Ôðÿ¹ØñÿÀÞóÿÅâóÿÂÜóÿ¾Øñÿ½×ïÿÂÝñÿÇãóÿÉåôÿÈâóÿÇâóÿÄáôÿ¼Úõÿ³Óõÿ³Óôÿ¸Ùõÿ»Ûôÿ¼Ýòÿ¿áõÿÂáôÿÂáôÿºÛôÿµ×òÿ¶Öñÿ¸Ùóÿ½ÝöÿÅâöÿÄáöÿÁÞõÿÀÝôÿÃàöÿÉã÷ÿËå÷ÿÉä÷ÿÆá÷ÿÁß÷ÿÄâùÿÇåùÿÉçûÿÈåûÿÆãûÿÄâúÿÃáúÿÈåûÿÉæüÿÎéüÿÏêüÿËçüÿÃáúÿÂàúÿÄãûÿÈèûÿÀãûÿ·Ýúÿ°Úøÿ±Úúÿ°Ûûÿ­Úûÿ«Úúÿk®Úúÿ®ØùÿµÝûÿÀåûÿ»âûÿ³Ýúÿ°Úúÿ°Þûÿ±Þûÿ¨Ùûÿ¡ÒúÿœÏùÿžÑûÿŸÒûÿ ÓûÿžÑùÿ™Ëùÿ•Ç÷ÿœËõÿ¥ÐñÿÆíÿšÁåÿ–¼ÝÿµÒÿ‰¬Çÿ·ÊÙÿwŠ™ÿ‚˜ÿ¼ÌØÿ‰«Ãÿ”·ÐÿÃÛÿœÇåÿ•ÄêÿÄíÿ™Ëóÿ™ÎõÿžÒ÷ÿžÓøÿ—ÌùÿÄ÷ÿ—Êùÿ¨Öùÿ¤Òùÿ¤Òùÿ¤Ñùÿ¦Ôùÿ¨Öùÿ§Øúÿ¢ÔúÿÐúÿ”Éøÿ‘Çöÿ“É÷ÿ™Íøÿ–Ê÷ÿÅõÿ”È÷ÿžÐ÷ÿ’È÷ÿ”Ëöÿ‘ÉöÿÈõÿÌöÿ”Ñöÿ”ÒöÿÏöÿv»ñÿ|¿óÿ‡ÈöÿŠË÷ÿÂõÿ{½ñÿŽÍ÷ÿ¨Þøÿ ÓøÿžÌöÿœËôÿ§Óöÿ°Û÷ÿ´Ýøÿ¶Þøÿ·ßøÿ¹ßøÿªÓøÿœÈõÿ›Éôÿ¤Ðöÿ©Õöÿ¬Øöÿ°Ú÷ÿ¶Þöÿ½âöÿµÛöÿ­Ôôÿ²Ùöÿ±×õÿ¶Ú÷ÿÇæúÿÇæúÿÅãúÿÃáùÿÆãùÿÌçúÿÑéúÿÏéúÿÎçúÿÈâøÿËåúÿÍçùÿÏèøÿÑéúÿÑèúÿÐçùÿÐæùÿÓéúÿÒçùÿÖêùÿÚìùÿÚìùÿÖéùÿÕèùÿÕéøÿØíøÿÔêøÿÏå÷ÿÍäöÿÎåøÿÎæøÿÎçúÿÌåùÿÐèúÿÍäøÿÑçùÿÚîúÿÝïúÿ×ëúÿÓèøÿÖëúÿØìúÿÔêúÿÎæùÿÊã÷ÿÐçúÿÐèúÿÒéúÿÓéúÿÐçúÿÍãùÿÒæúÿØëúÿ×éúÿØêûÿØëûÿÙìûÿØìúÿ×ëùÿÔèøÿÓçùÿÎä÷ÿÌâöÿÎä÷ÿÑçùÿÑæùÿÍã÷ÿÐåùÿÔèùÿÏåùÿÐçùÿÎæùÿÍåøÿÎçùÿXWnÿROgÿÌç÷ÿ¾ÚñÿÄßõÿÉä÷ÿÊå÷ÿÃßôÿ¿ÙïÿÊãõÿÔêõÿÑåõÿÎáóÿËßðÿÐãòÿÕèôÿ×èôÿ×èôÿ×éôÿØéôÿÒåõÿËßóÿËàôÿÏãõÿÐäôÿÐåóÿÒæôÿÖéõÿÚìöÿÖèöÿÏãóÿÒåôÿÑäóÿÓåôÿÜìöÿÜìöÿÛêöÿÚêöÿÛêöÿÞì÷ÿßíöÿßìöÿÞí÷ÿÚéõÿÜë÷ÿßíøÿàïùÿàîøÿßíøÿßíøÿßìøÿâïúÿáïúÿãðúÿæñúÿåñúÿãïúÿâîúÿâïùÿâðøÿàïùÿÜëøÿÚê÷ÿÛëùÿÚëùÿÙëùÿÖéøÿÙëùÿÕçöÿ×èöÿÞî÷ÿàî÷ÿÛë÷ÿ×èõÿÚë÷ÿÚë÷ÿ×ê÷ÿÑæöÿÌâôÿÒçøÿÑçøÿÒç÷ÿÑæöÿÎäöÿÊàõÿÏã÷ÿÕèöÿÓæöÿÓåõÿÓåõÿÒåôÿÒåóÿÑåóÿÏãóÿÎâôÿÊßòÿÈÞñÿÉÞñÿÍâôÿÌâõÿÇÝòÿÉßôÿÎãõÿÇàõÿÈàõÿÆàõÿÂßôÿÃáõÿÅãõÿÄãõÿÂâöÿ²Õñÿ·Úöÿ½ßøÿ½àøÿµÙõÿ°Ôñÿ¼ß÷ÿÉè÷ÿÄá÷ÿÁÜöÿ¾ÛóÿÄàõÿÊå÷ÿËæ÷ÿÍçùÿÍèùÿÍçùÿÂàùÿ¶Ö÷ÿµ×øÿ»Ýúÿ½áúÿ¿ãûÿÂåüÿÆçüÿËëüÿÄäüÿºÝùÿ½ßúÿ»Þùÿ½ßúÿËéüÿÌêýÿÉæýÿÆäüÿÇæüÿÍéýÿÐëýÿÏêýÿÌèýÿÄãûÿÇåýÿÊèýÿËéýÿËèýÿÇåüÿÆäûÿÅãûÿÉæüÿÆäüÿËçýÿÐêýÿÏêýÿÈåüÿÆãüÿÆäûÿÊéûÿÂåûÿ¸Þûÿ´Üúÿ´Üüÿ²Üüÿ¬Úûÿ¨×úÿk­Úûÿ§Ôùÿ®Øúÿ¾äûÿÂåúÿ¶Þûÿ®Úùÿ²Ýûÿ³ßûÿ«ÛûÿžÒùÿ–Ì÷ÿžÑúÿœÒùÿžÓùÿžÓùÿ—ÊøÿŒÀóÿ“Äóÿ¢Îðÿ›Åëÿ—Àåÿ’ºÜÿŒ³Ñÿ‡¬Èÿ·ËÚÿx‹šÿ‚™ÿ¾ÍØÿ­Åÿ‘¶ÑÿœÃÝÿ£Íæÿ™ÊìÿŠÁëÿ‘Éóÿ“Êõÿ—Ð÷ÿÔùÿ›Ñúÿ–Îúÿ—Íúÿ›ÐúÿŸÔúÿ Óûÿ Ôûÿ£Õüÿ¤Öüÿ¥×üÿ¤Ôüÿ£ÓüÿšÌûÿ™Ëúÿ–Ëúÿ”Êûÿ•Ëüÿ•Ìýÿ–Ïýÿ˜Ïýÿ˜Ðýÿ‹Èýÿ€ÀúÿÂùÿ‰Ëüÿ”Õüÿ—Úüÿ•ÚüÿwÅúÿuÄúÿ„ÏýÿÖýÿ}ÊýÿuÁùÿ‡Ïýÿ Þýÿ¥ÜýÿŸÓüÿžÑúÿ©Øüÿ³Ýýÿ·ßýÿºàýÿ¿äýÿ¾âýÿ¸ßýÿ¯Øüÿ¥ÑùÿŸÏøÿ£Óúÿ«Úûÿ³Þúÿ¶Þùÿ¿äùÿ¾ãùÿ´Ûøÿ®Öõÿ±Øõÿ¸Ý÷ÿ»ßùÿÂæùÿÆåùÿÆã÷ÿÅáöÿÇãöÿÎæ÷ÿÏçøÿÎçøÿÊäøÿÊä÷ÿÌåøÿÏè÷ÿÑé÷ÿÐç÷ÿÑè÷ÿÒèøÿÏåöÿÔéøÿÙìøÿØëöÿÕèöÿÒæöÿÒåöÿÒæöÿÕèöÿ×ëöÿÖêöÿÑæöÿËãöÿÌä÷ÿÍæøÿÎæùÿÌäùÿÍåùÿÐçúÿÓêúÿÜíúÿÙìùÿÖéøÿÔèøÿÕêøÿÖëøÿÐèøÿÄÞòÿÊä÷ÿÍæùÿÏèùÿÒéùÿÑèùÿÐæùÿÐæùÿÒçùÿÓéùÿÓèøÿÓèøÿÔèøÿÔèøÿÕéøÿÔèøÿÔçøÿÐä÷ÿÏãöÿÎã÷ÿÎäøÿÏåùÿÏæúÿÏæùÿÑçúÿÑçúÿÌäúÿÆß÷ÿÅà÷ÿËæúÿOKcÿOKcÿÏìúÿÂá÷ÿÁá÷ÿÉçúÿÍêúÿÈçüÿÂáøÿËéüÿÖðýÿØïýÿÔêüÿÒèúÿ×ëûÿÝïýÿÞïýÿßðýÿáðüÿàðüÿÞïýÿÙìýÿÓèûÿÑçûÿÓêýÿ×íýÿÚïýÿÛïýÿàòýÿàñýÿÚíüÿÕéùÿ×ëúÿÚîüÿÜïýÿàòýÿâòýÿâñýÿßîúÿàïúÿãñúÿäòûÿãñûÿáïûÿàïúÿáðûÿãòûÿãòûÿâñûÿãñûÿãñûÿàîùÿäòûÿçóûÿçôûÿåòûÿäñüÿãðüÿãðüÿäòüÿåóûÿåóüÿàïûÿÛìúÿÜíûÿÛíûÿÚìúÿØêúÿØêúÿÚìûÿÜîûÿáðúÿßïúÿÜìùÿÚëùÿÜîúÿÝïúÿÖìúÿËâôÿÐçùÿÑèúÿÓëûÿÕëûÿÕëüÿÓêüÿÓéüÿÔêüÿÖìüÿÖëüÿÖëüÿ×ìüÿØìüÿØìüÿ×ëûÿÖêûÿÒæúÿÐäøÿÎã÷ÿÍã÷ÿÍã÷ÿÍãøÿÌäøÿÌäøÿÌåùÿÆáùÿ¾Ûöÿ¾Ý÷ÿÂâúÿÆæùÿÇèùÿÆéúÿµÜ÷ÿ³Û÷ÿºáùÿ¾äùÿµÞùÿ­×õÿ¸àùÿÅçùÿÆåùÿÁàøÿ¿ÝöÿÅâøÿÊåùÿÌæùÿÍæùÿÐèùÿÍæøÿÉäùÿÁÞùÿ¸Øöÿ´×öÿ¶Úøÿ»àùÿÀâøÿÁáøÿÇæøÿÇåøÿ½Þ÷ÿµÙôÿ¸Ûõÿ½ßøÿ¾àùÿÄåøÿÆäøÿÅâ÷ÿÃàöÿÄáõÿÊäöÿËåöÿÈäöÿÃà÷ÿÃáöÿÃá÷ÿÈå÷ÿÈæ÷ÿÆä÷ÿÇäøÿÈåùÿÃàöÿÇåøÿÍçøÿÌèøÿÈäøÿÃà÷ÿÂÞ÷ÿÀÞøÿÃâøÿÄå÷ÿÂä÷ÿ¹Ü÷ÿ®×öÿ­Ö÷ÿ¬×øÿ«Öøÿk¦Ò÷ÿ¦ÒøÿªÖøÿ®Úøÿ½àøÿ¸Ýøÿ²Ùøÿ®Øùÿ±Ýúÿ³àúÿ£×úÿÉôÿ•Ïùÿ—Ðüÿ›ÔüÿžÖüÿ›Òûÿ•Ìùÿ“É÷ÿ–Êôÿ–Éïÿ•Åêÿ¾áÿ‰µÕÿ‚ªÉÿ¶ÊÚÿxŠšÿ„‘›ÿÁÐÚÿ”³Ëÿ•¹ÕÿÄáÿ¥Ðêÿ Òñÿ“Êòÿ‘Ëöÿ’Îúÿ˜Óþÿ›ÖþÿÖÿÿ˜Òÿÿ–Ïÿÿ–Ïÿÿž×ÿÿÖþÿžÖþÿ ×ÿÿ¢×ÿÿ¤×ÿÿ¥Öÿÿ¦Õÿÿ¡ÑþÿžÐþÿ™Íýÿ–Ìýÿ”Ìþÿ”Íþÿ•Ïþÿ”Ðþÿ•Ðþÿ‹ËþÿƒÅþÿ}ÂüÿÆýÿ‰Ðþÿ“Ùþÿ˜ßþÿzÉýÿnÁøÿpÁùÿ~ÎüÿÎüÿqÁùÿzÇüÿ–Øüÿ¦Þûÿ¢×ûÿ¡Òûÿ¤Ôúÿ­Øûÿ´Ýüÿ¼ßüÿÀãüÿÀáüÿ»ßüÿ³Úüÿ©Ôúÿ¡Ñûÿ£ÔýÿªÛþÿ³áþÿ¸âþÿÁåþÿÃçþÿ¿ãÿÿ·Þüÿ¶Þüÿ»âþÿ¿äþÿÆèþÿÉêþÿÊêþÿËçýÿÌéüÿÒëýÿÔìýÿÒìýÿÐéüÿÎèüÿÐéûÿÔëûÿÔìûÿÒëûÿÔëúÿÖíûÿÒêùÿÖíüÿÚîûÿÛîûÿÙíûÿØìûÿØêûÿÖèúÿØìúÿÚîùÿÙíùÿÔéùÿÏå÷ÿÎåøÿÏåùÿÎæùÿÎæøÿÌä÷ÿÍä÷ÿÍå÷ÿÙê÷ÿÙë÷ÿÖè÷ÿÑåõÿÓè÷ÿÔéöÿÑè÷ÿÉâõÿÉâõÿÊãöÿÍæøÿÎçøÿÐçøÿÎå÷ÿÌãöÿÍã÷ÿÐç÷ÿÒéùÿÒéùÿÓéùÿÓéùÿÔéùÿÕéúÿÖèúÿÓçùÿÓçúÿÑåùÿÐæúÿÐçûÿÐçûÿÑèüÿÑéüÿÑéüÿÎèýÿËåýÿÇãûÿÉåüÿPMeÿPMeÿÒïüÿÆæüÿÀâùÿÁâùÿÉéýÿÊéýÿÁâùÿÆæüÿÑíüÿÙðýÿ×íýÿÕêüÿÖëüÿÚíýÿÝîüÿÞîûÿàðûÿàïûÿÞïüÿÙëûÿÓæøÿÎä÷ÿÏæùÿÒéùÿÕëùÿØëùÿÜíùÿÜîùÿÚëùÿÔçöÿÓçöÿÖêøÿØëøÿÛíøÿÝîøÿÝíøÿÜë÷ÿÝì÷ÿàîøÿáîøÿàîøÿßíøÿÞíøÿàîùÿáïøÿàî÷ÿßî÷ÿßíöÿàî÷ÿÞìöÿáïøÿãðøÿäðøÿâïøÿàí÷ÿàì÷ÿßìøÿáïøÿãñùÿâðùÿÞîùÿÛëøÿÜìûÿÜìûÿÚìûÿÚìúÿÙëúÿÙëûÿÙìûÿâðûÿâðûÿßîûÿÚëùÿÛíúÿÜîúÿ×ìùÿÎåöÿÌãõÿËãõÿÍäöÿÎæöÿÏæöÿÎå÷ÿÌãöÿÌãöÿÏæöÿÏæöÿÑç÷ÿÒèøÿÒèøÿÔèøÿÔçøÿÔçøÿÑå÷ÿÑåøÿÐäøÿÎã÷ÿÍäùÿÌäùÿÌåùÿÊã÷ÿÊäøÿÅáøÿÀÝ÷ÿ»Úõÿ½ÜöÿÁâøÿÅçùÿÇêùÿ·Þøÿ®Øôÿ¯Ùöÿ¸áúÿ·áúÿ¬Øöÿ±Üùÿ¿äøÿÈèùÿÄãùÿÂàøÿÃàøÿÈãúÿÍçûÿÐèûÿÓêûÿÑéüÿÍçüÿÆãûÿ½ÝùÿµÙøÿ¶Ûúÿºàûÿ¿ãûÿÂãúÿÈæúÿÉçûÿÄãûÿ»ÞøÿºÝøÿ½áúÿÁãûÿÅæúÿÈçúÿÈçûÿÇåúÿÈæúÿÎèûÿÏèûÿÌèúÿÈäúÿÆãúÿÈåúÿËçúÿÊèùÿÇæùÿÇåøÿÉæùÿÅã÷ÿÈçúÿÍéúÿÍéúÿÊæúÿÅãùÿÄáùÿÃÞùÿÅäùÿÈçùÿÅæùÿ¼àùÿ´Ùøÿ¯×úÿ¯Øúÿ¬Øûÿk­Ùúÿª×úÿ¨Öúÿª×úÿ¾âúÿ½áúÿ·Üúÿ®×øÿ®Úúÿ±ßùÿ§Úùÿ–Îöÿ’Ìöÿ‘Ì÷ÿ•Ïùÿ—Ñøÿ˜Ðøÿ’Ë÷ÿŽÅôÿÃñÿ’ÇîÿŽÂæÿ‰»Ýÿ„²Óÿ~§Çÿ´ÈØÿwŠ™ÿ‚›ÿÂÑÛÿ˜µËÿ•¹Õÿ™Âáÿ¤Ïëÿ§ÕñÿžÓ÷ÿ‘Ë÷ÿËùÿ“Ïüÿ›ÔþÿŸÖþÿšÒþÿ”Ìþÿ‘ÊýÿšÓþÿ›ÔþÿÕýÿŸÕüÿ Ôüÿ Ôýÿ¢Òüÿ£Óüÿ¡Ñüÿ Ðüÿ›Ïüÿ—Ìûÿ“Ëüÿ“Ìýÿ“Íýÿ“Ïýÿ“ÍýÿÌýÿ‡Çýÿ|Áûÿx¿ùÿ}ÅüÿŠÒýÿ–ÝýÿŒ×ýÿvÅûÿc¶ôÿsÄûÿ‰Õýÿ|ÉýÿsÁúÿÓýÿ§Þýÿ¨Ûýÿ¤Õýÿ¢Òúÿ¦Óûÿ³Üþÿ½áÿÿÀãÿÿÁãþÿ¾âýÿ¸Ýüÿ­Öûÿ¢Ð÷ÿŸÐ÷ÿ¥Õûÿ­Úûÿ·Þûÿ¾áûÿÁåûÿ¿äûÿ¸Ýúÿ²×øÿ¶Ûøÿ½áùÿÂâøÿÄãøÿÅäøÿÆâ÷ÿÇãöÿÍå÷ÿÏæ÷ÿÎç÷ÿÌäøÿÌæøÿÏèøÿÑêøÿÒéøÿÑè÷ÿÑçöÿÔê÷ÿÒèöÿÓèöÿÕé÷ÿ×ë÷ÿÙë÷ÿÖê÷ÿÔç÷ÿÒåöÿÔèöÿØêöÿ×êõÿÔèõÿÎäõÿÌãöÿÌã÷ÿÌä÷ÿÐèøÿÐèúÿÏæúÿÍæúÿÙëúÿÜïúÿÛíúÿÔèøÿÓéùÿÖìùÿØíûÿÒëûÿËäøÿËäùÿÍçúÿÑèúÿÓéúÿÒéûÿÐæûÿÎåúÿÒéûÿÓéûÿÒéùÿÓéùÿÓèùÿÓèùÿÕèúÿÕèùÿÔçùÿÒæøÿÐåøÿÎã÷ÿÍäøÿÍäøÿÍäøÿÍåøÿÍäøÿËäøÿÉãùÿÄß÷ÿÁÝõÿOKcÿOLcÿÏëùÿËéùÿÁá÷ÿµÖïÿ¾ßõÿÈæöÿÂáöÿ¼ÜóÿÉå÷ÿÓê÷ÿÔêøÿÒçøÿÐäöÿÑäõÿØéøÿÝíúÿÞíúÿÞíùÿÛìøÿØé÷ÿÒåöÿËáóÿËâôÿÐçùÿÓèøÿ×é÷ÿÚëøÿÛíøÿÛìøÿ×éøÿÓæöÿÔçöÿÚìùÿÝîúÿÝíùÿÝíøÿÝìøÿÞíøÿáïùÿãðúÿáïøÿßíøÿßíøÿàïøÿáïøÿáïøÿàî÷ÿàî÷ÿãðùÿáïøÿáïøÿãðùÿäñùÿåñùÿãðùÿâîùÿßìøÿàîøÿãðøÿâðøÿßïøÿÝíúÿÚëùÿÚëúÿÙëúÿÚìùÿÙëùÿØêúÿ×êûÿßîúÿáðúÿàïúÿÙêøÿØëùÿÛîúÿÛîúÿÕëúÿÍå÷ÿÍåøÿÏèúÿÓêûÿÔêûÿÒèúÿÐçûÿÎåúÿÒéûÿÔêüÿÕëüÿÖëüÿÖëüÿÖëüÿ×êüÿ×ëüÿÖêüÿÖêüÿÓèûÿÑæúÿÏåúÿÎåúÿÍåúÿÌæúÿËåúÿÈäûÿÅâûÿ½Ýøÿ¹Úöÿ¼ßùÿÃæûÿÈëûÿÃèûÿµÝùÿ§Òòÿ²Üùÿ½åûÿµÞûÿ¬Ø÷ÿ»âúÿÈçúÿÇæúÿÃáùÿ¿ÝöÿÁÝöÿÈâøÿÎåùÿÏçùÿÐçúÿÎçúÿÉäúÿÀßùÿ¶Ùöÿ³Øöÿ·Ýúÿ¼àúÿÃãúÿÈåûÿÉèûÿÇæûÿ¿àúÿ¹Ûøÿ»ÞøÿÂåüÿÇæüÿÇçûÿÇçûÿÈæûÿÈåúÿÍçúÿÏèûÿÍéûÿÉåûÿÈæûÿÊèûÿÌéûÿÌéûÿÉçûÿÉçúÿÍéûÿÉçúÿÉçûÿÌèüÿÎëýÿÐêýÿÌèýÿÉåýÿÄàûÿÄäûÿÉéüÿÉéûÿÁåûÿ·Ýûÿ±Ùúÿ®Øûÿ«Øûÿk°Üûÿ¬Úûÿ¨Öûÿ¤ÓûÿºÞûÿ¿äúÿ¼àúÿ®Øøÿ©×ùÿ¯Ýúÿ®Ýúÿ¡×ûÿ’ÍøÿËøÿ’ÍúÿšÒûÿÓúÿ–ÍøÿŽÅöÿŠÀñÿÄíÿÁçÿŠ»Þÿ„²Óÿ~¦Çÿ´ÉÚÿwŠšÿ~Œ™ÿÁÐÚÿ˜¶Èÿ”¸Óÿ–¿Ýÿ¢Ìèÿ¦Óîÿ£Ôòÿ“ÊòÿÉôÿ‘ÊöÿšÑùÿŸÕùÿœÒùÿ”ËùÿÆ÷ÿ–Íúÿ™ÑúÿžÓúÿžÔùÿÒøÿŸÑøÿžÐøÿŸÑøÿ¡ÑøÿÏøÿ›Ïùÿ–Ìúÿ’Êùÿ‘Éùÿ‘ÊùÿËúÿ‘ËúÿÊúÿ‡Æúÿ}Àøÿv¼÷ÿwÀøÿ‚ËûÿŽÖûÿœàûÿ‰Ôûÿe¶óÿf·ôÿ‡ÒüÿƒÏüÿqÁøÿÈûÿ¢Úýÿ«Ûýÿ©Øýÿ£Ñúÿ¦Ñúÿ²Ûüÿ¼àýÿ¼àýÿÀâýÿÁäýÿ½ãýÿ³Ýüÿ¦Óùÿ Ð÷ÿ¥Öüÿ®Ûþÿºàþÿ¾ãÿÿÅçÿÿÆêÿÿÀäÿÿ¶Üüÿ¹ÞüÿÃæÿÿÅæÿÿÉèÿÿÍêÿÿÍêÿÿÏêÿÿÔíÿÿÕíþÿÔìþÿÑêþÿÐéüÿÑëüÿÔìüÿÕìüÿÑéúÿÔëûÿØîüÿØíüÿ×ìûÿ×ìûÿÛîüÿÞñýÿÞðýÿÛîüÿØìûÿØëùÿÜîûÿÞðûÿÚïûÿ×ëûÿÓèûÿÐæúÿÐçúÿÒéúÿÑèúÿÏæúÿÎæúÿÓç÷ÿÜîúÿÝïúÿ×êúÿÓéùÿ×ìúÿ×íúÿÔëùÿËäöÿÉâõÿËãöÿÐçøÿÒè÷ÿÒèøÿÏæùÿÌã÷ÿÑçúÿÓêûÿÕëûÿÕëûÿÕëûÿÕëûÿÕêûÿÖêûÿ×êûÿÕéûÿÔéûÿÑçúÿÐçûÿÐçûÿÐçûÿÐèüÿÐèüÿÏèüÿÍçýÿÈãûÿÃàùÿPMeÿPMeÿÐîþÿÖòþÿÎíþÿ»Üöÿ»ÝöÿÍìýÿÌëþÿÁâúÿÈæüÿØðÿÿÜðÿÿÚîþÿÖêüÿ×êüÿÝïþÿâòÿÿâòÿÿãóÿÿãóÿÿâóÿÿÜðÿÿÔêüÿÐçúÿÓëýÿÙîÿÿÝðÿÿßñÿÿâóÿÿâôÿÿßñÿÿØìüÿÙìüÿßñþÿßñþÿàñýÿâñýÿâñýÿáðüÿäòüÿãñúÿãðúÿáïûÿáïûÿâñûÿãòûÿäñûÿáïùÿâðúÿäòúÿãðùÿáïøÿáïøÿãðùÿåñùÿåðùÿãïùÿàíøÿàí÷ÿäñúÿåòúÿâðùÿÞíùÿÛêøÿØè÷ÿØè÷ÿÙêøÿ×é÷ÿÕç÷ÿÔç÷ÿ×çôÿÞí÷ÿÞíöÿ×èõÿÔæôÿØêöÿØë÷ÿÖê÷ÿÍäõÿÌãõÿÍäöÿÒèùÿÔêùÿÔêúÿÐçúÿÍäøÿÐæùÿÑèùÿÓéùÿÓéùÿÓéùÿÔéùÿÔèùÿÔéùÿÕéùÿÓèùÿÒçùÿÐæùÿÏåùÿÎæúÿÍåùÿÊãøÿÊãøÿÇá÷ÿÃß÷ÿ½Ûõÿ·Øôÿ¸Ûöÿ¾áùÿÃåøÿÉëùÿ¿åùÿ¨Òñÿ¦Ððÿ»âøÿ¹áùÿ«Öõÿ±ÙöÿÄäøÿÈäøÿÆá÷ÿ¿ÜõÿÀÜõÿÈâ÷ÿÎåøÿÍåøÿÏæøÿÎæøÿÊå÷ÿÂàøÿ¸Úöÿ²Öóÿ´Ùöÿ»ÞùÿÂáùÿÄâùÿÉæúÿÊéúÿÃâùÿ¹ÚöÿºÛöÿÁáøÿÂáùÿÄãùÿÉæúÿÈæúÿÊæüÿÎéüÿÏéûÿÍçûÿÉåûÿÇäûÿÉæúÿËçúÿËæúÿÆãøÿÈæùÿÌéúÿÊçúÿÉæúÿÉçûÿÌéüÿÏêüÿÏéüÿÊæüÿÅâûÿÅãùÿÉçûÿËéûÿÅæûÿ½àûÿµÛüÿ°Øüÿ®Ùüÿk±Üüÿ­Úüÿ©Öüÿ¥Ôüÿ²Ùùÿ¿äûÿÀäûÿ±ÛûÿªÚûÿ±àýÿ±âüÿªÞüÿ˜Ñùÿ“Îùÿ”ÍúÿœÓüÿŸÖúÿ›Òùÿ“ÊøÿÂóÿÄðÿÅìÿ¿ãÿˆ¸Øÿ¬Ìÿ¶ËÛÿyŒ›ÿ{‹˜ÿ¾ÎÚÿš·Êÿ›¾ÖÿÄáÿ¤Îëÿ¨Õñÿ§ØöÿÒøÿ•Îøÿ–ÏûÿŸÖÿÿ¥Úÿÿ¢ØÿÿÑÿÿ”Íýÿ”Íþÿ—ÑþÿžÕþÿ¢Ùþÿ£Øþÿ£Öýÿ ÔýÿŸÒüÿ¢Ôüÿ Ôüÿ Óüÿ›Ñüÿ—Ðûÿ”Îûÿ’ÌûÿÊúÿ“Íúÿ‘ÍüÿŠÉüÿ‚Åûÿ{ÁùÿxÁùÿ|Çúÿ€Ëûÿ™ßûÿ—Ýûÿp¿öÿ^­ëÿ{Çùÿ‰ÑúÿxÄøÿx¿ôÿ›Ñúÿ¨Ùúÿ¬ÛúÿªÖúÿ©Õùÿ³Úùÿ»Þúÿ¼Þúÿ¾ßúÿÀãúÿÀãùÿ·ÞùÿªÕöÿ¢Ðóÿ£Ïóÿ©Óôÿ²Øöÿ·Û÷ÿ¿àøÿÃäùÿ¾àùÿ¶Ù÷ÿ¶Ú÷ÿ¼ß÷ÿ¼Þ÷ÿÂá÷ÿÇäøÿÉåøÿÉãøÿÍçøÿÏçøÿÐçøÿÍåøÿÎæùÿÐèùÿÓêúÿÓèúÿÐæ÷ÿÒèøÿÖëúÿ×ëùÿ×êùÿ×êùÿÚìúÿÝîúÿÞîúÿÛìúÿ×êøÿÖèöÿØë÷ÿÛíøÿÛíøÿ×ëøÿÓèùÿÐæùÿÐçúÿÒèûÿÒéüÿÒèûÿÑèûÿÑåöÿÚìûÿÞïûÿÚíûÿ×ëúÿ×ëùÿØìúÿ×íúÿÑèùÿÌäöÿÍä÷ÿÒéúÿÖëúÿÔêúÿÒçúÿÎåùÿÏæúÿÐèúÿÓéúÿÕëúÿÕêúÿÕêúÿÔéúÿÓèùÿÕêúÿÔéúÿÔéúÿÒèúÿÑèúÿÐçúÿÏæúÿÏçûÿÑéüÿÐèüÿÌæûÿÉãúÿÅáøÿPLdÿPLdÿÈçûÿÓïûÿÑîûÿ¿ßöÿ²ÒìÿÆåúÿÍêüÿÄäúÿÁßöÿÕìþÿÚïþÿÜðþÿÚîþÿÙíýÿÞðþÿáñþÿáñþÿâòþÿãóþÿãóþÿÞñþÿØíýÿÒèúÿÓéûÿ×íýÿÜïþÿÞðþÿâóÿÿäôÿÿßñþÿÚìüÿÚíüÿÞñþÿÞðþÿàñýÿãóþÿãòýÿäòþÿæôþÿçôþÿæóýÿäñýÿäñýÿäóýÿæôþÿæóþÿâðûÿãñûÿåóüÿæóüÿåòûÿäñúÿæòûÿèóûÿèóûÿæòûÿãðúÿáïøÿãðùÿåòúÿåòúÿáðúÿÝíúÿÛëúÿÚìúÿÛëúÿÙëùÿÙêùÿ×éùÿÕåóÿàïûÿâñûÿÞïûÿÛìúÿÛíúÿÛîúÿÚîúÿÓèøÿÎåöÿÎå÷ÿÒèùÿÕêùÿÓéùÿÒçúÿÎåùÿÏæúÿÐèúÿÓéúÿÕëúÿ×ìüÿ×ìüÿÖëüÿÖëüÿ×ìýÿÖìüÿÖëüÿÔêüÿÓëýÿÑéýÿÐèýÿÎèýÿÏèýÿÍèýÿÉæýÿÃâûÿ¾Þùÿ»Þùÿ½áúÿ¾ãûÿÊìûÿÇëûÿ±Ùöÿ¡Ëìÿ¶Þùÿ»âùÿ°Ùöÿ­ÕóÿÁàøÿÇã÷ÿÈä÷ÿÅàöÿÃÞõÿÊã÷ÿÍäöÿËãõÿÌãõÿÍåõÿËäôÿÄàôÿºÚòÿ³Õðÿ³Õñÿ¶Øñÿ¼Úòÿ½ÚñÿÂÞñÿÅàñÿ¿Ýñÿ¶Õïÿ¶Öïÿ¹Úïÿ¸×ïÿ½ÚïÿÀÜðÿÁÜðÿÁÛðÿÅÞñÿÇàòÿÆàòÿÂÜñÿÂÜòÿÃÞòÿÃÞðÿÂÜñÿ¿Úïÿ¿ÛîÿÃÞðÿÆßñÿÅÞñÿÃÞñÿÆàóÿËâôÿÊãóÿÇàôÿÂÞôÿÀÝòÿÃáôÿÆãõÿÅãõÿ¼ßõÿ³Øõÿ¬ÔöÿªÓõÿkªÓôÿ§Óôÿ¨Ñôÿ¤Ðõÿ¨ÎïÿµÙõÿ¼ßöÿ²Ùõÿ«Õôÿ¬×õÿ¬Ùõÿ¨ØõÿšÎóÿ’Èñÿ‘Çòÿ˜ÍôÿÏóÿ—Ëðÿ’Âîÿ‰½êÿ…¹æÿ…¸àÿ‡·Úÿƒ°Ïÿ}¦Äÿ³Ç×ÿuˆ—ÿ{Š—ÿ¼ËÙÿ–³Éÿ ¿Õÿ£Çàÿ£Ìèÿ¥Ðîÿ¨ÕòÿžÐôÿ—Ìóÿ•Ëõÿ›Ïøÿ ÓùÿŸÒùÿœÏúÿ˜Îúÿ’Êùÿ’Ëúÿ•ÍúÿšÑûÿŸÔûÿŸÔûÿŸÒüÿœÐüÿ Óüÿ ÔüÿŸÔüÿžÔûÿ›Òúÿ˜Ðúÿ“Íùÿ‘Êùÿ–Ðúÿ“ÎúÿŽÊùÿ‡Çùÿ€Ã÷ÿzÁöÿw¿ôÿuÀôÿÓøÿœÝøÿ„Ëøÿg³îÿuÀõÿ‹Ñùÿ‰Ìøÿ‚ÄõÿÆöÿ¡Ñúÿ¬Øúÿ®Úúÿ­×úÿ®×ùÿ¶Úúÿ¸Üúÿ¾ßúÿÂãúÿÃåúÿ¾âùÿ³Üøÿ­×öÿ«Ø÷ÿ®×öÿ–°Òÿ‹žÃÿ~±ÿ_c‹ÿEBoÿ>9gÿ=6dÿ=7dÿ>7eÿ>8eÿ>8eÿ^_†ÿÐêýÿÓìýÿ×íþÿ×íþÿÔìþÿÓëÿÿÔìÿÿÖîÿÿ×îþÿÕìýÿ×íýÿÙïþÿÝðþÿÛïþÿÛïýÿÞñþÿáóþÿáóþÿàòþÿßñþÿÞðýÿÞðýÿáòÿÿãôÿÿàôÿÿÜñÿÿØîÿÿ×íÿÿÕëÿÿÖìÿÿ×îÿÿ×íþÿÒæ÷ÿÙëûÿßñþÿàòþÿÝðþÿÜïþÿÚïýÿÚïýÿÕëüÿÑèúÿÐçúÿÔêüÿ×íýÿ×ìýÿÖëýÿÔëýÿÑèüÿÒéýÿÒêýÿÔêüÿÖëüÿÕëûÿÔéúÿÓèúÿÔéúÿÔêúÿÔêúÿÔêúÿÓéúÿÒèúÿÏçùÿÎåùÿÐèùÿÎçùÿÍåùÿÉäøÿÅàöÿOKcÿNKbÿÀÞôÿËæöÿÐêöÿÇäöÿ¶Õîÿ¿ÞôÿÊæ÷ÿÈå÷ÿÃßóÿÆÝñÿÏäõÿÔçõÿÓæôÿÒäóÿÒãòÿÕåóÿÖåóÿ׿òÿØçñÿØèñÿÖæñÿÐãðÿÌßîÿÌàïÿÎáðÿÒãòÿÔåóÿØèõÿÚêõÿ×çóÿÔåóÿÓäòÿÔåòÿÔäòÿ׿òÿÙèòÿÛéóÿÜêôÿÝëôÿÞêóÿßëôÿÞëõÿÝëöÿÝëöÿßìöÿßíöÿÞëõÿÞëõÿÞìõÿáíõÿàìõÿàìõÿãï÷ÿåñøÿåñøÿåñùÿãïøÿâî÷ÿáî÷ÿãïøÿåñùÿãñùÿàïùÿÝíúÿÛìúÿÚêúÿÚëùÿÚëùÿÚëùÿÖæôÿÛê÷ÿàîúÿáðûÿàðüÿÞïüÿÝïüÿÝïüÿ×ëûÿÓèùÿÑçùÿÔéûÿ×ìüÿÖëüÿÕêüÿÓéüÿÐçûÿÑèüÿÒêýÿÕëýÿ×ìýÿ×ìýÿ×ëýÿÕëýÿ×ìýÿØíþÿ×íþÿ×íþÿÖíþÿÔìþÿÑêýÿÏèýÿÒëþÿÐëÿÿÍéÿÿÊçÿÿÄäýÿÀâýÿ¾áüÿ»áüÿÉìÿÿÏðÿÿÁçÿÿ­Õõÿ¶ÞûÿÂéÿÿÀæÿÿ¹àüÿ¿àüÿÉæÿÿÏêÿÿÎéþÿÌçþÿÌæýÿÐèþÿÑéþÿÔìþÿÖîþÿÕïþÿÑìþÿÇæüÿÀáùÿ¾áúÿ¿áúÿÃáúÿÆâûÿÊæüÿÌèüÿÉçûÿ¼Ùêÿ§½°ÿ¢¶œÿ›²šÿ¸ÓàÿÈâöÿÉã÷ÿÊåøÿÍæùÿÏçùÿÏçùÿËåúÿÈãùÿÇâøÿÊåùÿÊæùÿÈäøÿÈäøÿÊæùÿÎçùÿËåùÿÊå÷ÿÌæøÿÎçöÿÍçöÿËæøÿÉäøÿÇã÷ÿÆã÷ÿÈåùÿËçùÿÅæùÿ¼àùÿµÛùÿ°Ùúÿk¬Õúÿ­×úÿ®Ùùÿ¯Úúÿ¬Óõÿ´Úøÿ»ßúÿ¼âúÿ·ßûÿ²Üûÿ¯Üûÿ¯Ýúÿ¢ÕùÿšÏöÿ–Ìöÿ›ÏøÿŸÓùÿÑøÿ™Ëöÿ’Æòÿ‰¾íÿ‡½éÿ…¸àÿ‚°Õÿ¨Éÿ´ÉÚÿvŠšÿŒ™ÿ¼ËÙÿ’²Éÿ£ÃÖÿ©Íáÿ¥Íèÿ§Ðîÿ­Øôÿ§Ööÿ ÑöÿÎ÷ÿžÑùÿ¢Ôûÿ¢Ôúÿ£Ôúÿ£Õúÿ˜Îúÿ’ÊúÿÈùÿ‘Éùÿ™ÏùÿžÒùÿžÓúÿ›Ñúÿ˜Ïùÿ›ÑúÿžÔúÿ ÕúÿŸÔúÿ›Óúÿ–Ïúÿ’ÌùÿÔûÿšÓûÿžÔúÿÓúÿ”ÍùÿŒÇ÷ÿ‡ÇöÿƒÆöÿ“Óúÿ¤àúÿ¡Þúÿ‡Ëùÿ~Â÷ÿŠÍûÿ’Óûÿ‘ÎûÿŒÄõÿœÍúÿ­Ùüÿ³Ýüÿ¯Ùýÿ«Õùÿ°×úÿ¸ÜûÿÀãüÿÄæüÿÆèüÿÃèýÿ¿ãýÿ¹àüÿ¢Ääÿ`i”ÿ;4eÿ;5eÿ<5eÿ<5eÿ<6eÿ=6eÿ=7eÿ=7eÿ>7eÿ>8eÿ?9eÿXXÿÒéüÿÕëüÿÖëüÿ×íýÿ×íýÿÔêýÿÒêýÿÕìýÿÙîýÿÙîýÿØíýÿØìûÿÜïüÿÜïüÿÜïûÿÞðüÿàñüÿáòüÿàñüÿàðüÿÞïûÿÜîûÿÞïüÿâóþÿâôþÿÞñþÿÙíýÿ×ìýÿÓêüÿÕëýÿ×ìýÿ×ëüÿÔè÷ÿÔç÷ÿÙìúÿßðûÿÝïúÿØëùÿ×êøÿÙíùÿ×ëùÿÓèøÿÒæ÷ÿÒçøÿÖëûÿÖêúÿÕéùÿÖêúÿÑçùÿÍäøÿËâöÿÌâöÿÐå÷ÿÒç÷ÿÊÞïÿmp†ÿVUlÿ‹”¨ÿÑæöÿÑæõÿÐæõÿÏåõÿÌãôÿÊáóÿÏåõÿÎåõÿÌãõÿÉâõÿÄÞóÿNKbÿNKbÿ½ÚðÿÇâôÿÏéõÿÏèõÿÄáõÿ¿ÜòÿÇãöÿÊåõÿÊäöÿÅÜñÿÍâõÿÕè÷ÿØé÷ÿÕç÷ÿÑãóÿÔäôÿØçõÿÜë÷ÿÞíøÿÞî÷ÿÞïøÿÝîúÿÚìúÿÖêøÿÖêøÿ×èøÿÛìúÿÝíûÿßïüÿßðüÿßðüÿßïüÿÜíûÿÜíûÿàðüÿäóýÿäóýÿåòýÿçóýÿçôýÿçôýÿçôýÿåòýÿåòþÿæôþÿçôýÿçôýÿæóýÿåóüÿèôüÿèôýÿæòúÿçóûÿèôûÿéôûÿèôûÿèóûÿçòûÿäñúÿåòûÿèôüÿèõüÿäóüÿáðüÿßïüÿÛìúÿÜíûÿÝíûÿÝîüÿÛëøÿÚê÷ÿßïûÿãóüÿãóüÿÞïûÿÝïüÿÞðüÿÛîüÿÖêúÿÔèùÿÓéùÿÖëûÿ×ìüÿØìüÿØìüÿÓéüÿÑèüÿÏçûÿÑèüÿÕëýÿÖëüÿÕëûÿÔêüÿÓéûÿÕìýÿ×íýÿ×íüÿÖìüÿÔëüÿÐèúÿËä÷ÿÐèùÿÎæøÿËæùÿÆãøÿÁß÷ÿ»Üõÿ¸Úôÿ¶ÚôÿÀãøÿÉéøÿÈèøÿ¹Þ÷ÿ³Øõÿ»àùÿ¿ãùÿ½ßøÿ¶Öòÿ¿ÜöÿÉãøÿËåøÿÈâùÿÃÞõÿÆßöÿÊâ÷ÿÏæøÿÑèøÿÑéøÿÎè÷ÿÊä÷ÿÄáöÿ¿ßõÿ¾Þõÿ¿ÝöÿÃß÷ÿÅà÷ÿÆá÷ÿÀÚçÿ¦±…ÿ®°pÿ·µwÿ®­fÿŒ–_ÿµÍÕÿÁÚéÿÂØçÿÊàðÿ¸ËÌÿ¶ÉÆÿÉßîÿÇàõÿÆâ÷ÿÉã÷ÿÌæùÿÍçùÿËçúÿËæùÿÏéúÿÍèùÿÍèùÿÎèùÿÐéùÿÒêùÿÎèøÿÍæøÿÊä÷ÿÅáöÿÅã÷ÿËçùÿÊèùÿÂãùÿ¹Üùÿ´Ûùÿk­×øÿ­Øùÿ°Øùÿ°Øøÿ±×öÿ±×öÿ·ÝúÿÀåûÿ¾æüÿ³Þúÿ°Üúÿ³ßûÿ¬Úûÿ£ÔùÿžÏ÷ÿžÑøÿ¡ÓùÿŸÑ÷ÿŸÏõÿÍóÿÂîÿ†ºçÿ²Þÿ|«Ôÿ{¦Èÿ´ÉÙÿvŠšÿ™ÿºÊ×ÿŽ­Äÿ¤ÂÔÿ¬Íßÿ¦Ìçÿ§Ïëÿ°Øòÿ®Úöÿ¦Õ÷ÿ¢Ò÷ÿ£Óùÿ¥Óùÿ¦Óùÿ§ÖùÿªÙùÿžÓùÿ”ËøÿÄõÿÅöÿ˜ÎùÿŸÔùÿ¡Öùÿ Õúÿ–ÍøÿšÐûÿžÔúÿ¢×ùÿ¡ÕøÿœÒøÿ—Ï÷ÿ’ÌöÿŸÕùÿžÔ÷ÿ¨Øøÿ­Øøÿ¡Ñ÷ÿ˜Ëôÿ•Ëôÿ”Ëõÿ–Ï÷ÿ¥Ûøÿ°ãøÿŸØøÿ†Ãóÿ†Äóÿ’Ïøÿ–Îøÿ”Éöÿ¡Ïøÿ°Ùùÿ¸ßùÿ´ÛúÿªÓ÷ÿ°Ö÷ÿ¼ßûÿ¿âûÿÃåüÿÆçüÿÅèûÿ¸Ùñÿny¡ÿ;5eÿ@;kÿs€©ÿµ×ÿ­Éæÿ·×óÿÁáùÿ·Óéÿš­ËÿmuœÿD?lÿ>8eÿ?9eÿ„­ÿÓêüÿÕëüÿ×ìûÿØìüÿÙîüÿÓêûÿÐçúÿÓéùÿ×ëøÿ×ëøÿÕêøÿÕé÷ÿØëøÿØê÷ÿ×éõÿÙêöÿÚëöÿÛëõÿÛìõÿÛëöÿÙéõÿÖæóÿ×çôÿÜëöÿÞîöÿÚëöÿÔçõÿÑåôÿÎãóÿÐåõÿÓæöÿÑåõÿÔåôÿÎàðÿÐâðÿÙéóÿÚêóÿÔæóÿÒåòÿÖèôÿÔæòÿÏãñÿÍáðÿÏâòÿÑãóÿÒäôÿÒåóÿÔæóÿÏäôÿÌãõÿÇÞòÿÉßóÿÎãõÿÐåõÿ„ŒŸÿNKbÿNKbÿ‚‰žÿÒç÷ÿÓé÷ÿÓè÷ÿÑç÷ÿÎäõÿËâôÿÑçöÿÑçöÿÏæöÿËäöÿÅßôÿNKbÿNKbÿÁÝòÿÅáõÿÎèöÿÔìöÿÍæöÿ¿ÚðÿÁÜòÿÊå÷ÿÌå÷ÿÊáõÿÑäöÿ×é÷ÿÛìøÿÙêøÿÓåõÿ×çöÿÝíúÿßîúÿàïúÿàðùÿßïøÿÝîøÿÛìøÿØê÷ÿ×é÷ÿÖè÷ÿÚëùÿÜìúÿÛìúÿÝîúÿàñúÿÞîúÿÚëùÿÙéøÿßîúÿâðúÿãðúÿãðúÿäñúÿæñúÿæñúÿæòúÿâïùÿàíøÿãïùÿåðùÿåðùÿäñúÿäðùÿåñùÿåñùÿåñøÿæñùÿçòùÿèóúÿçòùÿçòùÿäðøÿáíöÿáî÷ÿåñùÿçóùÿåòúÿáïûÿÞîúÿÛëùÿÜìúÿÝíúÿÛìùÿÞìùÿÚé÷ÿÛë÷ÿãñúÿãñúÿÜíùÿÛìùÿßïûÿÜîúÿØëùÿÕèøÿÖêúÿØëûÿØëûÿÙíûÿÚîûÿÖìüÿÒéüÿÌã÷ÿÍäøÿÓéûÿÕëûÿÖìûÿÕëûÿÑçùÿÒèúÿÔêúÿÖëúÿÖëúÿÔêúÿÐçùÿÍæøÿÓëûÿÓëûÿÏéúÿÉäùÿÀÞöÿºÚóÿ¹ÚôÿºÛõÿ¾ßøÿÈèúÿÐîûÿÆçûÿ²×óÿ³Øôÿ½áùÿ¾ßøÿ¼ÛõÿÃÞ÷ÿÌåøÿÐèøÿÌåøÿÄÞõÿÆÞôÿÍå÷ÿÎå÷ÿÏçöÿÏçõÿÎæõÿÌåõÿÇãõÿÂàôÿÁÝôÿ¿Ûôÿ¿Öâÿ¹ÍÐÿ»Õäÿ±¾¡ÿ»¸{ÿÿ~ÿľ{ÿÅ¿zÿ¬«^ÿ¥¬{ÿ¦­|ÿ™ždÿ¤¬ˆÿ´¹ˆÿ³´|ÿ¯·Žÿ³ÈÎÿ¼ÖêÿÂÙíÿÈàðÿÉáòÿÈâôÿÉâõÿÌåöÿÌæöÿÍæöÿÏçøÿÐéøÿÑêøÿÐêøÿÏèøÿËæ÷ÿÇãöÿÅã÷ÿÌèúÿÏëúÿÉèûÿ¿áüÿ¹Þûÿk²Úúÿ²ÛûÿµÜûÿ²Ûûÿ¸Üúÿ°Ö÷ÿ´ÚøÿÃçûÿÃçûÿµÞúÿ±Ûùÿ·àûÿ´áýÿªÚüÿ¥Öûÿ¦×þÿ¨×þÿ§Öüÿ§×úÿ¨×÷ÿšÌòÿÁìÿ‚´àÿ}¬Öÿ}©Ìÿ·ÌÜÿzŽœÿŽ™ÿ¼ËØÿŽ­Äÿ›ºÑÿ«ÊÜÿ±Óæÿ±Ôìÿ¬Ôðÿ°ÙóÿªÕôÿ¥Ñôÿ¡Ïôÿ¢Ïôÿ£Ñôÿ¦Òóÿ¥Òòÿ Ðòÿ•ÉòÿŽÁðÿŠ¿ïÿ’ÆòÿšÎòÿÑòÿÑóÿ—Ìôÿ›ÐôÿÐôÿÑôÿ¡Ôôÿ¤×õÿŸÒõÿ’Éñÿ“Éóÿ›Ðôÿ®ÚõÿºÞ÷ÿ²Ù÷ÿ¬Ö÷ÿ¤Ò÷ÿœÍôÿ•Éòÿ©Û÷ÿ¶ã÷ÿ¬Ý÷ÿ›Îôÿ“Èòÿ›Îõÿ£Ôöÿ ÍóÿšÇñÿ¢Îôÿ´Úõÿ¹ÝöÿµÙ÷ÿ¶×õÿ¼Ýøÿ¾ÞøÿÁáúÿÉæüÿ©¾×ÿVT~ÿjo–ÿ¢»×ÿÀàøÿ¿áüÿ¾ßüÿÁàýÿÃãüÿÈæüÿÉçüÿÈåüÿÆäüÿ´ÎêÿfjÿMJsÿ½ÔêÿÏæúÿÕëüÿÚîüÿÙîüÿØîûÿØìûÿÔêûÿÒçøÿÖêûÿÛîûÿÛîûÿÙìûÿÒæöÿÝðûÿãóüÿßïûÿÝïùÿäòüÿåôüÿãòûÿâñûÿàïúÿÜíøÿÜíùÿáñûÿâòûÿÝðûÿÖêùÿ×êúÿ×ëúÿÙëûÿÙìúÿÙëúÿÙëúÿÙìúÿÞïüÿâóýÿáòûÿßðûÿÜîûÿÝïûÿÚìúÿ×éøÿÕèøÿ×êúÿÙëûÿÚìûÿÚíûÿÙíüÿÔêüÿÏåùÿÎäùÿÓéüÿÖìüÿWVmÿPLdÿPLdÿÅÙéÿÕëúÿÕëúÿ×ìúÿØíúÿ×ìûÿÐçøÿÑèúÿÔêúÿÖìúÿÓéúÿÏçúÿPLdÿQOfÿÅßöÿÁÝôÿÑëûÿÚñüÿÖîüÿÌæùÿÈâ÷ÿÎçúÿÔìüÿÓéûÿÒæùÿ×ëüÿàòþÿâòþÿÞïþÿÚëùÿÞîûÿÜìùÿÞíúÿâðûÿâòúÿ¶ÀÎÿ]]sÿx{ÿÂÐÞÿÚëùÿÛëùÿÜëùÿÝìùÿßîúÿáðûÿßîúÿÞîúÿÜëùÿáðûÿäòûÿâðûÿáîùÿåòûÿêõýÿèôüÿçóûÿæòûÿãðúÿáîøÿäðúÿçòúÿçòúÿåñúÿÞëõÿçóúÿêôúÿçñùÿåð÷ÿêóúÿëõúÿéóúÿéôûÿèóûÿåñúÿåòûÿéõýÿêöýÿæõýÿàïûÿàðüÿßðüÿáðýÿáñýÿàðüÿßïüÿßðüÿãòþÿçöÿÿæöþÿäôþÿàñýÿáòþÿßðþÿÚíüÿØëûÿÚíýÿÛîþÿÝðÿÿÝñÿÿÛðÿÿ×íÿÿÑèüÿÐçüÿÕìÿÿÙïÿÿÚðÿÿÚðÿÿ×íÿÿÙïÿÿÙïÿÿÙðÿÿÛñÿÿÜòÿÿÚðÿÿÒêüÿÓëþÿÖîÿÿ×ïÿÿÓìÿÿÎéÿÿÊçþÿÅäýÿ¿ßúÿºÜøÿËìÿÿÕòÿÿÎîÿÿÀáúÿ»ÝøÿÁáûÿÇçýÿÆâûÿÄßùÿÉäüÿÔìýÿÕíýÿÏèýÿÍåúÿÐéüÿÏçúÿÐèûÿÕìüÿ×ïüÿÓìûÿÊå÷ÿÅâôÿÈãøÿ¼ÏÌÿÄ¿xÿ½¹qÿ¶µtÿ¼¹wÿÇÁ}ÿÉÂyÿŃÿÂÀˆÿ¹·wÿ·²iÿĽqÿ¶´rÿª­zÿ®±uÿ·¶yÿÂÂÿ¨µ›ÿ³ÇÔÿ»ÑåÿÂØëÿÌáòÿÎåôÿÎæùÿÆáõÿÒëúÿØíúÿÑèùÿÏç÷ÿÖìúÿØïúÿÕìúÿÑêùÿÏçùÿÈä÷ÿÇäøÿÌèúÿÏëúÿÅæùÿ·Ý÷ÿk¶ÝùÿµÜùÿ·Üúÿ¸Þúÿ¶Üøÿ´Ú÷ÿ´Û÷ÿ¹ßùÿÁäùÿÁæùÿ»âùÿ´Ýùÿ¶ßúÿ¯Úùÿ¨Ô÷ÿ£Ñöÿ¤Ñ÷ÿ¤Ñöÿ¤Ñóÿ£Ïðÿ›ÊëÿŒ¾åÿ€¯Úÿy§Òÿy¤Éÿ´ÊÚÿxŒšÿ€šÿ½ÍÙÿ¯Åÿœ»ÓÿªÉÜÿ±Òåÿ³Ôêÿ°Ôîÿ³Øòÿ®ÖòÿªÔóÿ¥Ðóÿ¥Ñôÿ§Óõÿ©Óõÿ©Ôõÿ«×õÿ Ðõÿ”ÇòÿŽÂïÿ“Æñÿ™ÌòÿžÑòÿ¢Ôòÿ™ÎòÿšÎòÿšÏóÿžÐóÿ£Õóÿ¨×óÿ£ÔôÿÎóÿ—ËòÿžÐóÿ¯ÙôÿÃâ÷ÿ½Þøÿ·Û÷ÿ±ØöÿªÓõÿ¦Ñõÿ­×öÿ¸àöÿºáöÿ­Øöÿ Îòÿ¤Ñôÿ°Úøÿ­Õ÷ÿ¢Îöÿ§Óøÿ±ÛùÿºßùÿÁàùÿÁß÷ÿÄà÷ÿÆá÷ÿÉäøÿ¡¯Éÿb^†ÿ¶ÇÜÿÍèøÿÌçøÿÏèúÿÆãùÿÀàúÿÁàûÿÅãüÿÈæüÿÊèüÿÉèüÿÉæüÿÅãûÿÍèüÿÑëüÿÒéûÿÓêüÿÖëüÿÙîüÿÛïüÿÚîüÿÙîüÿØíüÿÕéúÿÖêûÿÛîüÿÝïüÿÛîüÿÖêùÿÞñüÿâòüÿàñûÿßðûÿãòüÿåôüÿåóûÿäòüÿãòüÿàïúÿßïûÿãóýÿäóüÿàòüÿÛîûÿØìúÿ×ëùÿØëúÿÙìúÿÚìúÿØëùÿÙëùÿÜíúÿàïúÿáðúÿßïúÿÜíøÿÞîùÿÜíúÿÙêøÿÖè÷ÿØëúÿÚíûÿÛíûÿÛíûÿÜîûÿ×ëûÿÒçúÿÎäøÿÑæùÿÔêúÿPLdÿPLdÿfg~ÿÔêúÿÔêúÿÖêúÿØíúÿÙíùÿ×ëùÿÔéùÿÑæ÷ÿÕêùÿÖëùÿÓéùÿÒèúÿOLdÿSRiÿÈáöÿÇá÷ÿÐèûÿÖíúÿÙîúÿÓêûÿÊâöÿÎæùÿ×íýÿÕêûÿÔèúÿØëüÿÜîüÿÞïûÿÝîüÿÜìúÿÝíúÿÝíúÿßïûÿâñûÿäòúÿdcyÿPLdÿPLdÿ][rÿÜìùÿÞíûÿÞíûÿàïüÿáðüÿáðûÿáðûÿßïúÿÝíúÿâðûÿäòûÿåòüÿåòüÿçòüÿéôüÿêõüÿéôüÿèôüÿçóüÿâïùÿãðúÿæòúÿçòúÿæòúÿáî÷ÿæòùÿéòùÿçñøÿæñøÿéóúÿéôùÿéóùÿèñøÿæñøÿäî÷ÿâîöÿåðøÿçòùÿåòúÿàïùÿÝìøÿÝìøÿÞíùÿÞíùÿÝìøÿÜë÷ÿÜë÷ÿßîùÿâñúÿãñúÿáðúÿÞîùÿßïúÿÜíùÿÙêøÿÖè÷ÿ×éùÿÙëúÿÚìúÿÚìúÿÛíúÿÖêúÿÐæøÿÍãöÿÐæøÿÔêúÿÖìúÿØíúÿÕëûÿÕëûÿÕëûÿ×ëûÿÙíûÿÛîûÿØíûÿÖìüÿÒéûÿÖìýÿÖíýÿÓëýÿÏéýÿËçüÿÆãúÿÂàùÿ¿ÞøÿÇåüÿÐíýÿÒîýÿÊèýÿ½ÝöÿÀßøÿËçüÿÈãúÿÆâúÿÊåüÿÐêýÿÓëüÿÐèüÿÎæúÿÎæùÿÏçùÿÑéúÿÕíûÿÙðüÿ×ïüÿÌãïÿ»È®ÿ··wÿ¿¹fÿÊÁlÿÊÁnÿÊÂrÿÍÅ{ÿÎÆzÿÍÅ‚ÿÁÁ“ÿ´·Œÿ¬°~ÿ¡¤dÿ§¤aÿ¹¸~ÿ©ªkÿ°°rÿ¯±qÿ¸»yÿÃćÿ¶»ÿ¤¶²ÿºÐâÿÅÛëÿÍãóÿÍåöÿÉã÷ÿÓíüÿØîüÿÕìûÿÓëúÿ×íûÿØðûÿØïûÿÖíûÿÓìüÿÍçùÿÊæùÿÎêûÿÑíûÿÊéûÿ¿ãúÿk¹ßùÿ¸ßùÿ¸Ýúÿ¹ßúÿ¹Þúÿ¶Üùÿ¶ÜùÿºàúÿÁåúÿÃæúÿ¿ãúÿ¹ßùÿºáúÿ´Ýúÿ®Øùÿ¨Ôøÿ¨Ôøÿ§Õ÷ÿ§Óõÿ¥Ðòÿ¤Ïíÿ˜Åéÿ‡¶Þÿ}«Óÿz¥Éÿ´ÊÛÿy›ÿ‚šÿ¿ÏÚÿ•´Éÿ ¿Öÿ¯Îâÿ¸Øëÿ»Ýðÿ¼ßõÿ½áøÿ¹ßúÿµÛûÿ°Ùûÿ®Øüÿ°Ûýÿ²Ýýÿ±Ýþÿ¹åþÿ±ßýÿ¤Õýÿ›Îùÿ˜ÍøÿžÓûÿ¨Úüÿ¯ßüÿ©Üüÿ¢×üÿ Õûÿ¦Ùýÿ°ßþÿ²áþÿ°Ýüÿ¯Üüÿ¡Òúÿ¨Øüÿ¸áüÿÐëýÿËçüÿÇæýÿÁâüÿ»Þûÿ¹Ýûÿ¶Ûûÿ¾ãüÿÊìûÿÅçûÿ³Øøÿ®Ööÿ¼ßûÿ¸Üùÿ«ÖøÿªÔ÷ÿ®ÙøÿºÞùÿÍçúÿÎæùÿÌåøÿÏæøÿ¬¸Ðÿtp“ÿ¶ÃÕÿÙîøÿØíùÿÖëøÿ×ëøÿÍå÷ÿÀÞ÷ÿÀÞöÿÁß÷ÿÄá÷ÿÈã÷ÿÉå÷ÿÊæ÷ÿÆâ÷ÿÉäøÿÎçøÿÒéøÿÕéøÿÔè÷ÿ×éøÿÚìøÿÚíùÿÚíùÿÙìùÿÔè÷ÿÓçöÿ×êøÿÜìùÿÝíùÿÚëøÿÝìùÿßîùÿàïùÿàïùÿàïùÿâñùÿåñùÿäñùÿãðùÿáïùÿßíøÿßïùÿßïøÿÞï÷ÿÞïùÿ×éöÿÕèõÿÖçõÿ×éöÿØê÷ÿ×éöÿÖçôÿ×èôÿÛëõÿÝìõÿÝìõÿÜëõÿÜëõÿÛêõÿÙèõÿÖæôÿÖæõÿ×èöÿ×èöÿ×èöÿÚìöÿÖèõÿÑäôÿËßðÿËßñÿÏäõÿNKbÿNKbÿ‡Ž¡ÿÒæöÿÐåõÿÓçöÿØê÷ÿØë÷ÿØê÷ÿØê÷ÿÐäôÿÕè÷ÿÕèöÿÕé÷ÿÔèøÿOLcÿVTlÿÍäøÿÍåøÿÌã÷ÿÔêúÿÜðúÿÛîúÿÏå÷ÿÎäöÿÙìüÿ×êúÿ×êúÿØêúÿÚíûÿÜîûÿÞîûÿÝíúÿÚê÷ÿÜìøÿÞíùÿâñúÿäóúÿÏÛåÿpq…ÿ[Ypÿ°¸ÇÿßîúÿßîûÿÞîúÿßïûÿàïûÿâðûÿâñûÿãòûÿàïûÿáðûÿäòüÿçóüÿèóüÿçòûÿéóüÿéóúÿèóúÿéôûÿçóûÿäðùÿâïøÿæñúÿéóûÿéóûÿçñúÿèóûÿêôûÿëõûÿëôûÿëõûÿëõûÿìõúÿìõúÿëôûÿéôûÿçòúÿèôüÿéõüÿèõüÿæóûÿáïùÿßïùÿàíùÿßîùÿßïúÿßîúÿßîúÿáðûÿäóüÿåóûÿäóûÿãòûÿâñûÿàïûÿÝìúÿÚëùÿÚëúÿÜíûÿÝîüÿÝîüÿßðûÿÜîûÿØëüÿÑå÷ÿÏäöÿÔéúÿØìúÿÚíùÿÖêøÿÓèøÿÑæöÿÔè÷ÿØê÷ÿÙë÷ÿØê÷ÿØëøÿÐäõÿÒç÷ÿÓè÷ÿÑçöÿÏæ÷ÿÌä÷ÿÈâöÿÃÞôÿÂÞôÿÀÜôÿÊåøÿÓìøÿÏè÷ÿÁÜóÿ½ÚñÿÊã÷ÿÇàõÿÆàõÿÇàõÿÈãöÿÌäöÿÍäöÿÌäöÿÉàóÿÉàòÿËâóÿÑçõÿÔêõÿÔêõÿ¼Ê¾ÿ®­rÿ±­eÿ¹²aÿÁºfÿǽkÿÇÂvÿžwÿÉÄ€ÿº·‹ÿ±³ƒÿ²´„ÿ²³ÿ¡£hÿ¢¢bÿ¶¶|ÿ«ªoÿ¬«lÿ¯®mÿ¹¶tÿÀ¼|ÿÄÀˆÿŸ«Žÿ®ÁÎÿ¹ÎÝÿÆÚéÿÍáñÿÎãõÿÑèøÿÖêùÿÕëøÿÕéøÿÔê÷ÿÕë÷ÿØì÷ÿØëøÿÕêøÿÑèøÿÎæøÿÌèùÿÍêùÿËéùÿÆæùÿk½à÷ÿºß÷ÿ»Ý÷ÿºÞøÿºßùÿ·Ýøÿ·Ü÷ÿºÞ÷ÿÀãøÿÃæøÿÂåùÿ¿âùÿ¾âøÿ¹Þøÿ³Ø÷ÿ­ÕöÿªÓöÿªÓôÿ¨Òòÿ¦Ïïÿ¬ÔìÿŸÉæÿºÝÿ€ªÎÿw Âÿ²ÈØÿy‹™ÿ‚™ÿ¿ÎÙÿ”±Æÿž¼Ñÿ¬ÉÞÿ¶Õçÿ¼ÛíÿÀàñÿ½ßôÿºÞöÿ·Ûøÿ³Ù÷ÿ°×ùÿ®×ùÿ°Ùùÿ±Ûúÿºãúÿ´ßúÿ®Úúÿ£ÓøÿœÍöÿÐ÷ÿ¥×úÿ¬Ýùÿ®Þúÿ¤ÖùÿžÒ÷ÿ¥Õøÿ­Úùÿ°Üùÿ±Ýùÿ³Þøÿ¤Òõÿ¦Õøÿ·ÝùÿÕëûÿÓëûÿÐéûÿÊæúÿÇãúÿÂàùÿ½ÝùÿÂáûÿÏëûÿÑìûÿÃâúÿ½ÜøÿÁàúÿÂâúÿµÜùÿ­Ùùÿ®Øùÿ¹ÞúÿØíüÿÙíüÿÖêúÿÂÎâÿЧÿ®´ÊÿßñûÿâòûÿâòüÿáñûÿßðüÿØìûÿÆãûÿÄâúÿÄâúÿÈäüÿËèüÿÏêüÿÐìûÿÌéûÿÌæùÿÐèûÿ×íûÿÚîûÿÙíüÿÛíüÿÞðüÿßòüÿßòüÿÞðûÿÚîûÿÖêùÿ×ëùÿÞîûÿáðûÿßðûÿÞîûÿàïûÿãòûÿãóûÿâñúÿãñúÿæóúÿæòùÿåñùÿäñùÿàíøÿÞîøÿàðùÿâòúÿãóûÿÞïûÿÝïûÿÜíúÿÜîúÿÜîûÿÛîúÿÛíùÿÝîúÿáðûÿãòûÿåôüÿæôüÿäòüÿãòýÿâðýÿÞîûÿÝíüÿÝíüÿÝîüÿÞîüÿáòüÿàñýÿÜîüÿÖêúÿÒæøÿÒèøÿPLdÿPLdÿ¨³ÃÿÖëúÿÓèøÿÖêùÿÚìúÿÚìùÿÚìøÿÛíøÿÓæõÿÕé÷ÿ×êøÿ×é÷ÿÕé÷ÿNKbÿXWnÿÐåöÿÍãõÿÊßóÿÑå÷ÿÛí÷ÿÜî÷ÿÔçöÿÏâòÿÓåõÿÕèöÿÖèöÿÕçõÿÕçöÿ×èöÿÛëöÿÜì÷ÿÙéöÿÙéõÿÛêöÿßîøÿáðøÿãðøÿâðøÿàî÷ÿàîøÿáïúÿßîúÿÞíùÿßíúÿàïûÿâðûÿãòûÿäòûÿãòüÿâðûÿåóýÿéõýÿë÷þÿêõþÿìöÿÿîøÿÿîùÿÿîùÿÿíøÿÿêöþÿçóüÿèôýÿì÷ÿÿîøÿÿíøÿÿì÷ÿÿí÷ÿÿïùÿÿîøþÿí÷ýÿî÷þÿðùþÿñúÿÿðùÿÿïøÿÿìöþÿêöþÿëøÿÿë÷þÿê÷ýÿæôýÿåóýÿãòüÿãòüÿâñüÿáñüÿàðûÿâðûÿåòüÿæóüÿçôüÿçõüÿæôýÿäóýÿâñýÿÞîûÿÝíüÿÝíüÿÝîüÿÝîüÿàñûÿÞðûÿÛíûÿÕéùÿÑå÷ÿÒçøÿÙíüÿÛðüÿÜðüÿØíüÿÔéùÿØìûÿÜîüÿÝïüÿÞðüÿÞðüÿÖéùÿ×ëûÿØíüÿ×ìûÿÕëúÿÓêúÿÐèûÿÍæûÿÊäúÿÅß÷ÿÌåûÿØïüÿÚðüÿÏèûÿÈá÷ÿÍåúÿÍçúÿÍæùÿÊåøÿÊãøÿÍæùÿÒêúÿÓéúÿÎæùÿÎæøÿÐèùÿÕìüÿÙïüÿÚïüÿ³½ÿ·µ~ÿ·µuÿ¹´hÿügÿËÅÿ¾»‹ÿ²±}ÿ¸¶†ÿ¤¢hÿ­ªwÿ·¶„ÿ¼¼‰ÿ±±zÿ¢¡_ÿ°¯qÿ²±sÿ®«gÿ°®hÿ¸µlÿ¿ºsÿÉÄÿ»»wÿ³¹–ÿ²ÄÏÿÁÓâÿÎàíÿÑçôÿÐçøÿÔéúÿÚðüÿÚðüÿ×îûÿÙîüÿÝñüÿÝðüÿÛïüÿØíüÿÒéûÿÎéûÿÎëüÿÐíüÿÏîüÿkÄæûÿÂåüÿ¿ãûÿ¿ãúÿ¾ãûÿ¼âûÿ»àúÿ½áúÿÃäûÿÇçûÿÈéûÿÈéúÿÃåúÿ¾áúÿ¸Üúÿ³Ù÷ÿ¯Öøÿ¬Õ÷ÿ­Ö÷ÿ¬Õõÿ²Øïÿ§Ðêÿ›ÃàÿгÓÿ|¤Åÿ³ÈÙÿyŒšÿ‚˜ÿ¿ÎØÿ•±Åÿž¼Ðÿ©ÇÜÿ³Ñäÿ»ÙéÿÂàîÿ¿ßòÿ¾Þôÿ»Ü÷ÿ¶Ú÷ÿ±×÷ÿ®Õ÷ÿ®×÷ÿ¯×÷ÿ·Ý÷ÿ·Ý÷ÿ³Ý÷ÿ«Øøÿ¡ÑõÿÏôÿ¢Ó÷ÿ¥×÷ÿ±Ýöÿ©Ø÷ÿ£Ó÷ÿ¥Ó÷ÿ©Öøÿ¯Ùúÿ³Ûúÿ¶Þùÿ­×÷ÿ«Öùÿ¹ÝùÿÝïüÿÛïûÿÙíûÿÕëüÿÑèüÿËäúÿÈãúÿËåûÿÒëüÿ×îüÿÓëüÿÍåûÿÆáùÿÌçüÿ¿ãýÿ´Ýüÿ°Úúÿ¸ÝûÿßòþÿáòýÿÜëùÿ©§½ÿ­­ÂÿâðúÿçõþÿéõýÿéõýÿéõþÿèôýÿâòýÿËèýÿÊæýÿÈæýÿÊçþÿÍêÿÿÐìþÿÓîþÿÒíþÿÏéüÿÒëýÿÙðþÿÝòþÿÜïýÿÝðýÿàòþÿãöÿÿãöÿÿäöÿÿàòþÿÜîüÿÛíûÿàðýÿâòüÿâòüÿßïüÿáïüÿåòüÿæôüÿäñûÿåóüÿèõüÿéõüÿèôûÿåòúÿâðùÿàïøÿßïøÿâñúÿäóúÿÞïùÿÝîùÿÜìùÿÝíùÿÜíùÿÛìøÿÛìøÿÚëöÿÝì÷ÿßíöÿáîöÿâïöÿàíöÿßìöÿÝêõÿÙèôÿ×çôÿ×çõÿ×çõÿØçõÿÚéôÿÙèóÿ×èóÿÔåóÿÏâñÿÍáðÿMJaÿMJaÿºÈÕÿÔæóÿÐãòÿÑãòÿÓäòÿÕæóÿÖæóÿØçóÿÓäñÿÔåóÿÕæôÿÖçõÿ×éõÿNKbÿYWnÿÒåõÿËßñÿËßñÿÐãóÿÖèôÿÛëõÿÙéõÿÕåôÿÐáñÿ×éöÿÙê÷ÿØé÷ÿÕçõÿØèöÿÝíøÿÝíøÿÛê÷ÿÛêöÿÛëöÿÞí÷ÿáïøÿãðøÿäñùÿâðùÿáîøÿâðúÿâðûÿáîúÿßîúÿßîúÿáðûÿâñúÿâñùÿâðùÿàîøÿáïøÿåòùÿèóúÿçòùÿçòùÿéóúÿêõúÿêõúÿêôúÿéôûÿæðùÿäïøÿéóûÿëôûÿëõûÿéóüÿêóüÿìõûÿíöüÿêôúÿëôûÿíöûÿîöûÿíöûÿìõûÿéóúÿçòùÿæòùÿéõüÿë÷üÿæóûÿäòûÿãñûÿãðúÿâñûÿáðúÿáðúÿàïùÿâñúÿåòûÿèõüÿêöýÿæóüÿäñûÿâðûÿßîúÿÝìúÿÜíûÿÜíûÿÝíûÿßïúÿßïúÿÝïúÿÛíûÿÕéøÿÒæöÿÖêúÿØìúÿÝïúÿÙìúÿÖêùÿ×êùÿØëùÿÚëùÿÛëøÿÜìøÿ×é÷ÿÖè÷ÿÔçöÿÖéøÿÖêøÿÔèøÿÑæøÿÎåøÿÇßôÿÇßõÿÌãøÿÓéùÿÙíúÿÕêúÿÏä÷ÿÈßôÿÏæøÿÐçùÿÍåøÿÊãöÿÍåøÿÓëúÿÔëúÿÏçùÿÎå÷ÿÎåöÿÑç÷ÿÕêøÿ×ëøÿ¿ÏÆÿ®°|ÿ·µ{ÿ·´tÿ¿º}ÿÃÀ‘ÿÃÀ“ÿÀ½‹ÿµ²yÿ²­qÿ»µ|ÿ¿º„ÿ¼¹ÿ·µzÿ¨¦eÿ¦¥cÿ²¯nÿ¬¨bÿ®«cÿ±®bÿ»¶kÿ¾¹oÿ¿»vÿÈÉÿµ»–ÿ·ÇÓÿÄÖáÿÍßìÿÍâóÿÒæ÷ÿÙëùÿÚîùÿÖëøÿ×ëùÿÛîùÿÜîùÿÛíùÿ×ëùÿÒéøÿÎçøÿÌçøÿÏêúÿÒîúÿkÆæùÿÃåùÿÁâùÿÁâùÿ¿ãúÿ¾âúÿ½áúÿ½âùÿÁãúÿÅæùÿÉéùÿÌëùÿÆæùÿÂâùÿ½ßùÿ·Üùÿ±Øøÿ®Õøÿ­Ö÷ÿ¬Óôÿ±Õïÿ¬Ñêÿ£Éáÿ“¹Öÿ‚©Çÿ´ÉÙÿyŒšÿ‚˜ÿÀÏØÿ—³Æÿ¡½ÑÿªÇÜÿ³Ñåÿ½ÙêÿÆáïÿÃàòÿÃáôÿ¿ßöÿºÛ÷ÿ³Ø÷ÿ°Õ÷ÿ±×øÿ³Ùøÿ¶Üøÿ¸ß÷ÿ¸à÷ÿ³Ý÷ÿ¨Öõÿ¢Ñôÿ¡Ðôÿ£Òöÿ®Ü÷ÿ°Ûøÿ«Øùÿ§Õøÿ¨Ôøÿ¯ÙùÿµÛùÿ·Þûÿ·Þûÿ°Úúÿ¸ÝøÿâñüÿâñüÿßðüÿÜîüÿÙìüÿÒçúÿÓèûÿÔéüÿÖëýÿÛîýÿÝñýÿØíþÿÏçúÿÒëüÿÆæýÿºáýÿµßûÿ¸ßûÿáòýÿèõýÿÓØåÿ»¸ÊÿÞæðÿëõýÿìöýÿî÷ýÿðùýÿñùþÿï÷þÿêõýÿÎêýÿÍèýÿÌçýÿÊèýÿÊèüÿÍêüÿÏëüÿÒìüÿÑêûÿÒêúÿ×ìûÿÛïüÿÝñýÿÝðüÿÝïûÿâôüÿáôüÿâóüÿâóüÿÞðüÿÜíúÿÞîûÿàðûÿãòûÿßïúÿßîúÿãñûÿæóûÿåòûÿåòûÿèôüÿêõüÿèóûÿæóúÿåòúÿãðùÿâðúÿãóûÿæõüÿâòüÿáñûÿßðûÿÞîúÿßðûÿßñûÿßðûÿàïûÿáðûÿåóýÿèõýÿêöýÿçôüÿçóüÿäñûÿáïûÿÝìúÿÝìûÿÞîüÿßîüÿàðüÿáñüÿáòüÿÞðûÿÙìùÿÌÞîÿPLdÿPLdÿÑâïÿÝðüÿÛîüÿØëúÿØêùÿÛíúÿÞîûÿßðüÿàðüÿÝîüÿÜíûÿÞðýÿàñýÿPMeÿ[YpÿÚìüÿÔçùÿ×êûÿÛíýÿÝîýÿâñýÿäóýÿáðýÿØé÷ÿÝîûÿàñýÿàñýÿÝïüÿÞïüÿâóÿÿäóÿÿâòþÿãòþÿãóþÿåóþÿæôþÿéöÿÿìøÿÿë÷ÿÿèõÿÿèöÿÿçõÿÿåóþÿäòýÿâòýÿãòýÿåôþÿæõþÿçõþÿæôýÿåóüÿéõýÿêöýÿêõüÿéôûÿéóúÿëõúÿëöûÿëöûÿêõúÿèóúÿåðøÿæðøÿèñøÿéòøÿæñøÿæðøÿèòøÿêòøÿéòøÿéòøÿêóøÿëóøÿêóøÿéñ÷ÿçð÷ÿåïöÿãîõÿäïöÿæñ÷ÿäðøÿãðøÿàî÷ÿàí÷ÿáðùÿâñúÿâðúÿâðúÿãðúÿäñúÿæòúÿçòùÿåñùÿäñùÿâïùÿàîúÿÝìúÿÝìûÿÝíûÿßîüÿàðüÿáòüÿâóýÿàñýÿÛíûÿØìûÿ×ëûÿÙíüÿßòþÿßòþÿÝðþÿÙìûÿÙìûÿÜíûÿÞîûÿÞîúÿÝíúÿÚìúÿØêùÿÙìúÿÚíúÿ×ëùÿÔèùÿÒæøÿÊàõÿÍãøÿÏåøÿÑå÷ÿÖè÷ÿ×êöÿÓæöÿÈÝðÿÍäôÿÐæ÷ÿÏç÷ÿËãõÿËãôÿÎæöÿÐæöÿÍäõÿÎäôÿÎåõÿÐåõÿÑçõÿÖéöÿÖéòÿ±¼¡ÿ¬«kÿ¶³}ÿ¹¹Šÿ¶²|ÿ­ªrÿ¢Ÿ_ÿ«§iÿª¥eÿ©£bÿ­©dÿ¬¨cÿ±­lÿ¬«jÿ£ [ÿª§bÿ¨§_ÿ©§\ÿ¯«]ÿ¹´eÿ¿ºoÿ¼·nÿ¼ºwÿÊÃwÿ²¿½ÿ¼ÍÙÿÉÛæÿÌáðÿÑæ÷ÿØìúÿÛïûÿÚîûÿÚîûÿÛïûÿÞðûÿÜîûÿÚîûÿÖìûÿÒêúÿÏèùÿÏëúÿÒíúÿkÊçúÿÆæùÿÂãùÿÀáøÿÁäúÿÀäúÿÀãúÿÀãúÿÃãûÿÆæûÿÌéûÿÑìûÿÊèûÿÊèüÿÄåýÿ¾àýÿµÛûÿ±×úÿ¯Öøÿ¯Õôÿ¯Ôïÿ­Ñéÿ¦Êàÿš½Õÿˆ­ÇÿµÉØÿxŠ˜ÿ„’šÿÃÒÚÿœ·Éÿ¤ÁÕÿ¬Êßÿ¶ÓçÿÀÛîÿÈäòÿÉåõÿÈåöÿÃã÷ÿ½ßøÿ¶Úøÿ³Øøÿ²Øøÿ³Ùøÿ¶Ü÷ÿºàøÿ¾äúÿºâúÿ±Ûøÿ§Ööÿ¤Óöÿ¤Ôöÿ«Øùÿ´àùÿ´àúÿ«Öùÿ¨Óøÿ³Úûÿ»ßûÿ¸ÝûÿÀäûÿ·ÝúÿºÜùÿèóýÿçôüÿæôýÿâñüÿáñýÿÝíýÿÜíüÿÚìûÿÚìûÿÝïüÿáñüÿÞîûÿØìûÿÕëúÿÉçûÿ»âûÿºáûÿ»âûÿäôþÿðøþÿÕÕàÿÛÜæÿñùþÿñøýÿóúþÿôúþÿöûþÿ÷üþÿöûþÿóùþÿÕíýÿÑìýÿÐìþÿÍéýÿËèüÿÍéüÿÏëýÿÕîýÿÔíýÿÔìüÿÔëúÿÚîûÿàòüÿáñüÿÝðûÿáòûÿáòûÿãôûÿäôûÿâòûÿßðûÿßïüÿáñüÿæôüÿäñüÿãñüÿäòüÿçôüÿèôüÿèôüÿæòûÿèóúÿæòùÿåòùÿæòùÿäñùÿáïøÿáðøÿâñøÿáð÷ÿàïøÿßîùÿÞíøÿÞïúÿßðúÿßðúÿàïúÿßîùÿâðúÿæòûÿèóúÿçóúÿçóúÿäòúÿáïúÿÞíúÿÝìúÿÞíûÿßïüÿßïûÿáñûÿâòûÿßðúÿÜíùÿºÈØÿOKcÿOKcÿÖçõÿÛíøÿÚì÷ÿÖçöÿÓäóÿÙèöÿÝë÷ÿÜë÷ÿßîøÿÜìøÿÚé÷ÿÜëùÿÛë÷ÿOKcÿXVmÿØé÷ÿÕç÷ÿ×èøÿ×è÷ÿØèöÿÝìøÿàîøÿßìøÿÚéöÿÙéöÿÛìøÿÜíøÿÜíøÿÛë÷ÿÛë÷ÿÜì÷ÿÞíøÿÝì÷ÿÜëöÿÜêõÿÄÏÛÿqq…ÿæòøÿæòøÿåñùÿäñúÿäñúÿäñúÿãñúÿáðúÿáðúÿáðúÿãòûÿæóûÿåóûÿåòûÿåñúÿèôûÿìöüÿìöüÿëõüÿíøýÿîùþÿðúÿÿñûÿÿïúÿÿíøÿÿí÷ÿÿîøÿÿðùþÿî÷þÿí÷þÿî÷þÿðøþÿïøýÿïøýÿî÷ýÿðøýÿïøýÿïøýÿíöûÿìöüÿêôûÿêõüÿêöüÿêöüÿèõüÿæóüÿãñúÿäóüÿãòûÿãñúÿãñûÿãðúÿäñúÿèôüÿêõüÿéõüÿèôûÿåóûÿâñûÿàïüÿÞíûÿÞîûÿÞîûÿßîúÿàðúÿâòûÿßðúÿÜíùÿÕçõÿÓçõÿÓæõÿØêøÿÚì÷ÿÚì÷ÿÖçöÿÔæõÿÜëùÿßíùÿÝíùÿàïùÿÚë÷ÿÙéøÿÚëúÿÛìúÿÙìúÿ×ëúÿÖêúÿÐåùÿÒæùÿÑæøÿÑå÷ÿØëúÿÚíùÿØêøÿÒæ÷ÿÏæöÿÑéøÿÒêùÿÑéùÿÏç÷ÿÏç÷ÿÐç÷ÿÑèøÿÐç÷ÿÏæöÿÏäõÿÑåõÿ×ê÷ÿÛíöÿÕæîÿ¯¹™ÿ´²ÿ¯­vÿ¡œYÿ ›Uÿ¢žVÿ¥ Zÿ«¦`ÿ¬¦`ÿ¬¦^ÿ°ªcÿ¶±oÿ»¶rÿ¯ª`ÿ¨¤Uÿ«§Xÿ«§Uÿ±­Yÿ¹³`ÿÁ»kÿÄ¿vÿ¿ºyÿÊÂoÿ²»©ÿ¶ÅÑÿÆÖßÿÍÞìÿÓçöÿÙìûÿÞñýÿßòýÿÞòýÿÜðýÿàòýÿÞñýÿÝñýÿÜñýÿÙñþÿÕîþÿÓïþÿÕòÿÿkÓðþÿÏíþÿÉèþÿÆæüÿÅéþÿÅêþÿÅéþÿÅçþÿÄæýÿÈçýÿÏìÿÿÓïþÿÑîþÿÏíþÿÉêþÿÂåþÿ¹Þýÿ´Úûÿ²Ùùÿ±×öÿ°Õïÿ¯Óéÿ«ÎáÿŸÂ×ÿ‘´Ìÿ¹ÍÛÿzšÿ…’šÿÄÑÚÿž¸Éÿ¥ÂÕÿ®ÉÞÿ·ÔèÿÀÝðÿÊæôÿÍè÷ÿÎéùÿÊèûÿÃåüÿºÞúÿ·Üúÿ¶Üûÿ¹Þûÿ¹Þúÿ¼âúÿ¿äùÿ¾ãúÿµÞúÿ­Ùøÿ§Õ÷ÿ¦Õ÷ÿ¨×øÿ¸âúÿ»äúÿ®Ùúÿ©Ó÷ÿµÝüÿ½âüÿºßûÿÆèûÿ»àûÿ¸Ýùÿèôüÿí÷þÿëõýÿéôýÿçóýÿäñýÿãðüÿáðýÿáðüÿâñüÿãòüÿãòüÿáñýÿÛîûÿÍéûÿ¿äüÿÀæüÿ½áúÿæóýÿóõùÿèçíÿôöúÿ÷ûýÿøûýÿùüþÿúýþÿúüþÿûýþÿúüýÿûýþÿÛðýÿÕïýÿÒëüÿÎêüÿÍèûÿÍéûÿÏêûÿÖïüÿØïüÿÖíüÿÔêúÿÚîûÿáôüÿâôüÿÞðûÿáóûÿáóûÿãõüÿæ÷üÿæõüÿáòüÿßïûÿàñüÿæõüÿåôüÿäòüÿäòüÿçôüÿéöüÿéöüÿèôýÿë÷ýÿìöþÿë÷þÿìøþÿìøþÿèõýÿæôýÿèöþÿêøþÿáîöÿstŒÿâòüÿâòýÿãóýÿäôþÿäóþÿâðûÿãñûÿçôýÿêöýÿëöýÿêöýÿéõýÿåòüÿàïûÿÞíúÿÞîûÿàïûÿßîúÿáðûÿâòûÿâñûÿÞïûÿš¢´ÿOLcÿOKcÿÔçõÿÝîøÿÞïøÿØé÷ÿÕåõÿÛëøÿßíøÿÜë÷ÿáï÷ÿÜêöÿ×çôÿØçóÿÚéõÿNKbÿSPgÿØèõÿ׿õÿÖåõÿÕåôÿØçõÿÛéõÿÝëõÿÝëõÿÝëöÿ×çóÿÙéõÿÝì÷ÿÝí÷ÿÛëöÿÙéõÿÛêöÿßîøÿÝìøÿÜì÷ÿÝë÷ÿZXoÿOLcÿèôùÿéôùÿæòùÿåðùÿæòúÿçôûÿåòûÿäòûÿâðúÿâðúÿãñúÿçôûÿçôûÿæòûÿãïøÿçòùÿìöûÿí÷üÿêôûÿëöûÿëöûÿí÷üÿïùüÿïùýÿìöýÿêõüÿëöýÿïøýÿí÷üÿìõüÿêóúÿëôùÿëôøÿëóøÿêòøÿäìñÿvv‰ÿêóøÿêò÷ÿéò÷ÿæðöÿåïöÿæñ÷ÿçò÷ÿæñ÷ÿäð÷ÿâî÷ÿâïøÿãðøÿâïøÿàî÷ÿßìõÿßëôÿâîöÿäïöÿåðöÿäïöÿãï÷ÿàí÷ÿÝë÷ÿÛêöÿÛê÷ÿÜë÷ÿÜë÷ÿÞí÷ÿßî÷ÿÝíöÿÚêöÿÕçôÿÒäòÿÐãñÿÓåóÿÚëõÿÜíöÿ×èöÿÕåõÿÜìùÿßíøÿÜë÷ÿáï÷ÿÜë÷ÿ×èöÿÙê÷ÿÛëøÿÙëøÿ×éøÿÕè÷ÿÓæ÷ÿÒä÷ÿÐäöÿÒäõÿÖè÷ÿØé÷ÿ×éöÿÕèöÿÎäôÿÑè÷ÿÔêøÿÔêøÿÑè÷ÿÎåöÿÏæ÷ÿÒéøÿÐå÷ÿÏåöÿÎäõÿÏåõÿÖëøÿÝïøÿÝíöÿÊÚÜÿ­¬yÿ›—Sÿ–Hÿš”LÿŸšQÿ¡œRÿ¨¢Yÿ­§\ÿ¯©]ÿµ®cÿ¹³hÿ»´jÿ½¶hÿ¯©Sÿ­¦Mÿ«§Qÿ®©Sÿ¶±[ÿÁ¹cÿÈÁrÿÁ¼yÿ·°Yÿ®¶žÿ¯¿ÊÿÁÑØÿËÝçÿÒãòÿ×é÷ÿÛïúÿßòûÿÞñûÿÙíúÿßðúÿÞîûÿÛïûÿÝñûÿÜðûÿÕìúÿÒêúÿÒíûÿkÖñûÿÑîûÿÍéûÿÇæúÿÆçûÿÇçûÿÆçûÿÃäûÿÂâùÿÅäùÿÊçúÿÏëúÿÏëùÿÎéùÿÉæùÿÁâùÿ¸Ûøÿ²Øõÿ°Öõÿ±Õòÿ®Ñìÿ­ÏçÿªËßÿ¡ÀÔÿ±Èÿ¹ËÙÿy‹˜ÿ†™ÿÅÏÙÿ µÇÿ«ÃÓÿ´Íßÿ»Ôæÿ¿ÙëÿÄàñÿÑëôÿÏêõÿÍé÷ÿÈçøÿ¿à÷ÿµØõÿ¶Ù÷ÿ½àøÿ·Ýøÿ»áùÿ¿åùÿÁæùÿ¾äùÿ¶ßùÿ¯Ù÷ÿ¬Ö÷ÿ¤Ðóÿ´Ýúÿ¾äùÿºßùÿ²Ùùÿ³Úùÿ·ÞúÿºßúÿVÂæúÿ¾ãüÿ»àûÿéôýÿòùþÿðøýÿï÷þÿìõýÿëõýÿêôþÿçóýÿæòüÿçóýÿæóýÿèõýÿèõþÿãóýÿ×íþÿÀãþÿÅæþÿÆçþÿéõþÔÿÝïûÿÐêùÿÕíúÿÔìûÿÎçúÿÏçúÿÕìûÿÓêûÿØîûÿØîûÿÔêùÿÖëùÿÝðúÿáòúÿÝï÷ÿuw•ÿƒ…¡ÿåõúÿæöûÿäõûÿáòúÿàðùÿÞïøÿáñúÿâòúÿãòúÿâñùÿãñùÿäòùÿäòùÿæóùÿèóúÿêôûÿëõüÿéôüÿéôûÿéõûÿåòúÿÞìôÿåóúÿˆ‹ ÿKGdÿØçñÿãïûÿåòüÿæóýÿçóýÿçóýÿçôüÿçôüÿéõýÿîùýÿìøýÿêöüÿéöýÿäòüÿÞíùÿàîûÿãñüÿßïûÿâñüÿäóüÿÜéóÿ¦­½ÿTQhÿPLdÿPLdÿÆÖæÿßðüÿâòûÿàðûÿÝíúÿÝíúÿàðüÿáðüÿäóüÿâñüÿàïûÿÞîúÿßîúÿPLdÿPLdÿÛêøÿÞíúÿÝìúÿÜëùÿÄÐàÿ“¥ÿno„ÿ][rÿQMeÿijÿ¤­½ÿßîúÿáðúÿâñûÿàïûÿàïûÿâðûÿâïûÿãñüÿãñüÿPLdÿPLdÿçòûÿèôûÿéõûÿèóúÿåòúÿåòúÿèôûÿæòúÿãðúÿÔßëÿ¡ÿYWnÿhg|ÿ“—§ÿäïøÿäð÷ÿèóùÿëõúÿêôùÿçñ÷ÿêôùÿìöùÿ§«·ÿhg{ÿéôùÿèóøÿçòøÿèòøÿçò÷ÿéóøÿéóøÿéóøÿêóøÿêóøÿêóøÿŽžÿOKcÿåìòÿêóøÿêóøÿêóøÿçñ÷ÿáìóÿèóøÿçóøÿåð÷ÿàìôÿãî÷ÿãî÷ÿãî÷ÿäï÷ÿäïøÿäï÷ÿäð÷ÿæòùÿêõùÿêõúÿèôúÿæóúÿáïùÿÜê÷ÿÞìùÿâðûÿÒáíÿ°¹Èÿ–œ¬ÿpq…ÿYWnÿROgÿee{ÿš¢´ÿÎàïÿßðüÿãóüÿáðüÿÝíûÿÞîûÿàðüÿáðüÿãòûÿàïúÿÛìøÿÚëøÿÛìùÿÛìùÿÚëùÿ×êùÿØêùÿ×éùÿÖéúÿÕèùÿ×ëúÿÙíûÿÜïüÿÜïûÿØìûÿ×ëûÿÖêúÿØìûÿØíûÿÕêûÿÕéûÿÖëûÿÕêûÿÖëûÿÖêúÿÖêúÿ×íûÿØìøÿ³Áµÿ¢§†ÿ¨£`ÿš“Nÿš•Lÿ™”Iÿ—Jÿ¢œMÿ¦ŸQÿ«¤Tÿ±ªYÿ³«Zÿ³ªYÿ²«[ÿ¯¨Uÿ¸±[ÿ¯©Mÿ©¥Kÿª¥Mÿ­¨Nÿ´®Qÿ¸bÿ§£OÿŒ™mÿœ¬«ÿ¨¸¿ÿµÆÏÿÃÖßÿÎáëÿÓèòÿ×ì÷ÿØîøÿÚïùÿÚîùÿÜîùÿÞîùÿÝíùÿÚìùÿÚíùÿÚïúÿÔëùÿÊåôÿÓîúÿgÒíúÿÍèùÿÅãöÿÉãúÿÊäúÿÊåúÿËæúÿËæúÿÊçøÿËçøÿÌèùÿÖðùÿÓïúÿÏìúÿÊêûÿÀáùÿ´×õÿ´Öõÿ¹Ûôÿ¯Ôïÿ¯Óëÿ­Ïáÿ§ÇØÿ›ºÌÿ¿ÐÛÿ›ÿ‰’šÿÈÒÚÿ§ºÊÿ°ÆÖÿ¸Ïáÿ¾ÖèÿÁÜíÿÅãóÿÔïùÿÔðûÿÓðýÿÑïþÿÅæýÿ½ßúÿ¼ÞûÿÀâýÿºàûÿ¼äýÿÁçýÿÅêþÿÄéþÿ¾åþÿ·ßýÿ±Ûûÿ­×ùÿ¸ßýÿÀæýÿ¾åþÿ·ßþÿ¶Þýÿ·ÞýÿºàýÿVÂçýÿÁåýÿ½ãþÿëöþÿöûþÿõúþÿôúþÿñøþÿñøþÿðøÿÿî÷þÿìöþÿìöþÿëöþÿì÷þÿë÷þÿéõþÿÜïþÿÂãþÿÈæþÿÈæýÿáíøàÿþþÿþþÿüýýÿáòüÿÖîýÿÛñþÿÛòÿÿÕìþÿÔìþÿÙïÿÿØîÿÿÛñÿÿÜòÿÿÚðÿÿÛñÿÿßôÿÿã÷ÿÿŒ’¬ÿB=fÿC=fÿÄÑÞÿéúÿÿéùþÿç÷ýÿæöþÿåõýÿåõýÿåöýÿæöþÿæöýÿçöýÿçöýÿè÷ýÿçõüÿvvÿRNnÿXUtÿˆŠ¡ÿë÷ýÿì÷ýÿêöýÿãñùÿèôüÿLHfÿLHeÿÌ×ãÿçòýÿèóýÿéôýÿÜæñÿ®´Äÿll‚ÿWUmÿRNgÿ`^uÿ‡‰šÿÏØáÿêõüÿæóýÿáîúÿáïûÿäñýÿáðüÿpq†ÿROgÿPMeÿPMeÿPMeÿPMeÿPMeÿPMeÿPMeÿgf|ÿwyÿ\[rÿaawÿxzÿ£«¼ÿãòûÿâñûÿàðûÿáðüÿáðüÿPLdÿPLdÿÏÜêÿáðüÿÐÝëÿ‚…™ÿPMeÿPMeÿPMeÿPMeÿPMeÿPMeÿPMeÿ†ŠÿåòýÿåóýÿäñýÿãñýÿãñýÿäñüÿåòýÿæóýÿPMeÿPMeÿæóüÿêöüÿì÷üÿèôûÿæòúÿçóûÿêõüÿéõüÿæóüÿ×âíÿPMeÿPMeÿQNfÿ­³Áÿêöþÿêöþÿì÷þÿîùþÿïùþÿëöüÿíøýÿðúþÿPMeÿPMeÿðúþÿïùþÿïúÿÿíøýÿíøýÿîùþÿîùþÿïùþÿïùþÿïùþÿîøýÿQNfÿPMeÿ×Ýåÿðøþÿðùþÿñùþÿáêñÿ¯µÂÿnn‚ÿYWnÿSOgÿ_]sÿ†‡šÿÎÔàÿêôüÿêôüÿéôüÿèóûÿæòùÿæóúÿì÷üÿì÷üÿêöüÿéõüÿåòüÿßíùÿßíùÿ¯·Çÿ\ZqÿPLdÿPLdÿPLdÿPLdÿPLdÿPLdÿPLdÿjkÿÙèõÿâòûÿáñûÿÞîûÿÝíúÿßïüÿàðüÿãòüÿâñüÿßðüÿßïüÿÝîûÿÞîüÿÝïüÿÜíüÿÜîüÿÜïþÿÚíýÿÙíýÿÚîýÿÜðþÿÝðýÿÝñüÿÛïüÿÙíýÿÚíýÿÜîýÿÜïýÿÚîþÿØìþÿØíþÿÙíüÿØìüÿØìüÿ×ìüÿ×ìûÿÀÏÍÿ¤¥uÿ¨¥kÿ¬©jÿ¡œVÿŸšQÿŸšMÿ šIÿ¢šGÿ§ŸIÿ­¥Pÿ°§Rÿ³«Qÿ¶¬Sÿµ¬Tÿ­¦Lÿ°«Nÿ°©Lÿ®¦Hÿ«¤Eÿ­¦Gÿ²ªGÿ¿µPÿ¼²Nÿ–Yÿl}EÿoYÿ{‹oÿ’¤“ÿ²ÆÃÿÒèðÿ×í÷ÿÙïùÿÛðúÿÛðûÿßñüÿßðúÿÝïúÿÜîûÿÜñüÿÞòüÿØïûÿÎéølÿÓíûÿÔïüÿÑíüÿËéùÿÏæûÿÑçûÿÑèûÿÐèûÿÍçûÿËæøÿËçøÿËèùÿÖñûÿÔðûÿÑîûÿÎìúÿÂãùÿ·ÚôÿµÖóÿ·×òÿ®Ñëÿ«Ïæÿ©ÊÞÿ£ÂÓÿ™µÇÿ¿ÎÙÿ~Œ™ÿ‰‘šÿÈÓÚÿ¨½Êÿ²ÇÖÿ¹Ðáÿ½Öçÿ¿ÛìÿÃàðÿÏêöÿÑíùÿÓðûÿÓðüÿÊêûÿÁãúÿ¼ßúÿ½ßûÿºßûÿ»áüÿ¿æüÿÂèüÿÄèüÿÁçýÿ»áýÿ´Ýûÿ³ÜûÿµÝüÿ»âýÿ¾ãüÿ»àûÿµÝûÿ´Ûúÿ¶Þûÿ¿äûÿÀåûÿ¿ãûÿÛîüÿâñýÿßðüÿÞïýÿÜîüÿÜïüÿÙíüÿÖëüÿÔêûÿÓéúÿÔêúÿÔëùÿÔìùÿÓêúÿÎçúÿÀàùÿÅãúÿÇåùÿ¡®Êÿuq”ÿ´ÁÙÿÖêûÿÖêûÿÖëúÿÕêûÿÓêúÿÕëúÿÚïùÿÝñùÿØíøÿÓëøÿÓìùÿØíùÿØíùÿÓêùÿÑéùÿÕëûÿÕìûÿÖìûÿØîûÿØîûÿØíúÿ×íúÿÛïúÿ~‚žÿ@;cÿ@ÿ¼µ]ÿÁ½yÿ´¶{ÿ©¶¶ÿµÂÊÿ¿ÍÖÿÉÚäÿÒåïÿØìöÿ×ìùÿØìûÿ×íüÿÕíüÿÔëûÿÖîûÿÛóüÿkÙòüÿÐìûÿÊæùÿËçúÿÑëûÿÍéûÿÉæûÿÌéüÿÑíûÿÓîûÿÎêúÿÇç÷ÿÊé÷ÿÎëùÿÑíúÿÒîúÿÔîøÿÒí÷ÿÉåöÿ»Ùðÿ±Ôìÿ­Ðèÿ¥ÈÞÿž½Ôÿ—´ÉÿÁÑÚÿ„‘šÿˆ‘˜ÿÄÏ×ÿ™°Âÿ¦¿Ðÿ¸ÏÜÿÂÚåÿÂÝëÿÀÝìÿÃàïÿÈåóÿÍéöÿÐëøÿÒíöÿÓîöÿÌèöÿ¿ßôÿ¹Üôÿ¸Üöÿ·ÜõÿµÛóÿµÛóÿ¹Þöÿ¾áöÿÁãöÿ³Ùõÿ´Úõÿ±×ôÿ­Ôòÿ´Ùõÿ½á÷ÿ½á÷ÿ¸Üöÿ¹Üöÿ¼ßöÿÀâøÿÁãùÿÀáùÿ¾ßúÿ»ÞúÿºÝùÿ½ßûÿ¿âûÿÅåûÿÓêûÿÐèûÿÐèúÿÓìûÿÕíûÿÕìúÿÖìûÿÔêúÿÍæ÷ÿÌæ÷ÿOKyÿ?9jÿ·ÊÞÿÎèúÿÉãùÿÃàøÿÃßøÿÆáùÿÊåùÿÌæúÿÌæúÿËæ÷ÿØïúÿÝòúÿØíúÿÓêùÿØîúÿÛðúÿÛñûÿÔëùÿ×íúÿ×îúÿÖìùÿÚïûÿÞóûÿÜñûÿÖìøÿáñûÿäòûÿll‹ÿB=dÿ•š±ÿãñúÿäóûÿåóûÿæôûÿåóúÿåòùÿåòùÿàìôÿSQpÿGBdÿLHhÿÒÛåÿäñùÿãðùÿäñúÿäñúÿãñúÿæóûÿéõûÿë÷ûÿKGdÿKGdÿ¹ÃÑÿåòúÿâïùÿÞì÷ÿãðúÿèôûÿêöûÿéõûÿäñøÿåñøÿèóúÿ×àéÿPLdÿURiÿì÷ûÿéôûÿâïøÿàïùÿàïúÿßîùÿÞîøÿßïùÿâñüÿVTkÿPLdÿßïûÿàïûÿÞîúÿÛëøÿßïûÿäôýÿäóüÿáðûÿáðûÿâðúÿäòüÿäòûÿãñüÿPLdÿPLdÿÌ×åÿáïûÿâðûÿäòûÿäòüÿãñüÿãñûÿåóüÿçôüÿèôüÿèóûÿPLdÿRNfÿãïøÿæòúÿèóúÿçóúÿåñúÿâïùÿßíøÿOLcÿPLdÿãðúÿãñúÿãðúÿáî÷ÿéôúÿìöúÿèóúÿäðøÿÙãëÿOKcÿ_]sÿãï÷ÿåñøÿåñøÿãïöÿçòùÿéôùÿèôúÿäð÷ÿêôúÿìõúÿîöûÿPLdÿPLdÿëôùÿëôùÿëôùÿëôùÿëôùÿëôùÿëôùÿìõúÿìõúÿìõúÿìõúÿPLdÿPLdÿÂÈÔÿëôûÿéóúÿçòùÿêóúÿìõúÿí÷úÿèóúÿãî÷ÿäïøÿçòùÿÒÛæÿOKcÿTQhÿéóúÿêõúÿèôúÿäð÷ÿãïöÿçòùÿÄÌ×ÿPLdÿPLdÿPLdÿPLdÿPLdÿPLdÿPLdÿPLdÿXVmÿee{ÿYWnÿSPgÿUSjÿhh~ÿ—ž¯ÿÝíùÿÚê÷ÿÞîúÿãòûÿãòûÿáïûÿàïúÿáðúÿãòüÿäòýÿãòþÿâñþÿßïýÿÝíûÿÞîüÿßïüÿàðüÿàðýÿÞïýÿÝïüÿáòþÿãôþÿãóþÿäôþÿâòþÿÞïûÿÞïüÿáòýÿãôýÿâóýÿßñþÿºÈÊÿ§§oÿ¶¹‘ÿµµ„ÿ°®uÿ´°tÿ´¯nÿ·±mÿ¸²jÿ½´fÿ½²Xÿ¿²Xÿ¿²ZÿöZÿöTÿ¿®Nÿ· =ÿ˶Jÿ˵>ÿб6ÿÊ£0ÿÊ¢-ÿÒ°.ÿĨ+ÿ§(ÿ­›.ÿµ§7ÿ»­>ÿ½°9ÿ»®:ÿ¶«=ÿ·±TÿÄÀ|ÿ½½xÿ–hÿ±¾Åÿ¿ÎÖÿÊÛåÿÓæðÿÙìöÿÖìùÿÔêùÿÔéùÿÑéøÿÎçöÿÑé÷ÿÖí÷ÿk×ïöÿÌçöÿÃàóÿÅáôÿËåöÿÄàôÿ¿ÜòÿÄàôÿÌæõÿÐêõÿËçôÿÅâñÿÆãòÿÉåôÿËçôÿÍèõÿÏêôÿÎèñÿÄàïÿ¶Õéÿ­Ìäÿ¦ÇßÿžÀÕÿ–µÉÿŽ«¾ÿ¼ÊÔÿŒ”ÿˆ“›ÿÈÔÛÿ¤»Ìÿ¨ÃÕÿµÑáÿÆßìÿÊåòÿÅãóÿÈç÷ÿÊèøÿÎëûÿÔðÿÿÙôÿÿÚõÿÿ×òÿÿÑïÿÿÀäüÿ¾ãýÿ¼áûÿ¼áûÿ½ãüÿÁåþÿÂæýÿÄèýÿÅéüÿ¹ßúÿ³Úøÿ·Ýûÿºßýÿ»àýÿ¾ãþÿÄçýÿÁäüÿÂåüÿÂåûÿÁãûÿ¿àúÿ¾àúÿ¿âûÿÂäûÿÃäûÿ¿âûÿÃãûÿÚïüÿÚïüÿÖìûÿÕëûÿÙîûÿÚîüÿÚíûÿÙîúÿÖìûÿÔëúÿst™ÿOIvÿž©ÄÿÒëûÿÌçúÿÅáøÿÄàøÿÇâúÿÊæûÿËçûÿËçûÿËå÷ÿÕîüÿÛòüÿÙðüÿÖíûÿÕìúÿØïüÿÛðúÿÓëøÿÒè÷ÿÓêøÿ×íúÿÜòýÿÝòýÿÝòýÿÛïüÿÜîûÿáñýÿÈÓâÿD?fÿJEkÿÕâîÿæõýÿçõýÿæôýÿçõýÿèöýÿèöýÿ§­ÀÿGBeÿGBeÿ˜±ÿèõüÿçõüÿæôüÿäòûÿãñûÿäòüÿäñûÿãñúÿçôúÿKGdÿJGcÿ¿ÊØÿáïúÿãðùÿâðùÿßìöÿáï÷ÿçôúÿéõûÿäñøÿæòùÿåñøÿáìóÿPLdÿQMeÿì÷üÿëöüÿéõüÿàïùÿàïúÿßîùÿßîùÿàïúÿãñüÿQNeÿPLdÿäòûÿÞíùÿØèôÿÚéöÿÜë÷ÿÜë÷ÿßîùÿãñúÿáïùÿâñúÿâðúÿâðúÿàîùÿPLdÿPMeÿ×ãïÿåóýÿäòýÿæôþÿçôýÿæôýÿãòüÿäòüÿèõýÿéõýÿãîöÿPLdÿPLdÿæòúÿçòûÿèôûÿéõûÿçóûÿåòüÿáïúÿPLdÿPLdÿäòüÿäòüÿäòüÿâðùÿèõüÿë÷üÿêöüÿçôûÿÀÈÔÿPMeÿ‚„–ÿçóûÿåñùÿåñùÿçóúÿëöýÿë÷ýÿëöýÿèóûÿèòúÿëõüÿëôúÿPLdÿPLdÿíöûÿíöûÿî÷üÿíöüÿí÷üÿî÷üÿî÷üÿïøýÿïùþÿïùþÿïùþÿPMeÿPMeÿÎÖßÿìöýÿêõüÿéôüÿëõýÿëöýÿí÷üÿì÷üÿêöýÿãðùÿçôýÿâíöÿPLdÿQMeÿåñùÿêõûÿêõûÿåñøÿæòùÿåñøÿ’–¦ÿPLdÿkjÿ¹ÀÊÿÖßçÿáìôÿßîøÿàïúÿßîùÿßîùÿàðúÿãñüÿäòüÿåóüÿåóüÿßîúÿÚê÷ÿÝìùÿßîûÿßîúÿáïûÿäòûÿâðúÿâñûÿâñûÿáðûÿÞíùÿÝìøÿÞíúÿßîúÿßîúÿÜíúÿÝíùÿÞïùÿßðûÿÛîúÿÜîúÿàñüÿâñüÿãòüÿãòýÿâòþÿàñýÿàòþÿáóýÿãôýÿÚêôÿµ½§ÿ²´‹ÿ³¶ÿª¨wÿ±¯zÿ¹·}ÿ¾º|ÿĽ|ÿÈÀ{ÿÊÁvÿÍÂnÿÌ¿eÿÐÂjÿÔÅmÿÔÆjÿÇ´Rÿ¡ƒ4ÿ³’3ÿÈ©5ÿ¿—0ÿ®‚,ÿžn%ÿ´…(ÿ¾Ÿ(ÿ¹¡'ÿ³*ÿ®›1ÿ¿°Aÿ³?ÿ½¯;ÿº¯=ÿ¶¯Nÿ½¸iÿ¿»yÿ®¯qÿ§µ³ÿ¸ÉÒÿÄÖàÿÏâíÿÕêõÿØïúÿØïüÿÔìüÿÒêûÿÏéûÿÑéûÿÒìüÿk×ñüÿÖðüÿÏëüÿÅäøÿÉæüÿÌéüÿËèüÿÅäøÿÉèùÿÓîûÿÓïûÿÌêúÿÌëûÿÌêúÿÏìüÿÔðÿÿØóþÿÖñûÿÑìùÿÈæöÿµÖîÿ®Ðéÿ¦Èßÿž¾Ôÿ—´ÈÿÁÐÚÿƒ‘šÿ†’›ÿÇÓÛÿ£»Êÿ¨ÃÕÿ³ÎáÿÃÜëÿÉäñÿÈæõÿÈæöÿÊè÷ÿÍêûÿÑíüÿÕñýÿ×òýÿÕñýÿÑîýÿÂäûÿ¾ãüÿ»àùÿ¹Þøÿ¹Þ÷ÿ¼àùÿ¾âùÿÁäøÿÃåøÿ»ßøÿ³Ùõÿ³Ùõÿ·Üöÿ¸Ü÷ÿ¼ß÷ÿÀâ÷ÿ¾àöÿÀáöÿÀâ÷ÿÀá÷ÿ½ß÷ÿ¼ßøÿ¼Þøÿ¾àøÿÁâøÿÀáúÿÂäúÿÚïûÿßñüÿÜðüÿÛïüÿÜðûÿßïûÿßïúÿÞðúÿÛîúÿØìùÿ˜ž»ÿ^Z‚ÿ‚£ÿ×ìùÿÑéøÿÊäøÿÄá÷ÿÅá÷ÿÈâøÿÉåùÿËæúÿËåøÿÒëúÿÙîûÿÙïúÿ×íúÿÓëøÿÕìùÿØîùÿÔëøÿÒéöÿÑçöÿÔéøÿØíùÿÚîùÿÚíùÿÙíùÿÙêøÿÜìùÿÞíøÿ‚… ÿB=cÿ‚œÿáðøÿáðøÿáðøÿâðøÿãðøÿâñøÿ][zÿEAcÿ\ZxÿÞëôÿäòùÿåóùÿåóúÿäòúÿâðúÿáïùÿâñûÿäóüÿéöüÿKGdÿKGdÿË×äÿáðûÿæôýÿæôýÿäñûÿæóýÿêöýÿë÷ýÿéõüÿéöýÿéõüÿèóûÿQNfÿURjÿîùþÿíùþÿì÷þÿãñûÿáðûÿßîùÿÞíøÿÞíøÿáïúÿQMeÿPLdÿãñúÿáðûÿÝíùÿÝíùÿßîúÿàïûÿâðûÿãòûÿáïùÿâðùÿãñúÿâðùÿàîøÿOKcÿOKcÿÙæñÿáîøÿàîøÿáîøÿáïøÿáïøÿáïøÿáïøÿâï÷ÿäï÷ÿÓÜåÿNKbÿURiÿáíõÿáìõÿãîöÿäïöÿãïöÿàìõÿÝêôÿNKbÿNKbÿÞëõÿÞìõÿÞìõÿÞëôÿáíõÿäïõÿãïôÿãîõÿ£¨¶ÿMJaÿž¢°ÿàëóÿÞëòÿÝéñÿàìôÿâíôÿãîõÿáìóÿáìóÿâìôÿãíõÿÜåìÿMJaÿMJaÿåïôÿæïôÿåïôÿåîôÿåïôÿèñöÿèñöÿéò÷ÿèò÷ÿèñöÿçò÷ÿOKcÿOKcÿÑÙáÿçñ÷ÿæðøÿäïöÿåðøÿçòùÿêôùÿêôùÿçòùÿâï÷ÿâïøÿâîöÿOLcÿSQhÿäðùÿèóúÿéôúÿæòùÿäð÷ÿãïöÿooƒÿPLdÿËÓÜÿëöûÿëöûÿéôûÿâïùÿáïúÿÞíøÿÞíøÿÞíøÿáïúÿâñûÿãñúÿãñúÿàïúÿÛë÷ÿÛë÷ÿÝíøÿßîúÿàïùÿâðùÿàîøÿàïøÿáðùÿáïúÿàïúÿàðüÿßïüÿàðüÿáñüÿßïüÿßðüÿßðûÿáòýÿßñýÿßñýÿàñüÿâñüÿäòüÿåóýÿâòýÿàðüÿßïüÿáñýÿãôýÿÊÚÚÿ°¶‘ÿ®³‰ÿ§°ÿ¦¥xÿ´µ€ÿÄÁŽÿÎÊ—ÿÖЙÿÚÓ™ÿÙÒ’ÿØÏ…ÿÚÎÿÝÑÿßÔ„ÿßÓ€ÿÒÁgÿ³ž=ÿ¤-ÿ³–.ÿµŽ+ÿ‘\#ÿR!ÿ¸Ž'ÿǨ+ÿ¯’&ÿ¬‘#ÿ¸§/ÿô;ÿŵ:ÿŶ=ÿöEÿº²Lÿ»¶^ÿÍË’ÿ¾¾ˆÿ£°§ÿ³ÄÍÿ¿ÐÚÿÊßêÿÕêôÿÙïùÿØðüÿÖîüÿÓëüÿÐêüÿÐëýÿÑëüÿkÙòüÿÙóþÿÓïþÿÉèüÿÈæüÿÍêýÿÍêýÿÇæûÿÉçüÿÒîýÿÔðýÿÏíüÿÌêûÿÌêúÿÍêûÿÑìûÿÔïûÿÓîùÿÐìøÿÊçöÿ¹Øïÿ°Òéÿ¦Èßÿž½Óÿ–³ÇÿÁÐÚÿ„’šÿƒ™ÿÅÑÚÿ ¸Èÿ¦ÀÒÿ¯ÊÜÿ¹ÕæÿÃÝìÿÈäñÿÆâôÿÆäõÿÈæöÿÌèøÿÒëùÿÔíùÿÔíùÿÑìùÿÅåùÿÀâùÿ»ß÷ÿ¹Üõÿ¸Ûöÿ»Þ÷ÿÀâùÿÃåúÿÅçûÿÃäûÿ¿áúÿºÝùÿºÝùÿ¿âûÿÃåüÿÃåüÿÄåýÿÆèüÿÈéþÿÈèþÿÇèÿÿÅæÿÿÃåÿÿÃåÿÿÅæþÿÆçþÿÅæýÿÝðýÿäóýÿåôþÿãôþÿãóþÿåóþÿçõÿÿçõÿÿåôþÿàñýÿÆÔæÿpk‘ÿlgŽÿÒäñÿÝòÿÿÖîþÿÊèþÿÊèÿÿÊèþÿÍéþÿÎêþÿÐêýÿÒêüÿ×íýÿÜòýÿÝóþÿÙðþÿØïþÿÛñþÿÚñþÿØïýÿÖíüÿÖíüÿÚðþÿÜñþÿÞòþÿßòþÿÝðþÿÞðþÿßðýÿÓâñÿMJoÿE?fÿÇÔâÿäõþÿåôýÿåôýÿæõýÿ¸ÁÑÿFAdÿFBdÿ·ÁÐÿãñúÿæôûÿæõüÿåôüÿäóüÿãòüÿáðûÿâñüÿãòüÿèöýÿKGeÿKGdÿÕâíÿßîúÿäòüÿåóüÿâðúÿâðùÿåóûÿéôûÿèôúÿæñùÿäð÷ÿÝèðÿOLcÿXUlÿéóùÿèòøÿçòøÿâïøÿáïøÿÞí÷ÿÜêõÿÜêõÿÝëöÿTRiÿOLcÿÚæðÿâïùÿßíøÿÝë÷ÿÝë÷ÿáïúÿäñûÿãñûÿäñûÿãñúÿäñúÿãðùÿâðùÿOLcÿPLdÿÞì÷ÿãðúÿãñúÿäñûÿãñûÿäòûÿæóûÿåòûÿåñúÿèòûÿÌÔÞÿPLdÿa_uÿçòûÿæòûÿèôüÿéôûÿéõûÿèôüÿåóüÿPLdÿPLdÿâðûÿãñûÿãñûÿäñúÿåñúÿèôüÿëöüÿêöûÿ“£ÿPLdÿÃËÖÿèôûÿæóúÿäðùÿäðùÿæòúÿçóúÿéôûÿéôûÿçòúÿçòúÿÑÙäÿPLdÿOLdÿêôúÿêôúÿéóùÿèòøÿèòøÿèò÷ÿéóøÿéóøÿèóøÿæñöÿåïõÿNKbÿNKbÿØáèÿåð÷ÿåð÷ÿãï÷ÿäðøÿåñùÿèóùÿéôùÿèóùÿåñùÿßìöÿÝéòÿOLcÿXUlÿâî÷ÿåñùÿçòùÿèóùÿäð÷ÿäð÷ÿYVmÿPLdÿæïöÿêôúÿéóùÿèóùÿäñùÿáïùÿÞì÷ÿÜêõÿÜêõÿÜëõÿáïùÿäòûÿåòûÿäñûÿáïúÿÞìøÿÝë÷ÿáïúÿäñûÿäñûÿãñûÿãòûÿåóüÿäòüÿãñüÿáðüÿàïüÿàïüÿàðüÿàðûÿßðûÿÞïûÿÞîúÿßðúÿÞïúÿÝîùÿáïúÿâïùÿãðùÿáïùÿÜì÷ÿÚë÷ÿÜíøÿÞïùÿÙêñÿ±Á»ÿ®¡ÿ±ÃÈÿ©°”ÿÀÀ™ÿÐΦÿØÕ­ÿØÓ¤ÿľ|ÿûxÿËÁÿÑÇ‚ÿØÎˆÿÔÉ‚ÿÀ´aÿšŒ2ÿ•„'ÿ˜†(ÿ­“-ÿ·˜.ÿ±,ÿ¬„(ÿµ—)ÿ§ƒ&ÿ ~$ÿ—y#ÿÁ°;ÿνHÿͼBÿʺDÿɼKÿ¿¶Oÿ¼µ\ÿÍÉ’ÿÂÂÿŸª›ÿ®¿Çÿ¸ÊÓÿÃ×ãÿÐæñÿÔí÷ÿÕîûÿÓíüÿÐêüÿÌèûÿÌèüÿÍèûÿkÒíúÿÓîúÿÒíúÿËéúÿÁàøÿÈæúÿÉçùÿÅäøÿÄã÷ÿÉçùÿÏêùÿÏìøÿÊæ÷ÿÈæöÿÈåöÿËç÷ÿÐèöÿÏèôÿÍåòÿÇãïÿ¹Øëÿ°Ðåÿ¦ÇÜÿ›ºÏÿ’¯Ãÿ¿ÍØÿ‚™ÿ‚Ž–ÿÂÎØÿž´Äÿ£½Ïÿ©ÄØÿ²Îâÿ½ØéÿÇáíÿÄàðÿÅáòÿÅàòÿÅâóÿÊäóÿÎçôÿÏæóÿÍçóÿÄâóÿÀàóÿ¹ÛòÿµØñÿ³×ñÿ¶Ùòÿ»Þõÿ¿ßöÿÀáöÿÃäöÿ¿àöÿ¸Úõÿ·Ùôÿ½ßøÿÁâøÿ¿áøÿÁâøÿÂãøÿÅåùÿÆæúÿÅäúÿÂãúÿ¿àúÿ¾ßùÿÂâùÿÅäùÿÃäùÿÛíúÿçóüÿèõûÿçôûÿåòûÿçòüÿèóûÿéôüÿæóûÿãïûÿáïûÿ““¯ÿ{w™ÿ £¼ÿàóýÿÜðýÿÍèüÿÇåúÿÆãúÿÉäúÿÌæúÿÎæúÿÊä÷ÿÍåöÿÖë÷ÿØîöÿÓêöÿÑçöÿÓèõÿÕêöÿÒèöÿÏåôÿÎäôÿÐåôÿÓçõÿÕéõÿ×êõÿÓæôÿÓæõÿÔæôÿÕèõÿ’™°ÿA=bÿhh†ÿÛìöÿÝíöÿÝîöÿÞíöÿnp‹ÿE@bÿwy’ÿÝìôÿÚêóÿÝìôÿÜëóÿÛêòÿÚéòÿØçñÿ׿ñÿÖæðÿØçòÿÝëõÿIEbÿIFbÿØäìÿØçóÿÞì÷ÿáîøÿàîøÿßì÷ÿáîøÿæòúÿèóùÿåñøÿäð÷ÿÑÛäÿOLcÿa_uÿéôúÿêôúÿêõúÿæóúÿäòúÿàïùÿÝëöÿÜëöÿÞíøÿ^\sÿPLdÿÊÕáÿåóûÿäñûÿßíùÿßíùÿäòýÿæôýÿåôþÿçõþÿçõþÿéöÿÿéöÿÿèöÿÿQNfÿQNfÿåóþÿçõÿÿçõþÿçõþÿåóýÿæôýÿê÷þÿê÷þÿæóüÿêôýÿ³¸ÅÿPMeÿnm‚ÿéòûÿæñúÿçóûÿéõüÿëöûÿéõûÿæóûÿPLdÿPLdÿáïúÿâïúÿãðúÿäðúÿáîøÿäðùÿèôúÿêõúÿwx‹ÿOKcÿÚäíÿæñøÿäðøÿáíõÿßëôÿáìõÿãï÷ÿäïöÿåðöÿãîöÿâíöÿ³¹ÇÿNKbÿNKbÿèòøÿçñ÷ÿåðöÿæðöÿåðöÿæðöÿæñöÿæñöÿåðõÿåïõÿãïõÿNKbÿNKbÿÞèïÿæñøÿäï÷ÿâíöÿàìôÿßêóÿâîöÿåð÷ÿæñ÷ÿåñ÷ÿÝêôÿÏÚåÿOKcÿ`^tÿÞëõÿâî÷ÿåñøÿèóøÿæñøÿåðøÿPMeÿOKcÿÚäìÿèòøÿéôùÿéôùÿäñøÿâïøÿÞí÷ÿÛéôÿÚèôÿÜêõÿßí÷ÿâïùÿáïøÿâðøÿáïøÿÝë÷ÿÜêöÿàïùÿâðùÿâðúÿâïùÿâðùÿãñúÿãñúÿâðúÿáðûÿàïüÿÞîúÿàïûÿáðûÿàðûÿÝíúÿÝîúÿâòûÿáòûÿÝîùÿâðûÿåòüÿæôüÿåòüÿàïúÿÞíúÿßðüÿâòýÿÃÑÉÿ·¿§ÿ©·ªÿ¬º¬ÿ³ÅËÿ¨®ŽÿÏÏ­ÿÚÚ¸ÿÍÉ•ÿ¡šCÿ£šBÿ¨œBÿ«ŸBÿ°¥Jÿ« Gÿ˜‹0ÿ•Š+ÿ ‘,ÿ¯ž.ÿ¡…*ÿ™z&ÿ¸š/ÿ¹Ÿ+ÿ¹¢(ÿ¦‹%ÿ¹£3ÿ˶DÿÕÂHÿÖÂNÿÔÄNÿÑÁKÿξNÿǼVÿ»´Zÿ»¶oÿ—“Oÿ‹“wÿ¨¹Âÿ±ÃÍÿºÑÜÿÈáíÿÎèôÿÑéøÿÐéùÿÌæøÿÈäøÿÈäøÿÇãøÿkÉçúÿÏêúÿÒîúÿÐíúÿ¿à÷ÿÅãúÿÉæúÿÆäùÿÂáøÿÇæúÿÎêûÿÓîúÿÍéúÿËçùÿÉæ÷ÿÉçøÿÍè÷ÿÏèöÿÏçôÿËæñÿ½Üìÿ¶Ôæÿ¨ÇÝÿ›ºÏÿ‘¯Ãÿ¾ÍØÿƒ™ÿ‚™ÿÂÏÙÿ™´Æÿ¢¿Ñÿ«ÆÚÿ±Ïäÿ¾ÙíÿÈäñÿÈäôÿÈäöÿÉä÷ÿÉä÷ÿÌçøÿÏéùÿÔëùÿÔíùÿÍëùÿÇçøÿÀáöÿ¹Üóÿ¶Ùòÿ¸Úóÿ¼Þöÿ½ßõÿ¿àöÿÃäöÿÂãöÿ¸Ûôÿ¶ØóÿºÜõÿ¾ßõÿ½ßöÿ¿àõÿÀáôÿÃãöÿÄäöÿÄãöÿÁàöÿ¼Ýôÿ»Ûôÿ¿ÞöÿÃâ÷ÿÁàõÿÛìøÿëõûÿìõûÿëõûÿéôûÿéòúÿëóúÿëóùÿéóùÿæñùÿâîøÿÉÒàÿІ£ÿ†‚ŸÿÉÒàÿÜíöÿÊãóÿÀÞñÿÂÞóÿÄàõÿÇâõÿÈáôÿÆÞóÿÉáôÿÒèõÿÕëõÿÓéõÿÐæôÿÒçõÿÕêöÿÓèöÿÐæõÿÎäôÿÏåõÿÔèøÿ×ëøÿÙìøÿ×ëøÿ×êùÿÖéùÿ×êùÿÕåóÿRNrÿC>cÿ°»ÍÿÞîùÿÞðùÿÈÔãÿE@cÿJFhÿÏÞèÿàñúÿßðùÿàñúÿáòúÿãóûÿåôýÿãòüÿàðûÿßïúÿàðûÿáðüÿKGeÿKGdÿæóùÿàñýÿãòþÿäóþÿäóþÿãñüÿãñüÿèõþÿë÷ýÿêõýÿéõýÿÄÌØÿPMeÿll€ÿêõüÿìöüÿì÷üÿê÷ýÿçõüÿãñúÿÞí÷ÿÞì÷ÿßíøÿnnƒÿPLdÿ©°¿ÿæôüÿæôýÿáðûÿàîúÿäòýÿæóýÿåóýÿåóüÿåòûÿçôýÿçôüÿçôüÿPMeÿPMeÿâðúÿåóýÿæóüÿæóüÿãñûÿãñúÿèõüÿèõüÿåòúÿèòûÿ‘“£ÿPMeÿˆ‰›ÿêôüÿçòúÿçòúÿèôüÿëöüÿêöüÿèõüÿPLdÿPMeÿãñüÿåóþÿçôþÿçôþÿæòýÿåòüÿêöýÿì÷üÿcawÿPLdÿæòúÿêõüÿèôüÿåñúÿãðùÿäñúÿèóüÿéôüÿêõüÿèôüÿçóüÿŽ‘£ÿPLdÿPLdÿéôûÿêôûÿêõüÿéôûÿçòùÿçòùÿçóùÿéôùÿèôùÿçòùÿæòøÿOLcÿOKcÿäïöÿèóúÿæòùÿåðùÿãïøÿãïøÿãïøÿåñùÿéôúÿêõúÿàîøÿÀÊ×ÿPLdÿjjÿâïùÿâïùÿçòûÿéôúÿçòùÿåðøÿWTkÿOKcÿ¿ÆÒÿæð÷ÿèòøÿèóøÿæòøÿäñøÿàî÷ÿÝìöÿÜêõÿÜëõÿßí÷ÿáïùÿäòûÿåóûÿäòûÿàîùÿÞìøÿâðûÿäñûÿãñûÿãðúÿâðùÿäòûÿäòûÿãòûÿâðûÿßïúÿÝíùÿàðüÿâñüÿáñüÿÞîûÿÞïûÿãóüÿâóüÿßðûÿãñüÿæòüÿéôüÿèôýÿåôÿÿàðüÿáòýÿâóÿÿº¿˜ÿ¥©yÿ¹Ç¶ÿ·ÈÆÿÀÓàÿ§®’ÿ¦¨nÿ°±tÿ«§_ÿ¨žHÿ§ŸHÿ¨œ@ÿ ’3ÿ’4ÿ˜Ž0ÿ™0ÿ¡•3ÿ­Ÿ4ÿ¶¦2ÿ¨—+ÿ°Ÿ3ÿ™}(ÿ¸¢+ÿ¼¨)ÿ¬˜#ÿ­š'ÿÜÌkÿßÏdÿÞÌ\ÿÝÍ_ÿÚÊYÿÔÂPÿÏÂ]ÿ½·`ÿ©¥Uÿjcÿ…‹qÿ§¹Àÿ¯ÂÌÿ¹ÐÛÿÆÞêÿËæóÿÐêøÿÑêùÿÍçùÿÈäøÿÆâ÷ÿÅâ÷ÿkÅâ÷ÿÊæùÿÒíúÿÕðúÿ¿àùÿÃãûÿÄåüÿÄæûÿÃãùÿÃãùÿËçûÿÑíûÿÎêûÿÌçúÿÊåùÿÉä÷ÿËåöÿÌæöÿÏæôÿËåðÿÁÞëÿ¹×èÿ­ÊÞÿž¼Ðÿ“°Ãÿ¾Í×ÿ‚˜ÿ…‘šÿÂÏÙÿ˜³Çÿ¤¿Ôÿ®Éßÿ²Ïæÿ»×îÿÅâóÿÌæöÿËçùÿÌçûÿËæúÿÌçúÿÏêûÿÔíüÿÕðüÿÓðüÿÍíüÿÇèüÿÁäûÿ¾áùÿ½áùÿÀâúÿ¿ãûÿÂåüÿÆèûÿÆçûÿ¿ãúÿ»ßùÿ½àûÿÂäýÿÄçýÿÅçüÿÆçüÿÈéýÿÊêüÿËêüÿÉéýÿÅæüÿÁãûÿÃäüÿÆæüÿÇçüÿßñüÿòùýÿñùþÿñùþÿðùýÿð÷ýÿï÷üÿð÷üÿï÷üÿíöüÿëõüÿèóûÿ·ºÍÿ—“®ÿ™—±ÿÜéòÿÔëúÿÈæùÿÆäøÿÉæúÿÍèûÿÎçûÿÍåûÿÏæûÿÒêûÿØîûÿÚïûÿØîûÿÖìúÿØíúÿÖëúÿÓéùÿÑçøÿÒçùÿÔéúÿÖêúÿÙìúÿÙìúÿØìúÿ×ëûÿ×ìûÿÙíûÿŸ¨¿ÿD>dÿcbƒÿÝïúÿÞðûÿ…ФÿFAeÿŽ”«ÿãôüÿãóüÿáòûÿáòûÿäõýÿæõýÿåõýÿäôýÿãóþÿâñýÿáðüÿáðüÿKGeÿLHeÿê÷üÿäòýÿáðüÿáðüÿäóþÿäóþÿãñüÿçôþÿë÷ÿÿíøÿÿì÷ÿÿ¯µÃÿPMeÿ{{ÿêõüÿíöýÿîùþÿíùþÿê÷þÿèõþÿåóýÿâñûÿâñûÿ…‰œÿPMeÿnoƒÿåóüÿåóüÿâñûÿàîúÿáïûÿãñüÿäóüÿäòûÿäòûÿåòûÿæóûÿçóûÿOLdÿOLdÿáïùÿãðúÿäñúÿäñúÿãñúÿáïøÿãðùÿåòùÿæòùÿçñùÿnn‚ÿOLdÿ£¦´ÿêôûÿéóûÿèóúÿçóûÿëöýÿë÷ýÿëöýÿPMeÿPLdÿáïùÿãñûÿäòûÿãðúÿãïúÿãðúÿçóüÿêõüÿSOgÿPLdÿÞéòÿèóúÿæòúÿãïøÿáî÷ÿãïùÿãðùÿåðùÿçòúÿçòúÿÝèñÿYVmÿOLdÿOLdÿæòúÿçóúÿèôúÿèóúÿçóúÿæòúÿçóúÿèôúÿéôúÿèóúÿæòøÿOLcÿOKcÿçòøÿçóùÿæñøÿåñùÿãïøÿâî÷ÿãïøÿæñúÿèóúÿëõúÿåòûÿª±ÁÿPLdÿxzŽÿäñûÿâïùÿæòüÿéõüÿêõüÿéôüÿrr†ÿPLdÿŸ£³ÿéôûÿëõüÿíøýÿíùþÿéöýÿæóüÿãñûÿàïùÿàïùÿâðúÿâñûÿäòüÿæóüÿåóüÿáðúÿßíùÿáîúÿâðûÿãòûÿäòûÿäòûÿåóüÿåóüÿåòûÿãñûÿâñüÿßïûÿàðüÿáðûÿáðûÿßïûÿÞïúÿàðûÿáòûÿãñûÿãðûÿåñûÿæòûÿçòûÿäñûÿàïùÿÞîøÿÝîùÿÇÕÒÿ¿ÎÇÿÖçðÿËÝèÿÁÔáÿ¬·£ÿ«­yÿ¥£fÿ¥¡^ÿ®¨Zÿ¯¨Vÿ®¤Iÿ¨›>ÿ¨œ>ÿ¦œ<ÿ­¢@ÿ¸¬Fÿº¬Dÿ»¬@ÿ¶¥9ÿ½®Bÿº¨?ÿ¾©6ÿµ¡'ÿ·¤&ÿ¶£(ÿÒÃ]ÿ娅ÿâÔsÿáÕvÿâÒkÿÛË]ÿÏÂ[ÿükÿ£¡TÿaZÿ›Žÿ§¹Âÿ°ÃÎÿºÑÜÿÅßìÿÍèõÿÐëøÿÑìùÿÏéùÿÊæùÿÇãùÿÆâøÿkÅâøÿÉåùÿÎêøÿÔîøÿÄãøÿ¿ßöÿ½ÞöÿÀà÷ÿÁà÷ÿ¾ÞõÿÃàöÿÉåöÿÌæõÿÉäõÿÈâõÿÆáôÿÇáôÿÉãôÿËäòÿÉäïÿÃÞêÿ¹Õäÿ­ÊÜÿ¡½Ðÿ•±Ãÿ¿Í×ÿ‚˜ÿ‰•šÿÃÐÚÿ˜²Çÿ¥ÁÖÿ²Îáÿ¶Ôêÿ»×ðÿÃàõÿÍèøÿÍéúÿÎèüÿËæúÿÊå÷ÿÍæùÿÐèùÿÑëøÿÐìøÿËëøÿÈèøÿÃäøÿ¿á÷ÿ¼ßöÿ¼Þöÿ»Ýõÿ¿áøÿÁãøÿÂãøÿÀâ÷ÿ¼Þöÿ¸Ûôÿ½àøÿÅæøÿÅåùÿÅåøÿÅåùÿÈçùÿÊéøÿÉèøÿÆåùÿÄãùÿÁâùÿÃãùÿÅåùÿßðûÿòøüÿï÷üÿïøýÿðøýÿíõýÿìôüÿìõüÿëõüÿèóûÿæòûÿãðúÿÛì÷ÿ­ÿtp”ÿ‚¡ÿÆÜíÿËéüÿÇæûÿÈçüÿÍéûÿÌçüÿÏèûÿÏçúÿÍæùÿÓëûÿÚðûÿÛðûÿ×ìúÿÖëúÿÔëùÿÔêúÿÓèùÿÒçúÿÒçúÿÔéúÿÖêúÿØìúÿ×ìúÿÕéùÿÓèùÿÓèùÿÓæöÿ[Z{ÿC>cÿ¨²ÆÿÒãðÿKGjÿHCfÿÎÝêÿÞðøÿàñùÿßðùÿÛí÷ÿÞïøÿáðùÿáñùÿàðùÿÞîùÿÜì÷ÿÜë÷ÿÛêõÿJFcÿJFbÿãïöÿáïöÿÜì÷ÿÙèôÿÝì÷ÿßí÷ÿßì÷ÿáîùÿäðùÿçòùÿçòùÿŽ‘¢ÿOLdÿ†ˆšÿæðøÿèòùÿéóùÿçóøÿæóùÿåòùÿâðøÿàî÷ÿÞìöÿ¦®½ÿNKbÿNKbÿª²Àÿáî÷ÿàî÷ÿÞìöÿÛéôÿÞìöÿâï÷ÿáîöÿàíõÿáîöÿâïöÿãð÷ÿNKbÿOKcÿãðùÿâðùÿãñúÿåòûÿåóûÿäñúÿãñúÿæóûÿéõûÿÝåïÿQMeÿPLdÿÂÇÒÿêóúÿéóúÿæñøÿãï÷ÿæòùÿèôûÿéõûÿPLdÿPMeÿãòüÿäóýÿæôýÿæóþÿèôþÿéõÿÿçôþÿêöÿÿXVmÿQNfÿËÔßÿë÷ÿÿë÷ÿÿêöÿÿèõþÿèôÿÿèôÿÿéõÿÿêöÿÿæñúÿƒ–ÿQNfÿQNfÿQNfÿçôþÿêöþÿë÷þÿë÷þÿéõýÿçôüÿèôüÿéõüÿë÷ýÿë÷ýÿêöýÿPMeÿPMeÿëöýÿë÷ýÿêöýÿçôüÿåñúÿäðúÿãðùÿäðùÿçóûÿêõûÿèôúÿ‘£ÿOKcÿ…‰›ÿãðùÿâïùÿâîùÿäïøÿæñøÿåð÷ÿœ °ÿOKcÿgf{ÿáëóÿåïöÿæñöÿæò÷ÿäñ÷ÿäñøÿâïøÿáïøÿßí÷ÿßí÷ÿÞìöÿáïùÿâðùÿâðùÿâðùÿßîøÿÝëöÿßîøÿãñùÿãðùÿâïøÿâïøÿãñùÿäóúÿäòúÿâðúÿáïúÿßîúÿÞîùÿßïùÿßïùÿÝîùÿÝîúÿáòüÿäóûÿâïúÿãïùÿäðùÿåðùÿãðùÿáïùÿÝí÷ÿÚì÷ÿÜíøÿÚí÷ÿ×èñÿÎßêÿÆÙæÿ·ÆÄÿ··ÿ°±{ÿ¬ªsÿ­ªqÿ»µtÿµ®`ÿ¸®`ÿ½³`ÿ·_ÿ÷[ÿÈ»_ÿÇ»]ÿƹTÿÇ·Rÿ̽]ÿ˼TÿÆ´=ÿ¶¤+ÿ¾ª2ÿı8ÿIJ<ÿƵIÿÆ´BÿÝÒÿâׂÿßÏoÿÒÄ_ÿÀ¹lÿŒCÿrwZÿ ±ºÿ§¹Âÿ±ÄÎÿ»ÒÞÿÀÛêÿÊåôÿÏêùÿÒìúÿÏêúÿÊçúÿÇäùÿÅáùÿkÄâøÿÅäøÿËèúÿÓíúÿÏìúÿÂäúÿ½ÞøÿÂâúÿÆäúÿÃâúÿÃáùÿÈäùÿÏéùÿÌèøÿËäøÿÈâöÿÆáóÿÈáôÿËãôÿÊåòÿÆáíÿ½Úçÿ³ÐÞÿ¥ÂÓÿ™´ÆÿÀÏÙÿƒ™ÿŒ—›ÿÄÑÛÿ™µÉÿ§ÃØÿ¶ÑãÿºÖìÿ»×ñÿÂßöÿÎéùÿÏêûÿÎêýÿÌèýÿËèüÿÍéüÿÒìýÿÓîýÿÕðýÿÒðýÿÎíýÿËëýÿÆçüÿÁåúÿ¿âúÿ½áùÿÃæûÿÂåüÿÅçüÿÇèüÿÁäüÿ»ßùÿÀâûÿËêüÿÊéüÿÈèûÿÊçúÿÊéúÿÎêúÿÍìúÿÍêûÿÉèûÿÅäûÿÂäùÿÈæúÿÍêúÿÍçúÿÇäøÿÍçúÿ×ïùÿÑçùÿÔèúÿÖêúÿÙíúÿØîúÿ×ìúÿÐèøÿÌäöÿÂØìÿZ[…ÿ82cÿJGuÿª¾×ÿÆâøÿÇäøÿÍçúÿËåúÿÑèúÿÏèûÿÊãùÿÏæúÿÚðûÿÝòûÿØîûÿÕëúÿÔêúÿÓêúÿÒéùÿÑéúÿÒéüÿÓêüÿÔëüÿ×ìûÿÖíûÿÖëûÿÓéúÿÓçúÿÓêúÿ°¾ÓÿD?dÿZYzÿ˜±ÿFAeÿqtÿáóýÿâõýÿãõýÿãóüÿÚìøÿÞïúÿâòüÿâóüÿâòüÿßðüÿÞïüÿÜíúÿÜìùÿKGdÿKGdÿæôüÿèöûÿáðúÿÛê÷ÿßîùÿâïøÿáîøÿàíøÿàí÷ÿåð÷ÿåð÷ÿll€ÿOKcÿ—›«ÿãîöÿæñøÿçñøÿèòøÿçóùÿæòùÿåñùÿâïøÿÞìõÿ×äïÿ^]sÿNKbÿPMdÿœ¢±ÿÞêóÿÞìöÿÚèóÿÝëõÿâîöÿáîöÿáîöÿâîöÿâïöÿäïöÿNKbÿNKbÿâîöÿàíöÿÞìõÿâî÷ÿãð÷ÿãïøÿßíöÿåñúÿêõúÿ«°¾ÿOLcÿPNeÿãëòÿëôúÿêôúÿçñùÿäï÷ÿäðøÿçóúÿèôúÿPLdÿPLdÿáîùÿáðùÿåòûÿäñüÿçóüÿæòüÿâîúÿåñûÿih}ÿPMeÿ›Ÿ¯ÿçóûÿçóûÿçôýÿçôýÿæóýÿåòýÿåòýÿËÖâÿlk€ÿ„‡šÿ’¤ÿPMeÿPLdÿâðûÿæóüÿèõüÿèõüÿæóüÿåòûÿæóûÿêöýÿë÷ýÿë÷ýÿêöüÿPMeÿPMeÿéõüÿéõüÿèõüÿæóüÿäñûÿãðûÿãïúÿáïùÿåóüÿêöýÿíøýÿnnƒÿPMeÿ™¯ÿèôüÿæòüÿåñüÿæòüÿëöýÿëöýÿÚåîÿVSjÿPLdÿ‚„—ÿãíõÿì÷þÿíøþÿìøþÿêöýÿèõýÿæóüÿãñúÿâñûÿáðúÿåôýÿåóýÿåóüÿæóüÿãòüÿßíùÿâðûÿèôüÿæôüÿäòúÿåñúÿäòúÿåòúÿåóúÿåòúÿâñúÿàîúÿÞîùÿàïùÿàðùÿÞíùÿÚë÷ÿÞîùÿåóùÿâîùÿâîùÿãïùÿåñùÿäòùÿäòûÿßïúÿÛìøÿÚì÷ÿÚìöÿÙêóÿÒåîÿÌßìÿÄÖãÿ·¿³ÿ¿ÀšÿÇĘÿÈŘÿËÆ•ÿÆÁ„ÿÉÁÿÎÄÿÔÉ~ÿÓÇvÿÓÇuÿÓÆpÿÓÆgÿÙÏ…ÿÖÌ}ÿλPÿÒ¼CÿϾJÿÑ¿QÿÓÁQÿͺCÿƳ4ÿï+ÿÑÅaÿäÜžÿßÖ‡ÿÙÎ{ÿ¸´lÿli3ÿ¡¤ÿ¢´½ÿ©¼Åÿ´ÈÒÿ¿Öáÿ¾ÚëÿÇãôÿÌèøÿÏêúÿÍéúÿÆãùÿÁà÷ÿÀÞöÿk¿Ýõÿ¾ÞõÿÃãøÿÍéùÿÓïùÿÄãøÿºÜöÿÁáùÿÈåùÿÅâøÿÁßøÿÄâøÿÎèøÿÍç÷ÿÉä÷ÿÆáöÿÅáõÿÆâõÿÊãôÿÇâðÿÅßëÿ¾Øåÿ³ÎÜÿ§ÁÑÿš³ÄÿÀÏØÿƒ™ÿˆ“™ÿÇÒÙÿœµÅÿŸ¹Îÿ©ÄÛÿ¸Òåÿ»×ëÿ¸ÖðÿÀÞôÿÅàöÿÈãøÿÆäùÿÄâøÿÅãøÿÊçúÿÏëùÿÓëùÿÔìøÿÑëøÿÉæøÿÄä÷ÿÄä÷ÿÁã÷ÿºßõÿ½áøÿÁåùÿÄæùÿÅåøÿÁâùÿÁâùÿÃãùÿÇäùÿÊçùÿÇåùÿÇäøÿÊèùÿÏêùÿÎêùÿÍéùÿÌéùÿÅâ÷ÿÅã÷ÿÊæúÿÍêûÿËçûÿÆåûÿÊçýÿÑíýÿÛñýÿÔëýÿÑêûÿØîüÿÜòýÿÚðýÿÖîýÿØîýÿÒêûÿÌä÷ÿz€£ÿ92dÿ;5fÿ|…ªÿÁÚðÿÏèüÿÍçüÿÎçûÿÍçùÿÍæùÿÏæøÿÓêùÿÙîúÿÝñúÿÕìùÿÖìûÿÔìûÿÑêûÿÍçùÿËåøÿÌæøÿÏéøÿÓëøÿÕìøÿÖêøÿÑè÷ÿÎäöÿÌãõÿÐå÷ÿx}™ÿC>bÿC>bÿC?bÿ‘š±ÿÕèóÿÖéóÿ×êóÿÙéòÿÖçòÿÔäðÿÕåðÿØèòÿÚêóÿØèôÿ×çóÿÙéõÿÔåòÿHEaÿIFbÿÚéõÿàîöÿáï÷ÿßí÷ÿÛêõÿÝë÷ÿâî÷ÿàíöÿÝêõÿàìöÿÖàêÿOLcÿNKbÿ§®¼ÿáíöÿäï÷ÿæñøÿçñ÷ÿéóøÿéóùÿåòùÿãðøÿâðøÿáïøÿ¹ÃÑÿRNfÿPLdÿPLdÿhh}ÿÅÏÜÿáîùÿçõþÿéõþÿêöþÿéõþÿèôýÿê÷þÿì÷þÿPMeÿPMeÿéõüÿåñúÿäñùÿçòûÿèõüÿçóûÿäñúÿæòûÿéôûÿtt‡ÿPLdÿkk€ÿëôûÿíöûÿìöüÿêõüÿëõüÿèóûÿèóüÿêõüÿPMeÿPLdÿäñûÿãïúÿäñúÿâïùÿâïùÿâïøÿáî÷ÿáíöÿŠžÿNKbÿVSjÿÏÚãÿãï÷ÿâï÷ÿàî÷ÿÞìöÿÙçòÿ—®ÿTQhÿ¥«ºÿãðøÿÚåîÿOKcÿOLcÿÕâîÿàíùÿâðùÿåòùÿãñùÿâðùÿäòûÿåòúÿåòùÿåñøÿåòøÿOKcÿOKcÿàìõÿãï÷ÿãð÷ÿáíöÿßìõÿáî÷ÿÜéôÿÜêõÿßí÷ÿâðùÿÛæîÿQMeÿPLdÿ§®¾ÿâïúÿçòûÿåñúÿáîùÿãðùÿåðùÿäïøÿ©¯¾ÿOKcÿOKcÿdbxÿÂÊÔÿèòøÿéóøÿèóøÿäðøÿáíöÿàíõÿÞìõÿÚêóÿÝìõÿßíöÿàîöÿáîöÿßíöÿàí÷ÿàíöÿàìõÿáíõÿáíöÿàìõÿáîöÿãïöÿâïöÿáïöÿàîöÿÜêôÿÚéóÿÜêôÿÜêóÿÚéóÿØèóÿÚéõÿÝìõÿâîõÿÞëõÿÜéôÿàíöÿâïöÿáî÷ÿÞí÷ÿßí÷ÿÚéöÿØéõÿÙéóÿØéðÿÔäïÿÍàïÿÆÙçÿ¹ÅÃÿ»½ŸÿÍˤÿÒϨÿÐËœÿÏÈ‘ÿÍÆ†ÿÐÈ‚ÿÒÉ‚ÿÖ̃ÿÔÉ|ÿÌÀlÿÝÔ›ÿÚÒ‘ÿÏÀ^ÿÒÀSÿØÈbÿÙÉgÿÚÉcÿÓÃ\ÿοUÿÊ»HÿÐÅgÿäݪÿÞØŸÿÑÌ„ÿˆ„FÿfhNÿ˜«·ÿŸ´¿ÿ§¾Èÿ³ËÖÿÀÙæÿÄßðÿÆàóÿÅãõÿÊçøÿÌèùÿÆãøÿÄâ÷ÿÄãùÿk¼Ýöÿ»Ýöÿ¿àùÿÃäûÿÎìûÿÍëûÿÆåùÿ¾ß÷ÿÂáúÿÊçûÿÈæúÿÀàùÿÆåúÿÉåúÿËæûÿÈæüÿÆãúÿÅãøÿÈä÷ÿÉåôÿÉáïÿÆÝéÿ¼Ôàÿ¬ÅÕÿž·ÈÿÃÑÙÿ„‘šÿ†‘—ÿÅÑØÿžµÄÿ ¹Ìÿ¨ÃØÿ³Ïâÿ¹Õéÿ¹×ïÿ¿ÝòÿÄáõÿÇãöÿÆã÷ÿÃá÷ÿÂá÷ÿÆäùÿËçúÿ×îúÿÙîúÿÕíúÿÎéúÿÊçúÿÊèúÿÅæùÿ¾âøÿ¿ãùÿÁæüÿÃçüÿÆèüÿÅæüÿÅåüÿÈæüÿÊèþÿÐíþÿÍëþÿÌêýÿÍëþÿÓïþÿÖòþÿÔñþÿÑîÿÿÍëýÿÊéüÿÌëýÿÏìÿÿÎìÿÿÍêÿÿÍéÿÿÒìÿÿÙñþÿ×îþÿÕíýÿÙðþÿÝòþÿÜòþÿÚñþÿÙðþÿÔìþÿÓêýÿÔíýÿ±ÁØÿ[[…ÿ:3dÿB=lÿ}…ªÿµÉâÿÎèüÿÏéüÿÏéüÿÐéûÿÓëûÿØïüÿÝòüÿ×ïüÿ×îûÿÕíüÿÑëüÿÌçùÿËæúÿÌèúÿÏêúÿÓëúÿÕìúÿÖìùÿÕëùÿÑçùÿÎåøÿÐæøÿœ©ÁÿC>bÿD?cÿD?cÿ­¼ÑÿÖëùÿØìøÿÛíøÿÝîøÿÛì÷ÿØéôÿ×éôÿÛëöÿÜìöÿÛë÷ÿÚëøÿÛìøÿÕçôÿIEbÿKGcÿÙéöÿàîöÿáîöÿßíöÿÛéôÿÜêõÿàí÷ÿáí÷ÿßì÷ÿáî÷ÿ¥¬ºÿNKbÿNKbÿ»ÄÑÿáî÷ÿâî÷ÿãîöÿèò÷ÿèñöÿæñöÿäïöÿãï÷ÿãð÷ÿâï÷ÿßî÷ÿª³ÁÿPMdÿOKcÿOKcÿNKbÿNKbÿ^\rÿáíöÿäð÷ÿãï÷ÿâîöÿäðøÿæñøÿOKcÿOKcÿåð÷ÿâîöÿàìôÿáíõÿäï÷ÿäðøÿãïøÿãî÷ÿÇÏÚÿOKcÿNKbÿ{|Žÿçñ÷ÿéò÷ÿéóøÿèòøÿèñøÿäï÷ÿäî÷ÿåðøÿOKcÿOKcÿãïøÿàí÷ÿáí÷ÿàí÷ÿàí÷ÿáí÷ÿàí÷ÿáî÷ÿÄÍØÿNKbÿOKcÿa_uÿ½ÅÑÿáíöÿÝëôÿ«´ÃÿcbxÿXVmÿ·ÁÏÿâñùÿãñùÿåòúÿOLdÿPLdÿØæòÿáïûÿâðûÿæóûÿåòûÿäñûÿâðûÿâñúÿäñúÿæóúÿçóúÿPLdÿQNeÿãïøÿæòúÿçóûÿåñúÿäñûÿãñúÿÝëöÿÝëöÿßíùÿáïúÿ¨®¼ÿPLdÿPLdÿ»ÄÑÿãðúÿæóüÿæòûÿäñûÿåòûÿçòûÿçòûÿæòûÿ¨­½ÿURiÿPLdÿPLdÿ€’ÿ¸¼ÈÿØáéÿãîöÿçóûÿçóûÿäòúÿáðùÿßî÷ÿáðùÿáïøÿãðùÿâðùÿâïùÿãïùÿäïùÿæòùÿäñùÿãðøÿãñùÿæòùÿçóùÿåóùÿäñúÿáïøÿÞí÷ÿßî÷ÿáðúÿàðúÿßïúÿßîúÿáïúÿåòúÿãñúÿâðùÿäòúÿæóúÿäòùÿâðùÿáðùÿÝìùÿÛëøÿÚë÷ÿÜì÷ÿÙëöÿÕèöÿÑäôÿÎáñÿÁÒÝÿ¦±®ÿÄÁžÿÐÌ¡ÿÑ͘ÿÏÊŠÿÖÏ‘ÿÙÒ’ÿÙБÿÓÌŠÿÐÇ…ÿÓÌŒÿ×Ñ—ÿÛщÿÚÏzÿÛÏtÿÞÓ~ÿáÕÿÞÔÿÛÑ~ÿÚÐÿÔÊxÿÐÇzÿÏÆvÿŸ—KÿD=ÿ|‡„ÿ™­¼ÿŸ´Ãÿ©ÁÎÿ·ÐÝÿÃÝëÿÈãôÿÇãöÿÈæùÿÌéûÿÍèûÿÉæûÿÅäûÿÆåûÿk¼ßøÿ¼ßùÿ¼ßûÿ¿áûÿÍêûÿÎëûÿÊèûÿÂáøÿÂáùÿÇæúÿÈæúÿÂâûÿÆåúÿÉçúÿÊçúÿÈåúÿÄâøÿÁàöÿÁàôÿÂÞñÿÊàìÿÈÛçÿ¼ÒÞÿ®ÆÕÿ¢¹ÉÿÅÓÚÿ…’šÿ†’™ÿÇÓÙÿ£»Èÿ¦ÁÓÿ«ÈÞÿ´ÑèÿºØíÿ¿ÝòÿÁßõÿÅã÷ÿÉçùÿÉåùÿÅãùÿÃâùÿÃâøÿÅãøÿÓìøÿÖìøÿÔëùÿÐéùÿÍèùÿËèùÿÇçùÿÁäøÿÀâùÿÀâùÿÁãúÿÃåúÿÆæûÿÈæûÿÇäúÿÆäûÿÍéúÿÍéùÿÌçùÿÉåùÿÎéùÿÔîùÿÔîúÿÎêùÿÍéùÿÈå÷ÿÅã÷ÿÊçúÿÎèûÿÎèûÿÍçûÿÌçûÿÕíüÿÖíüÿÖíüÿÖîüÿØðüÿÛñüÿÜòýÿØïüÿÓìüÿÐêüÿÑéüÿÔíýÿÖíûÿ§¸Ñÿin”ÿ=8gÿ;4dÿSQ}ÿz¤ÿ›©Æÿ²ÅÛÿÅÙíÿÑçöÿÓèöÿÀÒãÿ¤²Èÿw{œÿv}žÿËæùÿÉæùÿËèûÿÎéûÿÑëûÿÔìûÿÖíûÿÖìúÿÓéùÿÐæøÿÏåøÿ ­ÆÿC>cÿD?cÿXVwÿÎâóÿÏäôÿÕé÷ÿØë÷ÿÛíøÿÜí÷ÿÙêöÿØêöÿÚì÷ÿÞîùÿÞîùÿÜíùÿÝïúÿÚëùÿJGdÿURnÿÙêøÿßî÷ÿâðøÿãñøÿßí÷ÿÝëöÿàîùÿâïùÿâðùÿàëöÿeezÿPLdÿPLdÿÔÞéÿãðúÿâïøÿâî÷ÿéóùÿëóùÿêôúÿèòùÿçòùÿæòùÿäñùÿâðùÿâðúÿÀÊ×ÿqr†ÿPLdÿPLdÿPLdÿ¢ÿåòûÿèôûÿéôûÿèóûÿçòûÿéôûÿ©®»ÿ†ˆ™ÿéôûÿéõüÿæòúÿäðùÿçóûÿéôüÿéôüÿèóüÿzzŽÿPLdÿPLdÿ^\sÿêôûÿëöûÿìõúÿëõúÿéóùÿæñøÿåñùÿæñúÿPLdÿPLdÿæòúÿåñûÿãïúÿäðûÿäñûÿãðùÿâðùÿâïøÿãïøÿž£²ÿOKcÿOKcÿOKcÿOKcÿOKcÿOKcÿvyÿÌÛçÿÞíøÿàïøÿáïøÿâðøÿOKcÿOKcÿÞì÷ÿÝë÷ÿÞìøÿâðùÿãñùÿãñúÿàîúÿßíøÿâñúÿåòúÿæòúÿPLdÿZXoÿáî÷ÿãðøÿåñùÿåðùÿâïøÿâðùÿßì÷ÿÞëöÿÜêöÿÙçóÿedyÿOLcÿOKcÿÒÝçÿàí÷ÿãðúÿäñúÿäñúÿäðúÿåñúÿçóûÿçòûÿåòûÿÒÝéÿ‘•¦ÿ^\rÿOLcÿOLcÿOLcÿOLcÿOLcÿOLcÿOLcÿOLcÿOLcÿYWnÿáïùÿâðùÿãðùÿäðùÿäðùÿäðúÿçòúÿçóûÿèôüÿçôýÿéõýÿë÷ýÿë÷ýÿèõýÿçôýÿãñûÿàïùÿâñûÿäòüÿäòüÿâñüÿáñüÿæóüÿåóûÿäòúÿãñúÿäóúÿæóúÿäòùÿáðùÿÝîøÿÚëøÿÚêøÿÛìøÿÜíøÿØê÷ÿÓçöÿÎâòÿËÞîÿÃÖäÿ°¼¹ÿ»Â²ÿº¿¥ÿ±²ˆÿ¼ƒÿÒË—ÿÑËšÿÎÉ™ÿÊÆ“ÿÅ¿„ÿ¾¹sÿÀ¹‚ÿÍÇÿÏÇ‚ÿÕÊ‚ÿØÏ†ÿØÏˆÿÖ͇ÿÓʆÿÏÆ…ÿÏLJÿš‘LÿTKÿfhWÿ“¥¯ÿ•«ºÿš±Âÿ©ÂÓÿ¸ÓáÿÁÜìÿÈâñÿÅàôÿÃáôÿÅâõÿÊå÷ÿÈåøÿÅãùÿÄãùÿk½Þøÿ¼Ý÷ÿ¹Ü÷ÿ¹Ü÷ÿÆæ÷ÿÌêùÿÌêúÿÄãøÿ¿ß÷ÿÃâúÿÆåûÿÆåûÿÇäûÿÈæúÿÊèûÿÊçûÿÅäúÿÁáøÿ¿ßôÿ¿ÜñÿÈàìÿÆÚçÿ»ÑÝÿ¯ÅÒÿ¥»ÈÿÇÓÚÿ†“šÿ„‘˜ÿÇÓÙÿ¥¼Èÿ©ÃÓÿ«ÇÜÿ±ÎæÿºÖíÿÁÞñÿ½ÜôÿÂáöÿÇäøÿÊçúÿÇæûÿÄäúÿÃãùÿÄâùÿÐèûÿÕëûÿÖíûÿÔìûÿÎëüÿËèüÿÉèüÿÇèüÿÄåûÿÂåûÿÂäûÿÄæýÿËéýÿÌéýÿÉæüÿÆäüÿËçüÿÐëûÿÑëúÿËæùÿËçøÿÑëøÿÔîøÿÑìøÿÒíùÿËçøÿÅãöÿÇã÷ÿÍèùÿÏéùÿÌæøÿÉã÷ÿÎæ÷ÿÓêøÿÕëøÿÒêøÿÓëøÿ×î÷ÿØì÷ÿÓé÷ÿÒéöÿÌåöÿÉâõÿÍå÷ÿÏèõÿÐçõÿËãõÿ¾Öìÿ›ªÇÿy£ÿ[[ƒÿ@;gÿ:5aÿ:5aÿ;6aÿ;6aÿ<5aÿ<7aÿ<7aÿGDlÿÆàòÿÄàóÿÆáöÿÈâöÿËäöÿÐç÷ÿÓé÷ÿÓê÷ÿÒè÷ÿÏå÷ÿËâõÿ¬¾ÕÿC>cÿIDhÿµÃÖÿÒç÷ÿÏäõÿÔé÷ÿØëøÿØëøÿßïùÿÜíøÿÙë÷ÿÚë÷ÿÞïúÿßïúÿÝîùÿÝîúÿÝíúÿ{~–ÿ˜ ´ÿÙêøÿÝí÷ÿäñúÿæóúÿãñúÿßíøÿßíøÿãïúÿæòûÿ–š¬ÿOLdÿPLdÿSOgÿåñúÿäñûÿãðúÿãðúÿéóûÿëôûÿëõûÿêôûÿèôûÿçòûÿæòûÿåòûÿâðùÿáïùÿàí÷ÿ©°¿ÿnn‚ÿecyÿÖàëÿãïùÿåðùÿçòùÿèòùÿæñùÿæñùÿêôúÿëõúÿêôúÿêôúÿæñùÿãï÷ÿåðùÿéôûÿéôûÿèóûÿ‰‹ÿXUlÿfdzÿ©­»ÿêôûÿêôûÿìöûÿìõúÿéòùÿèòùÿåñùÿäïøÿedyÿŸ£²ÿèóúÿåñúÿãïúÿäðûÿäñûÿåñûÿæóýÿäñûÿæóüÿèôýÿ¶¼Êÿa_uÿ[Xoÿrr†ÿˆ‹žÿ¼ÇÕÿàðûÿáñýÿâñýÿãòýÿæôþÿèõþÿ][rÿ•ÿåòþÿàïûÿÝìùÿãòþÿçõþÿèõþÿãñüÿàîúÿãòüÿåóüÿæóüÿ„†˜ÿ¢§¶ÿäòûÿåòûÿèôýÿéõýÿçôýÿæôýÿåóýÿãñüÿáïûÿ•š¬ÿPMeÿPMeÿSPhÿçòûÿãðúÿäðûÿæòüÿçòûÿäñûÿåòûÿçóüÿçóûÿæóüÿåòüÿäñûÿâïùÿÌÔßÿ©­»ÿ‰ŠœÿkkÿTQhÿPLdÿPMeÿPMeÿROgÿš ±ÿãñûÿåóýÿèôýÿèóüÿæòûÿåñûÿçóüÿéõüÿéõüÿçóüÿæóûÿéõûÿêöûÿèõûÿèôûÿãñúÿßîøÿàîùÿäòûÿåòûÿãñûÿáïûÿãñûÿæóüÿçôüÿåòüÿåóüÿæõûÿæôûÿãòûÿàðúÿÜíùÿØêøÿÚíùÿÜïùÿÜíùÿØëùÿÐæöÿÏãôÿÌàïÿÇÚèÿÁÓáÿ¸ÉÖÿ²ÂÎÿš¥œÿµµÿÿÕ«ÿÓÕ­ÿÍÍžÿ³³vÿ’˜iÿŽžžÿ¢§ˆÿÏΓÿÓÍÿÚÓ”ÿÛÔ˜ÿÙÒ—ÿÕÍŽÿÍdžÿ­«zÿ]Uÿsxeÿ˜ª·ÿž°½ÿ²Âÿ ·Ëÿ­ÇÚÿºÕçÿÀÜîÿÊåóÿÇâôÿÂàóÿÃàôÿÇãöÿÈäöÿÄã÷ÿÂàöÿ¿ßiöÿ¼Üôÿ¸Ùóÿ·Øóÿ¿ÞòÿÇäõÿËæôÿÃàóÿ¼Ûòÿ¼ÛóÿÀÝóÿÄàóÿ½ÛóÿÁßôÿÄáõÿÅáôÿÁÞòÿ»Úðÿ¸×íÿ·Óéÿ½Ôæÿ½Ñàÿ¸ÎÚÿ¯ÃÐÿ¡¸ÅÿÄÐØÿ…—ÿƒ˜ÿÅÓÙÿ¥¼Èÿ«ÄÔÿ®ÉÞÿ±Ïæÿº×íÿÃàóÿ¾ÝöÿÁà÷ÿÆäùÿÉçúÿÈçúÿÆåúÿÄäùÿÄãøÿÈâ÷ÿÑèùÿÖíùÿÔìùÿÌéùÿÄãöÿÆå÷ÿËèøÿÅä÷ÿÀáöÿ¿ÞöÿÁà÷ÿÈåùÿÊçùÿÉäùÿÅàøÿÅá÷ÿÐèùÿÔíùÿÏéøÿËä÷ÿÍç÷ÿÓìøÿÖíøÿÔìøÿÎèøÿÈãõÿÈãöÿÍæøÿÑêøÿÐèùÿÊä÷ÿËãõÿÒèøÿÒé÷ÿÏèöÿÐé÷ÿÕì÷ÿÕì÷ÿÒê÷ÿÕì÷ÿÐè÷ÿËä÷ÿÌå÷ÿÒêùÿÓëùÿÐèùÿÉä÷ÿËåúÿÌçúÿÎéûÿÏçúÿ¼Òèÿ©¹Òÿ™¥Áÿ‰’°ÿ{ ÿghŒÿPMuÿLIrÿÏêüÿËèüÿÊçüÿÍéýÿÐëýÿÕíþÿØïÿÿÚòÿÿÛñÿÿØïÿÿÓêþÿš¨ÃÿD?eÿ‹“®ÿÜñþÿÛðÿÿØîþÿÙïþÿÜñÿÿÝñþÿäõÿÿãóÿÿßñþÿßðýÿáòÿÿãôÿÿâôÿÿáòþÿàòþÿßðýÿÜíûÿÜíûÿÞîùÿåôýÿèöýÿæôüÿâðûÿáïûÿäñüÿæòûÿWUmÿOLdÿPLdÿXVmÿåñúÿäñúÿâïøÿáî÷ÿâìõÿçðøÿéóøÿèòøÿåñøÿâî÷ÿäðøÿæòùÿãðøÿàî÷ÿàí÷ÿáîøÿäïøÿäðøÿâíöÿßêôÿßêóÿäîõÿæðõÿåïöÿâìôÿäîõÿæñöÿéò÷ÿçñöÿäïöÿàêòÿàëóÿâíôÿäîôÿãíôÿáëôÿàêòÿåîõÿåïõÿãíôÿãîõÿåðõÿæñöÿäïöÿæðöÿäð÷ÿáìõÿãî÷ÿåñøÿæñøÿäðøÿàíöÿáîøÿáîøÿáïøÿâîøÿàí÷ÿßìõÿáíöÿãï÷ÿæñøÿçóùÿæòùÿãðùÿßîøÿÜë÷ÿÛë÷ÿÜë÷ÿÝìöÿßí÷ÿáïøÿãñùÿãðùÿáïùÿÞíùÿÛê÷ÿÝëøÿáïùÿãðøÿáîøÿÝëöÿÞìöÿàî÷ÿßíöÿåð÷ÿäïøÿàíöÿßìõÿâî÷ÿãï÷ÿâï÷ÿáî÷ÿàí÷ÿÝëõÿÜéõÿVSjÿNKbÿNKbÿWTkÿãïöÿßìõÿÞêõÿáí÷ÿãï÷ÿàì÷ÿáí÷ÿãïøÿäðøÿäðøÿãïøÿâïøÿáî÷ÿãî÷ÿéòúÿëõúÿéóùÿäð÷ÿÛçðÿÞéòÿâîõÿàìõÿâðùÿãðúÿãðúÿæñúÿæòúÿæñúÿãïùÿâîøÿèóúÿêôúÿçòúÿäðùÿåñùÿçóùÿèóùÿèôúÿäòúÿàí÷ÿàíøÿãðúÿåòúÿäòûÿàïúÿßîøÿäòûÿäóûÿâðúÿâñûÿåôûÿåôûÿâòüÿãóûÿÞðûÿÚìúÿÚíúÿÝïúÿÞðûÿÛîüÿÔéùÿÓéúÿÑç÷ÿÏåóÿÌàïÿÅÙèÿ¾Òßÿ½ÏÜÿ±ÁÇÿ®¹³ÿ®º±ÿŸ«¤ÿ›©­ÿŸ²¾ÿž´Ãÿ™­¹ÿ˜Ÿ“ÿ¹¾žÿÌÉ™ÿÏË™ÿÉÇ”ÿÇÅ–ÿ®³“ÿ—§³ÿˆ–šÿ–«¼ÿ¡¶Åÿ§¼Êÿ«ÂÒÿ®ÈÛÿ·Õèÿ¿ÜñÿÃáõÿÎéøÿÌæùÿÆäøÿÅã÷ÿÈåúÿÊçúÿÇæúÿÅåúÿkÂäúÿ¿áùÿ»ÞøÿºÜøÿÁáöÿÊèúÿÐìúÿËéúÿÄãúÿÁàùÿÆäúÿËéüÿÃãüÿÅäüÿÈæûÿÊçûÿÇæúÿÄâøÿÁáöÿÀÞôÿÀÙîÿÅÙëÿÁÖáÿ¶ÊÖÿ¥¼ÊÿÄÑÚÿ‡“šÿƒ—ÿÄÐØÿ£ºÆÿªÂÑÿ­ÈÛÿ±Îãÿ·Ôêÿ¾Úîÿ¼Úñÿ¿ÝóÿÂßõÿÂàõÿÂàõÿÂàõÿÃáöÿÃàöÿÃÞôÿËäõÿÓêöÿÔëöÿÍç÷ÿÇãöÿÈå÷ÿÏëøÿÊçùÿÆåùÿÅãùÿÆãûÿÊæüÿËèüÿÌçüÿÉåüÿÇáúÿÎèüÿÕîüÿÔíüÿÎéüÿÍèúÿÓíüÿÚñûÿ×ïûÿÔîûÿÏèúÿËåùÿÎçúÿÒëûÿÓìüÿÐéüÿÍæùÿÓëûÿÖîýÿÔîüÿÓìûÿÔíüÿÕïýÿÖïýÿÚòþÿ×ïþÿÓíþÿÐêýÿÒìþÿÕîþÿÔíþÿÏêýÿÌèýÿÎéüÿÐêüÿÐêüÿÏèûÿÐçúÿÑéúÿÓêûÿÚïüÿÜðüÿÛðüÿ×îûÿÑêûÿËçùÿÉäøÿÊä÷ÿÌçøÿÏèùÿÒêúÿÖíúÿ×íúÿÕìúÿÏåùÿXVzÿFAfÿÃÕêÿ×ìúÿÙîúÿ×ìúÿÖêúÿÖëúÿÙìúÿßïûÿÞðûÿÝïûÿÛíùÿÛìùÿÝîùÿÞïúÿÞîúÿÛìùÿÙëøÿØé÷ÿÙêøÿÝì÷ÿáïùÿåòúÿåòúÿâïúÿàîùÿãðúÿåñúÿ¥«¼ÿ`^uÿTQhÿ–›«ÿäñúÿäñúÿãðùÿãïøÿãî÷ÿæñøÿêôùÿëõúÿèóúÿåñùÿæòúÿéôúÿåñùÿäðùÿâî÷ÿâîøÿäðùÿäðøÿäïøÿãïøÿáìöÿæðøÿéóùÿéóùÿæñùÿåð÷ÿèóùÿëõùÿëõúÿêôúÿèòúÿåðùÿçòúÿéóúÿéóúÿèòúÿåï÷ÿèòùÿéóúÿèóúÿéôûÿêõüÿêõüÿêõüÿìöüÿëöýÿéõýÿçóüÿèôýÿêöýÿéôýÿåòûÿäñüÿäñûÿäñúÿäòûÿãðúÿâïùÿäðùÿåñúÿêõüÿêõüÿéôûÿçôûÿäòûÿßîùÿÞíùÿÞíùÿßïùÿáðúÿãñûÿåòûÿæóûÿäòûÿáïûÿÜêøÿÛê÷ÿáïûÿäòûÿåóûÿäòûÿáðúÿáðúÿãðúÿçóûÿçóûÿæòûÿäñúÿåñûÿæòûÿæòûÿåòûÿãðûÿáïúÿàîúÿ¤«»ÿa`vÿURjÿšž®ÿêöýÿèõþÿåòüÿæóüÿçòûÿäñûÿæòüÿæòüÿåòûÿæóüÿæóüÿæóüÿæòûÿåðùÿéóûÿí÷üÿî÷üÿëöýÿèôüÿéõýÿë÷ýÿéõýÿæóüÿåòûÿåòüÿèôýÿéôýÿéôýÿçóýÿäðûÿéôýÿëöýÿëöýÿçóüÿæòûÿéõýÿì÷üÿë÷ýÿéöýÿåòüÿãðûÿäòüÿæôýÿçôýÿåóþÿâðûÿæõþÿçöÿÿåõþÿåôþÿåõÿÿåöÿÿåõÿÿæ÷ÿÿäõÿÿàóÿÿÝðþÿÞòÿÿàóÿÿÞñÿÿÚïþÿ×îÿÿ×îþÿ×ìüÿÔêúÿÐåöÿÌáñÿÊÞíÿÈÜêÿÉÛæÿÅÖàÿ½ÎØÿ¶ÉÓÿ°ÄÒÿ«ÂÑÿ«ÂÓÿªÂÓÿ«ÁÍÿ©ººÿ«»ºÿ©¹¹ÿ§¸ºÿ£¶ÀÿŸ´Åÿœ³ÆÿµÉÿ¦¼Ñÿ®ÇÖÿ·ÎÞÿ¹Ôæÿ»Ùîÿ¿ßôÿÃá÷ÿÍéûÿÍéûÿËçûÿÇåúÿÈäûÿÊçûÿÉèûÿÇæûÿkÂãûÿ¿àúÿ¼Þùÿ»ÝùÿÂâøÿÉçúÿÏìûÿÎêûÿÇåûÿÄãúÿÇæûÿËçûÿÅäûÿÆåüÿÇåûÿÇåûÿÆäúÿÃâ÷ÿÂáöÿÁÞôÿ½ØîÿÂÙëÿÂ×ãÿºÎØÿ©¿ÌÿÇÓÛÿ‰”›ÿ„˜ÿÃÐØÿŸ¶ÅÿªÂÐÿ°ÊÛÿ´Ðäÿ·Ôéÿ¼ÙîÿÀÝðÿÀÞñÿÂÞõÿÂá÷ÿÃáøÿÄãøÿÄâøÿÄáøÿÄßöÿÈâõÿÏèøÿÔìøÿÑë÷ÿÊåöÿÉäöÿÌèöÿÌç÷ÿÈå÷ÿÄáöÿÃßõÿÄàöÿÇá÷ÿÇâõÿÆáôÿÁÜòÿÄÝóÿËãõÿÑçõÿÏæõÿÉâôÿËãôÿÒéõÿÒéõÿÒéõÿÏçõÿÉâõÿÈáõÿÍæøÿÑèøÿÑçøÿËäöÿÎæ÷ÿÑéøÿÒé÷ÿÏé÷ÿËæõÿÎçöÿÓë÷ÿÓì÷ÿÔì÷ÿÒéøÿÍæ÷ÿÉäöÿÌæ÷ÿÍæøÿÌåøÿÈåùÿËæúÿÏèúÿÏèúÿÍçøÿÍå÷ÿÏçøÿÑéúÿ×íûÿÛðüÿÜòýÿÛñýÿÖîýÿÏêüÿÌçúÿËæúÿÎéüÿÐéüÿÓìýÿÖîýÿÚñþÿÙðþÿ›¨ÂÿD?eÿrx—ÿÏçûÿÕíþÿÛñþÿÛðþÿÕìüÿ×íýÿÝñÿÿàòÿÿãôÿÿãôÿÿáòÿÿßñþÿâóÿÿâôÿÿãóÿÿáòÿÿàñþÿßðþÿßðþÿáñüÿäóýÿçõþÿé÷ÿÿçõþÿæôþÿæôþÿçôþÿèõþÿèõþÿèôþÿçôþÿçôþÿèõþÿçôýÿçóýÿæñûÿçòûÿëöýÿíøýÿì÷ýÿéõüÿéôüÿêöüÿêõüÿèôüÿæòûÿæñûÿçóýÿéôýÿéôýÿéôýÿæñûÿçñûÿëõýÿìõüÿëôûÿçòùÿéóûÿìöûÿìõûÿìöûÿëõüÿéóûÿçñúÿéóûÿêôûÿëõüÿçòúÿéôûÿëõüÿìõüÿéõûÿçóúÿéõüÿëöüÿë÷ýÿì÷ýÿëöýÿèôüÿåòûÿçôüÿèôýÿæóüÿäñüÿäòüÿæóüÿåòûÿãñúÿáïøÿãïøÿäðùÿèôûÿéôûÿèôúÿèôûÿåòûÿáðúÿÝì÷ÿÝìøÿàïúÿßîùÿáðúÿãñúÿäòúÿãòúÿáðûÿÝìøÿÜìøÿÝìùÿáðüÿäóûÿäòûÿàïúÿßîùÿäòûÿåòûÿçóûÿèôüÿæóüÿäñûÿæóüÿäòúÿäñúÿãðúÿáïùÿàîùÿáîúÿäñúÿæòûÿèôüÿêöýÿéõýÿçôýÿæóüÿæóüÿçóüÿçóüÿåòûÿåòûÿåòûÿæóüÿçôýÿçóýÿæñûÿçòúÿëõüÿí÷üÿìöüÿéõüÿéõüÿë÷ýÿêõüÿèôüÿæòûÿæñûÿæòûÿçòûÿçòûÿçòûÿâîøÿãîùÿçòúÿéóúÿèóûÿåñùÿçòûÿëöüÿêõüÿêöüÿçôüÿãðúÿáîùÿãñûÿåñûÿåñûÿáðúÿâñûÿäòüÿåóüÿáòûÿÞðúÿàðûÿãóüÿâôüÿâóüÿàñüÿÜîûÿÙîûÿÚïüÿÛïýÿÙîýÿÔëüÿÕìüÿØíüÿÖìüÿÒéùÿÏåöÿÏåôÿÎäóÿÒæòÿÏáíÿËÞèÿÅÙãÿ¾Ôâÿ¸Ñâÿ¶Ðâÿ¶Ðäÿ¹Ôçÿ·ÑäÿµÍßÿ³ËÚÿ²ÉÕÿ¯ÆÔÿ«ÄÖÿ¨ÃÖÿ©ÅÚÿ­Êàÿ¶ÓéÿÁÞïÿÂàóÿ¿áùÿÁãûÿÉèþÿÍêÿÿÒíÿÿÐíÿÿÌêÿÿÉçþÿËéÿÿËëÿÿÊêÿÿkÆçÿÿÄæþÿÁäþÿÀãþÿÇèýÿÊêþÿÏíÿÿÑîÿÿÎìÿÿËêÿÿÊéÿÿËêÿÿÍëÿÿÌëÿÿÊèÿÿÉèÿÿÇæýÿÆåûÿÄãùÿÂßöÿ½Øïÿ½Öéÿ½Óáÿ¶ËÖÿ©¿ÊÿÈÔÛÿ‰”›ÿ†’šÿÄÑÚÿ¢¸Éÿ­ÆÕÿ¸Ñàÿ»Öéÿ»ÙïÿÀÝóÿÈæöÿÈåøÿÆäúÿÅãûÿÄâûÿÅãûÿÆäûÿÇäûÿÅâùÿÅâøÿÊåúÿÑìûÿÓîûÿÏêúÿÌèúÿÍéûÿÑìûÿÍéúÿÈäùÿÅâøÿÅâùÿÈäùÿÊæùÿÌæùÿÈãùÿÄÞøÿÊäùÿÕíüÿÖîûÿÎèúÿÎçùÿÔëúÿÕìúÿ×îùÿÓë÷ÿËäöÿÇáõÿËäöÿÐè÷ÿÑé÷ÿÌåöÿÌåõÿÏæ÷ÿÓê÷ÿÏè÷ÿÈâóÿÌåõÿÓë÷ÿÑêöÿÔìõÿÑéôÿËãôÿÃßñÿÆàòÿÉãóÿÉãôÿÄàôÿÇáôÿÊãôÿËäõÿËãõÿËâõÿËãôÿÌäôÿÐæõÿÔèõÿÖëõÿÕéôÿÐæôÿËãôÿÆßñÿÃÝïÿÆàñÿÆßñÿÉâòÿÍäóÿÑçôÿÊßíÿNLpÿB=bÿ«¼ÓÿÆßòÿËâôÿÓéöÿÔé÷ÿÎåõÿÏåõÿ×ê÷ÿØê÷ÿÜíøÿÝí÷ÿÛëøÿÙê÷ÿÝîúÿÞðûÿÞðûÿßïûÿÞïûÿÝîûÿÝîûÿàïúÿáïúÿâðúÿãñùÿäñùÿãðùÿàîøÿáîøÿåòùÿäñùÿãðùÿãïùÿãïúÿäñûÿåòüÿåñûÿãïùÿãïøÿæñúÿéóúÿêôúÿéôûÿçóûÿçóúÿèóúÿçóúÿæñúÿäðùÿåñûÿæòûÿçòûÿçòúÿåðùÿáëöÿãî÷ÿèòøÿèòøÿåï÷ÿäîöÿèñøÿçñ÷ÿêóøÿéòøÿäïöÿâìõÿãíõÿçð÷ÿçð÷ÿäïöÿäïöÿçòùÿéóùÿçòùÿâíõÿåðøÿèòøÿæòøÿèóøÿçòøÿäïøÿßìõÿáíöÿãðøÿäñúÿàïùÿáïøÿãðùÿäðùÿãðùÿáïøÿâïøÿãïøÿåñùÿçòùÿéôúÿéôûÿçóûÿãñûÿßîøÿÞíøÿàïúÿàïúÿáðúÿãòûÿåóûÿåóûÿáðúÿÞîùÿÞîúÿÛëøÿßîúÿåôýÿåôýÿàïûÿàïûÿåóüÿäòûÿçóûÿèôûÿåòûÿáïøÿäðùÿäñúÿäñúÿâðùÿâðùÿáïùÿáïùÿãñúÿäñúÿæòûÿçôûÿèôûÿçóûÿåòûÿäñúÿçóúÿåñùÿäðùÿãïùÿâïùÿãðúÿäðúÿäðúÿâî÷ÿâî÷ÿäïøÿèóúÿêôúÿéôûÿèóûÿçóúÿéóúÿçóúÿæòûÿäðùÿäðúÿæñúÿçòûÿèôüÿçóýÿâíùÿäðúÿëöýÿì÷þÿèôýÿçóüÿëöþÿë÷þÿìøþÿë÷þÿæóýÿâðûÿãðûÿæóüÿæóüÿâñûÿáðúÿäòüÿçõýÿãóýÿÝîúÿßñüÿåöþÿãõþÿå÷þÿäõþÿÞðýÿ×ìúÿØíûÿÚïüÿÙïýÿÔìýÿÖíýÿÙïþÿØïþÿ×íýÿÔêûÿÔêúÿÔêúÿÖëúÿÕéõÿÓèòÿÑåðÿÌãðÿÄÞïÿÁÛîÿ¿ÛîÿÁÝñÿ¾Ûïÿ½Ùìÿ½Øèÿ½Öåÿ¼Õãÿ·Òäÿ´Ñæÿ´Òêÿ³ÓìÿºÚòÿÆå÷ÿÇçúÿÀâûÿÀãüÿËêÿÿËéÿÿÒíÿÿÒîÿÿÌêÿÿÉçþÿËéÿÿËëÿÿÊëÿÿkÈéÿÿÆèÿÿÄæÿÿÃæÿÿÇçýÿÉèýÿÌêþÿÏíþÿÑîÿÿÎìÿÿÉèþÿÉèþÿÑïÿÿÎìÿÿÊéÿÿÈçÿÿÆåþÿÅäüÿÄãúÿÃà÷ÿ¼Ùðÿ¸Ôéÿ·Ïâÿ´ËØÿ«ÁÌÿÉÕÛÿ‰”›ÿ…‘šÿÃÐÙÿ ¸Èÿ¬ÄÔÿ¶Ðßÿ»Öçÿ¼Úíÿ¾ÜóÿÆä÷ÿÌêúÿÌêüÿÇæýÿÄäýÿÇæýÿÈçýÿÆåýÿÉçýÿÆäüÿÈåüÿÏëýÿÕðýÿÖðýÿÐìþÿÊèüÿÓïþÿÓïýÿÎêýÿÇäûÿÇãüÿÌçýÿÌçýÿÈåýÿÎèþÿÉäýÿÊæýÿÔîÿÿÚóÿÿ×ðÿÿÒìþÿÑëýÿ×ðÿÿÙòÿÿÙòÿÿÕïÿÿÐëþÿÍèüÿÑëþÿÕíýÿÐéüÿÐêüÿÑìýÿÓíüÿÔîýÿÑìüÿÐëûÿÏêûÿÒìûÿÔíûÿÖïûÿÕîúÿÍéùÿÆãöÿÊæøÿÔîúÿËçúÿÄâùÿÈãúÿÒëûÿÖíûÿÎçúÿÍåùÿÒéûÿÐçøÿÔêùÿÙîúÿÛðúÿÙïúÿÓëúÿÊãöÿÃßóÿÊä÷ÿËæøÿÌæùÿÍçùÿÓêùÿ‰¤ÿB=cÿ_`ÿÉâõÿÊãöÿÌå÷ÿÒéúÿÕìùÿ×ìúÿÔêúÿÐæøÿÚìûÿÞîûÿàðûÿàðûÿÝîúÿÛíùÿÚíùÿÜíùÿÛìøÿÛìøÿÛìøÿÛì÷ÿÜëöÿÝëöÿàîøÿâïøÿãðøÿâï÷ÿáî÷ÿàí÷ÿâï÷ÿãð÷ÿäð÷ÿáî÷ÿàí÷ÿáî÷ÿáî÷ÿáîøÿãïøÿáí÷ÿâî÷ÿåðøÿèòøÿèóøÿåðøÿâîöÿæòøÿçòùÿäðøÿáî÷ÿâîøÿåðùÿåðùÿäïùÿåðùÿâí÷ÿâî÷ÿèóúÿëöûÿìöüÿêôüÿêôüÿí÷þÿîøþÿîøþÿì÷þÿêõýÿèóüÿëöþÿì÷þÿëöþÿëöþÿìøÿÿíøÿÿíøÿÿìøÿÿë÷ÿÿêöþÿìøÿÿíøÿÿíùÿÿíùÿÿéöþÿäñûÿåóüÿë÷þÿæôþÿâñýÿäòþÿê÷ÿÿë÷þÿåòüÿäðûÿçóüÿåòûÿèóüÿéõûÿêõûÿéöüÿåóüÿßíøÿÚéõÿßîúÿàðûÿàðûÿáðûÿäòûÿåôûÿäòûÿáñûÿÛëøÿÛìøÿÜìøÿáðûÿãòûÿãòûÿáðûÿÞíùÿäðûÿæòûÿèôüÿèôüÿæóüÿåòüÿäòüÿåóüÿåòüÿåòüÿåôýÿåôýÿåóüÿæóüÿçóüÿèôüÿéõüÿéõýÿèôýÿçôþÿêöþÿë÷þÿêöþÿçôþÿæóþÿçôþÿèõþÿæóýÿçôýÿåñûÿæòûÿéôüÿëöüÿëöüÿéôüÿåñúÿêõüÿêõüÿçóûÿãðùÿäðúÿçòûÿæñûÿãïúÿåðúÿàì÷ÿàí÷ÿæñùÿèóùÿåñøÿâî÷ÿâî÷ÿäñøÿåñøÿåñøÿâðøÿßí÷ÿÝëöÿàîùÿâðùÿßîøÿÞíøÿÞîøÿßïøÿÞïøÿÝíøÿÛíøÿÚìøÿÜîøÿÝîøÿßðùÿßñúÿØìùÿÑçöÿÔêøÿÛðúÿÔêúÿÌæøÿÏçúÿ×íúÿÚîúÿÓéúÿÑçùÿÕëüÿÒéúÿÖëúÿÙîùÿÙí÷ÿÖíøÿÏè÷ÿÅáôÿ¾ÝóÿÄâøÿÄâ÷ÿÃá÷ÿÁßôÿÅâóÿÇäòÿÃàñÿ¿Þòÿ¸Ùóÿ¹ÚóÿºÞõÿÁãúÿÇèûÿÈéýÿÂåýÿ½àûÿÉæýÿÎéþÿÐìýÿÏêýÿÊçýÿÇæýÿÆæýÿÇçýÿkÆçþÿÆçþÿÅçýÿÅçýÿÆæüÿÇæüÿÊéýÿÍëýÿÏìýÿÍëýÿÊèüÿÇåüÿËéüÿÏìüÿÎìþÿÈçþÿÄäýÿÅäûÿÃâøÿ¿Ýõÿ½Úðÿ¶Òéÿ±Ëàÿ®ÆÖÿ©¿ÊÿÊÕÛÿ‰”›ÿ…‘šÿÃÐÚÿŸ·Èÿ«ÅÔÿ¶Ðßÿ¼×éÿ½ÛïÿÀÝôÿÆäøÿÌéùÿÎëûÿÉèýÿÅäýÿÆåýÿÇæýÿÆäýÿÈæýÿÆæþÿÆæþÿÌéÿÿÒîýÿÕïýÿÏìýÿÈæûÿÏìýÿÑìýÿÎéüÿÇäûÿÅâúÿÆãúÿÈäúÿÇâúÿÉäúÿÆáúÿÆáùÿËæúÿÒëûÿÐìûÿÐêûÿÍéûÿÓìúÿÒìùÿÓëùÿÎèøÿËå÷ÿÈäöÿÌåøÿÍçøÿÈã÷ÿÊåøÿËæøÿÍèøÿÎèøÿÍçùÿÍæùÿËåøÿÍçùÿÐéùÿÓìùÿÓìøÿÍçøÿÆáôÿÆâôÿÍèøÿÈåùÿÃâ÷ÿÆâ÷ÿÍçøÿÐéøÿÏçùÿÎæùÿÑèúÿÑèúÿÕëûÿØîûÿÜòüÿÜòüÿ×îüÿÎèøÿÉã÷ÿÊåùÿÌçûÿÎéüÿÏèûÿ´ÆÜÿD?fÿC>eÿ¢±ÈÿÏèûÿÍçùÿÎçúÿÓëüÿ×îüÿÙîüÿ×íüÿÔêúÿÚìûÿÝîüÿßðüÿßðüÿÞïüÿÜíûÿÝïüÿÞïüÿßðýÿàñýÿàñýÿàñýÿáñüÿãòþÿäòýÿæôýÿçõýÿçôýÿæôýÿåòýÿèõþÿêöþÿéõýÿçôýÿæòýÿæóýÿæóýÿæòýÿæóýÿæóýÿåòüÿçóüÿêõüÿëöüÿéõüÿåñúÿéõüÿêõüÿêõýÿçóýÿåñüÿçóýÿèóýÿçóýÿèóüÿæñüÿåñûÿèóüÿëõüÿêöüÿëöýÿêõýÿíöýÿíøþÿîøþÿì÷þÿëöþÿéõýÿëöþÿëöýÿèóüÿéôýÿéõýÿéôüÿéôüÿèôüÿçóûÿæòûÿçóûÿèôûÿéõûÿèôúÿåñùÿáî÷ÿáïøÿæôüÿãòüÿàïúÿáïúÿäòûÿæóûÿäñúÿâïùÿåñûÿäðúÿæòûÿçóúÿéõûÿêöüÿçôüÿàïøÿÛêõÿÜë÷ÿÞíùÿßîúÿßîúÿáðúÿãñùÿâñùÿáðúÿÛë÷ÿÚêöÿÛê÷ÿÞîùÿáñúÿâñúÿáðûÿÞíùÿãïúÿåñûÿæòûÿæòûÿåñûÿãðúÿäòüÿåòüÿåòüÿåòüÿäóüÿäóüÿåòûÿçóýÿèôýÿéõýÿêöýÿéöýÿèôýÿçôþÿéõþÿë÷þÿêöýÿçôýÿåñüÿåòüÿæóýÿæòýÿæóýÿæóýÿåòüÿèôýÿëöýÿì÷ýÿêöýÿæòûÿêöýÿëöýÿêõýÿèôþÿåñüÿçóýÿèôþÿçóþÿèôþÿæóþÿåòýÿèôþÿëöþÿêøÿÿêöÿÿèöÿÿë÷ÿÿêøÿÿë÷ÿÿèöÿÿæõÿÿãòýÿäòýÿäóýÿàðüÿáñýÿáñüÿáñüÿáñüÿßðüÿÝïûÿÜîûÿÝðüÿÞñüÿàóüÿàòûÿÚîúÿÔé÷ÿÓêøÿ×íúÿÒêúÿÌæøÿÎåøÿÓêùÿÖëùÿÒèøÿÏå÷ÿÑæ÷ÿÐå÷ÿÓéøÿÔê÷ÿÖìöÿÕëöÿÐèöÿÆâóÿ¿Üñÿ¾ÝóÿÁßõÿÁßõÿÀÞôÿÂßñÿÅáðÿÄâñÿÀßòÿ¸Ùñÿ¶Øòÿ¸Ùôÿ½ÞöÿÂã÷ÿÃâöÿÀá÷ÿºÝõÿÂÞõÿÇâøÿÉæøÿÈåøÿÅâøÿÂàøÿÂáùÿÃãúÿkÃãúÿÃãúÿÂäúÿÂäúÿÄäùÿÅäúÿÇåúÿÊçúÿÌêúÿËéúÿÉçûÿÆäûÿÉçûÿÍêûÿÎêûÿÈæûÿÃáúÿÁàøÿÀßõÿ¼Ùòÿ¹Öíÿ²Ðæÿ«ÇÜÿ©ÂÔÿ¦½ÉÿÉÔÚÿˆ“šÿ…‘šÿÄÐÚÿž·Éÿ«ÄÔÿ´Ïßÿ»Öçÿ¼Ùíÿ¿ÜñÿÀßôÿÈåöÿÌèøÿÉæùÿÄâúÿÂâúÿÂáúÿ¿àûÿÁâúÿÀâúÿ¿àúÿÀáùÿÊçúÿÒîúÿÏêúÿÆäùÿÉåúÿÍéûÿÏêûÿÊåúÿÂàúÿÂàúÿÅâúÿÆäûÿÇäûÿÆäûÿÆâûÿÅãûÿËåûÿÎëüÿÑìýÿÎëþÿÒîþÿÒíüÿÓîüÿÑíûÿÎéûÿÊçûÿËçûÿÏéûÿËæûÿÍçüÿÍéüÿÎéüÿÏêüÿÏéüÿÏéüÿÍèûÿÌèüÿÎêüÿÒíüÿÓîüÿÑíüÿÍèûÿÉæùÿÈæúÿËéüÿÉèüÿÉæûÿËæûÿÏéúÿÑéùÿÐèùÿÍæøÿÐçùÿÓéúÿÕëúÿÙîúÿÚñúÿÙïúÿÓêùÿÍå÷ÿÅàöÿÇâ÷ÿÊäøÿÆÞóÿWUyÿA=cÿSQuÿÒé÷ÿÏèùÿÌå÷ÿÉãöÿÌå÷ÿÓëúÿ×ìúÿÕìúÿÔêúÿÖéùÿÚêúÿÛìùÿÚëøÿÙêøÿØé÷ÿ×éöÿÙê÷ÿÚê÷ÿÚë÷ÿÙëöÿÚëöÿÛëöÿÝë÷ÿÞì÷ÿàî÷ÿâðøÿãðùÿâðùÿáîøÿáîøÿåñùÿåñøÿåñùÿâïùÿâîùÿâîùÿàíùÿáïùÿáïùÿàîùÿáîøÿæòúÿêõûÿéôûÿäðùÿåðùÿèóûÿéôûÿçòûÿãïúÿãïúÿäðúÿäñúÿåñûÿåñûÿæñüÿæòüÿèóüÿêöýÿëöýÿéõýÿëöýÿëöýÿíøþÿì÷þÿêõýÿéôýÿéôýÿêõýÿçòûÿèóüÿèóüÿèóüÿèôüÿçòûÿæòûÿåñúÿåòûÿåñúÿçóúÿçôúÿæóúÿãðùÿàî÷ÿàîøÿâñúÿáðúÿáðúÿãðûÿåòûÿæòûÿæòûÿãðúÿåòûÿæòûÿçóûÿéôûÿéöûÿéõüÿåòûÿáïùÿÜëøÿÞîúÿàïûÿáðüÿâñüÿäòûÿäóûÿãòúÿàïúÿÜë÷ÿÚê÷ÿÝíùÿâñüÿäóüÿãòüÿâðüÿãðüÿæòýÿçôýÿèôþÿçóþÿæòýÿæóþÿæôþÿçôþÿçôþÿæõþÿæôýÿæóýÿçóýÿçôýÿéõýÿéõýÿéõýÿèôýÿæóüÿçôýÿéõüÿéõüÿèôüÿåòüÿåñüÿåñüÿãðüÿäòüÿäòýÿäòýÿäòüÿêöþÿì÷ýÿì÷þÿçóüÿéôýÿëöþÿì÷þÿêõþÿæòýÿåñýÿåòüÿåòüÿåñüÿåñüÿäðüÿãñüÿåñüÿæôüÿæóüÿäòüÿæôüÿåóûÿæôûÿåóûÿâñûÿáðûÿàïúÿàîùÿÝìøÿÝíùÿÝíùÿÝíùÿÜíùÿÝîúÿÜíúÿÛìùÿÙìúÿÚíúÿÜïúÿÜïùÿÙîùÿÕêøÿÐèöÿÐè÷ÿÓëúÿÐêúÿÏéúÿÑéúÿÔëúÿÖìúÿÔéúÿÑèùÿÔéûÿÕëüÿ×íüÿÚðüÿÚòüÿØðüÿÑëûÿÊåùÿÀßøÿÃâúÿÄäûÿÅãûÿÆåúÿÊéúÿÊêúÿÊéûÿÃäûÿ¾áùÿ»Þúÿ¾áûÿÅçþÿÉêþÿÇéÿÿÄæÿÿÇäþÿÊæÿÿÌéÿÿÌèÿÿÈæÿÿÇåþÿÆæÿÿÆèÿÿkÇèÿÿÇèÿÿÅèþÿÅèþÿÇçþÿÈçþÿÉèþÿÍëþÿÎìýÿÎìþÿÊéýÿÈçüÿÈçýÿÎìýÿÐíüÿÌêüÿÅãûÿÀàùÿ¿Ý÷ÿºÚõÿ¹×ïÿ³Ñéÿ¬Êâÿ¥ÁÖÿ¤¼ÌÿÊÖÛÿŠ•›ÿ…™ÿÃÐÙÿ¶Çÿ¨ÂÓÿ±ÌÜÿ¸Óåÿ¼Øëÿ¿Üñÿ½ÝòÿÅâõÿÊçöÿÌèùÿÅãùÿÀßùÿ¾Þùÿ½Þùÿ¼ßùÿ¾âùÿ¼áúÿ¼ÞùÿÃäúÿÐìûÿÐìûÿÈæúÿÅâùÿÌèûÿÐêûÿÌèûÿÃáûÿ¿ßúÿÂáûÿÆäûÿÅãûÿÈæüÿÇäüÿÀàûÿÃáûÿËéüÿÎëüÿÉèûÿËçúÿÌéùÿÐëúÿÎìúÿÍêûÿÊçúÿÊæúÿÊæúÿÉæùÿÊãøÿËåøÿÌçùÿÌæùÿÍçúÿÍçúÿÍçúÿÇäùÿÉæùÿËèúÿÐëúÿÐëùÿÍéùÿÇä÷ÿÁßöÿÉæùÿÈçùÿÇåúÿÅãøÿËåúÿÒêúÿÓéúÿÌäøÿÐçùÿÑçùÿÑèøÿÖëøÿÚïøÿÙïøÿÕìøÿÐç÷ÿÃÞóÿÅàõÿÇáöÿxžÿA12"ì ÙÙ?B*îPT6ÿNS6âþÝÚAD,Ù‚‰Uþ¥¬kþmsHÿNR5ÁÝÝ9<&¹tzKþ»ÆxþÔÝ…þ®·nþ_d=þAD,•áá#-0‰bh=ý°¹nþÓß…þßéˆþÒÜþ¡©dþV[7ý/1cåå+XX[3ú¦­bþÐÚ|þÙãþÞèƒþÞç‚þÎÖzþ’™WþSW2ø5éé3 -PS-ôœ¢XþÎÖvþÙã|þØâ}þÛå€þàè€þÞæ~þÅÍqþƒ‰LþUX1ï ííÿ9 KN)莓LþÌÒnþÝåyþÛäyþØâyþÙãyþàè{þâê|þÛãyþ½Åiþw|AþY]3Üñí;GI&Ñ~‚@þÆÌeþßæsþáèuþÞåuþÛãtþÚâtþÞåvþáèwþâéwþÙàsþµ»_þim8ÿUW/ºññC>@!ªmq5þ¹¿\þÝãlþäêoþãêpþßæpþÝånþÛãoþÛãoþÞærþãêrþàçqþÔÛlþ©®Vþ_a0þFH&ŒõõKqr]ÛÛÓÿêëÚÿö÷àÿùúáÿúûáÿúûáÿùúáÿøúáÿøùáÿøùáÿøùáÿùúâÿùúâÿøùáÿóõßÿæçØÿààÒþNO8^ùõK‡‰mš ¡‚² ¡‚² ¡‚² ¡‚²¡¡‚±¡¡‚± ¡‚±Ÿ °žŸ°žŸ°žŸ°ž ‚°Ÿ ‚°žŸ‚¯Ÿ‚¯ž‚¯žŸ‚¯ttY…ù¡¡õÿ;IÚ45í55í55í55í56í78î88î88î89í*+ò+,ò,,ò,-ò,-ò--ò--ò**óPP#ÉùõÿbI$îvw)þ}~,þ|},þ}~,þ}~-þ~-þ-þ€.þ‚ƒ/þ…‡0þ†ˆ1þ†ˆ1þ‡‰3þ‰Š3þ‰‹3þ‰Š4þzz.þ{{2àùõK©¨cíÕÕ{þÛÜ}þÚÛ}þÚÛ}þÛÛ}þÛÜ}þÝÝ~þÞÞ~þßß~þÞàþÞßþÞ߀þÞ߀þßàþàáþßàþÑÑ|þ¦¥VàùõKïîÉöýýíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿüüíÿûûíþûûíþûûíþÓÓ–äù¡¡¡þ”€ Eœ@¹âê(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/eject-pushed.tiffHHCynthiune-1.0.0/Images/lock.tiff000644 001751 000024 00000002236 11733546670 017165 0ustar00multixstaff000000 000000 II*\¡¡¡Úþ?þ`þeþOþÝÞ#þþZþ0þ)þEþ€þIáâþzþ"îþgþ<åâVþ3æ þqþéâkþâJþ(éæ þ`Þ7þ4éæ þ_Þ8þ1éæþ\Þ7þ/éîþ‘þqþRþyþ‡þˆþˆþˆþˆþˆþƒþ_þbþŠþ;ñîþNþ3þ-þ5þ8þ8þ8þ8þ8þ8þ7þ0þ0þDþ)ñîþ>þ%þ$þ$þ$þ%þ%þ%þ%þ%þ$þ$þ$þ2þ%ñîþ=þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ2þ%ñîþ=þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ2þ%ñîþ=þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ2þ%ñîþ=þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ2þ%ñîþ=þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ$þ2þ%ñîþ>þ&þ%þ%þ%þ%þ%þ%þ%þ%þ%þ%þ%þ3þ%ñî þ)þþþþþþþþþþþþþ#þñ¡¡¡þ:€ 5Bx@TŽ–(R/home/wolfgang/programmes/Cynthiune/Images/lock.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/lookup-mb-off.tiff000644 001751 000024 00000004636 11733546670 020720 0ustar00multixstaff000000 000000 II*n™™âþþ2þ Vþ Uþþþ Qþ Sþ Dþþåêþþ??@öþ}ÿþ£ÿþŽÿSSTþAA?ôþ–ÿþ¥ÿþšÿTTQüþ#¿þþíîþþ3ëþnÿþ´ÿþ¼ÿþ–ÿþœÿþhÿþwÿþ–ÿþ¥ÿþ°ÿþ¿ÿþ–ÿþ>ûþBþñòþ þ.âþqÿþÉÿþ®ÿþ¦ÿþƒÿþÄÿþ{ÿþÿþ¿ÿþ¢ÿþ˜ÿþÃÿþ´ÿþ–ÿ??>ùþ*þõöþþ"ÁþmÿþÈÿþrÿþ‹ÿþÖÿþÔÿþ˜ÿþƒÿþ¥ÿþ˜ÿþÂÿþÈÿþºÿþcÿþ½ÿþ˜ÿþ4íþþùúþþ _þ‰ÿþ×ÿþ{ÿþÄÿþ…ÿþ¿ÿþ·ÿþ©ÿþ”ÿþÿþºÿþ¢ÿþÃÿþƒÿþÆÿþrÿþÈÿþ¼ÿþ±þ þýúþþ$ÌþŸÿþÆÿþ~ÿþËÿþ¼ÿþÐÿþÖÿþ~ÿþÖÿþÌÿþŒÿþÇÿþÅÿþ»ÿþÇÿþ}ÿþÅÿþºÿþ8óþþýúþ99;êþ{ÿþÏÿþ{ÿþ~ÿþ£ÿþŒÿþÐÿþ”ÿþÆÿþÌÿþ‰ÿþÈÿþ ÿþ«ÿþœÿþgÿþÈÿþzÿxxpþþ$þ þþþ þ'ZZ^òþÃÿþäÿþŒÿþ×ÿþŠÿþ×ÿþ×ÿþxÿþçÿþØÿþqÿþÙÿþÛÿþ¾ÿþØÿþÉÿþ½ÿþœÿŸŸ›ÿþ2þþþþ þ/??Aêùÿþ¶ÿþ×ÿþ€ÿþºÿþzÿþêüÿþðÿþ´ÿþþìÿþãÿ††}ýþ;þþþþþ2þ'àùÿþÛÿþÃÿþÿþÂÿþÏÿþüüÿþûÿþ¨üÿþìÿþvÿþÄÿþŠÿþíüÿÿLGûþ>þþþþ þ1þ'àýÿþøÿþûÿþVÿþÑÿþtÿþvüÿþúÿþûÿþ¥ÿþþÿþÈÿþ¿ÿþkÿþ’ÿþ½üÿÿŸ‘üþ>þþþþ þ.þÍýÿþÑüÿþØÿþÄÿþÍÿþãÿþûÿþõÿþúÿþÃÿþþÿþìÿþ¿ÿþÂÿþÃÿþßüÿÿMDóþ<þþþþ þ*þ ‡ýÿþêÿþúÿþëÿþ³ÿþ¨ÿþøÿþèÿþõÿþûÿþÁÿþþÿþþÿþýÿþýÿþþüÿþÖÿþÉþ8þþþþþ$þZþþÿþ”éþ§ïþõýþÛþ/àþþÿþ-áþÞùþéûþÛþýÿþãúþªïþ¨ïþ¨ðþÛ÷þþÿþe©þ2þþúþþLþþÿþyÏþ±þþÿþ<¼þŸßþêùþ«þÐðþÞõþ­þúþþ¤ãþ§þ¢þ¤þ£þåõþÞëþ*þ þúþþ>þþÿþy¾þ„þàòþµÜþëöþÒþ…þÐêþßñþŠþûþþ¤Öþwþmþpþzþßïþâíþ&þ þúþþ6þþÿþz®þaþ‰»þøüþþÿþ!{þaþÑåþàîþnþúýþ»×þAzþBnþCrþ–ºþþÿþ•·þ&þ þúþþ2þþÿþz¥þJþeþþÿþéóþSþJþÐáþßìþ_þúýñÿþûýþ·ÑþIþ$þ þúþþ.þHþCþ:þJþbþ_þEþ:þHþRþVþbþaþNþBþEþPþSþ=þþþúþ þ"þ4þ/þ&þ3þIþFþ/þ'þ3þ<þAþOþWþRþNþMþKþ@þ'þþýúþþþþþþþ#þ"þþþþþ!þ*þ2þ4þ2þ1þ+þ þþþýöþþþþþþ þ þþþþþ þ þþþþþ þ þþùîþöþöþþþþþþþþþñþ@ € FH @eŽ – (R/home/wolfgang/programmes/gnustep/Cynthiune/Images/lookup-mb-off.tiffHHCynthiune-1.0.0/Images/lookup-mb-on.tiff000644 001751 000024 00000004702 11733546672 020556 0ustar00multixstaff000000 000000 II*’™™âþþ2þ Vþ Uþþþ Qþ SþDþþåêþþ(ö--OÿSS†ÿ==gÿþ ô——!ÿ®®0ÿ%ÿ,, üþ¿þþíîþþ 0ë 8ÿffžÿppªÿEEsÿLL}ÿ0ÿbb ÿ——!ÿ®®0ÿ½½=ÿÐÐRÿ——!ÿþûþBþñòþ þ<â##>ÿ½ÿ__–ÿVVŠÿ33Wÿ{{¶ÿ++KÿˆˆÿÐÐRÿ©©-ÿ››#ÿÔÔXÿÂÂBÿ——!ÿ ùþ*þõöþþDÁ7ÿ»ÿ$$?ÿ;;dÿ””Ïÿ’’ÍÿHHwÿ33Wÿ®®0ÿ››#ÿÓÓWÿÚÚbÿÉÉKÿ88ÿÍÍOÿ››#ÿ íþþùúþþ H_::cÿ––Ðÿ,,Mÿ{{¶ÿ55Zÿtt¯ÿjj£ÿZZÿDDqÿ‹‹ÿÉÉKÿ©©-ÿÔÔXÿwwÿØØ^ÿYY ÿÚÚbÿÌÌNÿþ±þ þýúþþLÌOO€ÿ}}¹ÿ..Pÿ„„Àÿppªÿ‹‹Çÿ””Ïÿ..Pÿ””ÏÿÞÞhÿ‡‡ÿÙÙ_ÿÖÖ\ÿÊÊLÿÙÙ_ÿmmÿÖÖ\ÿÉÉKÿ óþþýúþPê++KÿŠŠÆÿ++Kÿ..PÿSS†ÿ<þþþþ þ1þàýÿþíÿþóÿ ÿÈÿ%%Aÿ''Eüÿþñÿþóÿþoþÿ ÷ÿÚÚbÿÐÐRÿJJÿþWÿþŽüÿÿ Cüþ>þþþþ þ.þÍýÿ‘«Ãüÿÿ˜ Òÿ{{¶ÿ††Âÿ««áÿþòÿþåÿþñÿþ—þÿ ÷ÿøø²ÿÐÐRÿÓÓWÿþ—ÿ¨ÀÖÿþþÿ66óþ<þþþþ þ*þ‡þþÿ¿Ôæÿþñ ÿ¼¼ëÿeeÿYYŽÿþìÿ¹Ïãÿþæÿþóÿ{•®ÿþüþÿùþÿóþÿñÿþüüÿþ²ÿþÉþ8þþþþþ$þZþþÿþéþ¡ïþôýþ Ûþ*àþþÿþ(áþÚùþçûþÛþýÿþáúþ¤ïþ¢ïþ¡ðþ×÷þþÿþd©þ2þþúþþLþþÿþyÏþ±þþÿþ<¼þŸßþêùþ«þÐðþÞõþ­þúþþ¤ãþ§þ¢þ¤þ£þåõþÞëþ*þ þúþþ>þþÿþy¾þ„þàòþµÜþëöþÒþ…þÐêþßñþŠþûþþ¤Öþwþmþpþzþßïþâíþ&þ þúþþ6þþÿþz®þaþ‰»þøüþþÿþ!{þaþÑåþàîþnþúýþ»×þAzþBnþCrþ–ºþþÿþ•·þ&þ þúþþ2þþÿþz¥þJþeþþÿþéóþSþJþÐáþßìþ_þúýñÿþûýþ·ÑþIþ$þ þúþþ.þHþCþ:þJþbþ_þEþ:þHþRþVþbþaþNþBþEþPþSþ=þþþúþ þ"þ4þ/þ&þ3þIþFþ/þ'þ3þ<þAþOþWþRþNþMþKþ@þ'þþýúþþþþþþþ#þ"þþþþþ!þ*þ2þ4þ2þ1þ+þ þþþýöþþþþþþ þ þþþþþ þ þþþþþ þ þþùîþöþöþþþþþþþþþñþd € El @в º (R/home/wolfgang/programmes/gnustep/Cynthiune/Images/lookup-mb-on.tiffHHCynthiune-1.0.0/Images/next-pushed.tiff000644 001751 000024 00000003640 11733546663 020503 0ustar00multixstaff000000 000000 II*rõõîÖÒ&þ/þ/þ+ññê6Ý(+ ’¹þ Ý(,"Ý(,#ó)-$ó,0&òññ PU<ý14%ìaá =@/“RW>ý#$Ðþá]eMÝwþ‘Ÿxþw‚cþññ‡bü‘™iþIM4ó “þéBF2‡¥sþ|ƒ\þ,/!äDår{\ÕÁÑ™þÂÔœþ˜¥zþññ›¤müÄЉþ§°tþbfCù¼þíDG2„¾Ç†þÁÌ‹þ–fþ;>,ï véx€\ÕÊÛ›þËÜþœ©zþññœ¥küÐÜŽþÑÝþ·À{þy~Qý"$Öþ2ñDH2…Ã̆þÛæ˜þËÕŽþž¥oþRV:ö§þ ñy[ÕÍÜ™þÍÝ™þœ©wþññ›¤güÒÝŒþØå‘þÔáŽþÂËþŠ[þ03!å[õDG1…¿ÉƒþÜæ•þÝç–þÏÚŽþª³vþhnHûÈþõzWÕÏÜ“þÑÞ•þŸ«tþññ#š¤düÑ݈þØäŽþÙåþÝçŒþËÔþ™ bþCG,ï þý'DH0…ÀÉþÜç’þßé”þÝè“þÔßþ¶Á}þ}„Uþ()Þ@ù|VÕÓÝ’þÕá“þ¡­qþññ'ž¦cýÓÞƒþØä‰þØäŠþßé‰þàêŠþÒÜ‚þ§®hþ\`:ö´þ,EH.…ÁÈ|þÝæþàêþàéþÞè‘þ×âþÁÊþŽ•]þ:;&ëoý}‚SÔÕÞŽþ×áþ¤­oþññk ¦`ýÕßþÚåƒþÙä„þÞç„þãì‡þäì†þ×Þþ³»mþsyGûff\×moZ£ÁÊyþÝæˆþàé‹þáé‹þßèŒþÝçþÙãŠþÈÒþ¢§eþX[:ò€{°…‰YÖÖߊþ×ߌþ¤¬lþññk¡§]ýÖß{þÜåþÚä€þÞçþãë‚þæí‚þãêƒþØà€þÝá·ÿùúêÿšmÎÈÑyþÝæ…þàèˆþáéˆþàéˆþßè‰þÝç‰þÛå†þ×ÜþîïàÿëíÉ÷˜`ÜÙáˆþÕÞ†þ¤¬hþññk¡¦Yý×àwþÜå{þÛä|þßç{þâé|þåì~þåì…þöøÙÿôöÖþvyM”MO.}ËÒuþßæþàèƒþàè„þàè„þàè„þàè…þçí£þûüðÿßâ¬ó45 E’VÏÛâ„þØß‚þ¦­fþññ'¢§VýØàrþÞæwþÞæwþàèxþâéxþéîþûüëÿêí¸ùHJ+_ý+HJ*ÈÎnþáè|þáè~þàçþáèþáè€þíñ¸þûüîÿÁŇÞ!ý†‰NÓÛá~þÚà€þ§­dþññ#£¨SýÚáoþàçsþàçtþãèsþëï þüüïÿÔ×’ê&&3ù'GH(„ÈÌiþâèyþâèzþáçzþàçþô÷Ðÿ÷ùÞÿ™›a¹ ù‚IÔÛàzþÛá|þ§­aþññ£§PýÜájþãéoþãépþòôºÿúûæÿ²µmÏõGH'…ÆÊeþäéuþåëvþäé‡þùúåÿðóÂýhj=…ñ~GÕÜàvþÝãyþ©­^þññ¤§MýÝágþåêsþ÷øÔÿõöÏþ„†J£ñGH&…ÇÊbþåéqþìï•þüüïÿáã¡õ>?"Sí~€DÕÛÞsþßâuþ©­\þññ¥§Iýãå}þûûèÿìî®ûTU*méHJ$†ÆÉ^þïò­þüüìÿËÍ}ä +é{BÕØÝoþÞârþª­Yþññ¼½þûûíÿÚÝŠð01AåÿN+ˆçèÂÿøùÚÿ¨©]Ä å…‰PØÚß{þâå}þ³¶fþññÿú ãþ½¾eØ áÿš ~©òóºþxz;•áìíÜôùÿüýñÿññÿ‹=¯ÝÿM'gFGdÙ‹M³¿ÃjãÁÅjãÁÄhâñõõþ#D€ DL@i˜(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/next-pushed.tiffHHCynthiune-1.0.0/Images/next.tiff000644 001751 000024 00000003546 11733546663 017222 0ustar00multixstaff000000 000000 II*>õõîÖÒ&þ/þ/þ+ññþÕþ5Ýþlþ¢þ Ýþ¸þÐþ Ðþ ÍññþÄþ ÄþXáþ [þÄþ±þáþŽþ%”þ%’þ¦ññþ!þ#™þ½þ‚þéþ Jþ%’þ¨þ ¿þ@åþwþ1qþ2oþ&Žññþ&þ0tþ(Šþ´þ£þíþ Fþ.}þ.yþ"›þ Àþiéþtþ3mþ4kþ'Œññþ&þ3jþ4lþ,þ«þ·þ2ñþFþ.yþ5hþ1rþ&þ¹þ“þ ñþtþ3mþ4kþ'Œññþ&þ4iþ6fþ4iþ.zþ! þ ½þVõþFþ.yþ5fþ5fþ2nþ*‡þ°þ­þõþtþ3mþ4kþ'Œññþ&þ4iþ6eþ6eþ4gþ0tþ%•þ»þ€þýþFþ.yþ5fþ6eþ6fþ3jþ,~þ§þ¼þ?ùþtþ3mþ4kþ'Œññþ&þ4iþ6eþ6eþ6eþ5fþ2oþ(Šþ²þ þþFþ.yþ5fþ6eþ6eþ6eþ5iþ/xþ"›þ ¾þgýþsþ3mþ4kþ'Œññþ&þ4iþ6eþ6eþ6eþ6eþ6fþ4lþ,þ©þQÀþBsþ/xþ5fþ6eþ6eþ6eþ6eþ5gþ1rþ&þ·þt£þ$wþ3lþ4kþ'Œññþ&þ4iþ6eþ6eþ6eþ6eþ6eþ6eþ6kþ•¾þÜæþAtþ0sþ6fþ6eþ6eþ6eþ6eþ6eþ5fþI~þÑæþ§ºþ%nþ4kþ4kþ'Œññþ&þ4iþ6eþ6eþ6eþ6eþ6eþBnþÃÑþÀÏþ#:þ8þ1rþ6fþ6eþ6eþ6eþ6eþ6eþhŒþçíþ~™þ þbþ3jþ4kþ'Œññþ&þ4iþ6eþ6eþ6eþ6eþWþàèþ•­þ ýþ@þ0wþ5fþ6eþ6eþ6eþ6eþŽ©þäëþTsþ ýþmþ3lþ4kþ'Œññþ&þ4iþ6eþ6eþ6eþw—þèîþi†þùþEþ/xþ5fþ6eþ6eþ<jþµÇþÌØþ0Mþùþsþ3mþ4kþ'Œññþ&þ4iþ6eþ8gþžµþÜåþBaþõþFþ.yþ5fþ6eþNxþÙâþ¥ºþ-ñþtþ3mþ4kþ'Œññþ&þ4iþBnþÄÒþ½Íþ%?þñþFþ.yþ5fþhŒþèîþz—þ íþtþ3mþ4kþ'Œññþ&þVƒþàèþ•­þ"éþFþ.yþŽªþäëþRsþ éþtþ3mþ4kþ'Œññþj¶þèïþj‰þ åþJþ²ÑþÌØþ2Rþåþ-~þG{þHzþ;•ññþÜåþDeþ áþo{þ¦»þ3þáþÒÚùÿþëðññþ DþÝþ )þÙþJþeþeþcñõõþ#€ =@6V^(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/next.tiffHHCynthiune-1.0.0/Images/pause-pushed.tiff000644 001751 000024 00000002046 11733546675 020644 0ustar00multixstaff000000 000000 II*ö¡¡êþþþâþþþñí&'ÿ24ÿ02ÿEG'éå68î02ÿ13ÿ57þñíps;þ”šNþ”Kþjl9Þåad7à‘—Pþ’˜Qþv{Cþñ휡OþÏÕjþÊÐgþC×åz~BØËÒkþÍÔnþž¤Uþñí¢§Oþ×ÞiþÓØfþ‚„BÖå‚B×ÕÜmþ×Ýnþ¥ªVþñí¥¨LþØßeþÏÕaþ‚ƒ>Öå@××ÜhþÚßjþ§¬Rþñí¦©HþÛà`þÒ×]þ‚ƒ<Öå€>רÜdþÚßfþ§«Pþñí§©EþÜá\þÔ×Yþ‚ƒ9Öåÿ ;×ÙÜ`þÛßaþ¨¬Lþñí¦¨CþÝàYþÖÙWþ‚ƒ8Öåÿ :×ÙÜ]þÛß_þ©«Jþñí§¨?þßáTþ×ÙRþƒƒ5Öå‚7×ÛÝXþÜßZþª¬Fþñí§¨<þàáPþØÙMþ„„3Öåÿ 5×ÜÜTþÝßWþª¬Cþñíÿ§ 9þààLþØØJþ…„1Öåÿ 3×ÜÜQþÞßSþª¬Aþñíÿ§ 5þààHþÚÙGþ…„.Öåÿ‚ 1×ÝÝMþÞÞOþª«>þñí¨§2þàßDþÚØDþ…„-Öåÿ /×ÝÝKþÞßLþª«<þñí©¨/þáß@þÛÙ>þ†„*Öåÿ ,×ÝÜGþßßIþªª9þñí¨§-þâß=þÜÙ;þ‡„)Öåÿ +×ÝÜEþßÞHþ««8þñíª¨*þâß;þÜØ9þ‡„&Öå‚)×ÝÜBþßÞEþ­¬6þñí¼¹Sþéæ_þâß^þš˜DÛ嘖KÝãâfþåähþ¼»YþñíõÿÿäÂîåÿí×ôùÿÿûíþñ¡¡¡þÈ€ EÐ@í(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/pause-pushed.tiffHHCynthiune-1.0.0/Images/pause.tiff000644 001751 000024 00000001770 11733546663 017356 0ustar00multixstaff000000 000000 II*С¡êþþþâþþþñíþäþ Ýþ Þþ´åþ Ãþ Ýþ Ýþ Øñíþ°þ$˜þ"›þŒåþ“þ#šþ#˜þªñíþ%‘þ2oþ0tþtåþxþ1rþ1pþ&ñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'Œñíþ&þ4jþ2oþråþtþ3mþ4kþ'ŒñíþR¤þ\‡þ[Œþ<ƒåþ?‰þ\Šþ\‰þO ñíõÿþ¼ÇåþÒÚùÿþëðñ¡¡¡þ¢€ >ª@Èèð(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/pause.tiffHHCynthiune-1.0.0/Images/play-pushed.tiff000644 001751 000024 00000002070 11733546675 020471 0ustar00multixstaff000000 000000 II* ¡¡ê"¹í&*"â‰þ Áí is^úMRBöÇþBÅ팚{ù¡°Œþ}‰kþ+.$âþÍ픣€øÁÒ¤þ½ÏŸþž¬€þZ`IòÈþQÑí–£~øÄÖ¤þÍà«þËÜ¥þµÄþ…ký+.#ÝšþÙí#˜¤}øÃÕ þÌà§þÑã©þÓä¥þÆÕšþ ­}þ[bHð Èþ]þáí+š¦zøÅÖžþÍߣþÎá¤þÖç¥þØè£þÏÞžþ¶ÅŠþ‰”hü/3#Ù¥þ&åí/›§wøÇ×›þÎà¡þÍߟþÓã¡þØè þÛéŸþÕäœþÅÔ‘þ§³zþbhFî  Æþkþíí7œ¨uøÉÙ˜þÐâžþÎáœþÏáþÔäžþÚéþØèœþÓä™þÍÜ“þ¾Ê†þ”œfü35$ÓkkjÄý6ñí7©søÊÚ•þÒä›þÐâšþÎà˜þÑâ™þÙéšþÙè™þÔä–þÔä•þØå”þÖߟþíïáÿæèÛðý$ñí7ž©qøÎÝ“þÖæšþÏá–þÐá•þÑâ•þÖæ—þÙè–þÚè•þ׿—þéñÉÿüýöÿ¸»Î íí/Ÿ©pùÏÝþ×ç—þÑâ”þÐá’þÒâ’þÕå“þÙç“þâí«þùûîÿêîÖøTVAiåí+ž§nùÏÝŽþÚé•þÖå“þÒâþÐàþÕã”þïõÓÿûüòÿ°¶’Ë áí#¦lùÏÝŒþÝë“þÙè’þÔäþÝè®þúüóÿæëÌ÷QU=iÙ훦jùÍ܉þÝëþÞë™þñöÙÿøúîÿ§¯…Ê Õ횦gùÌÛ‡þéñ¹þûýôÿãêÂ÷MR8jÍí§±{úðóÞÿ÷úèÿª°É Éí òöáýßç¹÷PU6mÁ팕`½ ½¡¡þÜ€ Dä@(0(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/play-pushed.tiffHHCynthiune-1.0.0/Images/play.tiff000644 001751 000024 00000002036 11733546670 017200 0ustar00multixstaff000000 000000 II*ö¡¡ê"¹íþÀþ‚þ Áíþªþ»þ´þBÅíþ$Žþ)‡þ¢þ ½þŠþÍíþ&‡þ2pþ0sþ'þ­þ·þQÑíþ&‡þ3mþ5fþ4lþ-}þ!þ ¶þ–þÙíþ&‡þ3mþ6eþ6eþ4gþ1rþ)Šþ¨þºþ]þáíþ&‡þ3mþ6eþ6eþ6eþ6fþ3jþ.zþ"™þ ¯þ¢þ&åíþ&‡þ3mþ6eþ6eþ6eþ6eþ6eþ5gþ2pþ*†þ¢þ¸þkþííþ&‡þ3mþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ4jþ/xþ#”þ ©þjÂý6ñíþ&‡þ3mþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ5gþW‰þÑæþÉÒý$ñíþ&‡þ3mþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ<jþœ´þïóþwŠþííþ'‡þ3mþ6eþ6eþ6eþ6eþ6eþ6eþfŠþàèþ¾Ìþ%2åíþ'‡þ3mþ6eþ6eþ6eþ6eþ@mþ®Áþèîþf|þáíþ'‡þ3mþ6eþ6eþ6eþr“þëðþ«½þ-Ùíþ'‡þ3mþ6eþJuþ¼ÌþáéþWpþÕíþ'‡þ3mþ„¡þìñþ²þ(ÍíþE™þÈÚþÖàþJfþÉíþÍÙþާþ%ÁíþKþ ½¡¡þÈ€ =Ð@î(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/play.tiffHHCynthiune-1.0.0/Images/playlist.tiff000644 001751 000024 00000003032 11733546672 020073 0ustar00multixstaff000000 000000 II*Ì¡ùþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lùùþ%L¹¿þ%Lùùþ%Lý¿þ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïý¿þ%Lùùþ%Lý¿þ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßý¿þ%Lùùþ%Lý¿þ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßý¿þ%Lùùþ%Lý¿þ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïý¿þ%Lùùþ%L¹¿þ%Lùùþ%L¹¿þ%Lùùþ%Lý¿þ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïý¿þ%Lùùþ%Lý¿þ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßý¿þ%Lùùþ%Lý¿þ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßý¿þ%Lùùþ%Lý¿þ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïý¿þ%Lùùþ%L¹¿þ%Lùùþ%L¹¿þ%Lùùþ%Lý¿þ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïý¿þ%Lùùþ%Lý¿þ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßý¿þ%Lùùþ%Lý¿þ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßþ½ßý¿þ%Lùùþ%Lý¿þ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïþ½Ïý¿þ%Lùùþ%L¹¿þ%Lùùþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lþ%Lù¡¡¡þª€ A²ô@Ä (R/home/wolfgang/programmes/gnustep/Cynthiune/Images/playlist.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/playlist-pushed.tiff000644 001751 000024 00000003740 11733546663 021367 0ustar00multixstaff000000 000000 II*Œæþþþþþþþþþþþéöþþþþþþþþþþþþþþþþþþþùúþ¹ÿþþýúþ%ýÿÿ÷ÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿñÿÿÿ÷ûÿþ%þýþþ þ3ýÿÿíÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿíûÿþ3þ þþþ þ7ýÿÿíÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿíûÿþ7þ þþþ þ8ýÿÿõÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿìÿÿÿõûÿþ8þ þþþ þ8¹ÿþ8þ þþþ þ8¹ÿþ8þ þþþ þ8ýÿÿøÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿòÿÿÿøûÿþ8þ þþþ þ8ýÿÿíÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿíûÿþ8þ þþþ þ8ýÿÿíÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿíûÿþ8þ þþþ þ8ýÿÿôÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿôûÿþ8þ þþþ þ8¹ÿþ8þ þþþ þ8¹ÿþ8þ þþþ þ8ýÿÿøÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿóÿÿÿøûÿþ8þ þþþ þ8ýÿÿíÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿíûÿþ8þ þþþ þ8ýÿÿíÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿÞÿÿÿíûÿþ8þ þþþ þ7ýÿÿóÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿêÿÿÿóûÿþ7þ þþþ þ3¹ÿþ3þ þúþ%þXþ{þ…þ†þ†þ†þ†þ†þ†þ†þ†þ†þ†þ†þ†þ…þ{þXþ%þýúþþ%þ3þ7þ8þ8þ8þ8þ8þ8þ8þ8þ8þ8þ8þ8þ7þ3þ%þþýöþþ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þþùæþþþþþþþþþþþéþj€ Hrº@„ÐØ(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/playlist-pushed.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/previous-pushed.tiff000644 001751 000024 00000003656 11733546670 021406 0ustar00multixstaff000000 000000 II*|õõòþ0þ/þ/þÖþÖñò#)+ù,48ø*15ù@JMØÚÖ077uÝZ(+)ãñòm~†ýŠ¡«þ„š¢þcsxØá9$*)àOZXþ;B@vâ Š:?;óajdöñò ¨°ü·Öàþ°ÍÔþp†Óå i3:8ì€þ šþ=DBpæµU_Yø˜¦–þ‡’ˆóñò ˜¯µü»Ýåþ²ÑØþs…‡ÓêšFPN󑣞þºÑÉþ©»±þ>DAnê)!Ñhunü¦¹¬þ¿ÓÀþ˜£’ññò ›±²ü¿ßãþ³ÑÔþrƒ…ÒîÀ_jeù ³¬þÂÚÐþÌäÙþ®À³þ?E@nñþP).*ã~Œþ²Æ¶þËßÍþÊÝÈþ—£ññò œ³²ýÃááþ¶ÑÒþr‚‚Òò 7 $#×p~{ý®À¸þÌáÖþÓêÜþÎåØþ­¿±þ?D>mö  ‚:A;íŽþ¿Ñ½þÑåÎþÔéÒþÉÝÆþ–¢Žññò ž²°ýÇãàþ¸ÒÑþr‚‚Òù'b-30å‚’Œþ²ÇÁþÌâ×þ×ìÜþØíÜþÐæ×þ¬½¯þ>D>mú$­T[SôšªšþÂÕÁþÔèÏþÙìÐþÖêÏþÉÛÃþ” Œññò ž²­ýÍæÝþ¼ÕÎþtƒ€Òþ, ’BIF›þ¾ÑÇþÊàÖþÏäØþØëÙþÝïØþÔèÔþ¬¼¬þ?C>mþ((Énwhú®½§þÉÜÃþÓæÍþØêÎþÜíÎþÙëÌþÊÜÀþ’ˆññòl Ÿ³­ýÑéÛþÁ×Îþƒ‹ÖvwvÆYd`öŸ±¨þÄÚÍþÐæØþÐæÙþÎãÖþÕé×þÛîÖþ×êÒþ¯À®þ}€|£OQNÞ…|þ½Ì±þÕæÈþ×éÌþÕçËþ×éËþÚìËþÛìÉþÌݾþ’‡ññòl ¢´«ýÐèÙþÈÝÏþ’¡˜ÛìòïúàæãÿÈÝÒþÑæØþÓéØþÔé×þÏäÔþÑåÓþ×êÔþÚêÐþ½Ìµþ§°¤Ó÷ùöÿ×áÎþÙéÈþßïÍþÜíÌþ×éÊþÖçÈþÙêÉþÜëÈþÐÞ¼þ’ž†ññòl ¡³©ýÎä×þËÞÎþ…“‰Ì(,*:Ýåàôöú÷ÿØêÛþÔéÕþÖêÔþÒæÔþÎáÐþÓåÐþÙêÎþÁеþ@E=f|ƒw›÷úõþð÷çÿàðÊþßîÉþØêÇþÖçÅþØéÅþÝìÅþÑà¹þ“Ÿƒðñò ¢´¨ýÊáÓþÆÛÉþ‹€Ïý+¾ÉÁßúüúÿßíàþÐåÓþÔçÒþÐãÏþÑåÎþÖèÌþ¹Çªþ?C;iý'KPGdîôèûöúñÿàïÌþÛìÇþ×éÄþÖçÂþÙêÃþÐ߸þ“ž‚ðñò £´¦ýÊàÑþÃׯþz…zÐù'•Ÿ–ºøûøÿæñæþÓçÏþÑåÎþÑåÌþÑåÉþ±¿¥þ>C:kù#')#6ÛâÐðúü÷ÿáïÎþÙêÃþÖéÁþÙêÁþÎÞ¶þ‘€ðñò ¥µ¦ýÊàÏþÀÓÃþy„xÐñeme‡ðöïþð÷ïÿÓçÎþÒåËþÍáÇþ¬»£þ=B9lõ¼Æ¯Úûýøÿæñ×þ×éÀþØé¿þÍÝ´þ‘œïñò ¦¶¥ýÌâÏþ½ÑÁþxƒwÐí5iå9>3QÝèÐ÷÷ùôÿ¤­”òñõýõÿÓÚÓçáþ |‡v¤ïöíþcia{á  +Äѳçìðäùñõý¨¼°à´Ä°à²Ã°áy†z«ÙIQFr7=6VÝ ~‡k«ñõõþ#N€ HV@sž¦(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/previous-pushed.tiffHHCynthiune-1.0.0/Images/previous.tiff000644 001751 000024 00000003600 11733546670 020105 0ustar00multixstaff000000 000000 II*Tõõòþ0þ/þ/þÖþÖñòþÛþ Òþ ÕþÚþÀþ DÚSþÀñòþ§þ&þ$—þ€Þ7þ¾þÃþ <âý{þ Æþ­ñò þ'Šþ3mþ0vþoåþ`þ Àþ! þ%–þ 4æþŸþ¶þ%”þ Žñò þ)‡þ5iþ1rþmêþ‰þºþ%’þ0uþ*…þ 2ê)þ´þ­þ+ƒþ0uþ$„ñò þ)‡þ5iþ1rþlîþ©þ±þ)‰þ2oþ5iþ+‚þ 2îMþ¾þ ¢þ-{þ4jþ2mþ#‚ñò þ)‡þ5iþ1rþlò6þ¸þ©þ,€þ4kþ6fþ4gþ+‚þ 2öþxþ¼þ$—þ0uþ5hþ6eþ3mþ#‚ñò þ)‡þ5iþ1rþlö^þ ½þ!þ.yþ5iþ6eþ6eþ4gþ+‚þ 2úþœþ³þ(Œþ1pþ5gþ6eþ6eþ3mþ#‚ñò þ)‡þ5iþ1rþlþþ‡þ¸þ%’þ1sþ4gþ6eþ6eþ6eþ4gþ+‚þ 1þ(þ±þ«þ+ƒþ3lþ6fþ6eþ6eþ6eþ3mþ#‚ñò þ)‡þ5iþ1qþ4}þj¸þ¯þ)‰þ2oþ5fþ6eþ6eþ6eþ6eþ5gþ,€þ^~þ4Àþ¡þ-{þ4jþ6fþ6eþ6eþ6eþ6eþ3mþ#‚ñò þ)‡þ5iþ2oþ/qþÆÓþ¶Õþ;rþ6fþ6eþ6eþ6eþ6eþ6eþ5gþ.zþZ€þèñþv¦þ5hþ6eþ6eþ6eþ6eþ6eþ6eþ3mþ#‚ñò þ)‡þ5iþ2nþ]þ þž²þÚãþR{þ6eþ6eþ6eþ6eþ6eþ5gþ/xþ )þ4IþÚãþ¤ºþ8gþ6eþ6eþ6eþ6eþ6eþ3mþ#‚ñò þ)‡þ5iþ1pþgýþþoˆþèîþp’þ6eþ6eþ6eþ6eþ5gþ,~þ .ýþ&þ·ÇþÌØþEqþ6eþ6eþ6eþ6eþ3mþ#‚ñò þ)‡þ5iþ1rþlöþC\þàèþ–¯þ6eþ6eþ6eþ4gþ+‚þ 0ùþþˆ þäëþ[‚þ6eþ6eþ6eþ3mþ#‚ñò þ)‡þ5iþ1rþlñþ!6þÄÒþ½Íþ@mþ6eþ4gþ+‚þ 1õþþ[wþèîþ~þ6eþ6eþ3mþ"ñò þ)‡þ5iþ1rþlíþþ›±þÜåþR{þ4gþ+‚þ 0îþ7RþÙâþ¦»þ8gþ3mþ"ñò þ)‡þ5iþ1rþléþ þo‹þèîþo”þ+‚þ 0éþ/þµÇþÌØþCyþ"ñõþ þ?”þHxþF€þ)såþþHeþàèþÂþ 0åþ þФþäíþLšñõýõÿþ¦µÞþ'AþÄÒþ<Iáþ þ_~þÄÑñõýþdþdþdþDÙþ'þ !Úþ Cñõõþ#&€ A.@Lpx(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/previous.tiffHHCynthiune-1.0.0/Images/remove.tiff000644 001751 000024 00000003666 11733546670 017542 0ustar00multixstaff000000 000000 II*Œ¡¡â %A+S'C#Ùé' a Ÿœè® ý® þª ý– ên ´& Jáî02šã¶ þµ þ¦ þ•þ–þ þ¨þ¥üZ þéò8ŒÒ¼þ¶ þ· þ èu+‡Tº‰÷žþ¦ýp ½ þíòQ—¿þ³ófÊþ´ ü@ §þ¼þ±–aÑ›þ¦þc «þñö$!šõÆþsª ŒZઠþ« õ! šþ¬þ±­VÑþ¢ú7 lþþõönÀþÈý> tþÀÆtñ³ þ™ â |þþšµlé¢þˆÞ $þ þùúþ %›ÐþÉû) nþ®þ²¹’ü· þs ½UþfþŽ“þ¨þ, ]þþùúþ&§ÐþÐý5 sþ€þ}þŸ8Åþº þQ ’þ?þ]Ÿmø¦þU—þ(þ þýúþ žÁþÖþY“þ^þOþr¢Yܪ þ¯ô/ jþ>þ pIë¤þxÁþ.þþýúþ ‚ŸþÚ""þ£Ó Lþ/þEþ} ­yñ´ þœ ã Kþ T;â¥þ„Ëþ3þþýúþþ\_ ê×##þØ""ýKƒþ%þ'þSþ бŽû¸ þy ¾XKð¬þu½þ;þ&þýúþþMÿÿ®ÿ þÝ%%þÄî(Yþþ-þ]þ˜8Æžþ· ý[ Àr û¯þRŒþOþ*þþúþþ=ˆN ÔË!!þÜ$$þ¼ ê;jþ8þp¤XÚª þµ þ® þ¬ ú=þeþ*þþúþ þ*þ>öúÿAÿÿÿAÿÿÿAÿÿÿ;êð77Ûå77Ûå77Ûå88Þç==ô÷ÿAÿÿÿ6×Ú .1ùýÿ;;éì;;ëñWSþJþIþK11ÃÙÿAÿÿÿ< îõt¨TþIþIþIþJSW;;ëñ;;éìýýÿ& ™ ??úü 4vþ.þþ þ þ 00¿Ñ%%”½^þ.þþ þ þ þ þþ . 4v??úü&&™ ýþ::éî--²Íþ+þòFþ7þþæþ+--²Í::éîþþÿAÿÿÿ#¯þîþ þþÞ##¯ÿAÿÿþþ ::çî--µÉþ Ùÿÿê --µÉ::çîþ þ %%•°??ûý9Fáÿ ))¤¨--µºþñÿ 9F??ûý%%”°þþ?::æï<<îò`eÿÿ ñÿÿÿ"…ˆ>>öøÿAÿÿÿ.¶Æþùÿÿ ÿ `e<<îò::æï>þú (b44ÒáÿAÿÿÿ?ÿûÿ:èê::çé::çé::çé==óõÿAÿÿÿAÿÿÿAÿÿÿ> øû::çê::çé::èêÿ?ÿûÿAÿÿÿ4Òá (bþýúþ$CL‰""ˆ¯$$‘²$$‘²$$‘²$$‘²++¬Ç??üþÿAÿÿÿAÿÿÿ8ßë%%‘³$$‘²$$‘²""ˆ¯L‰Cþþýöþ þ#þ5þ:þ:þ:þ;þD 4|00ÀÙÿAÿÿÿ.¶Ïþ=þ:þ:þ5þ#þ þùîþþþþþþ þ"þFR‘%%“¯þ þþþþñÒþþ*þ+þáÊþþá¡¡¡þø€ F@FN(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/repeat-pushed.tiffHHCynthiune-1.0.0/Images/repeat.tiff000644 001751 000024 00000001760 11733546675 017523 0ustar00multixstaff000000 000000 II*Æ¡¡¡¡Ýþ/aþ3ÍÝþ:vþK™þ:vþ!Õõþþ4þ+Yþ._þ._þ._þEŒþK™þK™þK˜þ5lþ._þ._þ._þ._þ+Yþ4þõùþ þ@‚þK™þH“þB†þA„þA„þI”þK™þK™þK™þEþA„þA„þA„þB†þH“þK™þ@‚þ ùýþþEŒþFŽþ5þõþ:vþK™þFþ"Fþñþþ5þFŽþEŒþýýþ-\þJ—þ íþ8sþ+Yþ áþ þJ—þ-\ýýþEŒþ4kéþ Õþ4kþEŒýýþK™þ*U¹þ*UþK™ýýþD‹þ5mÕþéþ5mþD‹ýýþ,ZþJ—þ#áþþ0cþ5míþ#þJ—þ+YýýþþD‹þFþ:þñþþ'PþI”þK™þ6nõþþ:þFþD‹þýùþ þ>~þK™þJ—þEŒþD‹þD‹þD‹þH’þK™þK™þK™þI•þD‹þD‹þEŒþJ—þK™þ>~þ ùòþ.þ(Rþ+Xþ+Xþ+Xþ+Xþ3hþK˜þK™þK™þB†þ+Xþ+Xþ+Xþ(Rþ.þõÕþ þ9tþK™þ6nÝÍþ2þ+YÝ¡¡¡¡¡þ˜€ ? @¾àè(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/repeat.tiffHHCynthiune-1.0.0/Images/save-as.tiff000644 001751 000024 00000004454 11733546670 017600 0ustar00multixstaff000000 000000 II*êþþþþ þ þ þ þ þþþþþþþþùêý8TXXveih†OPNRXN†Q_R†Se]‹K\Sƒ?KGt9?=a.//N"#"?86&þ þýîþ0 /¦§ç——ŽÿJI4ÿX`Tÿ‰šŽÿ­Æ»ÿºÕÎÿ·ÒÅÿ±ÍÄÿ²ÊÅÿ¢«¨ÿþA ÿš ¡þ¿ÇÈýJþ þîþ@R`ceþ\RPÿš‘ŒÿÕ×ÕÿÞéäÿáíëÿÙïçÿØíÝÿÝéÜÿÖåÓÿÇØÌÿlroÿÿ|‚‚ÿ:<>ÿ"((ÿ167ÿÿ(0.ÿ•ž›ÿ_þöþþH6yâ¹À¿ÿŸ¡ ÿ¦¨¨ÿz}|ÿPTSÿ,-,ÿ%&%ÿbdcÿTZXÿ{‰…ÿ…—•ÿQZZÿaijÿ)./ÿš¡Ÿÿ¥­«ÿþöþþH7‚‡ƒÛ»ÁÀÿ•“ÿkspÿtxwÿkonÿgmkÿŠ’ÿºÀ¾ÿ†ŒŠÿ‹‰ÿ|……ÿekkÿ‹‰ÿ‹‰ÿÆÏÌÿ§¯¬ÿ}þöþ þH.Ÿõ÷÷÷øøøøøøøø÷÷ö ð pþöþþþDþgþzþþ€þþþþþþþþþ€þþvþ\þ5þòþþþ2þ;þ>þ>þ?þ?þ?þ?þ?þ?þ?þ?þ>þ>þ:þ-þþ þÖ€ =Þ@û $ (R/home/wolfgang/programmes/gnustep/Cynthiune/Images/save.tiffHHCynthiune-1.0.0/Images/shuffle-pushed.tiff000644 001751 000024 00000003062 11733546702 021151 0ustar00multixstaff000000 000000 II*ÂþþþþþþùÎþþ 1AO.inA’ŒSºŽSÈþ ùÎ )h²iìÁrÿÁrÿÁrÿÁrÿÁrÿ[6œþùÎþ(f<ªÁrÿÁrÿÁrÿÁrÿ½oü :þùÊ  "·lóÁrÿÁrÿÁrÿ‰PÈþ õÎ £`ØÁrÿ½oüÁrÿÁrÿ?%{þõòþþê   ^ÔÁrÿ…NÑ&…¶kò±hïñóÿÿœþ úþþ-2‰Q ÃÁrÿŠQÆþ;#Šj>©þñöpwÿÿÿÿTXþEGÿÿ¢ÿÿçÿÿÿQ0“ÿÁrÿ¡_*ÿ ¼ÊÿÿUþþþñ÷ÿÿàÿÿÿÿÿéÿÿÓÿÿÿÿÿÿÿÿÿ Üï³i ü½oþ$Åûÿÿÿÿÿÿÿÿ£ÿþíúV^ÿÿÿÿÿÿÿÿÿÿÿÿÿ!ãë|»&}V2sÁrÿuD¼7išñøÿÿÿÿÿ‰þ þñúÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿRZþþ ’VÂÁrÿ%Nþþ2Pøûÿÿúÿ #þ ñþ=Gÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÿþ ´jî·lõö“©ÿÿÿÿÿþþõþ ´ÅÿÿÿÿùüâïÎå¸Û¡ÐC|þ,¹mõ²iíþ ó9FÿÿÿÿÿÁþþõþ"LEþ.þ&þþþþ þ 6ž]ÒÀqþ.ó ÿÿýÿÿåþþõúþþîþ 'b9•ÁrÿuDžþöéíÿÿýþþ õÚ ^¯géÁrÿU2sþúéìÿÿýþþ õÚþ"/‡¹mõÁrÿ€Lª " ÿÿýÿÿéþ"þ õÖþ)(ЧcäÁrÿ½oú„N º1¾ÿÿÿËþþþþýÒþc\6´®gíÁrÿ]6„ÿÿÿ¥ b:‚°hé¢_ØþýÎþþ$W7 ^ÏÚÿpxJÅ»nú´jóþýÆþÇÏÿÿÿÿ3VþQþHþ5þýà œ°ØëLþ þþù¾þþþñþÖ€ DÞ@ü"*(RC:\msys\1.0\home\Wolfgaang\src\Cynthiune\Images\shuffle-pushed.tiffHHCynthiune-1.0.0/Images/shuffle.tiff000644 001751 000024 00000002352 11733546702 017664 0ustar00multixstaff000000 000000 II*¡Æþ þ&þ;þ&Nþ0cþ2gõÍþ=þ<{þ>þ>þ>þ>þ>þ?õÍþþ1dþ>þ>þ>þ>þ>~þõÉþ$þ>þ>þ>þ>þ-\ñÍþþ9uþ>þ>þ>þ>þ*ñÑþ þ:vþ>þ*Vþ4þ>þ9uþññþ;þíþ þ7pþ>þ*Wþýþ"Fþ#Gíõþþ>þ3ýþþ,þ(Qþ4kþ<{þ>þ>þ1eþ;þþþ íõþ-\þ>þ<zþ$Iþ:wþ>þ>þ>þ>þ>þ>~þ>þ>þ9tþ éùþ þ>þ>þ>þ>þ>þ0cþ6þ4jþ>þ>þþ%þ0bþ>þ<zþ íùþ*Wþ>þ>þ>þ>þ&Mýþ þ>~þ<{þöþ&Nþ>þ3iþñýþ þ>þ>þ>þ>þ>þ=}þ þ"þ>þ/añþþ8rþ>þ!ñýþ(Rþ>þ>þ>þ:vþ5mþ0bþ"Fþ'þ>þ*Wíþ"Eþ>þ"Fñýþþ þ þñþ þ>þ5míþ&þ>þ,ZñÝþþ9uþ>þ$ñþ þ>þ2gñÙþ:þ>þ8sþ õþ þ>þ3iñÖþ-]þ>þ:vþ.þýþ#þ>þ.^ñÕþþ*Vþ>þ>þ3hþ7þý>þ'OñÍþ/þ7pþ>þ>þ>þ>þ7pþ*Wþ*WùÉþþý)Sþ>~þ>þ>þ>þ>ùÁþ þ>~þ<{þ þ%þ%ùÁþ þ,Zþ+Xí¡þ”€ =œ@ºÚâ(RC:\msys\1.0\home\Wolfgaang\src\Cynthiune\Images\shuffle.tiffHHCynthiune-1.0.0/Images/slider-knob-disabled.tiff000644 001751 000024 00000002162 11733546663 022213 0ustar00multixstaff000000 000000 II*æþþþéñþþ‰þ!Èþ$Ùþ Ñþ±þ^þ ñõþAþEçþ‘ùþÑüþèþþßüþµ÷þeèþžþõùþ +þWïþ¾úþØùþÚùþÚùþÚùþÚùþØùþ‹îþ’þùúþ6¿þ›õþ»óþ½óþ¿óþÀóþÀóþ¾óþ½óþ¸óþUÓþSþýýþ (þJîþ“íþ¥îþªîþ¯îþ±îþ°îþ­îþ¨îþšíþoæþ†þýþþ!`þPíþ~æþ”éþžéþ¥éþ©éþ¨éþ£éþšéþ…æþwæþ)¡þþþþ$rþTíþ‡æþ•æþ¢æþ¬æþ°æþ¯æþ¨æþœæþæþ€æþ/¨þ)þþþYþRïþŒæþ æþ¯æþ¼æþÃæþÁæþ·æþ©æþ™æþ„æþ#›þ)þþþ!þIäþ{êþ¦æþ¸æþÉæþÔæþÐæþÁæþ°æþžæþtéþ xþþúþ&‘þUòþ‘éþ¹æþÍæþÜæþÖæþÅæþ±æþŠéþ2¿þPþýúþ)þ5¸þSòþ~îþ­éþÁçþ¿çþ¨éþzîþ=Õþkþ(þýö þ6þ!œþPÝþZòþUôþTôþPèþ-®þoþ6þ ùòþ(þZþ ‡þþ‚þyþZþ(þõîþ þþ)þ)þþ þñæþþþéþö€ MþL@bj(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/slider-knob-disabled.tiff(C) Wolfgang SourdeauHHCynthiune-1.0.0/Images/slider-knob-enabled.tiff000644 001751 000024 00000002164 11733546670 022036 0ustar00multixstaff000000 000000 II*æþþþéï #x/±0¾+¹ Zþ ñó!5 QÍuu›æÄÄÕóááêùÑÑäó““Âà..xÃ’þõ÷ "00eÕ££Æè»»âåÿ½ÿåÿ½ÿåÿ½ÿåÿ½ÿåÿ» âåLL¢Ä†þùú I™ll¬Ô††ÍÏÿ‰ÿÏÿŠÿÏÿŒÿÏÿŒÿÏÿŠÿÏÿˆÿÏÿ€ ËÍqšRþýû c»BB¯µÿXÿºÿaÿºÿfÿºÿiÿºÿhÿºÿdÿºÿ]ÿºÿEÿ´ÿ•›vþýþ+Ik¶ÿÿ›ÿ3ÿ£ÿBÿ¤ÿKÿ¤ÿOÿ¤ÿOÿ¤ÿHÿ¤ÿ;ÿ£ÿÿ›ÿÿ™ÿ8ƒþþþ0Zl¶ÿÿ™ÿ.ÿ™ÿ@ÿ™ÿLÿ™ÿSÿ™ÿQÿ™ÿGÿ™ÿ8ÿ™ÿ&ÿ™ÿÿ™ÿ>ˆþ)þþ I c¼%%•›ÿ=ÿ™ÿQÿ™ÿaÿ™ÿkÿ™ÿhÿ™ÿ[ÿ™ÿHÿ™ÿ3ÿ™ÿ•›,…þ)þþ! T¹&&ªEE—™ÿ]ÿ™ÿsÿ™ÿ‚ÿ™ÿ}ÿ™ÿiÿ™ÿRÿ™ÿ: —™~© pþþú+|VÅ>>„§__—šÿxÿ™ÿÿ™ÿ…ÿ™ÿmÿ™ÿU —š55„§ 4¤þPþýúþ()5œ""NË>>j¸``†¥rrŸnnŸYY†¥77j¸;·iþ(þýö þ 6 Œ$$G¹,,LÌ++DÑ**DÑ&&DÅ)šnþ6þ ùòþ(þ Z ‚ ‚ |þyþZþ(þõîþ þþ)þ)þþ þñæþþþéþú€ LN@dl(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/slider-knob-enabled.tiff(C) Wolfgang SourdeauHHCynthiune-1.0.0/Images/song-inspector-pushed.tiff000644 001751 000024 00000003120 11733546701 022461 0ustar00multixstaff000000 000000 II*ö¡¡ßÿ ÿÿ"ÿÿ5ÿÿ=ÿÿ5ÿÿ"ÿÿ Ýçÿ ÿÿBÿÿ|ÿÿ´ÿÿåÿÿ÷ÿÿåÿÿ´ÿÿ|ÿÿBÿÿ åëÿÿÿwÿÿ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÿÿwÿÿéïÿÿÿ‹ÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿ‹ÿÿíóÿ ÿÿwÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿwÿÿ ñõÿÿBÿ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©åÿªªåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ××ÿBñùÿÿ ÿÿ|ÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«åÿ««åÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿ õùÿÿ"ÿ$ÿ´ÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿ ÿ´ÿÿ"õùÿ ÿ5ÿ=ÿåÿ>ÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÞÿþÞÿþÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿ8ÿÿÿ8ÿåÿ ÿ5õùÿ ÿ=ÿMÿøÿIÿÿÿ>ÿÿÿ2ÿÿÿ%ÿÿÿÿÿÿÿÿÿÿþÞÿþÞÿ ÿÿÿÿÿÿÿÿÿ,ÿÿÿ9ÿÿÿCÿÿÿIÿø ÿ=õùÿ ÿ5ÿJÿåÿRÿÿÿIÿÿÿAÿÿÿ9ÿÿÿ/ÿÿÿ(ÿÿÿ"ÿÿþâÿþâÿÿ%ÿÿÿ,ÿÿ45ÿÿÿ=ÿÿÿEÿÿÿNÿÿÿFÿåÿ ÿ5õùÿÿ"ÿ7ÿ´ÿ[ÿÿÿTÿÿÿMÿÿÿGÿÿA@ÿÿÿ<ÿÿÿ9ÿÿþäÿþåÿÿ:ÿÿ?>ÿÿÿDÿÿÿJÿÿÿQÿÿÿXÿÿÿ5ÿ´ÿÿ"õùÿÿ ÿ#ÿ|bcÿÿÿ]ÿÿÿXÿÿÿRÿÿÿNÿÿÿJÿÿÿIÿÿþçÿþçÿÿIÿÿÿLÿÿÿQÿÿÿUÿÿÿ[ÿÿÿ`ÿÿÿ"ÿ|ÿÿ õõÿÿBÿQÿ×ÿgÿÿÿbÿÿÿ^ÿÿÿ[ÿÿÿXÿÿÿVÿÿþéÿþéÿÿWÿÿÿYÿÿÿ\ÿÿÿ`ÿÿÿeÿÿOPÿ×ÿÿBñõÿÿ ÿ&ÿwÿeÿïÿlÿÿÿhÿÿÿeÿÿÿbÿÿþêÿþêÿþêÿÿbÿÿÿcÿÿÿfÿÿÿjÿÿÿcÿïÿ%ÿwÿÿ ññÿÿÿ1ÿ‹ÿjÿïÿsÿÿopÿÿÿmÿÿÿlÿÿÿkÿÿÿlÿÿÿlÿÿonÿÿÿrÿÿÿhÿï0/ÿ‹ÿÿííÿÿÿ)ÿwÿ\ÿ×ÿzÿÿÿxÿÿÿxÿÿÿwÿÿÿwÿÿÿxÿÿÿyÿÿÿ\ÿ×ÿ)ÿwÿÿééÿÿ ÿÿBÿ+ÿ|ÿHÿ´ÿhÿåÿwÿøÿhÿåÿHÿ´ÿ+ÿ|ÿÿBÿÿ åáÿÿ ÿ ÿ"ÿÿ5ÿÿ=ÿÿ5ÿ ÿ"ÿÿ Ý¡¡¡þÔ€ NÜ*@î@H(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/song-inspector-pushed.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/song-inspector.tiff000644 001751 000024 00000004172 11733546671 021211 0ustar00multixstaff000000 000000 II*&âþþþþþþþþáêþþ !$47<>47!$ þþþéîþ ACÿÿ|ÿÿ´ÿÿåÿÿ÷ÿÿåÿÿ´ÿÿ|ÿAC þþíòþvxÿÿ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÿvxþþñöþ!ŠŒÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿŠŒ!þþõúþ vyÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿvy þþùúþBLÿ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©åÿªªåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ×ÿBLþþùþþ |‚ÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«åÿ««åÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|‚ þ þýþþ%:%%³¶ÿ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿ ³¶%:þþýþþ 9Pÿ=ÿåÿ>ÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÞÿþÞÿþÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿ8ÿÿÿ8ÿåÿ 8PþþýþþB]ÿMÿøÿIÿÿÿ>ÿÿÿ2ÿÿÿ%ÿÿÿÿÿÿÿÿÿÿþÞÿþÞÿ ÿÿÿÿÿÿÿÿÿ,ÿÿÿ9ÿÿÿCÿÿÿIÿøÿB]þþýþþ;]KKäçÿRÿÿÿIÿÿÿAÿÿÿ9ÿÿÿ/ÿÿÿ(ÿÿÿ"ÿÿþâÿþâÿÿ%ÿÿÿ,ÿÿ45ÿÿÿ=ÿÿÿEÿÿÿNÿÿÿHäç;]þþýþþ*W<<¶¾ÿ[ÿÿÿTÿÿÿMÿÿÿGÿÿA@ÿÿÿ<ÿÿÿ9ÿÿþäÿþåÿÿ:ÿÿ?>ÿÿÿDÿÿÿJÿÿÿQÿÿÿXÿÿÿ:¶¾*Xþþýþþ  L//…›bcÿÿÿ]ÿÿÿXÿÿÿRÿÿÿNÿÿÿJÿÿÿIÿÿþçÿþçÿÿIÿÿÿLÿÿÿQÿÿÿUÿÿÿ[ÿÿÿ`ÿÿÿ.…› Lþþýþþþ8O‚TTØÜÿgÿÿÿbÿÿÿ^ÿÿÿ[ÿÿÿXÿÿÿVÿÿþéÿþéÿÿWÿÿÿYÿÿÿ\ÿÿÿ`ÿÿÿeÿÿQRØÜO‚þ8þþýþþþ # _<<‡©ffïñÿlÿÿÿhÿÿÿeÿÿÿbÿÿþêÿþêÿþêÿÿbÿÿÿcÿÿÿfÿÿÿjÿÿÿd ïñ::‡© _þ$þ þýúþþ 9*~GG›¹kkïñÿsÿÿopÿÿÿmÿÿÿlÿÿÿkÿÿÿlÿÿÿlÿÿonÿÿÿrÿÿ jiïñFFœº*~þ9þþùúþþþ E,„DDޏddÚâÿzÿÿÿxÿÿÿxÿÿÿwÿÿÿwÿÿÿxÿÿÿyÿÿÿd ÚâDDޏ,„þEþþþùöþ þ!þ,Et##W­JJ”¼ZZ¿ÑooèîxxøúooèîZZ¿ÑJJ”¼##W®uþFþ!þ þõòþ þþ9þY|3™FªN±Fª3™|þYþ9þþ þñîþþþ#þ7þHþRþVþRþHþ8þ#þþþíêþþþþþþþþþþþþéâþþþþþþþþá¡þ€ G T@jr(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/song-inspector.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/song-pointer.tiff000644 001751 000024 00000002110 11733546670 020650 0ustar00multixstaff000000 000000 II*ö¹áÿÿ ÿÿ ÿÿåíÿ ÿÿ-ÿOÿDÿvÿIÿÿIÿÿEÿxÿ1ÿUÿÿíñÿ!ÿ9ÿHÿ}ÿIÿÿIÿÿIÿÿIÿÿIÿÿIÿÿIÿ~ÿ(ÿFÿÿõõÿ!ÿ9ÿIÿÿIÿÿ;ÿgÿIÿ~ÿIÿÿIÿÿIÿÿIÿÿIÿÿIÿÿ*ÿIõùÿ ÿÿHÿ}ÿIÿÿIÿÿÿ&ÿÿÿ:ÿeÿIÿÿIÿÿIÿÿIÿÿIÿÿIÿÿÿ#ùùÿ-ÿOÿIÿÿIÿÿIÿÿÿ&ûÿÿÿ4ÿDÿvÿIÿÿIÿÿIÿÿIÿÿ7ÿ_ùùÿDÿvÿIÿÿIÿÿIÿÿÿ&õÿÿ ÿ*ÿJÿIÿ~ÿIÿÿIÿÿIÿ~ÿÿýýÿÿ ÿIÿÿIÿÿIÿÿIÿÿÿ&íÿ ÿÿ8ÿbÿIÿÿIÿÿ ÿýýÿÿ ÿIÿÿIÿÿIÿÿIÿÿÿ&íÿÿÿ+ÿKÿIÿÿIÿÿÿýûÿÿEÿxÿIÿÿIÿÿIÿÿÿ&óÿÿÿ2ÿCÿuÿIÿÿIÿÿIÿ~ÿÿ ýùÿ1ÿUÿIÿÿIÿÿIÿÿÿ&ùÿÿÿ;ÿfÿIÿÿIÿÿIÿÿIÿÿ:ÿeùùÿÿÿIÿ~ÿIÿÿIÿÿÿ&ÿÿ ÿ-ÿNÿIÿ~ÿIÿÿIÿÿIÿÿIÿÿIÿÿÿ+ùõÿ(ÿFÿIÿÿIÿÿ1ÿUÿEÿwÿIÿÿIÿÿIÿÿIÿÿIÿÿIÿÿ1ÿUõóÿÿ*ýIÿÿIÿÿIÿÿIÿÿIÿÿIÿÿIÿÿIÿÿ1ÿUÿÿõíÿÿ#ÿ7ÿ_ÿIÿ~ÿIÿÿIÿÿIÿ~ÿ:ÿeÿÿ+íåÿÿÿ ÿÿÿÿÿ å¹þÔ€ EÜ"@î8@(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/song-pointer.tiffCreated with The GIMPHHCynthiune-1.0.0/Images/stop-pushed.tiff000644 001751 000024 00000002350 11733546670 020505 0ustar00multixstaff000000 000000 II*º¡¡¡¡ê"þ/þ/þ/þ/þ/þ/þ/þ/þ/þ/þ/þ/þ0þñí7BTcø'2:û)6>û(4>û'3>û$2=û$1=û$2=û&3>û&3>û$1=û%2>û(4>û ,6úþjñí7g‡ üq“®þy¹þx›¹þwš¹þq•¸þp•·þm”·þl“·þl”¸þl•¹þm—¹þo—¹þ_‚žùþDñí7vŸ¼ü‘ÁæþÏöþžÎöþŸÍöþšÉõþ—Èõþ“ÆõþÅõþŽÅöþŽÆöþÈöþŽÈõþ{«Ñ÷þ1ñí7y¡¿ü•Æíþ Ôýþ¢Óýþ£Ôýþ¡Òýþ Ñýþ›Ïýþ—Ìüþ“Ëýþ“Ìýþ“Íýþ’Îüþ}¯Ø÷þ/ñí7y£¿ü•Èíþ¡Õýþ¡Ôýþ¢Õýþ¤Õýþ ÓýþÒýþ˜Ïýþ”Íýþ“Ìýþ“ÍýþÌüþ}¯Ø÷þ/ñí7z¤¿ü—Éíþ¢Öýþ ÔýþŸÓýþ¢Õýþ Õýþ Ôýþ›Òýþ˜Ñýþ•Ïýþ“ÍýþËüþ±Ø÷þ/ñí7vŸ¿ü•Çíþ ÕýþŸÓýþœÑýþ Ôýþ ÕýþŸÕýþŸÕýþœÔýþ™Òýþ”Ïüþ‘ËûþƒµØ÷þ/ñí7o›¿ü‘Äíþ ÕýþŸÕýþœÓýþšÒüþÔýþ ×ýþ¢Øýþ ×ýþœÕýþ—Ñüþ’Íúþˆ·Ø÷þ/ñí7n˜½üÃíþ¡×ýþ£Ùýþ¡×ýþ—Ïûþ›Òýþ ×ýþ¤Úýþ£ÙýþžÖýþ™Òûþ“ÎùþйØ÷þ/ñí7m—¼üŽÁíþ ×ýþ¤Úýþ£ÙýþœÓýþ ×ýþ¢Øýþ¢Ùýþ¦Üýþ©Þýþ¤Ùýþ–Ïùþƒ²×÷þ/ñí7o™»üŽÀëþŸÕýþ¥Úýþ©Ýýþ ×ýþ ×ýþ ×ýþ¤Øýþ©Ýýþ®ßýþ©Üýþ¡Õûþ†´Ö÷þ/ñí7vœ»üŽÀéþžÓüþ¨Ûýþ¯àýþ©Üýþ¢×ýþ Õüþ¦Ùýþ¯Þýþ±àýþ°Þýþ®ÜüþеÖ÷þ/ñí7†¨ÃüÇëþ§Öúþ¯Ýýþ¶ãýþ·ãýþ¯Üýþ©Ùûþ¯Ûüþ·àýþ¹âýþºãýþ¼ãüþš¾Ùøþ 7ñíáíöùÍÿý€ñíýÍý ñ¡¡¡¡þŒ€ D”@²Øà(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/stop-pushed.tiffHHCynthiune-1.0.0/Images/stop.tiff000644 001751 000024 00000002324 11733546675 017225 0ustar00multixstaff000000 000000 II*¬¡¡¡¡ê"þ/þ/þ/þ/þ/þ/þ/þ/þ/þ/þ/þ/þ0þñíþ¹þ Öþ Ôþ Ôþ Ôþ Ôþ Ôþ Ôþ Ôþ Ôþ Ôþ Ôþ Ôþ ×þjñíþ!šþ%•þ'Žþ'Žþ'Žþ'Žþ'Žþ'Žþ'Žþ'Žþ'Žþ'Žþ'Žþ!–þDñíþ(ˆþ1sþ4iþ4iþ4iþ4iþ4iþ4iþ4iþ4iþ4iþ4iþ4jþ,uþ1ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ(†þ2oþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6eþ6fþ-pþ/ñíþ8ŽþG}þJuþJuþJuþJuþJuþJuþJuþJuþJuþJuþIuþBþ 7ñíþÀÍÍÿý€ñíýÍý ñ¡¡¡¡þ~€ =†@¤ÄÌ(R/home/wolfgang/programmes/gnustep/Cynthiune/Images/stop.tiffHHCynthiune-1.0.0/Hungarian.lproj/InfoPlist.strings000644 001751 000024 00000001606 11733546722 022537 0ustar00multixstaff000000 000000 ÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 0.9.5"; CFBundleGetInfoString = "Cynthiune version 0.9.5, Copyright 2002-2006 Wolfgang Sourdeau.\nThis program is distributed under the GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau. See COPYING for more information about your rights."; NSApplicationIcon = "Cynthiune"; Cynthiune-1.0.0/Hungarian.lproj/Localizable.strings000644 001751 000024 00000015474 11733546722 023061 0ustar00multixstaff000000 000000 þÿ/* Andras <reuss@chello.hu> */ /* Application menu */ "Info" = "Információk"; "Playlist" = "Lejátszási lista"; "Songs" = "Számok"; "Player" = "Lejátszó"; "Windows" = "Ablakok"; "Window" = "Ablak"; "Tools" = "Eszközök"; "Services" = Szolgáltatások"; "Hide" = Elrejtés"; "Hide Cynthiune" = "Cynthiune elrejtése"; "Hide Others" = "A többi elrejtése"; "Show All" = "Minden látszik"; "Quit" = "Kilépés"; "Quit Cynthiune" = "Kilépés a Cynthiune-ból"; /* Info submenu */ "Info Panel..." = "Névjegy..."; "About Cynthiune..." = "A Cynthiune névjegye ..."; "Preferences..." = "Beállítások..."; "Send A Bug Report..." = "Hibajelentés küldése..."; "Help..." = "Segítség..."; "Help" = "Segítség"; "Cynthiune Help" = "Segítség a Cynthiune-hoz"; /* Playlist submenu */ "Open..." = "Megnyitás..."; "New" = "Új"; "Save..." = "Mentés..."; "Save As..." = "Mentés másként..."; "Save To..." = "Mentés máshova..."; "Revert To Saved" = "Eredeti visszaállítása"; "Close" = "Bezárás"; /* Songs submenu */ "Add Songs..." = "Számok hozzáadása..."; "Remove Selection" = "Kijelöltek eltávolítása"; "Remove All" = "Az összes eltávolítása"; "Cleanup" = "Kiürítés"; /* Player submenu */ "Play" = "Lejátszás"; "Pause" = "Szünet"; "Stop" = "Állj"; "Previous" = "ElQzQ"; "Next" = "KövetkezQ"; "Mode" = "Lejátszási mód"; /* Player/Mode submenu */ "Repeat" = "Folyamatos"; "Shuffle" = "Össze-vissza"; /* Tools submenu */ "Song Inspector..." = "Szám aktája"; /* Windows submenu */ "Arrange In Front" = "ElQrehozás"; "Miniaturize Window" = "Ablak zsugorítása"; "Minimize" = "Kicsinyítés"; "Close Window" = "Ablak bezárása"; /* Playlist status label */ "%d songs - total time: %@" = "%d szám - teljes hossz: %@"; " - selection: %@" = " - kijelölt: %@"; /* Playlist table */ "Song" = "Szám"; "Time" = "Hossz"; /* Song Inspector */ "Song Inspector" = "Szám aktája"; "Song Information" = "Szám adatai"; "Format Attributes" = "Formátum tulajdonságai"; "No song selected" = "Nincs kijelölt szám"; "Lookup through MusicBrainz..." = "MusicBrainz keresés..."; "Title" = "Cím"; "Album" = "Album"; "Track" = "Szám"; "Artist" = "ElQadó"; "Genre" = "Stílus"; "Year" = "Év"; "Reset" = "Visszaállítás"; "Save" = "Mentés"; "Generating TRM..." = "TRM generálása..."; "Querying MusicBrainz server..." = "MusicBrainz-kiszolgáló keresése..."; "Received %d result(s)" = "%d találat"; /* Dialog boxes */ "Add music files..." = "Zeneállományok hozzáadása..."; "Add a music folder..." = "Zenekönyvtár hozzáadása..."; "Save playlist as..." = "Lejátszási lista mentése másként..."; /* Song names */ "[not found: %@]" = "[nem található: %@]"; "[unknown format: %@]" = "[ismeretlen formátum: %@]"; "[format error: %@]" = "[hibás formátum: %@]"; /* Preference dialog */ "None" = "Egyik sem"; "Preferences" = "Beállítások"; "General" = "Általános"; /* General preferences */ "Windows" = "Ablakok"; "Playlists" = "Lejátszási listák"; "Use absolute filenames" = "Abszolút fájlnevek használata"; "Output module" = "Kimeneti modul"; "Textured" = "Mintás"; "Sticky" = "Össztapadva"; "Remember location" = "Pozíció megjegyzése"; "Format" = "Formátum"; /* MB results panel */ "Please select the correct information..." = "Válassza ki a helyes információt..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "A MusicBrainz-kiszolgáló több találatot adott vissza.\nAz alábbi táblázatban válassza ki a legmegfelelQbb sort."; "Cancel" = "Mégsem"; Cynthiune-1.0.0/German.lproj/InfoPlist.strings000644 001751 000024 00000001606 11733546725 022037 0ustar00multixstaff000000 000000 ÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 0.9.5"; CFBundleGetInfoString = "Cynthiune version 0.9.5, Copyright 2002-2006 Wolfgang Sourdeau.\nThis program is distributed under the GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau. See COPYING for more information about your rights."; NSApplicationIcon = "Cynthiune"; Cynthiune-1.0.0/German.lproj/Localizable.strings000644 001751 000024 00000011422 11733546725 022346 0ustar00multixstaff000000 000000 ÿþ/* Julian Frede <julian.frede@cs.uni-dortmund.de> */ /* Application menu */ "Info" = "Info"; "Playlist" = "Playlist"; "Songs" = "Lieder"; "Player" = "Player"; "Windows" = "Fenster"; "Services" = "Dienste"; "Hide" = "Ausblenden"; "Hide Cynthiune" = "Cynthiune ausblenden"; "Hide Others" = "Andere ausblenden"; "Show All" = "Alle zeigen"; "Quit" = "Beenden"; "Quit Cynthiune" = "Beende Cynthiune"; /* Info submenu */ "Info Panel..." = "Info Panel..."; "About Cynthiune..." = "Über Cynthiune..."; "Preferences..." = "Einstellungen ..."; "Send A Bug Report..." = "Einen Bug Report senden..."; "Help..." = "Hilfe..."; "Help" = "Hilfe"; "Cynthiune Help" = "Cynthiune Hilfe"; /* Playlist submenu */ "Open..." = "Öffnen..."; "New" = "Neu"; "Save..." = "Speichern..."; "Save As..." = "Speichern als..."; "Save To..." = "Speichern in..."; "Revert To Saved" = "Revert To Saved"; "Close" = "Schließen"; /* Songs submenu */ "Add Songs..." = "Lied hinzufügen..."; "Remove Selection" = "Auswahl entfernen"; "Remove All" = "Alles entfernen"; "Cleanup" = "Reinigen"; /* Player submenu */ "Play" = "Play"; "Pause" = "Pause"; "Stop" = "Stop"; "Previous" = "Letztes"; "Next" = "Nächstes"; "Mode" = "Mode"; /* Player/Mode submenu */ "Repeat" = "Wiederholen"; "Shuffle" = "Mischen"; /* Windows submenu */ "Arrange In Front" = "Arrangiere im Fordergrund"; "Miniaturize Window" = "Minimiere Fenster"; "Minimize" = "Minimiere"; "Close Window" = "Schließe Fenster"; /* Dialog boxes */ "Add music files..." = "Musik Dateien hinzufügen..."; "Add a music folder..." = "Musik Verzeichnis hinzufüen..."; "Save playlist as..." = "Playlist speichern als..."; /* Song names */ "[not found: %@]" = "[nicht gefunden: %@]"; "[unknown format: %@]" = "[unbekanntes Format: %@]"; "[format error: %@]" = "[Format Fehler: %@]"; /* Preference dialog */ "None" = "Nichts"; "Preferences" = "Einstellungen"; "General" = "Generell"; /* General preferences */ "Windows" = "Fenster"; "Playlists" = "Playlists"; /* "Use absolute filenames" = ""; */ "Output module" = "Ausgabe Modul"; "Textured" = "Textured"; "Sticky" = "Sticky"; "Remember location" = "Ort Merken"; "Format" = "Format"; /* MB results panel */ /* "Please select the correct information..." */ /* = ""; */ /* "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." */ /* = ""; */ /* "Cancel" = ""; */ "Save" = "Speichern"; Cynthiune-1.0.0/GeneralPreference.nib/classes.nib000644 001751 000024 00000002220 11733546715 022421 0ustar00multixstaff000000 000000 { IBClasses = ( {CLASS = CynthiunePopUpButton; LANGUAGE = ObjC; SUPERCLASS = NSPopUpButton; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { outputBundleChanged = id; playlistFormatChanged = id; playlistReferenceTypeChanged = id; saveWindowsInformationChanged = id; stickyWindowsChanged = id; texturedWindowsChanged = id; }; CLASS = GeneralPreference; LANGUAGE = ObjC; OUTLETS = { outputBundleSelector = id; outputModuleBox = id; playlistFormatSelector = id; playlistReferenceTypeToggle = id; playlistsBox = id; playlistsFormatLabel = id; prefsWindow = id; saveWindowsInformationToggle = id; stickyWinToggle = id; texturedWindowsToggle = id; windowsBox = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }Cynthiune-1.0.0/GeneralPreference.nib/info.nib000644 001751 000024 00000000701 12014507041 021677 0ustar00multixstaff000000 000000 IBDocumentLocation 16 47 356 240 0 0 800 578 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 Cynthiune-1.0.0/GeneralPreference.nib/keyedobjects.nib000644 001751 000024 00000020173 12014507041 023424 0ustar00multixstaff000000 000000 bplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯ø +/067;?SZrsw{|~…Šœž¡¦­®ÅÆÎÏÒÖ×ÚÛàæéêìíðñóôøùûüý  #&,.16=>?@RSTejkpqrvxyz|~„y…‡‹Ž’“—˜›œž¢¥¦¨©ªü«­®´¶¹¼=>ÁÂÇÈÉÌÏyÐÑÕØyÙÜyÝÞüßáâãäåæéêîðñóôö÷úûþ    !"%')+CDCBuEB%F>FGäHIIJKäL>äMOQS}~€‚ƒ„…†‡ˆ‰HŠ‹Œ»Ž‘’“”•–—˜™fš›œžÍŸU$nullß  !"#$%&'()*[NSNamesKeys[NSFramework_NSObjectsValues]NSNamesValues]NSConnections]NSFontManagerVNSRootYNSNextOid_NSVisibleWindows]NSObjectsKeys]NSClassesKeysZNSOidsKeys\NSOidsValuesV$class_NSClassesValues€³€€²€´€€€-€€°€Ë€Í€Î€÷€ÌÒ,-.[NSClassName€€_GeneralPreferenceÒ1234X$classesZ$classname¢45^NSCustomObjectXNSObject_IBCocoaFrameworkÒ89:ZNS.objects €Ò12<=£=>5\NSMutableSetUNSSetÒ8@R¯ABCDEFGHIJKLMNOPQ€ €€‘€“€•€˜€š€œ€ž€ €¢€¤€¦€¨€ª€¬€®€+ÔTUVWXY"]NSDestinationWNSLabelXNSSource€ €€ŽÜ[\]^_`abcdefghijklmnopq_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€Š€ €€ €‰€‹€px€Œ€_{{59, 286}, {315, 261}}ÒtuvYNS.stringVWindow€ Ò12xy£yz5_NSMutableStringXNSStringXNSWindowÒt}vTViewÔ€‚!ƒ„ZNSSubviews_NSNextResponderWNSFrame€€ˆ€-Ò8†R£‡ˆ‰€€=€lÜ€‹ŒŽ‘’“nn”g•–—˜™š›[NSSuperview\NSBorderType_NSTitlePosition[NSTitleCellYNSOffsets]NSTransparent]NSContentViewYNSBoxType€€0€.€/€€<Ò8R¡™Õ€‹Ÿ‡‡ „€€,Ò8¢R££¤¥€€#€'Ö€‹§¨™™©ª«¬YNSEnabledVNSCell€ €"€_{{13, 32}, {122, 18}}ݯ°±²³´µ¶·¸¹º»¼½¾¿£gÀÁÂýÄ_NSPeriodicInterval_NSAlternateImage_NSAlternateContentsYNSSupportZNSContents]NSControlView^NSButtonFlags2]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSKeyEquivalent\NSCellFlags2€€ €€H€j€h€i€?Ò8-R¡+Õ€‹/ˆˆ0„€@€gÒ82R£345€A€[€cØ€‹7§¨,++89ª:;<_NSOriginalClassName€C€D€Z€E€B_CynthiunePopUpButton]NSPopUpButton_{{124, 35}, {92, 22}}ß°¸µ¶AB±¯C·ºD´¹²EF¾GHIJKLM”NOPª3Q¾ªHVNSMenuZNSMenuItem_NSPreferredEdge]NSAltersState_NSUsesItemFromMenu_NSArrowPositionÿÿÿÿ„Aþ‚@ÿ€I€H€FK€Y€GÒtÚvÒtÚvÛAUVWXYZ[\]J^H_`½;abcd]NSMnemonicLocWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImage_NSKeyEquivModMaskXNSActionÿÿÿ€J€K€O€R€QÓWfghi[NSMenuItems€S€X€TSM3UÓl,mno^NSResourceName€M€N€LWNSImage_NSMenuCheckmarkÒ12st£tu5_NSCustomResource_%NSCustomResourceÓl,wno€P_NSMenuMixedState__popUpItemAction:Ò12{B¢B5Òt}vZOtherViewsÒ8R¢K€€UÚAUWXYZ[\]J^‚`½;abcƒ€V€WSPLSÒ12†A¢A5Ò12ˆ‰§‰ŠÝÞߨ5_NSPopUpButtonCell^NSMenuItemCellÒ12Œ¢5^NSClassSwapperÖ€‹§¨++ª‘€\€b€]_{{11, 36}, {111, 19}}Øþ²³´¸ÿº¾”4Õ–€^€_@WFormat Õ    ™š€a€`\controlColorÓ ”K0.66666669Ò12Ÿ ¦ ¡ãäå5[NSTextField\%NSTextFieldÖ€‹§¨++£ª«¤€d€e_{{76, 12}, {169, 18}}ݯ°±²³´µ¶·¸¹º»¼½¾§5gÀÁÂýĀf_Use abolute filenames_{{2, 2}, {271, 67}}_{{20, 85}, {275, 87}}×þ²³¸ÿº¬Ãš€kYPlaylistsÜ€‹ŒŽ‘’¯nn”g°±²˜³š›€m€†€„€…€nÒ8µR¡³Õ€‹·‰‰¸„€o€ƒÒ8ºR¡»€pØ€‹7§¨,³³½¾ª:¿À€r€s€t€q_{{72, 10}, {145, 22}}ß°¸µ¶AB±¯C·ºD´¹²EF¾GHIÃÄÅM”NOPª»ƾªH€x€w€u€vÒtÚvÒtÚvÛAUVWXYZ[\]Ã^HÊ`½¿abcË€y€zÓWfÍh΀{€|UItem1Òt}vÒ8ÒR£ÄÓÔ€}€€ÚAUWXYZ[\]Ã^Ö`½¿abc×€~€UItem2ÚAUWXYZ[\]Ã^Ú`½¿abcÛ€€‚UItem3_{{2, 2}, {271, 42}}_{{20, 20}, {275, 62}}×þ²³¸ÿºàÚ€‡]Output module_{{1, 9}, {315, 261}}_{{0, 0}, {800, 578}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò12çè¢è5_NSWindowTemplate[prefsWindowÒ12ëì£ìí5_NSNibOutletConnector^NSNibConnectorÔTUV£ïY"€_stickyWinToggleÔTUV»òY"€’_outputBundleSelectorÔTUV3õY"€”_playlistFormatSelectorÔTUV"øù£€–€—_stickyWindowsChanged:Ò12üý£ýí5_NSNibControlConnectorÔTUV"ÿù3€™_playlistFormatChanged:ÔTUV"ù»€›_outputBundleChanged:ÔTUV‰Y"€_outputModuleBoxÔTUVˆY"€Ÿ\playlistsBoxÔTUV4 Y"€¡_playlistsFormatLabelÔTUV¤Y"€£_saveWindowsInformationToggleÔTUV‡Y"€¥ZwindowsBoxÔTUV"ù¤€§_saveWindowsInformationChanged:ÔTUV¥Y"€©_texturedWindowsToggleÔTUV"ù¥€«_texturedWindowsChanged:ÔTUV5Y"€­_playlistReferenceTypeToggleÔTUV" ù5€¯_playlistReferenceTypeChanged:Ò8#$¯54£ÄWˆK‡Ó»€¤+¥ÃJ‰Ô³3™n€±Ò12&÷¢÷5Ò8($¯++™Ã"nJnóJ™ˆ™»3nÉ+‡WÒ8*$¯54£ÄWˆK‡Ó»€¤+¥ÃJ‰"³Ô3™Ò8,$¯-./0123456789:;<=>?@AB€µ€¶€·€¸€¹€º€»€¼€½€¾€¿€À€Á€Â€Ã€Ä€Å€Æ€Ç€È€É€ÊYNSButton4^NSTextField211VNSBox1[NSMenuItem1ZNSButton41ZNSButton42YPopUpListVNSBox2\File's Owner[NSMenuItem2Ò8N$¢»3Ò8P$¢À<Ò8R$¯(n+IKHPN35€BG³J"WKOÔE‡A™Ä»JÓ¥ˆLÃF¤QD4M£‰CÒ8T$¯(UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|€Ï€Ð€Ñ€Ò€Ó€Ô€Õ€Ö€×€Ø€Ù€Ú€Û€Ü€Ý€Þ€ß€à€á€â€ã€ä€å€æ€ç€è€é€ê€ë€ì€í€î€ï€ð€ñ€ò€ó€ô€õ€ö "$!+(*  )#' %,&  Ò12 ¡¢¡5^NSIBObjectData#,1:LQVdfY_žª¶ÈÖäòù$2=JQcegikmoqsuwy{}Š–˜š®·ÀËÐßèû"/5>cegikmoqsuwy{}ƒ…‡˜¦®·¹»½î,:GT^kuƒ…‡‰‹‘“˜šœ¶¿ÉÐÒÛâôý%0BJLNPY`bdf—£°ÂÎØæôþ   024=DFHJcmtvwy{“ÈÝð)8FXdvƒ…‡‰‹’”–› §¸¿ÆÏÔÖØÚçðõü      ' , B C L W d r  ˆ “ œ ¦ ­ ¹ Ò Ô Ö î # % 3 L N P i ž   © ² ¹ È Ð æ ï ö   3 ? S U W Y [ ] e v { } ’ š ¦ ³ Á Ã Å Ç É Ë Ò è õ ý  # % ' : G J S \ n w € † · ¹ » ½ ¿ Á Ê Í â ä æ ï ö ø ú ü  3 5 7 9 ; = T b z Å Ì × é ÷ ').02469;@BKT—Ÿ©´½ÊÞçìîðòôùû+:<>@HZcj}‘ž ³ÇÐÕÞéò÷ù"$&*38APds|©«­¯Çèêìñù,8ANZg€‚„œÑÓë68Bsuwy{}†‰ž ¢«®°ÑÓÕ×Ùñ<>@BDMVƒ…‡”–˜ž§°·¹»äæèî!7Oln|“ªµÒÛàóÿ&5FHZkm„•—°ÁÃÅÝæí1BD[ln€‘“ ±³ÊÛÝü +-N_ayŠŒ¦·¹×èê BDMR[Š“ÂËúüþ   "$&0?FR]hry†’› ©®· fhjlnprtvxz|~€‚„†ˆŠŒŽ’”–˜šœž ¢¤¦¨ª¬®°²´¶¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜÞàâäæèêìîðòôöøú¢Cynthiune-1.0.0/GeneralPreference.gorm/data.classes000644 001751 000024 00000001634 11733546725 022767 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; CynthiunePopUpButton = { Actions = ( ); Outlets = ( ); Super = NSPopUpButton; }; FirstResponder = { Actions = ( "playlistReferenceTypeChanged:", "orderFrontFontPanel:", "outputBundleChanged:", "playlistFormatChanged:", "saveWindowsInformationChanged:", "stickyWindowsChanged:" ); Super = NSObject; }; GeneralPreference = { Actions = ( "outputBundleChanged:", "stickyWindowsChanged:", "playlistFormatChanged:", "saveWindowsInformationChanged:", "playlistReferenceTypeChanged:" ); Outlets = ( outputBundleSelector, prefsWindow, stickyWinToggle, playlistFormatSelector, saveWindowsInformationToggle, outputModuleBox, playlistsBox, windowsBox, playlistsFormatLabel, playlistReferenceTypeToggle ); Super = NSObject; }; }Cynthiune-1.0.0/GeneralPreference.gorm/data.info000644 001751 000024 00000000270 11733546725 022260 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamCynthiune-1.0.0/GeneralPreference.gorm/objects.gorm000644 001751 000024 00000015215 11733546725 023016 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:00000024:000000c2:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±&%GeneralPreference0±&% Box301NSBox1NSView1 NSResponder% A A0 Cƒ€ B€  Cƒ€ B€&01 NSMutableArray1 NSArray&0±% @à @à Cy B   Cy B &0 ± &0 1 GSControlTemplate1 GSClassSwapper0 ±&%CynthiunePopUpButton1 NSPopUpButton1NSButton1 NSControl% B¢ @  B² A°  B² A°&0 ± &%0 1NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell1 NSActionCell1NSCell0±&01NSFont%&&&&&&&&01NSMenu0±&0± &01 NSMenuItem0±&%Item 10±&&&ÿ%01NSImage0±& % common_Nibble’%0±0±&%Item 2°&&ÿ%’%0±0±&%Item 3°&&ÿ%’%%’0±&0±&&&&°°%%%%%01NSTextFieldCell0±& % Output module°&&&&&&&&0%’0 1NSColor0!±&%NSNamedColorSpace0"±&%System0#±&%windowBackgroundColor0$±°!0%±&%System0&±& % textColor @  @ %%0'±& %  MenuItem10(±0)±&%PLS0*±&&&ÿ%’%0+±& % TextField0,1 NSTextField% B¦ B B\ A   B\ A &0-± &%0.±0/±&%Format°&&&&&&&&0%’00±°!01±&%System02±&%textBackgroundColor03±°!°104±& % textColor’05±& %  MenuItem206±07±&%M3U08±&&&ÿ%°’%09±& %  MenuItem30:±0;±&%PLS°8&&ÿ%’%0<±&%Button0=±% A° A0 C. A€  C. A€&0>± &%0?±0@±&%Remember location0A±0B1NSMutableString&% common_SwitchOff°&&&&&&&&%’0C±&0D±&0E±0F±&% common_SwitchOn&&&0G±& %  MenuItem4°0H±& %  MenuItem5°0I±& %  MenuItem6°0J±&%MenuItem0K±0L±&%M3U°*&&ÿ%°’%0M±& % GormNSWindow0N1GSWindowTemplate0O±&%NSWindow1NSWindow%  CŽ€ C„€&% C†€ DÀ0P±%  CŽ€ C„€  CŽ€ C„€&0Q± &0R±% A C- Cƒ€ B¤  Cƒ€ B¤&0S± &0T±% @à @à Cy Bh  Cy Bh&0U± &°=0V±% A° B C. A€  C. A€&0W± &%0X±0Y±&%Sticky°A°&&&&&&&&%’0Z±&0[±&°E&&&0\±0]±&%Windows°&&&&&&&&0%’° 0^±°!0_±&%System0`±& % textColor @  @ %%0a±% A B  Cƒ€ B°  Cƒ€ B°&0b± &0c±% @à @à Cy B€  Cy B€&0d± &0e± 0f±&%CynthiunePopUpButton± % C B B` A°  B` A°&0g± &%0h±0i±&°&&&&&&&&0j±0k±&0l± &°6°:%’0m±&0n±&&&&°6°j%%%%%°,0o±% A A0 C= A€  C= A€&0p± &%0q±0r±&%Use absolute filenames°A°&&&&&&&&%’0s±&0t±&°E&&&0u±0v±& % Playlists°&&&&&&&&0%’° 0w±°!0x±&%System0y±& % textColor @  @ %%°° 0z±&%Window0{±&%Window0|±&%Window ?€ B F@ F@%0}±0~±&%NSApplicationIcon&   D€ D@0±&%GSCustomClassMap0€±&0±&% GormNSPopUpButton1° 0‚±&% GormNSPopUpButton2°f0ƒ±&%Box0„±% B„ A  C` BŽ  C` BŽ&0…± &0†±% @à @à CR B<  CR B<&0‡± &0ˆ±0‰±&%Box°&&&&&&&&0%’° 0б°!0‹±&%System0Œ±& % textColor @  @ %%°° °‚°e0±&% Button1°V0ޱ&% Button2°o0±&% Box1°R0±&% Box2°a0‘± &!!0’1NSNibConnector°M°0“1 NSNibOutletConnector°°M0”±& % prefsWindow0•±°ƒ0–±°0—±°<0˜±°0™±°0š±°J0›±°'0œ±°‚0±°50ž±°90Ÿ±°0 ±°0¡±°+0¢± °°0£±&%stickyWinToggle0¤± °°‚0¥±&%playlistFormatSelector0¦± °°0§±&%outputBundleSelector0¨1!NSNibControlConnector°°0©±&%stickyWindowsChanged:0ª±!°°0«±&%outputBundleChanged:0¬±!°‚°0­±&%playlistFormatChanged:0®±!°<°0¯±&% saveWindowsInformationChanged:0°± °°<0±±&%saveWindowsInformationToggle0²±°G0³±°H0´±°I0µ± °°0¶±& % windowsBox0·± °°0¸±& % playlistsBox0¹± °°0º±&%outputModuleBox0»± °°+0¼±&%playlistsFormatLabel0½±°Ž0¾± °°Ž0¿±&% playlistReferenceTypeToggle0À±!°Ž°0Á±&% playlistReferenceTypeChanged:0Â1" GSMutableSet1# NSMutableSet1$NSSet&°NCynthiune-1.0.0/French.lproj/InfoPlist.strings000644 001751 000024 00000003036 11733546722 022027 0ustar00multixstaff000000 000000 ÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 0.9.5"; CFBundleGetInfoString = "Cynthiune version 0.9.5, Copyright 2002-2006 Wolfgang Sourdeau.\nCe programme est distribué sous la GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau. Consultez le fichier COPYING pour plus d'information."; NSApplicationIcon = "Cynthiune"; /* File types */ "Ogg music file" = "Fichier musical OGG"; "MPEG music file" = "Fichier musical MPEG"; "Musepack music file" = "Fichier musical MPEG"; "FLAC music file" = "Fichier musical FLAC"; "Sound file" = "Fichier de son"; "Tracker music file" = "Fichier de séquenceur musical"; "Playlist file" = "Liste de lecture musicale"; Cynthiune-1.0.0/French.lproj/Localizable.strings000644 001751 000024 00000016020 11733546722 022336 0ustar00multixstaff000000 000000 ÿþ/* Application menu */ "Info" = "Informations"; "Playlist" = "Liste de lecture"; "Songs" = "Chansons"; "Player" = "Lecteur"; "Tools" = "Outils"; "Windows" = "Fenêtres"; "Window" = "Fenêtre"; "Services" = "Services"; "Hide" = "Cacher"; "Hide Cynthiune" = "Cacher Cynthiune"; "Hide Others" = "Cacher les autres"; "Show All" = "Tout montrer"; "Quit" = "Quitter"; "Quit Cynthiune" = "Quitter Cynthiune"; /* Info submenu */ "Info Panel..." = "À propos..."; "About Cynthiune..." = "À propos de Cynthiune..."; "Preferences..." = "Préférences..."; "Send A Bug Report..." = "Rapporter un bogue..."; "Help..." = "Aide..."; "Help" = "Aide"; "Cynthiune Help" = "Aide de Cynthiune"; /* Playlist submenu */ "Open..." = "Ouvrir..."; "New" = "Nouveau"; "Save..." = "Enregistrer..."; "Save As..." = "Enregistrer sous..."; "Save To..." = "Enregistrer vers..."; "Revert To Saved" = "Revenir à l'original"; "Close" = "Fermer"; /* Songs submenu */ "Add Songs..." = "Ajouter des chansons..."; "Remove Selection" = "Enlever la sélection"; "Remove All" = "Vider la liste"; "Cleanup" = "Nettoyer"; /* Player submenu */ "Play" = "Jouer"; "Pause" = "Pause"; "Stop" = "Arrêter"; "Previous" = "Précédent"; "Next" = "Suivant"; "Mode" = "Mode"; /* Player/Mode submenu */ "Repeat" = "Continu"; "Shuffle" = "Aléatoire"; /* Tools submenu */ "Song Inspector..." = "Inspecteur de chanson..."; /* Windows submenu */ "Arrange In Front" = "Mettre au premier plan"; "Miniaturize Window" = "Réduire la fenêtre"; "Minimize" = "Réduire"; "Close Window" = "Fermer la fenêtre"; /* Playlist status label */ "%d songs - total time: %@" = "%d chansons - durée totale: %@"; " - selection: %@" = " - sélection: %@"; /* Playlist table */ "Song" = "Chanson"; "Time" = "Durée"; /* Song Inspector */ "Song Inspector" = "Inspecteur de chanson"; "Song Information" = "Discographie"; "Format Attributes" = "Attributs du format"; "No song selected" = "Aucune chanson sélectionnée"; "Lookup through MusicBrainz..." = "Chercher sur MusicBrainz..."; "Title" = "Titre"; "Album" = "Album"; "Track" = "Piste"; "Artist" = "Artiste"; "Genre" = "Genre"; "Year" = "Année"; "Reset" = "Rétablir"; "Save" = "Sauver"; "Generating TRM..." = "Génération du TRM..."; "Querying MusicBrainz server..." = "Requête au serveur de MusicBrainz..."; "Received %d result(s)" = "%d résutat(s) obtenu(s)"; "The MusicBrainz server was too busy" = "Le serveur de MusicBrainz est trop occupé"; /* Dialog boxes */ "Add music files..." = "Ajouter des fichiers musicaux..."; "Add a music folder..." = "Ajouter un dossier musical..."; "Save playlist as..." = "Sauve la liste de lecture sous..."; /* Song names */ "[not found: %@]" = "[non-trouvé: %@]"; "[unknown format: %@]" = "[format inconnu: %@]"; "[format error: %@]" = "[erreur de format: %@]"; /* Preference dialog */ "None" = "Aucun"; "Preferences" = "Préférences"; "General" = "Général"; /* General preferences */ "Windows" = "Fenêtres"; "Playlists" = "Listes de lecture"; "Use absolute filenames" = "Noms de fichier absolus"; "Output module" = "Module de sortie"; "Textured" = "Métalisées"; "Sticky" = "Magnétisées"; "Remember location" = "Retenir la disposition"; "Format" = "Format"; /* MB results panel */ "Please select the correct information..." = "Veuillez choisir l'information la plus correcte..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "La requête au serveur de MusicBrainz a retourné plusieurs résultats.\nVeuillez choisir celui qui vous semble le plus approprié."; "Cancel" = "Annuler"; Cynthiune-1.0.0/Frameworks/Cynthiune/000755 001751 000024 00000000000 12117456031 020225 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Frameworks/Cynthiune/CynthiuneBundle.h000644 001751 000024 00000002156 11733546727 023521 0ustar00multixstaff000000 000000 /* CynthiuneBundle.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CYNTHIUNEBUNDLE_H #define CYNTHIUNEBUNDLE_H @class NSArray; @class NSString; @protocol NSObject; @protocol CynthiuneBundle + (NSString *) bundleDescription; + (NSArray *) bundleCopyrightStrings; @end #endif /* CYNTHIUNEBUNDLE_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/Format.h000644 001751 000024 00000003125 11754426600 021634 0ustar00multixstaff000000 000000 /* Format.h - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Format_H #define Format_H #import typedef enum { NativeEndian = 0, LittleEndian = 1, BigEndian = 2 } Endianness; @class NSString; @protocol NSObject; @protocol Format + (BOOL) canTestFileHeaders; + (BOOL) streamTestOpen: (NSString *) fileName; + (NSArray *) acceptedFileExtensions; + (NSArray *) compatibleTagBundles; - (BOOL) streamOpen: (NSString *) fileName; - (void) streamClose; - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize; - (BOOL) isSeekable; - (void) seek: (unsigned int) seconds; - (unsigned int) readChannels; - (unsigned long) readRate; - (Endianness) endianness; - (unsigned int) readDuration; @end #endif /* Format_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/GNUmakefile000644 001751 000024 00000004106 12014507041 022272 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2004, 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = Cynthiune LIBRARY_VAR = CYNTHIUNE LIBRARY_NAME = Cynthiune FRAMEWORK_NAME = Cynthiune CYNTHIUNE_MAJOR_VERSION=0 CYNTHIUNE_MINOR_VERSION=0 CYNTHIUNE_SUBMINOR_VERSION=1 CYNTHIUNE_VERSION=${CYNTHIUNE_MAJOR_VERSION}.${CYNTHIUNE_MINOR_VERSION}.${CYNTHIUNE_SUBMINOR_VERSION} VERSION=${CYNTHIUNE_VERSION} Cynthiune_LANGUAGES= Cynthiune_LOCALIZED_RESOURCE_FILES= # # Resource files # Cynthiune_RESOURCE_FILES= # # Header files # Cynthiune_HEADER_FILES= \ CynthiuneBundle.h \ Format.h \ NSArrayExtensions.h \ NSCellExtensions.h \ NSColorExtensions.h \ NSNumberExtensions.h \ NSStringExtensions.h \ NSTimerExtensions.h \ NSViewExtensions.h \ Output.h \ Preference.h \ utils.h # # Class files # Cynthiune_OBJC_FILES= \ NSArrayExtensions.m \ NSCellExtensions.m \ NSColorExtensions.m \ NSNumberExtensions.m \ NSStringExtensions.m \ NSTimerExtensions.m \ NSViewExtensions.m \ utils.m Cynthiune_LIBRARIES_DEPEND_UPON += $(OBJC_LIBS) $(GUI_LIBS) \ -l$(FOUNDATION_LIBRARY_NAME) -include GNUmakefile.preamble -include GNUmakefile.local ifeq (mingw32, $(GNUSTEP_TARGET_OS)) include $(GNUSTEP_MAKEFILES)/library.make else include $(GNUSTEP_MAKEFILES)/framework.make endif -include GNUmakefile.postamble Cynthiune-1.0.0/Frameworks/Cynthiune/GNUmakefile.preamble000644 001751 000024 00000001603 11733561774 024103 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Frameworks/Cynthiune/NSArrayExtensions.h000644 001751 000024 00000003206 11733546727 024015 0ustar00multixstaff000000 000000 /* NSArrayExtensions.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NSARRAYEXTENSIONS_H #define NSARRAYEXTENSIONS_H #import @class NSString; @interface NSArray (CynthiuneExtension) // + (NSArray *) arrayFromPlaylistFile: (NSString *) filename; // - (BOOL) containsAllSubarray: (NSArray *) subarray; - (NSArray *) subarrayWithObjectsAtIndexes: (NSArray *) indexes; - (unsigned int) numberOfValuesBelowValue: (int) index; @end @interface NSMutableArray (CynthiuneExtension) - (void) addObjectsFromArray: (NSArray*) otherArray atIndex: (unsigned int) index; - (unsigned int) moveObjectsAtIndexes: (NSArray *) indexes toIndex: (unsigned int) index; - (void) addObjectRandomly: (id) object; - (void) rotateUpToObject: (id) object; @end #endif /* NSARRAYEXTENSIONS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/NSArrayExtensions.m000644 001751 000024 00000012125 11733546725 024020 0ustar00multixstaff000000 000000 /* NSArrayExtensions.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #define _GNU_SOURCE 1 #import #import #import #import #import #import "NSArrayExtensions.h" #import "utils.h" @implementation NSArray (CynthiuneExtension) // + (NSArray *) arrayFromPlaylistFile: (NSString *) filename // { // NSArray *array; // if (filename) // { // if (fileIsAcceptable (filename)) // { // } // else // raiseException (@"invalid filename", @"'filename' parameter should" // @" represent a valid and readable file"); // } // else // raiseException (@"'nil' filename", @"the 'filename' parameter cannot be nil"); // return array; // } // - (BOOL) containsAllSubarray: (NSArray *) subarray // { // NSEnumerator *enumerator; // id object; // BOOL result; // result = YES; // enumerator = [subarray objectEnumerator]; // object = [enumerator nextObject]; // while (object && result) // { // result = [self containsObject: object]; // object = [enumerator nextObject]; // } // return result; // } - (NSArray *) subarrayWithObjectsAtIndexes: (NSArray *) indexes { NSEnumerator *enumerator; NSMutableArray *subarray; id index; subarray = [NSMutableArray new]; [subarray autorelease]; enumerator = [indexes objectEnumerator]; index = [enumerator nextObject]; while (index) { [subarray addObject: [self objectAtIndex: [index intValue]]]; index = [enumerator nextObject]; } return subarray; } - (unsigned int) numberOfValuesBelowValue: (int) value { NSEnumerator *enumerator; NSNumber *object; unsigned int count; int currentValue; count = 0; enumerator = [self objectEnumerator]; object = [enumerator nextObject]; while (object) { currentValue = [object intValue]; if (currentValue < value) count++; object = [enumerator nextObject]; } return count; } @end @implementation NSMutableArray (CynthiuneExtension) - (void) addObjectsFromArray: (NSArray*) otherArray atIndex: (unsigned int) index { NSEnumerator *enumerator; unsigned int offset; id object; offset = 0; enumerator = [otherArray objectEnumerator]; object = [enumerator nextObject]; while (object) { [self insertObject: object atIndex: index + offset]; offset++; object = [enumerator nextObject]; } } - (unsigned int) moveObjectsAtIndexes: (NSArray *) indexes toIndex: (unsigned int) index { unsigned int newIndex; NSArray *objects; newIndex = 0; if (indexes) { if (index <= [self count]) { newIndex = (index - [indexes numberOfValuesBelowValue: index]); objects = [self subarrayWithObjectsAtIndexes: indexes]; [self removeObjectsInArray: objects]; if (newIndex == [self count] + 1) newIndex--; [self addObjectsFromArray: objects atIndex: newIndex]; } else indexOutOfBoundsException (index, [self count] + 1); } else raiseException (@"'nil' array", @"nil 'indexes' parameter"); return newIndex; } - (void) addObjectRandomly: (id) object { unsigned int randomPos; time_t now; static time_t seedModifier; if (object) { seedModifier++; time (&now); srand (now + seedModifier); randomPos = ((float) [self count] * rand ()) / RAND_MAX + .5; [self insertObject: object atIndex: randomPos]; } else raiseException (@"'nil' object", @"nil 'object' parameter"); } - (void) rotateUpToObject: (id) object { id currentObject; if (object) { if ([self containsObject: object]) { currentObject = [self objectAtIndex: 0]; while (currentObject != object) { [currentObject retain]; [self removeObjectAtIndex: 0]; [self addObject: currentObject]; [currentObject release]; currentObject = [self objectAtIndex: 0]; } } else raiseException (@"Object not in array", @"the given object was not found in the array"); } else raiseException (@"'nil' object", @"nil 'object' parameter"); } @end Cynthiune-1.0.0/Frameworks/Cynthiune/NSCellExtensions.h000644 001751 000024 00000002073 11733546727 023617 0ustar00multixstaff000000 000000 /* NSCellExtensions.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NSCELLEXTENSIONS_H #define NSCELLEXTENSIONS_H #import @interface NSCell (CynthiuneExtensions) - (float) widthOfText: (NSString *) text; @end #endif /* NSCELLEXTENSIONS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/NSCellExtensions.m000644 001751 000024 00000002414 11733561774 023622 0ustar00multixstaff000000 000000 /* NSCellExtensions.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import "NSCellExtensions.h" @implementation NSCell (CynthiuneExtensions) - (float) widthOfText: (NSString *) text { NSDictionary *attributes; attributes = [NSDictionary dictionaryWithObject: [self font] forKey: NSFontAttributeName]; return [text sizeWithAttributes: attributes].width + 5.0; } @end Cynthiune-1.0.0/Frameworks/Cynthiune/NSColorExtensions.h000644 001751 000024 00000002220 12112463315 023767 0ustar00multixstaff000000 000000 /* NSColorExtensions.h - this file is part of $PROJECT_NAME_HERE$ * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NSCOLOREXTENSIONS_H #define NSCOLOREXTENSIONS_H #import @interface NSColor (CynthiuneExtensions) + (NSColor *) evenRowsBackgroundColor; + (NSColor *) oddRowsBackgroundColor; + (NSColor *) rowsHighlightColor; @end #endif /* NSCOLOREXTENSIONS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/NSColorExtensions.m000644 001751 000024 00000002770 12112463315 024006 0ustar00multixstaff000000 000000 /* NSColorExtensions.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import "NSColorExtensions.h" @implementation NSColor (CynthiuneExtensions) + (NSColor *) evenRowsBackgroundColor { return [NSColor colorWithDeviceRed: 0.88 green: 0.88 blue: 1.0 alpha: 1.0]; } + (NSColor *) oddRowsBackgroundColor { return [self colorWithDeviceRed: 0.98 green: 0.98 blue: 1.0 alpha: 1.0]; } + (NSColor *) rowsHighlightColor { return [NSColor colorWithDeviceRed: 0.92 green: 0.893 blue: 0.209 alpha: 1.00]; // return [NSColor alternateSelectedControlColor]; } @end Cynthiune-1.0.0/Frameworks/Cynthiune/NSNumberExtensions.h000644 001751 000024 00000002121 11733546727 024162 0ustar00multixstaff000000 000000 /* NSNumberExtensions.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NSNUMBEREXTENSIONS_H #define NSNUMBEREXTENSIONS_H #import @class NSString; @interface NSNumber (CynthiuneExtension) - (NSString *) timeStringValue; @end #endif /* NSNUMBEREXTENSIONS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/NSNumberExtensions.m000644 001751 000024 00000002714 11733546727 024177 0ustar00multixstaff000000 000000 /* NSNumberExtensions.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import "NSNumberExtensions.h" @implementation NSNumber (CynthiuneExtension) - (NSString *) timeStringValue { NSString *timeString; unsigned int hours, minutes, seconds; seconds = [self unsignedIntValue]; hours = seconds / 3600; if (hours) seconds = seconds % (hours * 3600); minutes = seconds / 60; if (minutes) seconds = seconds % (minutes * 60); timeString = (hours) ? [NSString stringWithFormat: @"%d:%.2d:%.2d", hours, minutes, seconds] : [NSString stringWithFormat: @"%d:%.2d", minutes, seconds]; return timeString; } @end Cynthiune-1.0.0/Frameworks/Cynthiune/NSStringExtensions.h000644 001751 000024 00000002314 11733546727 024204 0ustar00multixstaff000000 000000 /* NSStringExtensions.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NSSTRINGEXTENSIONS_H #define NSSTRINGEXTENSIONS_H #import @interface NSString (CynthiuneExtension) - (NSComparisonResult) numericallyCompare: (NSString *) aString; - (NSString *) relativePathFromDirectoryToFile: (NSString *) filename; - (NSArray *) linesFromFileContent; @end #endif /* NSSTRINGEXTENSIONS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/NSStringExtensions.m000644 001751 000024 00000006403 11733546727 024214 0ustar00multixstaff000000 000000 /* NSStringExtensions.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import "NSStringExtensions.h" #import "utils.h" @implementation NSString (CynthiuneExtension) - (NSComparisonResult) numericallyCompare: (NSString *) aString { NSComparisonResult result; int firstValue, secondValue; firstValue = [self intValue]; secondValue = [aString intValue]; if (firstValue < secondValue) result = NSOrderedAscending; else if (firstValue > secondValue) result = NSOrderedDescending; else result = NSOrderedSame; return result; } - (NSString *) _relativePathFromDirectoryToFile: (NSString *) filename { NSArray *filePathComponents, *directoryPathComponents; unsigned int deltaPoint, count, max; NSString *path; path = @""; directoryPathComponents = [self pathComponents]; filePathComponents = [filename pathComponents]; max = [directoryPathComponents count]; count = 0; while (count < max && [[directoryPathComponents objectAtIndex: count] isEqualToString: [filePathComponents objectAtIndex: count]]) count++; deltaPoint = count; for (count = deltaPoint; count < max; count++) path = [path stringByAppendingPathComponent: @".."]; max = [filePathComponents count]; for (count = deltaPoint; count < max; count++) path = [path stringByAppendingPathComponent: [filePathComponents objectAtIndex: count]]; return path; } - (NSString *) relativePathFromDirectoryToFile: (NSString *) filename { NSString *path; path = @""; if (filename) { if ([self isAbsolutePath]) { if ([filename isAbsolutePath]) path = [self _relativePathFromDirectoryToFile: filename]; else raiseException (@"relative file reference", @"the reference file should be an" @" absolute filename"); } else raiseException (@"relative directory reference", @"the reference directory should be an" @" absolute filename"); } else raiseException (@"'nil' string", @"nil 'filename' parameter"); return path; } - (NSArray *) linesFromFileContent { NSArray *fileLines; fileLines = [self componentsSeparatedByString: @"\r\n"]; if ([self isEqualToString: [fileLines objectAtIndex: 0]]) fileLines = [self componentsSeparatedByString: @"\n"]; return fileLines; } @end Cynthiune-1.0.0/Frameworks/Cynthiune/NSTimerExtensions.h000644 001751 000024 00000002055 11733546725 024016 0ustar00multixstaff000000 000000 /* NSTimerExtensions.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NSTIMEREXTENSIONS_H #define NSTIMEREXTENSIONS_H #import @interface NSTimer (CynthiuneExtensions) - (void) explode; @end #endif /* NSTIMEREXTENSIONS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/NSTimerExtensions.m000644 001751 000024 00000002422 11733546725 024021 0ustar00multixstaff000000 000000 /* NSTimerExtensions.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import "NSTimerExtensions.h" @implementation NSTimer (CynthiuneExtensions) - (void) explode { NSRunLoop *runLoop; runLoop = [NSRunLoop currentRunLoop]; [runLoop addTimer: self forMode: NSDefaultRunLoopMode]; [runLoop addTimer: self forMode: NSEventTrackingRunLoopMode]; [runLoop addTimer: self forMode: NSModalPanelRunLoopMode]; } @end Cynthiune-1.0.0/Frameworks/Cynthiune/NSViewExtensions.h000644 001751 000024 00000002215 11733546725 023646 0ustar00multixstaff000000 000000 /* NSViewExtensions.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NSVIEWEXTENSIONS_H #define NSVIEWEXTENSIONS_H #import @interface NSView (CynthiuneExtension) - (void) arrangeViewRightTo: (NSView *) view; - (void) arrangeViewLeftTo: (NSView *) view; - (void) centerViewHorizontally; @end #endif /* NSVIEWEXTENSIONS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/NSViewExtensions.m000644 001751 000024 00000004531 11763436014 023646 0ustar00multixstaff000000 000000 /* NSViewExtensions.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import "NSViewExtensions.h" #define interviewSpacing 5.0 @implementation NSView (CynthiuneExtension) - (void) arrangeViewRightTo: (NSView *) view { NSRect selfFrame, viewFrame; selfFrame = [self frame]; viewFrame = [view frame]; selfFrame.origin.x = NSMaxX (viewFrame) + interviewSpacing; [self setFrame: selfFrame]; [self setNeedsDisplay: YES]; } - (void) arrangeViewLeftTo: (NSView *) view { NSRect selfFrame, viewFrame; selfFrame = [self frame]; viewFrame = [view frame]; selfFrame.origin.x = (NSMinX (viewFrame) - interviewSpacing - NSWidth (selfFrame)); [self setFrame: selfFrame]; [self setNeedsDisplay: YES]; } - (void) centerViewHorizontally { NSView *superView; NSRect superFrame, selfFrame; NSPoint newOrigin; superView = [self superview]; if (superView) { NSRect tempRect; superFrame = [superView frame]; selfFrame = [self frame]; newOrigin = selfFrame.origin; newOrigin.x = (NSWidth (superFrame) - NSWidth (selfFrame)) / 2.0; tempRect = NSMakeRect(newOrigin.x, newOrigin.y, selfFrame.size.width, selfFrame.size.height); tempRect = [superView centerScanRect: tempRect]; newOrigin.x = tempRect.origin.x; newOrigin.y = tempRect.origin.y; [self setFrameOrigin: newOrigin]; } else NSLog (@"NSView '%@' has no superview", self); } @end Cynthiune-1.0.0/Frameworks/Cynthiune/Output.h000644 001751 000024 00000003623 12014507041 021674 0ustar00multixstaff000000 000000 /* Output.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef OUTPUT_H #define OUTPUT_H #import #import #import #define DEFAULT_BUFFER_SIZE 8192 @class NSData; @protocol Output + (BOOL) isThreaded; - (void) setParentPlayer: (id) aPlayer; - (BOOL) openDevice; - (void) closeDevice; - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e; @end /* an informal protocol for non-threaded output classes */ @interface NSObject (UnthreadedOutput) - (void) playChunk: (NSData *) chunk; @end /* an informal protocol for threaded output classes */ @interface NSObject (ThreadedOutput) - (BOOL) startThread; - (void) stopThread; @end @interface NSObject (ParentPlayer) - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize; - (void) chunkFinishedPlaying; @end #endif /* OUTPUT_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/Preference.h000644 001751 000024 00000002241 11733546727 022472 0ustar00multixstaff000000 000000 /* Preference.h - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Preference_H #define Preference_H #import @class NSObject; @class NSString; @class NSView; @protocol NSObject; @protocol Preference + (id) instance; - (NSString *) preferenceTitle; - (NSView *) preferenceSheet; - (void) save; @end #endif /* Preference_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/Tags.h000644 001751 000024 00000003170 11763436014 021302 0ustar00multixstaff000000 000000 /* Tags.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef TAGS_H #define TAGS_H #import @protocol TagsReading + (BOOL) readTitle: (NSString **) title artist: (NSString **) artist album: (NSString **) album trackNumber: (NSString **) trackNumber genre: (NSString **) genre year: (NSString **) year ofFilename: (NSString *) filename; @end @protocol TagsWriting + (BOOL) setTitle: (NSString *) title artist: (NSString *) artist album: (NSString *) album trackNumber: (NSString *) trackNumber genre: (NSString *) genre year: (NSString *) year ofFilename: (NSString *) filename; @end #endif /* TAGS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/utils.h000644 001751 000024 00000006544 11755213666 021563 0ustar00multixstaff000000 000000 /* utils.h - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef UTILS_H #define UTILS_H #import #import @class NSArray; #define SET(X,Y) ASSIGN(X,Y) #define RELEASEIFSET(X) RELEASE(X) #define RETURNSTRING(X) return ((X) ? [NSString stringWithString: X] : @"") #ifdef __MACOSX__ #define RELEASE(object) [(object) release] #define ASSIGN(object,value) ({\ id __object = object; \ object = [(value) retain]; \ [__object release]; \ }) #define NSStandardLibraryPaths() \ NSSearchPathForDirectoriesInDomains (NSAllLibrariesDirectory, \ NSAllDomainsMask, YES) #endif /* __MACOSX__ */ #if defined (__WIN32__) || defined (__MACOSX__) char *strndup (const char *string, unsigned int len); #endif /* __WIN32__ || __MACOSX__ */ #define obsoleteMethod() \ [[NSException exceptionWithName: @"Obsolete method" \ reason: ([NSString stringWithFormat: @"'%s'" \ @" (%s, %d) is an obsolete method.", \ sel_getName (_cmd), __FILE__, __LINE__]) \ userInfo: nil] raise] #define unimplementedMethod() \ [[NSException exceptionWithName: @"Unimplemented method" \ reason: ([NSString stringWithFormat: @"'%s'" \ @" (%s, %d) unimplemented.", \ sel_getName (_cmd), __FILE__, __LINE__]) \ userInfo: nil] raise] #define raiseException(t,r) \ [[NSException exceptionWithName: (t) \ reason: ([NSString stringWithFormat: @"%@ in '%s'" \ @" (%s:%d).", \ (r), sel_getName (_cmd), __FILE__, __LINE__]) \ userInfo: nil] raise] #define indexOutOfBoundsException(i,m) \ raiseException (@"Index out of bounds", \ ([NSString stringWithFormat: \ @"index '%u' too high (max = %d)", i, m])) BOOL fileIsAReadableDirectory (NSString *fileName); BOOL fileIsAcceptable (NSString *fileName); void logRect (NSRect *rect); NSString *_b (Class bundleClass, NSString *string); void invertBytesInBuffer (char *buffer, int length); void convert8to16 (unsigned char *inBuffer, unsigned char *outBuffer, unsigned int size); NSComparisonResult reverseComparisonResult (NSComparisonResult result); NSString *makeTitleFromFilename (NSString *fileName); #endif /* UTILS_H */ Cynthiune-1.0.0/Frameworks/Cynthiune/utils.m000644 001751 000024 00000010417 11733546727 021565 0ustar00multixstaff000000 000000 /* utils.m - this file is part of Cynthiune * * Copyright (C) 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #define _GNU_SOURCE 1 #import #import #import #if defined (__MACOSX__) || defined (__WIN32__) char * strndup (const char *string, unsigned int len) { char *newString; if (strlen (string) > len) { newString = malloc (len + 1); strncpy (newString, string, len); *(newString + len) = 0; } else newString = strdup (string); return newString; } #endif void logRect (NSRect *rect) { NSLog (@"rect = %@;", NSStringFromRect (*rect)); } NSString * _b (Class bundleClass, NSString *string) { return [[NSBundle bundleForClass: bundleClass] localizedStringForKey: string value: @"" table: nil]; } BOOL fileIsAReadableDirectory (NSString *fileName) { BOOL isDir; NSFileManager *fileManager; fileManager = [NSFileManager defaultManager]; return ([fileManager fileExistsAtPath: fileName isDirectory: &isDir] && isDir && [fileManager isReadableFileAtPath: fileName]); } BOOL fileIsAcceptable (NSString *fileName) { BOOL answer; NSDictionary *fileAttributes; NSFileManager *fileManager; NSString *directory, *link; fileManager = [NSFileManager defaultManager]; fileAttributes = [fileManager fileAttributesAtPath: fileName traverseLink: NO]; while ([fileManager fileExistsAtPath: fileName] && [[fileAttributes fileType] isEqualToString: NSFileTypeSymbolicLink]) { link = [fileManager pathContentOfSymbolicLinkAtPath: fileName]; directory = [fileName stringByDeletingLastPathComponent]; if ([link isAbsolutePath]) fileName = link; else fileName = [directory stringByAppendingPathComponent: link]; fileAttributes = [fileManager fileAttributesAtPath: fileName traverseLink: NO]; } answer = ([fileManager fileExistsAtPath: fileName] && [[fileAttributes fileType] isEqualToString: NSFileTypeRegular]); return answer; } void invertBytesInBuffer (char *buffer, int length) { unsigned int count; char tmpChar; char *ptr; if (length < 0) NSLog (@"invertBytesInBuffer: negative length: %d", length); else { if (length % 2) NSLog (@"invertBytesInBuffer: odd length: %d", length); else { count = 0; while (count < length) { ptr = buffer + count; tmpChar = *ptr; *ptr = *(ptr + 1); *(ptr + 1) = tmpChar; count += 2; } } } } void convert8to16 (unsigned char *inBuffer, unsigned char *outBuffer, unsigned int size) { unsigned int count, outCount; unsigned char conversionValue; outCount = 0; for (count = 0; count < size; count++) { conversionValue = *(inBuffer + count); *(outBuffer + outCount) = conversionValue; *(outBuffer + outCount + 1) = conversionValue; outCount += 2; } } NSComparisonResult reverseComparisonResult (NSComparisonResult result) { NSComparisonResult newResult; if (result == NSOrderedSame) newResult = NSOrderedSame; else newResult = ((result == NSOrderedAscending) ? NSOrderedDescending : NSOrderedAscending); return newResult; } NSString * makeTitleFromFilename (NSString *fileName) { NSString *title; title = [[fileName lastPathComponent] stringByDeletingPathExtension]; return [title capitalizedString]; } Cynthiune-1.0.0/English.lproj/InfoPlist.strings000644 001751 000024 00000001666 11773143065 022217 0ustar00multixstaff000000 000000 þÿ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 1.0.0"; CFBundleGetInfoString = "Cynthiune version 1.0.0, Copyright 2002-2006 Wolfgang Sourdeau.\n2012 The GNUstep Application Project\nThis program is distributed under the GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau, 2012 The GNUstep Application Project."; NSApplicationIcon = "Cynthiune"; Cynthiune-1.0.0/English.lproj/Localizable.strings000644 001751 000024 00000015166 11754426600 022527 0ustar00multixstaff000000 000000 ÿþ/* Application menu */ "Info" = "Info"; "Playlist" = "Playlist"; "Songs" = "Songs"; "Player" = "Player"; "Windows" = "Windows"; "Window" = "Window"; "Tools" = "Tools"; "Services" = "Services"; "Hide" = "Hide"; "Hide Cynthiune" = "Hide Cynthiune"; "Hide Others" = "Hide Others"; "Show All" = "Show All"; "Quit" = "Quit"; "Quit Cynthiune" = "Quit Cynthiune"; /* Info submenu */ "Info Panel..." = "Info Panel..."; "About Cynthiune..." = "About Cynthiune..."; "Preferences..." = "Preferences..."; "Send A Bug Report..." = "Send A Bug Report..."; "Help..." = "Help..."; "Help" = "Help"; "Cynthiune Help" = "Cynthiune Help"; /* Playlist submenu */ "Open..." = "Open..."; "New" = "New"; "Save..." = "Save..."; "Save As..." = "Save As..."; "Save To..." = "Save To..."; "Revert To Saved" = "Revert To Saved"; "Close" = "Close"; /* Songs submenu */ "Add Songs..." = "Add Songs..."; "Remove Selection" = "Remove Selection"; "Remove All" = "Remove All"; "Cleanup" = "Cleanup"; /* Player submenu */ "Play" = "Play"; "Pause" = "Pause"; "Stop" = "Stop"; "Previous" = "Previous"; "Next" = "Next"; "Mode" = "Mode"; /* Player/Mode submenu */ "Repeat" = "Repeat"; "Shuffle" = "Shuffle"; /* Tools submenu */ "Song Inspector..." = "Song Inspector..."; /* Windows submenu */ "Arrange In Front" = "Arrange In Front"; "Miniaturize Window" = "Miniaturize Window"; "Minimize" = "Minimize"; "Close Window" = "Close Window"; /* Playlist status label */ "%d songs - total time: %@" = "%d songs - total time: %@"; " - selection: %@" = " - selection: %@"; /* Playlist table */ "Song" = "Song"; "Time" = "Time"; /* Song Inspector */ "Song Inspector" = "Song Inspector"; "Song Information" = "Song Information"; "Format Attributes" = "Format Attributes"; "No song selected" = "No song selected"; "Lookup through MusicBrainz..." = "Lookup through MusicBrainz..."; "Title" = "Title"; "Album" = "Album"; "Track" = "Track"; "Artist" = "Artist"; "Genre" = "Genre"; "Year" = "Year"; "Reset" = "Reset"; "Save" = "Save"; "Generating TRM..." = "Generating TRM..."; "Querying MusicBrainz server..." = "Querying MusicBrainz server..."; "The MusicBrainz server was too busy" = "The MusicBrainz server was too busy"; "Received %d result(s)" = "Received %d result(s)"; /* Dialog boxes */ "Add music files..." = "Add music files..."; "Add a music folder..." = "Add a music folder..."; "Open Playlist..." = "Open Playlist..."; "Save playlist as..." = "Save playlist as..."; /* Song names */ "[not found: %@]" = "[not found: %@]"; "[unknown format: %@]" = "[unknown format: %@]"; "[format error: %@]" = "[format error: %@]"; /* Preference dialog */ "None" = "None"; "Preferences" = "Preferences"; "General" = "General"; /* General preferences */ "Windows" = "Windows"; "Playlists" = "Playlists"; "Use absolute filenames" = "Use absolute filenames"; "Output module" = "Output module"; "Textured" = "Textured"; "Sticky" = "Sticky"; "Remember location" = "Remember location"; "Format" = "Format"; /* MB results panel */ "Please select the correct information..." = "Please select the correct information..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate."; "Cancel" = "Cancel"; Cynthiune-1.0.0/Cynthiune.pbproj/project.pbxproj000644 001751 000024 00000367344 11750067412 022500 0ustar00multixstaff000000 000000 // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 38; objects = { 080E96DDFE201D6D7F000001 = { children = ( EAFFEE82086E61A7039AFE6D, EAFFEE4B086E54DA039AFE6D, EA8795E006F66AA403809032, EAFFEE4D086E54DA039AFE6D, EA778ACD09B5778A032657EF, EAFFEE50086E54DA039AFE6D, EAFFEE56086E54DA039AFE6D, EAFFEE58086E54DA039AFE6D, EA8BBBFA0682D60703C2B047, EA8A19180688EE2B03C0F62E, EAC9033808F2ED0603D0D62A, F7858BEC061FC27301C0FE28, F7858BEE061FC27301C0FE28, F7858BF0061FC27301C0FE28, EAC9033C08F2ED3103D0D62A, EAFFEE86086E61D7039AFE6D, F7858BF4061FC27301C0FE28, EA73D4B5074C81F203F60D55, EA73D4B7074C81F203F60D55, F7858BF6061FC27301C0FE28, EAC9034008F2ED4903D0D62A, F7858BF8061FC27301C0FE28, EA7EE76C063AE6B6039F4895, EAC9034208F2ED4903D0D62A, F7858BFD061FC27301C0FE28, F7858BFF061FC27301C0FE28, EA958510078BA57703566F1F, F7858C01061FC27301C0FE28, ); isa = PBXGroup; name = Classes; refType = 4; }; 089C165CFE840E0CC02AAC07 = { children = ( 089C165DFE840E0CC02AAC07, EA7EE7DC063B0267039F4895, EAB991A1086E52690334F83B, EA8E3562094766F7032DC65E, EA88F6F2068222A103ABED23, EA8E355D09476698032DC65E, EA8E35630947670D032DC65E, EA8E355E094766BD032DC65E, ); isa = PBXVariantGroup; name = InfoPlist.strings; refType = 4; }; 089C165DFE840E0CC02AAC07 = { fileEncoding = 10; isa = PBXFileReference; name = English; path = English.lproj/InfoPlist.strings; refType = 4; }; 089C165EFE840E0CC02AAC07 = { fileRef = 089C165CFE840E0CC02AAC07; isa = PBXBuildFile; settings = { }; }; //080 //081 //082 //083 //084 //100 //101 //102 //103 //104 1058C7A0FEA54F0111CA2CBB = { children = ( F502405C03B83D6601000004, F502406503B83D9A01000004, F502404803B83C9E01000004, F531F10803BB93F301000004, 29B97325FDCFA39411CA2CEA, 29B97324FDCFA39411CA2CEA, EA9EE052078207F20394BCE8, ); isa = PBXGroup; name = "Linked Frameworks"; refType = 4; }; //100 //101 //102 //103 //104 //170 //171 //172 //173 //174 17587328FF379C6511CA2CBB = { isa = PBXApplicationReference; path = Cynthiune.app; refType = 3; }; //170 //171 //172 //173 //174 //190 //191 //192 //193 //194 19C28FACFE9D520D11CA2CBB = { children = ( 17587328FF379C6511CA2CBB, F7BED96E0621E945010E156D, EA8A20BC0675A4A203A8D3C1, EA8F759E06F89A7D03F15592, EA85A0EB062774250303B004, EA88F6F9068234B203ABED23, EA1D794C06263DD503CFD9F6, EA949F6E062720760348A0D9, EA80096A0629F20C036EED6D, EA8D0BFF06268DD403000102, EA96C1DE0770F81F03166923, EA96C1E60770F84803166923, EAA95C3609D0ECF3039F499A, EA8E357109476B19032DC65E, EAA6DF9E09A66BFD034E8D88, ); isa = PBXGroup; name = Products; refType = 4; }; //190 //191 //192 //193 //194 //290 //291 //292 //293 //294 29B97313FDCFA39411CA2CEA = { buildStyles = ( 4A9504CCFFE6A4B311CA0CBA, 4A9504CDFFE6A4B311CA0CBA, ); hasScannedForEncodings = 1; isa = PBXProject; knownRegions = ( English, French, German, Italian, Slovak, TraditionalChinese, Hungarian, Spanish, ); mainGroup = 29B97314FDCFA39411CA2CEA; projectDirPath = ""; targets = ( 29B97326FDCFA39411CA2CEA, F7BED96D0621E945010E156D, EA8A20BB0675A4A203A8D3C1, EA8F759D06F89A7D03F15592, EA85A0EA062774250303B004, EA88F6F8068234B203ABED23, EA1D794B06263DD503CFD9F6, EA949F6D062720760348A0D9, EA8009690629F20C036EED6D, EA8D0BFE06268DD403000102, EA96C1DD0770F81F03166923, EA96C1E50770F84803166923, EA8E357009476B19032DC65E, EAA6DF9D09A66BFD034E8D88, EAA95C3509D0ECF3039F499A, ); }; 29B97314FDCFA39411CA2CEA = { children = ( 080E96DDFE201D6D7F000001, F559092303B834D301000004, EA1D796D0626400703CFD9F6, F51A012B03BA9CCB01000004, 29B97315FDCFA39411CA2CEA, 29B97317FDCFA39411CA2CEA, 29B97323FDCFA39411CA2CEA, 19C28FACFE9D520D11CA2CBB, ); isa = PBXGroup; name = Cynthiune; path = ""; refType = 4; }; 29B97315FDCFA39411CA2CEA = { children = ( 29B97316FDCFA39411CA2CEA, ); isa = PBXGroup; name = "Other Sources"; path = ""; refType = 4; }; 29B97316FDCFA39411CA2CEA = { fileEncoding = 4; isa = PBXFileReference; path = main.m; refType = 4; }; 29B97317FDCFA39411CA2CEA = { children = ( F59C8F6803C0152501C14AF2, 089C165CFE840E0CC02AAC07, EA7EE7DD063B035E039F4895, F559092103B834CA01000004, F7BED96F0621E9B5010E156D, F7BED9710621E9CF010E156D, EA958513078BAB6B03566F1F, ); isa = PBXGroup; name = Resources; path = ""; refType = 4; }; 29B97323FDCFA39411CA2CEA = { children = ( EAFFEE69086E5596039AFE6D, 1058C7A0FEA54F0111CA2CBB, ); isa = PBXGroup; name = Frameworks; path = ""; refType = 4; }; 29B97324FDCFA39411CA2CEA = { isa = PBXFrameworkReference; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; refType = 0; }; 29B97325FDCFA39411CA2CEA = { isa = PBXFrameworkReference; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; refType = 0; }; 29B97326FDCFA39411CA2CEA = { buildPhases = ( 29B97327FDCFA39411CA2CEA, 29B97328FDCFA39411CA2CEA, 29B9732BFDCFA39411CA2CEA, 29B9732DFDCFA39411CA2CEA, EA62D086062660D20381E0C0, EA62D08A062660ED0381E0C0, ); buildSettings = { BUILD_SETTING = ""; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; HEADER_SEARCH_PATHS = ""; LIBRARY_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-Wall -D__MACOSX__"; OTHER_LDFLAGS = "-L/usr/local/lib -lmusicbrainz -lexpat -lstdc++"; PREBINDING = NO; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = app; }; dependencies = ( EA1D7972062640F703CFD9F6, EAD5CA350675ACB103B51BF6, EA8F759F06F89A9103F15592, EA88F6FA068234C503ABED23, EAC9034708F2EF8403D0D62A, EA96C1E70770F84F03166923, EA1D7973062640FF03CFD9F6, EA949F6F0627207D0348A0D9, EAA95C3709D0EDBF039F499A, EA8E357209476B85032DC65E, EAA6DF9F09A66D69034E8D88, ); isa = PBXApplicationTarget; name = Cynthiune; productName = Cynthiune; productReference = 17587328FF379C6511CA2CBB; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleDocumentTypes CFBundleTypeExtensions ogg CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes application/ogg application/x-ogg CFBundleTypeName Ogg music file CFBundleTypeRole Viewer CFBundleTypeExtensions mp3 mp2 mpa mpga mpega CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/mpeg audio/x-mpeg audio/mpeg3 audio/x-mpeg3 audio/mpg audio/x-mpg audio/mp3 audio/x-mp3 CFBundleTypeName MPEG music file CFBundleTypeRole Viewer CFBundleTypeExtensions mpc mp+ CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/musepack audio/x-musepack CFBundleTypeName Musepack music file CFBundleTypeRole Viewer CFBundleTypeExtensions fla flac CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/flac audio/x-flac CFBundleTypeName FLAC music file CFBundleTypeRole Viewer CFBundleTypeExtensions aif aifc aiff au avr iff nist snd wav CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/aiff audio/x-aiff audio/basic audio/x-basic audio/au audio/x-au audio/x-ulaw audio/avr audio/x-avr application/iff application/x-iff audio/nist audio/x-nist audio/snd audio/x-snd audio/wav audio/x-wav CFBundleTypeName Sound file CFBundleTypeRole Viewer CFBundleTypeExtensions mod it xm 669 amf ams dbm dmf dsm far it j2b mdl med mod mt2 mtm okt psm ptm s3m stm ult umx mod xm CFBundleTypeIconFile Cynthiune-song CFBundleTypeMIMETypes audio/669 audio/amf audio/ams audio/dbm audio/dmf audio/dsm audio/far audio/it audio/j2b audio/mdl audio/med audio/mod audio/mt2 audio/mtm audio/okt audio/psm audio/ptm audio/s3m audio/stm audio/ult audio/umx audio/mod audio/xm audio/x-669 audio/x-amf audio/x-ams audio/x-dbm audio/x-dmf audio/x-dsm audio/x-far audio/x-it audio/x-j2b audio/x-mdl audio/x-med audio/x-mod audio/x-mt2 audio/x-mtm audio/x-okt audio/x-psm audio/x-ptm audio/x-s3m audio/x-stm audio/x-ult audio/x-umx audio/x-mod audio/x-xm CFBundleTypeName Tracker music file CFBundleTypeRole Viewer CFBundleTypeExtensions pls m3u CFBundleTypeIconFile Cynthiune-playlist CFBundleTypeName Playlist file CFBundleTypeRole Viewer CFBundleExecutable Cynthiune CFBundleGetInfoString A free software and romantic music player CFBundleIconFile Cynthiune.icns CFBundleIdentifier com.Wolfgang@Contre.com.Cynthiune CFBundleInfoDictionaryVersion 6.0 CFBundleName Cynthiune CFBundlePackageType APPL CFBundleShortVersionString Version 0.9.5 CFBundleSignature WOSO CFBundleVersion 0.9.5 NSMainNibFile Cynthiune NSPrincipalClass NSApplication "; }; 29B97327FDCFA39411CA2CEA = { buildActionMask = 2147483647; files = ( EA8B67D206F81B0B03464193, EA8B67D306F81B0D03464193, EA8B67D406F81B0D03464193, EA8B67D506F81B0E03464193, EA8B67D706F81B1003464193, EA8B67D806F81B1103464193, EA8B67D906F81B1103464193, EA8B67DB06F81B1303464193, EA8B67DD06F81B1603464193, EA8B67DE06F81B1603464193, EA8B67DF06F81B1703464193, EA547B70078A4D270358AD96, EA547B71078A4D280358AD96, EA958511078BA57703566F1F, EAFFEE5A086E54DA039AFE6D, EAFFEE5D086E54DA039AFE6D, EAFFEE63086E54DA039AFE6D, EAFFEE65086E54DA039AFE6D, EAFFEE67086E553A039AFE6D, EAFFEE68086E5540039AFE6D, EAFFEE83086E61A7039AFE6D, EAFFEE87086E61D7039AFE6D, EAC9033908F2ED0603D0D62A, EAC9033D08F2ED3103D0D62A, EAC9034308F2ED4903D0D62A, EAC9034508F2ED4903D0D62A, EAAF6D4E092BC55703000102, EA778ACE09B5778A032657EF, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 29B97328FDCFA39411CA2CEA = { buildActionMask = 2147483647; files = ( 089C165EFE840E0CC02AAC07, EA7EE7DF063B035E039F4895, F51A012E03BA9CE401000004, F51A012F03BA9CE401000004, F59C8F7A03C01A7601C14AF2, EA7EE7E3063B04D0039F4895, EA7EE7E4063B04D0039F4895, EA1D792B06263C3E03CFD9F6, EA8B67B706F819BA03464193, EA8B67B806F819BB03464193, EA7EE7A9063AF543039F4895, EA7EE7AC063AF546039F4895, EA7EE7AE063AF547039F4895, EA7EE7AF063AF548039F4895, EA7EE7B1063AF549039F4895, EA7EE7B0063AF549039F4895, EA7EE7A5063AF541039F4895, EA7EE7B4063AF54C039F4895, EA7EE7A6063AF542039F4895, EA7EE7B8063AF54F039F4895, EA7EE7A7063AF542039F4895, EA7EE7B9063AF54F039F4895, EA7EE7A8063AF543039F4895, EA7EE7BC063AF554039F4895, EA7EE7AA063AF544039F4895, EA7EE7C1063AF557039F4895, EA8A20D80675A80A03A8D3C1, EA8A20D70675A80A03A8D3C1, EA8A20DA0675A80A03A8D3C1, EA8A20D90675A80A03A8D3C1, EA8A20DC0675A80A03A8D3C1, EA8A20DB0675A80A03A8D3C1, EA958514078BAB6B03566F1F, EAB991AB086E52A60334F83B, EAB991AC086E52A60334F83B, EAB991AD086E52A60334F83B, EAB991AE086E52A60334F83B, EAB991AF086E52A60334F83B, EAB991B0086E52A60334F83B, EAB991B1086E52A60334F83B, EAB991B2086E52A60334F83B, EAFFEE8E086E688A039AFE6D, EAFFEE8F086E688A039AFE6D, EAFFEE92086E688A039AFE6D, EAAF6D3B092BC4F303000102, EAAF6D3C092BC4F303000102, EAAF6D46092BC51E03000102, EAAF6D47092BC51E03000102, EAAF6D4B092BC51E03000102, EAAF6D4C092BC51E03000102, EA4FAC5109A456860310F3BF, EA5AA10C09A51CA303396ECD, EA5AA10E09A5220203396ECD, EAA6DF9309A663DE034E8D88, EAA6DF9409A663DE034E8D88, EAF9B4DA09D0EE7F037E42D6, EA03BA5E09D0FE6B036B92BF, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 29B9732BFDCFA39411CA2CEA = { buildActionMask = 2147483647; files = ( 29B9732CFDCFA39411CA2CEA, EA8B67B906F819C303464193, EA8B67BC06F819C603464193, EA8B67BD06F819C603464193, EA8B67BE06F819C803464193, EA8B67C006F819CA03464193, EA8B67C106F819CA03464193, EA8B67C206F819CB03464193, EA8B67C406F819CC03464193, EA8B67C506F819CD03464193, EA8B67C606F819CE03464193, EA8B67C706F819CE03464193, EA8B67E806F8202803464193, EA8B67E906F8202903464193, EA547B6E078A4D220358AD96, EA547B6F078A4D220358AD96, EA958512078BA57703566F1F, EAFFEE59086E54DA039AFE6D, EAFFEE5B086E54DA039AFE6D, EAFFEE5E086E54DA039AFE6D, EAFFEE64086E54DA039AFE6D, EAFFEE66086E54DA039AFE6D, EAFFEE84086E61A7039AFE6D, EAFFEE88086E61D7039AFE6D, EAC9033A08F2ED0603D0D62A, EAC9033E08F2ED3103D0D62A, EAC9034408F2ED4903D0D62A, EAC9034608F2ED4903D0D62A, EA778ACF09B5778A032657EF, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 29B9732CFDCFA39411CA2CEA = { fileRef = 29B97316FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { ATTRIBUTES = ( ); }; }; 29B9732DFDCFA39411CA2CEA = { buildActionMask = 2147483647; files = ( F531F18903BB941C01000004, EAC9034E09079E5503D0D62A, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; //290 //291 //292 //293 //294 //4A0 //4A1 //4A2 //4A3 //4A4 4A9504CCFFE6A4B311CA0CBA = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; OPTIMIZATION_CFLAGS = "-O2"; }; isa = PBXBuildStyle; name = Development; }; 4A9504CDFFE6A4B311CA0CBA = { buildRules = ( ); buildSettings = { COPY_PHASE_STRIP = YES; }; isa = PBXBuildStyle; name = Deployment; }; //4A0 //4A1 //4A2 //4A3 //4A4 //EA0 //EA1 //EA2 //EA3 //EA4 EA03BA5109D0F7CF036B92BF = { fileRef = EAA95C3609D0ECF3039F499A; isa = PBXBuildFile; settings = { }; }; EA03BA5209D0F801036B92BF = { children = ( EA03BA5509D0F84A036B92BF, EA03BA5909D0F862036B92BF, ); isa = PBXGroup; name = Classes; refType = 4; }; EA03BA5309D0F80B036B92BF = { children = ( EA03BA5409D0F84A036B92BF, EA03BA5809D0F862036B92BF, ); isa = PBXGroup; name = Headers; refType = 4; }; EA03BA5409D0F84A036B92BF = { fileEncoding = 4; isa = PBXFileReference; name = CNSFileHandle.h; path = Bundles/Musepack/CNSFileHandle.h; refType = 4; }; EA03BA5509D0F84A036B92BF = { fileEncoding = 4; isa = PBXFileReference; name = CNSFileHandle.m; path = Bundles/Musepack/CNSFileHandle.m; refType = 4; }; EA03BA5609D0F84A036B92BF = { fileRef = EA03BA5409D0F84A036B92BF; isa = PBXBuildFile; settings = { }; }; EA03BA5709D0F84A036B92BF = { fileRef = EA03BA5509D0F84A036B92BF; isa = PBXBuildFile; settings = { }; }; EA03BA5809D0F862036B92BF = { fileEncoding = 4; isa = PBXFileReference; name = Musepack.h; path = Bundles/Musepack/Musepack.h; refType = 4; }; EA03BA5909D0F862036B92BF = { fileEncoding = 4; isa = PBXFileReference; name = Musepack.m; path = Bundles/Musepack/Musepack.m; refType = 4; }; EA03BA5A09D0F862036B92BF = { fileRef = EA03BA5809D0F862036B92BF; isa = PBXBuildFile; settings = { }; }; EA03BA5B09D0F862036B92BF = { fileRef = EA03BA5909D0F862036B92BF; isa = PBXBuildFile; settings = { }; }; EA03BA5C09D0FCF7036B92BF = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA03BA5D09D0FCFD036B92BF = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA03BA5E09D0FE6B036B92BF = { fileRef = EA96C1E60770F84803166923; isa = PBXBuildFile; settings = { }; }; EA03BA6209D0FE75036B92BF = { fileRef = EA96C1E60770F84803166923; isa = PBXBuildFile; settings = { }; }; EA0E08F206268A1F034EFD4C = { children = ( EA8D0BF706268D9503000102, EA8D0BF806268D9D03000102, ); isa = PBXGroup; name = dummy; refType = 4; }; EA1D792B06263C3E03CFD9F6 = { fileRef = F559092103B834CA01000004; isa = PBXBuildFile; settings = { }; }; EA1D794606263DD503CFD9F6 = { buildActionMask = 2147483647; files = ( EA1D796706263FB803CFD9F6, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA1D794706263DD503CFD9F6 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA1D794806263DD503CFD9F6 = { buildActionMask = 2147483647; files = ( EA1D796406263FB803CFD9F6, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA1D794906263DD503CFD9F6 = { buildActionMask = 2147483647; files = ( EA1D79710626406203CFD9F6, EA1D7A780626566303CFD9F6, EA9EE05E078207F20394BCE8, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA1D794A06263DD503CFD9F6 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA1D794B06263DD503CFD9F6 = { buildPhases = ( EA1D794606263DD503CFD9F6, EA1D794706263DD503CFD9F6, EA1D794806263DD503CFD9F6, EA1D794906263DD503CFD9F6, EA1D794A06263DD503CFD9F6, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lvorbis -lvorbisfile -logg"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Ogg; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "\U0001-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXBundleTarget; name = Ogg; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Ogg.output; productReference = EA1D794C06263DD503CFD9F6; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable Ogg CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass Ogg "; }; EA1D794C06263DD503CFD9F6 = { isa = PBXBundleReference; path = Ogg.format; refType = 3; }; EA1D795306263FB803CFD9F6 = { children = ( EA1D796F0626401C03CFD9F6, EA1D79700626402403CFD9F6, ); isa = PBXGroup; name = Ogg; path = Bundles/Ogg; refType = 2; }; EA1D795606263FB803CFD9F6 = { fileEncoding = 4; isa = PBXFileReference; path = Ogg.m; refType = 4; }; EA1D795906263FB803CFD9F6 = { fileEncoding = 4; isa = PBXFileReference; path = Ogg.h; refType = 4; }; EA1D796406263FB803CFD9F6 = { fileRef = EA1D795606263FB803CFD9F6; isa = PBXBuildFile; settings = { }; }; EA1D796706263FB803CFD9F6 = { fileRef = EA1D795906263FB803CFD9F6; isa = PBXBuildFile; settings = { }; }; EA1D796D0626400703CFD9F6 = { children = ( EA8A20B30675A45C03A8D3C1, EA8F759506F89A1F03F15592, EA85A0E2062773E80303B004, EA9ADAFD06823B0603000102, EA96C1E90770F87B03166923, EA1D795306263FB803CFD9F6, EA96C1E80770F87303166923, EA949F70062720910348A0D9, EA80096F0629F2D7036EED6D, EA0E08F206268A1F034EFD4C, EAA95C2F09D0ECA7039F499A, EADC4D6409476C1203B0DF6D, EAA6DF9509A66BCC034E8D88, ); isa = PBXGroup; name = Bundles; refType = 4; }; EA1D796F0626401C03CFD9F6 = { children = ( EA1D795606263FB803CFD9F6, ); isa = PBXGroup; name = Classes; refType = 4; }; EA1D79700626402403CFD9F6 = { children = ( EA1D795906263FB803CFD9F6, ); isa = PBXGroup; name = Headers; path = ""; refType = 4; }; EA1D79710626406203CFD9F6 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA1D7972062640F703CFD9F6 = { isa = PBXTargetDependency; target = F7BED96D0621E945010E156D; }; EA1D7973062640FF03CFD9F6 = { isa = PBXTargetDependency; target = EA1D794B06263DD503CFD9F6; }; EA1D7A780626566303CFD9F6 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA2D90570629F91B03D508AF = { children = ( EA2D90580629F93F03D508AF, ); isa = PBXGroup; name = Resources; refType = 4; }; EA2D90580629F93F03D508AF = { isa = PBXFileReference; name = EsoundPreferences.nib; path = Bundles/Esound/EsoundPreferences.nib; refType = 4; }; EA2D90590629F93F03D508AF = { fileRef = EA2D90580629F93F03D508AF; isa = PBXBuildFile; settings = { }; }; EA4C20D006F89FFA03A0FA18 = { fileRef = EA8F759E06F89A7D03F15592; isa = PBXBuildFile; settings = { }; }; EA4FAC4F09A451B00310F3BF = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA4FAC5009A456860310F3BF = { isa = PBXFileReference; name = lock.tiff; path = Images/lock.tiff; refType = 4; }; EA4FAC5109A456860310F3BF = { fileRef = EA4FAC5009A456860310F3BF; isa = PBXBuildFile; settings = { }; }; EA547B68078A36000358AD96 = { fileEncoding = 4; isa = PBXFileReference; name = NSStringExtensions.h; path = Frameworks/Cynthiune/NSStringExtensions.h; refType = 4; }; EA547B69078A36000358AD96 = { fileEncoding = 4; isa = PBXFileReference; name = NSStringExtensions.m; path = Frameworks/Cynthiune/NSStringExtensions.m; refType = 4; }; EA547B6A078A36000358AD96 = { fileRef = EA547B68078A36000358AD96; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA547B6B078A36000358AD96 = { fileRef = EA547B69078A36000358AD96; isa = PBXBuildFile; settings = { }; }; EA547B6C078A4B710358AD96 = { fileRef = EA73D4C0074C823503F60D55; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA547B6E078A4D220358AD96 = { fileRef = EA73D4B5074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; EA547B6F078A4D220358AD96 = { fileRef = EA73D4B7074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; EA547B70078A4D270358AD96 = { fileRef = EA73D4B4074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; EA547B71078A4D280358AD96 = { fileRef = EA73D4B6074C81F203F60D55; isa = PBXBuildFile; settings = { }; }; EA5AA10B09A51CA303396ECD = { isa = PBXFileReference; name = "Cynthiune-playlist.icns"; path = "Images/Cynthiune-playlist.icns"; refType = 4; }; EA5AA10C09A51CA303396ECD = { fileRef = EA5AA10B09A51CA303396ECD; isa = PBXBuildFile; settings = { }; }; EA5AA10D09A5220203396ECD = { isa = PBXFileReference; name = "Cynthiune-song.icns"; path = "Images/Cynthiune-song.icns"; refType = 4; }; EA5AA10E09A5220203396ECD = { fileRef = EA5AA10D09A5220203396ECD; isa = PBXBuildFile; settings = { }; }; EA62D086062660D20381E0C0 = { buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( EA62D089062660DC0381E0C0, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA62D089062660DC0381E0C0 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA62D08A062660ED0381E0C0 = { buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = ( EA8A20CC0675A79E03A8D3C1, EA4C20D006F89FFA03A0FA18, EAC9034D08F2F12103D0D62A, EA88F7010682380403ABED23, EA03BA6209D0FE75036B92BF, EA62D08B062660F90381E0C0, EA67544D0627317F0396FC5D, EA03BA5109D0F7CF036B92BF, EA8E357609476BA7032DC65E, EA7EC09209A66E4A0362234A, ); isa = PBXCopyFilesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA62D08B062660F90381E0C0 = { fileRef = EA1D794C06263DD503CFD9F6; isa = PBXBuildFile; settings = { }; }; EA675446062726D80396FC5D = { fileEncoding = 4; isa = PBXFileReference; name = MacOSXPlayer.m; path = Bundles/MacOSX/MacOSXPlayer.m; refType = 4; }; EA675447062726D80396FC5D = { fileRef = EA675446062726D80396FC5D; isa = PBXBuildFile; settings = { }; }; EA675448062726F10396FC5D = { fileEncoding = 4; isa = PBXFileReference; name = MacOSXPlayer.h; path = Bundles/MacOSX/MacOSXPlayer.h; refType = 4; }; EA675449062726F10396FC5D = { fileRef = EA675448062726F10396FC5D; isa = PBXBuildFile; settings = { }; }; EA67544A062731380396FC5D = { fileRef = F531F10803BB93F301000004; isa = PBXBuildFile; settings = { }; }; EA67544D0627317F0396FC5D = { fileRef = EA949F6E062720760348A0D9; isa = PBXBuildFile; settings = { }; }; EA73D4B4074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; path = PlayerController.h; refType = 4; }; EA73D4B5074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; path = PlayerController.m; refType = 4; }; EA73D4B6074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; path = PlayerPreference.h; refType = 4; }; EA73D4B7074C81F203F60D55 = { fileEncoding = 4; isa = PBXFileReference; path = PlayerPreference.m; refType = 4; }; EA73D4C0074C823503F60D55 = { fileEncoding = 4; isa = PBXFileReference; name = MailService.h; path = Frameworks/Cynthiune/MailService.h; refType = 4; }; EA73D4C1074C823503F60D55 = { fileEncoding = 4; isa = PBXFileReference; name = MailService.m; path = Frameworks/Cynthiune/MailService.m; refType = 4; }; EA778ACC09B5778A032657EF = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneHeaderCell.h; refType = 4; }; EA778ACD09B5778A032657EF = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneHeaderCell.m; refType = 4; }; EA778ACE09B5778A032657EF = { fileRef = EA778ACC09B5778A032657EF; isa = PBXBuildFile; settings = { }; }; EA778ACF09B5778A032657EF = { fileRef = EA778ACD09B5778A032657EF; isa = PBXBuildFile; settings = { }; }; EA7EC09209A66E4A0362234A = { fileRef = EAA6DF9E09A66BFD034E8D88; isa = PBXBuildFile; settings = { }; }; EA7EC09309A66F5F0362234A = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA7EC09409A66F600362234A = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA7EE734063AE6B6039F4895 = { fileEncoding = 4; isa = PBXFileReference; name = CynthiuneBundle.h; path = Frameworks/Cynthiune/CynthiuneBundle.h; refType = 4; }; EA7EE76B063AE6B6039F4895 = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistView.h; refType = 4; }; EA7EE76C063AE6B6039F4895 = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistView.m; refType = 4; }; EA7EE79F063AEA0B039F4895 = { fileEncoding = 4; isa = PBXFileReference; name = xing.h; path = Bundles/MP3/xing.h; refType = 4; }; EA7EE7A0063AEA0B039F4895 = { fileRef = EA7EE79F063AEA0B039F4895; isa = PBXBuildFile; settings = { }; }; EA7EE7A1063AEA1A039F4895 = { children = ( EA7EE7A3063AEA4F039F4895, ); isa = PBXGroup; name = "C source"; refType = 4; }; EA7EE7A2063AEA28039F4895 = { children = ( EA7EE79F063AEA0B039F4895, ); isa = PBXGroup; name = "C headers"; path = ""; refType = 4; }; EA7EE7A3063AEA4F039F4895 = { fileEncoding = 4; isa = PBXFileReference; name = xing.c; path = Bundles/MP3/xing.c; refType = 4; }; EA7EE7A4063AEA4F039F4895 = { fileRef = EA7EE7A3063AEA4F039F4895; isa = PBXBuildFile; settings = { }; }; EA7EE7A5063AF541039F4895 = { fileRef = F59C8F6C03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; EA7EE7A6063AF542039F4895 = { fileRef = F59C8F6D03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; EA7EE7A7063AF542039F4895 = { fileRef = F59C8F6E03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; EA7EE7A8063AF543039F4895 = { fileRef = F59C8F6F03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; EA7EE7A9063AF543039F4895 = { fileRef = F59C8F6B03C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; EA7EE7AA063AF544039F4895 = { fileRef = F59C8F7003C0155B01C14AF2; isa = PBXBuildFile; settings = { }; }; EA7EE7AC063AF546039F4895 = { fileRef = F7858C1F061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7AE063AF547039F4895 = { fileRef = F7858C21061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7AF063AF548039F4895 = { fileRef = F7858C22061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7B0063AF549039F4895 = { fileRef = F7858C23061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7B1063AF549039F4895 = { fileRef = F7858C24061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7B4063AF54C039F4895 = { fileRef = F7858C28061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7B8063AF54F039F4895 = { fileRef = F7858C2A061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7B9063AF54F039F4895 = { fileRef = F7858C2B061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7BC063AF554039F4895 = { fileRef = F7858C2E061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7C1063AF557039F4895 = { fileRef = F7858C33061FC31401C0FE28; isa = PBXBuildFile; settings = { }; }; EA7EE7DC063B0267039F4895 = { fileEncoding = 4; isa = PBXFileReference; name = French; path = French.lproj/InfoPlist.strings; refType = 4; }; EA7EE7DD063B035E039F4895 = { children = ( EA7EE7DE063B035E039F4895, EA7EE7E0063B036F039F4895, EAB991A2086E52690334F83B, EA8E356409476757032DC65E, EA88F6F10682227603ABED23, EA8E35650947676F032DC65E, EA8E356A09476934032DC65E, EA8E356909476796032DC65E, ); isa = PBXVariantGroup; name = Localizable.strings; path = ""; refType = 4; }; EA7EE7DE063B035E039F4895 = { fileEncoding = 4; isa = PBXFileReference; name = English; path = English.lproj/Localizable.strings; refType = 4; }; EA7EE7DF063B035E039F4895 = { fileRef = EA7EE7DD063B035E039F4895; isa = PBXBuildFile; settings = { }; }; EA7EE7E0063B036F039F4895 = { fileEncoding = 4; isa = PBXFileReference; name = French; path = French.lproj/Localizable.strings; refType = 4; }; EA7EE7E1063B04D0039F4895 = { fileEncoding = 4; isa = PBXFileReference; path = README; refType = 4; }; EA7EE7E2063B04D0039F4895 = { fileEncoding = 4; isa = PBXFileReference; path = TODO; refType = 4; }; EA7EE7E3063B04D0039F4895 = { fileRef = EA7EE7E1063B04D0039F4895; isa = PBXBuildFile; settings = { }; }; EA7EE7E4063B04D0039F4895 = { fileRef = EA7EE7E2063B04D0039F4895; isa = PBXBuildFile; settings = { }; }; EA8009640629F20C036EED6D = { buildActionMask = 2147483647; files = ( EA80097E0629F354036EED6D, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8009650629F20C036EED6D = { buildActionMask = 2147483647; files = ( EA2D90590629F93F03D508AF, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8009660629F20C036EED6D = { buildActionMask = 2147483647; files = ( EA80097C0629F33B036EED6D, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8009670629F20C036EED6D = { buildActionMask = 2147483647; files = ( EA80096D0629F2C1036EED6D, EA80096E0629F2C3036EED6D, EA80096C0629F2B1036EED6D, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8009680629F20C036EED6D = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8009690629F20C036EED6D = { buildPhases = ( EA8009640629F20C036EED6D, EA8009650629F20C036EED6D, EA8009660629F20C036EED6D, EA8009670629F20C036EED6D, EA8009680629F20C036EED6D, ); buildSettings = { DEBUGGING_SYMBOLS = NO; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lesd"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Esound; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = output; }; dependencies = ( ); isa = PBXBundleTarget; name = Esound; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Esound; productReference = EA80096A0629F20C036EED6D; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable Esound CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass Esound "; }; EA80096A0629F20C036EED6D = { isa = PBXBundleReference; path = Esound.output; refType = 3; }; EA80096C0629F2B1036EED6D = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA80096D0629F2C1036EED6D = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA80096E0629F2C3036EED6D = { fileRef = 29B97324FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA80096F0629F2D7036EED6D = { children = ( EA8009790629F312036EED6D, EA80097A0629F318036EED6D, EA2D90570629F91B03D508AF, ); isa = PBXGroup; name = Esound; refType = 4; }; EA8009790629F312036EED6D = { children = ( EA80097B0629F33B036EED6D, ); isa = PBXGroup; name = Classes; refType = 4; }; EA80097A0629F318036EED6D = { children = ( EA80097D0629F354036EED6D, ); isa = PBXGroup; name = Headers; refType = 4; }; EA80097B0629F33B036EED6D = { fileEncoding = 4; isa = PBXFileReference; name = Esound.m; path = Bundles/Esound/Esound.m; refType = 4; }; EA80097C0629F33B036EED6D = { fileRef = EA80097B0629F33B036EED6D; isa = PBXBuildFile; settings = { }; }; EA80097D0629F354036EED6D = { fileEncoding = 4; isa = PBXFileReference; name = Esound.h; path = Bundles/Esound/Esound.h; refType = 4; }; EA80097E0629F354036EED6D = { fileRef = EA80097D0629F354036EED6D; isa = PBXBuildFile; settings = { }; }; EA85A0E2062773E80303B004 = { children = ( EA7EE7A1063AEA1A039F4895, EA7EE7A2063AEA28039F4895, EA85A0E4062774020303B004, EA85A0E3062773F30303B004, ); isa = PBXGroup; name = MP3; refType = 4; }; EA85A0E3062773F30303B004 = { children = ( EA85A0EF0627755D0303B004, ); isa = PBXGroup; name = Headers; refType = 4; }; EA85A0E4062774020303B004 = { children = ( EA85A0ED062775460303B004, ); isa = PBXGroup; name = Classes; refType = 4; }; EA85A0E5062774250303B004 = { buildActionMask = 2147483647; files = ( EA85A0F00627755D0303B004, EA7EE7A0063AEA0B039F4895, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA85A0E6062774250303B004 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA85A0E7062774250303B004 = { buildActionMask = 2147483647; files = ( EA85A0EE062775460303B004, EA7EE7A4063AEA4F039F4895, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA85A0E8062774250303B004 = { buildActionMask = 2147483647; files = ( EA85A0F10627757C0303B004, EA87125906277700037C85D7, EA9EE064078207F20394BCE8, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA85A0E9062774250303B004 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA85A0EA062774250303B004 = { buildPhases = ( EA85A0E5062774250303B004, EA85A0E6062774250303B004, EA85A0E7062774250303B004, EA85A0E8062774250303B004, EA85A0E9062774250303B004, ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lmad -lid3tag -lz"; OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = MP3; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXBundleTarget; name = MP3; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = MP3; productReference = EA85A0EB062774250303B004; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable MP3 CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass MP3 "; }; EA85A0EB062774250303B004 = { isa = PBXBundleReference; path = MP3.format; refType = 3; }; EA85A0ED062775460303B004 = { fileEncoding = 4; isa = PBXFileReference; name = MP3.m; path = Bundles/MP3/MP3.m; refType = 4; }; EA85A0EE062775460303B004 = { fileRef = EA85A0ED062775460303B004; isa = PBXBuildFile; settings = { }; }; EA85A0EF0627755D0303B004 = { fileEncoding = 4; isa = PBXFileReference; name = MP3.h; path = Bundles/MP3/MP3.h; refType = 4; }; EA85A0F00627755D0303B004 = { fileRef = EA85A0EF0627755D0303B004; isa = PBXBuildFile; settings = { }; }; EA85A0F10627757C0303B004 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA87125906277700037C85D7 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA8795DF06F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneController.h; refType = 4; }; EA8795E006F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneController.m; refType = 4; }; EA8795E306F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; name = NSNumberExtensions.h; path = Frameworks/Cynthiune/NSNumberExtensions.h; refType = 4; }; EA8795E406F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; name = NSNumberExtensions.m; path = Frameworks/Cynthiune/NSNumberExtensions.m; refType = 4; }; EA8795E506F66AA403809032 = { fileEncoding = 4; isa = PBXFileReference; name = Output.h; path = Frameworks/Cynthiune/Output.h; refType = 4; }; EA88F6F10682227603ABED23 = { fileEncoding = 4; isa = PBXFileReference; name = Italian; path = Italian.lproj/Localizable.strings; refType = 4; }; EA88F6F2068222A103ABED23 = { fileEncoding = 4; isa = PBXFileReference; name = Italian; path = Italian.lproj/InfoPlist.strings; refType = 4; }; EA88F6F3068234B203ABED23 = { buildActionMask = 2147483647; files = ( EA9ADB0306823B7A03000102, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA88F6F4068234B203ABED23 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA88F6F5068234B203ABED23 = { buildActionMask = 2147483647; files = ( EA9ADB0106823B6103000102, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA88F6F6068234B203ABED23 = { buildActionMask = 2147483647; files = ( EA9ADB0406823B9103000102, EA9ADB0506823BA103000102, EA9EE063078207F20394BCE8, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA88F6F7068234B203ABED23 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA88F6F8068234B203ABED23 = { buildPhases = ( EA88F6F3068234B203ABED23, EA88F6F4068234B203ABED23, EA88F6F5068234B203ABED23, EA88F6F6068234B203ABED23, EA88F6F7068234B203ABED23, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I/usr/local/include/libmodplug -I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lmodplug -lstdc++"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Mod; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXBundleTarget; name = Mod; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Mod; productReference = EA88F6F9068234B203ABED23; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable Mod CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass Mod "; }; EA88F6F9068234B203ABED23 = { isa = PBXBundleReference; path = Mod.format; refType = 3; }; EA88F6FA068234C503ABED23 = { isa = PBXTargetDependency; target = EA88F6F8068234B203ABED23; }; EA88F7010682380403ABED23 = { fileRef = EA88F6F9068234B203ABED23; isa = PBXBuildFile; settings = { }; }; EA8A19170688EE2B03C0F62E = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneWindow.h; refType = 4; }; EA8A19180688EE2B03C0F62E = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneWindow.m; refType = 4; }; EA8A20B30675A45C03A8D3C1 = { children = ( EA8A20B40675A46B03A8D3C1, EA8A20B50675A47503A8D3C1, ); isa = PBXGroup; name = AudioFile; refType = 4; }; EA8A20B40675A46B03A8D3C1 = { children = ( EA8A20BD0675A4D003A8D3C1, ); isa = PBXGroup; name = Classes; refType = 4; }; EA8A20B50675A47503A8D3C1 = { children = ( EA8A20BF0675A4EB03A8D3C1, ); isa = PBXGroup; name = Headers; refType = 4; }; EA8A20B60675A4A203A8D3C1 = { buildActionMask = 2147483647; files = ( EA8A20C00675A4EB03A8D3C1, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8A20B70675A4A203A8D3C1 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8A20B80675A4A203A8D3C1 = { buildActionMask = 2147483647; files = ( EA8A20BE0675A4D003A8D3C1, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8A20B90675A4A203A8D3C1 = { buildActionMask = 2147483647; files = ( EA8A20CB0675A64903A8D3C1, EA4FAC4F09A451B00310F3BF, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8A20BA0675A4A203A8D3C1 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8A20BB0675A4A203A8D3C1 = { buildPhases = ( EA8A20B60675A4A203A8D3C1, EA8A20B70675A4A203A8D3C1, EA8A20B80675A4A203A8D3C1, EA8A20B90675A4A203A8D3C1, EA8A20BA0675A4A203A8D3C1, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp -framework Cynthiune"; OTHER_LDFLAGS = "-laudiofile -framework Cynthiune"; OTHER_REZFLAGS = ""; PRODUCT_NAME = AudioFile; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( EA9EE065078208320394BCE8, ); isa = PBXBundleTarget; name = AudioFile; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = AudioFile; productReference = EA8A20BC0675A4A203A8D3C1; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable AudioFile CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass AudioFile "; }; EA8A20BC0675A4A203A8D3C1 = { isa = PBXBundleReference; path = AudioFile.format; refType = 3; }; EA8A20BD0675A4D003A8D3C1 = { fileEncoding = 4; isa = PBXFileReference; name = AudioFile.m; path = Bundles/AudioFile/AudioFile.m; refType = 4; }; EA8A20BE0675A4D003A8D3C1 = { fileRef = EA8A20BD0675A4D003A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20BF0675A4EB03A8D3C1 = { fileEncoding = 4; isa = PBXFileReference; name = AudioFileBundle.h; path = Bundles/AudioFile/AudioFileBundle.h; refType = 4; }; EA8A20C00675A4EB03A8D3C1 = { fileRef = EA8A20BF0675A4EB03A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20CB0675A64903A8D3C1 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA8A20CC0675A79E03A8D3C1 = { fileRef = EA8A20BC0675A4A203A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20CF0675A80A03A8D3C1 = { isa = PBXFileReference; name = "playlist-pushed.tiff"; path = "Images/playlist-pushed.tiff"; refType = 4; }; EA8A20D00675A80A03A8D3C1 = { isa = PBXFileReference; name = playlist.tiff; path = Images/playlist.tiff; refType = 4; }; EA8A20D10675A80A03A8D3C1 = { isa = PBXFileReference; name = "repeat-pushed.tiff"; path = "Images/repeat-pushed.tiff"; refType = 4; }; EA8A20D20675A80A03A8D3C1 = { isa = PBXFileReference; name = repeat.tiff; path = Images/repeat.tiff; refType = 4; }; EA8A20D30675A80A03A8D3C1 = { isa = PBXFileReference; name = "shuffle-pushed.tiff"; path = "Images/shuffle-pushed.tiff"; refType = 4; }; EA8A20D40675A80A03A8D3C1 = { isa = PBXFileReference; name = shuffle.tiff; path = Images/shuffle.tiff; refType = 4; }; EA8A20D70675A80A03A8D3C1 = { fileRef = EA8A20CF0675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20D80675A80A03A8D3C1 = { fileRef = EA8A20D00675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20D90675A80A03A8D3C1 = { fileRef = EA8A20D10675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20DA0675A80A03A8D3C1 = { fileRef = EA8A20D20675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20DB0675A80A03A8D3C1 = { fileRef = EA8A20D30675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8A20DC0675A80A03A8D3C1 = { fileRef = EA8A20D40675A80A03A8D3C1; isa = PBXBuildFile; settings = { }; }; EA8B67B706F819BA03464193 = { fileRef = F7BED96F0621E9B5010E156D; isa = PBXBuildFile; settings = { }; }; EA8B67B806F819BB03464193 = { fileRef = F7BED9710621E9CF010E156D; isa = PBXBuildFile; settings = { }; }; EA8B67B906F819C303464193 = { fileRef = EA8795E006F66AA403809032; isa = PBXBuildFile; settings = { }; }; EA8B67BC06F819C603464193 = { fileRef = F7858BEC061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67BD06F819C603464193 = { fileRef = F7858BEE061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67BE06F819C803464193 = { fileRef = F7858BF0061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67C006F819CA03464193 = { fileRef = F7858BF4061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67C106F819CA03464193 = { fileRef = F7858BF6061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67C206F819CB03464193 = { fileRef = F7858BF8061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67C406F819CC03464193 = { fileRef = EA7EE76C063AE6B6039F4895; isa = PBXBuildFile; settings = { }; }; EA8B67C506F819CD03464193 = { fileRef = F7858BFD061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67C606F819CE03464193 = { fileRef = F7858BFF061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67C706F819CE03464193 = { fileRef = F7858C01061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67C806F819F303464193 = { fileRef = F7858BFB061FC27301C0FE28; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA8B67C906F819F403464193 = { fileRef = EA8795E506F66AA403809032; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA8B67CA06F819F403464193 = { fileRef = F7858BEA061FC27301C0FE28; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA8B67CC06F81A0303464193 = { fileRef = EA7EE734063AE6B6039F4895; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA8B67D206F81B0B03464193 = { fileRef = EA8795DF06F66AA403809032; isa = PBXBuildFile; settings = { }; }; EA8B67D306F81B0D03464193 = { fileRef = F7858BEB061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67D406F81B0D03464193 = { fileRef = F7858BED061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67D506F81B0E03464193 = { fileRef = F7858BEF061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67D706F81B1003464193 = { fileRef = F7858BF3061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67D806F81B1103464193 = { fileRef = F7858BF5061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67D906F81B1103464193 = { fileRef = F7858BF7061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67DB06F81B1303464193 = { fileRef = EA7EE76B063AE6B6039F4895; isa = PBXBuildFile; settings = { }; }; EA8B67DD06F81B1603464193 = { fileRef = F7858BFC061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67DE06F81B1603464193 = { fileRef = F7858BFE061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67DF06F81B1703464193 = { fileRef = F7858C00061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; EA8B67E106F81B3A03464193 = { fileRef = F7858C1C061FC2A801C0FE28; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA8B67E206F81B3C03464193 = { fileRef = EA8795E306F66AA403809032; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EA8B67E706F81B6C03464193 = { fileRef = EA8795E406F66AA403809032; isa = PBXBuildFile; settings = { }; }; EA8B67E806F8202803464193 = { fileRef = EA8A19180688EE2B03C0F62E; isa = PBXBuildFile; settings = { }; }; EA8B67E906F8202903464193 = { fileRef = EA8BBBFA0682D60703C2B047; isa = PBXBuildFile; settings = { }; }; EA8BBBF90682D60703C2B047 = { fileEncoding = 4; isa = PBXFileReference; path = CynthiunePopUpButton.h; refType = 4; }; EA8BBBFA0682D60703C2B047 = { fileEncoding = 4; isa = PBXFileReference; path = CynthiunePopUpButton.m; refType = 4; }; EA8D0BF706268D9503000102 = { children = ( EA8D0C0106268E3003000102, ); isa = PBXGroup; name = Classes; refType = 4; }; EA8D0BF806268D9D03000102 = { children = ( EA8D0C0306268E4303000102, ); isa = PBXGroup; name = Headers; refType = 4; }; EA8D0BF906268DD403000102 = { buildActionMask = 2147483647; files = ( EA8D0C0406268E4303000102, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8D0BFA06268DD403000102 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8D0BFB06268DD403000102 = { buildActionMask = 2147483647; files = ( EA8D0C0206268E3003000102, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8D0BFC06268DD403000102 = { buildActionMask = 2147483647; files = ( EA8D0C0506268E7903000102, EA8D0C0806268F2703000102, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8D0BFD06268DD403000102 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8D0BFE06268DD403000102 = { buildPhases = ( EA8D0BF906268DD403000102, EA8D0BFA06268DD403000102, EA8D0BFB06268DD403000102, EA8D0BFC06268DD403000102, EA8D0BFD06268DD403000102, ); buildSettings = { DEBUGGING_SYMBOLS = NO; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = dummy; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "\U0001-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = output; }; dependencies = ( ); isa = PBXBundleTarget; name = dummy; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = dummy; productReference = EA8D0BFF06268DD403000102; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable dummy CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass dummy "; }; EA8D0BFF06268DD403000102 = { isa = PBXBundleReference; path = dummy.output; refType = 3; }; EA8D0C0106268E3003000102 = { fileEncoding = 4; isa = PBXFileReference; name = dummy.m; path = Bundles/dummy/dummy.m; refType = 4; }; EA8D0C0206268E3003000102 = { fileRef = EA8D0C0106268E3003000102; isa = PBXBuildFile; settings = { }; }; EA8D0C0306268E4303000102 = { fileEncoding = 4; isa = PBXFileReference; name = dummy.h; path = Bundles/dummy/dummy.h; refType = 4; }; EA8D0C0406268E4303000102 = { fileRef = EA8D0C0306268E4303000102; isa = PBXBuildFile; settings = { }; }; EA8D0C0506268E7903000102 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA8D0C0806268F2703000102 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA8E355D09476698032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = Slovak; path = Slovak.lproj/InfoPlist.strings; refType = 4; }; EA8E355E094766BD032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = TraditionalChinese; path = TraditionalChinese.lproj/InfoPlist.strings; refType = 4; }; EA8E3562094766F7032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = Hungarian; path = Hungarian.lproj/InfoPlist.strings; refType = 4; }; EA8E35630947670D032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = Spanish; path = Spanish.lproj/InfoPlist.strings; refType = 4; }; EA8E356409476757032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = Hungarian; path = Hungarian.lproj/Localizable.strings; refType = 4; }; EA8E35650947676F032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = Slovak; path = Slovak.lproj/Localizable.strings; refType = 4; }; EA8E356909476796032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = TraditionalChinese; path = TraditionalChinese.lproj/Localizable.strings; refType = 4; }; EA8E356A09476934032DC65E = { fileEncoding = 4; isa = PBXFileReference; name = Spanish; path = Spanish.lproj/Localizable.strings; refType = 4; }; EA8E356B09476B19032DC65E = { buildActionMask = 2147483647; files = ( EADC4D6909476C5903B0DF6D, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8E356C09476B19032DC65E = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8E356D09476B19032DC65E = { buildActionMask = 2147483647; files = ( EADC4D6A09476C5903B0DF6D, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8E356E09476B19032DC65E = { buildActionMask = 2147483647; files = ( EADC4D9C09476DC503B0DF6D, EADC4D9D09476DC503B0DF6D, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8E356F09476B19032DC65E = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8E357009476B19032DC65E = { buildPhases = ( EA8E356B09476B19032DC65E, EA8E356C09476B19032DC65E, EA8E356D09476B19032DC65E, EA8E356E09476B19032DC65E, EA8E356F09476B19032DC65E, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ""; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lid3tag -lz"; OTHER_REZFLAGS = ""; PRODUCT_NAME = ID3Tag; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = tags; }; dependencies = ( ); isa = PBXBundleTarget; name = ID3Tag; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = ID3Tag; productReference = EA8E357109476B19032DC65E; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable ID3Tag CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass ID3Tag "; }; EA8E357109476B19032DC65E = { isa = PBXBundleReference; path = ID3Tag.tags; refType = 3; }; EA8E357209476B85032DC65E = { isa = PBXTargetDependency; target = EA8E357009476B19032DC65E; }; EA8E357609476BA7032DC65E = { fileRef = EA8E357109476B19032DC65E; isa = PBXBuildFile; settings = { }; }; EA8F759506F89A1F03F15592 = { children = ( EA8F759606F89A3103F15592, EA8F759706F89A3C03F15592, ); isa = PBXGroup; name = FLAC; refType = 4; }; EA8F759606F89A3103F15592 = { children = ( EA8F75AE06F89D9103F15592, ); isa = PBXGroup; name = Classes; path = ""; refType = 4; }; EA8F759706F89A3C03F15592 = { children = ( EA8F75AD06F89D9103F15592, ); isa = PBXGroup; name = Headers; refType = 4; }; EA8F759806F89A7D03F15592 = { buildActionMask = 2147483647; files = ( EA8F75AF06F89D9103F15592, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8F759906F89A7D03F15592 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8F759A06F89A7D03F15592 = { buildActionMask = 2147483647; files = ( EA8F75B006F89D9103F15592, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8F759B06F89A7D03F15592 = { buildActionMask = 2147483647; files = ( EA8F75A806F89D3603F15592, EA8F75AC06F89D5E03F15592, EA9EE05C078207F20394BCE8, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8F759C06F89A7D03F15592 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA8F759D06F89A7D03F15592 = { buildPhases = ( EA8F759806F89A7D03F15592, EA8F759906F89A7D03F15592, EA8F759A06F89A7D03F15592, EA8F759B06F89A7D03F15592, EA8F759C06F89A7D03F15592, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLAC; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXBundleTarget; name = FLAC; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = FLAC; productReference = EA8F759E06F89A7D03F15592; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable FLAC CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass FLAC "; }; EA8F759E06F89A7D03F15592 = { isa = PBXBundleReference; path = FLAC.format; refType = 3; }; EA8F759F06F89A9103F15592 = { isa = PBXTargetDependency; target = EA8F759D06F89A7D03F15592; }; EA8F75A806F89D3603F15592 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA8F75AC06F89D5E03F15592 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA8F75AD06F89D9103F15592 = { fileEncoding = 4; isa = PBXFileReference; name = FLAC.h; path = Bundles/FLAC/FLAC.h; refType = 4; }; EA8F75AE06F89D9103F15592 = { fileEncoding = 4; isa = PBXFileReference; name = FLAC.m; path = Bundles/FLAC/FLAC.m; refType = 4; }; EA8F75AF06F89D9103F15592 = { fileRef = EA8F75AD06F89D9103F15592; isa = PBXBuildFile; settings = { }; }; EA8F75B006F89D9103F15592 = { fileRef = EA8F75AE06F89D9103F15592; isa = PBXBuildFile; settings = { }; }; EA9316530770FC6503000102 = { fileEncoding = 4; isa = PBXFileReference; name = CWMFile.cpp; path = Bundles/WindowsMedia/CWMFile.cpp; refType = 4; }; EA9316550770FC6503000102 = { fileRef = EA9316530770FC6503000102; isa = PBXBuildFile; settings = { }; }; EA9316560770FCEB03000102 = { fileEncoding = 4; isa = PBXFileReference; name = CWMFile.h; path = Bundles/WindowsMedia/CWMFile.h; refType = 4; }; EA9316570770FCEB03000102 = { fileRef = EA9316560770FCEB03000102; isa = PBXBuildFile; settings = { }; }; EA9316580770FD0903000102 = { fileEncoding = 4; isa = PBXFileReference; name = WindowsMedia.h; path = Bundles/WindowsMedia/WindowsMedia.h; refType = 4; }; EA9316590770FD0903000102 = { fileRef = EA9316580770FD0903000102; isa = PBXBuildFile; settings = { }; }; EA93165A0770FD3003000102 = { fileEncoding = 4; isa = PBXFileReference; name = WindowsMedia.m; path = Bundles/WindowsMedia/WindowsMedia.m; refType = 4; }; EA93165B0770FD3003000102 = { fileRef = EA93165A0770FD3003000102; isa = PBXBuildFile; settings = { }; }; EA949F68062720760348A0D9 = { buildActionMask = 2147483647; files = ( EA675449062726F10396FC5D, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA949F69062720760348A0D9 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA949F6A062720760348A0D9 = { buildActionMask = 2147483647; files = ( EA675447062726D80396FC5D, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA949F6B062720760348A0D9 = { buildActionMask = 2147483647; files = ( EA949F73062720CA0348A0D9, EA949F74062721CF0348A0D9, EA949F75062721D00348A0D9, EA949F76062721D30348A0D9, EA949F77062721D70348A0D9, EA67544A062731380396FC5D, EA9EE062078207F20394BCE8, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA949F6C062720760348A0D9 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA949F6D062720760348A0D9 = { buildPhases = ( EA949F68062720760348A0D9, EA949F69062720760348A0D9, EA949F6A062720760348A0D9, EA949F6B062720760348A0D9, EA949F6C062720760348A0D9, ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_TREAT_WARNINGS_AS_ERRORS = YES; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = MacOSXPlayer; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = output; }; dependencies = ( ); isa = PBXBundleTarget; name = MacOSXPlayer; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = MacOSXPlayer; productReference = EA949F6E062720760348A0D9; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable MacOSXPlayer CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass MacOSXPlayer "; }; EA949F6E062720760348A0D9 = { isa = PBXBundleReference; path = MacOSXPlayer.output; refType = 3; }; EA949F6F0627207D0348A0D9 = { isa = PBXTargetDependency; target = EA949F6D062720760348A0D9; }; EA949F70062720910348A0D9 = { children = ( EA949F72062720A90348A0D9, EA949F710627209C0348A0D9, ); isa = PBXGroup; name = MacOSXPlayer; refType = 4; }; EA949F710627209C0348A0D9 = { children = ( EA675448062726F10396FC5D, ); isa = PBXGroup; name = Headers; refType = 4; }; EA949F72062720A90348A0D9 = { children = ( EA675446062726D80396FC5D, ); isa = PBXGroup; name = Classes; refType = 4; }; EA949F73062720CA0348A0D9 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA949F74062721CF0348A0D9 = { fileRef = F502406503B83D9A01000004; isa = PBXBuildFile; settings = { }; }; EA949F75062721D00348A0D9 = { fileRef = F502404803B83C9E01000004; isa = PBXBuildFile; settings = { }; }; EA949F76062721D30348A0D9 = { fileRef = F502405C03B83D6601000004; isa = PBXBuildFile; settings = { }; }; EA949F77062721D70348A0D9 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA95850F078BA57703566F1F = { fileEncoding = 4; isa = PBXFileReference; path = SongInspectorController.h; refType = 4; }; EA958510078BA57703566F1F = { fileEncoding = 4; isa = PBXFileReference; path = SongInspectorController.m; refType = 4; }; EA958511078BA57703566F1F = { fileRef = EA95850F078BA57703566F1F; isa = PBXBuildFile; settings = { }; }; EA958512078BA57703566F1F = { fileRef = EA958510078BA57703566F1F; isa = PBXBuildFile; settings = { }; }; EA958513078BAB6B03566F1F = { isa = PBXFileReference; path = SongInspector.nib; refType = 4; }; EA958514078BAB6B03566F1F = { fileRef = EA958513078BAB6B03566F1F; isa = PBXBuildFile; settings = { }; }; EA96C1D80770F81F03166923 = { buildActionMask = 2147483647; files = ( EA9316570770FCEB03000102, EA9316590770FD0903000102, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1D90770F81F03166923 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1DA0770F81F03166923 = { buildActionMask = 2147483647; files = ( EA9316550770FC6503000102, EA93165B0770FD3003000102, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1DB0770F81F03166923 = { buildActionMask = 2147483647; files = ( EA9EE061078207F20394BCE8, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1DC0770F81F03166923 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1DD0770F81F03166923 = { buildPhases = ( EA96C1D80770F81F03166923, EA96C1D90770F81F03166923, EA96C1DA0770F81F03166923, EA96C1DB0770F81F03166923, EA96C1DC0770F81F03166923, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = WindowsMedia; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXBundleTarget; name = WindowsMedia; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = WindowsMedia; productReference = EA96C1DE0770F81F03166923; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable WindowsMedia CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 "; }; EA96C1DE0770F81F03166923 = { isa = PBXBundleReference; path = WindowsMedia.format; refType = 3; }; EA96C1E00770F84803166923 = { buildActionMask = 2147483647; files = ( EA03BA5609D0F84A036B92BF, EA03BA5A09D0F862036B92BF, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1E10770F84803166923 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1E20770F84803166923 = { buildActionMask = 2147483647; files = ( EA03BA5709D0F84A036B92BF, EA03BA5B09D0F862036B92BF, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1E30770F84803166923 = { buildActionMask = 2147483647; files = ( EA9EE05F078207F20394BCE8, EA03BA5C09D0FCF7036B92BF, EA03BA5D09D0FCFD036B92BF, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1E40770F84803166923 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EA96C1E50770F84803166923 = { buildPhases = ( EA96C1E00770F84803166923, EA96C1E10770F84803166923, EA96C1E20770F84803166923, EA96C1E30770F84803166923, EA96C1E40770F84803166923, ); buildSettings = { FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ""; OTHER_LDFLAGS = "-lmpcdec"; OTHER_REZFLAGS = ""; PRODUCT_NAME = Musepack; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = format; }; dependencies = ( ); isa = PBXBundleTarget; name = Musepack; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Musepack; productReference = EA96C1E60770F84803166923; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable Musepack CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 "; }; EA96C1E60770F84803166923 = { isa = PBXBundleReference; path = Musepack.format; refType = 3; }; EA96C1E70770F84F03166923 = { isa = PBXTargetDependency; target = EA96C1E50770F84803166923; }; EA96C1E80770F87303166923 = { children = ( EA96C1EC0770F8C803166923, EA96C1EB0770F8BF03166923, EA96C1EA0770F89D03166923, ); isa = PBXGroup; name = WindowsMedia; refType = 4; }; EA96C1E90770F87B03166923 = { children = ( EA03BA5209D0F801036B92BF, EA03BA5309D0F80B036B92BF, ); isa = PBXGroup; name = Musepack; refType = 4; }; EA96C1EA0770F89D03166923 = { children = ( EA93165A0770FD3003000102, ); isa = PBXGroup; name = Classes; refType = 4; }; EA96C1EB0770F8BF03166923 = { children = ( EA9316560770FCEB03000102, EA9316580770FD0903000102, ); isa = PBXGroup; name = Headers; refType = 4; }; EA96C1EC0770F8C803166923 = { children = ( EA9316530770FC6503000102, ); isa = PBXGroup; name = "Other Sources"; refType = 4; }; EA9ADAFD06823B0603000102 = { children = ( EA9ADAFE06823B1703000102, EA9ADAFF06823B3303000102, ); isa = PBXGroup; name = Mod; refType = 4; }; EA9ADAFE06823B1703000102 = { children = ( EA9ADB0006823B6103000102, ); isa = PBXGroup; name = Classes; refType = 4; }; EA9ADAFF06823B3303000102 = { children = ( EA9ADB0206823B7A03000102, ); isa = PBXGroup; name = Headers; refType = 4; }; EA9ADB0006823B6103000102 = { fileEncoding = 4; isa = PBXFileReference; name = Mod.m; path = Bundles/Mod/Mod.m; refType = 4; }; EA9ADB0106823B6103000102 = { fileRef = EA9ADB0006823B6103000102; isa = PBXBuildFile; settings = { }; }; EA9ADB0206823B7A03000102 = { fileEncoding = 4; isa = PBXFileReference; name = Mod.h; path = Bundles/Mod/Mod.h; refType = 4; }; EA9ADB0306823B7A03000102 = { fileRef = EA9ADB0206823B7A03000102; isa = PBXBuildFile; settings = { }; }; EA9ADB0406823B9103000102 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EA9ADB0506823BA103000102 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EA9EE052078207F20394BCE8 = { isa = PBXFrameworkReference; name = Cynthiune.framework; path = build/Cynthiune.framework; refType = 4; }; EA9EE05C078207F20394BCE8 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA9EE05E078207F20394BCE8 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA9EE05F078207F20394BCE8 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA9EE061078207F20394BCE8 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA9EE062078207F20394BCE8 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA9EE063078207F20394BCE8 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA9EE064078207F20394BCE8 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EA9EE065078208320394BCE8 = { isa = PBXTargetDependency; target = F7BED96D0621E945010E156D; }; EAA6DF9109A663DE034E8D88 = { isa = PBXFileReference; name = "dragged-song.tiff"; path = "Images/dragged-song.tiff"; refType = 4; }; EAA6DF9209A663DE034E8D88 = { isa = PBXFileReference; name = "dragged-songs.tiff"; path = "Images/dragged-songs.tiff"; refType = 4; }; EAA6DF9309A663DE034E8D88 = { fileRef = EAA6DF9109A663DE034E8D88; isa = PBXBuildFile; settings = { }; }; EAA6DF9409A663DE034E8D88 = { fileRef = EAA6DF9209A663DE034E8D88; isa = PBXBuildFile; settings = { }; }; EAA6DF9509A66BCC034E8D88 = { children = ( EAA6DF9609A66BDC034E8D88, EAA6DF9709A66BE2034E8D88, EAEAD23D09DCEDDA03EAE64E, ); isa = PBXGroup; name = VorbisTags; refType = 4; }; EAA6DF9609A66BDC034E8D88 = { children = ( EAA6DFA209A66DA3034E8D88, ); isa = PBXGroup; name = Classes; refType = 4; }; EAA6DF9709A66BE2034E8D88 = { children = ( EAA6DFA009A66D8D034E8D88, ); isa = PBXGroup; name = Headers; refType = 4; }; EAA6DF9809A66BFD034E8D88 = { buildActionMask = 2147483647; files = ( EAA6DFA109A66D8D034E8D88, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA6DF9909A66BFD034E8D88 = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA6DF9A09A66BFD034E8D88 = { buildActionMask = 2147483647; files = ( EAA6DFA309A66DA3034E8D88, EAACCAF409C7ACDF03B7D5E1, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA6DF9B09A66BFD034E8D88 = { buildActionMask = 2147483647; files = ( EA7EC09309A66F5F0362234A, EA7EC09409A66F600362234A, EAF9B4DE09D0EEA1037E42D6, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA6DF9C09A66BFD034E8D88 = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA6DF9D09A66BFD034E8D88 = { buildPhases = ( EAA6DF9809A66BFD034E8D88, EAA6DF9909A66BFD034E8D88, EAA6DF9A09A66BFD034E8D88, EAA6DF9B09A66BFD034E8D88, EAA6DF9C09A66BFD034E8D88, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lvorbis -lvorbisfile -logg"; OTHER_REZFLAGS = ""; PREBINDING = NO; PRODUCT_NAME = VorbisTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = tags; }; dependencies = ( ); isa = PBXBundleTarget; name = VorbisTags; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = VorbisTags; productReference = EAA6DF9E09A66BFD034E8D88; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable VorbisTags CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass VorbisTags "; }; EAA6DF9E09A66BFD034E8D88 = { isa = PBXBundleReference; path = VorbisTags.tags; refType = 3; }; EAA6DF9F09A66D69034E8D88 = { isa = PBXTargetDependency; target = EAA6DF9D09A66BFD034E8D88; }; EAA6DFA009A66D8D034E8D88 = { fileEncoding = 4; isa = PBXFileReference; name = VorbisTags.h; path = Bundles/VorbisTags/VorbisTags.h; refType = 4; }; EAA6DFA109A66D8D034E8D88 = { fileRef = EAA6DFA009A66D8D034E8D88; isa = PBXBuildFile; settings = { }; }; EAA6DFA209A66DA3034E8D88 = { fileEncoding = 4; isa = PBXFileReference; name = VorbisTags.m; path = Bundles/VorbisTags/VorbisTags.m; refType = 4; }; EAA6DFA309A66DA3034E8D88 = { fileRef = EAA6DFA209A66DA3034E8D88; isa = PBXBuildFile; settings = { }; }; EAA95C2F09D0ECA7039F499A = { children = ( EAF9B4DF09D0EEC1037E42D6, EAF9B4E009D0EEC8037E42D6, ); isa = PBXGroup; name = FLACTags; path = ""; refType = 4; }; EAA95C3009D0ECF3039F499A = { buildActionMask = 2147483647; files = ( EAF9B4E309D0EEED037E42D6, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA95C3109D0ECF3039F499A = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA95C3209D0ECF3039F499A = { buildActionMask = 2147483647; files = ( EAF9B4E409D0EEED037E42D6, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA95C3309D0ECF3039F499A = { buildActionMask = 2147483647; files = ( EAF9B4DB09D0EE96037E42D6, EAF9B4DC09D0EE97037E42D6, EAF9B4DD09D0EE98037E42D6, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA95C3409D0ECF3039F499A = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; EAA95C3509D0ECF3039F499A = { buildPhases = ( EAA95C3009D0ECF3039F499A, EAA95C3109D0ECF3039F499A, EAA95C3209D0ECF3039F499A, EAA95C3309D0ECF3039F499A, EAA95C3409D0ECF3039F499A, ); buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = /home/wolfgang/programmes/gnustep/Cynthiune/build; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-I. -D__MACOSX__ -no-cpp-precomp"; OTHER_LDFLAGS = "-lFLAC"; OTHER_REZFLAGS = ""; PRODUCT_NAME = FLACTags; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = tags; }; dependencies = ( ); isa = PBXBundleTarget; name = FLACTags; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = FLACTags; productReference = EAA95C3609D0ECF3039F499A; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable FLACTags CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 NSPrincipalClass FLACTags "; }; EAA95C3609D0ECF3039F499A = { isa = PBXBundleReference; path = FLACTags.tags; refType = 3; }; EAA95C3709D0EDBF039F499A = { isa = PBXTargetDependency; target = EAA95C3509D0ECF3039F499A; }; EAACCAF309C7ACDF03B7D5E1 = { fileEncoding = 4; isa = PBXFileReference; name = vcedit.c; path = Bundles/VorbisTags/vcedit.c; refType = 4; }; EAACCAF409C7ACDF03B7D5E1 = { fileRef = EAACCAF309C7ACDF03B7D5E1; isa = PBXBuildFile; settings = { }; }; EAAF6D39092BC4F303000102 = { isa = PBXFileReference; name = add.tiff; path = Images/add.tiff; refType = 4; }; EAAF6D3A092BC4F303000102 = { isa = PBXFileReference; name = cleanup.tiff; path = Images/cleanup.tiff; refType = 4; }; EAAF6D3B092BC4F303000102 = { fileRef = EAAF6D39092BC4F303000102; isa = PBXBuildFile; settings = { }; }; EAAF6D3C092BC4F303000102 = { fileRef = EAAF6D3A092BC4F303000102; isa = PBXBuildFile; settings = { }; }; EAAF6D3E092BC51E03000102 = { isa = PBXFileReference; name = remove.tiff; path = Images/remove.tiff; refType = 4; }; EAAF6D3F092BC51E03000102 = { isa = PBXFileReference; name = "save-as.tiff"; path = "Images/save-as.tiff"; refType = 4; }; EAAF6D41092BC51E03000102 = { isa = PBXFileReference; name = "slider-knob-disabled.tiff"; path = "Images/slider-knob-disabled.tiff"; refType = 4; }; EAAF6D42092BC51E03000102 = { isa = PBXFileReference; name = "slider-knob-enabled.tiff"; path = "Images/slider-knob-enabled.tiff"; refType = 4; }; EAAF6D43092BC51E03000102 = { isa = PBXFileReference; name = "song-inspector-pushed.tiff"; path = "Images/song-inspector-pushed.tiff"; refType = 4; }; EAAF6D44092BC51E03000102 = { isa = PBXFileReference; name = "song-inspector.tiff"; path = "Images/song-inspector.tiff"; refType = 4; }; EAAF6D46092BC51E03000102 = { fileRef = EAAF6D3E092BC51E03000102; isa = PBXBuildFile; settings = { }; }; EAAF6D47092BC51E03000102 = { fileRef = EAAF6D3F092BC51E03000102; isa = PBXBuildFile; settings = { }; }; EAAF6D4B092BC51E03000102 = { fileRef = EAAF6D43092BC51E03000102; isa = PBXBuildFile; settings = { }; }; EAAF6D4C092BC51E03000102 = { fileRef = EAAF6D44092BC51E03000102; isa = PBXBuildFile; settings = { }; }; EAAF6D4D092BC55703000102 = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneAnimatedImageView.h; refType = 4; }; EAAF6D4E092BC55703000102 = { fileRef = EAAF6D4D092BC55703000102; isa = PBXBuildFile; settings = { }; }; EAB991A1086E52690334F83B = { fileEncoding = 4; isa = PBXFileReference; name = German; path = German.lproj/InfoPlist.strings; refType = 4; }; EAB991A2086E52690334F83B = { fileEncoding = 4; isa = PBXFileReference; name = German; path = German.lproj/Localizable.strings; refType = 4; }; EAB991A3086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-1.tiff"; path = "Images/anim-logo-1.tiff"; refType = 4; }; EAB991A4086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-2.tiff"; path = "Images/anim-logo-2.tiff"; refType = 4; }; EAB991A5086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-3.tiff"; path = "Images/anim-logo-3.tiff"; refType = 4; }; EAB991A6086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-4.tiff"; path = "Images/anim-logo-4.tiff"; refType = 4; }; EAB991A7086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-5.tiff"; path = "Images/anim-logo-5.tiff"; refType = 4; }; EAB991A8086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-6.tiff"; path = "Images/anim-logo-6.tiff"; refType = 4; }; EAB991A9086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-7.tiff"; path = "Images/anim-logo-7.tiff"; refType = 4; }; EAB991AA086E52A60334F83B = { isa = PBXFileReference; name = "anim-logo-8.tiff"; path = "Images/anim-logo-8.tiff"; refType = 4; }; EAB991AB086E52A60334F83B = { fileRef = EAB991A3086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAB991AC086E52A60334F83B = { fileRef = EAB991A4086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAB991AD086E52A60334F83B = { fileRef = EAB991A5086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAB991AE086E52A60334F83B = { fileRef = EAB991A6086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAB991AF086E52A60334F83B = { fileRef = EAB991A7086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAB991B0086E52A60334F83B = { fileRef = EAB991A8086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAB991B1086E52A60334F83B = { fileRef = EAB991A9086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAB991B2086E52A60334F83B = { fileRef = EAB991AA086E52A60334F83B; isa = PBXBuildFile; settings = { }; }; EAC9033508F2EB2003D0D62A = { fileEncoding = 4; isa = PBXFileReference; name = Tags.h; path = Frameworks/Cynthiune/Tags.h; refType = 4; }; EAC9033608F2EB2003D0D62A = { fileRef = EAC9033508F2EB2003D0D62A; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EAC9033708F2ED0603D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = DictionaryCoder.h; refType = 4; }; EAC9033808F2ED0603D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = DictionaryCoder.m; refType = 4; }; EAC9033908F2ED0603D0D62A = { fileRef = EAC9033708F2ED0603D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9033A08F2ED0603D0D62A = { fileRef = EAC9033808F2ED0603D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9033B08F2ED3103D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = M3UArchiver.h; refType = 4; }; EAC9033C08F2ED3103D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = M3UArchiver.m; refType = 4; }; EAC9033D08F2ED3103D0D62A = { fileRef = EAC9033B08F2ED3103D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9033E08F2ED3103D0D62A = { fileRef = EAC9033C08F2ED3103D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9033F08F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistArchiver.h; refType = 4; }; EAC9034008F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistArchiver.m; refType = 4; }; EAC9034108F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = PLSArchiver.h; refType = 4; }; EAC9034208F2ED4903D0D62A = { fileEncoding = 4; isa = PBXFileReference; path = PLSArchiver.m; refType = 4; }; EAC9034308F2ED4903D0D62A = { fileRef = EAC9033F08F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9034408F2ED4903D0D62A = { fileRef = EAC9034008F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9034508F2ED4903D0D62A = { fileRef = EAC9034108F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9034608F2ED4903D0D62A = { fileRef = EAC9034208F2ED4903D0D62A; isa = PBXBuildFile; settings = { }; }; EAC9034708F2EF8403D0D62A = { isa = PBXTargetDependency; target = EA85A0EA062774250303B004; }; EAC9034D08F2F12103D0D62A = { fileRef = EA85A0EB062774250303B004; isa = PBXBuildFile; settings = { }; }; EAC9034E09079E5503D0D62A = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EAD5CA350675ACB103B51BF6 = { isa = PBXTargetDependency; target = EA8A20BB0675A4A203A8D3C1; }; EADC4D6409476C1203B0DF6D = { children = ( EADC4D6509476C3203B0DF6D, EADC4D6609476C3803B0DF6D, ); isa = PBXGroup; name = ID3Tag; refType = 4; }; EADC4D6509476C3203B0DF6D = { children = ( EADC4D6809476C5903B0DF6D, ); isa = PBXGroup; name = Classes; refType = 4; }; EADC4D6609476C3803B0DF6D = { children = ( EADC4D6709476C5903B0DF6D, ); isa = PBXGroup; name = Headers; refType = 4; }; EADC4D6709476C5903B0DF6D = { fileEncoding = 4; isa = PBXFileReference; name = ID3Tag.h; path = Bundles/ID3Tag/ID3Tag.h; refType = 4; }; EADC4D6809476C5903B0DF6D = { fileEncoding = 4; isa = PBXFileReference; name = ID3Tag.m; path = Bundles/ID3Tag/ID3Tag.m; refType = 4; }; EADC4D6909476C5903B0DF6D = { fileRef = EADC4D6709476C5903B0DF6D; isa = PBXBuildFile; settings = { }; }; EADC4D6A09476C5903B0DF6D = { fileRef = EADC4D6809476C5903B0DF6D; isa = PBXBuildFile; settings = { }; }; EADC4D9C09476DC503B0DF6D = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EADC4D9D09476DC503B0DF6D = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EAEAD23D09DCEDDA03EAE64E = { children = ( EAACCAF309C7ACDF03B7D5E1, ); isa = PBXGroup; name = "Other Sources"; refType = 4; }; EAF9B4DA09D0EE7F037E42D6 = { fileRef = EAA95C3609D0ECF3039F499A; isa = PBXBuildFile; settings = { }; }; EAF9B4DB09D0EE96037E42D6 = { fileRef = 29B97325FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; EAF9B4DC09D0EE97037E42D6 = { fileRef = EA9EE052078207F20394BCE8; isa = PBXBuildFile; settings = { }; }; EAF9B4DD09D0EE98037E42D6 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EAF9B4DE09D0EEA1037E42D6 = { fileRef = F7BED96E0621E945010E156D; isa = PBXBuildFile; settings = { }; }; EAF9B4DF09D0EEC1037E42D6 = { children = ( EAF9B4E209D0EEED037E42D6, ); isa = PBXGroup; name = Classes; refType = 4; }; EAF9B4E009D0EEC8037E42D6 = { children = ( EAF9B4E109D0EEED037E42D6, ); isa = PBXGroup; name = Headers; refType = 4; }; EAF9B4E109D0EEED037E42D6 = { fileEncoding = 4; isa = PBXFileReference; name = FLACTags.h; path = Bundles/FLACTags/FLACTags.h; refType = 4; }; EAF9B4E209D0EEED037E42D6 = { fileEncoding = 4; isa = PBXFileReference; name = FLACTags.m; path = Bundles/FLACTags/FLACTags.m; refType = 4; }; EAF9B4E309D0EEED037E42D6 = { fileRef = EAF9B4E109D0EEED037E42D6; isa = PBXBuildFile; settings = { }; }; EAF9B4E409D0EEED037E42D6 = { fileRef = EAF9B4E209D0EEED037E42D6; isa = PBXBuildFile; settings = { }; }; EAFFEE4B086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneAnimatedImageView.m; refType = 4; }; EAFFEE4C086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneFadingTextField.h; refType = 4; }; EAFFEE4D086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneFadingTextField.m; refType = 4; }; EAFFEE4F086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiunePauseButton.h; refType = 4; }; EAFFEE50086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiunePauseButton.m; refType = 4; }; EAFFEE55086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneSongTitleCell.h; refType = 4; }; EAFFEE56086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneSongTitleCell.m; refType = 4; }; EAFFEE57086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneTextCell.h; refType = 4; }; EAFFEE58086E54DA039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = CynthiuneTextCell.m; refType = 4; }; EAFFEE59086E54DA039AFE6D = { fileRef = EAFFEE4B086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE5A086E54DA039AFE6D = { fileRef = EAFFEE4C086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE5B086E54DA039AFE6D = { fileRef = EAFFEE4D086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE5D086E54DA039AFE6D = { fileRef = EAFFEE4F086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE5E086E54DA039AFE6D = { fileRef = EAFFEE50086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE63086E54DA039AFE6D = { fileRef = EAFFEE55086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE64086E54DA039AFE6D = { fileRef = EAFFEE56086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE65086E54DA039AFE6D = { fileRef = EAFFEE57086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE66086E54DA039AFE6D = { fileRef = EAFFEE58086E54DA039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE67086E553A039AFE6D = { fileRef = EA8BBBF90682D60703C2B047; isa = PBXBuildFile; settings = { }; }; EAFFEE68086E5540039AFE6D = { fileRef = EA8A19170688EE2B03C0F62E; isa = PBXBuildFile; settings = { }; }; EAFFEE69086E5596039AFE6D = { children = ( EAFFEE6A086E55AB039AFE6D, EAFFEE6B086E55B3039AFE6D, ); isa = PBXGroup; name = Cynthiune; refType = 4; }; EAFFEE6A086E55AB039AFE6D = { children = ( EA73D4C1074C823503F60D55, EAFFEE6D086E5601039AFE6D, EAFFEE6F086E5601039AFE6D, EAFFEE71086E5601039AFE6D, EA8795E406F66AA403809032, EA547B69078A36000358AD96, EAFFEE73086E5601039AFE6D, EAFFEE75086E5601039AFE6D, F7858C02061FC27301C0FE28, ); isa = PBXGroup; name = Classes; refType = 4; }; EAFFEE6B086E55B3039AFE6D = { children = ( EA7EE734063AE6B6039F4895, F7858BEA061FC27301C0FE28, EA73D4C0074C823503F60D55, EAFFEE6C086E5601039AFE6D, EAFFEE6E086E5601039AFE6D, EAFFEE70086E5601039AFE6D, EA8795E306F66AA403809032, EA547B68078A36000358AD96, EAFFEE72086E5601039AFE6D, EAFFEE74086E5601039AFE6D, EA8795E506F66AA403809032, F7858BFB061FC27301C0FE28, EAC9033508F2EB2003D0D62A, F7858C1C061FC2A801C0FE28, ); isa = PBXGroup; name = Headers; path = ""; refType = 4; }; EAFFEE6C086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSArrayExtensions.h; path = Frameworks/Cynthiune/NSArrayExtensions.h; refType = 4; }; EAFFEE6D086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSArrayExtensions.m; path = Frameworks/Cynthiune/NSArrayExtensions.m; refType = 4; }; EAFFEE6E086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSCellExtensions.h; path = Frameworks/Cynthiune/NSCellExtensions.h; refType = 4; }; EAFFEE6F086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSCellExtensions.m; path = Frameworks/Cynthiune/NSCellExtensions.m; refType = 4; }; EAFFEE70086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSColorExtensions.h; path = Frameworks/Cynthiune/NSColorExtensions.h; refType = 4; }; EAFFEE71086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSColorExtensions.m; path = Frameworks/Cynthiune/NSColorExtensions.m; refType = 4; }; EAFFEE72086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSTimerExtensions.h; path = Frameworks/Cynthiune/NSTimerExtensions.h; refType = 4; }; EAFFEE73086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSTimerExtensions.m; path = Frameworks/Cynthiune/NSTimerExtensions.m; refType = 4; }; EAFFEE74086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSViewExtensions.h; path = Frameworks/Cynthiune/NSViewExtensions.h; refType = 4; }; EAFFEE75086E5601039AFE6D = { fileEncoding = 4; isa = PBXFileReference; name = NSViewExtensions.m; path = Frameworks/Cynthiune/NSViewExtensions.m; refType = 4; }; EAFFEE76086E5601039AFE6D = { fileRef = EAFFEE6C086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EAFFEE77086E5601039AFE6D = { fileRef = EAFFEE6D086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE78086E5601039AFE6D = { fileRef = EAFFEE6E086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EAFFEE79086E5601039AFE6D = { fileRef = EAFFEE6F086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE7A086E5601039AFE6D = { fileRef = EAFFEE70086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EAFFEE7B086E5601039AFE6D = { fileRef = EAFFEE71086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE7C086E5601039AFE6D = { fileRef = EAFFEE72086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EAFFEE7D086E5601039AFE6D = { fileRef = EAFFEE73086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE7E086E5601039AFE6D = { fileRef = EAFFEE74086E5601039AFE6D; isa = PBXBuildFile; settings = { ATTRIBUTES = ( Public, ); }; }; EAFFEE7F086E5601039AFE6D = { fileRef = EAFFEE75086E5601039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE80086E5696039AFE6D = { fileRef = EA73D4C1074C823503F60D55; isa = PBXBuildFile; settings = { }; }; EAFFEE81086E61A7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = BundleManager.h; refType = 4; }; EAFFEE82086E61A7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = BundleManager.m; refType = 4; }; EAFFEE83086E61A7039AFE6D = { fileRef = EAFFEE81086E61A7039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE84086E61A7039AFE6D = { fileRef = EAFFEE82086E61A7039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE85086E61D7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = MBResultsPanel.h; refType = 4; }; EAFFEE86086E61D7039AFE6D = { fileEncoding = 4; isa = PBXFileReference; path = MBResultsPanel.m; refType = 4; }; EAFFEE87086E61D7039AFE6D = { fileRef = EAFFEE85086E61D7039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE88086E61D7039AFE6D = { fileRef = EAFFEE86086E61D7039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE89086E688A039AFE6D = { isa = PBXFileReference; name = "lookup-mb-off.tiff"; path = "Images/lookup-mb-off.tiff"; refType = 4; }; EAFFEE8A086E688A039AFE6D = { isa = PBXFileReference; name = "lookup-mb-on.tiff"; path = "Images/lookup-mb-on.tiff"; refType = 4; }; EAFFEE8D086E688A039AFE6D = { isa = PBXFileReference; name = "song-pointer.tiff"; path = "Images/song-pointer.tiff"; refType = 4; }; EAFFEE8E086E688A039AFE6D = { fileRef = EAFFEE89086E688A039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE8F086E688A039AFE6D = { fileRef = EAFFEE8A086E688A039AFE6D; isa = PBXBuildFile; settings = { }; }; EAFFEE92086E688A039AFE6D = { fileRef = EAFFEE8D086E688A039AFE6D; isa = PBXBuildFile; settings = { }; }; //EA0 //EA1 //EA2 //EA3 //EA4 //F50 //F51 //F52 //F53 //F54 F502404803B83C9E01000004 = { isa = PBXFrameworkReference; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; refType = 0; }; F502405C03B83D6601000004 = { isa = PBXFrameworkReference; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; refType = 0; }; F502406503B83D9A01000004 = { isa = PBXFrameworkReference; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; refType = 0; }; F51A012B03BA9CCB01000004 = { children = ( F51A012C03BA9CE401000004, F51A012D03BA9CE401000004, F59C8F7903C01A7601C14AF2, EA7EE7E1063B04D0039F4895, EA7EE7E2063B04D0039F4895, ); isa = PBXGroup; name = Documentation; refType = 4; }; F51A012C03BA9CE401000004 = { fileEncoding = 4; isa = PBXFileReference; path = ChangeLog; refType = 4; }; F51A012D03BA9CE401000004 = { fileEncoding = 4; isa = PBXFileReference; path = COPYING; refType = 4; }; F51A012E03BA9CE401000004 = { fileRef = F51A012C03BA9CE401000004; isa = PBXBuildFile; settings = { }; }; F51A012F03BA9CE401000004 = { fileRef = F51A012D03BA9CE401000004; isa = PBXBuildFile; settings = { }; }; F531F10803BB93F301000004 = { isa = PBXFrameworkReference; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; refType = 0; }; F531F18903BB941C01000004 = { fileRef = 29B97324FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; F559092103B834CA01000004 = { isa = PBXFileReference; path = Cynthiune.nib; refType = 4; }; F559092303B834D301000004 = { children = ( EAFFEE81086E61A7039AFE6D, EAAF6D4D092BC55703000102, EA8795DF06F66AA403809032, EAFFEE4C086E54DA039AFE6D, EA778ACC09B5778A032657EF, EAFFEE4F086E54DA039AFE6D, EA8BBBF90682D60703C2B047, EAFFEE55086E54DA039AFE6D, EAFFEE57086E54DA039AFE6D, EA8A19170688EE2B03C0F62E, EAC9033708F2ED0603D0D62A, F7858BEB061FC27301C0FE28, F7858BED061FC27301C0FE28, F7858BEF061FC27301C0FE28, EAC9033B08F2ED3103D0D62A, EAFFEE85086E61D7039AFE6D, F7858BF3061FC27301C0FE28, EA73D4B4074C81F203F60D55, EA73D4B6074C81F203F60D55, F7858BF5061FC27301C0FE28, EAC9033F08F2ED4903D0D62A, F7858BF7061FC27301C0FE28, EA7EE76B063AE6B6039F4895, EAC9034108F2ED4903D0D62A, F7858BFC061FC27301C0FE28, F7858BFE061FC27301C0FE28, EA95850F078BA57703566F1F, F7858C00061FC27301C0FE28, ); isa = PBXGroup; name = Headers; refType = 4; }; F59C8F6803C0152501C14AF2 = { children = ( F59C8F6B03C0155B01C14AF2, EA5AA10D09A5220203396ECD, EA5AA10B09A51CA303396ECD, F7858C22061FC31401C0FE28, F7858C1F061FC31401C0FE28, F7858C21061FC31401C0FE28, EAA6DF9109A663DE034E8D88, EAA6DF9209A663DE034E8D88, F7858C23061FC31401C0FE28, F7858C24061FC31401C0FE28, F59C8F6C03C0155B01C14AF2, F7858C28061FC31401C0FE28, F59C8F6D03C0155B01C14AF2, F7858C2A061FC31401C0FE28, F59C8F6E03C0155B01C14AF2, F7858C2B061FC31401C0FE28, EA8A20D00675A80A03A8D3C1, EA8A20CF0675A80A03A8D3C1, F59C8F6F03C0155B01C14AF2, F7858C2E061FC31401C0FE28, EA8A20D20675A80A03A8D3C1, EA8A20D10675A80A03A8D3C1, EA8A20D40675A80A03A8D3C1, EA8A20D30675A80A03A8D3C1, F59C8F7003C0155B01C14AF2, F7858C33061FC31401C0FE28, EAB991A3086E52A60334F83B, EAB991A4086E52A60334F83B, EAB991A5086E52A60334F83B, EAB991A6086E52A60334F83B, EAB991A7086E52A60334F83B, EAB991A8086E52A60334F83B, EAB991A9086E52A60334F83B, EAB991AA086E52A60334F83B, EA4FAC5009A456860310F3BF, EAFFEE89086E688A039AFE6D, EAFFEE8A086E688A039AFE6D, EAFFEE8D086E688A039AFE6D, EAAF6D39092BC4F303000102, EAAF6D3A092BC4F303000102, EAAF6D3E092BC51E03000102, EAAF6D3F092BC51E03000102, EAAF6D41092BC51E03000102, EAAF6D42092BC51E03000102, EAAF6D43092BC51E03000102, EAAF6D44092BC51E03000102, ); isa = PBXGroup; name = Images; refType = 4; }; F59C8F6B03C0155B01C14AF2 = { isa = PBXFileReference; name = Cynthiune.icns; path = Images/Cynthiune.icns; refType = 4; }; F59C8F6C03C0155B01C14AF2 = { isa = PBXFileReference; name = next.tiff; path = Images/next.tiff; refType = 4; }; F59C8F6D03C0155B01C14AF2 = { isa = PBXFileReference; name = pause.tiff; path = Images/pause.tiff; refType = 4; }; F59C8F6E03C0155B01C14AF2 = { isa = PBXFileReference; name = play.tiff; path = Images/play.tiff; refType = 4; }; F59C8F6F03C0155B01C14AF2 = { isa = PBXFileReference; name = previous.tiff; path = Images/previous.tiff; refType = 4; }; F59C8F7003C0155B01C14AF2 = { isa = PBXFileReference; name = stop.tiff; path = Images/stop.tiff; refType = 4; }; F59C8F7903C01A7601C14AF2 = { fileEncoding = 4; isa = PBXFileReference; path = NEWS; refType = 4; }; F59C8F7A03C01A7601C14AF2 = { fileRef = F59C8F7903C01A7601C14AF2; isa = PBXBuildFile; settings = { }; }; //F50 //F51 //F52 //F53 //F54 //F70 //F71 //F72 //F73 //F74 F7858BEA061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; name = Format.h; path = Frameworks/Cynthiune/Format.h; refType = 4; }; F7858BEB061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = FormatTester.h; refType = 4; }; F7858BEC061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = FormatTester.m; refType = 4; }; F7858BED061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = GeneralPreference.h; refType = 4; }; F7858BEE061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = GeneralPreference.m; refType = 4; }; F7858BEF061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = InfoDisplayController.h; refType = 4; }; F7858BF0061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = InfoDisplayController.m; refType = 4; }; F7858BF3061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = Player.h; refType = 4; }; F7858BF4061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = Player.m; refType = 4; }; F7858BF5061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = Playlist.h; refType = 4; }; F7858BF6061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = Playlist.m; refType = 4; }; F7858BF7061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistController.h; refType = 4; }; F7858BF8061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistController.m; refType = 4; }; F7858BFB061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; name = Preference.h; path = Frameworks/Cynthiune/Preference.h; refType = 4; }; F7858BFC061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = PreferencesController.h; refType = 4; }; F7858BFD061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = PreferencesController.m; refType = 4; }; F7858BFE061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = Song.h; refType = 4; }; F7858BFF061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = Song.m; refType = 4; }; F7858C00061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistViewController.h; refType = 4; }; F7858C01061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; path = PlaylistViewController.m; refType = 4; }; F7858C02061FC27301C0FE28 = { fileEncoding = 4; isa = PBXFileReference; name = utils.m; path = Frameworks/Cynthiune/utils.m; refType = 4; }; F7858C1C061FC2A801C0FE28 = { fileEncoding = 4; isa = PBXFileReference; name = utils.h; path = Frameworks/Cynthiune/utils.h; refType = 4; }; F7858C1F061FC31401C0FE28 = { isa = PBXFileReference; name = "cynthiune-splash-faded.tiff"; path = "Images/cynthiune-splash-faded.tiff"; refType = 4; }; F7858C21061FC31401C0FE28 = { isa = PBXFileReference; name = "cynthiune-splash.tiff"; path = "Images/cynthiune-splash.tiff"; refType = 4; }; F7858C22061FC31401C0FE28 = { isa = PBXFileReference; name = Cynthiune.tiff; path = Images/Cynthiune.tiff; refType = 4; }; F7858C23061FC31401C0FE28 = { isa = PBXFileReference; name = "eject-pushed.tiff"; path = "Images/eject-pushed.tiff"; refType = 4; }; F7858C24061FC31401C0FE28 = { isa = PBXFileReference; name = eject.tiff; path = Images/eject.tiff; refType = 4; }; F7858C28061FC31401C0FE28 = { isa = PBXFileReference; name = "next-pushed.tiff"; path = "Images/next-pushed.tiff"; refType = 4; }; F7858C2A061FC31401C0FE28 = { isa = PBXFileReference; name = "pause-pushed.tiff"; path = "Images/pause-pushed.tiff"; refType = 4; }; F7858C2B061FC31401C0FE28 = { isa = PBXFileReference; name = "play-pushed.tiff"; path = "Images/play-pushed.tiff"; refType = 4; }; F7858C2E061FC31401C0FE28 = { isa = PBXFileReference; name = "previous-pushed.tiff"; path = "Images/previous-pushed.tiff"; refType = 4; }; F7858C33061FC31401C0FE28 = { isa = PBXFileReference; name = "stop-pushed.tiff"; path = "Images/stop-pushed.tiff"; refType = 4; }; F7BED9680621E945010E156D = { buildActionMask = 2147483647; files = ( EA8B67C806F819F303464193, EA8B67C906F819F403464193, EA8B67CA06F819F403464193, EAC9033608F2EB2003D0D62A, EA8B67CC06F81A0303464193, EA8B67E206F81B3C03464193, EA547B6A078A36000358AD96, EA547B6C078A4B710358AD96, EAFFEE76086E5601039AFE6D, EAFFEE78086E5601039AFE6D, EAFFEE7A086E5601039AFE6D, EAFFEE7C086E5601039AFE6D, EAFFEE7E086E5601039AFE6D, EA8B67E106F81B3A03464193, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; F7BED9690621E945010E156D = { buildActionMask = 2147483647; files = ( ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; F7BED96A0621E945010E156D = { buildActionMask = 2147483647; files = ( F7BED98C0621EA4A010E156D, EA8B67E706F81B6C03464193, EA547B6B078A36000358AD96, EAFFEE77086E5601039AFE6D, EAFFEE79086E5601039AFE6D, EAFFEE7B086E5601039AFE6D, EAFFEE7D086E5601039AFE6D, EAFFEE7F086E5601039AFE6D, EAFFEE80086E5696039AFE6D, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; F7BED96B0621E945010E156D = { buildActionMask = 2147483647; files = ( F7BED9AE0621EA7C010E156D, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; F7BED96C0621E945010E156D = { buildActionMask = 2147483647; files = ( ); isa = PBXRezBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; F7BED96D0621E945010E156D = { buildPhases = ( F7BED9680621E945010E156D, F7BED9690621E945010E156D, F7BED96A0621E945010E156D, F7BED96B0621E945010E156D, F7BED96C0621E945010E156D, ); buildSettings = { DEBUGGING_SYMBOLS = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; INSTALL_PATH = "@executable_path/../Frameworks"; OPTIMIZATION_CFLAGS = "-O2"; OTHER_CFLAGS = "-D__MACOSX__"; OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = Cynthiune; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = framework; }; dependencies = ( ); isa = PBXFrameworkTarget; name = "Cynthiune framework"; productInstallPath = ""; productName = "Cynthiune framework"; productReference = F7BED96E0621E945010E156D; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable Cynthiune CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType FMWK CFBundleShortVersionString CFBundleSignature WOSO CFBundleVersion 0.0.1d1 "; }; F7BED96E0621E945010E156D = { isa = PBXFrameworkReference; path = Cynthiune.framework; refType = 3; }; F7BED96F0621E9B5010E156D = { isa = PBXFileReference; path = Preferences.nib; refType = 4; }; F7BED9710621E9CF010E156D = { isa = PBXFileReference; path = GeneralPreference.nib; refType = 4; }; F7BED98C0621EA4A010E156D = { fileRef = F7858C02061FC27301C0FE28; isa = PBXBuildFile; settings = { }; }; F7BED9AE0621EA7C010E156D = { fileRef = 29B97324FDCFA39411CA2CEA; isa = PBXBuildFile; settings = { }; }; }; rootObject = 29B97313FDCFA39411CA2CEA; } Cynthiune-1.0.0/Cynthiune.pbproj/wolfgang.pbxuser000644 001751 000024 00000040413 11733546722 022632 0ustar00multixstaff000000 000000 // !$*UTF8*$! { 29B97313FDCFA39411CA2CEA = { activeBuildStyle = 4A9504CDFFE6A4B311CA0CBA; activeExecutable = EAB991A0086E51EC0334F83B; activeTarget = 29B97326FDCFA39411CA2CEA; addToTargets = ( EA96C1E50770F84803166923, ); executables = ( EAB991A0086E51EC0334F83B, ); perUserDictionary = { PBXPerProjectTemplateStateSaveDate = 165481488; "PBXTemplateGeometry-F5314676015831810DCA290F" = { ContentSize = "{655, 606}"; LeftSlideOut = { Collapsed = NO; Frame = "{{0, 23}, {655, 583}}"; Split0 = { ActiveTab = 2; Collapsed = NO; Frame = "{{0, 0}, {655, 583}}"; Split0 = { Frame = "{{0, 221}, {655, 362}}"; }; SplitCount = 1; Tab0 = { Debugger = { Collapsed = NO; Frame = "{{0, 0}, {952, 321}}"; Split0 = { Frame = "{{0, 24}, {952, 297}}"; Split0 = { Frame = "{{0, 0}, {468, 297}}"; }; Split1 = { DebugVariablesTableConfiguration = ( Name, 126.803, Value, 150.074, Summary, 172.123, ); Frame = "{{477, 0}, {475, 297}}"; }; SplitCount = 2; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {100, 50}}"; }; Tab1 = { Frame = "{{0, 0}, {100, 50}}"; }; TabCount = 2; TabsVisible = YES; }; Frame = "{{0, 0}, {952, 321}}"; LauncherConfigVersion = 7; }; Tab1 = { Frame = "{{0, 0}, {781, 452}}"; LauncherConfigVersion = 3; Runner = { Frame = "{{0, 0}, {781, 452}}"; }; }; Tab2 = { BuildMessageFrame = "{{0, 0}, {657, 149}}"; BuildTranscriptFrame = "{{0, 158}, {657, 59}}"; Frame = "{{0, 0}, {655, 215}}"; }; Tab3 = { Frame = "{{0, 0}, {612, 295}}"; }; TabCount = 4; TabsVisible = NO; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {300, 533}}"; GroupTreeTableConfiguration = ( TargetStatusColumn, 18, MainColumn, 267, ); }; Tab1 = { ClassesFrame = "{{0, 0}, {280, 398}}"; ClassesTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXClassColumnIdentifier, 237, ); Frame = "{{0, 0}, {278, 659}}"; MembersFrame = "{{0, 407}, {280, 252}}"; MembersTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXMethodColumnIdentifier, 236, ); }; Tab2 = { Frame = "{{0, 0}, {200, 100}}"; }; Tab3 = { Frame = "{{0, 0}, {200, 100}}"; TargetTableConfiguration = ( ActiveObject, 16, ObjectNames, 202.296, ); }; Tab4 = { BreakpointsTreeTableConfiguration = ( breakpointColumn, 197, enabledColumn, 31, ); Frame = "{{0, 0}, {250, 100}}"; }; TabCount = 5; TabsVisible = NO; }; StatusViewVisible = YES; Template = F5314676015831810DCA290F; ToolbarVisible = YES; WindowLocation = "{194, 40}"; }; "PBXTemplateGeometry-F5534CB2020F3F8A0DCA290F" = { ContentSize = "{594, 303}"; LeftSlideOut = { Collapsed = NO; Frame = "{{0, 23}, {594, 280}}"; Split0 = { ActiveTab = 1; Collapsed = YES; Frame = "{{0, 0}, {594, 280}}"; Split0 = { Frame = "{{1e+06, 1e+06}, {594, 0}}"; }; SplitCount = 1; Tab0 = { Debugger = { Collapsed = NO; Frame = "{{0, 0}, {804, 321}}"; Split0 = { Frame = "{{0, 24}, {804, 297}}"; Split0 = { Frame = "{{0, 0}, {394, 297}}"; }; Split1 = { DebugVariablesTableConfiguration = ( Name, 123, Value, 85, Summary, 167.123, ); Frame = "{{403, 0}, {401, 297}}"; }; SplitCount = 2; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {100, 50}}"; }; Tab1 = { Frame = "{{0, 0}, {100, 50}}"; }; TabCount = 2; TabsVisible = YES; }; Frame = "{{0, 0}, {804, 321}}"; LauncherConfigVersion = 7; }; Tab1 = { Frame = "{{0, 0}, {594, 274}}"; LauncherConfigVersion = 3; Runner = { Frame = "{{0, 0}, {594, 274}}"; }; }; Tab2 = { BuildMessageFrame = "{{0, 0}, {806, 237}}"; BuildTranscriptFrame = "{{0, 246}, {806, 3}}"; Frame = "{{0, 0}, {804, 247}}"; }; Tab3 = { Frame = "{{0, 0}, {612, 295}}"; }; TabCount = 4; TabsVisible = NO; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {300, 533}}"; GroupTreeTableConfiguration = ( TargetStatusColumn, 18, MainColumn, 267, ); }; Tab1 = { ClassesFrame = "{{0, 0}, {280, 398}}"; ClassesTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXClassColumnIdentifier, 237, ); Frame = "{{0, 0}, {278, 659}}"; MembersFrame = "{{0, 407}, {280, 252}}"; MembersTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXMethodColumnIdentifier, 236, ); }; Tab2 = { Frame = "{{0, 0}, {200, 100}}"; }; Tab3 = { Frame = "{{0, 0}, {200, 386}}"; TargetTableConfiguration = ( ActiveObject, 16, ObjectNames, 202.296, ); }; Tab4 = { BreakpointsTreeTableConfiguration = ( breakpointColumn, 197, enabledColumn, 31, ); Frame = "{{0, 0}, {250, 386}}"; }; TabCount = 5; TabsVisible = NO; }; StatusViewVisible = YES; Template = F5534CB2020F3F8A0DCA290F; ToolbarVisible = YES; WindowLocation = "{236, 57}"; }; "PBXTemplateGeometry-F5CA7EC8015C06940DCA290F" = { ContentSize = "{705, 569}"; LeftSlideOut = { Collapsed = NO; Frame = "{{0, 0}, {705, 569}}"; Split0 = { Collapsed = NO; Frame = "{{0, 0}, {705, 569}}"; Split0 = { Frame = "{{0, 0}, {705, 569}}"; }; SplitCount = 1; Tab0 = { Debugger = { Collapsed = NO; Frame = "{{0, 0}, {484, 208}}"; Split0 = { Frame = "{{0, 24}, {484, 184}}"; Split0 = { Frame = "{{0, 0}, {236, 184}}"; }; Split1 = { DebugVariablesTableConfiguration = ( Name, 123, Value, 85, Summary, 62.123, ); Frame = "{{245, 0}, {239, 184}}"; }; SplitCount = 2; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {100, 50}}"; }; Tab1 = { Frame = "{{0, 0}, {100, 50}}"; }; TabCount = 2; TabsVisible = YES; }; Frame = "{{0, 0}, {484, 208}}"; LauncherConfigVersion = 7; }; Tab1 = { Frame = "{{0, 0}, {522, 208}}"; LauncherConfigVersion = 3; Runner = { Frame = "{{0, 0}, {522, 208}}"; }; }; Tab2 = { BuildMessageFrame = "{{0, 0}, {809, 410}}"; BuildTranscriptFrame = "{{0, 419}, {809, 119}}"; Frame = "{{0, 0}, {807, 536}}"; }; Tab3 = { Frame = "{{0, 0}, {612, 295}}"; }; TabCount = 4; TabsVisible = NO; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {300, 533}}"; GroupTreeTableConfiguration = ( TargetStatusColumn, 18, MainColumn, 267, ); }; Tab1 = { ClassesFrame = "{{0, 0}, {280, 398}}"; ClassesTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXClassColumnIdentifier, 237, ); Frame = "{{0, 0}, {278, 659}}"; MembersFrame = "{{0, 407}, {280, 252}}"; MembersTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXMethodColumnIdentifier, 236, ); }; Tab2 = { Frame = "{{0, 0}, {200, 100}}"; }; Tab3 = { Frame = "{{0, 0}, {222, 536}}"; TargetTableConfiguration = ( ActiveObject, 16, ObjectNames, 202.296, ); }; Tab4 = { BreakpointsTreeTableConfiguration = ( breakpointColumn, 197, enabledColumn, 31, ); Frame = "{{0, 0}, {250, 528}}"; }; TabCount = 5; TabsVisible = NO; }; StatusViewVisible = NO; Template = F5CA7EC8015C06940DCA290F; ToolbarVisible = YES; WindowLocation = "{11, 115}"; }; "PBXTemplateGeometry-F5CA7EC9015C08ED0DCA290F" = { ContentSize = "{665, 594}"; LeftSlideOut = { Collapsed = NO; Frame = "{{0, 0}, {665, 594}}"; Split0 = { ActiveTab = 3; Collapsed = NO; Frame = "{{0, 0}, {665, 594}}"; Split0 = { Frame = "{{0, 304}, {665, 290}}"; }; SplitCount = 1; Tab0 = { Debugger = { Collapsed = NO; Frame = "{{0, 0}, {484, 208}}"; Split0 = { Frame = "{{0, 24}, {484, 184}}"; Split0 = { Frame = "{{0, 0}, {236, 184}}"; }; Split1 = { DebugVariablesTableConfiguration = ( Name, 123, Value, 85, Summary, 62.123, ); Frame = "{{245, 0}, {239, 184}}"; }; SplitCount = 2; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {100, 50}}"; }; Tab1 = { Frame = "{{0, 0}, {100, 50}}"; }; TabCount = 2; TabsVisible = YES; }; Frame = "{{0, 0}, {484, 208}}"; LauncherConfigVersion = 7; }; Tab1 = { Frame = "{{0, 0}, {664, 208}}"; LauncherConfigVersion = 3; Runner = { Frame = "{{0, 0}, {664, 208}}"; }; }; Tab2 = { BuildMessageFrame = "{{0, 0}, {666, 43}}"; BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; Frame = "{{0, 0}, {664, 50}}"; }; Tab3 = { Frame = "{{0, 0}, {665, 298}}"; }; TabCount = 4; TabsVisible = NO; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {313, 531}}"; GroupTreeTableConfiguration = ( TargetStatusColumn, 18, MainColumn, 280, ); }; Tab1 = { ClassesFrame = "{{0, 0}, {280, 398}}"; ClassesTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXClassColumnIdentifier, 237, ); Frame = "{{0, 0}, {278, 659}}"; MembersFrame = "{{0, 407}, {280, 252}}"; MembersTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXMethodColumnIdentifier, 236, ); }; Tab2 = { Frame = "{{0, 0}, {200, 100}}"; }; Tab3 = { Frame = "{{0, 0}, {200, 557}}"; TargetTableConfiguration = ( ActiveObject, 16, ObjectNames, 202.296, ); }; Tab4 = { BreakpointsTreeTableConfiguration = ( breakpointColumn, 197, enabledColumn, 31, ); Frame = "{{0, 0}, {250, 100}}"; }; TabCount = 5; TabsVisible = NO; }; StatusViewVisible = NO; Template = F5CA7EC9015C08ED0DCA290F; ToolbarVisible = NO; WindowLocation = "{69, 130}"; }; PBXWorkspaceContents = ( { LeftSlideOut = { Split0 = { Split0 = { NavCount = 1; NavGeometry0 = { Frame = "{{0, 0}, {150, 530}}"; NavBarVisible = YES; }; }; SplitCount = 1; Tab0 = { Debugger = { Split0 = { SplitCount = 2; }; SplitCount = 1; TabCount = 2; }; LauncherConfigVersion = 7; }; Tab1 = { LauncherConfigVersion = 3; Runner = { }; }; TabCount = 4; }; SplitCount = 1; Tab1 = { OptionsSetName = "Hierarchy, all classes"; }; TabCount = 5; }; }, ); PBXWorkspaceGeometries = ( { ContentSize = "{352, 553}"; LeftSlideOut = { ActiveTab = 0; Collapsed = YES; Frame = "{{0, 23}, {352, 530}}"; Split0 = { Collapsed = NO; Frame = "{{1e+06, 1e+06}, {0, 530}}"; Split0 = { Frame = "{{0, 0}, {0, 530}}"; }; SplitCount = 1; Tab0 = { Debugger = { Collapsed = NO; Frame = "{{0, 0}, {484, 208}}"; Split0 = { Frame = "{{0, 24}, {484, 184}}"; Split0 = { Frame = "{{0, 0}, {236, 184}}"; }; Split1 = { DebugVariablesTableConfiguration = ( Name, 123, Value, 85, Summary, 62.123, ); Frame = "{{245, 0}, {239, 184}}"; }; SplitCount = 2; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {100, 50}}"; }; Tab1 = { Frame = "{{0, 0}, {100, 50}}"; }; TabCount = 2; TabsVisible = YES; }; Frame = "{{0, 0}, {484, 208}}"; LauncherConfigVersion = 7; }; Tab1 = { Frame = "{{0, 0}, {664, 208}}"; LauncherConfigVersion = 3; Runner = { Frame = "{{0, 0}, {664, 208}}"; }; }; Tab2 = { BuildMessageFrame = "{{0, 0}, {666, 43}}"; BuildTranscriptFrame = "{{0, 52}, {666, 0}}"; Frame = "{{0, 0}, {664, 50}}"; }; Tab3 = { Frame = "{{0, 0}, {612, 295}}"; }; TabCount = 4; TabsVisible = NO; }; SplitCount = 1; Tab0 = { Frame = "{{0, 0}, {328, 530}}"; GroupTreeTableConfiguration = ( TargetStatusColumn, 18, MainColumn, 295, ); }; Tab1 = { ClassesFrame = "{{0, 0}, {330, 318}}"; ClassesTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXClassColumnIdentifier, 287, ); Frame = "{{0, 0}, {328, 530}}"; MembersFrame = "{{0, 327}, {330, 203}}"; MembersTreeTableConfiguration = ( PBXBookColumnIdentifier, 20, PBXMethodColumnIdentifier, 286, ); }; Tab2 = { Frame = "{{0, 0}, {319, 576}}"; }; Tab3 = { Frame = "{{0, 0}, {328, 530}}"; TargetTableConfiguration = ( ActiveObject, 16, ObjectNames, 295.296, ); }; Tab4 = { BreakpointsTreeTableConfiguration = ( breakpointColumn, 266, enabledColumn, 31, ); Frame = "{{0, 0}, {319, 576}}"; }; TabCount = 5; TabsVisible = YES; }; StatusViewVisible = YES; Template = F5E465990156DFB90DCA290F; ToolbarVisible = YES; WindowLocation = "{18, 123}"; }, ); PBXWorkspaceStateSaveDate = 165481488; }; projectwideBuildSettings = { }; wantsIndex = 1; wantsSCM = -1; }; 29B97326FDCFA39411CA2CEA = { activeExec = 0; executables = ( EAB991A0086E51EC0334F83B, ); }; EA1D794B06263DD503CFD9F6 = { activeExec = 0; }; EA8009690629F20C036EED6D = { activeExec = 0; }; EA85A0EA062774250303B004 = { activeExec = 0; }; EA88F6F8068234B203ABED23 = { activeExec = 0; }; EA8A20BB0675A4A203A8D3C1 = { activeExec = 0; }; EA8D0BFE06268DD403000102 = { activeExec = 0; }; EA8E357009476B19032DC65E = { activeExec = 0; }; EA8F759D06F89A7D03F15592 = { activeExec = 0; }; EA949F6D062720760348A0D9 = { activeExec = 0; }; EA96C1DD0770F81F03166923 = { activeExec = 0; }; EA96C1E50770F84803166923 = { activeExec = 0; }; EAA6DF9D09A66BFD034E8D88 = { activeExec = 0; }; EAA95C3509D0ECF3039F499A = { activeExec = 0; }; EAB991A0086E51EC0334F83B = { activeArgIndex = 2147483647; argumentStrings = ( ); debuggerPlugin = GDBDebugging; dylibVariantSuffix = ""; enableDebugStr = 0; environmentEntries = ( ); isa = PBXExecutable; name = Cynthiune; shlibInfoDictList = ( ); sourceDirectories = ( ); startupPath = "<>"; }; F7BED96D0621E945010E156D = { activeExec = 0; }; } Cynthiune-1.0.0/Cynthiune.nib/classes.nib000644 001751 000024 00000006032 11763436013 021010 0ustar00multixstaff000000 000000 { IBClasses = ( { ACTIONS = { openFile = id; preferencesWindow = id; sendABugReport = id; togglePlaylistWindow = id; }; CLASS = CynthiuneController; LANGUAGE = ObjC; OUTLETS = { bugReportMenuItem = id; playerWindow = id; playlistController = id; playlistSwitch = id; playlistWindow = id; }; SUPERCLASS = NSObject; }, {CLASS = CynthiuneFadingTextField; LANGUAGE = ObjC; SUPERCLASS = NSTextField; }, {CLASS = CynthiunePauseButton; LANGUAGE = ObjC; SUPERCLASS = NSButton; }, {CLASS = CynthiuneWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { CLASS = InfoDisplayController; LANGUAGE = ObjC; OUTLETS = { songAlbumField = id; songArtistField = id; songNumberField = id; songTimerBtn = id; songTimerField = id; songTitleField = id; splashImage = id; }; SUPERCLASS = NSObject; }, { ACTIONS = { addPlaylist = id; addSongs = id; addSongsFolders = id; changeTimeDisplay = id; eject = id; nextSong = id; pausePlayer = id; previousSong = id; removeAllSongs = id; removeSelectedSongs = id; saveList = id; saveListAs = id; songCursorChange = id; startPlayer = id; stopPlayer = id; toggleMute = id; toggleRepeat = id; toggleShuffle = id; toggleSongInspector = id; }; CLASS = PlaylistController; LANGUAGE = ObjC; OUTLETS = { ejectButton = id; infoDisplayController = id; nextButton = id; pauseButton = id; playButton = id; playlistStatusLabel = id; playlistViewController = id; previousButton = id; progressSlider = id; repeatButton = id; repeatMenuItem = id; shuffleButton = id; shuffleMenuItem = id; songInspectorMenuItem = id; stopButton = id; }; SUPERCLASS = NSObject; }, {CLASS = PlaylistView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, { CLASS = PlaylistViewController; LANGUAGE = ObjC; OUTLETS = {playlistView = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }Cynthiune-1.0.0/Cynthiune.nib/info.nib000644 001751 000024 00000001207 12014507041 020273 0ustar00multixstaff000000 000000 IBDocumentLocation 12 46 385 365 0 0 1024 746 IBEditorPositions 29 23 528 424 44 0 0 800 578 IBFramework Version 364.0 IBLockedObjects IBOpenObjects 21 370 29 IBSystem Version 7W98 Cynthiune-1.0.0/Cynthiune.nib/keyedobjects.nib000644 001751 000024 00000047113 12014507041 022021 0ustar00multixstaff000000 000000 bplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯® +/3:=?D\]^_ah|‡‘’“”•™š¥©¯¶·¸¹ÆÇÏÐÓÝÞßãåéíðôõøúý¶·   ¶·¶· ô$4589=@FGWXZ[^aefjkmpquvw{|ƒ…†‡Œ?Ž‘”•„˜™œ¡¢£¤§¨„¬­°±´µ¸¹»¼ÀÁÃÄÅÆÉ$*+,12379:=?CFHIKNRUVWY]aefgilnopsvwxy|~€ƒ…†‡ŠŒŽ‘“”—˜›ž¡£¤¥§¨¤ª®°±ÈÉÊÖ×Üßàãæö÷úý  "#&)*,-/0235689;<>?ABEGHIKLNOQRTUWXZ[]^¤`cefgijlmoprsv^€„‡‰‹ŒŽ’š›œŸ¤›¥§¨©¬¯°´µ¸»¼¾Ã¿ÅÀÁÃĤÆÈÉËÌÏÓÖ×hØÛÞßàáäçèéêíñôõö÷úýþÿ  w !#$'+j./256i7:uß“=@´CDG»J>KNRUVWXZ[]^`acdfgiknqrstŠŽ]’]“•—š’›Ÿ ¢£¥¦§¨«’¬­¯±²³µ¶¹’¹º¼¾¿Â’ÂÃÅÆÇÊ’ÊËÍÏÑÒÔΒײ’]ÚÜÑ’ßàâäæ   Œ£ É?%!G"#$%&'(°)+-/1ÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+è,-./0Q123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYU$nullß  !"#$%&'()*[NSNamesKeys[NSFramework_NSObjectsValues]NSNamesValues]NSConnections]NSFontManagerVNSRootYNSNextOid_NSVisibleWindows]NSObjectsKeys]NSClassesKeysZNSOidsKeys\NSOidsValuesV$class_NSClassesValuesñ€ðò€Œ€€:€¯­Ò,-.[NSClassName€€Ò012YNS.string]NSApplication€Ò4567X$classesZ$classname£789_NSMutableStringXNSStringXNSObjectÒ45;<¢<9^NSCustomObjectÒ0>2_IBCocoaFrameworkÒ@ACZNS.objects¡B€€ÜEFGHIJKLMNOPQRSTUVWXYZ[_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€‰€ € € €ˆ€Š€ €‹€ _{{65, 410}, {385, 146}}YCynthiune_CynthiuneWindowÒ0`2TViewÔbcde!fgZNSSubviews_NSNextResponderWNSFrame€€†€‡Ò@i{¯jklmnopqrstuvwxyz€€€-€2€;€A€G€O€W€\€a€g€m€r€x€}€€…Øc}d~€XX‚ƒ„…†ƒ[NSSuperviewYNSEnabledVNSCell[NSDragTypesZNSEditable€ €€€Ò@ˆC¦‰Š‹ŒŽ€€€€€€_Apple PNG pasteboard type_Apple PDF pasteboard type_NeXT TIFF v4.0 pasteboard type_1NeXT Encapsulated PostScript v1.2 pasteboard type_NSFilenamesPboardType_Apple PICT pasteboard typeÒ45–—£—˜9\NSMutableSetUNSSet_{{17, 58}, {348, 71}}×›œžŸ QY¡Y¢£¤WNSScaleWNSStyleZNSAnimatesWNSAlign[NSCellFlags\NSCellFlags2€þÒ45¦§¤§¨9[NSImageCell\%NSImageCellÒ45ª«¥«¬­®9[NSImageViewYNSControlVNSView[NSResponderØc}°d~,XX±²ƒ³´µ_NSOriginalClassName€€€,€ €_CynthiuneFadingTextField[NSTextField_{{29, 105}, {258, 16}}غ»¼½Ÿ¾ ¿ÀÁkÂÃÄÅ[NSTextColorYNSSupportZNSContents]NSControlView_NSBackgroundColor€*€"€!€+1þA€%@PÔÈÉÊËÌÍÎVNSSizeVNSNameXNSfFlags"A@€#€$\LucidaGrandeÒ45ÑÒ¢Ò9VNSFontÕÔÕÖרÙÚÛÜWNSColor[NSColorName\NSColorSpace]NSCatalogName€(€'€&€)VSystem\controlColorÓàÖáâÜWNSWhiteK0.66666669Ò45äÔ¢Ô9ÓæÖçèÜUNSRGBO0.025169199 0.0107269 1Ò45êë¤ëì9_NSTextFieldCell\NSActionCellÒ45îï¢ï9^NSClassSwapperÖc}d~XXñƒòó€.€1€/_{{295, 105}, {56, 16}}غ»¼½Ÿ¾ öÀÁlÂÃÄ÷€0@ÓæÖùèÜO0.015969999 0.0077133798 1Ò45û·¦·ü¬­®9\%NSTextFieldØc}°d~,XXþÿƒ³€4€5€6€3_{{29, 85}, {322, 16}}غ»¼½Ÿ¾ ÁmÂÀ:€7€9@ÔÈÉÊË Í΀8_LucidaGrande-BoldÓæÖ èÜO1 0.88801497 0.649773ÓæÖùèÜØc}°d~,XXƒ³€=€>€?€<_{{29, 66}, {31, 16}}غ»¼½Ÿ¾ ÀÁnÂÃÄÅ€@ÓæÖùèÜØc}°d~,XXƒ³€C€D€E€B_{{61, 66}, {290, 16}}غ»¼½Ÿ¾ ÀÁoÂÃÄ÷€FÓæÖùèÜÖc}d~XX!ƒ"#€H€N€IÜ%&»¼½'()Ÿ* +Á,-pÚ./0123_NSPeriodicInterval_NSAlternateContents^NSButtonFlags2]NSButtonFlags_NSPeriodicDelay_NSKeyEquivalent€K€Jÿÿÿÿ†DÀÿ€MÈþ€LWreverseÔÈÉÊ6ÌÍ7"APÒ0Æ2Ò45:;¥;<ì9\NSButtonCell]%NSButtonCellÒ45>?¥?¬­®9XNSButton×c}d~AXXBƒCDEXNSvFlags€P €V€Q_{{17, 44}, {348, 15}}ÞHIJK»¼½LMNOŸ ¡YPYQRqSPTP¡UV_NSAllowsTickMarkValuesOnly_NSTickMarkPosition]NSAltIncValue_NSNumberOfTickMarksZNSMaxValueWNSValueZNSMinValueZNSVertical#€S€R#@Y€UÿÒ0Æ2ÔÈÉÊËYÍ΀TYHelveticaÒ45\]¤]ì9\NSSliderCellÒ45_`¥`¬­®9XNSSlider×c}d~AXXbƒc"d€X €Y_{{55, 16}, {24, 24}}Ü%&»¼½'()Ÿ* +ÁghrQi/01Á3€[€Zÿÿÿÿ†D@ÿTPlayÔÈÉÊlÌÍÎ"A0×c}d~AXXnƒc"o€]€^_{{83, 16}, {24, 24}}Ü%&»¼½'()Ÿ* +ÁgrsQi/0st3€_ÿÿÿÿ¤þ€`TStopÒ0Æ2×c}d~AXXxƒy"z€b €c_{{341, 14}, {24, 24}}Ü%&»¼½'()Ÿ* +}g~tÚ/0€‚€e€dÿÿÿÿÈD@ÿÿÿÿÿ„þ€fÒ0„2VButtonÒ0Æ2Ò0Æ2Ùc}°d~A,XXˆ‰ƒc³Š‹€i€j€k€h_CynthiunePauseButton_{{151, 16}, {24, 24}}Ü%&»¼½'()Ÿ* +Á,ÁuQi/013€lÒ0Æ2×c}d~AXX’ƒc"“€n€o_{{111, 16}, {36, 24}}Ü%&»¼½'()Ÿ* +Á,–vQi/01—3€p€qÒ0Æ2Öc}d~XXšƒ"›€s€t_{{261, 14}, {24, 24}}Ü%&»¼½'()Ÿ* +ž,ŸwÚ/01 3€v€u€wÒ0„2Ò0Æ2Ò0Æ2Öc}d~XX¥ƒ"¦€y€z_{{295, 14}, {24, 24}}Ü%&»¼½'()Ÿ* +Á,©xÚª/01«3€{ÿÿÿÿÈt@ÿ€|Ò0Æ2×c}d~AXX®ƒc"¯€~€_{{15, 16}, {36, 24}}Ü%&»¼½'()Ÿ* +Ág²yQ³/01Á3€€ÿÿÿÿ†t@ÿXPrevious×c}d~AXX¶ƒc"·€‚€ƒ_{{207, 16}, {24, 24}}Ü%&»¼½'()Ÿ* +Á,ºzQ³/01Á3€„TNextÒ45½¾£¾¿9^NSMutableArrayWNSArray_{{1, 9}, {385, 146}}Ò45­£­®9_{{0, 0}, {800, 578}}\{134.92, 27}_{3.40282e+38, 3.40282e+38}Ò45ÇÈ¢È9_NSWindowTemplateÒ@Ê{¯CËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ     €€›€Ÿ€¥€«€¯€´€¸€¼€À€Â€Ä€Ç€É€Í€Ï€Ñ€ò€ô€ö€ø€ú€ü€þ   EGIKMSX]chmsxz|‚‡Œ‘–œž ¢¤¦¨ªÓWNSLabelXNSSource€™€š€ŽØ !"#VNSMenu]NSMnemonicLocWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImage_NSKeyEquivModMask€ÿÿÿ€€’€‘€–€˜ÔÉ%&'()[NSMenuItemsÅȾÆXMinimizeQmÓ-,./0^NSResourceName€”€•€“WNSImage_NSMenuCheckmarkÒ4545£569_NSCustomResource_%NSCustomResourceÓ-,8/0€—_NSMenuMixedStateÒ45;<¢<9ZNSMenuItemÒ0>2_performMiniaturize:Ò45@A£AB9_NSNibControlConnector^NSNibConnectorÓDE€ž€œØGÁ!"#€_Bring All to FrontÒ0J2_arrangeInFront:ÓLM€¤€ ØOPQ!"#€¡€¢€£Ó%S(Tßà^Cynthiune HelpQ?Ò0X2YshowHelp:ÔZ"[\]NSDestination€ª€¦Ø^_`!"#€§€¨€©ÔÉ%bc(d´Áµ^Quit CynthiuneQqÒ0h2Zterminate:ÔZ"jk€®€¬Ø^mÁ!"#€­[Hide Others_hideOtherApplications:ÔZ"qr€³€°Ø^tu!"#€±€²^Hide CynthiuneQhUhide:ÔZ"z{€·€µØ^}Á!"#€¶XShow All_unhideAllApplications:ÔZ"‚€»€¹Ø^„Á!"#€º_About Cynthiune..._orderFrontStandardAboutPanel:ÔZˆ‰y€½€¿Ò,-‹€¾_PlaylistController]previousSong:ÔZˆr€Á\startPlayer:ÔZˆ’s€Ã[stopPlayer:ÔZr•–ˆ€Å€ÆZplayButtonÒ45™š£šB9_NSNibOutletConnectorÔZsœ–ˆ€ÈZstopButtonÔZŸ –"€Ê€ÌÒ,-¢€Ë_CynthiuneControllerXdelegateÔZˆ¦–Ÿ€Î_playlistControllerÔZŸ©–B€ÐÔZ«¬–­€Ô€ñ€ÒÒ,-¯€Ó_PlaylistViewControllerß²³c}´µ¶·¸¹°~º¾,»¼½½¾¿ÀÁÂÃăųÆÇ[NSRowHeight[NSFrameSize\NSHeaderView^NSTableColumns_NSIntercellSpacingWidth\NSCornerView_NSIntercellSpacingHeight[NSGridColorYNSTvFlags"A€€Ø€×€Ù€á"@@€Ý"@€î€ÖÿÿÿÿÚ@€€ê€Õ\PlaylistView[NSTableViewÚbc}ËÌÍÎdAÏÐЫѫÒÓÔÕ]NSNextKeyViewYNSBGColorYNSDocViewYNScvFlags(€Þ*) ,Z{332, 255}Öɳc}A«ØÙÙÚÛ€Û€Ú€ÜÚbc}ËÌÍÎdAÝÐоѾÒÞÔÕ45Y{332, 17}Ò45áâ¤â­®9_NSTableHeaderViewÕc}dAÐÐäÚå€ß€àÞbc}Ë·çdèAéêëìíîî½ÁÙïðñòó½ôõ_NSHeaderClipView[NSHScrollerXNSsFlags[NSVScroller]NSContentView\NSScrollAmts'%61-7OA A AA_{{333, 0}, {12, 17}}Ò45øù¤ù­®9]_NSCornerViewÒ@û{¡ü€âÙÉþÿ«ƒƒ  \NSHeaderCellZNSMinWidthWNSWidth^NSIsResizeable\NSIsEditableZNSDataCellZNSMaxWidth€ã"A"C¤€€é"Dz€í׺»¼Ÿ¾  gÁ Y€å€èþ€äÓàÖâÜK0.33333299ÕÔÕÖ×ÚÛÜ€ç€æ_headerTextColorÓàÖâÜB0Ò45¥ëì9_NSTableHeaderCell׺»½Ÿ¾ g«ÂÆY€ë1þ@ÓàÖâÜB1ÕÔÕÖ×!ÚÛÜ€ì_controlTextColorÒ45$%¢%9]NSTableColumnÕÔÕÖ×'(ÚÛÜ€ð€ïYgridColorÓàÖ+âÜD0.5\playlistViewÔZy.–ˆ€ó^previousButtonÔZq1–ˆ€õ^progressSliderÔZz4–ˆ€÷[ejectButtonÔZv7–ˆ€ùZnextButtonÔZu:–ˆ€û[pauseButtonÔZˆ=v€ýYnextSong:ÔZˆ@z€ÿVeject:ÔZjC–DÒ,-F_InfoDisplayController[splashImageÔZkJ–D^songAlbumFieldÔZoM–D_songArtistFieldÔZnP–D _songNumberFieldÔZlS–D ^songTimerFieldÔZmV–D ^songTitleFieldÔZˆYq_songCursorChange:ÔZ­\–«ZdataSourceÔZ­_–«ÔZŸabØ^dÁ!"#^Preferences..._preferencesWindow:ÔZˆhu\pausePlayer:ÔZDk–ˆ_infoDisplayControllerÔZ­n–ˆ_playlistViewControllerÔZtq–Ÿ^playlistSwitchÔZtu–Ÿ!DÜEFGHIJKLMNOwQxÁyz{|î}Z~B#"AC@x$_{{65, 187}, {385, 314}}Ò0`2Ôbcd‚!ƒg&@Ò@…{¢Ð†8Ò@ˆ{¥½óðÙÁÒ@Š{¡«_{{1, 17}, {332, 255}}ÕÔÕÖרÚÛÜ+_controlBackgroundColorÒ45‘¤‘­®9ZNSClipViewÙc}“dA锕ÐÐЖÚÚ—˜™XNSTargetYNSPercentXNSAction.0"?~ff/_{{333, 17}, {11, 255}}\_doScroller:Ò45ž¥ž¬­®9ZNSScrollerÙc}“dA锕ÐÐРڡ—¢£2"?}Ù3_{{-100, -100}, {328, 15}}Ò@¦{¡¾_{{1, 0}, {332, 17}}_{{20, 20}, {345, 273}}Ò45ª«¤«­®9\NSScrollView×c}d~Aîî­ƒCò®9:_{{20, 297}, {345, 13}}غ»¼½Ÿ¾ ±²³†Â1Ä=<;Q ÔÈÉʶÌÍ·"A ÕÔÕÖ×¹ºÚÛÜ?>_disabledControlTextColorÓàÖ½âÜK0.33333334_{{1, 1}, {385, 314}}Z{385, 161}^playlistWindowÔZŸÂtF_togglePlaylistWindow:ÔZŸÅ–tHÔZpÇ–DJ\songTimerBtnÔZˆÊpL_changeTimeDisplay:ÓÍÎRNØÐÑÒ!"#OPQÓ%Ô(ÕÉÊUCloseQwÔZˆÙÚWTØÐÜÝ!"#UVTSaveQsYsaveList:ÔZˆâã\YØÐåæ!"#Z[ZSave As...QS[saveListAs:ÔZˆëìb^Øîïð!"#_`aÓ%ò(óÏÐ\Add Songs...QaYaddSongs:ÔZˆøùgdØîûü!"#efZRemove AllQD_removeAllSongs:ÔZˆliØî!"#jk_Remove SelectionQd_removeSelectedSongs:ÔZˆ  rnØ !"#opqÓ%(ÝÞVRepeatQr]toggleRepeat:ÔZˆwtØ !"#uvWShuffle^toggleShuffle:ÔZ –ˆy^repeatMenuItemÔZ"–ˆ{_shuffleMenuItemÔZˆ%&}Ø()*!"#~€Ó%,(-Ö×QpÔZˆ01†ƒØ(34!"#„…UPauseQ ÔZˆ89‹ˆØ(;<!"#‰ŠÔZˆ>?Ø(AB!"#ŽQ[ÔZˆEF•’Ø(HI!"#“”Q]ÔZLM–ˆ—›ØOPQ!"#˜™šÓ%S(Táâ_Song Inspector...Qi_songInspectorMenuItemÔZˆYL_toggleSongInspector:ÔZ†\–ˆŸ_playlistStatusLabelÔZB_–Ÿ¡\playerWindowÔZwb–ˆ£\repeatButtonÔZxe–ˆ¥]shuffleButtonÔZˆhw§ÔZˆjx©ÔZˆlm®«ØÐop!"#¬­WOpen...Qo\addPlaylist:Ò@u‰¯Pjp‚Î?îuvxwÐbrxy MFz vmBw{|OtŸ}†loLr~&kt€O(Dz­kX1qÚ«‚ã\Ðn{ìƒs9ü^E„…†î‡mˆùyˆ°ÂÌ¿ÓØÑÇ˶Úãæº±ë·ÙÀïÚ‹•„^ŒÁ!"#YNSSubmenu²³ÔÉ%(‘éîê^submenuAction:Ò@”{ª‚b†yrk{ˆ\Ù–^ÁÁ!"ƒ#]NSIsSeparatorÚ‹•^ƒ˜Á!"#™¸¹XServicesÔÉ%œ(ž»½¼Ò0š2Ò@¡{ __NSServicesMenuÒ45¤¢9Ù–^ÁÁ!"ƒ#Ù–^ÁÁ!"ƒ#\_NSAppleMenuÚ‹•„©Á!"#ªÃÄVWindowÒ0«2Ò@®{£}EÚ°–ÁƒÁ!"ƒ#\NSIsDisabled^_NSWindowsMenuXPlaylistÒ@´{¥mÎ~ÚãÚ°–ÐÁƒÁ!"ƒ#Ú‹•„î·Á!"#¸ÍÎUSongsÒ@»{¤ìù|Øî½Á!"#ÒWCleanupÚ‹•„(ÀÁ!"#ÁÔÕVPlayerÒ@Ä{¨&19{?F‡€Ú°–(ÁƒÁ!"ƒ#Ú°–(ÁƒÁ!"ƒ#Ú‹•( ÈÁ!"#ÉÛÜTModeÒ@Ì{¢ Ò0Î2THelpÒ@Ð{¡MUToolsÒ@Ó{¡LÚ‹•„OÕÁ!"#ÖäåÚ‹•„ÐØÁ!"#ÙçèÒ@Û{§v‚xz…wÚ‹•„OÝÁ!"#Þìí[_NSMainMenuÒ45á¿¢¿9Ò@㉯PXX^Ð(tX„X„wî‚^X„^ O(„€XÐ"X(îX"îXXO^Ð(X ^"(…z"X"^B(„XÐЄÐ^îX^î†X(«v"„^x(X^îX"Ò@副"kzrˆ„Ÿy†«vwmÐ\tqBtOüpD}xunsolM­"Ò@牯"èéêëìíîïðñòóôõö÷øùúûüýþÿóôö÷øùúûüýþÿ     ]NSTextField11Ñ õÒ45 £9VNSNullW%NSNull_NSButton5111111[NSButton311Ò02XMainMenu_NSButton2111111]NSButton61111\NSTextField2]NSScrollView1T1111^PlaylistWindowÒ02Q1[NSSlider111\PlayerWindow[NSButton111Ò0 2Q2YNSButton5Ò0Æ2]NSButton12111ZNSButton11]NSTextField21[NSButton411^NSTextField111\NSTextField1Ò0*2\File's OwnerÒ@,‰¦uon«kmÒ@.‰¦‹ǵÒ@0‰¯”qþr†êvÙuz mò1ûw„îÔ…}xÿnëÍîÚmˆr? ÏtåÐÕ|zôãìƒyÛw€Ðñkù­kÎàæüpÖõü÷Ñ 9‚ ßáç×öO~íËÒîóÞÎLt&F Úä«\â"  øÌyXØsïŸ{j‡lbE{ãÓvýoDxM邈†ùÜOÐ^(èðBìÝúÒ@2‰¯”3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬o†ƒ«`bû5lâ/3&s (\4#m¬zùaï•í6’r2Ÿƒ $ ïäèÒ‚‡ ˜ájú‘‹‘ Þå„™:8š¡+"j'Ô%ùÛãê*pý9瞆ˆ›7 'ì_îÝ]–c kÐ 8n'øo£íö.g‹)ô9ü¢àúŒ-%Ò45Z[¢[9^NSIBObjectData#,1:LQVdfÆÌ #5CQ_fpƒ‘Ÿª·¾ÐÓÕØÛÝßáäæéìïòõø $24=FQXjs|…Š™¢µ¾ÉÌÎÐ'1?MZgq~ˆ”–˜šœž ¢¤¦¨ª¬ÆÐâëð   & ( * , 5 Z \ ^ ` b d f h j l n p r t v x z | ~ Ÿ « µ ¼ È Ó Õ Ö Ø Ú Ü å ò ô ö ø ú ü þ  6 W ‹ £ À É Ð Ý ã û  ( 3 ; G T U W \ a j s  Œ •   ¬ ¶ ½ É ê     % 1 J k w Œ š ® ° ² ´ ¶ » ½ Â Ã Ô Û â ë ð ò ô ö    - 5 A N \ ^ ` b d f m z ‡ › ¦ « ¸ ¾ Ù Û ä í ÿ )BDFHa‚„‰–´½Ê×øúüþ9;=?DUWkx‘ž¿ÁÃÅÇÞÿ/1357Opr˜šœžÏäú );=?AJLNSUZbsxzƒŒ—¤²»ÆÏìõ÷ùûýNk€Ž¤¯·ÂÍÖØÚãåêïø  '4=HQnprt‹¼¾ÀÉÎßäMOXZ_h…‡‰‹£ÔÖØáêìñú 8:<>@Wo ¢«ÈÊÌä";=?WˆŠŒŽ— ©ÂÄÆÞ%BDF]Ž™¢¿ÁÃÛ #2:QZax…¢«°ÃÌUWY[]_acegikmoqsuwy{}ƒ…ˆ‹Ž‘”—𠣦©¬¯²µ¸»¾ÁÄÇÊÍÐÓÖÙÜßâåèëîñô÷úý$&(*KR`hr}Šž ¥§©«­¯´ÅÑÔ×ÚÝæèõ $-4G[hj}†‹–Ÿµ¾ÅÝìùûý 5>P]_a‚„†ˆ•˜›ª¬µ¿ÐÞàâ  #24=HY[]~€Œ¥¶¸ºÛÝßîðö  ,.7Pace†ˆ½ÎÐÒÛÝò 13?PRT_ho†—™¤µ·¹ÂÄÚãôö   / 1 3 5 > @ Y œ ¨ ´ Á Ð ê ÷!!!(!-!/!1!3!5!:!8A8D8P8Y8^8g9 99Z9c9ª9­9°9³9¶9¹9¼9¿9Â9Å9È9Ë9Î9Ñ9Ô9×9Ú9Ý9à9ã9æ9é9ì9ï9ò9õ9ø9û9þ:::: : :: :#:,:3:::B:T:`:i:r:„:’:Ÿ:­:²:Á:Ê:Ì:Ø:å:ñ:ú:ü;;;;(;6;B;Q;^;g;t;};Š;“; ;©<Ô<Ý>> >>>>>>> >#>&>)>,>/>2>5>8>;>>>A>D>G>J>M>P>S>V>Y>\>_>b>e>h>k>n>q>t>w>z>}>€>ƒ>†>‰>Œ>>’>•>˜>›>ž>¡>¤>§>ª>­>°>³>¶>¹>¼>¿>Â>Å>È>Ë>Î>Ñ>Ô>×>Ú>Ý>à>ã>æ>é>ì>ï>ò>õ>ø>û>þ???? ? ???????"?%?(?+?.?1?4?7?:?=?@?C?F?I?L?O?R?U?X?[?^?a?d?g?j?m?p?s?v?y?|??‚?…?ˆ?‹?Ž?‘?”?—?š?? ?£?¦?©?¬?¯?²?µ?¸?»?¾?Á?Ä?Ç?Ê?Ì?Î?Ñ?Ô?×?Ú?Ý?à?ã?æ?é?ì?ï?ò?õ?÷?ú?ý@@@@@ @@@@@@@@ @#@&@(@+@.@1@4@7@:@=@@@B@E@H@K@M@O@R@T@W@Y@\@_@b@d@f@h@k@n@q@t@w@z@}@€@‚@…@ˆ@Š@@@“@–@˜@›@ž@¡@¤@¦@©@¬@®@°@²@µ@¸@»@¾@Á@Ä@Ç@Ê@Í@Ð@Ó@Ö@Ø@Û@Þ@á@ä@æ@è@ë@í@ð@ó@õ@ø@û@þAAAA A AAAAAAAA!A$A'A)A,A.A1A4A7A:A±0?±&%Label0@±% A &&&&&&&& &&&&&&%’0A±°0B±&%System0C±&%highlightColor0D±°°0E±&% disabledControlTextColor’0F±°°0G±&% windowBackgroundColor0H±&%Window0I±&%Playlist°I @vð @cÀ @È @È%0J1NSImage @H @H0K±0L±&% NSCalibratedWhiteColorSpace 0M± &0N1NSBitmapImageRep1 NSImageRep0O±&% NSDeviceRGBColorSpace @H @H%%0%00P1!NSData&$š$šII*$§[=¿T8þŠJ2þR-!k§[=¿žU:þ‹K3þxB-ÿH'ÿR-!k§[=¿šS7þˆJ2ÿxB-ÿH'ÿ/ÿ ?§[=¿šS7ÿ†I2ÿxB-ÿH'ÿ/ÿ ?§[=¿™S7ÿ…H0þxB-ÿH'ÿ/ÿ ?§[=¿™R7þ†I2ÿxB-ÿH'ÿ/ÿ ?§[=¿™S7þ‡I0þxB-ÿH'ÿ/ÿ ?§[=¿˜R7þ‡I2þxB-ÿH'ÿ/ÿ ?§[=¿˜R7ÿ…H0þxB-ÿH'ÿ/ÿ ?¨[>ÿX/!ÿj:)ÿH'ÿ/ÿ ?D49ÿ  ?hft¿{y‰ÿ<;Dÿ ?hft¿€}ÿ<;Dÿ ?™¯ÿ<;Dÿ ?™¯ÿ43:ÿ""""™¯ÿ43:ÿzzzz°°°¶ÅÅÅÍÅÅÅÍáááûäääÿðððÿíííÿÙÙÙæÆÆÆÍ±±±¶""""EEEEEEEEEEEE™¯ÿ43:ÿŸŸŸŸŸŸŸŸŸŸŸŸÖÖÖæçççÿÜÜÜÿÚÚÚÿÚÚÚÿÛÛÛÿÛÛÛÿÚÚÚÿÚÚÚÿØØØÿËËËÿËËËÿ–––ÿ555»222t™¯ÿ43:ÿ0?55hhhiiiÝÝÝÿÚÚÚÿÕÕÕÿÓÓÓÿÒÒÒÿÒÒÒÿÑÑÑÿÑÑÑÿÑÑÑÿÑÑÑÿÎÎÎÿÏÏÏÿ³³³ÿ›››ÿ‡‡‡ÿyyyÿVVVÝ777?™¯ÿ43:ÿ~=0¿¸rdÿ¼¤ŸÿÔÓÓÿØØØÿÐÏÏÿÑÑÑÿÑÑÑÿÒÒÒÿÔÔÔÿÒÒÒÿÏÏÏÿÌÌÌÿÏÏÏÿÔÔÔÿ×××ÿ¿¿¿ÿ¥¥¥ÿŸŸŸÿ“““ÿ‰‰‰ÿ‚‚‚ÿxxxÿUUUÝ444?/17?Œ‰¿µ²Êÿ43:ÿ5„?0þ¥\MþÁ·µÿ·°¯ÿÃÃÃÿÎÊÈÿÑÑÑÿÒÒÒÿÔÔÔÿÒÒÒÿÐÐÐÿÐÐÐÿÕÕÕÿÐÐÐÿÆÆÆÿ©©©ÿ£££ÿŸŸŸÿœœœÿ———ÿŽŽŽÿ……†ÿzz{ÿ]]]ÿQQQmmm_bnÀÄÝÿ¯²Èÿ¡¡·ÿœ™¯ÿ:9@ÿ5‚?0þ‡I>þ¥’ÿ’e]ÿ·‚xÿÐÎÎÿ×××ÿÑÑÑÿÑÑÑÿÕÕÕÿÐÐÐÿÏÏÏÿÐÐÐÿÀÀÀÿ¥¥¥ÿ¥¥¥ÿ£££ÿ   ÿžžžÿÿ™š›ÿ™™ÿ˜™žÿ   ÿ±³ÀÿÀÄÝÿŸ µþxw‡þvt„ÿsqÿpo}þ66<ÿ5ƒ?2þ…A3þˆQFÿ…A4þ‹H:þ²Ÿœÿ°‰ÿ»¸¸ÿÐÐÐÿÛÛÛÿÑÑÑÿÖÖÖÿÎÎÎÿ®®®ÿŸŸŸÿŸŸŸÿ¡¡¡ÿ   ÿ£££ÿžžžÿ   ÿ¦¨¯ÿ¸»ÎÿÀÄÝÿ¡¢¸ÿ|z‹þzy‰ÿwu…þtr‚þqpþbaoþ++0¿5„?2ÿ†@2ÿ‡@2þ‡A3þ‰B3ÿŠC4þE6þ¤ƒ}þÇÆÆÿÔÔÔÿÐÐÐÿÒÒÒÿ²²²ÿ¤¤¤ÿŸŸŸÿŸŸŸÿ¢¢¢ÿŸŸŸÿžžžÿ×××ÿééìÿÞàçÿ²²¿ÿ‘ÿ}|ÿzxŠþxw‡ÿutƒþrq€þpn}þVT_ÿ=,,ê ˆ5…@2þ†@3þ‡A3þˆA3þŠJ<þ‰NBÿŽD6þH:þ¹Ÿ›þÇÅÅÿ Žþ•‰†ÿ™’‘ÿŸ›šÿœ™˜ÿ žÿ£ ŸÿØÓÒÿòòòÿóóóÿéééÿäääÿàààÿÄÄÄÿ‰‰‘ÿƒ‚Žþ}|ˆÿtrþqo~þnm{ÿ::Bÿf4)þa2'þ\/&þW*!¿55†@2þ‡A3þˆA3þ‰C4þ¤€yþ‰c\þE6þE6þ­ˆ‚þ‘ÿÀ¤ŸÿÛÌÉþõõõÿóóóÿòòòÿóóóÿïïïÿìììÿãããÿàààÿ···ÿ¼¼¼ÿ±±±ÿ¼¼¼ÿ¿¿¿ÿ«««ÿ¥¤¨ÿyx€þsr|þ`_mþF;?þf4)þd3)þo4)þz:-þ…@2þw:-þV* ¿55‡@3þ‡A3þˆA3þŠC4þ¦‚zþf^þE6þ’F7þ”K<þÛÐÏþóóóÿîîîÿèèèÿßßßÿÖÖÖÿÍÍÍÿÈÈÈÿËËËÿÇÇÇÿÆÆÆÿ»»»ÿÂÂÂÿ¸¸¸ÿºººÿ»»»ÿªªªÿ¸¸¸ÿ¨¨¨ÿÇÇÇÿ›››þtihþb/$þi3'þv8,þ~ÿdbqþihvþFEOÿQ-)þY)!þW)þ`/$ÿk3'ÿq6*þn4)þl3'þi2'þf0&þc/$þ`-$þY*!þ)5ŠC4þŒC4þD4þE6þ’F7þ•H7þƦ¡þëëëÿØØØÿ¼¼¼ÿÔÔÔÿÂÂÂÿ···ÿ©©©ÿ±±±ÿÅÅÅÿÎÎÎÿÂÂÂÿºººÿ¸¸¸ÿÿ’’’ÿkkkÿ)))þLJRþkjxþihvÿhguþ::Bÿ\/&þ[-$þY-$þc/&ÿl3'þo4)ÿl3'ÿj2'þg2&þd0$þa/$þ^-#þX*!þ)5„@2þD4þE6þ‘F7þ”H7þ—I8þÚÅÂþëëëÿÒÒÒÿ¸¸¸ÿ¬¬¬ÿ°°°ÿÄÄÄÿ­­­ÿ¸¸¸ÿºººÿ¸¸¸ÿÆÆÆÿ²²²ÿƒƒƒÿ{{{ÿ[[[ÿ322þQPZþ^]jþjhwþhguþQP[þK33ÿ\-&þW)þ_/$þj3'þm3'þm4)þj3'ÿh2&þd0&þb/$þ_-#þ],#þX*!ÿ)P'¿~>>þdddÿ´´´ÿ>>?ÿ87?þ4$$þE)&þ_-#þ`0'þ_0&ÿ]/&ÿ^/&þ`/&ÿ`/&þc0&þj2'þn3'þk3'þh2&ÿd0$ÿa/$ÿ^-#þ\,!þZ,!þX*!þU)þT)ÿ)ttt³³³ÿ©©©ÿ‰‰‰ÿtttÿzzzÿ¯¯¯ÿ¯¯¯ÿ¹¹¹ÿ‡‡‡ÿ;;;ÿrqyþjhwþPPZÿ43:ÿªªªÿC@?ÿw9,ÿc2)þb2)þ^,#þ_0&þd2'þg2'þh2'ÿk3)þl3)þl3)þl3'ÿl3'þi2'þf0&ÿc/$ÿ_-#þ],#þZ,!þX*!þW)þT)þS)þ)rrrŸŸŸÿ€€€ÿ```ÿFFFû000úŠŠŠÿÇÇÇÿ¯¯¯ÿmmmÿ\[aÿ<;CÿA)'þ^3,þ‘I:þ°°°ÿ:76þv8,þ_-$þb2'þg2'þl4)þr7*þs7*þs7*þw8,þt7,þq6*þn4)þk3'ÿg2&ÿd0$ÿ`-$þ],#þ[,!ÿX*!þW)þU)þS'þS'ÿ)ÁÁÁúYYYøò777ïXWcûKJSþ|||ÿÊÊÊÿ¦¦¦ÿSSSÿ\2,þ‚KDþD4þ‘I:þ“I;þ¯¯¯ÿA?>þ~>0þb2)þf2'þp6*þx:-þy:-þ{;-þx:-þv9,ÿs7*þo4)þl3'þi2&þf0&þc/$ÿ_-#ÿ\,#þY*!þW)þT)þS'þR'þS'ÿ)TR^|z‡ô@?Gↄ–þŒŠþ\Zgþ<;CþŽŽŽÿÐÐÐÿ¯¯¯ÿJJJÿm4)þD4þE6þ˜J;þ˜UIþ†PEþvI@ÿq:/ÿl4)þm4)þx:,þ};/þ{:-þy:-þw9,ÿt7*þq6*ÿm4)þj3'þh2&þc0&þa/$ÿ]-#þ[,!ÿX*!þV)ÿT)þR'þR'þR'þ)0/5?ª§¾þˆ‡™þ_^kÿCBJÿ43:ÿ?ˆˆˆÿ¸¸¸ÿ‚‚‚ÿQQQÿ ˆ^-#þ’I:þ¡O>þ¬SBÿ£P?þ‘H7ÿ€?2þp6*þs7*þ0þ|;/þy:-þp6*þf0&þd0&ÿc/&ÿ`/$þ_-$þ]-#þ\,#þT)!ÿT)!ÿT)!ÿT)!ÿT)!ÿT)!ÿT)!ÿ)))) ?h3'¿z;/ÿT)!ÿT)!ÿT)!ÿ`/$ÿ`/$ÿ))))) ? þÿ00’$$R&   @ž @’À0Q±0R±&%CynthiuneWindow± % ?ð @" @vð @a&% @^ @0S± % ?ð @" @vð @a  @vð @a&0T± &0U1" NSImageView% @$ @K€ @u° @QÀ  @u° @QÀ&0V± &%0W1# NSImageCell°&&&&&&&&&&&&&&%%% ?ð ?ð’0X1$NSButton% @$ @$ @@€ @8  @@€ @8&0Y± &%0Z1% NSButtonCell0[±&%Button°&&&&&&&&&&&&&&%’0\±&0]±&&&& &&0^±$% @H @$ @8 @8  @8 @8&0_± &%0`±%0a±&%Button°&&&&&&&&&&&&&&%’0b±&0c±&&&& &&0d±0e±&%CynthiunePauseButton±$% @b @$ @8 @8  @8 @8&0f± &%0g±%0h±&%Button°&&&&&&&&&&&&&&%’0i±&0j±&&&& &&0k±$% @S@ @$ @8 @8  @8 @8&0l± &%0m±%0n±&%Button°&&&&&&&&&&&&&&%’0o±&0p±&&&& &&0q±$% @Z€ @$ @@€ @8  @@€ @8&0r± &%0s±%0t±&%Button°&&&&&&&&&&&&&&%’0u±&0v±&&&& &&0w±$% @i@ @$ @8 @8  @8 @8&0x± &%0y±%0z±&%Button°&&&&&&&&&&&&&&%’0{±&0|±&&&& &&0}±$% @tÐ @$ @8 @8  @8 @8&0~± &%0±%0€±&%Button°&&&&&&&&&&&&&&%’0±&0‚±&&&& &&0ƒ1&NSSlider% @$ @C€ @u° @0  @u° @0&0„± &%0…1' NSSliderCell0†±&%0°0‡1(NSNumber1)NSValued &&&&&&&&&&&&&&%’ ?€ ¿€%0ˆ±0‰±&°&&&&&&&& &&&&&&%’°!0б°°0‹±&% controlTextColor0Œ±0±&0ޱ0±&%common_SliderHoriz°&&&&&&&&&&&&&&%%0±0‘±&%CynthiuneFadingTextField±% @5 @XÀ @pÐ @0  @pÐ @0&0’± &%0“±0”±&%Title0•±% A`&&&&&&&& &&&&&&%’°!0–±0—±&% NSCalibratedRGBColorSpace ?€ ?*ª« ?€ ?€ ?€’0˜±% @r @XÀ @L€ @0  @L€ @0&0™± &%0š±0›±&%Title°•&&&&&&&& &&&&&&%’°!0œ±°— ?€ ?*ª« ?€ ?€ ?€’0±0ž±&%CynthiuneFadingTextField±% @5 @TÀ @t` @0  @t` @0&0Ÿ± &%0 ±0¡±&%Title°•&&&&&&&& &&&&&&%’°!0¢±°— ?€ ?*ª« ?€ ?€ ?€’0£±0¤±&%CynthiuneFadingTextField±% @5 @PÀ @3 @0  @3 @0&0¥± &%0¦±0§±&%Title°•&&&&&&&& &&&&&&%’°!0¨±°— ?€ ?*ª« ?€ ?€ ?€’0©±0ª±&%CynthiuneFadingTextField±% @D @PÀ @s @0  @s @0&0«± &%0¬±0­±&%Title°•&&&&&&&& &&&&&&%’°!0®±°— ?€ ?*ª« ?€ ?€ ?€’0¯±$% @r @XÀ @L€ @0  @L€ @0&0°± &%0±±%0²±&%Button°&&&&&&&&&&&&&&%’0³±&0´±&&&& &&0µ±$% @pP @$ @8 @8  @8 @8&0¶± &%0·±%0¸±&%Button°&&&&&&&&&&&&&&%’0¹±&0º±&&&& &&0»±$% @r @$ @8 @8  @8 @8&0¼± &%0½±%0¾±&%Button°&&&&&&&&&&&&&&%’0¿±&0À±&&&& &&°F°H0Á±& % Cynthiune°Á @vð @a @È @È%°J&   @ž @’À0±0ñ&%InfoDisplayController  &0ı0ű&%PlaylistController  &0Æ1*NSMenu0DZ& % Cynthiune0ȱ &  0É1+ NSMenuItem0ʱ&%Info0˱&&&ÿ%0̱0Í1,NSMutableString&%common_2DCheckMark0α0ϱ,& % common_2DDash2submenuAction:%0б*°Ê0ѱ &0Ò±+0Ó±& % Info Panel...0Ô±&%a&&ÿ%°Ì°Î’%0Õ±+0Ö±&%Preferences...0×±&&&ÿ%°Ì°Î’%0ر+0Ù±&%Help...0Ú±&%?&&ÿ%°Ì°Î’%°Æ0Û±+0ܱ&%Playlist0ݱ&&&ÿ%°Ì°Î²%0Þ±*°Ü0ß± &0à±+0á±&%Open...0â±&%o&&ÿ%°Ì°Î’%0ã±+0ä±&%Close0å±&%w&&ÿ%°Ì°Î’%0æ±+0ç±&%Save...0è±&%s&&ÿ%°Ì°Î’%0é±+0ê±& % Save As...0ë±&%S&&ÿ%°Ì°Î’%°Æ0ì±+0í±&%Songs0î±&&&ÿ%°Ì°Î²%0ï±*°í0ð± &0ñ±+0ò±& % Add Songs...0ó±&%a&&ÿ%°Ì°Î’%0ô±+0õ±& % Remove All0ö±&%D&&ÿ%°Ì°Î’%0÷±+0ø±&%Remove Selection0ù±&%d&&ÿ%°Ì°Î’%0ú±+0û±&%Cleanup0ü±&&&ÿ%°Ì°Î’%°Æ0ý±+0þ±&%Player0ÿ±&&&ÿ%°Ì°Î²%P±*°þP± &P±+P±&%PlayP±&%p&&ÿ%°Ì°Î’%P±+P±&%PauseP±&&&ÿ%°Ì°Î’%P±+P ±&%StopP ±&%s&&ÿ%°Ì°Î’%P ±+P ±&%PreviousP ±&%[&&ÿ%°Ì°Î’%P±+P±&%NextP±&%]&&ÿ%°Ì°Î’%P±+P±&%ModeP±&&&ÿ%°Ì°Î²%P±*ÐP± &P±+P±&%RepeatP±&%R&&ÿ%°Ì°Î’%P±+P±&%ShuffleP±&%H&&ÿ%°Ì°Î’%аÆP±+P±&%ToolsP±&&&ÿ%°Ì°Î²%P±*ÐP ± &P!±+P"±&%Song Inspector...P#±&%i&&ÿ%°Ì°Î’%°ÆP$±+P%±&%WindowsP&±&&&ÿ%°Ì°Î²%P'±*Ð%P(± &P)±+P*±&%Arrange In FrontP+±&&&ÿ%°Ì°Î’%P,±+P-±&%Miniaturize WindowP.±&%m&&ÿ%°Ì°Î’%P/±+P0±& % Close WindowP1±&%w&&ÿ%°Ì°Î’%°ÆP2±+P3±&%ServicesP4±&&&ÿ%°Ì°Î²%P5±*Ð3P6± &°ÆP7±+P8±&%HideP9±&%h&&ÿ%°Ì°Î’%P:±+P;±&%QuitP<±&%q&&ÿ%°Ì°Î’%P=±P>±&%CynthiuneController  &P?± &P@± &PA1-NSMutableDictionary1. NSDictionary&^PB±& % MenuItem224Ð2PC±& % MenuItem33°ÉPD±& % MenuItem225Ð:PE±& % MenuItem34°ÒPF±& % MenuItem226ÐPG±& % MenuItem35°ÕPH±& % MenuItem227ÐPI±& % MenuItem36°ØPJ±& % MenuItem228ÐPK±& % MenuItem37°ÛPL±&%NSServicesMenuÐ5PM±& % MenuItem110PN±+PO±&%Revert To SavedPP±&&&ÿ%°Ì°Î’%PQ±& % MenuItem229°úPR±& % MenuItem38°àPS±& % MenuItem111°ãPT±& % MenuItem39PU±+PV±&%NewPW±&%n&&ÿ%°Ì°Î’%PX±& % MenuItem112°ìPY±& % MenuItem113°ñPZ±& % MenuItem114P[±+P\±&%Add Folders...P]±&&&ÿ%°Ì°Î’%P^±& % MenuItem115°÷P_±& % MenuItem116°ôP`±& % MenuItem117°ýPa±& % MenuItem118ÐPb±& % MenuItem119ÐPc±& % GormNSMenu80ÐPd±& % GormNSMenu81ÐPe±&%TableHeaderView(0)°0Pf±& % ClipView(0)° Pg±& % MenuItem230Ph±+Pi±&%Send A Bug Report...Pj±&&&ÿ%°Ì°Î’%Pk±& % MenuItem40°æPl±& % MenuItem232ÐPm±& % MenuItem41°éPn±& % MenuItem233Ð!Po±& % MenuItem42Pp±+Pq±& % Save To...Pr±&&&ÿ%°Ì°Î’%Ps±& % MenuItem43ÐNPt±& % MenuItem44°ãPu±& % MenuItem45°ìPv±& % MenuItem46°ñPw±& % MenuItem47Ð[Px±& % MenuItem120ÐPy±& % MenuItem48°÷Pz±& % MenuItem121Ð P{±& % MenuItem49°ôP|±& % MenuItem122ÐP}±& % MenuItem123Ð$P~±& % MenuItem124Ð)P±& % MenuItem125Ð,P€±& % MenuItem126Ð/P±& % MenuItem127Ð2P‚±& % MenuItem128Ð7Pƒ±& % MenuItem129Ð:P„±& % NSWindowsMenuÐ'°Ã°ÂP…±& % ClipView(1)°8P†±&%Button°µP‡±& % MenuItem50°ýPˆ±& % MenuItem51ÐP‰±& % MenuItem52ÐPб& % MenuItem53Ð P‹±& % MenuItem54ÐPŒ±& % MenuItem55Ð$P±& % MenuItem56Ð)Pޱ& % MenuItem57Ð,P±& % MenuItem130°ÕP±& % MenuItem58Ð/P‘±& % MenuItem131°ØP’±& % MenuItem59Ð2P“±& % MenuItem132°ÛP”±& % MenuItem133°àP•±& % MenuItem134ÐUP–±& % MenuItem135°æP—±& % MenuItem136°éP˜±& % MenuItem137ÐpP™±& % MenuItem138ÐNPš±& % MenuItem139°ãP›±& % GormNSMenu1°ÞPœ±& % GormNSMenu2Ð'P±& % MenuItem60Ð7Pž±& % GormNSMenu3Ð5PŸ±& % MenuItem61Ð:P ±& % GormNSMenu4°ïP¡±& % MenuItem62°æP¢±& % GormNSMenu5ÐP£±& % MenuItem63°éP¤±& % GormNSMenu6°ÐP¥±& % MenuItem64ÐpP¦±& % GormNSMenu7°ÐP§±& % MenuItem65ÐNP¨±& % GormNSMenu8°ÞP©±& % MenuItem66°ãPª±& % GormNSMenu9°ïP«±& % MenuItem67°ìP¬±& % MenuItem140°ìP­±& % MenuItem68°ñP®±& % MenuItem141°ñP¯±& % MenuItem69Ð[P°±& % MenuItem142Ð[P±±& % MenuItem143°÷P²±& % MenuItem144°ôP³±& % MenuItem145°ýP´±& % MenuItem146ÐPµ±& % MenuItem147ÐP¶±& % MenuItem148Ð$P·±& % MenuItem149Ð)P¸±&%GormNSTableView° P¹±& % MenuItem70°÷Pº±& % MenuItem71°ôP»±& % MenuItem72°ýP¼±& % MenuItem73ÐP½±& % MenuItem74ÐP¾±& % MenuItem75Ð P¿±& % MenuItem76ÐPÀ±& % MenuItem77Ð$PÁ±& % MenuItem78Ð)P±& % MenuItem150Ð,Pñ& % MenuItem79Ð,Pı& % MenuItem151Ð/Pű& % MenuItem152Ð2PƱ& % MenuItem153Ð:PDZ& % MenuItem154°ÕPȱ& % MenuItem155°ØPɱ& % MenuItem156°ÛPʱ& % MenuItem157°àP˱& % MenuItem158ÐUP̱& % MenuItem159°æPͱ& % GormNSMenu°ÐPα& % MenuItem80Ð/Pϱ& % MenuItem81Ð2Pб& % MenuItem82Ð7Pѱ& % MenuItem83Ð:PÒ±& % MenuItem84°æPÓ±& % GormNSMenu10ÐPÔ±& % MenuItem85°éPÕ±& % GormNSMenu11Ð'PÖ±& % MenuItem86ÐpP×±&%Button1°»Pر& % GormNSMenu12°ÐPÙ±& % MenuItem87ÐNPÚ±&%Button2°XPÛ±& % GormNSMenu13°ÞPܱ& % MenuItem88°ãPݱ& % PlayerWindow°QPÞ±&%Button3°^Pß±& % MenuItem160°éPà±& % GormNSMenu14°ïPá±& % MenuItem89°ìPâ±&%Button4°dPã±& % MenuItem161ÐpPä±& % GormNSMenu15ÐPå±&%PlaylistWindow°Pæ±&%Button5°kPç±& % MenuItem162ÐNPè±& % GormNSMenu16Ð'Pé±&%Button6°qPê±& % MenuItem163°ãPë±& % GormNSMenu17°ÐPì±&%Button7°wPí±& % MenuItem164°ìPî±& % GormNSMenu18°ÞPï±& % MenuItem165°ñPð±& % GormNSMenu19°ïPñ±&%Button9°}Pò±& % MenuItem166Ð[Pó±& % MenuItem167°÷Pô±& % MenuItem168°ôPõ±& % MenuItem169°ýPö±& % MenuItem90°ñP÷±& % MenuItem91Ð[Pø±& % MenuItem92°÷Pù±&% NSOwnerPú±& % NSApplicationPû±& % MenuItem93°ôPü±& % MenuItem94°ýPý±& % MenuItem95ÐPþ±& % GormNSMenu20ÐPÿ±& % MenuItem96ÐP±& % GormNSMenu21Ð'P±& % MenuItem97ÐP±& % GormNSMenu22°ÐP±& % MenuItem98Ð P±& % MenuItem170ÐP±& % ImageView°UP±& % GormNSMenu23°ÞP±& % MenuItem99ÐP±& % MenuItem171ÐP ±& % GormNSMenu24°ïP ±& % MenuItem172Ð$P ±& % GormNSMenu25ÐP ±& % MenuItem173Ð)P ±& % GormNSMenu26Ð'P±& % MenuItem174Ð,P±& % GormNSMenu27°ÐP±& % MenuItem175Ð/P±& % GormNSMenu28°ÐP±& % MenuItem176Ð2P±& % GormNSMenu29°ÞP±& % MenuItem177Ð:P±& % MenuItem178°ÕP±& % MenuItem179°ØP±&%NSMenu°ÆP±&%Slider°ƒ°Å°ÄP±&%PlaylistViewController°P±& % TableColumn°P±& % GormNSMenu30°ïP±& % GormNSMenu31ÐP±& % GormNSMenu32Ð'P±& % MenuItem180°ÛP±& % GormNSMenu33Ð5P ±& % ScrollView° P!±& % MenuItem181°àP"±& % GormNSMenu34°ÐP#±& % MenuItem182ÐUP$±& % GormNSMenu35°ÞP%±& % MenuItem183°æP&±& % GormNSMenu36°ÐP'±& % MenuItem184°éP(±& % GormNSMenu37°ÞP)±& % MenuItem185ÐpP*±& % GormNSMenu38°ïP+±& % MenuItem186ÐNP,±& % GormNSMenu39ÐP-±& % MenuItem187°ãP.±& % MenuItem188°ìP/±& % MenuItem189°ñP0±& % Scroller(0)°5P1±&%Button10°¯P2±& % GormNSMenu40Ð'P3±& % GormNSMenu41Ð5P4±& % GormNSMenu42°ÐP5±& % MenuItem190Ð[P6±&%CynthiuneControllerÐ=P7±& % GormNSMenu43°ÞP8±& % MenuItem191°÷P9±& % GormNSMenu44°ïP:±& % MenuItem192°ôP;±& % GormNSMenu45ÐP<±& % MenuItem193°ýP=±& % GormNSMenu46Ð'P>±& % MenuItem194ÐP?±& % GormNSMenu47Ð5P@±& % MenuItem195ÐPA±& % GormNSMenu48°ÐPB±& % MenuItem196Ð$PC±& % GormNSMenu49°ÞPD±& % MenuItem197Ð)PE±& % TextField1°˜PF±& % MenuItem198Ð,PG±& % TextField2°PH±& % MenuItem199Ð/PI±& % TextField3°£PJ±& % TextField4°©PK±& % TextField5°±/ÐSÐP?±/ÐÐSP@±/Ð’ÐSPA±/ЩÐSPB±/ЫÐSPC±/ЭÐSPD±/ÐFÐSPE±1ÐFÐSPF±&%submenuAction:PG±/ЧÐFPH±/ÐHЧPI±/ÐJЧPJ±/ÐQÐRPK±1Щ°ÅPL±& % previousSong:PM±1аÅPN±& % startPlayer:PO±1Ð’°ÅPP±& % stopPlayer:PQ±1Ы°ÅPR±& % nextSong:PS±1Э°ÅPT±& % pausePlayer:PU±1ÐH°ÅPV±& % toggleRepeat:PW±1ÐJ°ÅPX±&%toggleShuffle:PY±1Љ°ÅPZ±&%removeSelectedSongs:P[±1Ћ°ÅP\±&%removeAllSongs:P]±1ÐQ°ÅP^±&%cleanupPlaylist:P_±1І°ÅP`±& % addSongs:Pa±0°ÅÐHPb±&%repeatMenuItemPc±0°ÅÐJPd±&%shuffleMenuItemPe±1Й°ÅPf±& % saveList:Pg±1К°ÅPh±& % saveListAs:Pi±/ÐlÐPj±1ÐlÐPk±&%submenuAction:Pl±/Ð¥ÐlPm±/ÐnÐ¥Pn±0°ÅÐnPo±&%songInspectorMenuItemPp±1Ðn°ÅPq±&%toggleSongInspector:Pr±/ÐKPs±0°ÅÐKPt±&%playlistStatusLabelPu±0Ð6ÐÝPv±& % playerWindowPw±0°ÅÐPx±&%playlistViewControllerPy±/ІPz±/Ð×P{±0°ÅІP|±,& % repeatButtonP}±0°ÅÐ×P~±,& % shuffleButtonP±1І°ÅP€±,& % toggleRepeat:P±1Ð×°ÅP‚±,&%toggleShuffle:Pƒ±0ÐÚÐÞP„±,& % nextKeyViewP…±0ÐÞÐæÐ„P†±0ÐæÐéЄP‡±0ÐéÐâЄPˆ±0ÐâÐìЄP‰±0ÐìІЄPб0ІÐ×ЄP‹±0Ð×ÐñЄPŒ±0ÐñÐЄP±0ÐÐÚPޱ,& % nextKeyViewP±0ÐÝÐÞP±,&%initialFirstResponderP‘±/ÐfÐ P’±/Ð0Ð P“±1Ð0Ð P”±& % _doScroll:P•±/Ð…Ð P–±/ÐeÐ…P—±/МРP˜±1Ðk°ÅP™±& % addPlaylist:Pš±-&ÐJ°ªÐs°‘ÐݰRÐâ°eÐG°žÐI°¤Ð¸°Ðå°Cynthiune-1.0.0/Bundles/ASFTags/000755 001751 000024 00000000000 12117456033 016765 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/AudioFile/000755 001751 000024 00000000000 12117456032 017375 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Esound/000755 001751 000024 00000000000 12117456033 016772 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/FLAC/000755 001751 000024 00000000000 12117456032 016241 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/FLACTags/000755 001751 000024 00000000000 11751256510 017062 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/FormatSkeleton/000755 001751 000024 00000000000 11742131623 020470 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/GraphWriter/000755 001751 000024 00000000000 11742131623 017771 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/ID3Tag/000755 001751 000024 00000000000 12117456032 016547 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/MP3/000755 001751 000024 00000000000 12117456352 016140 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/MacOSX/000755 001751 000024 00000000000 12014507041 016617 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Mod/000755 001751 000024 00000000000 12117456032 016253 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Musepack/000755 001751 000024 00000000000 12117456032 017304 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/OSS/000755 001751 000024 00000000000 12117456033 016201 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Ogg/000755 001751 000024 00000000000 12117456032 016250 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/OutputSkeleton/000755 001751 000024 00000000000 11742131624 020541 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Sndio/000755 001751 000024 00000000000 12117456245 016616 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Taglib/000755 001751 000024 00000000000 12117456033 016737 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/TagsSkeleton/000755 001751 000024 00000000000 11742131624 020137 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Timidity/000755 001751 000024 00000000000 12117456032 017330 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/VorbisTags/000755 001751 000024 00000000000 12117456032 017617 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/WaveOut/000755 001751 000024 00000000000 11763436013 017131 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/WindowsMedia/000755 001751 000024 00000000000 12075010200 020110 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/XMMSInput/000755 001751 000024 00000000000 11742131624 017340 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/aRts/000755 001751 000024 00000000000 12117456245 016453 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/ALSA/000755 001751 000024 00000000000 11763436013 016257 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/AO/000755 001751 000024 00000000000 12117456033 016034 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/AO/GNUmakefile000644 001751 000024 00000002761 11750503124 020110 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # Copyright (C) 2012 Philippe Roussel # # Author: Philippe Roussel # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = AO BUNDLE_NAME = AO BUNDLE_EXTENSION = .output BUNDLE_INSTALL_DIR = $(GNUSTEP_BUNDLES)/Cynthiune AO_PRINCIPAL_CLASS = AO # # Additional libraries # AO_LIBRARIES_DEPEND_UPON += # # Resource files # AO_RESOURCE_FILES= # # Header files # AO_HEADERS= # # Class files # AO_OBJC_FILES= \ ao.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/AO/GNUmakefile.preamble000644 001751 000024 00000002065 11750503124 021673 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # Copyright (C) 2012 Philippe Roussel # # Author: Philippe Roussel # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. AO_LIBS := -lao ifeq (mingw32, $(GNUSTEP_TARGET_OS)) ADDITIONAL_GUI_LIBS += $(AO_LIBS) else BUNDLE_LIBS += $(AO_LIBS) endif ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/AO/ao.m000644 001751 000024 00000007007 11754426577 016635 0ustar00multixstaff000000 000000 /* AO.m - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * Copyright (C) 2012 Philippe Roussel * * Author: Philippe Roussel * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import @interface AO : NSObject { id parentPlayer; BOOL stopRequested; ao_device *dev; int driver; ao_sample_format format; unsigned char buffer[DEFAULT_BUFFER_SIZE]; NSLock *devlock; } @end @implementation AO : NSObject + (NSString *) bundleDescription { return @"Output plug-in based on libao"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2012 Philippe Roussel", nil]; } + (BOOL) isThreaded { return YES; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (id) init { if ((self = [super init])) { stopRequested = NO; memset(&format, 0, sizeof(format)); devlock = [NSLock new]; ao_initialize(); driver = ao_default_driver_id(); } return self; } /* FIXME : this is never called */ - (void)dealloc { ao_shutdown(); [devlock release]; [super dealloc]; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e { BOOL result = YES; format.channels = (int)numberOfChannels; format.rate = (int)sampleRate; /* FIXME : this should somehow come from the input bundle */ format.bits = 16; if (e == BigEndian) format.byte_format = AO_FMT_BIG; else format.byte_format = AO_FMT_LITTLE; [devlock lock]; if (dev) { ao_close(dev); dev = ao_open_live(driver, &format, NULL); result = (dev == NULL) ? NO : YES; } [devlock unlock]; return result; } - (BOOL) openDevice { BOOL result; [devlock lock]; dev = ao_open_live(driver, &format, NULL); result = (dev == NULL) ? NO : YES; [devlock unlock]; return result; } - (void) closeDevice { [devlock lock]; ao_close(dev); dev = NULL; [devlock unlock]; } - (void) threadLoop { int bufferSize; NSAutoreleasePool *pool = [NSAutoreleasePool new]; while (!stopRequested) { bufferSize = [parentPlayer readNextChunk: buffer withSize: DEFAULT_BUFFER_SIZE]; [devlock lock]; if (dev && bufferSize > 0) ao_play(dev, (char *)buffer, (uint_32)bufferSize); [devlock unlock]; /* FIXME : copied from ALSA.m, I'm not sure this is needed */ if ([pool autoreleaseCount] > 50) [pool emptyPool]; } stopRequested = NO; [pool release]; } - (BOOL) startThread { [NSThread detachNewThreadSelector: @selector(threadLoop) toTarget: self withObject: nil]; return YES; } - (void) stopThread { stopRequested = YES; } @end Cynthiune-1.0.0/Bundles/ALSA/GNUmakefile000644 001751 000024 00000002522 11750333365 020334 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2010 Free Software Foundation, Inc. # # Author: Yavor Doganov # # Cynthiune is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # Cynthiune is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301, USA. include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = ALSA BUNDLE_NAME = ALSA BUNDLE_EXTENSION = .output BUNDLE_INSTALL_DIR = $(GNUSTEP_BUNDLES)/Cynthiune ALSA_PRINCIPAL_CLASS = ALSA ALSA_HEADERS = ALSA.h ALSA_OBJC_FILES = ALSA.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/ALSA/ALSA.h000644 001751 000024 00000002342 11763436013 017151 0ustar00multixstaff000000 000000 /* ALSA.h - this file is part of Cynthiune -*-objc-*- * * Copyright (C) 2010 Free Software Foundation, Inc. * * Author: Yavor Doganov * * Cynthiune is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * Cynthiune is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef ALSA_H #define ALSA_H #import @interface ALSA : NSObject { id parentPlayer; snd_pcm_t *pcm_handle; snd_pcm_format_t en; NSLock *devLock; BOOL stopRequested; unsigned int channels; unsigned long rate; unsigned char buffer[DEFAULT_BUFFER_SIZE]; } @end #endif /* ALSA_H */ Cynthiune-1.0.0/Bundles/ALSA/ALSA.m000644 001751 000024 00000012171 11763436013 017157 0ustar00multixstaff000000 000000 /* ALSA.m - this file is part of Cynthiune * * Copyright (C) 2010-2012 Free Software Foundation, Inc. * * Author: Yavor Doganov * Riccardo Mottola * Philippe Roussel * The GNUstep Application Team * * Cynthiune is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * Cynthiune is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #include #import #import #import #import #import "ALSA.h" #define LOCALIZED(X) _b ([ALSA class], X) static char *device = "default"; @implementation ALSA + (NSString *) bundleDescription { return LOCALIZED (@"Output plug-in for ALSA"); } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: LOCALIZED (@"Copyright (C) 2010 Free Software Foundation," @" Inc."), nil]; } + (BOOL) isThreaded { return YES; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (id) init { if ((self = [super init])) { parentPlayer = nil; pcm_handle = NULL; channels = 0; rate = 0; stopRequested = NO; devLock = [NSLock new]; en = SND_PCM_FORMAT_S16; } return self; } - (BOOL) openDevice { int err; [devLock lock]; if ((err = snd_pcm_open (&pcm_handle, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { [devLock unlock]; NSRunAlertPanel (LOCALIZED (@"Error"), LOCALIZED (@"Failed to open the ALSA device:\n%s"), LOCALIZED (@"OK"), NULL, NULL, snd_strerror (err)); return NO; } if ((err = snd_pcm_set_params (pcm_handle, en, SND_PCM_ACCESS_RW_INTERLEAVED, channels, rate, 1, 100000)) < 0) { /* we retry with resampling */ NSLog(@"Retry with fixed 44100 Hz rate and resampling"); if ((err = snd_pcm_set_params (pcm_handle, en, SND_PCM_ACCESS_RW_INTERLEAVED, channels, 44100, 1, 100000)) < 0) { [devLock unlock]; NSRunAlertPanel (LOCALIZED (@"Error"), LOCALIZED (@"Failed to set device parameters:\n%s"), LOCALIZED (@"OK"), NULL, NULL, snd_strerror (err)); return NO; } } if ((err = snd_pcm_prepare (pcm_handle)) < 0) { [devLock unlock]; NSRunAlertPanel (LOCALIZED (@"Error"), LOCALIZED (@"Failed to prepare the ALSA device for " @"playing:\n%s"), LOCALIZED (@"OK"), NULL, NULL, snd_strerror (err)); return NO; } [devLock unlock]; return YES; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e { int err; channels = numberOfChannels; rate = sampleRate; if (e == BigEndian) en = SND_PCM_FORMAT_S16_BE; else if (e == LittleEndian) en = SND_PCM_FORMAT_S16_LE; else en = SND_PCM_FORMAT_S16; [devLock lock]; if (pcm_handle) { if ((err = snd_pcm_set_params(pcm_handle, en, SND_PCM_ACCESS_RW_INTERLEAVED, channels, rate, 1, 100000)) < 0) { if ((err = snd_pcm_set_params(pcm_handle, en, SND_PCM_ACCESS_RW_INTERLEAVED, channels, 44100, 1, 100000)) < 0) NSLog(LOCALIZED (@"Failed to set device parameters:%s"), snd_strerror (err)); } } [devLock unlock]; return YES; } - (void) closeDevice { while (stopRequested) [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]]; [devLock lock]; snd_pcm_close (pcm_handle); pcm_handle = NULL; [devLock unlock]; } - (void) threadLoop { NSAutoreleasePool *pool = [NSAutoreleasePool new]; while (!stopRequested) { snd_pcm_sframes_t written; snd_pcm_uframes_t frames; int bufferSize; bufferSize = [parentPlayer readNextChunk: buffer withSize: DEFAULT_BUFFER_SIZE]; [devLock lock]; if (bufferSize > 0) { frames = snd_pcm_bytes_to_frames (pcm_handle, bufferSize); written = snd_pcm_writei (pcm_handle, buffer, frames); if (written < 0) { NSLog (@"Failed writing to the ALSA device:\n" @"%s, trying to recover.\n", snd_strerror (written)); snd_pcm_recover (pcm_handle, written, 0); } } [devLock unlock]; if ([pool autoreleaseCount] > 50) [pool emptyPool]; } stopRequested = NO; [pool release]; } - (BOOL) startThread { [NSThread detachNewThreadSelector: @selector(threadLoop) toTarget: self withObject: nil]; return YES; } - (void) stopThread { stopRequested = YES; } @end Cynthiune-1.0.0/Bundles/ALSA/GNUmakefile.preamble000644 001751 000024 00000002176 11750333365 022127 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-gmake-*- # # Copyright (C) 2010 Free Software Foundation, Inc. # # Author: Yavor Doganov # # Cynthiune is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # Cynthiune is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301, USA. ALSA_CFLAGS := $(shell pkg-config --cflags alsa) ALSA_LIBS := $(shell pkg-config --libs alsa) ADDITIONAL_INCLUDE_DIRS += $(ALSA_CFLAGS) BUNDLE_LIBS += $(ALSA_LIBS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import ifeq ($(debug), yes) ADDITIONAL_LDFLAGS += -lmcheck endif Cynthiune-1.0.0/Bundles/aRts/GNUmakefile000644 001751 000024 00000003061 11733555311 020522 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=aRts BUNDLE_NAME=aRts BUNDLE_EXTENSION=.output BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune aRts_PRINCIPAL_CLASS=aRts aRts_LANGUAGES= aRts_LOCALIZED_RESOURCE_FILES= # # Additional libraries # aRts_LIBRARIES_DEPEND_UPON += # # Resource files # aRts_RESOURCE_FILES= # # Header files # aRts_HEADERS= \ aRts.h # # Class files # aRts_OBJC_FILES= \ aRts.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/aRts/GNUmakefile.preamble000644 001751 000024 00000002031 11751032255 022301 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_OBJCFLAGS += -Wall -Wno-import $(shell artsc-config --cflags) -DARTSD="\"$(shell artsc-config --arts-prefix)/bin/artsd\"" BUNDLE_LIBS += $(shell artsc-config --libs) Cynthiune-1.0.0/Bundles/aRts/aRts.h000644 001751 000024 00000002232 11733546703 017536 0ustar00multixstaff000000 000000 /* aRts.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef aRts_H #define aRts_H #import @interface aRts : NSObject { id parentPlayer; BOOL stopRequested; arts_stream_t outputStream; unsigned long rate; unsigned int channels; unsigned char buffer[DEFAULT_BUFFER_SIZE]; } @end #endif /* aRts_H */ Cynthiune-1.0.0/Bundles/aRts/aRts.m000644 001751 000024 00000010245 11754426600 017542 0ustar00multixstaff000000 000000 /* aRts.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #import #import #import #import #import #import #import #import #import "aRts.h" #define LOCALIZED(X) _b ([aRts class], X) #define artsStreamName "Cynthiune stream" @implementation aRts : NSObject + (NSString *) bundleDescription { return @"Output plug-in for the aRts sound daemon"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (BOOL) isThreaded { return YES; } - (id) init { if ((self = [super init])) { outputStream = NULL; channels = 0; rate = 0; stopRequested = NO; } return self; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e { BOOL result; channels = numberOfChannels; rate = sampleRate; if (outputStream) { arts_close_stream (outputStream); outputStream = arts_play_stream (rate, 16, channels, artsStreamName); arts_stream_set (outputStream, ARTS_P_BLOCKING, 1); result = (outputStream != NULL); } else result = YES; return result; } - (BOOL) _launchServer { NSTask *artsdTask; NSString *artsdPath; artsdTask = [NSTask new]; [artsdTask autorelease]; artsdPath = [NSString stringWithCString: ARTSD]; [artsdTask setLaunchPath: artsdPath]; [artsdTask launch]; [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.2]]; return [artsdTask isRunning]; } - (BOOL) openDevice { BOOL result; int code; if (outputStream) result = YES; else { /* FIXME: should add code to spawn the daemon */ code = arts_init (); if (code == ARTS_E_NOSERVER) if ([self _launchServer]) code = arts_init (); if (code == 0) { outputStream = arts_play_stream (rate, 16, channels, artsStreamName); arts_stream_set (outputStream, ARTS_P_BLOCKING, 1); result = (outputStream != NULL); } else { NSLog (@"failure opening device:\n%d, %s", code, arts_error_text (code)); result = NO; } } return result; } - (void) closeDevice { while (stopRequested) [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.01]]; arts_close_stream (outputStream); outputStream = NULL; arts_free (); } - (void) threadLoop { NSAutoreleasePool *pool; int bufferSize; pool = [NSAutoreleasePool new]; while (!stopRequested) { bufferSize = [parentPlayer readNextChunk: buffer withSize: DEFAULT_BUFFER_SIZE]; if (bufferSize > 0) arts_write (outputStream, buffer, bufferSize); if ([pool autoreleaseCount] > 50) [pool emptyPool]; } stopRequested = NO; [pool release]; } - (BOOL) startThread { [NSThread detachNewThreadSelector: @selector (threadLoop) toTarget: self withObject: nil]; return YES; } - (void) stopThread { stopRequested = YES; } @end Cynthiune-1.0.0/Bundles/XMMSInput/GNUmakefile000644 001751 000024 00000003133 11733555311 021415 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=XMMSInput BUNDLE_NAME=XMMSInput BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune XMMSInput_PRINCIPAL_CLASS=XMMSInput # # Additional libraries # XMMSInput_LIBRARIES_DEPEND_UPON += # # Resource files # XMMSInput_RESOURCE_FILES= # # Header files # XMMSInput_HEADERS= \ XMMSInput.h # # Class files # XMMSInput_OBJC_FILES= \ XMMSInput.m # # C files # XMMSInput_C_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/XMMSInput/GNUmakefile.preamble000644 001751 000024 00000002074 11733555311 023206 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. GTK_CFLAGS = # $(shell gtk-config --cflags) GTK_LIBS = # $(shell gtk-config --libs) ADDITIONAL_INCLUDE_DIRS += -I../.. $(GTK_CFLAGS) ADDITIONAL_LDFLAGS += $(GTK_LIBS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/XMMSInput/XMMSInput.h000644 001751 000024 00000002456 11733546710 021332 0ustar00multixstaff000000 000000 /* XMMSInput.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef XMMSInput_H #define XMMSInput_H #define BUF_LEN 4096 * 5 @interface XMMSInput : NSObject { InputPlugin *inputPlugin; OutputPlugin *outputPlugin; char pluginBuffer[BUF_LEN]; int buffer_size; int position; BOOL buffer_filled; unsigned int channels; unsigned long rate; BOOL formatKnown; NSString *filename; } @end typedef struct { @defs (XMMSInput); } CXMMSInput; #endif /* XMMSInput_H */ Cynthiune-1.0.0/Bundles/XMMSInput/XMMSInput.m000644 001751 000024 00000023777 11733546710 021350 0ustar00multixstaff000000 000000 /* XMMSInput.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #define _GNU_SOURCE 1 #import #import #import #import #import typedef void * gpointer; typedef int gint; typedef void * GList; typedef char gchar; typedef short gint16; // #import #import #import #import #import #import "XMMSInput.h" typedef enum _PlayAction { doNothing = 0, readFormat = 1, readChunk = 2, } PlayAction; #define LOCALIZED(X) _b ([XMMSInput class], X) // #define plugin_file "/home/wolfgang/.xmms/Plugins/libxmmsmad.so" #define plugin_file "/home/wolfgang/.xmms/Plugins/xmms-musepack-1.00.so" static void *dlHandler = NULL; InputPlugin* (*get_iplugin_info)(); // static pthread_mutex_t instanceMutex; // static NSLock *instanceLock; static NSThread* mainThread; static CXMMSInput *currentInstance = NULL; static PlayAction playAction = doNothing; static unsigned int bufferPlayingIteration = 0; static BOOL reading = NO; static char *titleFormat = NULL; char *xmms_get_gentitle_format () { NSLog (@"xmms_get_gentitle_format (%s)", titleFormat); return titleFormat; } static void threadCleanup () { // NSLog (@"thread %p exiting...", pthread_self()); GSUnregisterCurrentThread (); } static void registerThreadIfNeeded () { if (GSRegisterCurrentThread ()) { // NSLog (@"new thread: %p", GSCurrentThread()); } } static void input_add_vis_pcm (int time, AFormat fmt, int nch, int length, void *ptr) { registerThreadIfNeeded (); // NSLog (@"input_add_vis_pcm"); } /* Fill in the stuff that is shown in the player window */ static void input_set_info (char *title, int length, int rate, int freq, int nch) { registerThreadIfNeeded (); // NSLog (@"input_set_info: %s, %d, %d, %d, %d", // title, length, rate, freq, nch); } static void input_set_info_text (char *text) { registerThreadIfNeeded (); // NSLog (@"input_set_info_text: %s", text); } static InputVisType input_get_vis_type () { registerThreadIfNeeded (); // NSLog (@"input_get_vis_type"); return INPUT_VIS_OFF; } int output_open_audio (AFormat fmt, int newRate, int newChannels) { registerThreadIfNeeded (); // NSLog (@"open_audio: chans: %d, rate: %d", newChannels, newRate); // NSLog (@"thread id: %p", pthread_self()); if (playAction == readFormat) { currentInstance->channels = newChannels; currentInstance->rate = newRate; playAction = doNothing; } return YES; } void output_init () { registerThreadIfNeeded (); // NSLog (@"init"); } void output_about () { registerThreadIfNeeded (); // NSLog (@"about"); } void output_configure () { registerThreadIfNeeded (); // NSLog (@"configure"); } void output_write_audio (void *ptr, int length) { registerThreadIfNeeded (); bufferPlayingIteration = 0; // NSLog (@"output_write_audio"); memcpy (currentInstance->pluginBuffer, ptr, length); currentInstance->buffer_size = length; playAction = doNothing; } void output_close_audio (void) { registerThreadIfNeeded (); } void output_flush (int time) { registerThreadIfNeeded (); // NSLog (@"flush"); } void output_pause (short paused) { registerThreadIfNeeded (); // NSLog (@"pause"); } int output_buffer_free (void) { registerThreadIfNeeded (); // NSLog (@"output_buffer_free"); while (playAction != readChunk) usleep (5000); // return BUF_LEN; return ((playAction == readChunk) ? BUF_LEN : 0); } int output_buffer_playing (void) { BOOL answer; registerThreadIfNeeded (); // NSLog (@"output_buffer_playing"); // return (playAction == readChunk); bufferPlayingIteration++; if (bufferPlayingIteration > 2 && playAction == readChunk) { NSLog (@"stopping?"); currentInstance->buffer_size = 0; playAction = doNothing; answer = NO; GSUnregisterCurrentThread (); } else answer = YES; return answer; // return ((currentInstance->buffer_empty) ? NO : YES); } int output_output_time (void) { registerThreadIfNeeded (); // NSLog (@"output_output_time"); return 0; } int output_written_time (void) { registerThreadIfNeeded (); // NSLog (@"output_written_time"); return 0; } @implementation XMMSInput : NSObject + (void) load { mainThread = GSCurrentThread(); // instanceLock = [NSLock new]; dlHandler = dlopen (plugin_file, RTLD_LAZY | RTLD_GLOBAL); if (!dlHandler) NSLog (@"error opening SO '%s':\n\t%s", plugin_file, dlerror()); else { get_iplugin_info = dlsym (dlHandler, "get_iplugin_info"); if (!get_iplugin_info) NSLog (@"%s: get_iplugin_info unresolved"); } } + (NSArray *) bundleClasses { return [NSArray arrayWithObject: [self class]]; } + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"mpc", nil]; } + (BOOL) canTestFileHeaders { return NO; } - (void) _createOutputPlugin { outputPlugin = malloc (sizeof (OutputPlugin)); outputPlugin->init = output_init; outputPlugin->about = output_about; outputPlugin->configure = output_configure; outputPlugin->open_audio = output_open_audio; outputPlugin->write_audio = output_write_audio; outputPlugin->close_audio = output_close_audio; outputPlugin->flush = output_flush; outputPlugin->pause = output_pause; outputPlugin->buffer_free = output_buffer_free; outputPlugin->buffer_playing = output_buffer_playing; outputPlugin->output_time = output_output_time; outputPlugin->written_time = output_written_time; } - (void) _createInputPlugin { inputPlugin = get_iplugin_info (); inputPlugin->handle = dlHandler; inputPlugin->filename = plugin_file; inputPlugin->get_vis_type = input_get_vis_type; inputPlugin->add_vis_pcm = input_add_vis_pcm; inputPlugin->set_info = input_set_info; inputPlugin->set_info_text = input_set_info_text; inputPlugin->output = outputPlugin; } + (BOOL) streamTestOpen: (NSString *) fileName { return NO; } - (XMMSInput *) init { if ((self = [super init])) { filename = nil; channels = 0; rate = 0; formatKnown = NO; [self _createOutputPlugin]; [self _createInputPlugin]; inputPlugin->init (); } return self; } - (BOOL) streamOpen: (NSString *) fileName { char *name; BOOL result; name = (char *) [fileName cString]; // inputPlugin->output->open_audio (FMT_S16_LE,44100, 2); result = (inputPlugin->is_our_file (name) == 1); if (result) SET (filename, fileName); return result; } - (void) streamClose { RELEASEIFSET (filename); // if (reading) // { // NSLog (@"streamClose: stopping"); // [instanceLock unlock]; // inputPlugin->stop(); // reading = NO; // } // free (inputPlugin->output); // inputPlugin->stop (); } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int realSize; char *bufPtr; if (!reading) { NSLog (@"starting"); // [instanceLock lock]; currentInstance = (CXMMSInput *) self; inputPlugin->play_file ((char *) [filename cString]); reading = YES; position = 0; playAction = readChunk; } while (playAction == readChunk); bufPtr = pluginBuffer + position; realSize = buffer_size - position; if (realSize > bufferSize) { realSize = bufferSize; position += realSize; } else position = 0; if (realSize > 0) { memcpy (buffer, bufPtr, realSize); playAction = readChunk; } else { NSLog (@"stopping"); // [instanceLock unlock]; inputPlugin->stop(); reading = NO; } // buffer_empty = (position == 0); return realSize; } - (BOOL) isSeekable { return YES; } - (void) seek: (unsigned int) aPos { inputPlugin->seek (aPos); } - (void) _readFormat { if (!formatKnown) { // [instanceLock lock]; currentInstance = (CXMMSInput *) self; playAction = readFormat; inputPlugin->play_file ((char *) [filename cString]); while (playAction != doNothing); inputPlugin->stop (); // [instanceLock unlock]; formatKnown = YES; } } - (unsigned int) readChannels { [self _readFormat]; NSLog (@"channels: %d", channels); return channels; } - (unsigned long) readRate { [self _readFormat]; NSLog (@"rate: %d", rate); return rate; } - (NSString *) _readInfo: (char *) infoFlag { char *info; int length; // pthread_cleanup_push (threadCleanup, NULL); // [instanceLock lock]; titleFormat = infoFlag; inputPlugin->get_song_info ((char *) [filename cString], &info, &length); if (!info) info = ""; // [instanceLock unlock]; // pthread_cleanup_pop (NO); NSLog (@"string for flag '%s' = '%s'", infoFlag, info); return [NSString stringWithCString: info]; } - (NSString *) readTitle { return [self _readInfo: "%t"]; } - (NSString *) readGenre { return [self _readInfo: "%g"]; } - (NSString *) readArtist { return [self _readInfo: "%p"]; } - (NSString *) readAlbum { return [self _readInfo: "%a"]; } - (NSString *) readTrackNumber { return [self _readInfo: "%n"]; } - (unsigned int) readDuration { char *title; int length; inputPlugin->get_song_info ((char *) [filename cString], &title, &length); return (length / 1000); } - (void) dealloc { free (outputPlugin); [super dealloc]; } @end Cynthiune-1.0.0/Bundles/WindowsMedia/CWMFile.cpp000644 001751 000024 00000007712 11754426600 022073 0ustar00multixstaff000000 000000 /* CWMFile.cpp - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef NULL #define NULL 0 #endif #include #include #include #include "CWMFile.h" static bool _testASFHeaders (const char *filename) { std::fstream *_f; unsigned long header; bool result; result = false; _f = new std::fstream (filename, std::ios::in); if (_f) { _f->read ((char*) &header, 4); #if (BYTE_ORDER == __LITTLE_ENDIAN) result = (header == 0x75b22630); #else result = (header == 0x3026b275); #endif delete _f; } return result; } WMFile * WMFileOpen (const char *filename) { return ((_testASFHeaders (filename)) ? (WMFile *) avm::CreateReadFile (filename) : NULL); } void WMFileClose (WMFile *file) { delete ((avm::IReadFile *) file); } unsigned int WMFileAudioStreamCount (WMFile *file) { avm::IReadFile *readFile; readFile = (avm::IReadFile *) file; return (unsigned int) readFile->AudioStreamCount (); } WMStream * WMFileGetAudioStream (WMFile *file) { avm::IReadFile *readFile; readFile = (avm::IReadFile *) file; return ((WMStream *) readFile->GetStream (0, avm::IReadStream::Audio)); } void WMStreamClose (WMStream *stream) { } void WMStreamStartStreaming (WMStream *stream) { avm::IReadStream *readStream; readStream = (avm::IReadStream *) stream; readStream->StartStreaming (); } void WMStreamStopStreaming (WMStream *stream) { avm::IReadStream *readStream; readStream = (avm::IReadStream *) stream; readStream->StopStreaming (); } unsigned int WMStreamGetFrameSize (WMStream *stream) { avm::IReadStream *readStream; readStream = (avm::IReadStream *) stream; return (unsigned int) readStream->GetFrameSize (); } void WMStreamGetInfos (WMStream *stream, unsigned int *channels, unsigned long *rate, unsigned int *duration) { avm::IReadStream *readStream; avm::StreamInfo *streamInfo; readStream = (avm::IReadStream *) stream; streamInfo = readStream->GetStreamInfo (); if (channels) *channels = (unsigned int) streamInfo->GetAudioChannels (); if (rate) *rate = (unsigned long) streamInfo->GetAudioSamplesPerSec (); if (duration) *duration = (unsigned int) streamInfo->GetLengthTime (); } int WMStreamReadFrames (WMStream *stream, void *buffer, unsigned int bufferSize, unsigned int samples, unsigned int *samplesRead, unsigned int *bytesRead) { size_t _samplesRead, _bytesRead; avm::IReadStream *readStream; int result; _samplesRead = 0; _bytesRead = 0; result = 0; readStream = (avm::IReadStream *) stream; while (!result && !_bytesRead) { size_t tmp_bufferSize = (size_t) bufferSize; result = ((readStream->Eof ()) ? -1 : readStream->ReadFrames (buffer, tmp_bufferSize, tmp_bufferSize, _samplesRead, _bytesRead)); } *samplesRead = _samplesRead; *bytesRead = _bytesRead; return result; } void WMStreamSeekTime (WMStream *stream, unsigned int position) { avm::IReadStream *readStream; readStream = (avm::IReadStream *) stream; readStream->SeekTime ((double) position); } Cynthiune-1.0.0/Bundles/WindowsMedia/CWMFile.h000644 001751 000024 00000003614 11747325252 021540 0ustar00multixstaff000000 000000 /* CWMFile.h - this file is part of $PROJECT_NAME_HERE$ * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CWMFILE_H #define CWMFILE_H typedef void **WMFile; typedef void **WMStream; #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ WMFile *WMFileOpen (const char *filename); void WMFileClose (WMFile *wmFile); unsigned int WMFileAudioStreamCount (WMFile *); WMStream *WMFileGetAudioStream (WMFile *file); void WMStreamClose (WMStream *stream); void WMStreamStartStreaming (WMStream *stream); void WMStreamStopStreaming (WMStream *stream); unsigned int WMStreamGetFrameSize (WMStream *stream); void WMStreamGetInfos (WMStream *stream, unsigned int *channels, unsigned long *rate, unsigned int *duration); int WMStreamReadFrames (WMStream *stream, void *buffer, unsigned int bufferSize, unsigned int samples, unsigned int *samplesRead, unsigned int *bytesRead); void WMStreamSeekTime (WMStream *stream, unsigned int position); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* CWMFILE_H */ Cynthiune-1.0.0/Bundles/WindowsMedia/GNUmakefile000644 001751 000024 00000003246 11751032255 022205 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2004, 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=WindowsMedia BUNDLE_NAME=WindowsMedia BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune WindowsMedia_PRINCIPAL_CLASS=WindowsMedia # # Additional libraries # WindowsMedia_LIBRARIES_DEPEND_UPON += # # Resource files # WindowsMedia_RESOURCE_FILES= # # Header files # WindowsMedia_HEADERS= \ CWMFile.h \ ASFMetaData.h \ WindowsMedia.h # # Class files # WindowsMedia_OBJC_FILES= \ WindowsMedia.m # # C++ files # WindowsMedia_CC_FILES= \ CWMFile.cpp ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/WindowsMedia/GNUmakefile.preamble000644 001751 000024 00000002246 11751032255 023772 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. AVIFILE_CFLAGS := $(shell avifile-config --cflags) AVIFILE_LIBS := $(shell avifile-config --libs) ADDITIONAL_INCLUDE_DIRS += -I../.. $(AVIFILE_CFLAGS) BUNDLE_LIBS += $(AVIFILE_LIBS) ifeq (mingw32, $(GNUSTEP_TARGET_OS)) BUNDLE_LIBS += -L../../Frameworks/Cynthiune/obj endif ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/WindowsMedia/WindowsMedia.h000644 001751 000024 00000002541 11733546706 022706 0ustar00multixstaff000000 000000 /* WindowsMedia.h - this file is part of Cynthiune * * Copyright (C) 2004, 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef WINDOWSMEDIA_H #define WINDOWSMEDIA_H #define BUFFER_SIZE 8192 #import #import #import #import "CWMFile.h" @interface WindowsMedia : NSObject { WMFile *file; WMStream *stream; unsigned int frameSize; char *frameBuffer; char *framePtr; unsigned int remaining; unsigned int channels; unsigned long rate; unsigned int duration; } @end #endif /* WINDOWSMEDIA_H */ Cynthiune-1.0.0/Bundles/WindowsMedia/WindowsMedia.m000644 001751 000024 00000007745 11754426600 022717 0ustar00multixstaff000000 000000 /* WindowsMedia.m - this file is part of Cynthiune * * Copyright (C) 2004, 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import "WindowsMedia.h" #define LOCALIZED(X) _b ([WindowsMedia class], X) @implementation WindowsMedia : NSObject + (NSString *) bundleDescription { return @"Extension plug-in for the ASF/WMA audio formats"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2004 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return [NSArray arrayWithObjects: @"ASFTags", nil]; } - (id) init { if ((self = [super init])) { file = NULL; stream = NULL; frameBuffer = NULL; framePtr = NULL; frameSize = 0; remaining = 0; channels = 0; rate = 0; duration = 0; } return self; } - (BOOL) streamOpen: (NSString *) fileName { BOOL result; result = NO; file = WMFileOpen ([fileName cString]); if (file) { stream = WMFileGetAudioStream (file); if (stream) { WMStreamGetInfos (stream, &channels, &rate, &duration); WMStreamStartStreaming (stream); result = YES; } else { WMFileClose (file); file = NULL; } } return result; } + (BOOL) canTestFileHeaders { return YES; } + (BOOL) streamTestOpen: (NSString *) fileName { WMFile *testFile; BOOL result; result = NO; testFile = WMFileOpen ([fileName cString]); if (testFile) { result = (WMFileAudioStreamCount (testFile) && WMFileGetAudioStream (testFile)); WMFileClose (testFile); } return result; } + (NSString *) errorText: (int) error { return @""; } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int result; unsigned int bytes, readBytes, readSamples; if (!remaining) { if (frameBuffer) free (frameBuffer); frameSize = WMStreamGetFrameSize (stream); frameBuffer = malloc (frameSize); framePtr = frameBuffer; result = WMStreamReadFrames (stream, frameBuffer, frameSize, frameSize, &readSamples, &readBytes); remaining = ((result > -1) ? readBytes : 0); } bytes = ((bufferSize < remaining) ? bufferSize : remaining); memcpy (buffer, framePtr, bytes); framePtr += bytes; remaining -= bytes; return bytes; } - (int) lastError { return 0; } - (unsigned int) readChannels { return channels; } - (unsigned long) readRate { return rate; } - (Endianness) endianness { return NativeEndian; } - (unsigned int) readDuration { return duration; } - (void) streamClose { WMStreamStopStreaming (stream); if (frameBuffer) free (frameBuffer); if (stream) WMStreamClose (stream); if (file) WMFileClose (file); } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"asf", @"wma", nil]; } - (BOOL) isSeekable { return YES; } - (void) seek: (unsigned int) aPos { WMStreamSeekTime (stream, aPos); } @end Cynthiune-1.0.0/Bundles/WaveOut/GNUmakefile000644 001751 000024 00000003117 11733555311 021205 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=WaveOut BUNDLE_NAME=WaveOut BUNDLE_EXTENSION=.output BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune WaveOut_PRINCIPAL_CLASS=WaveOut WaveOut_LANGUAGES= WaveOut_LOCALIZED_RESOURCE_FILES= # # Additional libraries # WaveOut_LIBRARIES_DEPEND_UPON += # # Resource files # WaveOut_RESOURCE_FILES= # # Header files # WaveOut_HEADERS= \ WaveOut.h # # Class files # WaveOut_OBJC_FILES= \ WaveOut.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/WaveOut/GNUmakefile.preamble000644 001751 000024 00000001754 11751032255 022775 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_OBJCFLAGS += -Wall -Wno-import BUNDLE_LIBS += -L../../Frameworks/Cynthiune/obj -lwinmm #ADDITIONAL_GUI_LIBS += -lwinmm Cynthiune-1.0.0/Bundles/WaveOut/WaveOut.h000644 001751 000024 00000002352 11733546711 020702 0ustar00multixstaff000000 000000 /* WaveOut.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef WaveOut_H #define WaveOut_H #define MAX_BLOCKS 16 #import @interface WaveOut : NSObject { id parentPlayer; HWAVEOUT dev; int nBlocks; BOOL stopRequested; WAVEHDR **blocks; unsigned char buffer[DEFAULT_BUFFER_SIZE]; int bufferSize; } @end typedef struct { @defs (WaveOut); } CWaveOut; #endif /* WaveOut_H */ Cynthiune-1.0.0/Bundles/WaveOut/WaveOut.m000644 001751 000024 00000015420 11763436013 020703 0ustar00multixstaff000000 000000 /* WaveOut.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation Inc * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #import #import #import #import #import #import #import #import #include #import "WaveOut.h" #define LOCALIZED(X) _b ([WaveOut class], X) static void CALLBACK _waveCallback (HWAVE hWave, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) { CWaveOut *self; WAVEHDR **slot; if (uMsg == WOM_DONE) { self = (CWaveOut *) dwInstance; slot = self->blocks; while (*slot) slot++; *slot = (WAVEHDR *) dwParam1; } } static void FreeBlock (LPWAVEHDR waveBlock) { free (waveBlock->lpData); free (waveBlock); } @implementation WaveOut : NSObject + (NSString *) bundleDescription { return @"Output plug-in for the WaveOut device"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (BOOL) isThreaded { return YES; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (id) init { if ((self = [super init])) { parentPlayer = nil; nBlocks = 0; dev = NULL; blocks = calloc (MAX_BLOCKS, sizeof (WAVEHDR *)); } return self; } - (void) dealloc { free (blocks); [super dealloc]; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e { return (numberOfChannels != 0 && sampleRate != 0); } - (void) _loopIteration { LPWAVEHDR wh; MMRESULT res; char errorBuffer[100]; wh = calloc (sizeof (WAVEHDR), 1); wh->dwBufferLength = bufferSize; wh->lpData = malloc (bufferSize); memcpy (wh->lpData, buffer, bufferSize); res = waveOutPrepareHeader (dev, wh, sizeof (WAVEHDR)); if (res == MMSYSERR_NOERROR) { res = waveOutWrite(dev, wh, sizeof (WAVEHDR)); if (res == MMSYSERR_NOERROR) nBlocks++; else { waveOutGetErrorText (res, errorBuffer, 100); FreeBlock (wh); NSLog (@"error: %s", errorBuffer); } } else { waveOutGetErrorText (res, errorBuffer, 100); FreeBlock (wh); NSLog (@"error: %s", errorBuffer); } } - (void) _freeBlocks { unsigned int count; WAVEHDR **slot; count = 0; while (count < MAX_BLOCKS && nBlocks) { slot = self->blocks + count; if (*slot) { waveOutUnprepareHeader (dev, *slot, sizeof (WAVEHDR)); FreeBlock (*slot); *slot = NULL; nBlocks--; } count++; } } - (void) _threadLoop { NSAutoreleasePool *pool; pool = [NSAutoreleasePool new]; while (!stopRequested) { if (nBlocks >= MAX_BLOCKS) { [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.2]]; [self _freeBlocks]; } else { bufferSize = [parentPlayer readNextChunk: buffer withSize: DEFAULT_BUFFER_SIZE]; if (bufferSize > 0) [self _loopIteration]; } if ([pool autoreleaseCount] > 50) [pool emptyPool]; } [self _freeBlocks]; while (nBlocks > 0) { [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]]; [self _freeBlocks]; } stopRequested = NO; [pool release]; } - (BOOL) openDevice { BOOL result; MMRESULT res; WAVEFORMATEX outFormatex; result = NO; if (waveOutGetNumDevs ()) { outFormatex.wFormatTag = WAVE_FORMAT_PCM; outFormatex.wBitsPerSample = 16; outFormatex.nChannels = 2; outFormatex.nSamplesPerSec = 44100; /* FIXME */ outFormatex.nBlockAlign = 4; outFormatex.nAvgBytesPerSec = (outFormatex.nSamplesPerSec * outFormatex.nBlockAlign); res = waveOutOpen (&dev, WAVE_MAPPER, &outFormatex, (DWORD) _waveCallback, (DWORD) self, CALLBACK_FUNCTION); if (res != MMSYSERR_NOERROR) { switch (res) { case MMSYSERR_ALLOCATED: MessageBox (NULL, "Device Is Already Open", "Error...", MB_OK); break; case MMSYSERR_BADDEVICEID: MessageBox (NULL, "The Specified Device Is out of range", "Error...", MB_OK); break; case MMSYSERR_NODRIVER: MessageBox (NULL, "There is no audio driver in this system.", "Error...", MB_OK); break; case MMSYSERR_NOMEM: MessageBox (NULL, "Unable to allocate sound memory.", "Error...", MB_OK); break; case WAVERR_BADFORMAT: MessageBox (NULL, "This audio format is not supported.", "Error...", MB_OK); break; case WAVERR_SYNC: MessageBox (NULL, "The device is synchronous.", "Error...", MB_OK); break; default: MessageBox (NULL, "Unknown Media Error", "Error...", MB_OK); break; } } else { result = YES; waveOutReset (dev); } } return result; } - (void) closeDevice { while (stopRequested) [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]]; waveOutReset (dev); waveOutClose (dev); } - (BOOL) startThread { [NSThread detachNewThreadSelector: @selector (_threadLoop) toTarget: self withObject: nil]; return YES; } - (void) stopThread { stopRequested = YES; } @end Cynthiune-1.0.0/Bundles/VorbisTags/GNUmakefile000644 001751 000024 00000003231 11751032255 021670 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=VorbisTags BUNDLE_NAME=VorbisTags BUNDLE_EXTENSION=.tags BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune VorbisTags_PRINCIPAL_CLASS=VorbisTags # # Additional libraries # VorbisTags_LIBRARIES_DEPEND_UPON += # # Resource files # VorbisTags_RESOURCE_FILES= # # Header files # VorbisTags_HEADERS= \ VorbisTags.h \ vcedit.h # # Class files # VorbisTags_OBJC_FILES= \ VorbisTags.m # # C files # VorbisTags_C_FILES= \ vcedit.c # # C++ files # VorbisTags_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/VorbisTags/GNUmakefile.preamble000644 001751 000024 00000001747 11751032255 023470 0ustar00multixstaff000000 000000 # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. VORBIS_LIBS := -lvorbisfile -lvorbis -logg ifeq (mingw32, $(GNUSTEP_TARGET_OS)) BUNDLE_LIBS += -L../../Frameworks/Cynthiune/obj endif BUNDLE_LIBS += $(VORBIS_LIBS) ADDITIONAL_OBJCFLAGS += -Wall Cynthiune-1.0.0/Bundles/VorbisTags/VorbisTags.h000644 001751 000024 00000002107 11733546707 022067 0ustar00multixstaff000000 000000 /* VorbisTags.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef VorbisTags_H #define VorbisTags_H #import #import @interface VorbisTags : NSObject { } @end #endif /* VorbisTag_H */ Cynthiune-1.0.0/Bundles/VorbisTags/VorbisTags.m000644 001751 000024 00000015226 12112243635 022064 0ustar00multixstaff000000 000000 /* VorbisTags.m - this file is part of Cynthiune * * Copyright (C) 2005, 2006 Wolfgang Sourdeau * * Portions Copyright (C) 2002 Yen-Ju * Copyright (C) ???? Rob Burns * Those portions were taken from the Poe vorbis editor's OGGEdit class * and adapted to fit the TagsWriting Cynthiune formal protocol. * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import "VorbisTags.h" #import "vcedit.h" #define LOCALIZED(X) _b ([VorbisTags class], X) static size_t oggReadFunc (void *ptr, size_t size, size_t nmemb, void *datasource) { NSFileHandle *fileHandle; NSData *data; size_t length; fileHandle = datasource; data = [fileHandle readDataOfLength: size * nmemb]; length = [data length]; memcpy (ptr, [data bytes], length); return length; } static int oggSeekFunc (void *datasource, ogg_int64_t offset, int whence) { NSFileHandle *fileHandle; unsigned long long realOffset; fileHandle = datasource; switch (whence) { case SEEK_SET: realOffset = offset; break; case SEEK_CUR: realOffset = [fileHandle offsetInFile] + offset; break; case SEEK_END: realOffset = [fileHandle seekToEndOfFile] + offset; break; default: NSLog (@"unrecognize value for whence: %d", whence); realOffset = [fileHandle offsetInFile]; } [fileHandle seekToFileOffset: realOffset]; return 0; } static int oggCloseFunc (void *datasource) { NSFileHandle *fileHandle; fileHandle = datasource; [fileHandle closeFile]; return 0; } static long oggTellFunc (void *datasource) { NSFileHandle *fileHandle; fileHandle = datasource; return [fileHandle offsetInFile]; } static ov_callbacks oggCallbacks = { oggReadFunc, oggSeekFunc, oggCloseFunc, oggTellFunc }; @implementation VorbisTags : NSObject + (NSString *) bundleDescription { return @"A bundle to read/set the tags of Vorbis files"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (void) _setString: (NSString **) string toComment: (char*) comment fromOvFile: (OggVorbis_File *) ovFile { const char *cComment; vorbis_comment *vComment; char **cPointer; BOOL found = NO; int len; vComment = ov_comment (ovFile, -1); if (vComment) { cPointer = vComment->user_comments; cComment = *cPointer; len = strlen (comment); while (cComment && !found) { if (strncasecmp (comment, cComment, len) == 0) { cComment += len + 1; found = YES; } else { cPointer++; cComment = *cPointer; } } if (cComment) SET (*string, [NSString stringWithUTF8String: cComment]); } } + (BOOL) readTitle: (NSString **) title artist: (NSString **) artist album: (NSString **) album trackNumber: (NSString **) trackNumber genre: (NSString **) genre year: (NSString **) year ofFilename: (NSString *) filename { NSFileHandle *fileHandle; OggVorbis_File *ovFile; BOOL result; result = NO; fileHandle = [NSFileHandle fileHandleForReadingAtPath: filename]; if (fileHandle) { ovFile = calloc (sizeof (OggVorbis_File), 1); ov_open_callbacks (fileHandle, ovFile, NULL, 0L, oggCallbacks); [self _setString: title toComment: "title" fromOvFile: ovFile]; [self _setString: artist toComment: "artist" fromOvFile: ovFile]; [self _setString: album toComment: "album" fromOvFile: ovFile]; [self _setString: trackNumber toComment: "tracknumber" fromOvFile: ovFile]; [self _setString: genre toComment: "genre" fromOvFile: ovFile]; [self _setString: year toComment: "date" fromOvFile: ovFile]; ov_clear (ovFile); } return result; } + (BOOL) setTitle: (NSString *) title artist: (NSString *) artist album: (NSString *) album trackNumber: (NSString *) trackNumber genre: (NSString *) genre year: (NSString *) year ofFilename: (NSString *) filename; { FILE *in, *out; vcedit_state *state; vorbis_comment *vc; NSString *newfile; BOOL result; NSFileManager *fm; fm = [NSFileManager defaultManager]; result = NO; in = fopen ([filename cString], "rb"); if (in) { fseek (in, 0L, SEEK_SET); state = vcedit_new_state (); if (vcedit_open (state, in) >= 0) { vc = vcedit_comments(state); vorbis_comment_clear (vc); vorbis_comment_init (vc); if (title) vorbis_comment_add_tag (vc, "title", (char *) [title UTF8String]); if (artist) vorbis_comment_add_tag (vc, "artist", (char *) [artist UTF8String]); if (album) vorbis_comment_add_tag (vc, "album", (char *) [album UTF8String]); if (trackNumber) vorbis_comment_add_tag (vc, "tracknumber", (char *) [trackNumber UTF8String]); if (genre) vorbis_comment_add_tag (vc, "genre", (char *) [genre UTF8String]); if (year) vorbis_comment_add_tag (vc, "date", (char *) [year UTF8String]); newfile = [filename stringByAppendingString: @"_temp"]; out = fopen([newfile cString], "wb+"); if (out) { if (vcedit_write (state, out) >= 0) { fclose (out); [fm removeFileAtPath: filename handler: nil]; [fm movePath: newfile toPath: filename handler: nil]; result = YES; } } vorbis_comment_clear (vc); } vcedit_clear (state); fclose(in); } return result; } @end Cynthiune-1.0.0/Bundles/VorbisTags/vcedit.c000644 001751 000024 00000024700 11733546707 021260 0ustar00multixstaff000000 000000 // slightly modified by Yen-Ju Chen /* This program is licensed under the GNU Library General Public License, version 2, * a copy of which is included with this program (LICENCE.LGPL). * * (c) 2000-2001 Michael Smith * * * Comment editing backend, suitable for use by nice frontend interfaces. * * last modified: $Id: vcedit.c,v 1.1.1.1 2012/03/25 07:48:23 buzzdee Exp $ */ #include #include "vcedit.h" #define CHUNKSIZE 4096 vcedit_state *vcedit_new_state(void) { vcedit_state *state = malloc(sizeof(vcedit_state)); memset(state, 0, sizeof(vcedit_state)); return state; } vorbis_comment *vcedit_comments(vcedit_state *state) { return state->vc; } static void vcedit_clear_internals(vcedit_state *state) { if(state->vc) { vorbis_comment_clear(state->vc); free(state->vc); } if(state->os) { ogg_stream_clear(state->os); free(state->os); } if(state->oy) { ogg_sync_clear(state->oy); free(state->oy); } if(state->vendor) free(state->vendor); if(state->mainbuf) free(state->mainbuf); if(state->bookbuf) free(state->bookbuf); if(state->vi) { vorbis_info_clear(state->vi); free(state->vi); } memset(state, 0, sizeof(*state)); } void vcedit_clear(vcedit_state *state) { if(state) { vcedit_clear_internals(state); free(state); } } /* Next two functions pulled straight from libvorbis, apart from one change * - we don't want to overwrite the vendor string. */ static void _v_writestring(oggpack_buffer *o,char *s, int len) { while(len--) { oggpack_write(o,*s++,8); } } static int _commentheader_out(vorbis_comment *vc, char *vendor, ogg_packet *op) { oggpack_buffer opb; oggpack_writeinit(&opb); /* preamble */ oggpack_write(&opb,0x03,8); _v_writestring(&opb,"vorbis", 6); /* vendor */ oggpack_write(&opb,strlen(vendor),32); _v_writestring(&opb,vendor, strlen(vendor)); /* comments */ oggpack_write(&opb,vc->comments,32); if(vc->comments){ int i; for(i=0;icomments;i++){ if(vc->user_comments[i]){ oggpack_write(&opb,vc->comment_lengths[i],32); _v_writestring(&opb,vc->user_comments[i], vc->comment_lengths[i]); }else{ oggpack_write(&opb,0,32); } } } oggpack_write(&opb,1,1); op->packet = _ogg_malloc(oggpack_bytes(&opb)); memcpy(op->packet, opb.buffer, oggpack_bytes(&opb)); op->bytes=oggpack_bytes(&opb); op->b_o_s=0; op->e_o_s=0; op->granulepos=0; oggpack_writeclear(&opb); return 0; } static int _blocksize(vcedit_state *s, ogg_packet *p) { int this = vorbis_packet_blocksize(s->vi, p); int ret = (this + s->prevW)/4; if(!s->prevW) { s->prevW = this; return 0; } s->prevW = this; return ret; } static int _fetch_next_packet(vcedit_state *s, ogg_packet *p, ogg_page *page) { int result; char *buffer; int bytes; result = ogg_stream_packetout(s->os, p); if(result > 0) return 1; else { if(s->eosin) return 0; while(ogg_sync_pageout(s->oy, page) <= 0) { buffer = ogg_sync_buffer(s->oy, CHUNKSIZE); bytes = s->read(buffer,1, CHUNKSIZE, s->in); ogg_sync_wrote(s->oy, bytes); if(bytes == 0) return 0; } if(ogg_page_eos(page)) s->eosin = 1; else if(ogg_page_serialno(page) != s->serial) { s->eosin = 1; s->extrapage = 1; return 0; } ogg_stream_pagein(s->os, page); return _fetch_next_packet(s, p, page); } } int vcedit_open(vcedit_state *state, FILE *in) { return vcedit_open_callbacks(state, (void *)in, (vcedit_read_func)fread, (vcedit_write_func)fwrite); } int vcedit_open_callbacks(vcedit_state *state, void *in, vcedit_read_func read_func, vcedit_write_func write_func) { char *buffer; int bytes,i; ogg_packet *header; ogg_packet header_main; ogg_packet header_comments; ogg_packet header_codebooks; ogg_page og; state->in = in; state->read = read_func; state->write = write_func; state->oy = malloc(sizeof(ogg_sync_state)); ogg_sync_init(state->oy); buffer = ogg_sync_buffer(state->oy, CHUNKSIZE); bytes = state->read(buffer, 1, CHUNKSIZE, state->in); ogg_sync_wrote(state->oy, bytes); if(ogg_sync_pageout(state->oy, &og) != 1) { if(bytesserial = ogg_page_serialno(&og); state->os = malloc(sizeof(ogg_stream_state)); ogg_stream_init(state->os, state->serial); state->vi = malloc(sizeof(vorbis_info)); vorbis_info_init(state->vi); state->vc = malloc(sizeof(vorbis_comment)); vorbis_comment_init(state->vc); if(ogg_stream_pagein(state->os, &og) < 0) { printf("Error reading first page of Ogg bitstream."); goto err; } if(ogg_stream_packetout(state->os, &header_main) != 1) { printf("Error reading initial header packet."); goto err; } if(vorbis_synthesis_headerin(state->vi, state->vc, &header_main) < 0) { printf("OGG bitstream does not contain vorbis data."); goto err; } state->mainlen = header_main.bytes; state->mainbuf = malloc(state->mainlen); memcpy(state->mainbuf, header_main.packet, header_main.bytes); i = 0; header = &header_comments; while(i<2) { while(i<2) { int result = ogg_sync_pageout(state->oy, &og); if(result == 0) break; /* Too little data so far */ else if(result == 1) { ogg_stream_pagein(state->os, &og); while(i<2) { result = ogg_stream_packetout(state->os, header); if(result == 0) break; if(result == -1) { printf("Corrupt secondary header."); goto err; } vorbis_synthesis_headerin(state->vi, state->vc, header); if(i==1) { state->booklen = header->bytes; state->bookbuf = malloc(state->booklen); memcpy(state->bookbuf, header->packet, header->bytes); } i++; header = &header_codebooks; } } } buffer = ogg_sync_buffer(state->oy, CHUNKSIZE); bytes = state->read(buffer, 1, CHUNKSIZE, state->in); if(bytes == 0 && i < 2) { printf("EOF before end of vorbis headers."); goto err; } ogg_sync_wrote(state->oy, bytes); } /* Copy the vendor tag */ state->vendor = malloc(strlen(state->vc->vendor) +1); strcpy(state->vendor, state->vc->vendor); /* Headers are done! */ return 0; err: vcedit_clear_internals(state); return -1; } int vcedit_write(vcedit_state *state, void *out) { ogg_stream_state streamout; ogg_packet header_main; ogg_packet header_comments; ogg_packet header_codebooks; ogg_page ogout, ogin; ogg_packet op; ogg_int64_t granpos = 0; int result; char *buffer; int bytes; int needflush=0, needout=0; state->eosin = 0; state->extrapage = 0; header_main.bytes = state->mainlen; header_main.packet = state->mainbuf; header_main.b_o_s = 1; header_main.e_o_s = 0; header_main.granulepos = 0; header_codebooks.bytes = state->booklen; header_codebooks.packet = state->bookbuf; header_codebooks.b_o_s = 0; header_codebooks.e_o_s = 0; header_codebooks.granulepos = 0; ogg_stream_init(&streamout, state->serial); _commentheader_out(state->vc, state->vendor, &header_comments); ogg_stream_packetin(&streamout, &header_main); ogg_stream_packetin(&streamout, &header_comments); ogg_stream_packetin(&streamout, &header_codebooks); while((result = ogg_stream_flush(&streamout, &ogout))) { if(state->write(ogout.header,1,ogout.header_len, out) != (size_t) ogout.header_len) goto cleanup; if(state->write(ogout.body,1,ogout.body_len, out) != (size_t) ogout.body_len) goto cleanup; } while(_fetch_next_packet(state, &op, &ogin)) { int size; size = _blocksize(state, &op); granpos += size; if(needflush) { if(ogg_stream_flush(&streamout, &ogout)) { if(state->write(ogout.header,1,ogout.header_len, out) != (size_t) ogout.header_len) goto cleanup; if(state->write(ogout.body,1,ogout.body_len, out) != (size_t) ogout.body_len) goto cleanup; } } else if(needout) { if(ogg_stream_pageout(&streamout, &ogout)) { if(state->write(ogout.header,1,ogout.header_len, out) != (size_t) ogout.header_len) goto cleanup; if(state->write(ogout.body,1,ogout.body_len, out) != (size_t) ogout.body_len) goto cleanup; } } needflush=needout=0; if(op.granulepos == -1) { op.granulepos = granpos; ogg_stream_packetin(&streamout, &op); } else /* granulepos is set, validly. Use it, and force a flush to account for shortened blocks (vcut) when appropriate */ { if(granpos > op.granulepos) { granpos = op.granulepos; ogg_stream_packetin(&streamout, &op); needflush=1; } else { ogg_stream_packetin(&streamout, &op); needout=1; } } } streamout.e_o_s = 1; while(ogg_stream_flush(&streamout, &ogout)) { if(state->write(ogout.header,1,ogout.header_len, out) != (size_t) ogout.header_len) goto cleanup; if(state->write(ogout.body,1,ogout.body_len, out) != (size_t) ogout.body_len) goto cleanup; } if (state->extrapage) { if(state->write(ogin.header,1,ogin.header_len, out) != (size_t) ogin.header_len) goto cleanup; if (state->write(ogin.body,1,ogin.body_len, out) != (size_t) ogin.body_len) goto cleanup; } state->eosin=0; /* clear it, because not all paths to here do */ while(!state->eosin) /* We reached eos, not eof */ { /* We copy the rest of the stream (other logical streams) * through, a page at a time. */ while(1) { result = ogg_sync_pageout(state->oy, &ogout); if(result==0) break; if(result<0) printf("Corrupt or missing data, continuing..."); else { /* Don't bother going through the rest, we can just * write the page out now */ if(state->write(ogout.header,1,ogout.header_len, out) != (size_t) ogout.header_len) { fprintf(stderr, "Bumming out\n"); goto cleanup; } if(state->write(ogout.body,1,ogout.body_len, out) != (size_t) ogout.body_len) { fprintf(stderr, "Bumming out 2\n"); goto cleanup; } } } buffer = ogg_sync_buffer(state->oy, CHUNKSIZE); bytes = state->read(buffer,1, CHUNKSIZE, state->in); ogg_sync_wrote(state->oy, bytes); if(bytes == 0) { state->eosin = 1; break; } } cleanup: ogg_stream_clear(&streamout); ogg_packet_clear(&header_comments); free(state->mainbuf); free(state->bookbuf); state->mainbuf = state->bookbuf = NULL; if(!state->eosin) { printf("Error writing stream to output. Output stream may be corrupted or truncated."); return -1; } return 0; } Cynthiune-1.0.0/Bundles/VorbisTags/vcedit.h000644 001751 000024 00000002743 11733546707 021270 0ustar00multixstaff000000 000000 // Modified by Yen-Ju Chen /* This program is licensed under the GNU Library General Public License, version 2, * a copy of which is included with this program (with filename LICENSE.LGPL). * * (c) 2000-2001 Michael Smith * * VCEdit header. * * last modified: $ID:$ */ #ifndef __VCEDIT_H #define __VCEDIT_H #ifdef __cplusplus extern "C" { #endif #include #include #include #include typedef size_t (*vcedit_read_func)(void *, size_t, size_t, void *); typedef size_t (*vcedit_write_func)(const void *, size_t, size_t, void *); typedef struct { ogg_sync_state *oy; ogg_stream_state *os; vorbis_comment *vc; vorbis_info *vi; vcedit_read_func read; vcedit_write_func write; void *in; long serial; unsigned char *mainbuf; unsigned char *bookbuf; int mainlen; int booklen; char *lasterror; char *vendor; int prevW; int extrapage; int eosin; } vcedit_state; extern vcedit_state * vcedit_new_state(void); extern void vcedit_clear(vcedit_state *state); extern vorbis_comment * vcedit_comments(vcedit_state *state); extern int vcedit_open(vcedit_state *state, FILE *in); extern int vcedit_open_callbacks(vcedit_state *state, void *in, vcedit_read_func read_func, vcedit_write_func write_func); extern int vcedit_write(vcedit_state *state, void *out); extern char * vcedit_error(vcedit_state *state); #ifdef __cplusplus } #endif #endif /* __VCEDIT_H */ Cynthiune-1.0.0/Bundles/Timidity/GNUmakefile000644 001751 000024 00000003157 11751032255 021410 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=Timidity BUNDLE_NAME=Timidity BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune Timidity_PRINCIPAL_CLASS=Timidity # # Additional libraries # Timidity_LIBRARIES_DEPEND_UPON += # # Resource files # Timidity_RESOURCE_FILES= # # Header files # Timidity_HEADERS= \ Timidity.h # # Class files # Timidity_OBJC_FILES= \ Timidity.m # # C files # Timidity_C_FILES= # # C++ files # Timidity_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/Timidity/GNUmakefile.preamble000644 001751 000024 00000001773 11751032255 023200 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # ADDITIONAL_LDFLAGS += ifeq (mingw32, $(GNUSTEP_TARGET_OS)) BUNDLE_LIBS += -L../../Frameworks/Cynthiune/obj endif ADDITIONAL_OBJCFLAGS += -Wall Cynthiune-1.0.0/Bundles/Timidity/Timidity.h000644 001751 000024 00000002122 11733546707 021306 0ustar00multixstaff000000 000000 /* Timidity.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Timidity_H #define Timidity_H @interface Timidity : NSObject { NSTask *tiTask; NSFileHandle *in; NSFileHandle *err; NSString *title; unsigned int duration; } @end #endif /* Timidity_H */ Cynthiune-1.0.0/Bundles/Timidity/Timidity.m000644 001751 000024 00000012035 11754426600 021307 0ustar00multixstaff000000 000000 /* Timidity.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import "Timidity.h" #define LOCALIZED(X) _b ([Timidity class], X) #define timidity "timidity" #define rate 22050 @implementation Timidity : NSObject - (id) init { if ((self = [super init])) { tiTask = nil; in = nil; err = nil; title = nil; duration = 0; } return self; } + (NSString *) bundleDescription { return @"Wrapper plug-in for the Timidity midi reader"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return nil; } - (void) _createTask: (NSString *) fileName { NSString *timidityPath, *freqString; tiTask = [NSTask new]; [tiTask autorelease]; freqString = [NSString stringWithFormat: @"-s%d", rate]; timidityPath = [NSString stringWithCString: timidity]; [tiTask setLaunchPath: timidityPath]; [tiTask setArguments: [NSArray arrayWithObjects: freqString, @"-OrSs1", @"-idv", @"-o", @"-", fileName, nil]]; } - (BOOL) _parseData: (NSData *) data { BOOL result; NSString *content, *durationString; NSRange range; NSArray *elements; result = NO; content = [[NSString alloc] initWithData: data encoding: NSNonLossyASCIIStringEncoding]; range = [content rangeOfString: @"samples, time "]; if (range.length) { durationString = [content substringFromIndex: NSMaxRange (range)]; elements = [durationString componentsSeparatedByString: @":"]; if ([elements count]) duration = ([[elements objectAtIndex: 0] intValue] * 60 + [[elements objectAtIndex: 1] intValue]); result = YES; } [content release]; return result; } - (void) _parseStdErr { NSData *data; BOOL done; done = NO; while (!done) { data = [err availableData]; done = [self _parseData: data]; } } - (BOOL) streamOpen: (NSString *) fileName { BOOL result; NSPipe *tiPipe, *stderrPipe; [self _createTask: fileName]; tiPipe = [NSPipe pipe]; [tiTask setStandardOutput: tiPipe]; stderrPipe = [NSPipe pipe]; [tiTask setStandardError: stderrPipe]; in = [tiPipe fileHandleForReading]; err = [stderrPipe fileHandleForReading]; NS_DURING { [tiTask launch]; } NS_HANDLER { NSLog(@"Error while lauching task '%@'", [tiTask launchPath]); } NS_ENDHANDLER if ([tiTask isRunning]) { [tiTask retain]; title = makeTitleFromFilename (fileName); [title retain]; [self _parseStdErr]; result = YES; } else { [in closeFile]; [err closeFile]; result = NO; } return result; } + (BOOL) canTestFileHeaders { return NO; } + (BOOL) streamTestOpen: (NSString *) fileName { return NO; } + (NSString *) errorText: (int) error { return @""; } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { NSData *bytes; int size; bytes = [in readDataOfLength: DEFAULT_BUFFER_SIZE]; if (bytes) { size = [bytes length]; [bytes getBytes: buffer length: (unsigned int) size]; } else size = 0; return size; } - (int) lastError { return 0; } - (unsigned int) readChannels { return 2; } - (unsigned long) readRate { return rate; } - (Endianness) endianness { return NativeEndian; } - (unsigned int) readDuration { return duration; } - (NSString *) readTitle { return title; } - (NSString *) readGenre { return @""; } - (NSString *) readArtist { return @""; } - (NSString *) readAlbum { return @""; } - (NSString *) readYear { return @""; } - (NSString *) readTrackNumber { return @""; } - (void) streamClose { [err closeFile]; [in closeFile]; if (title) [title release]; if ([tiTask isRunning]) [tiTask terminate]; [tiTask release]; } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"mid", @"rmi", nil]; } - (BOOL) isSeekable { return NO; } - (void) seek: (unsigned int) aPos { } @end Cynthiune-1.0.0/Bundles/TagsSkeleton/GNUmakefile000644 001751 000024 00000003126 11733555310 022215 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2006 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=$TAGS$ BUNDLE_NAME=$TAGS$ BUNDLE_EXTENSION=.tags BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune $TAGS$_PRINCIPAL_CLASS=$TAGS$ # # Additional libraries # $TAGS$_LIBRARIES_DEPEND_UPON += # # Resource files # $TAGS$_RESOURCE_FILES= # # Header files # $TAGS$_HEADERS= \ $TAGS$.h # # Class files # $TAGS$_OBJC_FILES= \ $TAGS$.m # # C files # $TAGS$_C_FILES= # # C++ files # $TAGS$_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/TagsSkeleton/GNUmakefile.preamble000644 001751 000024 00000001653 11733555310 024006 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2006 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # ADDITIONAL_LDFLAGS += ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/TagsSkeleton/Skeleton.h000644 001751 000024 00000002064 11733546705 022110 0ustar00multixstaff000000 000000 /* $TAGS$.h - this file is part of Cynthiune * * Copyright (C) 2006 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef $TAGS$_H #define $TAGS$_H #import #import @interface $TAGS$ : NSObject { } @end #endif /* $TAGS$_H */ Cynthiune-1.0.0/Bundles/TagsSkeleton/Skeleton.m000644 001751 000024 00000003475 11733546705 022124 0ustar00multixstaff000000 000000 /* $TAGS$.m - this file is part of Cynthiune * * Copyright (C) 2006 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import "$TAGS$.h" #define LOCALIZED(X) _b ([$TAGS$ class], X) @implementation $TAGS$ : NSObject + (NSString *) bundleDescription { return @"A bundle to read/set the tags of audio files"; } + (NSArray *) bundleCopyrightStrings { return @"Copyright (C) 2005 Joe Taghacker"; } /* TagsReading protocol */ + (BOOL) readTitle: (NSString **) title artist: (NSString **) artist album: (NSString **) album trackNumber: (NSString **) trackNumber genre: (NSString **) genre year: (NSString **) year ofFilename: (NSString *) filename { return NO; } /* TagsWriting protocol */ + (BOOL) setTitle: (NSString *) title artist: (NSString *) artist album: (NSString *) album trackNumber: (NSString *) trackNumber genre: (NSString *) genre year: (NSString *) year ofFilename: (NSString *) filename { return NO; } @end Cynthiune-1.0.0/Bundles/Taglib/GNUmakefile000644 001751 000024 00000003125 11751032255 021011 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=Taglib BUNDLE_NAME=Taglib BUNDLE_EXTENSION=.tags BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune Taglib_PRINCIPAL_CLASS=Taglib # # Additional libraries # Taglib_LIBRARIES_DEPEND_UPON += # # Resource files # Taglib_RESOURCE_FILES= # # Header files # Taglib_HEADERS= \ Taglib.h # # Class files # Taglib_OBJC_FILES= \ Taglib.m # # C files # Taglib_C_FILES= # # C++ files # Taglib_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/Taglib/GNUmakefile.preamble000644 001751 000024 00000002412 11751032255 022575 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ifeq (mingw32, $(GNUSTEP_TARGET_OS)) TAGLIB_CFLAGS = -I/MingW/include/taglib TAGLIB_LIBS = -ltag_c -ltag -lz -lstdc++ BUNDLE_LIBS += $(TAGLIB_LIBS) -L../../Frameworks/Cynthiune/obj else TAGLIB_CFLAGS = $(shell taglib-config --cflags) TAGLIB_LIBS = $(shell pkg-config taglib_c --libs) BUNDLE_LIBS += $(TAGLIB_LIBS) endif ADDITIONAL_INCLUDE_DIRS += -I../.. $(TAGLIB_CFLAGS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/Taglib/Taglib.h000644 001751 000024 00000002065 11733546704 020325 0ustar00multixstaff000000 000000 /* Taglib.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Taglib_H #define Taglib_H #import #import @interface Taglib : NSObject { } @end #endif /* Taglib_H */ Cynthiune-1.0.0/Bundles/Taglib/Taglib.m000644 001751 000024 00000010173 11733546705 020332 0ustar00multixstaff000000 000000 /* Taglib.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #define BOOL BOOL /* tag_c.h pollution */ #import #import "Taglib.h" #define LOCALIZED(X) _b ([Taglib class], X) #define makeTag(T) [[NSString stringWithUTF8String: T] stringByTrimmingSpaces] @implementation Taglib : NSObject + (NSString *) bundleDescription { return @"A bundle to read/set the tags of audio files"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (BOOL) readTitle: (NSString **) title artist: (NSString **) artist album: (NSString **) album trackNumber: (NSString **) trackNumber genre: (NSString **) genre year: (NSString **) year ofFilename: (NSString *) filename { TagLib_File *file; TagLib_Tag *tag; unsigned int number; file = taglib_file_new ([filename cString]); if (file) { tag = taglib_file_tag (file); if (tag) { SET (*title, makeTag (taglib_tag_title (tag))); SET (*artist, makeTag (taglib_tag_artist (tag))); SET (*album, makeTag (taglib_tag_album (tag))); SET (*genre, makeTag (taglib_tag_genre (tag))); number = taglib_tag_track (tag); if (number) { SET (*trackNumber, ([NSString stringWithFormat: @"%d", number])); } number = taglib_tag_year (tag); if (number) { SET (*year, ([NSString stringWithFormat: @"%d", number])); } taglib_tag_free_strings(); } taglib_file_free (file); } return YES; } + (BOOL) setTitle: (NSString *) title artist: (NSString *) artist album: (NSString *) album trackNumber: (NSString *) trackNumber genre: (NSString *) genre year: (NSString *) year ofFilename: (NSString *) filename { TagLib_File *file; TagLib_Tag *tag; unsigned int number; file = taglib_file_new ([filename cString]); if (file) { tag = taglib_file_tag (file); if (tag) { if (title) taglib_tag_set_title (tag, [title UTF8String]); if (artist) taglib_tag_set_artist (tag, [artist UTF8String]); if (album) taglib_tag_set_album (tag, [album UTF8String]); if (genre) taglib_tag_set_genre (tag, [genre UTF8String]); if (trackNumber) { if ([trackNumber length]) { number = [trackNumber intValue]; if (number) taglib_tag_set_track (tag, number); } else taglib_tag_set_track (tag, 0); } if (year) { if ([year length]) { number = [year intValue]; if (number) taglib_tag_set_year (tag, number); } else taglib_tag_set_year (tag, 0); } taglib_file_save (file); } taglib_file_free (file); } return YES; } @end Cynthiune-1.0.0/Bundles/Sndio/GNUmakefile000644 001751 000024 00000003021 11733566151 020665 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=Sndio BUNDLE_NAME=Sndio BUNDLE_EXTENSION=.output BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune Sndio_PRINCIPAL_CLASS=Sndio # # Additional libraries # Sndio_LIBRARIES_DEPEND_UPON += # # Resource files # #sndio_RESOURCE_FILES= \ # # Header files # Sndio_HEADERS= \ Sndio.h # # Class files # Sndio_OBJC_FILES= \ Sndio.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/Sndio/GNUmakefile.preamble000644 001751 000024 00000001660 11733566151 022462 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_OBJCFLAGS += -Wall -Wno-import ADDITIONAL_LDFLAGS += -lsndio Cynthiune-1.0.0/Bundles/Sndio/Sndio.h000644 001751 000024 00000002505 11763436013 020042 0ustar00multixstaff000000 000000 /* Sndio.h - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Sndio_H #define Sndio_H #import #import #include @class NSFileHandle; @protocol CynthiuneBundle; @interface Sndio : NSObject { id parentPlayer; BOOL stopRequested; struct sio_hdl *hdl; struct sio_par par; unsigned int channels; unsigned long rate; Endianness endianness; unsigned char buffer[DEFAULT_BUFFER_SIZE]; NSLock *devlock; } @end #endif /* Sndio_H */ Cynthiune-1.0.0/Bundles/Sndio/Sndio.m000644 001751 000024 00000007532 12014507041 020042 0ustar00multixstaff000000 000000 /* Sndio.m - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #import #import #import #import #import #import #import #import #import #import #import #import "Sndio.h" #define LOCALIZED(X) _b ([Sndio class], X) #define DspError(X) \ NSLog (@"An error occured when sending '%s' ioctl to DSP:%s", \ X, strerror(errno)) @implementation Sndio : NSObject + (NSString *) bundleDescription { return @"Output plug-in for the OpenBSD sndio driver"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2012 Sebastian Reitenbach", nil]; } + (BOOL) isThreaded { return YES; } - (id) init { if ((self = [super init])) { parentPlayer = nil; hdl = NULL; devlock = [NSLock new]; stopRequested = NO; } return self; } /* FIXME : this is never called */ - (void)dealloc { [devlock release]; [super dealloc]; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e; { BOOL result = NO; channels = numberOfChannels; rate = sampleRate; endianness = e; [devlock lock]; if (hdl) { sio_close(hdl); hdl = NULL; } hdl = sio_open(NULL, SIO_PLAY, 0); sio_initpar(&par); par.pchan = numberOfChannels; par.rate = sampleRate; if (e == 0) { if (NSHostByteOrder() == NS_LittleEndian) { par.le = 1; } else { par.le = 2; } } if (e == 1) par.le = 1; if (e == 2) par.le = 0; if (sio_setpar(hdl, &par)) { result = YES; } sio_start(hdl); [devlock unlock]; return result; } - (BOOL) openDevice { BOOL result = NO; result = [self prepareDeviceWithChannels: channels andRate: rate withEndianness: endianness]; return result; } - (void) closeDevice { while (stopRequested) [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.01]]; [devlock lock]; sio_close(hdl); [devlock unlock]; hdl = NULL; } - (void) threadLoop { NSAutoreleasePool *pool; int bufferSize; pool = [NSAutoreleasePool new]; while (!stopRequested) { bufferSize = [parentPlayer readNextChunk: buffer withSize: DEFAULT_BUFFER_SIZE]; [devlock lock]; if (bufferSize > 0 && hdl) sio_write(hdl, buffer, bufferSize); [devlock unlock]; if ([pool autoreleaseCount] > 50) [pool emptyPool]; } stopRequested = NO; [pool release]; } - (BOOL) startThread { [NSThread detachNewThreadSelector: @selector (threadLoop) toTarget: self withObject: nil]; return YES; } - (void) stopThread { stopRequested = YES; } @end Cynthiune-1.0.0/Bundles/OutputSkeleton/GNUmakefile000644 001751 000024 00000003141 11733555310 022614 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=$OUTPUT$ BUNDLE_NAME=$OUTPUT$ BUNDLE_EXTENSION=.output BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune $OUTPUT$_PRINCIPAL_CLASS=$OUTPUT$ $OUTPUT$_LANGUAGES= $OUTPUT$_LOCALIZED_RESOURCE_FILES= # # Additional libraries # $OUTPUT$_LIBRARIES_DEPEND_UPON += # # Resource files # $OUTPUT$_RESOURCE_FILES= # # Header files # $OUTPUT$_HEADERS= \ $OUTPUT$.h # # Class files # $OUTPUT$_OBJC_FILES= \ $OUTPUT$.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/OutputSkeleton/GNUmakefile.preamble000644 001751 000024 00000001622 11733555310 024404 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/OutputSkeleton/Skeleton.h000644 001751 000024 00000001757 11733546703 022520 0ustar00multixstaff000000 000000 /* $OUTPUT$.h - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef $OUTPUT$_H #define $OUTPUT$_H @interface $OUTPUT$ : NSObject { } @end #endif /* $OUTPUT$_H */ Cynthiune-1.0.0/Bundles/OutputSkeleton/Skeleton.m000644 001751 000024 00000003472 11733546703 022521 0ustar00multixstaff000000 000000 /* $OUTPUT$.m - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #import #import #import #import #import "$OUTPUT$.h" #define LOCALIZED(X) _b ([$OUTPUT$ class], X) @implementation $OUTPUT$ : NSObject + (NSString *) bundleDescription { return @"Output plug-in for the Wawa sound daemon"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wawa Ragga", nil]; } + (BOOL) isThreaded { return NO; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (id) init { if ((self = [super init])) { } return self; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate { return NO; } - (BOOL) openDevice { return NO; } - (void) closeDevice { } - (void) playChunk: (NSData *) chunk { } @end Cynthiune-1.0.0/Bundles/Ogg/GNUmakefile000644 001751 000024 00000002773 11733555310 020335 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=Ogg BUNDLE_NAME=Ogg BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune Ogg_PRINCIPAL_CLASS=Ogg # # Additional libraries # Ogg_LIBRARIES_DEPEND_UPON += # # Resource files # Ogg_RESOURCE_FILES= # # Header files # Ogg_HEADERS= \ Ogg.h # # Class files # Ogg_OBJC_FILES= \ Ogg.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/Ogg/GNUmakefile.preamble000644 001751 000024 00000002063 11751032255 022111 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. VORBIS_LIBS := -lvorbisfile -lvorbis -logg ifeq (mingw32, $(GNUSTEP_TARGET_OS)) ADDITIONAL_GUI_LIBS += $(VORBIS_LIBS) else BUNDLE_LIBS += $(VORBIS_LIBS) endif ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/Ogg/Ogg.h000644 001751 000024 00000002335 11773143064 017145 0ustar00multixstaff000000 000000 /* Ogg.h - this file is part of Cynthiune * * Copyright (C) 2002, 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Ogg_H #define Ogg_H #include @protocol CynthiuneBundle; @protocol Format; @interface Ogg : NSObject { int lastError; int bitStream; /* internal use */ OggVorbis_File *_ov_file; } + (NSString *) errorText: (int) error; /* - (NSString *) lastErrorText; */ /* - (int) lastError; */ @end #endif /* Ogg_H */ Cynthiune-1.0.0/Bundles/Ogg/Ogg.m000644 001751 000024 00000014377 11754426600 017162 0ustar00multixstaff000000 000000 /* Ogg.m - this file is part of Cynthiune * * Copyright (C) 2002, 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import "Ogg.h" #define LOCALIZED(X) _b ([Ogg class], X) static size_t oggReadFunc (void *ptr, size_t size, size_t nmemb, void *datasource) { NSFileHandle *fileHandle; NSData *data; size_t length; fileHandle = datasource; data = [fileHandle readDataOfLength: size * nmemb]; length = [data length]; memcpy (ptr, [data bytes], length); return length; } static int oggSeekFunc (void *datasource, ogg_int64_t offset, int whence) { NSFileHandle *fileHandle; unsigned long long realOffset; fileHandle = datasource; switch (whence) { case SEEK_SET: realOffset = offset; break; case SEEK_CUR: realOffset = [fileHandle offsetInFile] + offset; break; case SEEK_END: realOffset = [fileHandle seekToEndOfFile] + offset; break; default: NSLog (@"unrecognize value for whence: %d", whence); realOffset = [fileHandle offsetInFile]; } [fileHandle seekToFileOffset: realOffset]; return 0; } static int oggCloseFunc (void *datasource) { NSFileHandle *fileHandle; fileHandle = datasource; [fileHandle closeFile]; [fileHandle release]; return 0; } static long oggTellFunc (void *datasource) { NSFileHandle *fileHandle; fileHandle = datasource; return [fileHandle offsetInFile]; } static ov_callbacks oggCallbacks = { oggReadFunc, oggSeekFunc, oggCloseFunc, oggTellFunc }; @implementation Ogg : NSObject + (NSString *) bundleDescription { return @"Extension plug-in for the Ogg Vorbis audio format"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2002-2005 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return [NSArray arrayWithObjects: @"VorbisTags", @"Taglib", nil]; } - (BOOL) streamOpen: (NSString *) fileName { NSFileHandle *_fileHandle; _fileHandle = [NSFileHandle fileHandleForReadingAtPath: fileName]; bitStream = 0; if (_fileHandle) { _ov_file = calloc (sizeof (OggVorbis_File), 1); lastError = ov_open_callbacks (_fileHandle, _ov_file, NULL, 0L, oggCallbacks); if (lastError) [_fileHandle closeFile]; else [_fileHandle retain]; } else { NSLog (@"No native handle..."); lastError = OV_EREAD; } return (lastError == 0); } + (BOOL) canTestFileHeaders { return YES; } + (BOOL) streamTestOpen: (NSString *) fileName { NSFileHandle *_fileHandle; BOOL result = NO; int vorbisError; OggVorbis_File *_ov_test_file; _fileHandle = [NSFileHandle fileHandleForReadingAtPath: fileName]; if (_fileHandle) { _ov_test_file = calloc (sizeof (OggVorbis_File), 1); vorbisError = ov_open_callbacks (_fileHandle, _ov_test_file, NULL, 0L, oggCallbacks); if (vorbisError) { if (vorbisError != OV_ENOTVORBIS) NSLog (@"Ogg: streamTestOpen: %@", [self errorText: vorbisError]); [_fileHandle closeFile]; } else { result = YES; [_fileHandle retain]; ov_clear (_ov_test_file); } } return result; } + (NSString *) errorText: (int) error { char *cErrorMessage; switch (error) { case OV_EREAD: cErrorMessage = "A read from media returned an error"; break; case OV_ENOTVORBIS: cErrorMessage = "Bitstream is not Vorbis data"; break; case OV_EVERSION: cErrorMessage = "Vorbis version mismatch"; break; case OV_EBADHEADER: cErrorMessage = "Invalid Vorbis bitstream header"; break; case OV_EFAULT: cErrorMessage = "Internal logic fault"; break; case OV_ENOSEEK: cErrorMessage = "Bitstream is not seekable"; break; case OV_EINVAL: cErrorMessage = "Invalid argument value"; break; case OV_EBADLINK: cErrorMessage = "Invalid stream section supplied to libvorbisfile, or" " the requested link is corrupt"; break; case 0: cErrorMessage = "(No error)"; break; default: cErrorMessage = "(undefined error)"; } return [NSString stringWithUTF8String: cErrorMessage]; } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int bytes_read; if (_ov_file) { bytes_read = ov_read (_ov_file, (char *) buffer, bufferSize, 0, 2, 1, &bitStream); if (bytes_read < 0) lastError = bytes_read; } else { lastError = OV_EFAULT; bytes_read = -1; } return bytes_read; } - (int) lastError { return lastError; } - (unsigned int) readChannels { return (_ov_file->vi->channels); } - (unsigned long) readRate { return (_ov_file->vi->rate); } - (Endianness) endianness { return NativeEndian; } - (unsigned int) readDuration { return (ov_time_total (_ov_file, -1)); } - (void) streamClose { ov_clear (_ov_file); _ov_file = NULL; } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObject: @"ogg"]; } - (BOOL) isSeekable { return (BOOL) ov_seekable (_ov_file); } - (void) seek: (unsigned int) aPos { ogg_int64_t pcmPos; pcmPos = aPos * [self readChannels] * [self readRate] / 2; #ifdef __MACOSX__ ov_pcm_seek (_ov_file, pcmPos); #else ov_pcm_seek_lap (_ov_file, pcmPos); #endif } @end Cynthiune-1.0.0/Bundles/OSS/English.lproj/000755 001751 000024 00000000000 11742131624 020716 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/OSS/GNUmakefile000644 001751 000024 00000003177 11751032255 020262 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=OSS BUNDLE_NAME=OSS BUNDLE_EXTENSION=.output BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune OSS_PRINCIPAL_CLASS=OSS OSS_LANGUAGES=English French OSS_LOCALIZED_RESOURCE_FILES=Localizable.strings # # Additional libraries # OSS_LIBRARIES_DEPEND_UPON += # # Resource files # OSS_RESOURCE_FILES= \ OSSPreferences.gorm # # Header files # OSS_HEADERS= \ OSS.h \ OSSPreference.h # # Class files # OSS_OBJC_FILES= \ OSS.m \ OSSPreference.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/OSS/GNUmakefile.preamble000644 001751 000024 00000002243 11751562110 022037 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_OBJCFLAGS += -Wall ifeq ($(findstring openbsd, $(GNUSTEP_TARGET_OS)), openbsd) ADDITIONAL_LDFLAGS += -lossaudio else ifeq ($(findstring netbsd, $(GNUSTEP_TARGET_OS)), netbsd) ADDITIONAL_LDFLAGS += -lossaudio else ifeq (mingw32, $(GNUSTEP_TARGET_OS)) BUNDLE_LIBS += -L../../Frameworks/Cynthiune/obj endifCynthiune-1.0.0/Bundles/OSS/OSS.h000644 001751 000024 00000002514 11754426600 017023 0ustar00multixstaff000000 000000 /* OSS.h - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef OSS_H #define OSS_H #import #import #import @class NSFileHandle; @protocol CynthiuneBundle; @protocol Output; @interface OSS : NSObject { id parentPlayer; NSFileHandle *dsp; unsigned int channels; unsigned long rate; Endianness endianness; } @end #endif /* OSS_H */ Cynthiune-1.0.0/Bundles/OSS/OSS.m000644 001751 000024 00000007774 11754426600 017045 0ustar00multixstaff000000 000000 /* OSS.m - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #import #import #import #import #import #import #ifdef __OpenBSD__ #import #else #import #endif #import #import #import "OSS.h" #import "OSSPreference.h" #define LOCALIZED(X) _b ([OSS class], X) #define DspError(X) \ NSLog (@"An error occured when sending '%s' ioctl to DSP:%s", \ X, strerror(errno)) static NSNotificationCenter *nc; static NSArray *loopModes; @implementation OSS : NSObject + (void) initialize { nc = [NSNotificationCenter defaultCenter]; loopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEventTrackingRunLoopMode, nil]; [loopModes retain]; } + (NSString *) bundleDescription { return @"Output plug-in for the Linux OSS driver"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2002-2004 Wolfgang Sourdeau", nil]; } + (BOOL) isThreaded { return NO; } + (void) unload { [loopModes release]; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (id) init { if ((self = [super init])) { parentPlayer = nil; dsp = nil; } return self; } - (BOOL) _setRateAndChannels { int dspFd, format; BOOL result; dspFd = [dsp fileDescriptor]; result = NO; if (ioctl (dspFd, SNDCTL_DSP_RESET) == -1) DspError ("SNDCTL_DSP_RESET"); else { format = AFMT_S16_LE; if (ioctl (dspFd, SNDCTL_DSP_SETFMT, &format) == -1) DspError ("SNDCTL_DSP_SETFMT"); else { if (ioctl (dspFd, SNDCTL_DSP_SPEED, &rate) == -1) DspError ("SNDCTL_DSP_SPEED"); else { if (ioctl (dspFd, SNDCTL_DSP_CHANNELS, &channels) == -1) DspError ("SNDCTL_DSP_CHANNELS"); else result = YES; } } } return result; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e { channels = numberOfChannels; rate = sampleRate; endianness = e; return ((dsp) ? [self _setRateAndChannels] : YES); } - (BOOL) openDevice { OSSPreference *preference; BOOL result; preference = [OSSPreference instance]; dsp = [NSFileHandle fileHandleForWritingAtPath: [preference dspDevice]]; if (dsp) { [dsp retain]; [nc addObserver: self selector: @selector (_writeCompleteNotification:) name: GSFileHandleWriteCompletionNotification object: dsp]; result = [self _setRateAndChannels]; } else result = NO; return result; } - (void) closeDevice { [dsp closeFile]; [dsp release]; dsp = nil; } - (void) _writeCompleteNotification: (NSNotification *) aNotification { [parentPlayer chunkFinishedPlaying]; } - (void) playChunk: (NSData *) chunk { [dsp writeInBackgroundAndNotify: chunk forModes: loopModes]; } @end Cynthiune-1.0.0/Bundles/OSS/OSSPreference.h000644 001751 000024 00000002462 11733560213 021020 0ustar00multixstaff000000 000000 /* OSSPreference.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef OSSPREFERENCE_H #define OSSPREFERENCE_H #import #import @class NSBox; @class NSWindow; @class NSTextField; @interface OSSPreference : NSObject { NSMutableDictionary *preference; NSWindow *prefsWindow; NSBox *dspBox; NSTextField *dspDeviceField; NSTextField *dspDeviceLabel; } - (OSSPreference *) _init; - (NSString *) dspDevice; @end #endif /* OSSPREFERENCE_H */ Cynthiune-1.0.0/Bundles/OSS/OSSPreference.m000644 001751 000024 00000006070 11733546704 021035 0ustar00multixstaff000000 000000 /* OSSPreference.m - this file is part of Cynthiune * * Copyright (C) 2002, 2003 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import "OSS.h" #import "OSSPreference.h" #define LOCALIZED(X) _b ([OSS class], X) @implementation OSSPreference : NSObject + (id) instance { static OSSPreference *singleton = nil; if (!singleton) singleton = [[OSSPreference alloc] _init]; return singleton; } - (OSSPreference *) _init { NSDictionary *tmpDict; if ((self = [super init])) { tmpDict = [[NSUserDefaults standardUserDefaults] dictionaryForKey: @"OSS"]; preference = [NSMutableDictionary dictionaryWithDictionary: tmpDict]; [preference retain]; } return self; } - (NSView *) preferenceSheet { NSView *aView; [NSBundle loadNibNamed: @"OSSPreferences" owner: self]; aView = [prefsWindow contentView]; [aView retain]; [aView removeFromSuperview]; [prefsWindow release]; [aView autorelease]; return aView; } - (void) _initDefaults { NSString *dspDevice; static BOOL initted = NO; if (!initted) { dspDevice = [preference objectForKey: @"dspDevice"]; if (!dspDevice) { dspDevice = @"/dev/dsp"; [preference setObject: dspDevice forKey: @"dspDevice"]; } initted = YES; } } - (void) awakeFromNib { [self _initDefaults]; [dspBox setTitle: LOCALIZED (@"DSP device")]; [dspDeviceLabel setStringValue: LOCALIZED (@"Filename")]; [dspDeviceField setStringValue: [preference objectForKey: @"dspDevice"]]; } - (NSString *) preferenceTitle { return @"OSS"; } - (void) save { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject: preference forKey: @"OSS"]; [defaults synchronize]; } - (NSString *) dspDevice { [self _initDefaults]; return [preference objectForKey: @"dspDevice"]; } - (void) controlTextDidEndEditing: (NSNotification *) notification { [preference setObject: [[notification object] stringValue] forKey: @"dspDevice"]; } @end Cynthiune-1.0.0/Bundles/OSS/French.lproj/000755 001751 000024 00000000000 11742131624 020532 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/OSS/OSSPreferences.gorm/000755 001751 000024 00000000000 11742131624 021771 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/OSS/OSSPreferences.gorm/data.classes000644 001751 000024 00000000520 11733546704 024267 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "setStream:" ); Super = NSObject; }; OSSPreferences = { Actions = ( ); Outlets = ( dspDeviceField, prefsWindow, dspDeviceLabel, dspBox ); Super = NSObject; }; }Cynthiune-1.0.0/Bundles/OSS/OSSPreferences.gorm/data.info000644 001751 000024 00000000270 11733546704 023567 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamCynthiune-1.0.0/Bundles/OSS/OSSPreferences.gorm/objects.gorm000644 001751 000024 00000005076 11733546704 024331 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:0000001b:00000048:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±&%OSSPreferences0±&%GSCustomClassMap0±&0±& % NSVisible01NSMutableArray1NSArray&0 ±&%Box0 1NSBox1 NSView1 NSResponder% A A  Cj BÌ  Cj BÌ&0 ±&0 ± % @à @à C\ Bœ  C\ Bœ&0 ±&01 NSTextField1 NSControl% Aø Bê A  Bê A&0±&%01 NSTextFieldCell1 NSActionCell1NSCell0±&%Filename01NSFont% A@°&&&&&&&&0%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0± % Bô Aø B° A¨  B° A¨&0±&%0± 0±&0±%°&&&&&&&&0%’0±°0±&%System0 ±&%textBackgroundColor0!±°°0"±& % textColor’0#±0$±& % DSP Device°°$&&&&&&&& @  @ %%0%±& % TextField°0&±&%View° 0'±&%OSSPreferences0(1GSWindowTemplate1GSClassSwapper0)±&%NSWindow1NSWindow%  C~ Bô&% Cn D €0*± %  C~ Bô  C~ Bô&0+±&° 0,±°0-±&%System0.±&%windowBackgroundColor0/±&%Window00±&%Window01±&%Window ?€ B F@ F@%021NSImage03±&%NSApplicationIcon&   D€ D@04±& %  TextField1°05±&  061NSNibConnector°'°071NSNibOutletConnector°°'08±& % prefsWindow09±0:±&%Box0;±0<±&%View°:0=±°4°<0>±0?±& % TextField°<0@±°°?0A±&%dspDeviceField0B±°°40C±&%dspDeviceLabel0D±°°:0E±&% dspBox0F±°?°0G1NSMutableString&% delegate0H1 GSMutableSet1 NSMutableSet1NSSet&°(Cynthiune-1.0.0/Bundles/OSS/French.lproj/Localizable.strings000644 001751 000024 00000000174 11733546704 024401 0ustar00multixstaff000000 000000 ÿþ"DSP device" = "Périph. DSP"; "Filename" = "Nom de fichier"; Cynthiune-1.0.0/Bundles/OSS/English.lproj/Localizable.strings000644 001751 000024 00000000156 11733546704 024565 0ustar00multixstaff000000 000000 ÿþ"DSP device" = "DSP device"; "Filename" = "Filename"; Cynthiune-1.0.0/Bundles/Musepack/CNSFileHandle.h000644 001751 000024 00000003457 11747325252 022034 0ustar00multixstaff000000 000000 /* CNSFileHandle.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef CNSFILEHANDLE_H #define CNSFILEHANDLE_H #ifdef MUSEPACK_API_126 #include #else #import #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef MUSEPACK_API_126 void CNSFileHandleRetain (void *fileHandle); void CNSFileHandleRelease (void *fileHandle); int CNSFileHandleRead (void *fileHandle, void *ptr, int size); int CNSFileHandleTell (void *fileHandle); mpc_bool_t CNSFileHandleCanSeek (void *fileHandle); mpc_bool_t CNSFileHandleSeek (void *fileHandle, int offset); int CNSFileHandleGetSize (void *fileHandle); #else int CNSFileHandleRead (mpc_reader *fileHandle, void *ptr, int size); int CNSFileHandleTell (mpc_reader *fileHandle); mpc_bool_t CNSFileHandleCanSeek (mpc_reader *fileHandle); mpc_bool_t CNSFileHandleSeek (mpc_reader *fileHandle, int offset); int CNSFileHandleGetSize (mpc_reader *fileHandle); #endif #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* CNSFILEHANDLE_H */ Cynthiune-1.0.0/Bundles/Musepack/CNSFileHandle.m000644 001751 000024 00000005434 11747325252 022036 0ustar00multixstaff000000 000000 /* CNSFileHandle.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import "CNSFileHandle.h" #ifdef MUSEPACK_API_126 void CNSFileHandleRetain (void *fileHandle) { [(NSFileHandle *) fileHandle retain]; } void CNSFileHandleRelease (void *fileHandle) { [(NSFileHandle *) fileHandle release]; } int CNSFileHandleRead (void *fileHandle, void *ptr, int size) { NSData *data; data = [(NSFileHandle *) fileHandle readDataOfLength: size]; [data getBytes: ptr]; return [data length]; } int CNSFileHandleTell (void *fileHandle) { return [(NSFileHandle *) fileHandle offsetInFile]; } mpc_bool_t CNSFileHandleCanSeek (void *fileHandle) { return YES; } mpc_bool_t CNSFileHandleSeek (void *fileHandle, int offset) { [(NSFileHandle *) fileHandle seekToFileOffset: (long long) offset]; return YES; } int CNSFileHandleGetSize (void *fileHandle) { int size, where; where = [(NSFileHandle *) fileHandle offsetInFile]; size = [(NSFileHandle *) fileHandle seekToEndOfFile]; [(NSFileHandle *) fileHandle seekToFileOffset: (long long) where]; return size; } # else int CNSFileHandleRead (mpc_reader *fileHandle, void *ptr, int size) { NSData *data; data = [(NSFileHandle *) fileHandle->data readDataOfLength: size]; [data getBytes: ptr]; return [data length]; } int CNSFileHandleTell (mpc_reader *fileHandle) { return [(NSFileHandle *) fileHandle->data offsetInFile]; } mpc_bool_t CNSFileHandleCanSeek (mpc_reader *fileHandle) { return YES; } mpc_bool_t CNSFileHandleSeek (mpc_reader *fileHandle, int offset) { [(NSFileHandle *) fileHandle->data seekToFileOffset: (long long) offset]; return YES; } int CNSFileHandleGetSize (mpc_reader *fileHandle) { int size, where; where = [(NSFileHandle *) fileHandle->data offsetInFile]; size = [(NSFileHandle *) fileHandle->data seekToEndOfFile]; [(NSFileHandle *) fileHandle->data seekToFileOffset: (long long) where]; return size; } #endif Cynthiune-1.0.0/Bundles/Musepack/GNUmakefile000644 001751 000024 00000003047 11733555310 021364 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2004, 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # PACKAGE_NAME=Musepack BUNDLE_NAME=Musepack BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune Musepack_PRINCIPAL_CLASS=Musepack # # Additional libraries # Musepack_LIBRARIES_DEPEND_UPON += # # Resource files # Musepack_RESOURCE_FILES= # # Header files # Musepack_HEADERS= \ Musepack.h # # Class files # Musepack_OBJC_FILES= \ CNSFileHandle.m \ Musepack.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/Musepack/GNUmakefile.preamble000644 001751 000024 00000002111 11751032255 023137 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. MUSEPACK_LIBS = -lmpcdec ADDITIONAL_INCLUDE_DIRS += -I../.. ifeq (mingw32, $(GNUSTEP_TARGET_OS)) ADDITIONAL_GUI_LIBS += $(MUSEPACK_LIBS) else BUNDLE_LIBS += $(MUSEPACK_LIBS) endif ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/Musepack/Musepack.h000644 001751 000024 00000002513 11747325252 021235 0ustar00multixstaff000000 000000 /* Musepack.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Musepack_H #define Musepack_H #define maxSamples 4 * 36 * 32 @interface Musepack : NSObject { NSFileHandle *fileHandle; mpc_reader *mpcReader; mpc_streaminfo *mpcStreamInfo; #ifdef MUSEPACK_API_126 mpc_decoder *mpcDecoder; #else mpc_demux *mpcDecoder; #endif MPC_SAMPLE_FORMAT sampleBuffer[maxSamples]; unsigned char frameBuffer[maxSamples * 4]; unsigned char *framePtr; unsigned int remaining; } @end #endif /* Musepack_H */ Cynthiune-1.0.0/Bundles/Musepack/Musepack.m000644 001751 000024 00000020160 12112243635 021227 0ustar00multixstaff000000 000000 /* Musepack.m - this file is part of Cynthiune * * Copyright (C) 2005, 2006 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #ifdef MUSEPACK_API_126 #import #else #import #endif #import "Musepack.h" #import "CNSFileHandle.h" #define LOCALIZED(X) _b ([Musepack class], X) #define minClip (-1 << (16 - 1)) #define maxClip ((1 << (16 - 1)) - 1) #define floatScale (1 << (16 - 1)) #ifdef MPC_FIXED_POINT static inline int ShiftSigned (MPC_SAMPLE_FORMAT val, int shift) { if (shift > 0) val <<= shift; else if (shift < 0) val >>= -shift; return (int) val; } #endif static mpc_reader * MPCReaderNew (NSFileHandle *handle) { mpc_reader *reader; reader = malloc (sizeof (mpc_reader)); reader->read = CNSFileHandleRead; reader->canseek = CNSFileHandleCanSeek; reader->seek = CNSFileHandleSeek; reader->tell = CNSFileHandleTell; reader->get_size = CNSFileHandleGetSize; reader->data = handle; [handle retain]; return reader; } static void MPCReaderDelete (mpc_reader *reader) { [(NSFileHandle *) reader->data release]; #ifdef MUSEPACK_API_126 free (reader); #else mpc_reader_exit_stdio (reader); #endif } static mpc_streaminfo * MPCStreamInfoNew () { mpc_streaminfo *streamInfo; streamInfo = malloc (sizeof (mpc_streaminfo)); #ifdef MUSEPACK_API_126 mpc_streaminfo_init (streamInfo); #endif return streamInfo; } #ifdef MUSEPACK_API_126 static mpc_decoder * MPCDecoderNew (mpc_reader *reader, mpc_streaminfo *streamInfo) { mpc_decoder *decoder; decoder = malloc (sizeof (mpc_decoder)); mpc_decoder_setup (decoder, reader); mpc_decoder_initialize (decoder, streamInfo); return decoder; } #endif static inline void CopyBuffer (const MPC_SAMPLE_FORMAT *buffer, unsigned char *destBuffer, unsigned int length) { int val; unsigned int count; unsigned short *destPtr; destPtr = (unsigned short *) destBuffer; for (count = 0; count < length; count++) { #ifdef MPC_FIXED_POINT val = ShiftSigned (buffer[count], 16 - MPC_FIXED_POINT_SCALE_SHIFT); #else val = (int) (buffer[count] * floatScale); #endif if (val < minClip) val = minClip; else if (val > maxClip) val = maxClip; *destPtr = val; destPtr++; } } @implementation Musepack : NSObject + (NSString *) bundleDescription { return @"Extension plug-in for MPEG+ audio format"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005, 2006 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return [NSArray arrayWithObjects: @"Taglib", nil]; } - (void) _resetIVars { fileHandle = nil; mpcReader = NULL; mpcStreamInfo = NULL; mpcDecoder = NULL; remaining = 0; framePtr = NULL; } - (id) init { if ((self = [super init])) [self _resetIVars]; return self; } - (BOOL) streamOpen: (NSString *) fileName { BOOL result; fileHandle = [NSFileHandle fileHandleForReadingAtPath: fileName]; if (fileHandle) { [fileHandle retain]; mpcReader = MPCReaderNew (fileHandle); #ifndef MUSEPACK_API_126 if (!mpcReader) return MPC_FALSE; #endif mpcStreamInfo = MPCStreamInfoNew (); #ifdef MUSEPACK_API_126 mpc_streaminfo_read (mpcStreamInfo, mpcReader); mpcDecoder = MPCDecoderNew (mpcReader, mpcStreamInfo); #else mpcDecoder = mpc_demux_init (mpcReader); if (!mpcDecoder) return MPC_FALSE; mpc_demux_get_info (mpcDecoder, mpcStreamInfo); #endif result = YES; } else result = NO; return result; } + (BOOL) canTestFileHeaders { return YES; } + (BOOL) streamTestOpen: (NSString *) fileName { NSFileHandle *testFileHandle; mpc_reader *testReader; #ifndef MUSEPACK_API_126 mpc_demux *testDecoder; #else mpc_streaminfo *testStreamInfo; #endif BOOL result; testFileHandle = [NSFileHandle fileHandleForReadingAtPath: fileName]; if (testFileHandle) { testReader = MPCReaderNew (testFileHandle); #ifdef MUSEPACK_API_126 testStreamInfo = MPCStreamInfoNew (); result = !mpc_streaminfo_read (testStreamInfo, testReader); free (testStreamInfo); MPCReaderDelete (testReader); #else testDecoder = mpc_demux_init (testReader); if (testDecoder) { result = YES; mpc_demux_exit (testDecoder); } else { result = NO; } if (testReader) { MPCReaderDelete (testReader); } #endif } else result = NO; return result; } + (NSString *) errorText: (int) error { return @""; } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int bytes, status; #ifdef MUSEPACK_API_126 unsigned int vbrAcc, vbrBits; #else mpc_frame_info frame; mpc_status err; #endif unsigned long frames, samples; status = 1; #ifndef MUSEPACK_API_126 frame.buffer = sampleBuffer; #endif #ifdef MUSEPACK_API_126 if (!remaining) #else while (!remaining) #endif { #ifdef MUSEPACK_API_126 samples = mpc_decoder_decode (mpcDecoder, sampleBuffer, &vbrAcc, &vbrBits); if (!samples) status = 0; else if (samples == (unsigned long) -1) status = -1; #else err = mpc_demux_decode (mpcDecoder, &frame); if (err != MPC_STATUS_OK) { status = -1; break; } else if (frame.bits == -1) { status = 0; break; } #endif else { #ifndef MUSEPACK_API_126 samples = frame.samples; #endif frames = samples * mpcStreamInfo->channels; CopyBuffer (sampleBuffer, frameBuffer, frames); remaining = frames * 2; framePtr = frameBuffer; } } if (status > 0) { bytes = ((bufferSize < remaining) ? bufferSize : remaining); memcpy (buffer, framePtr, bytes); #if (BYTE_ORDER == BIG_ENDIAN) invertBytesInBuffer ((char *) buffer, bytes); #endif framePtr += bytes; remaining -= bytes; } else bytes = 0; return ((status > 0) ? bytes : status); } - (int) lastError { return 0; } - (unsigned int) readChannels { return mpcStreamInfo->channels; } - (unsigned long) readRate { return mpcStreamInfo->sample_freq; } - (Endianness) endianness { return NativeEndian; } - (unsigned int) readDuration { #ifdef MUSEPACK_API_126 return mpcStreamInfo->pcm_samples / mpcStreamInfo->sample_freq; #else return (unsigned int) mpc_streaminfo_get_length (mpcStreamInfo); #endif } - (void) streamClose { if (fileHandle) { [fileHandle closeFile]; [fileHandle release]; } #ifndef MUSEPACK_API_126 if (mpcDecoder) mpc_demux_exit (mpcDecoder); #endif if (mpcReader) MPCReaderDelete (mpcReader); #ifdef MUSEPACK_API_126 if (mpcStreamInfo) free (mpcStreamInfo); if (mpcDecoder) free (mpcDecoder); #endif [self _resetIVars]; } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"mpc", @"mp+", @"mpp", nil]; } - (BOOL) isSeekable { return YES; } - (void) seek: (unsigned int) aPos { #ifdef MUSEPACK_API_126 mpc_decoder_seek_seconds (mpcDecoder, (double) aPos); #else mpc_demux_seek_second (mpcDecoder, (double) aPos); #endif } @end Cynthiune-1.0.0/Bundles/Mod/GNUmakefile000644 001751 000024 00000002773 11733555310 020340 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=Mod BUNDLE_NAME=Mod BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune Mod_PRINCIPAL_CLASS=Mod # # Additional libraries # Mod_LIBRARIES_DEPEND_UPON += # # Resource files # Mod_RESOURCE_FILES= # # Header files # Mod_HEADERS= \ Mod.h # # Class files # Mod_OBJC_FILES= \ Mod.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/Mod/GNUmakefile.preamble000644 001751 000024 00000002210 11751032255 022106 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_INCLUDE_DIRS += -I../.. \ -I/usr/include/libmodplug \ -I/usr/local/include/libmodplug ifeq (mingw32, $(GNUSTEP_TARGET_OS)) ADDITIONAL_GUI_LIBS += -lmodplug -lstdc++ else BUNDLE_LIBS += -lmodplug endif ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/Mod/Mod.h000644 001751 000024 00000001751 11733546712 017157 0ustar00multixstaff000000 000000 /* Mod.h - this file is part of Cynthiune * * Copyright (C) 2004 Rob Burns, Gurkan Sengun * * Author: Rob Burns * Gurkan Sengun * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ @interface Mod : NSObject { ModPlugFile* _mp_file; } @end Cynthiune-1.0.0/Bundles/Mod/Mod.m000644 001751 000024 00000010056 11754426600 017156 0ustar00multixstaff000000 000000 /* Mod.m - this file is part of Cynthiune * * Copyright (C) 2004 Rob Burns, Gurkan Sengun, Wolfgang Sourdeau * * Authors: Rob Burns * Gurkan Sengun * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import "Mod.h" #define LOCALIZED(X) _b ([Mod class], X) #define NBR_OF_CHANNELS 2 #define FRAME_RATE 44100 @implementation Mod : NSObject + (void) initialize { ModPlug_Settings settings; #ifdef __MACOSX__ [super initialize]; #endif ModPlug_GetSettings (&settings); settings.mFlags |= MODPLUG_ENABLE_OVERSAMPLING; settings.mResamplingMode = MODPLUG_RESAMPLE_FIR; settings.mChannels = NBR_OF_CHANNELS; settings.mBits = 16; settings.mFrequency = FRAME_RATE; ModPlug_SetSettings (&settings); } + (NSString *) bundleDescription { return @"Extension plug-in for various music tracker file formats"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2004 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return nil; } - (BOOL) streamOpen: (NSString *) fileName; { NSFileHandle *fileHandle; NSData *content; BOOL result; result = NO; fileHandle = [NSFileHandle fileHandleForReadingAtPath: fileName]; if (fileHandle) { content = [fileHandle readDataToEndOfFile]; _mp_file = ModPlug_Load ([content bytes], [content length]); if (_mp_file) result = YES; else NSLog (@"Mod: could not load '%@'", fileName); [fileHandle closeFile]; } else NSLog (@"Mod: no native handle..."); return result; } + (BOOL) canTestFileHeaders { return NO; } + (BOOL) streamTestOpen: (NSString *) fileName { return NO; } - (int) readNextChunk: (unsigned char*) buffer withSize: (unsigned int) bufferSize { int count; if (_mp_file) { count = ModPlug_Read (_mp_file, buffer, bufferSize); #if (BYTE_ORDER == BIG_ENDIAN) invertBytesInBuffer ((char *) buffer, count); #endif } else count = -1; return count; } - (unsigned int) readChannels { return NBR_OF_CHANNELS; } - (unsigned long) readRate { return FRAME_RATE; } - (Endianness) endianness { return NativeEndian; } - (unsigned int) readDuration { return (ModPlug_GetLength (_mp_file) / 1000); } - (NSString *) readTitle { return [NSString stringWithCString: ModPlug_GetName (_mp_file)]; } - (NSString *) readGenre { return @""; } - (NSString *) readArtist { return @""; } - (NSString *) readAlbum { return @""; } - (NSString *) readYear { return @""; } - (NSString *) readTrackNumber { return @""; } - (void) streamClose { ModPlug_Unload (_mp_file); _mp_file = NULL; } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"669", @"amf", @"ams", @"dbm", @"dmf", @"dsm", @"far", @"it", @"j2b", @"mdl", @"med", @"mod", @"mt2", @"mtm", @"okt", @"psm", @"ptm", @"s3m", @"stm", @"ult", @"umx", @"mod", @"xm", nil]; } - (BOOL) isSeekable { return YES; } - (void) seek: (unsigned int) aPos { ModPlug_Seek (_mp_file, aPos * 1000); } @end Cynthiune-1.0.0/Bundles/MacOSX/MacOSXPlayer.h000644 001751 000024 00000002751 12014507041 021244 0ustar00multixstaff000000 000000 /* MacOSXPlayer.h - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * 2012 he GNUstep Application Team * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef MacOSXPlayer_H #define MacOSXPlayer_H #import @interface MacOSXPlayer : NSObject { id parentPlayer; int bytes; unsigned int channels; unsigned long rate; unsigned int bufferNumber; unsigned char buffer[2][DEFAULT_BUFFER_SIZE]; BOOL isOpen; BOOL isBigEndian; AudioUnit outputUnit; AudioConverterRef converter; AudioStreamBasicDescription inputFormat, outputFormat; } @end typedef struct { @defs(MacOSXPlayer); } PlayerRef; #endif /* MacOSXPlayer_H */ Cynthiune-1.0.0/Bundles/MacOSX/MacOSXPlayer.m000644 001751 000024 00000014042 12014507041 021245 0ustar00multixstaff000000 000000 /* MacOSXPlayer.m - this file is part of Cynthiune * * Copyright (C) 2002-2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import "MacOSXPlayer.h" #define LOCALIZED(X) _b ([MacOSXPlayer class], X) static OSStatus inputCallback (AudioConverterRef inAudioConverter, UInt32* outDataSize, void** outData, void* selfRef) { unsigned int chunkSize; PlayerRef *self; NSAutoreleasePool *pool; pool = [NSAutoreleasePool new]; self = selfRef; *outData = self->buffer[self->bufferNumber]; memset (*outData, DEFAULT_BUFFER_SIZE, 0); chunkSize = [self->parentPlayer readNextChunk: *outData withSize: DEFAULT_BUFFER_SIZE]; *outDataSize = chunkSize; self->bufferNumber = 1 - self->bufferNumber; memset (self->buffer[self->bufferNumber], DEFAULT_BUFFER_SIZE, 0); [pool release]; return noErr; } static OSStatus converterRenderer (void* selfRef, AudioUnitRenderActionFlags inActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, AudioBuffer *ioData) { UInt32 size; PlayerRef *self; self = selfRef; size = ioData->mDataByteSize; AudioConverterFillBuffer (self->converter, inputCallback, self, &size, ioData->mData); return noErr; } @implementation MacOSXPlayer : NSObject + (NSString *) bundleDescription { return @"Output plug-in for the MacOS sound system"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (BOOL) isThreaded { return YES; } - (id) init { if ((self = [super init])) { parentPlayer = nil; bufferNumber = 0; bytes = 0; converter = NULL; isBigEndian = NO; inputFormat.mFormatID = kAudioFormatLinearPCM; inputFormat.mFormatFlags = (kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked); inputFormat.mFramesPerPacket = 1; inputFormat.mBitsPerChannel = 16; } return self; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (BOOL) _modifyConverter { UInt32 aStreamSize; aStreamSize = sizeof (AudioStreamBasicDescription); AudioUnitGetProperty (outputUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &outputFormat, &aStreamSize); if (converter) AudioConverterDispose (converter); inputFormat.mSampleRate = rate; inputFormat.mBytesPerPacket = channels * 2; inputFormat.mBytesPerFrame = channels * 2; inputFormat.mChannelsPerFrame = channels; inputFormat.mFormatFlags = (kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked); if (isBigEndian) inputFormat.mFormatFlags |= kAudioFormatFlagIsBigEndian; return (AudioConverterNew (&inputFormat, &outputFormat, &converter) == noErr); } - (BOOL) _audioInit { UInt32 aStreamSize; struct AudioUnitInputCallback input; input.inputProc = converterRenderer; input.inputProcRefCon = self; aStreamSize = sizeof (AudioStreamBasicDescription); return (OpenDefaultAudioOutput (&outputUnit) == noErr && AudioUnitInitialize (outputUnit) == noErr && AudioUnitSetProperty (outputUnit, kAudioUnitProperty_SetInputCallback, kAudioUnitScope_Input, 0, &input, sizeof (input)) == noErr && AudioUnitGetProperty (outputUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &outputFormat, &aStreamSize) == noErr); } - (BOOL) openDevice { return ([self _audioInit] && [self _modifyConverter]); } - (BOOL) startThread { isOpen = YES; return (AudioOutputUnitStart (outputUnit) == noErr); } - (void) stopThread { isOpen = NO; AudioOutputUnitStop (outputUnit); } - (void) closeDevice { CloseComponent (outputUnit); isOpen = NO; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e { BOOL result; channels = numberOfChannels; rate = sampleRate; isBigEndian = NO; if (e == NativeEndian) { #if defined (__ppc__) isBigEndian = YES; #elif defined (__i386__) isBigEndian = NO; #else #warning Unknown architecture isBigEndian = YES; #endif } else if (e == BigEndian) isBigEndian = YES; if (isOpen) { AudioOutputUnitStop (outputUnit); result = ([self _modifyConverter] && (AudioOutputUnitStart (outputUnit) == noErr)); } else result = YES; return result; } @end Cynthiune-1.0.0/Bundles/MP3/GNUmakefile000644 001751 000024 00000003047 11733555310 020213 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=MP3 BUNDLE_NAME=MP3 BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune MP3_PRINCIPAL_CLASS=MP3 # # Additional libraries # MP3_LIBRARIES_DEPEND_UPON += # # Resource files # MP3_RESOURCE_FILES= # # Header files # MP3_HEADERS= \ MP3.h \ xing.h # # Class files # MP3_OBJC_FILES= \ MP3.m # # C files # MP3_C_FILES= \ xing.c ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/MP3/GNUmakefile.preamble000644 001751 000024 00000003021 11751032255 021767 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ifeq (mingw32, $(GNUSTEP_TARGET_OS)) MAD_CFLAGS := MAD_LIBS := -lmad ID3Tag_CFLAGS := -I/MinGW/include ID3Tag_LIBS := -lid3tag -lz TAGLIB_CFLAGS = -I/MingW/include/taglib TAGLIB_LIBS = -ltag_c -ltag -lz -lstdc++ BUNDLE_LIBS += $(MAD_LIBS) $(ID3Tag_LIBS) $(TAGLIB_LIBS) -L../../Frameworks/Cynthiune/obj else MAD_CFLAGS := $(shell pkg-config mad --cflags) MAD_LIBS := $(shell pkg-config mad --libs) ID3Tag_CFLAGS := $(shell pkg-config id3tag --cflags) ID3Tag_LIBS := $(shell pkg-config id3tag --libs) BUNDLE_LIBS += $(MAD_LIBS) $(ID3Tag_LIBS) endif ADDITIONAL_INCLUDE_DIRS += -I../.. $(MAD_CFLAGS) $(ID3Tag_CFLAGS) $(TAGLIB_CFLAGS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/MP3/MP3.h000644 001751 000024 00000004206 11763436013 016710 0ustar00multixstaff000000 000000 /* MP3.h - this file is part of Cynthiune * * Copyright (C) 2002-2004 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef MP3_H #define MP3_H @protocol Format; /* original 5x buffer is too big 1x is small on most machines 2x appears to be a decent compromise. Needs to be infestigated further */ #define IBUFFER_SIZE 2 * 8192 typedef mad_fixed_t MadFixed; typedef struct _audioDither { MadFixed error[3]; MadFixed random; } audioDither; typedef enum _InputBufferStatus { BufferHasUnrecoverableError = -2, BufferHasRecoverableError = -1, BufferHasNoError = 0 } InputBufferStatus; typedef struct mad_frame MadFrame; typedef struct mad_header MadHeader; typedef struct mad_stream MadStream; typedef struct mad_synth MadSynth; typedef struct mad_bitptr MadBitPtr; @interface MP3 : NSObject { BOOL metadataRead; unsigned long rate; unsigned int duration; unsigned int size; FILE *mf; NSString *openFilename; BOOL opened; /* public ivars accessed as a C struct */ @public MadFrame frame; @public MadStream stream; @public MadSynth synth; @public audioDither leftDither; @public audioDither rightDither; @public unsigned int channels; @public int iRemain; @public int oRemain; @public unsigned char iBuffer[IBUFFER_SIZE]; @public unsigned int lostSyncs; } @end #endif /* MP3_H */ Cynthiune-1.0.0/Bundles/MP3/MP3.m000644 001751 000024 00000035033 12112455406 016713 0ustar00multixstaff000000 000000 /* MP3.m - this file is part of Cynthiune * * Copyright (C) 2002-2005 Wolfgang Sourdeau * 2012 The GNUstep Application Team * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include #include #include #include #include #import #import #import #import #import "xing.h" #import "MP3.h" #define LOCALIZED(X) _b ([MP3 class], X) #define MAD_AVERAGE_FRAMES 10 #define MAX_LOSTSYNCS IBUFFER_SIZE * 5 /* header testing */ static inline int seekOffset (FILE *_f) { char testchar; int counter; BOOL eof; counter = -1; testchar = 0; eof = NO; while (!eof && !testchar) { eof = (fread (&testchar, 1, 1, _f) != 1); counter++; } if (!eof) fseek (_f, counter, SEEK_SET); return ((eof) ? -1 : counter); } static inline BOOL testRiffHeader (char *buffer, FILE *_f, int offset) { char tag; BOOL result; if (strncmp (buffer, "WAVE", 4) == 0) { fseek (_f, 20 + offset, SEEK_SET); fread (&tag, 1, 1, _f); result = (tag == 80 || tag == 85); } else result = NO; return result; } static inline BOOL testMP3Header (const char *buffer) { unsigned short *header; header = (unsigned short *) buffer; return ((NSHostByteOrder() == NS_LittleEndian) ? ((*header & 0xfeff) == 0xfaff || (*header & 0xfeff) == 0xfcff || (*header & 0xf8ff) == 0xf0ff || (*header & 0xf8ff) == 0xe0ff) : ((*header & 0xfffe) == 0xfffa || (*header & 0xfffe) == 0xfffc || (*header & 0xfff8) == 0xfff0 || (*header & 0xfff8) == 0xffe0)); } /* data decoding */ static inline int calcInputRemain (MadStream *stream, unsigned char *iBuffer) { int inputRemain; if (stream->next_frame) { inputRemain = stream->bufend - stream->next_frame; if (inputRemain > IBUFFER_SIZE) { NSLog (@"remain too large to handle (%d), skipping...", inputRemain); inputRemain = 0; } else memcpy (iBuffer, stream->next_frame, inputRemain); } else inputRemain = 0; return inputRemain; } static signed long audioLinearDither (MadFixed sample, audioDither *dither) { unsigned int scalebits; MadFixed output, mask, random; /* noise shape */ sample += dither->error[0] - dither->error[1] + dither->error[2]; dither->error[2] = dither->error[1]; dither->error[1] = dither->error[0] / 2; /* bias */ output = sample + (1L << (MAD_F_FRACBITS - 16)); scalebits = MAD_F_FRACBITS - 15; mask = (1L << scalebits) - 1; /* dither */ random = (dither->random * 0x0019660dL + 0x3c6ef35fL) & 0xffffffffL;; output += (random & mask) - (dither->random & mask); dither->random = random; /* clip */ if (output > (MAD_F_ONE - 1)) { output = MAD_F_ONE - 1; if (sample > MAD_F_ONE - 1) sample = MAD_F_ONE - 1; } else if (output < -MAD_F_ONE) { output = -MAD_F_ONE; if (sample < -MAD_F_ONE) sample = -MAD_F_ONE; } /* quantize */ output &= ~mask; /* error feedback */ dither->error[0] = sample - output; /* scale */ return output >> scalebits; } static inline void fillPCMBuffer (MP3 *self, unsigned char *buffer, int start, int limit) { int i; unsigned char *oBPtr; register signed int sample; oBPtr = buffer; i = start; while (i < limit) { sample = audioLinearDither (self->synth.pcm.samples[0][i], &(self->leftDither)); *oBPtr++ = sample >> 0; *oBPtr++ = sample >> 8; if (self->channels == 2) { sample = audioLinearDither (self->synth.pcm.samples[1][i], &(self->rightDither)); *oBPtr++ = sample >> 0; *oBPtr++ = sample >> 8; } i++; } } static int translateBufferToPCM (MP3 *self, unsigned char *buffer, int bufferSize) { int start, limit, mult, delta; mult = 2 * self->channels; if (self->oRemain) { start = self->synth.pcm.length - self->oRemain; limit = self->synth.pcm.length; } else { start = 0; limit = (bufferSize / mult); if (self->synth.pcm.length < limit) limit = self->synth.pcm.length; } delta = (limit - start) * mult - bufferSize; if (delta > 0) limit -= delta / mult; fillPCMBuffer (self, buffer, start, limit); self->oRemain = self->synth.pcm.length - limit; return ((limit - start) * mult); } // static const char *MadErrorString(const struct mad_stream *Stream) // { // switch(Stream->error) // { // /* Generic unrecoverable errors. */ // case MAD_ERROR_BUFLEN: // return("input buffer too small (or EOF)"); // case MAD_ERROR_BUFPTR: // return("invalid (null) buffer pointer"); // case MAD_ERROR_NOMEM: // return("not enough memory"); // /* Frame header related unrecoverable errors. */ // case MAD_ERROR_LOSTSYNC: // return("lost synchronization"); // case MAD_ERROR_BADLAYER: // return("reserved header layer value"); // case MAD_ERROR_BADBITRATE: // return("forbidden bitrate value"); // case MAD_ERROR_BADSAMPLERATE: // return("reserved sample frequency value"); // case MAD_ERROR_BADEMPHASIS: // return("reserved emphasis value"); // /* Recoverable errors */ // case MAD_ERROR_BADCRC: // return("CRC check failed"); // case MAD_ERROR_BADBITALLOC: // return("forbidden bit allocation value"); // case MAD_ERROR_BADSCALEFACTOR: // return("bad scalefactor index"); // case MAD_ERROR_BADFRAMELEN: // return("bad frame length"); // case MAD_ERROR_BADBIGVALUES: // return("bad big_values count"); // case MAD_ERROR_BADBLOCKTYPE: // return("reserved block_type"); // case MAD_ERROR_BADSCFSI: // return("bad scalefactor selection info"); // case MAD_ERROR_BADDATAPTR: // return("bad main_data_begin pointer"); // case MAD_ERROR_BADPART3LEN: // return("bad audio data length"); // case MAD_ERROR_BADHUFFTABLE: // return("bad Huffman table select"); // case MAD_ERROR_BADHUFFDATA: // return("Huffman data overrun"); // case MAD_ERROR_BADSTEREO: // return("incompatible block_type for JS"); // /* Unknown error. This switch may be out of sync with libmad's // * defined error codes. // */ // default: // return("Unknown error code"); // } // } static inline InputBufferStatus decodeInputBuffer (MP3 *self, int iRBytes) { InputBufferStatus bufferStatus; signed long tagSize; mad_stream_buffer (&(self->stream), self->iBuffer, iRBytes + self->iRemain); if (mad_frame_decode (&(self->frame), &(self->stream))) { if ((self->stream.error & 0x100)) { self->lostSyncs++; tagSize = id3_tag_query (self->stream.this_frame, self->stream.bufend - self->stream.this_frame); if (tagSize > 0) mad_stream_skip (&self->stream, tagSize); bufferStatus = ((self->lostSyncs == MAX_LOSTSYNCS) ? BufferHasUnrecoverableError : BufferHasRecoverableError); } else if (MAD_RECOVERABLE (self->stream.error) || self->stream.error == MAD_ERROR_BUFLEN) bufferStatus = BufferHasRecoverableError; else { NSLog (@"%s: unrecoverable frame level error (%s)", __FILE__, mad_stream_errorstr (&(self->stream))); bufferStatus = BufferHasUnrecoverableError; } } else bufferStatus = BufferHasNoError; return bufferStatus; } @implementation MP3 : NSObject + (NSString *) bundleDescription { return @"Extension plug-in for the MP2, MP3 v1/v2/v2.5 audio formats"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2002-2005 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return [NSArray arrayWithObjects: @"ID3Tag", @"Taglib", nil]; } - (Endianness) endianness { return LittleEndian; } - (void) _resetIVars { metadataRead = NO; channels = 0; rate = 0; duration = 0; size = 0; iRemain = 0; oRemain = 0; memset (iBuffer, 0, IBUFFER_SIZE); lostSyncs = 0; } - (void) _readStreamMetaData { int iRBytes; unsigned int frameCount, rSize; InputBufferStatus bufferStatus; mad_timer_t madTimer; struct xing xingData; BOOL done; madTimer = mad_timer_zero; xing_init (&xingData); mad_stream_init (&stream); mad_frame_init (&frame); frameCount = 0; rSize = 0; done = NO; while (!done) { stream.error = 0; iRemain = calcInputRemain (&stream, iBuffer); iRBytes = fread (iBuffer + iRemain, sizeof (char), IBUFFER_SIZE - iRemain, mf); if (iRBytes > 0 && !feof (mf)) { bufferStatus = decodeInputBuffer ((MP3 *) self, iRBytes); if (bufferStatus == BufferHasNoError) { frameCount++; rSize += stream.next_frame - stream.this_frame; mad_timer_add (&madTimer, frame.header.duration); rate = frame.header.samplerate; channels = MAD_NCHANNELS (&(frame.header)); if (frameCount == 1) { if (!xing_parse (&xingData, stream.anc_ptr, stream.anc_bitlen)) { mad_timer_multiply (&madTimer, xingData.frames); done = YES; } } if (frameCount >= MAD_AVERAGE_FRAMES) { frameCount = size * MAD_AVERAGE_FRAMES / rSize; madTimer.seconds /= MAD_AVERAGE_FRAMES; madTimer.fraction /= MAD_AVERAGE_FRAMES; mad_timer_multiply (&madTimer, frameCount); done = YES; } } else if (bufferStatus == BufferHasUnrecoverableError) done = YES; } else done = YES; } duration = mad_timer_count (madTimer, MAD_UNITS_SECONDS); mad_frame_finish (&frame); mad_stream_finish (&stream); memset (iBuffer, 0, IBUFFER_SIZE); rewind (mf); metadataRead = YES; } - (void) _readSize: (const char *) filename; { struct stat stat_val; stat (filename, &stat_val); size = stat_val.st_size; } - (BOOL) streamOpen: (NSString *) fileName { const char *filename; filename = [fileName cString]; mf = fopen (filename, "rb"); if (mf) { [self _resetIVars]; [self _readSize: filename]; SET( openFilename, fileName ); mad_stream_init (&stream); mad_frame_init (&frame); mad_synth_init (&synth); } else NSLog (@"%s: no handle...", __FILE__); return (mf != NULL); } + (BOOL) canTestFileHeaders { return YES; } + (BOOL) streamTestOpen: (NSString *) fileName { FILE *_f; char buffer[4]; BOOL result; int offset; _f = fopen ([fileName cString], "rb"); if (_f) { offset = seekOffset (_f); if (offset > -1) { fread (buffer, 1, 4, _f); if (!strncmp (buffer, "RIFF", 4)) { fseek (_f, 8 + offset, SEEK_SET); fread (buffer, 1, 4, _f); result = testRiffHeader (buffer, _f, offset); } else result = (testMP3Header (buffer) || !strncmp (buffer, "ID3", 3)); } else result = NO; fclose (_f); } else result = NO; return result; } // - (NSString *) errorText // { // return @"[error unimplemented]"; // } /* FIXME: we should put some error handling here... */ - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int iRBytes, decodedBytes; InputBufferStatus bufferStatus; BOOL done; lostSyncs = 0; if (oRemain) decodedBytes = translateBufferToPCM ((MP3 *) self, buffer, bufferSize); else { done = NO; decodedBytes = 0; while (!done) { stream.error = 0; iRemain = calcInputRemain (&stream, iBuffer); iRBytes = fread (iBuffer + iRemain, sizeof (char), IBUFFER_SIZE - iRemain, mf); if (iRBytes > 0 && !feof (mf)) { bufferStatus = decodeInputBuffer ((MP3 *) self, iRBytes); if (bufferStatus == BufferHasNoError) { mad_synth_frame (&(self->synth), &(self->frame)); decodedBytes = translateBufferToPCM ((MP3 *) self, buffer, bufferSize); done = YES; } else if (bufferStatus == BufferHasUnrecoverableError) done = YES; } else done = YES; } } return decodedBytes; } - (unsigned int) readChannels { if (!metadataRead) [self _readStreamMetaData]; return channels; } - (unsigned long) readRate { if (!metadataRead) [self _readStreamMetaData]; return rate; } - (unsigned int) readDuration { if (!metadataRead) [self _readStreamMetaData]; return duration; } - (void) streamClose { mad_synth_finish (&synth); mad_frame_finish (&frame); mad_stream_finish (&stream); if (mf) fclose (mf); } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"mp2", @"mp3", @"mpa", @"mpga", @"mpega", nil]; } /* FIXME: this might not be true */ - (BOOL) isSeekable { return YES; } - (void) seek: (unsigned int) aPos { unsigned long filePos; float factor; if (size) { factor = (float) size / duration; filePos = aPos * factor; fseek (mf, filePos, SEEK_SET); } else NSLog (@"size not computed?"); } @end Cynthiune-1.0.0/Bundles/MP3/xing.c000644 001751 000024 00000003745 11733546711 017264 0ustar00multixstaff000000 000000 /* * mad - MPEG audio decoder * Copyright (C) 2000-2001 Robert Leslie * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $superduper: xing.c,v 1.2 2002/10/27 13:03:02 sam Exp $ */ #include #include "xing.h" #define XING_MAGIC (('X' << 24) | ('i' << 16) | ('n' << 8) | 'g') /* * NAME: xing->init() * DESCRIPTION: initialize Xing structure */ void xing_init(struct xing *xing) { xing->flags = 0; } /* * NAME: xing->parse() * DESCRIPTION: parse a Xing VBR header */ int xing_parse(struct xing *xing, struct mad_bitptr ptr, unsigned int bitlen) { if (bitlen < 64 || mad_bit_read(&ptr, 32) != XING_MAGIC) goto fail; xing->flags = mad_bit_read(&ptr, 32); bitlen -= 64; if (xing->flags & XING_FRAMES) { if (bitlen < 32) goto fail; xing->frames = mad_bit_read(&ptr, 32); bitlen -= 32; } if (xing->flags & XING_BYTES) { if (bitlen < 32) goto fail; xing->bytes = mad_bit_read(&ptr, 32); bitlen -= 32; } if (xing->flags & XING_TOC) { int i; if (bitlen < 800) goto fail; for (i = 0; i < 100; ++i) xing->toc[i] = mad_bit_read(&ptr, 8); bitlen -= 800; } if (xing->flags & XING_SCALE) { if (bitlen < 32) goto fail; xing->scale = mad_bit_read(&ptr, 32); bitlen -= 32; } return 0; fail: xing->flags = 0; return -1; } Cynthiune-1.0.0/Bundles/MP3/xing.h000644 001751 000024 00000002621 11733546711 017261 0ustar00multixstaff000000 000000 /* * mad - MPEG audio decoder * Copyright (C) 2000-2001 Robert Leslie * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $superduper: xing.h,v 1.2 2002/10/27 13:03:02 sam Exp $ */ #ifndef XING_H #define XING_H #include "mad.h" struct xing { long flags; /* valid fields (see below) */ unsigned long frames; /* total number of frames */ unsigned long bytes; /* total number of bytes */ unsigned char toc[100]; /* 100-point seek table */ long scale; /* ?? */ }; enum { XING_FRAMES = 0x00000001L, XING_BYTES = 0x00000002L, XING_TOC = 0x00000004L, XING_SCALE = 0x00000008L }; void xing_init (struct xing *); #define xing_finish(xing) /* nothing */ int xing_parse (struct xing *, struct mad_bitptr, unsigned int); #endif Cynthiune-1.0.0/Bundles/ID3Tag/GNUmakefile000644 001751 000024 00000003124 11751032255 020621 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=ID3Tag BUNDLE_NAME=ID3Tag BUNDLE_EXTENSION=.tags BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune ID3Tag_PRINCIPAL_CLASS=ID3Tag # # Additional libraries # ID3Tag_LIBRARIES_DEPEND_UPON += # # Resource files # ID3Tag_RESOURCE_FILES= # # Header files # ID3Tag_HEADERS= \ ID3Tag.h # # Class files # ID3Tag_OBJC_FILES= \ ID3Tag.m # # C files # ID3Tag_C_FILES= # # C++ files # ID3Tag_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/ID3Tag/GNUmakefile.preamble000644 001751 000024 00000002373 11751032255 022414 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ifeq (mingw32, $(GNUSTEP_TARGET_OS)) ID3Tag_CFLAGS := -I/MinGW/include ID3Tag_LIBS := -lid3tag -lz BUNDLE_LIBS += $(ID3Tag_LIBS) -L../../Frameworks/Cynthiune/obj else ID3Tag_CFLAGS := $(shell pkg-config id3tag --cflags) ID3Tag_LIBS := $(shell pkg-config id3tag --libs) BUNDLE_LIBS += $(ID3Tag_LIBS) endif ADDITIONAL_INCLUDE_DIRS += -I../.. $(ID3Tag_CFLAGS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/ID3Tag/ID3Tag.h000644 001751 000024 00000002355 11763436013 017743 0ustar00multixstaff000000 000000 /* ID3Tag.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef ID3Tag_H #define ID3Tag_H #import #import typedef union id3_field Id3Field; typedef struct id3_file Id3File; typedef struct id3_frame Id3Frame; typedef struct id3_tag Id3Tag; @interface ID3Tag : NSObject { } @end #endif /* ID3Tag_H */ Cynthiune-1.0.0/Bundles/ID3Tag/ID3Tag.m000644 001751 000024 00000014746 11763436013 017757 0ustar00multixstaff000000 000000 /* ID3Tag.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * 2012 The Free Software Foundation, Inc * * Author: Wolfgang Sourdeau * The GNUstep Application Team * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #include #import "ID3Tag.h" #define LOCALIZED(X) _b ([ID3Tag class], X) @interface NSString (ID3TagExtension) + (NSString *) stringWithUCS4String: (const id3_ucs4_t *) ucs4Value; - (id3_ucs4_t *) UCS4String; @end @implementation NSString (ID3TagExtension) + (NSString *) stringWithUCS4String: (const id3_ucs4_t *) ucs4Value { NSString *newString; id3_utf8_t *UTF8String; UTF8String = id3_ucs4_utf8duplicate (ucs4Value); newString = [NSString stringWithUTF8String: (char *) UTF8String]; free (UTF8String); return newString; } - (id3_ucs4_t *) UCS4String { return id3_utf8_ucs4duplicate ((id3_utf8_t *) [self UTF8String]); } @end @implementation ID3Tag : NSObject + (NSString *) bundleDescription { return @"A bundle to read/set the ID3 tags of audio files"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (NSString *) _readComment: (char *) commentTag fromTag: (Id3Tag *) id3Tag { NSString *comment; Id3Frame *id3Frame; Id3Field *field; const id3_ucs4_t *string; comment = nil; id3Frame = id3_tag_findframe (id3Tag, commentTag, 0); if (id3Frame) { field = id3_frame_field (id3Frame, 1); if (field && id3_field_type (field) == ID3_FIELD_TYPE_STRINGLIST) { string = id3_field_getstrings (field, 0); if (string) { if (!strcmp(commentTag, ID3_FRAME_GENRE)) string = id3_genre_name (string); comment = [NSString stringWithUCS4String: string]; } } } return comment; } + (BOOL) readTitle: (NSString **) title artist: (NSString **) artist album: (NSString **) album trackNumber: (NSString **) trackNumber genre: (NSString **) genre year: (NSString **) year ofFilename: (NSString *) filename { Id3File *id3File; Id3Tag *id3Tag; id3File = id3_file_open ([filename cString], ID3_FILE_MODE_READONLY); if (id3File) { id3Tag = id3_file_tag (id3File); if (id3Tag) { SET (*title, [self _readComment: ID3_FRAME_TITLE fromTag: id3Tag]); SET (*artist, [self _readComment: ID3_FRAME_ARTIST fromTag: id3Tag]); SET (*album, [self _readComment: ID3_FRAME_ALBUM fromTag: id3Tag]); SET (*trackNumber, [self _readComment: ID3_FRAME_TRACK fromTag: id3Tag]); SET (*genre, [self _readComment: ID3_FRAME_GENRE fromTag: id3Tag]); SET (*year, [self _readComment: ID3_FRAME_YEAR fromTag: id3Tag]); id3_tag_delete (id3Tag); } id3_file_close (id3File); } return YES; } + (id3_ucs4_t *) _genreValue: (NSString *) genre { id3_ucs4_t *genreName; int genreIndex; genreName = [genre UCS4String]; genreIndex = id3_genre_number (genreName); free (genreName); return [[NSString stringWithFormat: @"%d", genreIndex] UCS4String]; } + (unsigned int) _updateComment: (char *) comment to: (NSString *) value ofTag: (Id3Tag *) tag { Id3Frame *frame; Id3Field *field; id3_ucs4_t *ucs4Value; unsigned int rc; rc = 0; if ([value length] > 0) { frame = id3_tag_findframe (tag, comment, 0); if (!frame) { frame = id3_frame_new (comment); id3_tag_attachframe (tag, frame); } field = id3_frame_field (frame, 1); field->type = ID3_FIELD_TYPE_STRINGLIST; // if (comment == ID3_FRAME_GENRE) // ucs4Value = [self _genreValue: value]; // else ucs4Value = [value UCS4String]; rc = id3_field_setstrings (field, 1, &ucs4Value); free (ucs4Value); } else while ((frame = id3_tag_findframe (tag, comment, 0)) && rc == 0) rc = id3_tag_detachframe (tag, frame); return rc; } + (BOOL) setTitle: (NSString *) title artist: (NSString *) artist album: (NSString *) album trackNumber: (NSString *) trackNumber genre: (NSString *) genre year: (NSString *) year ofFilename: (NSString *) filename { Id3File *id3File; Id3Tag *id3Tag; int rc; BOOL result; id3File = id3_file_open ([filename cString], ID3_FILE_MODE_READWRITE); if (id3File) { id3Tag = id3_file_tag (id3File); if (!id3Tag) { id3Tag = id3_tag_new (); id3_tag_clearframes (id3Tag); } rc = 0; if (title) rc += [self _updateComment: ID3_FRAME_TITLE to: title ofTag: id3Tag]; if (artist) rc += [self _updateComment: ID3_FRAME_ARTIST to: artist ofTag: id3Tag]; if (album) rc += [self _updateComment: ID3_FRAME_ALBUM to: album ofTag: id3Tag]; if (trackNumber) rc += [self _updateComment: ID3_FRAME_TRACK to: trackNumber ofTag: id3Tag]; if (genre) rc += [self _updateComment: ID3_FRAME_GENRE to: genre ofTag: id3Tag]; if (year) rc += [self _updateComment: ID3_FRAME_YEAR to: year ofTag: id3Tag]; if (rc == 0) result = (id3_file_update (id3File) == 0); else result = NO; id3_file_close (id3File); } else result = NO; return result; } @end Cynthiune-1.0.0/Bundles/GraphWriter/GNUmakefile000644 001751 000024 00000003245 11733555307 022060 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=GraphWriter BUNDLE_NAME=GraphWriter BUNDLE_EXTENSION=.output BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune GraphWriter_PRINCIPAL_CLASS=GraphWriter GraphWriter_LANGUAGES= GraphWriter_LOCALIZED_RESOURCE_FILES= # # Additional libraries # GraphWriter_LIBRARIES_DEPEND_UPON += # # Resource files # GraphWriter_RESOURCE_FILES= # # Header files # GraphWriter_HEADERS= \ GraphWriter.h # # Class files # GraphWriter_OBJC_FILES= \ GraphWriter.m # # C files # GraphWriter_C_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/GraphWriter/GNUmakefile.preamble000644 001751 000024 00000002062 11733555307 023642 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ESD_CFLAGS := $(shell esd-config --cflags) ESD_LIBS := $(shell esd-config --libs) ADDITIONAL_INCLUDE_DIRS += -I../.. $(ESD_CFLAGS) ADDITIONAL_LDFLAGS += -I../.. $(ESD_LIBS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/GraphWriter/GraphWriter.h000644 001751 000024 00000002430 11733546705 022412 0ustar00multixstaff000000 000000 /* GraphWriter.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef GraphWriter_H #define GraphWriter_H /* number of seconds to save */ #define numberOfSeconds 5 #define graphFilename "/tmp/Cynthiune.csv" @interface GraphWriter : NSObject { id parentPlayer; int rate; int channels; unsigned int stamp; short *buffer; char *position; unsigned int bufferLen; unsigned int remaining; unsigned int dataSize; } @end #endif /* GraphWriter_H */ Cynthiune-1.0.0/Bundles/GraphWriter/GraphWriter.m000644 001751 000024 00000006464 11733546705 022432 0ustar00multixstaff000000 000000 /* GraphWriter.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #import #import #import #import #import #import #import "GraphWriter.h" #define LOCALIZED(X) _b ([GraphWriter class], X) @implementation GraphWriter : NSObject - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } + (NSArray *) bundleClasses { return [NSArray arrayWithObject: [self class]]; } - (id) init { if ((self = [super init])) { buffer = NULL; bufferLen = 0; remaining = 0; position = NULL; stamp = 0.0; } return self; } - (BOOL) openDevice { return YES; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate { channels = numberOfChannels; rate = sampleRate; if (buffer) free (buffer); bufferLen = sizeof (short) * numberOfChannels * numberOfSeconds * sampleRate; // NSLog (@"bufferLen = %d bytes", bufferLen); remaining = bufferLen; buffer = malloc (bufferLen); position = (char *) buffer; return YES; } - (void) playChunk: (NSData *) chunk { unsigned int length; const char *sourcePtr; if (remaining > 0) { sourcePtr = [chunk bytes]; length = [chunk length]; if (remaining < length) length = remaining; memcpy (position, sourcePtr, length); remaining -= length; position += length; } [NSTimer scheduledTimerWithTimeInterval: 0.001 target: parentPlayer selector: @selector (chunkFinishedPlaying) userInfo: nil repeats: NO]; // [parentPlayer chunkFinishedPlaying]; } - (void) _writeBuffer { unsigned int counter; signed short *sample; FILE *graphFile; graphFile = fopen (graphFilename, "w+b"); if (graphFile) { for (counter = 0; counter < numberOfSeconds * rate * channels; counter += channels) { sample = buffer + counter; if (channels == 1) fprintf (graphFile, "%d,%d\n", counter, *sample); else fprintf (graphFile, "%d,%d,%d\n", (counter / 2), *sample, *(sample + 1)); } fclose (graphFile); } else NSLog (@"fopen returned null: %s", strerror (errno)); } - (void) closeDevice { if (buffer) { [self _writeBuffer]; free (buffer); buffer = NULL; } } @end Cynthiune-1.0.0/Bundles/FormatSkeleton/GNUmakefile000644 001751 000024 00000003160 11733555307 022553 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=$FORMAT$ BUNDLE_NAME=$FORMAT$ BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune $FORMAT$_PRINCIPAL_CLASS=$FORMAT$ # # Additional libraries # $FORMAT$_LIBRARIES_DEPEND_UPON += # # Resource files # $FORMAT$_RESOURCE_FILES= # # Header files # $FORMAT$_HEADERS= \ $FORMAT$.h # # Class files # $FORMAT$_OBJC_FILES= \ $FORMAT$.m # # C files # $FORMAT$_C_FILES= # # C++ files # $FORMAT$_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/FormatSkeleton/GNUmakefile.preamble000644 001751 000024 00000001653 11733555307 024346 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # ADDITIONAL_LDFLAGS += ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/FormatSkeleton/Skeleton.h000644 001751 000024 00000001752 11733546705 022445 0ustar00multixstaff000000 000000 /* $FORMAT$.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef $FORMAT$_H #define $FORMAT$_H @interface $FORMAT$ : NSObject { } @end #endif /* $FORMAT$_H */ Cynthiune-1.0.0/Bundles/FormatSkeleton/Skeleton.m000644 001751 000024 00000004077 11733546705 022455 0ustar00multixstaff000000 000000 /* $FORMAT$.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import "$FORMAT$.h" #define LOCALIZED(X) _b ([$FORMAT$ class], X) @implementation $FORMAT$ : NSObject + (NSArray *) bundleClasses { return [NSArray arrayWithObject: [self class]]; } - (BOOL) streamOpen: (NSString *) fileName { return NO; } + (BOOL) canTestFileHeaders { return NO; } + (BOOL) streamTestOpen: (NSString *) fileName { return NO; } + (NSString *) errorText: (int) error { return @""; } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { return 0; } - (int) lastError { return 0; } - (unsigned int) readChannels { return 0; } - (unsigned long) readRate { return 0; } - (unsigned int) readDuration { return 0; } - (NSString *) readTitle { return @""; } - (NSString *) readGenre { return @""; } - (NSString *) readArtist { return @""; } - (NSString *) readAlbum { return @""; } - (NSString *) readTrackNumber { return @""; } - (void) streamClose { } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: nil]; } - (BOOL) isSeekable { return NO; } - (void) seek: (unsigned int) aPos { } @end Cynthiune-1.0.0/Bundles/FLACTags/FLACTags.h000644 001751 000024 00000002122 11733546706 020565 0ustar00multixstaff000000 000000 /* FLACTags.h - this file is part of Cynthiune * * Copyright (C) 2006 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef FLACTags_H #define FLACTags_H #import #import #import @interface FLACTags : NSObject { } @end #endif /* FLACTags_H */ Cynthiune-1.0.0/Bundles/FLACTags/FLACTags.m000644 001751 000024 00000010113 11733557202 020562 0ustar00multixstaff000000 000000 /* FLACTags.m - this file is part of Cynthiune * * Copyright (C) 2006 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #define _GNU_SOURCE 1 #import #import #import #import #import #import #import "FLACTags.h" #define LOCALIZED(X) _b ([FLACTags class], X) static inline int keyPositionInArray (const char *key) { unsigned int count; signed int result, len; const char *keys[] = { "title", "artist", "album", "tracknumber", "genre", "date" }; result = -1; count = 0; while (count < 6 && result == -1) { len = strlen (keys[count]); if (strncasecmp (keys[count], key, len) == 0) result = count; else count++; } return result; } static inline void processComment (FLAC__StreamMetadata_VorbisComment_Entry *vcEntry, NSString **arrayOfValues[]) { char *key, *value, *equalsign; signed int position; key = strndup ((char *) vcEntry->entry, vcEntry->length); equalsign = strchr (key, '='); if (equalsign) { *equalsign = 0; value = equalsign + 1; position = keyPositionInArray (key); if (position > -1) SET (*arrayOfValues[position], [NSString stringWithUTF8String: value]); } free (key); } static FLAC__StreamDecoderWriteStatus writeCallback (const FLAC__StreamDecoder *fileDecoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *clientData) { return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; } static void metadataCallback (const FLAC__StreamDecoder *fileDecoder, const FLAC__StreamMetadata *metadata, void *clientData) { unsigned int count; if (metadata->type == FLAC__METADATA_TYPE_VORBIS_COMMENT) { count = 0; while (count < metadata->data.vorbis_comment.num_comments) { processComment (metadata->data.vorbis_comment.comments + count, clientData); count++; } } } static void errorCallback (const FLAC__StreamDecoder *fileDecoder, FLAC__StreamDecoderErrorStatus status, void *clientData) { NSLog (@"FLACTags: received error with status %d", status); } @implementation FLACTags : NSObject + (NSString *) bundleDescription { return @"A bundle to read/set the tags of FLAC files"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObject: @"Copyright (C) 2006 Wolfgang Sourdeau"]; } /* TagsReading protocol */ + (BOOL) readTitle: (NSString **) title artist: (NSString **) artist album: (NSString **) album trackNumber: (NSString **) trackNumber genre: (NSString **) genre year: (NSString **) year ofFilename: (NSString *) filename { FLAC__StreamDecoder *fileDecoder; BOOL result; NSString **arrayOfValues[] = { title, artist, album, trackNumber, genre, year }; fileDecoder = FLAC__stream_decoder_new(); if(FLAC__stream_decoder_init_file(fileDecoder, [filename cString], writeCallback, metadataCallback, errorCallback, arrayOfValues) != FLAC__STREAM_DECODER_INIT_STATUS_OK) { result = NO; } else { result = FLAC__stream_decoder_process_until_end_of_metadata(fileDecoder); } return result; } @end Cynthiune-1.0.0/Bundles/FLACTags/GNUmakefile000644 001751 000024 00000003155 11751032255 021136 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2006 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=FLACTags BUNDLE_NAME=FLACTags BUNDLE_EXTENSION=.tags BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune FLACTags_PRINCIPAL_CLASS=FLACTags # # Additional libraries # FLACTags_LIBRARIES_DEPEND_UPON += # # Resource files # FLACTags_RESOURCE_FILES= # # Header files # FLACTags_HEADERS= \ FLACTags.h # # Class files # FLACTags_OBJC_FILES= \ FLACTags.m # # C files # FLACTags_C_FILES= # # C++ files # FLACTags_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/FLACTags/GNUmakefile.preamble000644 001751 000024 00000002105 11751032255 022716 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2006 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_INCLUDE_DIRS += -I../.. FLAC_LIBS := -lFLAC ifeq (mingw32, $(GNUSTEP_TARGET_OS)) BUNDLE_LIBS += -L../../Frameworks/Cynthiune/obj endif BUNDLE_LIBS += $(FLAC_LIBS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/FLAC/GNUmakefile000644 001751 000024 00000003004 11751032255 020310 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=FLAC BUNDLE_NAME=FLAC BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune FLAC_PRINCIPAL_CLASS=FLAC # # Additional libraries # FLAC_LIBRARIES_DEPEND_UPON += # # Resource files # FLAC_RESOURCE_FILES= # # Header files # FLAC_HEADERS= \ FLAC.h # # Class files # FLAC_OBJC_FILES= \ FLAC.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/FLAC/FLAC.h000644 001751 000024 00000002776 12112243635 017131 0ustar00multixstaff000000 000000 /* FLAC.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef FLAC_H #define FLAC_H #import @class NSString; @protocol TagsReading; @interface FLAC : NSObject { FLAC__StreamDecoder *fileDecoder; unsigned int bitsPerSample; unsigned int duration; unsigned int channels; unsigned long rate; unsigned char *readBuffer; unsigned int position; unsigned int readBufferSize; } @end typedef struct { FLAC__StreamDecoder *fileDecoder; unsigned int bitsPerSample; unsigned int duration; unsigned int channels; unsigned long rate; unsigned char *readBuffer; unsigned int position; unsigned int readBufferSize; } CFLAC; #endif /* FLAC_H */ Cynthiune-1.0.0/Bundles/FLAC/FLAC.m000644 001751 000024 00000016140 11754426577 017147 0ustar00multixstaff000000 000000 /* FLAC.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #define _GNU_SOURCE 1 #import #import #import #import #import #import #import #import #import #import "FLAC.h" #define LOCALIZED(X) _b ([FLAC class], X) static FLAC__StreamDecoderWriteStatus writeCallback (const FLAC__StreamDecoder *fileDecoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *clientData) { CFLAC *cStream; unsigned int sample, channel; unsigned char *bufferPtr; cStream = clientData; if (cStream->readBuffer) free (cStream->readBuffer); cStream->readBufferSize = (frame->header.blocksize * cStream->channels * cStream->bitsPerSample / 8); cStream->readBuffer = malloc (cStream->readBufferSize); bufferPtr = cStream->readBuffer; if (cStream->bitsPerSample == 8) for (sample = 0; sample < frame->header.blocksize; sample++) for (channel = 0; channel < cStream->channels; channel++) *bufferPtr++ = buffer[channel][sample]; else if (cStream->bitsPerSample == 16) for (sample = 0; sample < frame->header.blocksize; sample++) for (channel = 0; channel < cStream->channels; channel++) { *bufferPtr++ = buffer[channel][sample] & 0x00FF; *bufferPtr++ = (buffer[channel][sample] & 0xff00) >> 8; } return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; } static void metadataCallback (const FLAC__StreamDecoder *fileDecoder, const FLAC__StreamMetadata *metadata, void *clientData) { CFLAC *cStream; if (metadata->type == FLAC__METADATA_TYPE_STREAMINFO) { cStream = clientData; cStream->channels = metadata->data.stream_info.channels; cStream->rate = metadata->data.stream_info.sample_rate; cStream->bitsPerSample = metadata->data.stream_info.bits_per_sample; cStream->duration = (metadata->data.stream_info.total_samples / metadata->data.stream_info.sample_rate); } } static void errorCallback (const FLAC__StreamDecoder *fileDecoder, FLAC__StreamDecoderErrorStatus status, void *clientData) { NSLog (@"FLAC: received error with status %d", status); } @implementation FLAC : NSObject + (NSString *) bundleDescription { return @"Extension plug-in for the Free Lossless Audio Codec"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2004 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return [NSArray arrayWithObjects: @"FLACTags", @"TagLib", nil]; } + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"fla", @"flac", nil]; } + (BOOL) canTestFileHeaders { return YES; } + (BOOL) streamTestOpen: (NSString *) fileName { FILE *_f; char buffer[4]; BOOL result; _f = fopen ([fileName cString], "r"); if (_f) { result = (fread (buffer, 1, 4, _f) == 4 && strncmp (buffer, "fLaC", 4) == 0); fclose (_f); } else result = NO; return result; } - (id) init { if ((self = [super init])) { duration = 0; channels = 0; rate = 0; position = 0; readBuffer = NULL; readBufferSize = 0; } return self; } - (BOOL) _initializeFileDecoderWithFilename: (NSString *) fileName { BOOL result; if(FLAC__stream_decoder_init_file(fileDecoder, [fileName cString], writeCallback, metadataCallback, errorCallback, self) != FLAC__STREAM_DECODER_INIT_STATUS_OK) { result = NO; } else { result = FLAC__stream_decoder_process_until_end_of_metadata (fileDecoder); } return result; } - (BOOL) streamOpen: (NSString *) fileName { BOOL result; fileDecoder = FLAC__stream_decoder_new(); if (fileDecoder) { if ([self _initializeFileDecoderWithFilename: fileName]) { result = YES; } else { FLAC__stream_decoder_delete (fileDecoder); fileDecoder = NULL; result = NO; } } else result = NO; return result; } - (void) streamClose { FLAC__stream_decoder_delete (fileDecoder); fileDecoder = NULL; } - (int) _processNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int readBytes; unsigned int maxSize; BOOL success; success = YES; if (position >= readBufferSize) { position = 0; success = FLAC__stream_decoder_process_single (fileDecoder); } if (success) { if (bitsPerSample == 8) { maxSize = bufferSize / 2; if (maxSize > (readBufferSize - position)) maxSize = readBufferSize - position; convert8to16 (readBuffer + position, buffer, maxSize); position += maxSize; readBytes = maxSize * 2; } else if (bitsPerSample == 16) { maxSize = bufferSize; if (maxSize > (readBufferSize - position)) maxSize = readBufferSize - position; memcpy (buffer, readBuffer + position, maxSize); position += maxSize; readBytes = maxSize; } else readBytes = -1; } else readBytes = -1; return readBytes; } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int readBytes; FLAC__StreamDecoderState state; state = FLAC__stream_decoder_get_state (fileDecoder); if (state == FLAC__STREAM_DECODER_READ_FRAME || state == FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC) readBytes = [self _processNextChunk: buffer withSize: bufferSize]; else if (state == FLAC__STREAM_DECODER_END_OF_STREAM) readBytes = 0; else readBytes = -1; return readBytes; } - (BOOL) isSeekable { return YES; } - (void) seek: (unsigned int) aPos { FLAC__stream_decoder_seek_absolute (fileDecoder, aPos * rate); } - (unsigned int) readChannels { return channels; } - (unsigned long) readRate { return rate; } - (Endianness) endianness { return NativeEndian; } - (unsigned int) readDuration { return duration; } - (void) dealloc { if (readBuffer) free (readBuffer); if (fileDecoder) FLAC__stream_decoder_delete (fileDecoder); [super dealloc]; } @end Cynthiune-1.0.0/Bundles/FLAC/GNUmakefile.preamble000644 001751 000024 00000002122 11751032255 022076 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ADDITIONAL_INCLUDE_DIRS += -I../.. FLAC_LIBS := -lFLAC ifeq (mingw32, $(GNUSTEP_TARGET_OS)) BUNDLE_LIBS += $(FLAC_LIBS) -L../../Frameworks/Cynthiune/obj endif BUNDLE_LIBS += $(FLAC_LIBS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/Esound/English.lproj/000755 001751 000024 00000000000 11742131623 021506 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Esound/Esound.h000644 001751 000024 00000002221 11733546707 020410 0ustar00multixstaff000000 000000 /* Esound.h - this file is part of Cynthiune * * Copyright (C) 2003, 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef Esound_H #define Esound_H #import @class NSFileHandle; @protocol CynthiuneBundle; @protocol Output; @interface Esound : NSObject { id parentPlayer; int rate; int channels; NSFileHandle *esd; } @end #endif /* Esound_H */ Cynthiune-1.0.0/Bundles/Esound/Esound.m000644 001751 000024 00000010543 11754426577 020430 0ustar00multixstaff000000 000000 /* Esound.m - this file is part of Cynthiune * * Copyright (C) 2003, 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _REENTRANT #define _REENTRANT 1 #endif #import #import #import #import #import #import #import #import #import #import #import #import #import "Esound.h" #import "EsoundPreference.h" #define LOCALIZED(X) _b ([Esound class], X) static NSNotificationCenter *nc = nil; static NSArray *loopModes; @implementation Esound : NSObject + (void) initialize { nc = [NSNotificationCenter defaultCenter]; loopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEventTrackingRunLoopMode, nil]; [loopModes retain]; } + (void) unload { [loopModes release]; } + (NSString *) bundleDescription { return @"Output plug-in for the Esound sound daemon"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2003, 2004 Wolfgang Sourdeau", nil]; } + (BOOL) isThreaded { return NO; } - (void) setParentPlayer: (id) aPlayer; { parentPlayer = aPlayer; } - (id) init { if ((self = [super init])) { esd = nil; } return self; } - (int) _openSocket { int esdSocket; NSString *hostString; EsoundPreference *esoundPreference; esoundPreference = [EsoundPreference instance]; if ([esoundPreference socketIsTCP]) { hostString = [esoundPreference tcpHostConnectString]; esdSocket = esd_play_stream ((ESD_BITS16 | ESD_STREAM | ESD_PLAY | channels), rate, [hostString cString], "Cynthiune stream"); } else esdSocket = esd_play_stream_fallback ((ESD_BITS16 | ESD_STREAM | ESD_PLAY | channels), rate, NULL, "Cynthiune stream"); return esdSocket; } - (BOOL) openDevice { int esdSocket, try; try = 0; esdSocket = [self _openSocket]; while (esdSocket < 1 && try < 5) { try++; [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.2]]; esdSocket = [self _openSocket]; } if (esdSocket > 0) { esd = [[NSFileHandle alloc] initWithFileDescriptor: esdSocket]; if (esd) [nc addObserver: self selector: @selector (_writeCompleteNotification:) name: GSFileHandleWriteCompletionNotification object: esd]; else close (esdSocket); } return (esd != nil); } - (void) closeDevice { [esd closeFile]; [esd release]; esd = nil; } - (BOOL) prepareDeviceWithChannels: (unsigned int) numberOfChannels andRate: (unsigned long) sampleRate withEndianness: (Endianness) e { BOOL result; result = YES; rate = sampleRate; switch (numberOfChannels) { case 1: channels = ESD_MONO; break; case 2: channels = ESD_STEREO; break; default: result = NO; } if (result && esd) { [self closeDevice]; result = [self openDevice]; } return result; } - (void) _writeCompleteNotification: (NSNotification *) aNotification { [parentPlayer chunkFinishedPlaying]; } - (void) playChunk: (NSData *) chunk { [esd writeInBackgroundAndNotify: chunk forModes: loopModes]; } @end Cynthiune-1.0.0/Bundles/Esound/EsoundPreference.h000644 001751 000024 00000003055 11733546707 022415 0ustar00multixstaff000000 000000 /* EsoundPreference.h - this file is part of $PROJECT_NAME_HERE$ * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef ESOUNDPREFERENCE_H #define ESOUNDPREFERENCE_H @class NSButton; @class NSBox; @class NSMutableDictionary; @class NSTextField; @class NSWindow; @interface EsoundPreference : NSObject { NSMutableDictionary *preference; NSWindow *prefsWindow; NSButton *unixBtn; NSButton *tcpBtn; NSTextField *hostField; NSTextField *portField; NSBox *connectionTypeBox; NSBox *tcpOptionsBox; NSTextField *hostLabel; NSTextField *portLabel; } - (EsoundPreference *) _init; - (BOOL) socketIsTCP; - (NSString *) tcpHostConnectString; /* radio buttons */ - (void) selectUnixBtn: (id) sender; - (void) selectTcpBtn: (id) sender; @end #endif /* ESOUNDPREFERENCE_H */ Cynthiune-1.0.0/Bundles/Esound/EsoundPreference.m000644 001751 000024 00000012717 11754426577 022434 0ustar00multixstaff000000 000000 /* EsoundPreference.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import "Esound.h" #import "EsoundPreference.h" #define LOCALIZED(X) _b ([Esound class], X) @implementation EsoundPreference : NSObject // Preference protocol + (id) instance { static EsoundPreference *singleton = nil; if (!singleton) singleton = [[self alloc] _init]; return singleton; } - (EsoundPreference *) _init { NSDictionary *tmpDict; if ((self = [super init])) { tmpDict = [[NSUserDefaults standardUserDefaults] dictionaryForKey: @"Esound"]; preference = [NSMutableDictionary dictionaryWithDictionary: tmpDict]; [preference retain]; } return self; } - (NSView *) preferenceSheet { NSView *aView; [NSBundle loadNibNamed: @"EsoundPreferences" owner: self]; aView = [prefsWindow contentView]; [aView retain]; [aView removeFromSuperview]; [prefsWindow release]; [aView autorelease]; return aView; } - (void) _initDefaults { NSString *socketType, *tcpHost, *tcpPort; static BOOL initted = NO; if (!initted) { socketType = [preference objectForKey: @"socketType"]; if (!socketType) { socketType = @"UNIX"; [preference setObject: socketType forKey: @"socketType"]; } tcpHost = [preference objectForKey: @"tcpHostname"]; if (!tcpHost) { tcpHost = @"localhost"; [preference setObject: tcpHost forKey: @"tcpHostname"]; } tcpPort = [preference objectForKey: @"tcpPort"]; if (!tcpPort) { tcpPort = @"16001"; [preference setObject: tcpPort forKey: @"tcpPort"]; } initted = YES; } } - (void) awakeFromNib { [self _initDefaults]; [connectionTypeBox setTitle: LOCALIZED (@"Connection type")]; [tcpOptionsBox setTitle: LOCALIZED (@"TCP options")]; [unixBtn setTitle: LOCALIZED (@"UNIX socket")]; [tcpBtn setTitle: LOCALIZED (@"TCP socket")]; [hostLabel setStringValue: LOCALIZED (@"Hostname (or IP)")]; [portLabel setStringValue: LOCALIZED (@"Port")]; if ([[preference objectForKey: @"socketType"] isEqualToString: @"UNIX"]) [self selectUnixBtn: self]; else [self selectTcpBtn: self]; [hostField setStringValue: [preference objectForKey: @"tcpHostname"]]; [portField setStringValue: [preference objectForKey: @"tcpPort"]]; } - (NSString *) preferenceTitle { return @"Esound"; } - (void) save { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject: preference forKey: @"Esound"]; [defaults synchronize]; } - (BOOL) socketIsTCP { NSString *socketType; [self _initDefaults]; socketType = [preference objectForKey: @"socketType"]; return [socketType isEqualToString: @"TCP"]; } - (NSString *) tcpHostConnectString { [self _initDefaults]; return [NSString stringWithFormat: @"%@:%@", [preference objectForKey: @"tcpHostname"], [preference objectForKey: @"tcpPort"]]; } - (void) selectUnixBtn: (id) sender { NSColor *disabledColor; disabledColor = [NSColor controlBackgroundColor]; [unixBtn setState: 1]; [tcpBtn setState: 0]; [hostField setEditable: NO]; [portField setEditable: NO]; [hostField setBackgroundColor: disabledColor]; [portField setBackgroundColor: disabledColor]; [portField display]; [hostField display]; [preference setObject: @"UNIX" forKey: @"socketType"]; } - (void) selectTcpBtn: (id) sender { NSColor *enabledColor; enabledColor = [NSColor textBackgroundColor]; [unixBtn setState: 0]; [tcpBtn setState: 1]; [hostField setEditable: YES]; [portField setEditable: YES]; [hostField setBackgroundColor: enabledColor]; [portField setBackgroundColor: enabledColor]; [portField display]; [hostField display]; [preference setObject: @"TCP" forKey: @"socketType"]; } - (void) controlTextDidEndEditing: (NSNotification *) notification { id object; NSString *prefKey; object = [notification object]; if (object == hostField) prefKey = @"tcpHostname"; else if (object == portField) prefKey = @"tcpPort"; else prefKey = @""; [preference setObject: [object stringValue] forKey: prefKey]; } @end Cynthiune-1.0.0/Bundles/Esound/GNUmakefile000644 001751 000024 00000003256 11733555307 021061 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=Esound BUNDLE_NAME=Esound BUNDLE_EXTENSION=.output BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune Esound_PRINCIPAL_CLASS=Esound Esound_LANGUAGES=English French Esound_LOCALIZED_RESOURCE_FILES=Localizable.strings # # Additional libraries # Esound_LIBRARIES_DEPEND_UPON += # # Resource files # Esound_RESOURCE_FILES= \ EsoundPreferences.gorm # # Header files # Esound_HEADERS= \ Esound.h \ EsoundPreference.h # # Class files # Esound_OBJC_FILES= \ Esound.m \ EsoundPreference.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/Esound/GNUmakefile.preamble000644 001751 000024 00000002072 11751032255 022632 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ESD_CFLAGS := $(shell esd-config --cflags) ESD_LIBS := $(shell esd-config --libs) ADDITIONAL_INCLUDE_DIRS += -I../.. $(ESD_CFLAGS) BUNDLE_LIBS += -I../.. $(ESD_LIBS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/Esound/EsoundPreferences.gorm/000755 001751 000024 00000000000 11742131623 023352 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Esound/EsoundPreferences.nib/000755 001751 000024 00000000000 11742131623 023156 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Esound/French.lproj/000755 001751 000024 00000000000 11742131623 021322 5ustar00multixstaff000000 000000 Cynthiune-1.0.0/Bundles/Esound/French.lproj/Localizable.strings000644 001751 000024 00000000612 11733546710 025164 0ustar00multixstaff000000 000000 ÿþ"Connection type" = "Type de connexion"; "TCP options" = "Options TCP"; "UNIX socket" = "soquet UNIX"; "TCP socket" = "soquet TCP/IP"; "Hostname (or IP)" = "Nom d'hôte (ou IP)"; "Port" = "Port"; Cynthiune-1.0.0/Bundles/Esound/EsoundPreferences.nib/classes.nib000644 001751 000024 00000000710 11733546710 025312 0ustar00multixstaff000000 000000 { IBClasses = ( { ACTIONS = {hostAction = id; portAction = id; selectTcpBtn = id; selectUnixBtn = id; }; CLASS = EsoundPreferences; LANGUAGE = ObjC; OUTLETS = {hostField = id; portField = id; prefsWindow = id; tcpBtn = id; unixBtn = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }Cynthiune-1.0.0/Bundles/Esound/EsoundPreferences.nib/info.nib000644 001751 000024 00000000702 11733546710 024611 0ustar00multixstaff000000 000000 IBDocumentLocation 38 71 356 240 0 0 1024 746 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 Cynthiune-1.0.0/Bundles/Esound/EsoundPreferences.nib/keyedobjects.nib000644 001751 000024 00000013170 11733546710 026334 0ustar00multixstaff000000 000000 bplist00ÔÝY$archiverX$versionX$objectsT$top_NSKeyedArchiver† ¯  (,-348<HOghlpqsz~’•™ ¡º»ÃÄÇÌÍÎÒÍÖÙÚßåèéìíñòôõöúûÃÿ  #-./2478:=ADEFIJNORSUWX[\^_`õacdefghklprsuvyz}€‚ƒ…†ˆ‰‹Œ‘“•£ã¤¥ã>k¦§¨©ª«¬®ÆÇÈÉÊËÌÍÎÏ,ÐÑÒÓÔÕÖþרÙÚU$nullß  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues€€Ÿ$€€€ˆ€†€€x€t€‡€…€€w€vÒ )*+[NSClassName€€_EsoundPreferencesÒ./01Z$classnameX$classes^NSCustomObject¢02XNSObject_IBCocoaFrameworkÒ 567ZNS.objects€ Ò./9:\NSMutableSet£9;2UNSSetÒ 5=>€+©?@ABCDEFG€ €c€e€g€j€l€n€p€rÔ IJKLMNWNSLabel]NSDestinationXNSSource€b€a€ ÜP QRSTUVWXYZ[\]^_`abcdef\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClass€€`px€ €^€_€ €]€€_{{151, 444}, {281, 212}}Ò ijkYNS.string€ VWindowÒ./mn_NSMutableString£mo2XNSStringXNSWindowÒ ijrTViewÔ tuvwxy_NSNextResponderZNSSubviewsWNSFrame€-€€\Ò 5={¢|}€€6Üt u€‚ƒ„v…†‡[ˆ‰Šc‹ŒŽ[]NSTransparentYNSOffsets_NSTitlePosition\NSBorderType]NSContentView[NSTitleCellYNSBoxType[NSSuperview€5€€/€€0€.Ò 5=‘¡ŒÕ tuv†w|“”|€€,Ò 5=–¢—˜€€'Ö tšv›†œŒžŸŒVNSCellYNSEnabled€&€€ _{{75, 35}, {86, 18}}Þ ¢£¤¥¦§¨©ª«¬­®¯°±°—²³c´µ¶·¸¹_NSKeyEquivalentYNSSupport_NSAlternateContents]NSControlView\NSCellFlags2_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags[NSCellFlags]NSNormalImage_NSPeriodicInterval_NSAlternateImageZNSContents€%€$€ÈH€?VSystem_textBackgroundColorÓ 0'(1‹WNSWhiteB1Ò./$3¢$2Õ $%&'(5*6,€D€CYtextColorÓ 0'(9‹B0Ò./;<_NSTextFieldCell¤;Þš2Ò./>?[NSTextField¦>@âãä2\%NSTextFieldÖ tšv›†BCŸ€I€H_{{112, 12}, {111, 22}}Ù £¥¦ª®ø !Ÿ"°Ö tšv›†GHŸ€L€K_{{11, 44}, {96, 14}}Ø £¥¦ª®K± LêM€N€Q€M_Hostname (or IP) Õ $%&'(P*Q,€P€O\controlColorÓ 0'(T‹I0.666667Õ $%&'(5*V,€R_controlTextColorÖ tšv›†YZŸ€U€T_{{81, 14}, {26, 14}}Ø £¥¦ª®K± Lê]€VUPort _{{2, 2}, {237, 75}}_{{20, 20}, {241, 95}}Õ £¦ª®÷øêb€[[TCP options_{{1, 9}, {281, 212}}_{{0, 0}, {1024, 746}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò./ij_NSWindowTemplate¢i2[prefsWindowÒ./mn_NSNibOutletConnector£mo2^NSNibConnectorÔ IJKLq€dYhostFieldÔ IJKLt€fYportFieldÔ IJKwx€i€h[hostAction:Ò./{|_NSNibControlConnector£{o2Ô IJKw~€k[portAction:Ô IJKL˜€mVtcpBtnÔ IJKL„—€oWunixBtnÔ IJKw‡—€q]selectUnixBtnÔ IJKwŠ˜€s\selectTcpBtnÒ 5Ž€u¬—˜|}ŒN[Ò./ð¢ð2Ò 5’¬Œ}Œ[[|NÒ 5”¬—}|ŒN˜Ò 5–¬—˜™š›œžŸ ¡¢€y€z€{€|€}€~€€€€€‚€ƒ€„YNSButton4VNSBox1\File's Owner]NSTextField12]NSTextField11\NSTextField1ZNSButton41Ò 57Ò 57Ò 5­¯BŒ—@FN}D[C|GA?E˜Ò 5¯¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅ€‰€Š€‹€Œ€€Ž€€€‘€’€“€”€•€–€—€˜€™€š€›€œ€€ž"  # !Ò./ÛÜ^NSIBObjectData¢Û2ÑÞß]IB.objectdata€#,5:LQ”šÙçîø 1?M[ft€Œž ¢¤¦¨ª¬®°²´¶¸º¼ÅÑÓÕéòý#6?JLMVcjpy{Ž’”–˜šœž ±¹ÇÐÒÔÖ,6@Mas€Žšœž£¥§©«­¯±³µÐÙãåìõ ).?Q\dfhjsxz|­»Å×äòþ!#%.1FHJSXZ\u|†ˆŠŒ¤Ýïù*<KYesˆ›¦¨ª¬±³¸ÁÃÅÇÉÕæíôýÿ%*7FHJLTbk~…™¢®°²»ÑÖ×àíø    % 0 : A M f h j º ¿ Á Ì Õ ä ë ó   2 9 N P R T f w | ~ € ‰ Ž — ¦ × Ù Û Ý ß á ê í         9 ; = ? X } ‘ ± ³ µ º ¼ Å Ú â ð ü     0 = E H Q V k m o y † ‰ ’ ¤ ­ ¶ Â Ï Ü õ ÷ ù  7 P R T k Œ Ž ’ § ¼ ¾ À Í Ú ä ù û')+Bcek™®°¼Óëö/4@I`gv‡‰“¤¦°ÁÃÅÑÚòù  )+2CEM^`nŽ—™²»ÀÉâë &(*,.02468:<>HO\jx…™¢«Úã "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfo~ƒˆ–à˜Cynthiune-1.0.0/Bundles/Esound/EsoundPreferences.gorm/data.classes000644 001751 000024 00000000751 11733546710 025654 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; EsoundPreferences = { Actions = ( "selectTcpBtn:", "selectUnixBtn:" ); Outlets = ( prefsWindow, tcpBtn, unixBtn, hostField, portField, portLabel, hostLabel, tcpOptionsBox, connectionTypeBox ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "selectTcpBtn:", "selectUnixBtn:" ); Super = NSObject; }; }Cynthiune-1.0.0/Bundles/Esound/EsoundPreferences.gorm/data.info000644 001751 000024 00000000270 11733546710 025146 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamCynthiune-1.0.0/Bundles/Esound/EsoundPreferences.gorm/objects.gorm000644 001751 000024 00000011215 11733546710 025700 0ustar00multixstaff000000 000000 GNUstep archive00002b5e:0000001e:00000088:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary& 01NSString&%NSOwner0±&%EsoundPreferences0±&% Box101NSBox1NSView1 NSResponder% A A  C„€ B   C„€ B &01 NSMutableArray1 NSArray&0±% @à @à C{ B`  C{ B`&0 ± &0 1 NSTextField1 NSControl% C Að B¾ A¨  B¾ A¨&0 ± &%0 1 NSTextFieldCell1 NSActionCell1NSCell0 ±&%Text01NSFont%&&&&&&&&0%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0± % C @€ B` A¨  B` A¨&0± &%0± 0±&%Text°&&&&&&&&0%’0±°0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0± % A B C A  C A&0± &%0 ± 0!±&%Hostname (or IP)°&&&&&&&&0%’0"±°0#±&%System0$±&%textBackgroundColor0%±°°#0&±& % textColor’0'± % BÊ @à B A  B A&0(± &%0)± 0*±&%Port°&&&&&&&&0%’0+±°0,±&%System0-±&%textBackgroundColor0.±°°,0/±& % textColor’00± 01±& % TCP options°&&&&&&&&0%’02±°03±&%System04±&%windowBackgroundColor05±°06±&%System07±& % textColor @  @ %%08±& %  TextField1°09±& %  TextField2°0:±& % TextField° 0;±& %  TextField3°'0<±& % GormNSWindow0=1GSWindowTemplate1GSClassSwapper0>±&%NSWindow1NSWindow%  CŽ€ C?&% Cu D À0?±%  CŽ€ C?  CŽ€ C?&0@± &0A±% A B´ C„€ B¶  C„€ B¶&0B± &0C±% @ @ C‚€ B  C‚€ B&0D± &0E1NSButton% B° B0 Bè A¸  Bè A¸&0F± &%0G1 NSButtonCell0H±& % UNIX socket0I1NSImage0J1NSMutableString&% common_RadioOff°&&&&&&&&%’0K±&0L±&0M±0N±&% common_RadioOn&&&0O±% B° Ap Bè AÀ  Bè AÀ&0P± &%0Q±0R±& % TCP socket°I°&&&&&&&&%’0S±&0T±&°M&&&0U± 0V±&%Connection type°&&&&&&&&0%’°20W±°0X±&%System0Y±& % textColor %%°°20Z±&%Window0[±&%Esound preferences°[ ?€ B F@ F@%0\±0]±&%NSApplicationIcon&   D€ D@0^±&%GSCustomClassMap0_±&0`±&%Button°E0a±& % NSVisible0b± &0c±&%Box°A0d±&% Button1°O0e± &0f1NSNibConnector°<°0g1NSNibOutletConnector°°<0h±& % prefsWindow0i±°c0j±°0k±°`0l±°d0m1NSNibControlConnector°`°0n±&%selectUnixBtn:0o±°d°0p±& % selectTcpBtn:0q±°:0r±°80s±°90t±°;0u±°°:0v±& % hostField0w±°°80x±& % portField0y±°°`0z±&%unixBtn0{±°°d0|±&%tcpBtn0}±°°90~±& % hostLabel0±°°;0€±& % portLabel0±°°0‚±& % tcpOptionsBox0ƒ±°°c0„±&%connectionTypeBox0…±°:°0†±&% delegate0‡±°8°°†0ˆ1 GSMutableSet1 NSMutableSet1NSSet&°=Cynthiune-1.0.0/Bundles/Esound/English.lproj/Localizable.strings000644 001751 000024 00000000572 11733546710 025355 0ustar00multixstaff000000 000000 ÿþ"Connection type" = "Connection type"; "TCP options" = "TCP options"; "UNIX socket" = "UNIX socket"; "TCP socket" = "TCP socket"; "Hostname (or IP)" = "Hostname (or IP)"; "Port" = "Port"; Cynthiune-1.0.0/Bundles/AudioFile/AudioFile.m000644 001751 000024 00000012626 11754426577 021444 0ustar00multixstaff000000 000000 /* AudioFile.m - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * 2012 The Free Software Foundation * * Author: Wolfgang Sourdeau * Riccardo Mottola * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #include #import #import #import #import "AudioFileBundle.h" @implementation AudioFile : NSObject + (void) initialize { afSetErrorHandler (NULL); } // CynthiuneBundle Protocol + (NSString *) bundleDescription { return @"Extension plug-in for AIFF, AU, AVR, IFF, NIST, SND and WAV audio formats"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2004 Wolfgang Sourdeau", nil]; } + (NSArray *) compatibleTagBundles { return nil; } // Player Protocol + (NSArray *) acceptedFileExtensions { return [NSArray arrayWithObjects: @"aif", @"aifc", @"aiff", @"au", @"avr", @"iff", @"nist", @"snd", @"wav", nil]; } + (BOOL) canTestFileHeaders { return YES; } + (BOOL) streamTestOpen: (NSString *) fileName { AFfilehandle testFile; int vers, fileFormat; BOOL result; result = NO; testFile = afOpenFile ([fileName cString], "r", NULL); if (testFile) { fileFormat = afGetFileFormat (testFile, &vers); result = (fileFormat != AF_FILE_UNKNOWN); afCloseFile (testFile); } return result; } - (BOOL) streamOpen: (NSString *) fileName { int format; file = afOpenFile ([fileName cString], "r", NULL); if (file) { frameSize = afGetVirtualFrameSize(file, AF_DEFAULT_TRACK, 1); afGetVirtualSampleFormat (file, AF_DEFAULT_TRACK, &format, &width); if (format == AF_SAMPFMT_UNSIGNED) afSetVirtualSampleFormat (file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, width); } return (file != NULL); } - (void) streamClose { afCloseFile (file); } - (int) _readNext8BitChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { int size, conversionSize; unsigned char *conversionBuffer; conversionBuffer = malloc (bufferSize); conversionSize = (int) (afReadFrames (file, AF_DEFAULT_TRACK, conversionBuffer, (int) (bufferSize / frameSize / 2))); size = conversionSize * frameSize * 2; convert8to16 (conversionBuffer, buffer, conversionSize); free (conversionBuffer); return size; } - (int) readNextChunk: (unsigned char *) buffer withSize: (unsigned int) bufferSize { return ((width == 16) ? (int) (afReadFrames (file, AF_DEFAULT_TRACK, buffer, (int) (bufferSize / frameSize)) * frameSize) : [self _readNext8BitChunk: buffer withSize: bufferSize] ); } - (unsigned int) readChannels { return afGetChannels (file, AF_DEFAULT_TRACK); } - (unsigned long) readRate { return (unsigned long) afGetRate (file, AF_DEFAULT_TRACK); } - (Endianness) endianness { return NativeEndian; } - (unsigned int) readDuration { return (afGetTrackBytes (file, AF_DEFAULT_TRACK) / (afGetChannels (file, AF_DEFAULT_TRACK) * afGetRate (file, AF_DEFAULT_TRACK) * width / 8)); } - (NSString *) _getAudioFileIDOfType: (int) idType withMax: (int) max { int *ids; int id, count, size; NSString *result; char *cResult; result = @""; ids = malloc (max); afGetMiscIDs (file, ids); for (count = 0; count < max; count++) { id = *(ids + count); if (afGetMiscType (file, id) == idType) { size = afGetMiscSize (file, id); if (size > 0) { cResult = malloc (size + 1); *(cResult + size) = 0; afReadMisc (file, id, cResult, size); result = [NSString stringWithCString: cResult]; free (cResult); } } } free (ids); return result; } - (NSString *) _getAudioFileIDOfType: (int) idType { int max; NSString *result; max = afGetMiscIDs (file, NULL); if (max > 0) result = [self _getAudioFileIDOfType: idType withMax: max]; else result = @""; return result;; } - (NSString *) readTitle { return [self _getAudioFileIDOfType: AF_MISC_NAME]; } - (NSString *) readGenre { return @""; } - (NSString *) readArtist { return [self _getAudioFileIDOfType: AF_MISC_AUTH]; } - (NSString *) readAlbum { return @""; } - (NSString *) readYear { return [self _getAudioFileIDOfType: AF_MISC_ICRD]; } - (NSString *) readTrackNumber { return @""; } - (BOOL) isSeekable { return NO; } - (void) seek: (unsigned int) aPos { } @end Cynthiune-1.0.0/Bundles/AudioFile/AudioFileBundle.h000644 001751 000024 00000002017 11733546703 022551 0ustar00multixstaff000000 000000 /* AudioFile.h - this file is part of Cynthiune * * Copyright (C) 2004 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ @protocol CynthiuneBundle; @protocol Format; @interface AudioFile : NSObject { AFfilehandle file; int width; float frameSize; } @end Cynthiune-1.0.0/Bundles/AudioFile/GNUmakefile000644 001751 000024 00000002670 11763436013 021457 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2003, 2004 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME=AudioFile BUNDLE_NAME=AudioFile BUNDLE_EXTENSION=.format BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune AudioFile_PRINCIPAL_CLASS=AudioFile AudioFile_LIBRARIES_DEPEND_UPON += AudioFile_RESOURCE_FILES= AudioFile_HEADERS= \ AudioFile.h AudioFile_OBJC_FILES= \ AudioFile.m ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/AudioFile/GNUmakefile.preamble000644 001751 000024 00000002656 11763436013 023251 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2004 Wolfgang Sourdeau # 2012 The GAP team # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # If you use an older version of audiofile or don't have pkg-config # reenable these. I don't know how to make some sort of shell-check for # audiofile-config and give priority to it if exists #AUDIOFILE_CFLAGS := $(shell audiofile-config --cflags) #AUDIOFILE_LIBS := $(shell audiofile-config --libs) AUDIOFILE_CFLAGS := $(shell pkg-config --cflags audiofile) AUDIOFILE_LIBS := $(shell pkg-config --libs audiofile) ADDITIONAL_INCLUDE_DIRS += -I../.. $(AUDIOFILE_CFLAGS) BUNDLE_LIBS += $(AUDIOFILE_LIBS) ADDITIONAL_OBJCFLAGS += -Wall -Wno-import Cynthiune-1.0.0/Bundles/ASFTags/ASFMetaData.h000644 001751 000024 00000015151 11733546703 021162 0ustar00multixstaff000000 000000 /* ASFMetaData.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef ASFMETADATA_H #define ASFMETADATA_H #define ASF_Header_Object "75B22630-668E-11CF-A6D9-00AA0062CE6C" #define ASF_Data_Object "75B22636-668E-11CF-A6D9-00AA0062CE6C" #define ASF_Simple_Index_Object "33000890-E5B1-11CF-89F4-00A0C90349CB" #define ASF_Index_Object "D6E229D3-35DA-11D1-9034-00A0C90349BE" #define ASF_Media_Object_Index_Object "FEB103F8-12AD-4C64-840F-2A1D2F7AD48C" #define ASF_Timecode_Index_Object "3CB73FD0-0C4A-4803-953D-EDF7B6228F0C" #define ASF_File_Properties_Object "8CABDCA1-A947-11CF-8EE4-00C00C205365" #define ASF_Stream_Properties_Object "B7DC0791-A9B7-11CF-8EE6-00C00C205365" #define ASF_Header_Extension_Object "5FBF03B5-A92E-11CF-8EE3-00C00C205365" #define ASF_Codec_List_Object "86D15240-311D-11D0-A3A4-00A0C90348F6" #define ASF_Script_Command_Object "1EFB1A30-0B62-11D0-A39B-00A0C90348F6" #define ASF_Marker_Object "F487CD01-A951-11CF-8EE6-00C00C205365" #define ASF_Bitrate_Mutual_Exclusion_Object "D6E229DC-35DA-11D1-9034-00A0C90349BE" #define ASF_Error_Correction_Object "75B22635-668E-11CF-A6D9-00AA0062CE6C" #define ASF_Content_Description_Object "75B22633-668E-11CF-A6D9-00AA0062CE6C" #define ASF_Extended_Content_Description_Object "D2D0A440-E307-11D2-97F0-00A0C95EA850" #define ASF_Content_Branding_Object "2211B3FA-BD23-11D2-B4B7-00A0C955FC6E" #define ASF_Stream_Bitrate_Properties_Object "7BF875CE-468D-11D1-8D82-006097C9A2B2" #define ASF_Content_Encryption_Object "2211B3FB-BD23-11D2-B4B7-00A0C955FC6E" #define ASF_Extended_Content_Encryption_Object "298AE614-2622-4C17-B935-DAE07EE9289C" #define ASF_Digital_Signature_Object "2211B3FC-BD23-11D2-B4B7-00A0C955FC6E" #define ASF_Padding_Object "1806D474-CADF-4509-A4BA-9AABCB96AAE8" #define ASF_Extended_Stream_Properties_Object "14E6A5CB-C672-4332-8399-A96952065B5A" #define ASF_Advanced_Mutual_Exclusion_Object "A08649CF-4775-4670-8A16-6E35357566CD" #define ASF_Group_Mutual_Exclusion_Object "D1465A40-5A79-4338-B71B-E36B8FD6C249" #define ASF_Stream_Prioritization_Object "D4FED15B-88D3-454F-81F0-ED5C45999E24" #define ASF_Bandwidth_Sharing_Object "A69609E6-517B-11D2-B6AF-00C04FD908E9" #define ASF_Language_List_Object "7C4346A9-EFE0-4BFC-B229-393EDE415C85" #define ASF_Metadata_Object "C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA" #define ASF_Metadata_Library_Object "44231C94-9498-49D1-A141-1D134E457054" #define ASF_Index_Parameters_Object "D6E229DF-35DA-11D1-9034-00A0C90349BE" #define ASF_Media_Object_Index_Parameters_Object "6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7" #define ASF_Timecode_Index_Parameters_Object "F55E496D-9797-4B5D-8C8B-604DFE9BFB24" #define ASF_Compatibility_Object "75B22630-668E-11CF-A6D9-00AA0062CE6C" #define ASF_Advanced_Content_Encryption_Object "43058533-6981-49E6-9B74-AD12CB86D58C" #define ASF_Audio_Media "F8699E40-5B4D-11CF-A8FD-00805F5C442B" #define ASF_Video_Media "BC19EFC0-5B4D-11CF-A8FD-00805F5C442B" #define ASF_Command_Media "59DACFC0-59E6-11D0-A3AC-00A0C90348F6" #define ASF_JFIF_Media "B61BE100-5B4E-11CF-A8FD-00805F5C442B" #define ASF_Degradable_JPEG_Media "35907DE0-E415-11CF-A917-00805F5C442B" #define ASF_File_Transfer_Media "91BD222C-F21C-497A-8B6D-5AA86BFC0185" #define ASF_Binary_Media "3AFB65E2-47EF-40F2-AC2C-70A90D71D343" #define ASF_Web_Stream_Media_Subtype "776257D4-C627-41CB-8F81-7AC7FF1C40CC" #define ASF_Web_Stream_Format "DA1E6B13-8359-4050-B398-388E965BF00C" #define ASF_No_Error_Correction "20FB5700-5B55-11CF-A8FD-00805F5C442B" #define ASF_Audio_Spread "BFC3CD50-618F-11CF-8BB2-00AA00B4E220" #define ASF_Reserved_1 "ABD3D211-A9BA-11cf-8EE6-00C00C205365" #define ASF_Content_Encryption_System_Windows_Media_DRM_Network_Devices "7A079BB6-DAA4-4e12-A5CA-91D38DC11A8D" #define ASF_Reserved_2 "86D15241-311D-11D0-A3A4-00A0C90348F6" #define ASF_Reserved_3 "4B1ACBE3-100B-11D0-A39B-00A0C90348F6" #define ASF_Reserved_4 "4CFEDB20-75F6-11CF-9C0F-00A0C90349CB" #define ASF_Mutex_Language "D6E22A00-35DA-11D1-9034-00A0C90349BE" #define ASF_Mutex_Bitrate "D6E22A01-35DA-11D1-9034-00A0C90349BE" #define ASF_Mutex_Unknown "D6E22A02-35DA-11D1-9034-00A0C90349BE" #define ASF_Bandwidth_Sharing_Exclusive "AF6060AA-5197-11D2-B6AF-00C04FD908E9" #define ASF_Bandwidth_Sharing_Partial "AF6060AB-5197-11D2-B6AF-00C04FD908E9" #define ASF_Payload_Extension_System_Timecode "399595EC-8667-4E2D-8FDB-98814CE76C1E" #define ASF_Payload_Extension_System_File_Name "E165EC0E-19ED-45D7-B4A7-25CBD1E28E9B" #define ASF_Payload_Extension_System_Content_Type "D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC" #define ASF_Payload_Extension_System_Pixel_Aspect_Ratio "1B1EE554-F9EA-4BC8-821A-376B74E4C4B8" #define ASF_Payload_Extension_System_Sample_Duration "C6BD9450-867F-4907-83A3-C77921B733AD" #define ASF_Payload_Extension_System_Encryption_Sample_ID "6698B84E-0AFA-4330-AEB2-1C0A98D7A44D" typedef struct ASFObject { unsigned char guid[16]; unsigned long long size; } __attribute((packed)) ASFObject; typedef struct HeaderObject { unsigned char guid[16]; unsigned long long size; unsigned int number; unsigned char res1; unsigned char res2; } __attribute((packed)) HeaderObject; typedef struct ContentDescriptionObject { unsigned char guid[16]; unsigned long long size; unsigned short title_length; unsigned short author_length; unsigned short copyright_length; unsigned short description_length; unsigned short rating_length; } __attribute((packed)) ContentDescriptionObject; typedef struct ExtendedContentDescriptionObject { unsigned char guid[16]; unsigned long long size; unsigned short descriptors_count; } __attribute((packed)) ExtendedContentDescriptionObject; enum { tUNICODE_STRING = 0, tBYTE_ARRAY = 1, tBOOLEAN = 2, tDWORD = 3, tQWORD = 4, tWORD = 5 }; typedef struct ContentDescriptor { unsigned short name_length; unsigned char *name; unsigned short value_datatype; unsigned short value_length; unsigned char *value; } __attribute((packed)) ContentDescriptor; #endif /* ASFMETADATA_H */ Cynthiune-1.0.0/Bundles/ASFTags/ASFTags.h000644 001751 000024 00000002255 11733546702 020400 0ustar00multixstaff000000 000000 /* ASFTags.h - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef ASFTags_H #define ASFTags_H #import #import typedef struct FileMetaData { NSString *title; NSString *author; NSMutableDictionary *extendedDictionary; } FileMetaData; @interface ASFTags : NSObject { } @end #endif /* ASFTags_H */ Cynthiune-1.0.0/Bundles/ASFTags/ASFTags.m000644 001751 000024 00000025743 11733546702 020414 0ustar00multixstaff000000 000000 /* ASFTags.m - this file is part of Cynthiune * * Copyright (C) 2005 Wolfgang Sourdeau * * Author: Wolfgang Sourdeau * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #import #import #import "ASFMetaData.h" #import "ASFTags.h" #define LOCALIZED(X) _b ([ASFTags class], X) @interface NSString (CynthiuneASFTagsExtension) + (NSString *) stringWithASFText: (unsigned char *) text length: (unsigned int) length; @end @implementation NSString (CynthiuneASFTagsExtension) + (NSString *) stringWithASFText: (unsigned char *) text length: (unsigned int) length { NSString *string; unsigned int realLength; realLength = length; while (*(text + realLength - 2) == 0 && *(text + realLength - 1) == 0 && realLength > 0) realLength -= 2; string = [[self alloc] initWithBytes: text length: realLength encoding: NSUnicodeStringEncoding]; [string autorelease]; return string; } @end static char * convertGUID (const unsigned char GUID[]) { char *cGUID; cGUID = malloc (37); sprintf (cGUID, "%.8lX-%.4X-%.4X-%.2X%.2X-%.2X%.2X%.2X%.2X%.2X%.2X", *((unsigned long *) GUID), *((unsigned short *) GUID + 2), *((unsigned short *) GUID + 3), *((unsigned char *) GUID + 8), *((unsigned char *) GUID + 9), *((unsigned char *) GUID + 10), *((unsigned char *) GUID + 11), *((unsigned char *) GUID + 12), *((unsigned char *) GUID + 13), *((unsigned char *) GUID + 14), *((unsigned char *) GUID + 15)); return cGUID; } static int objectIsOfType (ASFObject *object, const char GUID[]) { char *cGUID; int result; cGUID = convertGUID (object->guid); result = (strncmp (GUID, cGUID, 16) == 0); free (cGUID); return result; } static void parseContentDescription (ContentDescriptionObject *object, FileMetaData *data) { unsigned char *ptr; ptr = (unsigned char *) object + sizeof (ContentDescriptionObject); data->title = ((object->title_length) ? [NSString stringWithASFText: ptr length: object->title_length] : nil); ptr += object->title_length; data->author = ((object->author_length) ? [NSString stringWithASFText: ptr length: object->author_length] : nil); } static inline unsigned char * asfstrndup (unsigned char *text, unsigned int length) { unsigned char *string; string = malloc (length); memcpy (string, text, length); return string; } static ContentDescriptor * parseDescriptor (unsigned char *object) { ContentDescriptor *descriptor; unsigned char *ptr; ptr = object; descriptor = malloc (sizeof (ContentDescriptor)); descriptor->name_length = *ptr + 256 * *(ptr + 1); ptr += 2; descriptor->name = asfstrndup (ptr, descriptor->name_length); ptr += descriptor->name_length; descriptor->value_datatype = *((unsigned short *) ptr); ptr += 2; descriptor->value_length = *ptr + 256 * *(ptr + 1); ptr += 2; descriptor->value = asfstrndup (ptr, descriptor->value_length); return descriptor; } static inline unsigned int sizeOfDescriptor (const ContentDescriptor *descriptor) { return (6 + descriptor->name_length + descriptor->value_length); } static ContentDescriptor ** parseDescriptors (ExtendedContentDescriptionObject *object) { ContentDescriptor **descriptors; ContentDescriptor *descriptor; unsigned int count; unsigned char *ptr; descriptors = malloc (sizeof (ContentDescriptor *) * object->descriptors_count); ptr = (unsigned char *) object + sizeof (ExtendedContentDescriptionObject); for (count = 0; count < object->descriptors_count; count++) { descriptor = parseDescriptor (ptr); *(descriptors + count) = descriptor; ptr += sizeOfDescriptor (descriptor); } return descriptors; } static NSString * extractValueFromDescriptor (ContentDescriptor *descriptor) { NSString *value; switch (descriptor->value_datatype) { case tUNICODE_STRING: value = [NSString stringWithASFText: descriptor->value length: descriptor->value_length]; break; case tBYTE_ARRAY: value = [NSString stringWithCString: (char *) descriptor->value length: descriptor->value_length]; break; case tBOOLEAN: value = [NSString stringWithFormat: @"%s", (*((unsigned long *) descriptor->value) ? "YES" : "NO")]; break; case tWORD: value = [NSString stringWithFormat: @"%d", *((unsigned long *) descriptor->value)]; break; case tDWORD: value = [NSString stringWithFormat: @"%d", *((unsigned long *) descriptor->value)]; break; case tQWORD: value = [NSString stringWithFormat: @"%l", *((unsigned long long *) descriptor->value)]; break; default: NSLog (@"unknown datatype: '%d'", descriptor->value_datatype); value = nil; } return value; } static void FillExtendedDictionary (ContentDescriptor * const *descriptors, unsigned int max, NSMutableDictionary *dictionary) { ContentDescriptor *descriptor; unsigned int count; NSString *name; for (count = 0; count < max; count++) { descriptor = descriptors[count]; if (descriptor->name_length) { name = [NSString stringWithASFText: descriptor->name length: descriptor->name_length]; [dictionary setObject: extractValueFromDescriptor (descriptor) forKey: name]; } } } static void parseExtendedContentDescription (ExtendedContentDescriptionObject *object, FileMetaData *data) { unsigned int count; ContentDescriptor **descriptors; descriptors = parseDescriptors (object); FillExtendedDictionary (descriptors, object->descriptors_count, data->extendedDictionary); for (count = 0; count < object->descriptors_count; count++) { free (descriptors[count]->name); free (descriptors[count]->value); free (descriptors[count]); } free (descriptors); } static FileMetaData * parseHeaderData (void *data, int size) { char *ptr; ASFObject *optr; FileMetaData *metadata; ptr = data; metadata = calloc (sizeof (FileMetaData), 1); metadata->extendedDictionary = [NSMutableDictionary new]; while (ptr < (char *) data + size) { optr = (ASFObject *) ptr; if (objectIsOfType (optr, ASF_Content_Description_Object)) parseContentDescription ((ContentDescriptionObject *) optr, metadata); else if (objectIsOfType (optr, ASF_Extended_Content_Description_Object)) parseExtendedContentDescription ((ExtendedContentDescriptionObject *) optr, metadata); ptr += optr->size; } return metadata; } static HeaderObject * readHeaderObject (FILE *asf) { HeaderObject *newObject; newObject = malloc (sizeof (HeaderObject)); fread (newObject->guid, 16, 1, asf); fread (&(newObject->size), 8, 1, asf); fread (&(newObject->number), 4, 1, asf); fread (&(newObject->res1), 1, 1, asf); fread (&(newObject->res2), 1, 1, asf); if (newObject->res1 != 0x01 || newObject->res2 != 0x02) { free (newObject); newObject = NULL; } return newObject; } static inline FileMetaData * readMetaData (FILE *asf) { HeaderObject *ho; void *data; FileMetaData *metadata; ho = readHeaderObject (asf); if (objectIsOfType ((ASFObject *) ho, ASF_Header_Object)) { data = malloc (ho->size - 30); fread (data, ho->size - 30, 1, asf); metadata = parseHeaderData (data, ho->size - 30); free (data); } else metadata = NULL; free (ho); return metadata; } @implementation ASFTags : NSObject + (NSString *) bundleDescription { return @"A bundle to read/set the tags of ASF files"; } + (NSArray *) bundleCopyrightStrings { return [NSArray arrayWithObjects: @"Copyright (C) 2005 Wolfgang Sourdeau", nil]; } + (NSString *) _readTitle: (FileMetaData *) metadata { NSString *title; title = [metadata->extendedDictionary objectForKey: @"Title"]; if (!title) title = [metadata->extendedDictionary objectForKey: @"WM/Title"]; if (!title) title = metadata->title; return title; } + (NSString *) _readArtist: (FileMetaData *) metadata { NSString *artist; artist = [metadata->extendedDictionary objectForKey: @"WM/AlbumArtist"]; if (!artist) artist = [metadata->extendedDictionary objectForKey: @"WM/Composer"]; if (!artist) artist = metadata->author; return artist; } + (NSString *) _readTrackNumber: (FileMetaData *) metadata { NSString *trackNumber, *track; trackNumber = [metadata->extendedDictionary objectForKey: @"WM/TrackNumber"]; if (!trackNumber) { track = [metadata->extendedDictionary objectForKey: @"WM/Track"]; if (track) trackNumber = [NSString stringWithFormat: @"%d", 1 + [track intValue]]; } return trackNumber; } + (BOOL) readTitle: (NSString **) title artist: (NSString **) artist album: (NSString **) album trackNumber: (NSString **) trackNumber genre: (NSString **) genre year: (NSString **) year ofFilename: (NSString *) filename { FILE *cFile; FileMetaData *metadata; BOOL result; result = NO; cFile = fopen ([filename cString], "r"); if (cFile) { metadata = readMetaData (cFile); if (metadata) { result = YES; SET (*title, [self _readTitle: metadata]); SET (*artist, [self _readArtist: metadata]); SET (*album, [metadata->extendedDictionary objectForKey: @"WM/AlbumTitle"]); SET (*trackNumber, [self _readTrackNumber: metadata]); SET (*genre, [metadata->extendedDictionary objectForKey: @"WM/Genre"]); SET (*year, [metadata->extendedDictionary objectForKey: @"WM/Year"]); [metadata->extendedDictionary release]; free (metadata); } fclose (cFile); } return result; } @end Cynthiune-1.0.0/Bundles/ASFTags/GNUmakefile000644 001751 000024 00000003140 11751032255 021034 0ustar00multixstaff000000 000000 # GNUmakefile - this file is part of Cynthiune # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # # # Bundle # PACKAGE_NAME=ASFTags BUNDLE_NAME=ASFTags BUNDLE_EXTENSION=.tags BUNDLE_INSTALL_DIR=$(GNUSTEP_BUNDLES)/Cynthiune ASFTags_PRINCIPAL_CLASS=ASFTags # # Additional libraries # ASFTags_LIBRARIES_DEPEND_UPON += # # Resource files # ASFTags_RESOURCE_FILES= # # Header files # ASFTags_HEADERS= \ ASFTags.h # # Class files # ASFTags_OBJC_FILES= \ ASFTags.m # # C files # ASFTags_C_FILES= # # C++ files # ASFTags_CC_FILES= ADDITIONAL_INCLUDE_DIRS += -I../../Frameworks FRAMEWORKS_DIRS = ../../Frameworks/Cynthiune FRAMEWORKS = Cynthiune include ../../frameworks.make include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Cynthiune-1.0.0/Bundles/ASFTags/GNUmakefile.preamble000644 001751 000024 00000002006 11751032255 022622 0ustar00multixstaff000000 000000 # GNUmakefile.preamble - this file is part of Cynthiune -*-makefile-*- # # Copyright (C) 2005 Wolfgang Sourdeau # # Author: Wolfgang Sourdeau # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. ifeq (mingw32, $(GNUSTEP_TARGET_OS)) BUNDLE_LIBS += -L../../Frameworks/Cynthiune/obj endif ADDITIONAL_INCLUDE_DIRS += -I../.. ADDITIONAL_OBJCFLAGS += -Wall Cynthiune-1.0.0/Armenian.lproj/InfoPlist.strings000644 001751 000024 00000001606 11733546702 022353 0ustar00multixstaff000000 000000 ÿþ/* Localized versions of Info.plist keys */ CFBundleName = "Cynthiune"; CFBundleShortVersionString = "Cynthiune v. 0.9.5"; CFBundleGetInfoString = "Cynthiune version 0.9.5, Copyright 2002-2006 Wolfgang Sourdeau.\nThis program is distributed under the GNU General Public License version 2."; NSHumanReadableCopyright = "Copyright (C) 2002-2006 Wolfgang Sourdeau. See COPYING for more information about your rights."; NSApplicationIcon = "Cynthiune"; Cynthiune-1.0.0/Armenian.lproj/Localizable.strings000644 001751 000024 00000016332 11733546702 022667 0ustar00multixstaff000000 000000 ÿþ/* Vardan Gevorgyan <VardanGevorgyan@yahoo.com> */ /* Application menu */ "Info" = "O~ualve€"; "Playlist" = "F~acax‚ao"; "Songs" = "5€ce€"; "Player" = "?aa€xr"; "Windows" = "Jax‚pavve€"; "Window" = "Jax‚pav"; "Tools" = "3x€nk„ve€"; "Services" = ">a|aux‚iux‚vve€"; "Hide" = "9a„vel"; "Hide Cynthiune" = "9a„vel Cynthiune-h"; "Hide Others" = "9a„vel tvaanh"; "Show All" = "Qx‚u al bxlx€h"; "Quit" = "4x‚€} cal"; "Quit Cynthiune" = "4x‚€} cal Cynthiune-k"; /* Info submenu */ "Info Panel..." = "O~ualve€k ~apavao..."; "About Cynthiune..." = "Cynthiune-k ta}kv"; "Preferences..." = "?aftaqe‚x‚t.."; "Send A Bug Report..." = "H‚ra€oel paw~e~x‚iux‚v ie€x‚iuav ta}kv..."; "Help..." = "Ucvx‚iux‚v..."; "Help" = "Ucvx‚iux‚v"; "Cynthiune Help" = "Cynthiune k …cvx‚iux‚vh"; /* Playlist submenu */ "Open..." = "2ael..."; "New" = "Fx€"; "Save..." = "Japzavel..."; "Save As..." = "Japzavel x€ze}..."; "Save To..." = "Japzavel aul er..."; "Revert To Saved" = "Ne€ada|val zapzav~anve€kv"; "Close" = "Saoel"; /* Songs submenu */ "Add Songs..." = "1~elavel..."; "Remove Selection" = "@e|avel hv€~anve€h"; "Remove All" = "@e|avel bxlx€h"; "Cleanup" = "Da„€el"; /* Player submenu */ "Play" = "F~acel"; "Pause" = "4aia€"; "Stop" = "?avcvevel"; "Previous" = "Famx€dh"; "Next" = "@a{x€dh"; "Mode" = "Ae‚h"; /* Player/Mode submenu */ "Repeat" = "?€ovel"; "Shuffle" = "=a|h"; /* Tools submenu */ "Song Inspector..." = "5€ck ~ualve€h..."; /* Windows submenu */ "Arrange In Front" = "Mofbk da}a~x€el h} pe€iaoavx‚iuatb"; "Miniaturize Window" = "Sx„€avel zax‚pavh"; "Minimize" = "Sx„€avel"; "Close Window" = "Saoel zax‚pavh"; /* Playlist status label */ "%d songs - total time: %@" = "%d e€c, x€k hvdpavx‚€ e‚xrx‚iux‚vh` %@"; " - selection: %@" = "  hv€~an` %@"; /* Playlist table */ "Song" = "5€c"; "Time" = "Oe‚xrx‚iux‚v"; /* Song Inspector */ "Song Inspector" = ""; "Song Information" = "Oereox‚iux‚vve€"; "Format Attributes" = "Vx€tak a€kbx‚ve€h"; "No song selected" = "Hy tk e€c hv€~an yg"; "Lookup through MusicBrainz..." = "Sv€~x‚t g MusicBrainz-k tk{xx~..."; "Title" = "Ne€vack€"; "Album" = ":xrx~anx‚"; "Track" = "5€c"; "Artist" = "?aa€xr"; "Genre" = "Hs"; "Year" = "Oa€k"; "Reset" = "@e be€el pkv ~ualve€h"; "Save" = "Japzavel"; "Generating TRM..." = "TRM-k ceve€aka..."; "Querying MusicBrainz server..." = "MusicBrainz }za}a€okykv x‚ra€o~x‚t g pa€x‚t..."; "The MusicBrainz server was too busy" = "MusicBrainz }za}a€okyh wa fbar~an g"; "Received %d result(s)" = "Ma~el g %d zaa}mav"; /* Dialog boxes */ "Add music files..." = "1~elavel e€ajwaoav †aul g€..."; "Add a music folder..." = "1~elavel e€ajwaoav n€a€..."; "Save playlist as..." = "Japzavel v~acax‚aoh x€ze}..."; /* Song names */ "[not found: %@]" = "[%@ h pauvabe€~an yg]"; "[unknown format: %@]" = "[%@  avpau †x€ta]"; "[format error: %@]" = "[%@  †x€tak }mal]"; /* Preference dialog */ "None" = "None"; "Preferences" = "?aftaqe‚x‚t"; "General" = "3lma~x€"; /* General preferences */ "Windows" = "Jax‚pavve€"; "Playlists" = "F~acax‚aove€"; "Use absolute filenames" = "Ucacx€nel †aule€k atbxr{aoav avx‚vve€h"; "Output module" = "5l„k txdx‚l"; "Textured" = "Oe„}a~x€~an"; "Sticky" = "?zyx‚v"; "Remember location" = "@kwel erh"; "Format" = "Vx€ta"; /* MB results panel */ "Please select the correct information..." = "=vd€x‚t ev„ vwel skw ereox‚iux‚v..."; "The request to the MusicBrainz server returned more than one result.\nPlease select the line in the following table that is the most accurate." = "MusicBrainz }za}a€okykv x‚rr~an pa€x‚th alk} g teok a~el zaa}mav:\n=vd€x‚t ev„ pe€„xpkwual arux‚}aok hv€el auv xrh, x€h a~elk swc€k g:"; "Cancel" = "Ierual";